TRẠM KHÍ TƯỢNG ARDUINO HIỂN THỊ TRÊN MÀN HÌNH NOKIA
Nguyên lý làm việc
Trong bài này, chúng ta làm một trạm khí tượng arduino sử dụng hai cảm biến: Cảm biến FC-28 để đo hơi ẩm đất và cảm biến DHT22 để đo nhiệt độ, độ ẩm và độ nóng. Tất cả các thông số đo sẽ được hiển thị trên màn hình LCD Nokia 5110.
Cảm biến đo độ ẩm FC- 28 có giá trị điện áp tương tự từ 0 đến 1023. Khi đất khô, giá trị cảm biến sẽ về gần 1023 và khi đất còn ướt, giá trị sẽ gần bằng 0 . Độ ẩm được đo bằng tỷ lệ phần trăm, vì vậy chúng ta cần chuyển đổi các giá trị này sang thang đo 0 đến 100. Tỷ lệ phần trăm này sau đó sẽ được hiển thị trên màn hình LCD Nokia 5110.
Cảm biến DHT22 có thể đo nhiệt độ, độ ẩm, và chỉ số nhiệt. Cảm biến DHT22 có ngõ ra ở dạng số và được nối trực tiếp thông qua các chân I / O của Arduino. Arduino sẽ đọc dữ liệu từ ngõ ra của cảm biến và tính toán nhiệt độ, độ ẩm và chỉ số nhiệt. Các giá trị này sẽ được hiển thị trên màn hình LCD Nokia 5110.
Sơ đồ mạch
Trước hết, nối LCD Nokia 5110 với Arduino.
Nối chân RST của LCD Nokia 5110 với chân 6 của Arduino qua điện trở 10k
Nối chân SCE của LCD Nokia 5110 với chân 7 của Arduino qua điện trở 1k
Nối chân D / C của LCD Nokia 5110 với chân 5 của Arduino qua điện trở 10k
Nối chân DIN của LCD Nokia 5110 với chân 4 của Arduino qua điện trở 10k
Nối chân CLK của LCD Nokia 5110 với chân 3 của Arduino qua điện trở 10k
Nối chân VCC của LCD Nokia 5110 với chân 3,3V của Arduino
Nối chân LED của LCD Nokia 5110 với chân giữa của chiết áp 1k qua điện trở 330Ω và nối hai đầu còn của chiết áp với VCC và GND.
Nối chân GND của LCD Nokia 5110 với chân GND của Arduino
Sau đó, nối của cảm biến DHT22 và FC-28 với Arduino.
Nối DHT22 với Arduino
Nối chân 1 (chân VCC) của cảm biến DHT22 với chân 5V của Arduino
Nối chân 2 (chân dữ liệu) của DHT22 với chân 8 của Arduino
Nối chân 4 (chân GND) của DHT22 với chân GND của Arduino
Nối FC-28 với Arduino
Nối chân VCC của FC-28 với chân 5V của Arduino
Nối chân A0 của FC-28 với A0 của Arduino
Nối chân GND của FC-28 với GND của Arduino
Chương trình
#include
PCD8544 lcd; //khởi tạo biến lcd
#include "DHT.h"
#define DHTPIN 8 //khai báo chân 8 cho cảm biến DHT22
#define DHTTYPE DHT22
DHT temp_hum_sensor(DHTPIN, DHTTYPE); //khởi tạo biến temp_hum_sensor
int sensor_pin = A0;
int output_value ;
void setup() {
lcd.begin(84, 48); // bắt đầu thiết lập lcd
lcd.print("Reading From the Sensors"); //hiển thị Reading From the Sensors
temp_hum_sensor.begin(); // bắt đầu giao tiếp với cảm biến DHT22
delay(2000);
}
void loop() {
lcd.clear();
output_value= analogRead(sensor_pin);//đọc giá trị từ cảm biến
output_value = map(output_value,550,40,0,100); // chuyển đổi giá trị 0-100 ứng với 550-40
float hum = temp_hum_sensor.readHumidity();// đọc giá trị từ DHT22
float temp = temp_hum_sensor.readTemperature();
float fah = temp_hum_sensor.readTemperature(true);
if (isnan(hum) || isnan(temp) || isnan(fah)) {
lcd.print("Failed to read from sensor!");
return;
}
float heat_index = temp_hum_sensor.computeHeatIndex(fah, hum);
float heat_indexC = temp_hum_sensor.convertFtoC(heat_index);
//Hiển thị độ ẩm lên LCD Nokia 5110
lcd.setCursor(0, 0);
lcd.print(" Moist: ");
lcd.print(output_value);
lcd.print(" % ");
//Hiển thị nhiệt độ ( độ C) lên LCD Nokia 5110
lcd.setCursor(0, 1);
lcd.print("Temp: ");
lcd.print(temp);
lcd.print(" *C ");
// Hiển thị nhiệt độ ( độ F) lên LCD Nokia 5110
lcd.setCursor(0, 2);
lcd.print("Temp: ");
lcd.print(fah);
lcd.print(" *F ");
//Hiển thị độ ẩm không khí lên LCD Nokia 5110
lcd.setCursor(0, 3);
lcd.print("Humi: ");
lcd.print(hum);
lcd.print(" % ");
//Hiển thị giá trị nhiệt (độ C) lên LCD Nokia 5110
lcd.setCursor(0, 4);
lcd.print("Hi: ");
lcd.print(heat_indexC);
lcd.print(" *C ");
//Hiển thị giá trị nhiệt (độ F) lên LCD Nokia 5110
lcd.setCursor(0,5);
lcd.print("Hi: ");
lcd.print(heat_index);
lcd.println(" *F ");
delay(2000);
}
Hotline: 0979 466 469