Pemantau Suhu dan Kelembaban Portabel Berbasis Arduino dengan LCD 16x2
Komponen dan Perlengkapan
Arduino UNO
1
Sensor Suhu & Kelembaban DHT11 (4 pin)
1
LCD Adafruit dengan Lampu Belakang RGB - 16x2
1
Resistor 10k ohm
1
Power Bank
1
Tombol Tekan SparkFun 12mm
1
Kabel USB-A ke B
1
Kabel Jumper (Umum)
1
Papan Rangkas (Breadboard)
1
Tentang Proyek Ini
Saya akan menunjukkan kepada Anda bagaimana saya membuat sensor suhu dan kelembaban dengan Arduino Uno. Tujuan akhirnya saya adalah membuat satu dengan Attiny84 dan mencoret PCB untuknya. Saya memang memiliki bagian dan komponen untuk melakukan ini, tetapi cuaca di luar tidak bekerja sama. Sulit untuk mencoret papan di garasi saya pada suhu di bawah 10 derajat Fahrenheit. Itu akan menjadi instruksional yang berbeda untuk tanggal lain.
Terima kasih sekali lagi telah meluangkan waktu untuk membaca proyek saya.
Untuk memulai, berikut yang diperlukan untuk proyek ini:
Semua bagian dapat dibeli di SparkFun atau Adafruit. Atau Anda dapat melakukan seperti yang saya lakukan dan menyelamatkan sebanyak yang dapat Anda miliki dari perangkat lama.
Arduino (Saya menggunakan UNO R3, tetapi 5V mana pun akan bekerja)
Papan Rangkas
Sensor suhu dan kelembaban DHT11
Potensiometer 10k ohm
Layar LCD 16x2
Tombol taktis
Kabel USB A-B
Power Bank
Kabel Jumper
Sekarang saatnya untuk memasang semua kabel ke perangkat. Silakan rujuk ke skematis Fritzing (tolong catat bahwa saya tidak memiliki kabel jumper antara dua rel daya pada papan rangkas. Anda akan membutuhkannya jika Anda menggunakan keduanya):
Tampilan LCD yang saya gunakan dipulihkan dari panel annunciator alarm kebakaran lama. Pin 15 & 16 terletak sebelum Pin 1 dan alih-alih Pin 16 menjadi Gnd, itu sebenarnya 5v dan Pin 15 adalah Gnd. Silakan periksa kembali tampilan Anda sendiri dan pastikan pin Anda benar. Karena pinout tampilan saya kemungkinan besar berbeda dari hampir semua orang, saya telah membuat skematis Fritzing dengan tampilan "standar" alih-alih pinout yang tepat saya.
Uno
Gnd --> rel negatif pada papan rangkas
5v --> rel positif pada papan rangkas
DHT11
Pin1 --> 5v dan resistor 10k ohm
Pin2 --> Pin Arduino 8 dan resistor 10k ohm
Pin3 --> tidak ada koneksi
Pin4 --> Gnd
Layar LCD 16x2
Pin1 --> Gnd
Pin2 --> 5v
Pin3 --> pin pengayun potensiometer 10k ohm (pin tengah. dua pin lainnya pada POT pergi ke 5v dan Gnd)
Pin4 --> Pin Arduino 12
Pin5 --> Gnd
Pin6 --> Pin Arduino 11
Pin7 --> tidak ada koneksi
Pin8 --> tidak ada koneksi
Pin9 --> tidak ada koneksi
Pin10 --> tidak ada koneksi
Pin11 --> Pin Arduino 5
Pin12 --> Pin Arduino 4
Pin13 --> Pin Arduino 3
Pin14 --> Pin Arduino 2
Pin15 --> 5v
Pin16 --> Tombol taktis (sisi lain tombol tack pergi ke Gnd)
KODE
Lampirkan adalah kode:
Saya menggunakan library DHT dari Adafruit.
https://github.com/adafruit/DHT-sensor-library
SELESAI!
Setelah semua kabeling, colokkan power bank Anda ke Arduino.
Tampilan LCD dan DHT11 Anda harus mulai berfungsi. Tekan tombol taktis dan lampu belakang LCD Anda harus menyala.
Sekarang Anda memiliki sensor suhu dan kelembaban portabel dengan tampilan real time.
Ini telah membantu saya menentukan jendela yang paling berdraft di rumah saya dan cara terbaik untuk mengatur ventilasi rumah saya.
Terima kasih sekali lagi telah meluangkan waktu untuk membaca proyek pertama saya.
Kode
Kode
KodeArduino
Ini adalah kode Arduino untuk proyek ini.
// include the library code: #include <LiquidCrystal.h> #include "DHT.h" // set the DHT Pin #define DHTPIN 8 // initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2); #define DHTTYPE DHT11 DHT dht(DHTPIN, DHTTYPE); void setup() { // set up the LCD's number of columns and rows: lcd.begin(16, 2); dht.begin(); // Print a message to the LCD. lcd.print("Temp: Humidity:"); } void loop() { delay(500); // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): lcd.setCursor(0, 1); // read humidity float h = dht.readHumidity(); //read temperature in Fahrenheit float f = dht.readTemperature(true); if (isnan(h) || isnan(f)) { lcd.print("ERROR"); return; } lcd.print(f); lcd.setCursor(7,1); lcd.print(h); }