- Thành phần bắt buộc
- Sơ đồ mạch
- Cảm biến nhiệt độ và độ ẩm DHT11
- Lập trình NodeMCU ESP8266 Giám sát nhiệt độ và độ ẩm trực tiếp
Bộ vi điều khiển có bộ nhớ trong nhỏ không đủ để lưu dữ liệu do cảm biến tạo ra trong thời gian dài, bạn phải sử dụng một số thiết bị bộ nhớ ngoài hoặc có thể lưu dữ liệu trên một số đám mây bằng internet. Ngoài ra, đôi khi nó trở nên khó quản lý khi cảm biến được triển khai ở một số địa điểm có điều kiện khắc nghiệt mà con người không thể tiếp cận hoặc khó đến đó thường xuyên. Để khắc phục loại vấn đề này, chúng tôi luôn xem xét các cách mà chúng tôi muốn theo dõi dữ liệu cảm biến trong thời gian thực từ bất kỳ đâu mà không có bất kỳ sự hiện diện vật lý nào tại nơi đó.
Cơ sở dữ liệu thời gian thực có thể được sử dụng trong trường hợp này, nơi chúng ta chỉ cần giao diện một số bộ điều khiển có thể kết nối với internet và có thể trao đổi dữ liệu với máy chủ đám mây. Dữ liệu máy chủ có thể hữu ích trong việc theo dõi hành vi của hệ thống theo thời gian thực, phân tích cơ sở dữ liệu, phân tích và xử lý thống kê và giải thích cho các trường hợp sử dụng trong tương lai. Có rất nhiều Nền tảng Phần cứng IoT và Nền tảng Đám mây có sẵn để phục vụ mục đích này. Nếu bạn gặp khó khăn trong việc tìm kiếm Nền tảng phù hợp cho ứng dụng IoT của mình thì hãy làm theo liên kết.
Trước đây, chúng tôi đã đề cập đến ThingSpeak, Adafruit IO và nhiều phần mềm IoT khác. Hôm nay chúng ta sẽ xây dựng một dự án tương tự, trong đó chúng ta sẽ sử dụng cảm biến nhiệt độ và độ ẩm DHT11 và Mô-đun NodeMCU ESP8266 để ghi lại nhiệt độ và độ ẩm theo thời gian thực trên máy chủ cơ sở dữ liệu Firebase của Google.
Chúng tôi sẽ chia dự án thành hai phần. Đầu tiên, chúng ta sẽ bắt đầu với việc lắp ráp các thành phần phần cứng và tải lên phần sụn vào đó. Và thứ hai, chúng tôi sẽ sử dụng Firebase để thiết lập với NodeMCU để trao đổi dữ liệu thời gian thực. Nếu bạn chưa quen với ESP8266 hoặc Firebase, hãy làm theo hướng dẫn trước đây của chúng tôi về cách điều khiển đèn LED bằng Firebase.
Thành phần bắt buộc
- Mô-đun NodeMCU ESP8266
- Cảm biến nhiệt độ và độ ẩm DHT11
Sơ đồ mạch
Cảm biến nhiệt độ và độ ẩm DHT11
Mô-đun DHT11 có phức hợp độ ẩm và nhiệt độ với đầu ra tín hiệu kỹ thuật số đã được hiệu chuẩn có nghĩa là mô-đun cảm biến DHT11 là một mô-đun kết hợp để cảm nhận độ ẩm và nhiệt độ, cung cấp tín hiệu đầu ra kỹ thuật số đã hiệu chỉnh. DHT11 cung cấp cho chúng ta giá trị độ ẩm và nhiệt độ rất chính xác và đảm bảo độ tin cậy cao và ổn định lâu dài. Cảm biến này có thành phần đo độ ẩm kiểu điện trở và thành phần đo nhiệt độ kiểu NTC với bộ vi điều khiển 8-bit có sẵn có phản ứng nhanh và hiệu quả về chi phí và có sẵn trong gói hàng đơn 4 chân.
Trước đây chúng tôi đã sử dụng ESP12E để cập nhật các bài đọc DHT11 trên máy chủ web, ngoài ra bạn có thể kiểm tra tất cả các dự án dựa trên DHT11 mà chúng tôi đã sử dụng DHT11 để giao tiếp với nhiều bộ vi điều khiển khác như Arduino, PIC, Raspberry và trạm thời tiết được xây dựng bằng cách sử dụng chúng.
Lập trình NodeMCU ESP8266 Giám sát nhiệt độ và độ ẩm trực tiếp
Chương trình hoàn chỉnh với Video hoạt động được đưa ra ở cuối. Ở đây chúng tôi đang giải thích một số phần quan trọng của mã.
Trước hết hãy bao gồm các thư viện để sử dụng ESP8266 và firebase.
#include
Tải xuống và cài đặt các thư viện theo các liên kết dưới đây:
github.com/FirebaseExtended/firebase-arduino/blob/master/src/Firebase.h
github.com/bblanchon/ArduinoJson
Trong khi biên dịch , nếu bạn gặp lỗi thư viện ArduinoJson.h không được cài đặt thì hãy cài đặt nó bằng liên kết ở trên.
Chúng tôi sẽ lập trình NodeMCU để lấy các số đọc từ cảm biến DHT11 và đẩy nó lên Firebase sau mỗi 5 giây khoảng thời gian. Chúng tôi sẽ thiết lập một đường dẫn để đẩy dữ liệu. Ngay bây giờ hai thông số viz. độ ẩm và nhiệt độ được gửi trong cùng một đường dẫn mẹ và đường dẫn con khác nhau.
Hai tham số này rất quan trọng để giao tiếp với firebase. Đặt các tham số này sẽ cho phép trao đổi dữ liệu giữa ESP8266 và firebase. Để tìm các thông số này cho dự án của bạn, hãy làm theo hướng dẫn trước đây của chúng tôi về Thiết lập Firebase.
#define FIREBASE_HOST "your-project.firebaseio.com" // địa chỉ tên dự án từ id firebase #define FIREBASE_AUTH "Uejx9ROxxxxxxxxxxxxxxxxxxxxxxxxxxfQDDkhN" // khóa bí mật được tạo từ firebase
Sau khi tìm thành công thông tin đăng nhập, chỉ cần thay thế trong đoạn mã trên.
Nhập SSID và Mật khẩu Wi-Fi của bạn để kết nối với mạng của bạn.
#define WIFI_SSID "network_name" // nhập tên mạng gia đình hoặc wifi công cộng của bạn #define WIFI_PASSWORD "password" // mật khẩu của ssid wifi
Xác định chân dữ liệu DHT trong NodeMCU. Bạn có thể sử dụng bất kỳ chân GPIO kỹ thuật số nào trong NodeMCU.
#define DHTPIN D4
Thư viện DHT được tạo cho tất cả các biến thể DHT và đi kèm với tùy chọn mà cảm biến DHT bạn muốn sử dụng cho ví dụ như DHT11 hoặc DHT22. Chỉ cần chọn cảm biến DHT phù hợp và tiếp tục.
#define DHTTYPE DHT11 // chọn loại dht là DHT 11 hoặc DHT22 DHT dht (DHTPIN, DHTTYPE);
Kết nối với mạng Wi-Fi đã chọn và cũng kết nối với máy chủ cơ sở dữ liệu firebase.
WiFi.begin (WIFI_SSID, WIFI_PASSWORD); Firebase.begin (FIREBASE_HOST, FIREBASE_AUTH);
Bắt đầu đọc ở chân D4 của NodeMCU.
dht.begin ();
Lấy kết quả đo độ ẩm và nhiệt độ từ cảm biến DHT và lưu dưới dạng giá trị phao.
float h = dht.readHumidity (); // Đọc nhiệt độ hoặc độ ẩm mất khoảng 250 mili giây! float t = dht.readTempe Heat (); // Đọc nhiệt độ dưới dạng độ C (mặc định)
Chỉ cần kiểm tra xem cảm biến DHT có được nối dây đúng cách hay không hoặc nó không bị hỏng và bộ điều khiển có thể đọc các kết quả từ nó. Nếu kết quả không hiển thị thì có thể cảm biến đã bị hỏng, chỉ cần hiển thị thông báo lỗi và quay lại kiểm tra lại mà không cần tiếp tục.
if (isnan (h) - isnan (t)) {// Kiểm tra xem có lần đọc nào không và thoát sớm (để thử lại). Serial.println (F ("Không thể đọc từ cảm biến DHT!")); trở về; }
In dữ liệu cảm biến trong màn hình nối tiếp để gỡ lỗi và lưu các giá trị nhiệt độ và độ ẩm ở dạng chuỗi để gửi dữ liệu này đến cơ sở chữa cháy. Cũng lưu ý rằng độ trễ tối thiểu cần thiết giữa hai lần đọc từ cảm biến DHT11 là 2 giây, vì vậy hãy luôn sử dụng độ trễ lớn hơn 2 giây. Để biết thêm về DHT11, bạn có thể xem biểu dữ liệu chính thức.
Serial.print ("Độ ẩm:"); Serial.print (h); String fireHumid = String (h) + String ("%"); // chuyển đổi độ ẩm số nguyên thành độ ẩm chuỗi Serial.print ("% Nhiệt độ:"); Serial.print (t); Serial.println ("° C"); String fireTemp = String (t) + String ("° C"); chậm trễ (4000);
Cuối cùng, hãy gửi dữ liệu nhiệt độ và độ ẩm tới firebase tại đường dẫn “your-project.firebaseio.com/DHT11/Humidity/”.
Firebase.pushString ("/ DHT11 / Humidity", fireHumid); // thiết lập đường dẫn và gửi các bài đọc Firebase.pushString ("/ DHT11 / Temperature", fireTemp); // thiết lập đường dẫn và gửi bài đọc
Bạn có thể xem tất cả dữ liệu trong tài khoản firebase của mình. Chỉ cần đi tới phần “ Cơ sở dữ liệu ” trong “ Dự án của bạn ” tại “ Bảng điều khiển của tôi ” Trong Firebase.
Để thiết lập Firebase để gửi và giám sát dữ liệu, bạn có thể tham khảo hướng dẫn trước của chúng tôi.
Mã và video hoàn chỉnh cho việc theo dõi nhiệt độ và độ ẩm dựa trên IoT này được cung cấp bên dưới.