Isi kandungan:

Stesen Cuaca Menggunakan Arduino UNO: 7 Langkah
Stesen Cuaca Menggunakan Arduino UNO: 7 Langkah

Video: Stesen Cuaca Menggunakan Arduino UNO: 7 Langkah

Video: Stesen Cuaca Menggunakan Arduino UNO: 7 Langkah
Video: Monitoring Kondisi Cuaca Meliputi Kecepatan dan Arah Angin, Suhu, Arduino, WEB (Weather Monitoring) 2024, Julai
Anonim
Stesen Cuaca Menggunakan Arduino UNO
Stesen Cuaca Menggunakan Arduino UNO

Dibuat oleh: Hazel Yang

Projek ini adalah stesen cuaca yang menggunakan papan Arduino UNO untuk mengawal aliran data, sensor DHT22 untuk mengumpulkan data dan skrin OLED untuk menunjukkan data.

Langkah 1: Senarai Item

Senarai Item
Senarai Item

1. Skrin: OLED, Paparan 1.3 SH1106, warna putih I2C ---- PID: 18283

2. Sensor: Sensor Kelembapan dan Suhu Digital DHT22 ---- PID: 7375

3. Sambungan: Jumper Wires ---- PID: 10316 atau 10318 atau 10312 (bergantung pada panjangnya) atau anda boleh menggunakan wayar padat 22 AWG ---- PID: 22490

Papan Roti ---- PID: 10686 atau 10698 atau 103142 (bergantung pada saiz)

4. Kuasa: Kabel ini hanya dapat dihubungkan dengan port USB komputer dan kabel juga digunakan untuk pemindahan data antara IDE dan papan Arduino. Kabel USB, A HINGGA B, M / M, 0.5M (1.5FT) ---- PID: 29862

Atau anda boleh menggunakan ini untuk menghidupkan papan: 5V 2A AC / DC Adapter ---- PID: 10817.

Langkah 2: Pengenalan Relatif

Pengenalan Rel-t.webp
Pengenalan Rel-t.webp
Pengenalan Rel-t.webp
Pengenalan Rel-t.webp

Pengenalan Skrin: Paparan OLED 1.3 Putih

1. Anda boleh mendapatkan dokumen yang menunjukkan penyediaan dan keterangan asas:

Pengenalan Sensor: Kelembapan dan Sensor Suhu DHT22 1. Anda boleh mendapatkan dokumen yang menunjukkan keterangan:

Langkah 3: Sambungkan Litar

Sambungkan Litar
Sambungkan Litar

Sensor DHT22 menghantar data bersiri ke pin 2. Oleh itu, sambungkan pin kedua dari kiri, pin "SDA" harus disambungkan ke pin 2.

Untuk paparan SSH1106, ia menggunakan pin analog untuk menghantar. Litar layar akan menjadi pin "SCL" ke pin Arduino "A5" dan pin "SDA" ke "A4" Arduino. Sementara data posisi piksel mengirimkan terus, fungsi tampilan dalam program hanya memicu perintah sekali setiap kali membaca data dari sensor.

Sensor dan layar dapat menggunakan 3.3V untuk menghidupkan Arduino sebagai input kuasa DC. Untuk berkuasa, kita perlu menyambungkan kedua pin "VCC" ke "3.3V" Arduino. Dan pin "GND" hanya boleh disambungkan ke pin "GND" pada papan Arduino.

Gunakan kabel USB A ke B, sambungkan Arudino ke komputer.

Langkah 4: Bersedia untuk Menyusun

"u8glib" untuk skrin SSH1106 dari Olikraus.

"Perpustakaan sensor DHT" untuk sensor DHT22 dari Adafruit. Anda harus memuat turun dua perpustakaan: Perpustakaan sensor DHT22:

U8glib:

Dan gunakan "urus perpustakaan" di IDE untuk menjadikannya tidak zip. Arahan dalam talian untuk menguruskan perpustakaan:

Langkah 5: Uji Kod untuk Port Serial Sensor DHT22

Uji coe untuk port siri sensor DHT22 (yang terdapat di dalam perpustakaan DHT22 >> contoh):

(Anda boleh melangkau bahagian ini.)

Ia hanya untuk menguji sensor DHT22 membaca data secara normal

#sertakan

#sertakan

#sertakan

#sertakan

#sertakan

#tentukan DHTPIN 2

#tentukan DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

batal persediaan () {

Serial.begin (9600);

Serial.println (F ("ujian DHT22!"));

dht.begin ();

}

gelung kosong () {

// Tunggu beberapa saat antara pengukuran.

kelewatan (2000);

// Suhu atau kelembapan bacaan memerlukan masa sekitar 250 milisaat!

// Pembacaan sensor juga mungkin 'lama' hingga 2 saat (ia adalah sensor yang sangat perlahan)

apungan h = dht.readHumidity ();

// Baca suhu sebagai Celsius (lalai)

terapung t = dht.readTemperature ();

// Baca suhu sebagai Fahrenheit (isFahrenheit = true)

terapung f = dht.readTemperature (benar);

// Periksa sama ada bacaan gagal dan keluar lebih awal (untuk mencuba lagi).

jika (isnan (h) || isnan (t) || isnan (f)) {

Serial.println (F ("Gagal membaca dari sensor DHT!"));

kembali;

}

// Hitung indeks haba di Fahrenheit (lalai)

float hif = dht.computeHeatIndex (f, h);

// Hitung indeks haba dalam Celsius (isFahreheit = false)

float hic = dht.computeHeatIndex (t, h, false);

Serial.print (F ("Kelembapan:"));

Cetakan bersiri (h);

Serial.print (F ("% Temperature:"));

Cetakan bersiri (t);

Serial.print (F ("° C"));

Cetakan bersiri (f);

Serial.print (F ("° F Indeks haba:"));

Serial.print (hic);

Serial.print (F ("° C"));

Serial.print (hif);

Serial.println (F ("° F"));

}

// Setelah menyusun program, klik ALAT >> PEMANASAN SERI untuk memeriksa data.

// Tamat program ujian.

Langkah 6: Kod untuk Projek

#sertakan

#sertakan

#sertakan

#sertakan

#sertakan

#tentukan DHTPIN 2

#tentukan DHTTYPE DHT22

#sertakan "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

Sensor DHT (DHTPIN, DHTTYPE);

undian kosong (kekosongan) {

u8g.setFont (u8g_font_unifont);

apungan h = sensor.readHumidity ();

// Baca suhu sebagai Celsius (lalai)

apungan t = sensor.readTemperature ();

// Periksa sama ada bacaan gagal dan keluar lebih awal (untuk mencuba lagi).

jika (isnan (h) || isnan (t)) {

u8g.print ("Ralat.");

untuk (;;);

kembali;

}

u8g.setPrintPos (4, 10);

u8g.print ("Suhu (C):");

u8g.setPrintPos (4, 25);

u8g.print (t);

u8g.setPrintPos (4, 40);

u8g.print ("Kelembapan (%):");

u8g.setPrintPos (4, 55);

u8g.print (h);

}

persediaan kosong (kekosongan) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

gelung kosong (kekosongan) {

// gelung gambar

u8g.firstPage ();

buat {

lukis ();

} sementara (u8g.nextPage ());

// membina semula gambar setelah beberapa penundaan kelewatan (2000);

}

// Tamat program utama.

Langkah 7: Penerangan

Penerangan
Penerangan

Kemudian, mulakan litar pin untuk papan Arduino. Kerana perpustakaan sensor memerlukan data untuk menyatakan objek.

Dan anda boleh menguji data sensor dengan memantau data output melalui pin digital 2 dengan menggunakan fungsi yang disebut "Serial.print ()". Kerana frekuensi penghantaran data kira-kira 1 membaca setiap 2 saat (yaitu 0,5 Hz), ketika diprogramkan dalam Arduino IDE, kita perlu menetapkan kelewatan dalam fungsi gelung menjadi lebih dari 2 saat. Jadi terdapat "kelewatan (2000)" di dalam fungsi gelung. Ini memastikan data akan disegarkan dengan kerap. Dalam fungsi "draw", dapatkan data dari port data bersiri dan masukkan ke dalam data mengambang menggunakan fungsi "readHumidity" dan "readTemperature".

Cetak kelembapan dan suhu menggunakan fungsi cetakan dalam fail "u8glib". Anda boleh menyesuaikan kedudukan dengan menukar nombor dalam fungsi "setPrintPos". Fungsi cetak secara langsung dapat menunjukkan teks dan nombor.

Untuk menyiapkan perkakasan, berikan kelewatan 10 saat port bersiri. Kemudian panggil fungsi mula untuk sensor. Menurut litar saya, skrin saya terbalik. Oleh itu, saya juga menyertakan fungsi "setRot180" untuk memutar paparan.

Fungsi gelung papan Arduino adalah fungsi utama. Ia terus memanggil fungsi draw untuk menampilkan teks dan data setiap kali sensor disegarkan.

Skrin kelihatan seperti ini:

Anda boleh memutuskan sambungan Arduino UNO dari komputer anda dan menghidupkannya menggunakan penyesuai kuasa 5V DC yang menyambung ke soket kuasa 2.1mm. Ia menyimpan program di dalam pemacu dan dapat terus menjalankan program ini semula setelah dihidupkan.

Disyorkan: