Độ ẩm và Nhiệt độ là các thông số rất phổ biến để đo ở nhiều nơi như nông trại, nhà xanh, y tế, công nghiệp gia đình và văn phòng. Chúng tôi đã đề cập đến Đo độ ẩm và Nhiệt độ bằng Arduino và hiển thị dữ liệu trên màn hình LCD.
Trong dự án IoT này, chúng tôi sẽ theo dõi Độ ẩm và Nhiệt độ qua internet bằng ThingSpeak , nơi chúng tôi sẽ hiển thị dữ liệu Độ ẩm & Nhiệt độ hiện tại qua Internet bằng máy chủ ThingSpeak. Nó được thực hiện nhờ giao tiếp dữ liệu giữa Arduino, Mô-đun cảm biến DHT11, mô-đun WIFI ESP8266 và màn hình LCD. Nhiệt kế theo thang độ C và máy đo độ ẩm theo thang phần trăm hiển thị nhiệt độ và độ ẩm môi trường xung quanh thông qua màn hình LCD và cũng gửi nó đến máy chủ ThingSpeak để theo dõi trực tiếp từ mọi nơi trên thế giới.
Làm việc và Thiết lập ThingSpeak:
Dự án dựa trên IoT này có bốn phần, trước hết là Cảm biến độ ẩm và nhiệt độ DHT11 cảm nhận Dữ liệu về độ ẩm và nhiệt độ . Thứ hai, Arduino Uno trích xuất dữ liệu của cảm biến DHT11 dưới dạng số phù hợp theo tỷ lệ phần trăm và độ C, và gửi dữ liệu đó đến Mô-đun Wi-Fi. Thứ ba Wi-Fi Mô-đun ESP8266 gửi dữ liệu đến Sever ThingSpeak của. Và cuối cùng ThingSpeak phân tích dữ liệu và hiển thị nó dưới dạng Biểu đồ. Màn hình LCD tùy chọn cũng được sử dụng để hiển thị Nhiệt độ và Độ ẩm.
ThingSpeak cung cấp công cụ rất tốt cho các dự án dựa trên IoT cho Arduino. Bằng cách sử dụng trang ThingSpeak, chúng tôi có thể giám sát dữ liệu của mình qua Internet từ bất kỳ đâu và chúng tôi cũng có thể kiểm soát hệ thống của mình qua Internet, sử dụng các Kênh và trang web do ThingSpeak cung cấp. ThingSpeak 'Thu thập' dữ liệu từ các cảm biến, 'Phân tích và Hình ảnh hóa' dữ liệu và 'Hành động' bằng cách kích hoạt phản ứng. Ở đây chúng tôi đang giải thích về Cách gửi Dữ liệu đến máy chủ ThingSpeak bằng cách sử dụng Mô-đun WIFI ESP8266:
1. Trước hết, người dùng cần Tạo tài khoản trên ThingSpeak.com, sau đó Đăng nhập và nhấp vào Bắt đầu.
2. Bây giờ hãy chuyển đến menu 'Kênh' và nhấp vào tùy chọn Kênh mới trên cùng trang để tiến hành thêm.
3. Bây giờ bạn sẽ thấy một biểu mẫu để tạo kênh, hãy điền Tên và Mô tả theo lựa chọn của bạn. Sau đó điền vào 'Độ ẩm' và 'Nhiệt độ' trong các nhãn Trường 1 và Trường 2, đánh dấu vào hộp kiểm cho cả hai Trường. Cũng đánh dấu vào hộp kiểm cho tùy chọn 'Đặt ở chế độ công khai' bên dưới trong biểu mẫu và cuối cùng là Lưu kênh. Bây giờ kênh mới của bạn đã được tạo.
4. Bây giờ hãy nhấp vào tab 'Khóa API' và lưu các khóa API Viết và Đọc, ở đây chúng tôi chỉ sử dụng khóa Viết. Bạn cần Sao chép khóa này trong char * api_key trong Mã.
5. Sau đó, nhấp vào 'Nhập / Xuất dữ liệu' và sao chép URL yêu cầu GET của nguồn cấp dữ liệu kênh cập nhật, đó là:
api.thingspeak.com/update?api_key=SIWOYBX26OXQ1WMS&field1=0
6. Bây giờ người dùng cần mở “api.thingspeak.com” bằng cách sử dụng chức năng httpGet với postUrl là “update? Api_key = SIWOYBX26OXQ1WMS & field1 = 0” và sau đó gửi dữ liệu bằng nguồn cấp dữ liệu hoặc địa chỉ yêu cầu cập nhật.
Trước khi gửi dữ liệu, người dùng cần chỉnh sửa chuỗi truy vấn này hoặc postUrl với các trường dữ liệu nhiệt độ và độ ẩm, như hình dưới đây. Ở đây chúng tôi đã thêm cả hai tham số trong chuỗi mà chúng tôi cần gửi thông qua sử dụng GET request tới máy chủ, sau khi nó đã sử dụng httpGet để gửi dữ liệu đến máy chủ. Kiểm tra toàn bộ mã dưới đây.
Sprintf (postUrl, "update? Api_key =% s & field1 =% s & field2 =% s", api_key, humStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80);
Toàn bộ quy trình được trình bày trong phần Video, ở cuối Bài viết này.
Hoạt động của dự án này dựa trên giao tiếp nối tiếp dây đơn để tìm nạp dữ liệu từ DHT11. Đầu tiên Arduino gửi tín hiệu bắt đầu đến mô-đun DHT và sau đó DHT đưa ra tín hiệu phản hồi với dữ liệu chứa. Arduino thu thập và trích xuất dữ liệu ở hai phần đầu tiên là độ ẩm và thứ hai là nhiệt độ, sau đó gửi nó đến màn hình LCD 16x2 và máy chủ ThingSpeak. ThingSpeak hiển thị Dữ liệu dưới dạng Đồ thị như sau:
Bạn có thể tìm hiểu thêm về Cảm biến DHT11 và Giao diện của nó với Arduino tại đây.
Mô tả mạch:
Các kết nối cho Dự án Giám sát Nhiệt độ và Độ ẩm ThingSpeak này rất đơn giản. Ở đây, Màn hình tinh thể lỏng được sử dụng để hiển thị Nhiệt độ và Độ ẩm, được kết nối trực tiếp với Arduino ở chế độ 4-bit. Các chân của LCD là RS, EN, D4, D5, D6 và D7 được kết nối với chân kỹ thuật số Arduino số 14, 15, 16, 17, 18 và 19. LCD này là tùy chọn.
Mô-đun cảm biến DHT11 được kết nối với chân số 12 của Arduino. Các chân Vcc và GND của mô-đun Wi-Fi ESP8266 được kết nối trực tiếp với 3.3V và GND của Arduino và CH_PD cũng được kết nối với 3.3V. Các chân Tx và Rx của ESP8266 được kết nối trực tiếp với chân 2 và 3 của Arduino. Thư viện nối tiếp phần mềm cũng được sử dụng ở đây để cho phép giao tiếp nối tiếp trên chân 2 và 3 của Arduino. Chúng tôi đã trình bày chi tiết về Giao diện của mô-đun Wi-Fi ESP8266 với Arduino.
Phần lập trình:
Phần lập trình của dự án này đóng một vai trò rất quan trọng để thực hiện tất cả các hoạt động. Trước hết, chúng tôi bao gồm các thư viện bắt buộc và khởi tạo các biến.
#include "dht.h" // Bao gồm thư viện cho dht #include
Sau khi nhập khóa API Viết của bạn và lấy một số chuỗi.
char * api_key = "SIWOYBX26OXQ1WMS"; // Nhập khóa API Viết của bạn từ ThingSpeak static char postUrl; int humi, tem; void httpGet (String ip, String path, int port = 80);
Trong hàm void loop (), chúng tôi đọc nhiệt độ và độ ẩm và sau đó hiển thị các giá trị đó trên màn hình LCD.
Hàm void send2server () được sử dụng để gửi dữ liệu đến máy chủ. Chức năng Send2server là một quy trình dịch vụ ngắt hẹn giờ, gọi sau mỗi 20 giây. Khi chúng ta gọi hàm cập nhật, quy trình dịch vụ ngắt bộ định thời được gọi.
void send2server () {char tempStr; char ẩmStr; dtostrf (tem, 5, 3, tempStr); dtostrf (humi, 5, 3, wetStr); sprintf (postUrl, "update? api_key =% s & field1 =% s & field2 =% s", api_key, humStr, tempStr); httpGet ("api.thingspeak.com", postUrl, 80); }