Mục lục:
- Bước 1: Đặc điểm kỹ thuật phần cứng và phần mềm
- Bước 2: Cảm biến áp suất và nhiệt độ không dây
- Bước 3: Kết nối với WiFi
- Bước 4: Thiết lập UbiDots trên ESP32
- Bước 5: Xuất bản các bài đọc của cảm biến lên UbiDots
- Bước 6: Hình dung dữ liệu
- Bước 7: Mã tổng thể
Video: Xuất bản dữ liệu cảm biến áp suất không dây bằng MQTT: 7 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
ESP32 vàESP 8266 là SoC rất quen thuộc trong lĩnh vực IoT. Đây là một loại lợi ích cho các dự án IoT. ESP 32 là một thiết bị tích hợp WiFi và BLE. Chỉ cần cung cấp cấu hình SSID, mật khẩu và IP của bạn và tích hợp mọi thứ vào đám mây. Ở đây trong phần hướng dẫn này, chúng ta sẽ suy ngẫm về một số thuật ngữ cơ bản của IoT như nền tảng IoT, MQTT, cổng cố định, v.v. Vì vậy, chúng ta hãy cùng xem qua
- Kiến trúc IoT nói một cách rất đơn giản bao gồm một thiết bị nhúng và nền tảng IoT để đưa thiết bị lên đám mây. Ở đây chúng tôi đang sử dụng nền tảng UbiDots IoT để trực quan hóa dữ liệu cảm biến.
- Quản lý cài đặt IP và thông tin đăng nhập của người dùng có thể là một vấn đề đau đầu đối với người dùng. Điều gì sẽ xảy ra nếu Người dùng muốn thay đổi thông tin đăng nhập WiFi? Điều gì sẽ xảy ra nếu người dùng muốn chuyển đổi cài đặt DHCP / IP tĩnh? Việc nhấp nháy ESP32 mọi lúc không đáng tin cậy và thậm chí không phải là giải pháp cho những vấn đề này. Vì vậy, chúng tôi sẽ đi qua cổng bị khóa để lưu thông tin đăng nhập WiFi và các cấu hình khác.
- MQTT hiện đang trở thành một thuật ngữ rất phổ biến trong thế giới IoT. nó đã vượt qua yêu cầu và phản hồi (HTTP) bởi Xuất bản và Đăng ký vì kiến trúc nhanh, mạnh mẽ và tinh gọn.
Ở đây trong hướng dẫn này, chúng tôi sẽ chứng minh.
- Cung cấp thông tin đăng nhập WiFi và MQTT bằng Captive Portal.
- Xuất bản và đăng ký nhiều dữ liệu Cảm biến lên UbiDots.
- Đọc dữ liệu cảm biến từ Cảm biến nhiệt độ và áp suất không dây
- Lưu trữ một biểu mẫu web từ ESP32.
- Đọc và Viết từ SPIFFS ESP32.
Bước 1: Đặc điểm kỹ thuật phần cứng và phần mềm
Đặc điểm kỹ thuật phần cứng
- ESP32 WiFi / BLE
- Cảm biến nhiệt độ và áp suất không dây
Đặc điểm kỹ thuật phần mềm
- Arduino IDE
- XCTU
- Tiện ích Labview
Bước 2: Cảm biến áp suất và nhiệt độ không dây
Đặc trưng
- Cảm biến cấp công nghiệp Cảm biến nhiệt độ áp suất không dây phạm vi dài
- Phạm vi hoạt động 0 đến 14000 mbar -40 ° đến + 85 ° C (-40 ° đến 185 ° F)
- Độ phân giải áp suất tính toán nội bộ có thể cấu hình 0,012 đến 0,065 mbar
- Độ phân giải nhiệt độ tính toán nội bộ có thể cấu hình 0,002 đến 0,012 ° C
- Độ chính xác ± 2,5 mbar, ± 2 ° C
- Đầu ra áp suất tuyệt đối, áp suất tương đối và thay đổi độ cao tương đối
- Dải tầm nhìn 2 dặm với ăng-ten trên bo mạch
- Phạm vi LOS vượt trội lên đến 28 Dặm với ăng ten độ lợi cao
- Giao diện với Raspberry Pi, Microsoft® Azure®, Arduino, v.v.
- Kết nối mạng lưới không dây bằng DigiMesh®
Định cấu hình cảm biến nhiệt độ và áp suất không dây bằng Labview Utility và XCTU
Cảm biến chạy ở hai chế độ
- Chế độ cấu hình: Định cấu hình Pan ID, độ trễ, Số lần thử lại, v.v. Thông tin thêm về điều này nằm ngoài phạm vi của hướng dẫn này và sẽ được giải thích trong hướng dẫn tiếp theo.
- Chế độ Chạy: Chúng tôi đang chạy thiết bị ở chế độ Chạy. Và để phân tích những giá trị này, chúng tôi đang sử dụng Tiện ích Labview
Giao diện người dùng Labview này hiển thị các giá trị trong biểu đồ đẹp. Nó cho thấy giá trị hiện tại cũng như quá khứ. Bạn có thể truy cập liên kết này để tải xuống Labview UI. nhấp vào biểu tượng Chạy từ menu trang đích để chuyển sang chế độ chạy.
Bước 3: Kết nối với WiFi
Chúng tôi đang sử dụng cổng cố định để lưu thông tin đăng nhập WiFi và di chuột qua cài đặt IP. Để có phần giới thiệu chi tiết về cổng bị khóa, bạn có thể xem qua hướng dẫn sau.
Cổng bị khóa cung cấp cho chúng tôi tùy chọn để chọn giữa cài đặt Tĩnh và DHCP. Chỉ cần nhập thông tin đăng nhập như IP tĩnh, Mặt nạ mạng con, cổng vào và Cổng cảm biến không dây sẽ được định cấu hình trên IP đó.
Một trang web đang được lưu trữ trong đó danh sách hiển thị các mạng WiFi khả dụng và có RSSI. Chọn mạng và mật khẩu WiFi và nhập gửi. Thông tin đăng nhập sẽ được lưu trong EEPROM và cài đặt IP sẽ được lưu trong SPIFFS. Nhiều hơn về điều này có thể được tìm thấy trong hướng dẫn này.
Bước 4: Thiết lập UbiDots trên ESP32
Ở đây chúng tôi đang sử dụng Cảm biến nhiệt độ và áp suất không dây với thiết bị ESP 32 để lấy dữ liệu nhiệt độ và độ ẩm. Chúng tôi đang gửi dữ liệu đến UbiDots bằng giao thức MQTT. MQTT tuân theo cơ chế xuất bản và đăng ký thay vì yêu cầu và phản hồi. Nó nhanh hơn và đáng tin cậy hơn HTTP. Điều này hoạt động như sau.
- Chúng tôi đang sử dụng Bộ lập lịch tác vụ để Lập lịch tác vụ như tìm nạp dữ liệu từ các cảm biến, Xuất bản các bài đọc của bộ cảm biến, Đăng ký chủ đề MQTT.
- Đầu tiên, hãy bao gồm các tệp tiêu đề của Task Scheduler, nó là phiên bản và lên lịch cho các tác vụ.
- Chúng tôi đã lên lịch cho hai nhiệm vụ đề cập đến hai hoạt động kiểm soát khác nhau.
#define _TASK_TIMEOUT # bao gồm ts Bộ lập lịch; // --------- Nhiệm vụ ------------ // Tác vụ tSensor (4 * TASK_SECOND, TASK_FOREVER, & taskSensorCallback, & ts, false, NULL, & taskSensorDisable); Tác vụ tWiFi (10 * TASK_SECOND, TASK_FOREVER, & taskWiFiCallback, & ts, false, NULL, & taskWiFiDisable);
- 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 chờ, Chúng tôi đang kết nối với Wifi cục bộ và nhà môi giới MQTT.
- Bây giờ Tác vụ 2 đã được bật và chúng tôi đang tắt Tác vụ 1
- Nhiệm vụ 2 là xuất bản dữ liệu cảm biến tới nhà môi giới UbiDots MQTT, tác vụ này chạy trong 20 giây cho đến khi hết thời gian chờ 20 giây
- Khi Task2 hết thời gian, Task 1 được bật lại và Task2 bị vô hiệu hóa. Ở đây một lần nữa, chúng tôi đang nhận được giá trị cập nhật và quá trình tiếp tục.
Đọc dữ liệu cảm biến I2C
Chúng tôi đang nhận được khung hình 29 byte từ Cảm biến nhiệt độ và độ ẩm không dây. Khung này được thao tác để lấy dữ liệu nhiệt độ và độ ẩm thực tế
if (Serial1.available ())
{data [0] = Serial1.read (); độ trễ (k); if (data [0] == 0x7E) {while (! Serial1.available ()); for (i = 1; i <36; i ++) {data = Serial1.read (); trì hoãn (1); } if (data [15] == 0x7F) /////// để kiểm tra xem dữ liệu nhận có đúng không {if (data [22] == 0x06) //////// đảm bảo loại cảm biến là đúng {int cTemp = (((((dữ liệu [24]) * 256) + dữ liệu [25])); int16_t abs_pressure = ((((uint16_t) (data [26]) << 8) | data [27]) * 0,001); int rlt_pressure = (((((dữ liệu [28]) * 256) + dữ liệu [29]) * 0,001); int16_t delta_alt = ((((uint16_t) (data [30]) << 8) | data [31]) * 0.01); float pin = ((data [18] * 256) + data [19]); điện áp phao = 0,00322 * pin; Serial.print ("Số cảm biến"); Serial.println (data [16]); Serial.print ("Loại cảm biến"); Serial.println (dữ liệu [22]); Serial.print ("Phiên bản chương trình cơ sở"); Serial.println (dữ liệu [17]); Serial.print ("Nhiệt độ tính bằng độ C:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Áp suất tuyệt đối:"); Serial.println (abs_pressure); Serial.print ("mbar"); Serial.print ("Áp suất tương đối:"); Serial.println (rlt_pressure); Serial.print ("mbar"); Serial.print ("Delta Altitude:"); Serial.println (delta_alt); Serial.print ("mét"); Serial.print ("Giá trị ADC:"); Serial.println (pin); Serial.print ("Điện áp Pin:"); Serial.print (điện áp); Serial.println ("\ n"); if (điện áp <1) {Serial.println ("Thời gian Thay Pin"); }}} else {for (i = 0; i <36; i ++) {Serial.print (data ); Serial.print (","); trì hoãn (1); }}}}
Kết nối với UbiDots MQTT API
Bao gồm tệp tiêu đề cho quy trình MQTT
#bao gồm
xác định các biến khác cho MQTT như tên khách hàng, địa chỉ nhà môi giới, ID mã thông báo
#define TOKEN "BBFF - ************************************" // Ubidots TOKEN của bạn # xác định MQTT_CLIENT_NAME "****************************"
char mqttBroker = "things.ubidots.com";
tải trọng char [100]; chủ đề char [150]; // tạo biến để lưu trữ mã thông báo ID toke
Bước 5: Xuất bản các bài đọc của cảm biến lên UbiDots
Tạo các biến để lưu trữ các dữ liệu cảm biến khác nhau và tạo một biến char để lưu trữ chủ đề
#define VARIABLE_LABEL_TEMPF "tempF" // Gán nhãn biến # xác định VARIABLE_LABEL_TEMPC "tempC" // Gán nhãn biến # xác định VARIABLE_LABEL_BAT "bat" #define VARIABLE_LABEL_HUMID "ẩm" // Gán nhãn biến
char topic1 [100];
char topic2 [100]; char topic3 [100];
xuất bản dữ liệu lên chủ đề MQTT đã đề cập, trọng tải sẽ giống như {"tempc": {value: "tempData"}}
sprintf (topic1, "% s", ""); sprintf (topic1, "% s% s", "/v1.6/devices/", DEVICE_LABEL); sprintf (tải trọng, "% s", ""); // Xóa payload sprintf (payload, "{"% s / ":", VARIABLE_LABEL_TEMPC); // Thêm giá trị sprintf (payload, "% s {" value / ":% s}", payload, str_cTemp); // Thêm giá trị sprintf (payload, "% s}", payload); // Đóng dấu ngoặc từ điển Serial.println (payload); Serial.println (client.publish (topic1, payload)? "Publish": "notpublish"); // Làm tương tự cho chủ đề khác
client.publish () xuất bản dữ liệu lên UbiDots
Bước 6: Hình dung dữ liệu
- Đi tới Ubidots và Đăng nhập vào tài khoản của bạn.
- Điều hướng đến Trang tổng quan từ tab Dữ liệu được liệt kê ở trên cùng.
- Bây giờ hãy nhấp vào biểu tượng "+" để thêm các widget mới.
- Chọn một widget từ danh sách và thêm một biến và thiết bị.
- Dữ liệu cảm biến có thể được hiển thị trên bảng điều khiển bằng cách sử dụng các tiện ích khác nhau.
Bước 7: Mã tổng thể
Mã Over cho HTML và ESP32 có thể được tìm thấy trong kho lưu trữ GitHub này.
Tín dụng
- bảng đột phá ncd ESP32.
- Cảm biến nhiệt độ và áp suất không dây ncd
- pubsubclient
- UbiDots
- Bảng kế hoạch
Đề xuất:
Cảm biến cửa không dây - Công suất cực thấp: 5 bước
Cảm biến cửa không dây - Công suất cực thấp: Một cảm biến cửa khác !! Động lực thúc đẩy tôi tạo ra cảm biến này là nhiều thứ tôi thấy trên internet có hạn chế này hay hạn chế khác. Một số mục tiêu của cảm biến đối với tôi là: 1. Cảm biến phải rất nhanh - tốt nhất là ít hơn
Dữ liệu cảm biến nhiệt độ và rung không dây tới MySQL bằng Node-RED: 40 bước
Dữ liệu cảm biến nhiệt độ và rung không dây tới MySQL bằng Node-RED: Giới thiệu NCD’s Long Range IoT Cảm biến nhiệt độ và rung động không dây công nghiệp của NCD, tự hào với phạm vi lên đến 2 dặm nhờ sử dụng cấu trúc mạng lưới không dây. Kết hợp cảm biến nhiệt độ và rung 16 bit chính xác, thiết bị này
Gửi dữ liệu cảm biến nhiệt độ và rung không dây sang Excel bằng Node-RED: 25 bước
Gửi dữ liệu cảm biến nhiệt độ và rung không dây sang Excel bằng Node-RED: Giới thiệu NCD’s Long Range IoT Cảm biến nhiệt độ và rung động không dây công nghiệp, tự hào với phạm vi lên đến 2 dặm nhờ sử dụng cấu trúc mạng lưới không dây. Kết hợp cảm biến nhiệt độ và rung 16 bit chính xác, thiết bị này
UbiDots-Kết nối ESP32 và xuất bản dữ liệu nhiều cảm biến: 6 bước
UbiDots-Connecting a ESP32 và xuất bản nhiều dữ liệu cảm biến: ESP32 và ESP 8266 là những SoC rất quen thuộc trong lĩnh vực IoT. Đây là một loại lợi ích cho các dự án IoT. ESP 32 là thiết bị tích hợp WiFi và BLE. Chỉ cần cung cấp cấu hình SSID, mật khẩu và IP của bạn và tích hợp mọi thứ vào
Trực quan hóa dữ liệu cảm biến không dây bằng Google Charts: 6 bước
Trực quan hóa dữ liệu cảm biến không dây bằng Google Charts: Phân tích dự đoán của máy là rất cần thiết để giảm thiểu thời gian chết của máy. Kiểm tra thường xuyên giúp nâng cao thời gian hoạt động của máy và do đó nâng cao khả năng chịu lỗi của máy. Rung không dây và nhiệt độ sen