Daftar Isi:

Stasiun Cuaca Menggunakan Arduino UNO: 7 Langkah
Stasiun Cuaca Menggunakan Arduino UNO: 7 Langkah

Video: Stasiun Cuaca Menggunakan Arduino UNO: 7 Langkah

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

Dibuat oleh: Hazel Yang

Proyek ini adalah stasiun cuaca menggunakan papan Arduino UNO untuk mengontrol aliran data, sensor DHT22 untuk mengumpulkan data dan layar OLED untuk menampilkan data.

Langkah 1: Daftar Item

Daftar Barang
Daftar Barang

1. Layar: OLED, 1.3 Tampilan SH1106, I2C warna putih ---- PID: 18283

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

3. Menghubungkan: Kabel Jumper ---- PID: 10316 atau 10318 atau 10312 (tergantung panjangnya) atau Anda dapat menggunakan kabel solid 22 AWG ---- PID: 22490

Papan tempat memotong roti ---- PID: 10686 atau 10698 atau 103142 (tergantung ukuran)

4. Power: Kabel ini hanya dapat dihubungkan dengan port USB komputer dan kabel ini juga digunakan untuk transfer data antara IDE dan board Arduino. KABEL USB, A TO B, M/M, 0.5M (1.5FT) ---- PID: 29862

Atau Anda dapat menggunakan ini untuk memberi daya pada papan: Adaptor AC/DC 5V 2A ---- PID: 10817.

Langkah 2: Pengantar Relatif

Pengantar Rel-t.webp
Pengantar Rel-t.webp
Pengantar Rel-t.webp
Pengantar Rel-t.webp

Pengenalan Layar: Layar OLED 1,3 Putih

1. Anda dapat menemukan dokumen yang menunjukkan pengaturan dan deskripsi dasar:

Pengenalan Sensor: Sensor Kelembaban dan Suhu DHT22 1. Anda dapat menemukan dokumen yang menunjukkan deskripsi:

Langkah 3: Hubungkan Sirkuit

Hubungkan Sirkuit
Hubungkan Sirkuit

Sensor DHT22 mengirimkan data serial ke pin 2. Jadi, sambungkan pin kedua dari kiri, pin "SDA" harus terhubung ke pin 2.

Untuk tampilan SSH1106, ia menggunakan pin analog untuk mengirim. Sirkuit layar akan menjadi pin "SCL" ke pin "A5" Arduino dan "SDA" ke pin "A4" Arduino. Sementara data posisi piksel ditransmisikan secara terus-menerus, fungsi tampilan dalam program hanya memicu perintah sekali setiap kali membaca data dari sensor.

Baik sensor dan layar dapat menggunakan 3.3V untuk menyalakan Arduino sebagai input daya DC. Untuk memberi daya, kita perlu menghubungkan kedua pin "VCC" ke "3.3V" Arduino. Dan pin "GND" dapat dengan mudah dihubungkan ke pin "GND" di papan Arduino.

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

Langkah 4: Bersiaplah untuk Mengkompilasi

"u8glib" untuk layar SSH1106 dari Olikraus.

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

U8glib:

Dan gunakan "kelola perpustakaan" di IDE untuk membuka ritsletingnya. Instruksi online untuk mengelola perpustakaan:

Langkah 5: Kode Uji untuk Port Serial Sensor DHT22

Uji coe untuk port serial sensor DHT22 (yang ada di dalam perpustakaan DHT22 >> contoh):

(Anda dapat melewati bagian ini.)

Itu hanya untuk menguji sensor DHT22 membaca data secara normal

#termasuk

#termasuk

#termasuk

#termasuk

#termasuk

#menentukan DHTPIN 2

#definisikan DHTTYPE DHT22

DHT dht(DHTPIN, DHTTYPE);

batalkan pengaturan() {

Serial.begin(9600);

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

dht.mulai();

}

lingkaran kosong() {

// Tunggu beberapa detik di antara pengukuran.

penundaan(2000);

// Membaca suhu atau kelembapan membutuhkan waktu sekitar 250 milidetik!

// Pembacaan sensor mungkin juga 'berumur' hingga 2 detik (ini adalah sensor yang sangat lambat)

float h = dht.readHumidity();

// Baca suhu sebagai Celcius (default)

float t = dht.readTemperature();

// Baca suhu sebagai Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature(true);

// Periksa apakah ada pembacaan yang gagal dan keluar lebih awal (untuk mencoba lagi).

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

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

kembali;

}

// Hitung indeks panas dalam Fahrenheit (default)

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

// Hitung indeks panas dalam Celcius (isFahreheit = false)

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

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

Serial.print(h);

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

Serial.print(t);

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

Serial.print(f);

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

Serial.print(hic);

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

Serial.print(hif);

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

}

// Setelah mengkompilasi program, klik TOOLS >> SERIAL MONITOR untuk mengecek data.

// Akhir dari program pengujian.

Langkah 6: Kode untuk Proyek

#termasuk

#termasuk

#termasuk

#termasuk

#termasuk

#menentukan DHTPIN 2

#definisikan DHTTYPE DHT22

#sertakan "U8glib.h"

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);

Sensor DHT (DHTPIN, DHTTYPE);

batal undian(batal) {

u8g.setFont(u8g_font_unifont);

float h = sensor.readHumidity();

// Baca suhu sebagai Celcius (default)

float t = sensor.readTemperature();

// Periksa apakah ada pembacaan yang gagal dan keluar lebih awal (untuk mencoba lagi).

if (isnan(h) || isnan(t)) {

u8g.print("Error.");

untuk(;;);

kembali;

}

u8g.setPrintPos(4, 10);

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

u8g.setPrintPos(4, 25);

u8g.print(t);

u8g.setPrintPos(4, 40);

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

u8g.setPrintPos(4, 55);

u8g.print(h);

}

pengaturan batal(batal) {

u8g.setRot180();

Serial.begin(9600);

sensor.mulai();

}

lingkaran batal (batal) {

// lingkaran gambar

u8g.halamanpertama();

melakukan {

seri();

} while(u8g.nextPage());

// membangun kembali gambar setelah beberapa penundaan delay(2000);

}

// Akhir dari program utama.

Langkah 7: Deskripsi

Keterangan
Keterangan

Kemudian, inisialisasi sirkuit pin untuk papan Arduino. Karena library sensor membutuhkan data untuk mendeklarasikan objek.

Dan Anda dapat menguji data sensor dengan memantau data keluaran melalui pin 2 digital dengan menggunakan fungsi yang disebut "Serial.print()". Karena frekuensi transmisi data kira-kira 1 pembacaan setiap 2 detik (yaitu 0,5 Hz), ketika diprogram di Arduino IDE, kita perlu mengatur penundaan di dalam fungsi loop menjadi lebih dari 2 detik. Jadi ada "delay(2000)" di dalam fungsi loop. Ini memastikan data akan sering di-refresh. Dalam fungsi "draw", dapatkan data dari port data serial dan masukkan ke dalam angka float menggunakan fungsi "readHumidity" dan "readTemperature".

Cetak kelembaban dan suhu menggunakan fungsi cetak di file "u8glib". Anda dapat menyesuaikan posisi dengan mengubah nomor di fungsi "setPrintPos". Fungsi cetak dapat langsung menampilkan teks dan angka.

Untuk mengatur perangkat keras, beri port serial penundaan 10 detik. Kemudian panggil fungsi start untuk sensor. Menurut sirkuit saya, layar saya terbalik. Jadi saya juga menyertakan fungsi "setRot180" untuk memutar tampilan.

Fungsi loop dari papan Arduino adalah fungsi utama. Itu terus memanggil fungsi undian untuk menampilkan teks dan data setiap kali sensor di-refresh.

Layar terlihat seperti ini:

Anda dapat melepaskan Arduino UNO dari komputer Anda dan menyalakannya menggunakan adaptor daya 5V DC yang terhubung ke colokan listrik 2.1mm. Ini menyimpan program di dalam drive-nya dan dapat terus menjalankan program lagi setelah diberi daya.

Direkomendasikan: