Mục lục:
- Bước 1: Danh sách mặt hàng
- Bước 2: Giới thiệu tương đối
- Bước 3: Kết nối mạch
- Bước 4: Chuẩn bị biên dịch
- Bước 5: Mã kiểm tra cho cổng nối tiếp của cảm biến DHT22
- Bước 6: Mã cho dự án
- Bước 7: Mô tả
Video: Trạm thời tiết sử dụng Arduino UNO: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Tạo bởi: Hazel Yang
Dự án này là một trạm thời tiết sử dụng bảng Arduino UNO để điều khiển luồng dữ liệu, cảm biến DHT22 để thu thập dữ liệu và màn hình OLED để hiển thị dữ liệu.
Bước 1: Danh sách mặt hàng
1. Màn hình: OLED, 1.3 Hiển thị SH1106, I2C màu trắng ---- PID: 18283
2. Cảm biến: Cảm biến nhiệt độ và độ ẩm kỹ thuật số DHT22 ---- PID: 7375
3. Kết nối: Jumper Wires ---- PID: 10316 hoặc 10318 hoặc 10312 (tùy thuộc vào độ dài) hoặc bạn có thể sử dụng dây rắn 22 AWG ---- PID: 22490
Breadboard ---- PID: 10686 hoặc 10698 hoặc 103142 (tùy thuộc vào kích thước)
4. Nguồn: Cáp này chỉ có thể kết nối với cổng USB máy tính và cáp cũng được sử dụng để truyền dữ liệu giữa IDE và bảng Arduino. CÁP USB, A TO B, M / M, 0,5M (1,5FT) ---- PID: 29862
Hoặc bạn có thể sử dụng cái này để cấp nguồn cho bo mạch: Bộ chuyển đổi AC / DC 5V 2A ---- PID: 10817.
Bước 2: Giới thiệu tương đối
Giới thiệu màn hình: Màn hình OLED 1,3 Màu trắng
1. Bạn có thể tìm thấy tài liệu hiển thị thiết lập và mô tả cơ bản:
Giới thiệu về Cảm biến: Cảm biến Độ ẩm và Nhiệt độ DHT22 1. Bạn có thể tìm thấy tài liệu hiển thị các mô tả:
Bước 3: Kết nối mạch
Cảm biến DHT22 gửi dữ liệu nối tiếp đến chân 2. Vì vậy, hãy kết nối chân thứ hai từ bên trái, chân "SDA" phải được kết nối với chân 2.
Đối với màn hình SSH1106, nó sử dụng chân analog để truyền. Mạch của màn hình sẽ là chân "SCL" tới chân "A5" của Arduino và "SDA" tới "A4" của Arduino. Trong khi dữ liệu vị trí pixel đang truyền liên tục, chức năng hiển thị trong chương trình chỉ kích hoạt lệnh một lần mỗi khi nó đọc dữ liệu từ cảm biến.
Cả cảm biến và màn hình đều có thể sử dụng 3.3V để cấp nguồn cho Arduino làm đầu vào nguồn DC. Để cấp nguồn, chúng ta cần kết nối cả hai chân "VCC" với "3.3V" của Arduino. Và các chân "GND" có thể được kết nối đơn giản với chân "GND" trên bảng Arduino.
Sử dụng cáp USB A đến B, kết nối Arudino với máy tính.
Bước 4: Chuẩn bị biên dịch
"u8glib" cho màn hình SSH1106 từ Olikraus.
"Thư viện cảm biến DHT" cho cảm biến DHT22 từ Adafruit. Bạn nên tải xuống hai thư viện: Thư viện cảm biến DHT22:
U8glib:
Và sử dụng "quản lý thư viện" trong IDE để giải nén chúng. Hướng dẫn quản lý thư viện trực tuyến:
Bước 5: Mã kiểm tra cho cổng nối tiếp của cảm biến DHT22
Hệ số kiểm tra cho cổng nối tiếp cảm biến DHT22 (nằm trong thư viện DHT22 >> ví dụ):
(Bạn có thể bỏ qua phần này.)
Nó chỉ để kiểm tra cảm biến DHT22 đọc dữ liệu bình thường
#bao gồm
#bao gồm
#bao gồm
#bao gồm
#bao gồm
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht (DHTPIN, DHTTYPE);
void setup () {
Serial.begin (9600);
Serial.println (F ("DHT22 thi!"));
dht.begin ();
}
void loop () {
// Chờ một vài giây giữa các lần đo.
chậm trễ (2000);
// Đọc nhiệt độ hoặc độ ẩm mất khoảng 250 mili giây!
// Kết quả đọc của cảm biến cũng có thể 'cũ' lên đến 2 giây (cảm biến rất chậm)
float h = dht.readHumidity ();
// Đọc nhiệt độ dưới dạng độ C (mặc định)
float t = dht.readTempe Heat ();
// Đọc nhiệt độ là Fahrenheit (isFahrenheit = true)
float f = dht.readTempe Heat (true);
// Kiểm tra xem có lần đọc nào không và thoát ra sớm (để thử lại).
if (isnan (h) || isnan (t) || isnan (f)) {
Serial.println (F ("Không thể đọc từ cảm biến DHT!"));
trở lại;
}
// Tính toán chỉ số nhiệt bằng Fahrenheit (mặc định)
float hif = dht.computeHeatIndex (f, h);
// Tính toán chỉ số nhiệt theo độ C (isFahbroken = false)
float hic = dht.computeHeatIndex (t, h, false);
Serial.print (F ("Độ ẩm:"));
Serial.print (h);
Serial.print (F ("% Nhiệt độ:"));
Serial.print (t);
Serial.print (F ("° C"));
Serial.print (f);
Serial.print (F ("° F Chỉ số nhiệt:"));
Serial.print (hic);
Serial.print (F ("° C"));
Serial.print (hif);
Serial.println (F ("° F"));
}
// Sau khi biên dịch xong chương trình, bấm TOOLS >> SERIAL MONITOR để kiểm tra dữ liệu.
// Kết thúc chương trình thử nghiệm.
Bước 6: Mã cho dự án
#bao gồm
#bao gồm
#bao gồm
#bao gồm
#bao gồm
#define DHTPIN 2
#define DHTTYPE DHT22
#include "U8glib.h"
U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);
Cảm biến DHT (DHTPIN, DHTTYPE);
void draw (void) {
u8g.setFont (u8g_font_unifont);
float h = sensor.readHumidity ();
// Đọc nhiệt độ dưới dạng độ C (mặc định)
float t = sensor.readTempe Heat ();
// Kiểm tra xem có lần đọc nào không và thoát ra sớm (để thử lại).
if (isnan (h) || isnan (t)) {
u8g.print ("Lỗi.");
vì(;;);
trở lại;
}
u8g.setPrintPos (4, 10);
u8g.print ("Nhiệt độ (C):");
u8g.setPrintPos (4, 25);
u8g.print (t);
u8g.setPrintPos (4, 40);
u8g.print ("Độ ẩm (%):");
u8g.setPrintPos (4, 55);
u8g.print (h);
}
thiết lập void (void) {
u8g.setRot180 ();
Serial.begin (9600);
sensor.begin ();
}
vòng lặp void (void) {
// vòng lặp hình ảnh
u8g.firstPage ();
làm {
vẽ();
} while (u8g.nextPage ());
// xây dựng lại hình ảnh sau một số thời gian trì hoãn (2000);
}
// Kết thúc chương trình chính.
Bước 7: Mô tả
Sau đó, khởi tạo mạch pin cho bảng Arduino. Vì thư viện cảm biến yêu cầu dữ liệu để khai báo đối tượng.
Và bạn có thể kiểm tra dữ liệu của cảm biến bằng cách giám sát dữ liệu đầu ra thông qua chân số 2 bằng cách sử dụng chức năng có tên "Serial.print ()". Bởi vì tần số truyền dữ liệu là khoảng 1 lần đọc mỗi 2 giây (là 0,5 Hz), khi được lập trình trong Arduino IDE, chúng ta cần đặt độ trễ bên trong hàm vòng lặp là hơn 2 giây. Vì vậy, có một "delay (2000)" bên trong hàm vòng lặp. Điều này đảm bảo dữ liệu sẽ được làm mới thường xuyên. Trong hàm "draw", lấy dữ liệu từ cổng dữ liệu nối tiếp và đưa chúng vào thành số thực bằng cách sử dụng các hàm "readHumidity" và "readTempe Heat".
In ra độ ẩm và nhiệt độ bằng chức năng in trong tệp "u8glib". Bạn có thể điều chỉnh vị trí bằng cách thay đổi số trong chức năng "setPrintPos". Chức năng in có thể hiển thị trực tiếp văn bản và số.
Để thiết lập phần cứng, hãy đặt cổng nối tiếp trễ 10 giây. Sau đó gọi hàm bắt đầu cho cảm biến. Theo mạch của tôi, màn hình của tôi bị lộn ngược. Vì vậy, tôi cũng bao gồm một chức năng "setRot180" để xoay màn hình.
Chức năng vòng lặp của bảng Arduino là chức năng chính. Nó tiếp tục gọi chức năng vẽ để hiển thị văn bản và dữ liệu mỗi khi cảm biến được làm mới.
Màn hình trông như thế này:
Bạn có thể ngắt kết nối Arduino UNO khỏi máy tính và cấp nguồn cho nó bằng bộ chuyển đổi nguồn 5V DC kết nối với giắc cắm 2,1mm của nó. Nó lưu trữ chương trình bên trong ổ đĩa của nó và có thể liên tục chạy lại chương trình sau khi được cấp nguồn.
Đề xuất:
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã thực hiện đúng cách: 8 bước (có hình ảnh)
Trạm thời tiết NaTaLia: Trạm thời tiết sử dụng năng lượng mặt trời Arduino Đã hoàn thành đúng cách: Sau 1 năm hoạt động thành công trên 2 địa điểm khác nhau, tôi đang chia sẻ kế hoạch dự án trạm thời tiết sử dụng năng lượng mặt trời của mình và giải thích cách nó phát triển thành một hệ thống thực sự có thể tồn tại trong thời gian dài thời kỳ từ năng lượng mặt trời. Nếu bạn theo dõi
Trạm thời tiết DIY & Trạm cảm biến WiFi: 7 bước (có hình ảnh)
DIY Weather Station & WiFi Sensor Station: Trong dự án này, tôi sẽ hướng dẫn bạn cách tạo một trạm thời tiết cùng với một trạm cảm biến WiFi. Trạm cảm biến đo dữ liệu nhiệt độ và độ ẩm cục bộ và gửi dữ liệu đó qua WiFi đến trạm thời tiết. Sau đó, trạm thời tiết hiển thị t
Trạm thời tiết IoT sử dụng ứng dụng Blynk: 5 bước
Trạm thời tiết IoT sử dụng ứng dụng Blynk: Dự án này liên quan đến các bước ban đầu trong thế giới IoT, ở đây chúng tôi sẽ giao diện cảm biến DHT11 / DHT22 với NodeMCU hoặc bảng dựa trên ESP8266 khác và nhận dữ liệu trên internet, chúng tôi sẽ sử dụng ứng dụng Blynk, sử dụng hướng dẫn sau liên kết nếu bạn là
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: 8 bước
Nến thời tiết - Xem nhanh thời tiết và nhiệt độ: Sử dụng ngọn nến kỳ diệu này, bạn có thể cho biết nhiệt độ hiện tại và điều kiện bên ngoài ngay lập tức
Acurite 5 trong 1 Trạm thời tiết sử dụng Raspberry Pi và Weewx (các trạm thời tiết khác tương thích): 5 bước (có Hình ảnh)
Trạm thời tiết Acurite 5 trong 1 Sử dụng Raspberry Pi và Weewx (các Trạm thời tiết khác Tương thích): Khi tôi mua trạm thời tiết Acurite 5 trong 1, tôi muốn có thể kiểm tra thời tiết tại nhà của mình khi tôi đi vắng. Khi tôi về nhà và thiết lập nó, tôi nhận ra rằng tôi phải có màn hình kết nối với máy tính hoặc mua trung tâm thông minh của họ,