Mục lục:
- Quân nhu
- Bước 1: Đo nhiệt độ và độ ẩm
- Bước 2: Tạo và cấu hình dự án
- Bước 3: Cài đặt thư viện
- Bước 4: Kết nối cảm biến DHT11
- Bước 5: Gửi dữ liệu lên đám mây
- Bước 6: Chẩn đoán
- Bước 7: Khởi động và gỡ lỗi dự án
- Bước 8: Cấu hình bảng điều khiển
- Bước 9: Kết luận
Video: Kết nối cảm biến DHT11 / DHT22 với đám mây với bo mạch dựa trên ESP8266: 9 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Trong bài viết trước, tôi đã kết nối bo mạch NodeMCU dựa trên ESP8266 của mình với dịch vụ Cloud4RPi. Bây giờ, đã đến lúc cho một dự án thực sự!
Quân nhu
Yêu cầu phần cứng:
- Bất kỳ bo mạch nào dựa trên chip ESP8266 (ví dụ: NodeMCU)
- Cảm biến DHT11 hoặc DHT22
Phần mềm và dịch vụ:
- Thư viện cảm biến DHT của Adafruit - v1.3.7
- Cảm biến hợp nhất Adafruit - v1.0.3
- cloud4rpi-esp-arduino - v0.1.0
- Cloud4RPI - Bảng điều khiển đám mây cho các thiết bị IoT
- PlatformIO IDE cho VSCode
Bước 1: Đo nhiệt độ và độ ẩm
Tôi đã có một cảm biến DHT11, vì vậy tôi quyết định sử dụng nó để đo nhiệt độ và độ ẩm. Hãy chọn một thư viện Arduino để đọc dữ liệu cảm biến.
Sổ đăng ký Arduino chứa một số thư viện, từ đó tôi đã chọn thư viện phổ biến nhất.
Theo kho lưu trữ GitHub của họ, chúng tôi cũng được yêu cầu thêm gói Cảm biến hợp nhất Adafruit.
Bước 2: Tạo và cấu hình dự án
Tôi đã mô tả cách tạo một dự án PlatformIO và cài đặt các thư viện trong phần đầu tiên. Dự án của tôi có tên là “MyNodeMCU”. Cấu trúc được hiển thị ở trên.
Dự án này là một ví dụ Cloud4RPi được sửa đổi một chút. Tôi quyết định lưu trữ mã thông báo thiết bị và thông tin đăng nhập Wi-Fi trong tệp cấu hình thay vì mã.
Tệp platform.io trông như sau:
[platformio] default_envs = subsemcuv2 [env: gật gùv2] platform = espressif8266 framework = arduino board = gật đầu
Bước 3: Cài đặt thư viện
Việc cài đặt thư viện khá đơn giản. Bạn có thể làm điều đó từ giao diện đồ họa của IDE hoặc bằng cách thêm các tên thư viện bắt buộc vào phần lib_deps của tệp platform.io:
; … Lib_deps = cloud4rpi-esp-arduino Adafruit Unified Sensor Thư viện cảm biến DHT build_flags = -D MQTT_MAX_PACKET_SIZE = 1024 -D MQTT_MAX_TRANSFER_SIZE = 128 -D CLOUD4RPI_DEBUG = 0 -D SSID_IFI_SIFI_SIFI_P_NH_S_WIFI_SỬA_SIFI_SIFI_SIFI_SIFI D CLOUD4RPI_TOKEN = / "_ YOUR_DEVICE_TOKEN _ \"
Các thư viện đã thêm sẽ được tự động cài đặt vào thư mục con của dự án.
Tiêu đề main.cpp trông như sau:
#include #include #include #include "DHT.h"
Bước 4: Kết nối cảm biến DHT11
Adafruit cung cấp một ví dụ DHTtester.ino về kết nối cảm biến.
Mã này khởi tạo cảm biến và xác định cấu trúc để lưu trữ kết quả đo (trong trường hợp kết quả đo thành công):
#define DHTPIN 2 // Chân kỹ thuật số kết nối với cảm biến DHT # xác định DHTTYPE DHT11 // DHT 11 //… DHT dht (DHTPIN, DHTTYPE); dht.begin (); //… struct DHT_Result {float h; phao t; }; DHT_Result dhtResult;
Chức năng tiếp theo cho biết cách đọc dữ liệu cảm biến và lưu trữ nó trong cấu trúc dữ liệu được mô tả ở trên
void readSensors () {float h = dht.readHumidity (); // Đọc nhiệt độ dưới dạng độ C (mặc định) float t = dht.readTempe Heat ();
// Kiểm tra xem có lần đọc nào không và thoát ra không
if (isnan (h) || isnan (t)) {Serial.println (F ("Không đọc được từ cảm biến DHT!")); trở lại; } dhtResult.h = h; dhtResult.t = t; }
Bước 5: Gửi dữ liệu lên đám mây
Khi chúng tôi có dữ liệu đó, bước tiếp theo là gửi dữ liệu đó đến dịch vụ Cloud4RPi.
Trang Cloud4RPi dành cho Arduino mô tả API thư viện, là một tập hợp các phương pháp được sử dụng để:
- tạo, đọc và cập nhật các biến,
- gửi các giá trị thay đổi vào đám mây bằng giao thức MQTT.
Thư viện hỗ trợ ba kiểu biến: Bool, Numeric và String.
Quy trình làm việc của thư viện bắt đầu bằng việc tạo một phiên bản API bằng cách sử dụng Mã thông báo thiết bị từ trang web cloud4rpi.io (tham khảo phần 1 của bài viết để biết chi tiết).
#if được xác định (CLOUD4RPI_TOKEN) Cloud4RPi c4r (CLOUD4RPI_TOKEN); #else Cloud4RPi c4r ("!!! _ KHÔNG_DEVICE_TOKEN _ !!!"); #endif
Sau đó, khai báo các biến cho các bài đọc DHT11:
c4r.declareNumericVariable ("DHT11_Temp"); c4r.declareNumericVariable ("DHT11_Hum");
Sau đó, lấy dữ liệu từ cảm biến, lưu chúng thành các biến và xuất bản dữ liệu lên Cloud4RPi:
c4r.setVariable ("DHT11_Temp", dhtResult.t); c4r.setVariable ("DHT11_Hum", dhtResult.h); c4r.publishData ();
Nhiệt độ và độ ẩm không thay đổi nhanh chóng, vì vậy không cần gửi nhiều hơn một giá trị mỗi 5 phút.
Bước 6: Chẩn đoán
Cloud4RPi hỗ trợ dữ liệu chẩn đoán cùng với các giá trị biến đổi. Tôi đã sử dụng thời gian hoạt động, cường độ tín hiệu Wi-Fi và địa chỉ IP làm dữ liệu chẩn đoán:
c4r.declareDiagVariable ("IP_Address"); c4r.declareDiagVariable ("RSSI"); // Cường độ tín hiệu WiFi c4r.declareDiagVariable ("Thời gian hoạt động");
Lưu ý: Hàm mili mà tôi sử dụng để đặt lại thời gian hoạt động về 0 sau mỗi ~ 50 ngày. Đó là quá đủ cho dự án của tôi.
Đoạn mã sau đặt các giá trị biến chẩn đoán:
c4r.setDiagVariable ("RSSI", (Chuỗi) WiFi. RSSI () + "dBm"); c4r.setDiagVariable ("IP_Address", WiFi.localIP (). toString ()); c4r.setDiagVariable ("Thời gian hoạt động", thời gian hoạt độngHumanReadable (currentMillis)); c4r.publishDiag ();
Hàm uptimeHumanReadable chuyển đổi mili giây thành dạng thuận tiện:
String uptimeHumanReadable (mili giây dài không dấu) {static char uptimeStr [32]; không dấu dài giây = mili giây / 1000; không dấu dài phút = giây / 60; unsigned int hours = phút / 60; unsigned int days = giờ / 24; giây - = phút * 60; phút - = giờ * 60; giờ - = ngày * 24; sprintf (uptimeStr, "% d ngày% 2.2d:% 2.2d:% 2.2d", (byte) ngày, (byte) giờ, (byte) phút, (byte) giây); return String (uptimeStr); }
Hàm xuất ra một chuỗi như thế này 5 ngày 10:23:14 thay vì một số lớn kỳ lạ.
Bước 7: Khởi động và gỡ lỗi dự án
Sau khi biên dịch mã đã tạo và cài đặt nó vào NodeMCU, thiết bị sẽ kết nối với dịch vụ đám mây và bắt đầu gửi dữ liệu.
Bạn có thể tăng chi tiết ghi nhật ký bằng cách đặt biến tiền xử lý CLOUD4RPI_DEBUG thành 1 (thêm -D CLOUD4RPI_DEBUG = 1 vào phần build_flags trong tệp platform.io).
Tiếp theo, mở trang cloud4rpi.io và thông báo thiết bị mới trực tuyến. Mở nó để xem tất cả các giá trị biến nhận được từ thiết bị: cảm biến và chẩn đoán.
Bước 8: Cấu hình bảng điều khiển
Tại bước này, kết nối dữ liệu với đám mây đã hoạt động. Bây giờ, hãy định cấu hình phần trình bày trực quan của dữ liệu.
Tôi đã sử dụng giao diện người dùng cấu hình Trang tổng quan để tạo trang tổng quan sau.
Trang tổng quan có thể chia sẻ được, vì vậy tôi ngay lập tức chia sẻ nó với bạn bè của mình.
Bước 9: Kết luận
Mã đầy đủ của dự án có sẵn trong ý chính.
Đó là tất cả cho bây giờ!
Các câu hỏi và đề xuất được chào đón trong các bình luận.
Đề xuất:
Kết nối nhà máy của bạn với đám mây: 10 bước
Kết nối cây trồng của bạn với đám mây: Trong văn phòng của chúng tôi có một cây xương rồng không nhận được sự chú ý đáng có. Vì tôi làm việc tại một công ty CNTT và muốn thử nghiệm với LoRa, các giải pháp không cần máy chủ và AWS, tôi đã đặt tên cho cây xương rồng của chúng tôi là Regive và kết nối anh ấy với đám mây. Bây giờ bạn có thể moni
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 - Theo dõi nhiệt độ độ ẩm & chỉ số nhiệt trên M5stick-C với DHT11: 6 bước
Theo dõi thời tiết M5Stack M5stick C dựa trên ESP32 với DHT11 | Theo dõi nhiệt độ độ ẩm và chỉ số nhiệt trên M5stick-C Với DHT11: Xin chào các bạn, trong phần hướng dẫn này, chúng ta sẽ học cách giao tiếp cảm biến nhiệt độ DHT11 với m5stick-C (một bảng phát triển của m5stack) và hiển thị nó trên màn hình của m5stick-C. Vì vậy, trong hướng dẫn này, chúng ta sẽ đọc nhiệt độ, độ ẩm & nhiệt tôi
Ba mạch cảm biến cảm ứng + Mạch hẹn giờ cảm ứng: 4 bước
Ba mạch cảm biến cảm ứng + Mạch hẹn giờ cảm ứng: Cảm biến cảm ứng là một mạch BẬT khi phát hiện cảm ứng trên các Chân cảm ứng. Nó hoạt động trên cơ sở tạm thời, tức là tải sẽ chỉ BẬT khi chạm vào chân cắm. Ở đây, tôi sẽ chỉ cho bạn ba cách khác nhau để tạo cảm ứng sen
Cách kết nối Cảm biến độ ẩm của đất và ESP8266 với Đám mây IoT của AskSensors: 10 bước
Cách kết nối Cảm biến độ ẩm của đất và ESP8266 với Đám mây IoT của AskSensors: Tài liệu hướng dẫn này chỉ cho bạn cách kết nối cảm biến độ ẩm của đất và ESP8266 với đám mây IoT. đo hàm lượng thể tích của nước bên trong
Một cảm biến màu biết nói, dựa trên Bộ giọng nói AIY: 4 bước
Một bộ cảm biến màu biết nói, dựa trên Bộ giọng nói AIY: Gần đây, tôi đã tìm hiểu một chút về chữ nổi, tôi đã tự hỏi liệu mình có thể chế tạo thứ gì đó bằng bộ giọng nói AIY cho Raspberry Pi hay không, điều này có thể mang lại lợi ích thực tế cho người khiếm thị . Vì vậy, được mô tả trong phần sau, bạn sẽ tìm thấy một nguyên mẫu