Mục lục:

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
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

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

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
Video: ĐỌC NHIỆT ĐỘ - ĐỘ ẨM DÙNG ESP8266 LÊN THINGSPEAK || MEASURE TEMPERATER ESP8266 THINGSPEAK SERVER 2024, Tháng sáu
Anonim
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
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

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

Đo nhiệt độ và độ ẩm
Đ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ạo và cấu hình dự án
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

Cài đặt thư viện
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

Bắt đầu và gỡ lỗi dự án
Bắt đầu 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

Cấu hình bảng điều khiển
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

Phần kết luận
Phần 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: