Mục lục:
- Bước 1: Yêu cầu phần cứng
- Bước 2: Kết nối phần cứng
- Bước 3: Mã lập lịch tác vụ
- Bước 4: Mã để đọc các giá trị nhiệt độ và độ ẩm
- Bước 5: Mã để lưu trữ một máy chủ trang web
- Bước 6: Thiết lập Thingspeak
- Bước 7: Mã để đăng dữ liệu cần nói
- Bước 8: Mã tổng thể
- Bước 9: Tín dụng
Video: ỨNG DỤNG NHIỆT ĐỘ VÀ ĐỘ ẨM THINGSPEAK SỬ DỤNG ESP8266: 9 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:32
Trong khi mày mò với đồ điện tử của mình, tôi có ý tưởng này để tạo ứng dụng thời tiết dựa trên web. Ứng dụng web này sử dụng cảm biến SHT31 để nhận dữ liệu nhiệt độ và độ ẩm theo thời gian thực. Chúng tôi đã triển khai dự án của mình trên mô-đun WiFi ESP8266. Trực tuyến hoặc ngoại tuyến! Không cần phải lo lắng, cho dù bạn đang trực tuyến hay ngoại tuyến, bạn sẽ nhận được các bản cập nhật thời tiết từ bất cứ đâu và bất cứ lúc nào. Ứng dụng web này đăng dữ liệu lên máy chủ web cục bộ cũng như lên đám mây. Đối với các hoạt động trên đám mây, chúng tôi đang sử dụng ThingSpeak API. SHT31 sử dụng I2C để lấy dữ liệu từ cảm biến.
SHT 31 là Cảm biến Nhiệt độ và Độ ẩm do Sensirion sản xuất. SHT31 cung cấp độ chính xác cao khoảng ± 2% RH. Phạm vi độ ẩm của nó là từ 0 đến 100% và phạm vi nhiệt độ là từ -40 đến 125 ° C. Nó đáng tin cậy và nhanh hơn nhiều với thời gian phản hồi của Cảm biến 8 giây. Chức năng của nó bao gồm xử lý tín hiệu nâng cao và khả năng tương thích I2C. Nó có các chế độ hoạt động khác nhau giúp tiết kiệm năng lượng.
Trong hướng dẫn này, chúng tôi đã giao tiếp SHT 31 với bảng Adafruit Huzzah. Để đọc các giá trị Nhiệt độ và Độ ẩm, chúng tôi đã sử dụng tấm chắn I2C ESP8266. Bộ điều hợp này giúp người dùng có thể truy cập tất cả các chân và cung cấp môi trường I2C thân thiện với người dùng.
Bước 1: Yêu cầu phần cứng
Phần cứng được sử dụng để hoàn thành tác vụ này:
- SHT 31
- Adafruit Huzzah ESP8266
- Bộ chuyển đổi I2C ESP8266
- Cáp I2C
Bước 2: Kết nối phần cứng
Bước này bao gồm hướng dẫn kết nối phần cứng. Phần này giải thích về cơ bản các kết nối dây cần thiết giữa cảm biến và ESP8266. Các kết nối như sau.
- SHT31 hoạt động trên I2C. Hình ảnh trên minh họa kết nối giữa mô-đun ESP8266 và SHT31. Chúng tôi đang sử dụng cáp I2C cho nó hoặc chúng tôi có thể sử dụng 4 dây nối F đến F.
- một dây được sử dụng cho Vcc, dây thứ hai cho GND và hai dây khác tương ứng cho SDA và SCL
- Theo bộ điều hợp I2C, chân 2 và chân 14 của bảng ESP8266 được sử dụng làm SDA và SCL tương ứng
Bước 3: Mã lập lịch tác vụ
Trong hướng dẫn này, chúng tôi đang thực hiện ba hoạt động
- Đọc dữ liệu từ SHT11 bằng giao thức I2C
- lưu trữ máy chủ web và đăng kết quả đọc cảm biến lên trang web
- đăng các bài đọc cảm biến lên API ThingSpeak
Để đạt được điều này, chúng tôi sử dụng thư viện TaskScheduler. Chúng tôi đã lên lịch cho ba nhiệm vụ khác nhau đề cập đến ba hoạt động kiểm soát khác nhau. Điều này được thực hiện như sau
- Nhiệm vụ 1 là để đọc giá trị cảm biến, nhiệm vụ này chạy trong 1 giây cho đến khi hết thời gian chờ 10 giây.
- Khi Task1 hết thời gian, Task 2 được kích hoạt và Task1 bị vô hiệu hóa.
- Chúng tôi kết nối với AP trong lần gọi lại này, Hai biến boolean được thực hiện để xử lý việc chuyển đổi giữa STA và AP
- Trong Tác vụ 2, chúng tôi đang lưu trữ một máy chủ web tại 192.168.1.4. Tác vụ này chạy cứ sau 5 giây cho đến khi hết thời gian chờ là 50 giây
- Khi Nhiệm vụ 2 hết thời gian chờ, Nhiệm vụ 3 được bật và Tác vụ 2 bị vô hiệu hóa.
-
Chúng tôi kết nối với STA (IP cục bộ) trong calback này Trong Nhiệm vụ 3, chúng tôi đang đăng cảm biến đọc lên API ThingSpeak trên đám mây
- Tác vụ 3 chạy cứ sau năm giây cho đến khi hết thời gian chờ, tức là 50 giây
- Khi Task3 hết thời gian, Task 1 được bật lại và Task3 bị vô hiệu hóa.
- Khi không có cuộc gọi lại nào hoặc thiết bị không hoạt động, nó sẽ chuyển sang chế độ Ngủ sáng để tiết kiệm điện năng.
void taskI2CCallback ();
void taskI2CDisable (); void taskAPCallback (); void taskAPDisable (); void taskWiFiCallback (); void taskWiFiDisable (); // Nhiệm vụ cho i2c, lưu trữ máy chủ web và đăng trên thingspeak Nhiệm vụ tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Tác vụ tI2C (1 * TASK_SECOND, TASK_FOREVER, & taskI2CCallback, & ts, false, NULL, & taskI2CDisable); Task tAP (5 * TASK_SECOND, TASK_FOREVER, & taskAPCallback, & ts, false, NULL, & taskAPDisable); Tác vụ tWiFi (5 * TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable); // thời gian chờ cho các tác vụ tI2C.setTimeout (10 * TASK_SECOND); tAP.setTimeout (50 * TASK_SECOND); tWiFi.setTimeout (50 * TASK_SECOND); // kích hoạt tác vụ I2C tI2C.enable ();
Bước 4: Mã để đọc các giá trị nhiệt độ và độ ẩm
Chúng tôi đang sử dụng thư viện Wire.h để đọc các giá trị nhiệt độ và độ ẩm. Thư viện này hỗ trợ giao tiếp i2c giữa cảm biến và thiết bị chính. 0x44 là địa chỉ I2C cho SHT31.
SHT31 hoạt động ở một phương thức hoạt động khác. Bạn có thể tham khảo biểu dữ liệu cho điều đó. Chúng tôi đang sử dụng 0x2C và 0x06 làm MSB và LSB tương ứng cho hoạt động chụp một lần.
// Gọi lại nhiệm vụ I2C void taskI2CCallback () {Serial.println ("taskI2CStarted"); unsigned int root [6]; // bắt đầu truyền từ 0x44; Wire.beginTransmission (Addr); // để truyền một lần với độ lặp lại cao, chúng tôi sử dụng 0x2C (MSB) và 0x06 (LSB) Wire.write (0x2C); Wire.write (0x06); // kết thúc truyền Wire.endTransmission (); // yêu cầu byte từ 0x44 Wire.beginTransmission (Addr); Wire.endTransmission (); Wire.requestFrom (Addr, 6); if (Wire.available () == 6) {// data [0] và data [1] chứa 16 bit nhiệt độ. root [0] = Wire.read (); root [1] = Wire.read (); // data [2] chứa 8 bit gốc CRC [2] = Wire.read (); // data [3] và data [4] chứa 16 bit gốc độ ẩm [3] = Wire.read (); root [4] = Wire.read (); // data [5] gồm 8 bit CRC root [5] = Wire.read (); } int temp = (root [0] * 256) + root [1]; // shift MSB 8 bit thêm LSB float cTemp = -45.0 + (175.0 * temp / 65535.0); float fTemp = (cTemp * 1.8) + 32.0; // dịch chuyển MSB 8 bit thêm LSB vào nó bằng độ phân giải đầy đủ và * 100 cho độ ẩm phần trăm float = (100.0 * ((root [3] * 256.0) + root [4])) / 65535.0; tempC = cTemp; tempF = fTemp; ẩm = độ ẩm; Serial.print ("Nhiệt độ tính bằng C: / t"); Serial.println (String (cTemp, 1)); Serial.print ("Nhiệt độ tính bằng F: / t"); Serial.println (String (fTemp, 1)); Serial.print ("Độ ẩm: / t"); Serial.println (Chuỗi (độ ẩm, 1)); }
Bước 5: Mã để lưu trữ một máy chủ trang web
Chúng tôi đã lưu trữ một máy chủ web từ thiết bị của mình trên một IP tĩnh.
Thư viện ESP8266WebServer được sử dụng để lưu trữ máy chủ web
- Đầu tiên chúng ta cần khai báo địa chỉ IP, Gateway và mặt nạ mạng con để tạo IP tĩnh của chúng ta
- Bây giờ hãy khai báo ssid và mật khẩu cho Access point của bạn. Kết nối với Access point từ bất kỳ thiết bị STA nào
- lưu trữ máy chủ trên cổng 80 là cổng mặc định cho giao thức truyền thông internet, Giao thức truyền siêu văn bản (HTTP) nhập 192.168.1.4 trên trình duyệt web của bạn cho trang web giới thiệu và 192.168.1.4/ Giá trị cho trang web đọc cảm biến
// Ip tĩnh cho APIPAddress ap_local_IP (192, 168, 1, 4); IPAddress ap_gateway (192, 168, 1, 254); IPAddress ap_subnet (255, 255, 255, 0); // ssid và AP cho WiFi cục bộ ở chế độ STA const char WiFissid = "*********"; const char WiFipass = "*********"; // ssid và truyền cho AP const char APssid = "********"; const char APpass = "********"; Máy chủ ESP8266WebServer (80); void setup {server.on ("/", onHandleDataRoot); server.on ("/ Giá trị", onHandleDataFeed); server.onNotFound (onHandleNotFound);} void taskAPCallback () {Serial.println ("taskAP started"); server.handleClient (); } void onHandleDataRoot () {server.send (200, "text / html", PAGE1); } void onHandleDataFeed () {server.send (200, "text / html", PAGE2); } void onHandleNotFound () {String message = "Không tìm thấy tệp / n / n"; tin nhắn + = "URI:"; message + = server.uri (); tin nhắn + = "\ nMethod:"; message + = (server.method () == HTTP_GET)? "GET": "POST"; message + = "\ nĐối số:"; message + = server.args (); tin nhắn + = "\ n"; server.send (404, "văn bản / đơn giản", tin nhắn); } void renectAPWiFi () {WiFi.mode (WIFI_AP_STA); chậm trễ (100); WiFi.disconnect (); trạng thái boolean = WiFi.softAPConfig (ap_local_IP, ap_gateway, ap_subnet); if (status == true) {Serial.print ("Đặt soft-AP…"); boolean ap = WiFi.softAP (APssid, APpass); if (ap == true) {Serial.print ("được kết nối với: / t"); // IPAddress myIP = WiFi.softAPIP (); Serial.println (WiFi.softAPIP ()); } server.begin ();
}
Bước 6: Thiết lập Thingspeak
ThingSpeak là một nền tảng IoT. ThingSpeak là một dịch vụ web miễn phí cho phép bạn thu thập và lưu trữ dữ liệu cảm biến trên đám mây.
Trong Bước này, tôi sẽ cung cấp cho bạn một thủ tục ngắn gọn để thiết lập tài khoản Thing Speak của bạn
- Đăng ký tài khoản người dùng mới trong ThingSpeak
- Tạo một kênh mới bằng cách chọn Kênh, Kênh của tôi, rồi chọn Kênh mới
- Chỉnh sửa các trường của bạn
- Các trường này chứa dữ liệu cảm biến của bạn
- Lưu ý Ghi khóa API và ID kênh
- Trên bản phác thảo Arduino của mình, bạn có thể sử dụng thư viện ThingSpeak cho Arduino hoặc bạn có thể ĐĂNG trực tiếp dữ liệu lên API ThingSpeak
- bước tiếp theo giải thích chi tiết về việc đăng nội dung lên Thing Speak API
Bước 7: Mã để đăng dữ liệu cần nói
Ở đây chúng tôi đăng các bài đọc cảm biến lên Thing Speak. các bước sau là cần thiết để hoàn thành nhiệm vụ này-
- Tạo tài khoản của bạn bằng speakTạo các kênh và trường để lưu trữ dữ liệu cảm biến của bạn
- chúng ta có thể lấy và đăng dữ liệu từ ESP lên thingSpeak và ngược lại bằng cách sử dụng các yêu cầu GET và POST tới api.
- chúng ta có thể đăng dữ liệu của mình lên ThingSpeak như sau
id taskWiFiCallback () {WiFiClient wifiClient; if (wifiClient.connect (hostId, 80)) {String postStr = apiKey; postStr + = "& field1 ="; postStr + = String (ẩm); postStr + = "& field2 ="; postStr + = String (tempC); postStr + = "& field3 ="; postStr + = String (tempF); postStr + = "\ r / n / r / n"; wifiClient.print ("ĐĂNG / cập nhật HTTP / 1.1 / n"); wifiClient.print ("Máy chủ: api.thingspeak.com / n"); wifiClient.print ("Kết nối: close / n"); wifiClient.print ("X-THINGSPEAKAPIKEY:" + apiKey + "\ n"); wifiClient.print ("Loại-Nội dung: application / x-www-form-urlencoded / n"); wifiClient.print ("Nội dung-Độ dài:"); wifiClient.print (postStr.length ()); wifiClient.print ("\ n / n"); wifiClient.print (postStr); } wifiClient.stop (); }
Bước 8: Mã tổng thể
Mã tổng thể có sẵn trong kho lưu trữ GitHub của tôi
Bước 9: Tín dụng
- Arduino JSON
- ESP826WebServer
- Bảng kế hoạch
- SHT 31
- Quét I2C
- HIH6130 hướng dẫn có sẵn
- Dây điện
- NCD.io
Đề xuất:
Hiển thị nhiệt độ & độ ẩm nhiệt nhiệt - Phiên bản PCB: 6 bước (có hình ảnh)
Hiển thị Nhiệt độ & Độ ẩm Thermochromic - Phiên bản PCB: Cách đây không lâu, một dự án có tên Nhiệt độ Nhiệt & Màn hình độ ẩm nơi tôi đã chế tạo màn hình 7 phân đoạn từ các tấm đồng được làm nóng / làm mát bằng các phần tử peltier. Các tấm đồng được bao phủ bởi một lá mỏng nhiệt sắc
Dụng cụ đo nhiệt độ đơn giản và rẻ tiền sử dụng nhiệt điện trở: 5 bước
Dụng cụ đo nhiệt độ đơn giản và rẻ tiền sử dụng nhiệt điện trở: cảm biến nhiệt độ đơn giản và rẻ tiền sử dụng nhiệt điện trở nhiệt NTC thay đổi điện trở của nó theo thời gian thay đổi bằng cách sử dụng đặc tính này, chúng tôi đang xây dựng cảm biến nhiệt độ để biết thêm về nhiệt điện trở https://en.wikipedia.org/wiki/ Thermistor
Tạo ứng dụng Android cho doanh nghiệp nhỏ bằng ứng dụng MIT và Google Fusion Table: 7 bước
Tạo ứng dụng Android cho doanh nghiệp nhỏ bằng ứng dụng MIT và Google Fusion Table: Bạn đã bao giờ muốn tạo Ứng dụng của riêng mình có thể có sẵn tại cửa hàng google play chưa !!! Nếu bạn đang kinh doanh thì hướng dẫn này sẽ thay đổi cuộc đời bạn. Sau khi đọc kỹ phần này, bạn sẽ có thể làm Đơn đăng ký của riêng mình. Befo
Cách sử dụng cảm biến nhiệt độ DHT11 với Arduino và nhiệt độ in Nhiệt độ và độ ẩm: 5 bước
Cách sử dụng cảm biến nhiệt độ DHT11 với Arduino và nhiệt độ in Nhiệt độ và độ ẩm: Cảm biến DHT11 được sử dụng để đo nhiệt độ và độ ẩm. Họ là những người rất ưa thích đồ điện tử. Cảm biến nhiệt độ và độ ẩm DHT11 giúp bạn thực sự dễ dàng thêm dữ liệu độ ẩm và nhiệt độ vào các dự án điện tử tự làm của mình. Đó là mỗi
Nhiệt kế nấu ăn đầu dò nhiệt độ ESP32 NTP với cảnh báo nhiệt độ và hiệu chỉnh Steinhart-Hart.: 7 bước (có hình ảnh)
Nhiệt kế nấu ăn đầu dò nhiệt độ ESP32 NTP với cảnh báo nhiệt độ và hiệu chỉnh Steinhart-Hart. là một chương trình Có thể hướng dẫn cho thấy cách tôi thêm đầu dò nhiệt độ NTP, piezo b