Mục lục:
- Bước 1: Thiết lập tài khoản AWS
- Bước 2: Thông số kỹ thuật phần cứng và phần mềm
- Bước 3: Cảm biến nhiệt độ và rung không dây
- Bước 4: Phần mềm chương trình ESP32 AWS
- Bước 5: Lấy dữ liệu cảm biến từ cảm biến nhiệt độ và rung không dây
- Bước 6: Kết nối với AWS
- Bước 7: Trực quan hóa dữ liệu trong AWS
- Bước 8: Mã tổng thể
Video: Bắt đầu với AWS IoT với cảm biến nhiệt độ không dây sử dụng MQTT: 8 bước
2024 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2024-01-30 13:33
Trong các phiên bản trước, chúng tôi đã trải qua các nền tảng đám mây khác nhau như Azure, Ubidots, ThingSpeak, Losant, v.v. Chúng tôi đã sử dụng giao thức MQTT để gửi dữ liệu cảm biến lên đám mây trong hầu hết các nền tảng đám mây. Để biết thêm thông tin về MQTT, những ưu điểm và lợi ích của nó so với giao thức HTTP, bạn có thể tham khảo hướng dẫn này.
Trong hướng dẫn này, chúng tôi sẽ phóng to thêm một nền tảng đám mây khác và quen thuộc nhất là Amazon Web Services. Nhiều người trong số các bạn có thể đã quen thuộc với AWS hay còn gọi là Amazon Web Services và chức năng đám mây do AWS cung cấp. Nó đã là cốt lõi của sự phát triển web trong nhiều năm. Với quy mô ngày càng tăng của các ứng dụng IoT, AWS đã đưa ra giải pháp AWSIoT. AWSIoT là một giải pháp đáng tin cậy để lưu trữ các ứng dụng IoT của chúng tôi.
Bằng cách làm theo hướng dẫn này:
- Bạn sẽ có thể thiết lập tài khoản AWS cho ứng dụng IoT của mình
- Bạn sẽ có thể kết nối ESP32 với lõi AWS IoT
- Gửi và nhận tin nhắn bằng giao thức MQTT và
- Trực quan hóa dữ liệu đã gửi trong AWS
Bước 1: Thiết lập tài khoản AWS
Thiết lập tài khoản AWS khá dễ dàng. Bạn chỉ cần tải lên một vài chứng chỉ, đính kèm các chính sách với nó, Đăng ký thiết bị và bắt đầu nhận thông báo dữ liệu cảm biến trong AWS.
Để thiết lập tài khoản AWS, hãy làm theo hướng dẫn này.
Bước 2: Thông số kỹ thuật phần cứng và phần mềm
Đặc điểm kỹ thuật phần mềm
Tài khoản AWS
Đặc điểm kỹ thuật phần cứng
- ESP32
- Cảm biến nhiệt độ và rung không dây
- Bộ thu Zigmo Gateway
Bước 3: Cảm biến nhiệt độ và rung không dây
Đây là cảm biến nhiệt độ và rung không dây IoT công nghiệp tầm xa, tự hào với phạm vi lên đến 2 dặm bằng cách sử dụng kiến trúc mạng lưới không dây. Kết hợp cảm biến Rung và Nhiệt độ 16 bit, cảm biến này truyền dữ liệu rung động có độ chính xác cao trong các khoảng thời gian do người dùng xác định. Nó có các tính năng sau:
- Cảm biến rung 3 trục cấp công nghiệp với phạm vi ± 32g
- Tính RMS, MAX và MIN g Rung
- Loại bỏ tiếng ồn bằng Bộ lọc thông thấp
- Dải tần số (Băng thông) lên đến 12, 800 Hz
- Tốc độ lấy mẫu lên đến 25, 600Hz
- Giao tiếp được mã hóa với phạm vi không dây 2 dặm
- Phạm vi nhiệt độ hoạt động -40 đến +85 ° C
- Vỏ bọc được xếp hạng IP65 gắn trên tường hoặc gắn nam châmPhần mềm mẫu cho Visual Studio và LabVIEW
- Cảm biến rung với tùy chọn đầu dò bên ngoài
- Lên đến 500, 000 lần truyền từ 4 pin AA
Bước 4: Phần mềm chương trình ESP32 AWS
Để kết nối với AWS và bắt đầu gửi dữ liệu, hãy thực hiện theo các bước sau
- Tải xuống thư viện AWS từ kho Github sau
- sao chép repo và đặt tệp AWS_IOT vào thư mục thư viện của thư mục Arduino
git clone
Bây giờ chúng ta hãy xem qua đoạn mã:
- Trong ứng dụng này, chúng tôi đã 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. Để biết 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 5: Lấy dữ liệu cảm biến từ cảm biến nhiệt độ và rung không dây
Chúng tôi đang nhận được khung 54 byte từ Cảm biến nhiệt độ và độ rung không dây. Khung này được thao tác để lấy dữ liệu về nhiệt độ và độ rung thực tế.
ESP32 có sẵn ba UART để sử dụng Nối tiếp
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
và 3 cổng nối tiếp phần cứng
- Nối tiếp
- Serial1
- Serial2
Đầu tiên, khởi tạo tệp tiêu đề Phần cứng Serial. Ở đây chúng tôi sẽ sử dụng RX2 và TX2 aka. Các chân GPIO 16 và GPIO 17 của bo mạch ESP32 để lấy dữ liệu nối tiếp.
#bao gồm
# xác định RXD2 16 # xác định TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // chân 16 rx2, 17 tx2, 19200 bps, 8 bit không chẵn lẻ 1 bit dừng
Các bước sau sẽ dẫn bạn đi xa hơn để có được các giá trị cảm biến thực
- Tạo các biến để lưu trữ nhiệt độ, độ ẩm, pin và các giá trị cảm biến khác
- Đặt chân Rx, tx, tốc độ truyền và bit chẵn lẻ cho nối tiếp phần cứng
- Đầu tiên, hãy kiểm tra xem có thứ gì để đọc bằng Serial1.available ()
- Chúng ta sẽ nhận được khung là 54 byte.
- Kiểm tra 0x7E là byte bắt đầu.
- Dữ liệu rung bao gồm giá trị RMS cho 3 trục, giá trị nhỏ nhất cho 3 trục, giá trị lớn nhất cho 3 trục.
- nhiệt độ và giá trị pin sẽ chứa 2 byte dữ liệu
- lấy tên, loại cảm biến, phiên bản cảm biến sẽ chứa 1 byte dữ liệu và có thể lấy từ đó địa chỉ tương ứng
if (Serial2.available ()) {Serial.println ("Đọc nối tiếp"); data [0] = Serial2.read (); độ trễ (k); if (data [0] == 0x7E) {Serial.println ("Có gói tin"); while (! serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.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] == 0x08) //////// đảm bảo loại cảm biến là đúng {rms_x = ((uint16_t) (((data [24]) << 16) + ((data [25]) << 8) + (data [26])) / 100); rms_y = ((uint16_t) (((data [27]) << 16) + ((data [28]) << 8) + (data [29])) / 100); rms_z = ((uint16_t) (((dữ liệu [30]) << 16) + ((dữ liệu [31]) << 8) + (dữ liệu [32])) / 100); int16_t max_x = ((uint16_t) (((data [33]) << 16) + ((data [34]) << 8) + (data [35])) / 100); int16_t max_y = ((uint16_t) (((data [36]) << 16) + ((data [37]) << 8) + (data [38])) / 100); int16_t max_z = ((uint16_t) (((data [39]) << 16) + ((data [40]) << 8) + (data [41])) / 100);
int16_t min_x = ((uint16_t) (((data [42]) << 16) + ((data [43]) << 8) + (data [44])) / 100); int16_t min_y = ((uint16_t) (((data [45]) << 16) + ((data [46]) << 8) + (data [47])) / 100); int16_t min_z = ((uint16_t) (((data [48]) << 16) + ((data [49]) << 8) + (data [50])) / 100);
cTemp = (((((dữ liệu [51]) * 256) + dữ liệu [52])); float pin = ((data [18] * 256) + data [19]); điện áp = 0,00322 * pin; Serial.print ("Số cảm biến"); Serial.println (data [16]); senseNumber = 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 ("RMS rung trong trục X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS rung theo trục Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS rung theo trục Z:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print ("Dao động tối thiểu theo trục X:");
Serial.print (min_x); Serial.println ("mg"); Serial.print ("Dao động tối thiểu theo trục Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Dao động tối thiểu theo trục Z:"); Serial.print (min_z); Serial.println ("mg");
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 <54; i ++) {Serial.print (data ); Serial.print (","); trì hoãn (1); }}}}
Bước 6: Kết nối với AWS
- Bao gồm các tệp tiêu đề AWS_IOT.h, WiFi.h để thiết lập kết nối với trung tâm AWSIoT
- Nhập Địa chỉ máy chủ của bạn, Id khách hàng sẽ là tên chính sách và tên chủ đề sẽ là tên thứ
// ********* Thông tin đăng nhập AWS ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Tạo một biến char để lưu trữ JSON của bạn, trong trường hợp này, chúng tôi đã tạo một định dạng để lưu trữ JSON
const char * format = "{" SensorId / ": \"% d / ", \" messageId / ":% d, \" rmsX / ":% d, \" rmsY / ":% d, \" rmsZ / ":% d, \" cTemp / ":% d, / "tage \":%. 2f} ";
Tạo một phiên bản của lớp AWS_IOT
AWS_IOT esp; // Phiên bản của lớp AWS_IOT
Bây giờ kết nối với trung tâm AWSIoT bằng phương pháp sau
void renectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Đã kết nối với AWS"); chậm trễ (1000);
if (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("Đăng ký Thành công"); } else {Serial.println ("Đăng ký Không thành công, Kiểm tra Tên Điều và Chứng chỉ"); trong khi (1); }} else {Serial.println ("Kết nối AWS không thành công, Kiểm tra Địa chỉ HOST"); trong khi (1); }
chậm trễ (2000);
}
công bố dữ liệu cảm biến sau mỗi 1 phút
if (tick> = 60) // xuất bản lên chủ đề sau mỗi 5 giây {tick = 0; tải trọng char [PAYLOAD_MAX_LEN]; snprintf (tải trọng, PAYLOAD_MAX_LEN, định dạng, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, điện áp); Serial.println (tải trọng); if (hornbill.publish (TOPIC_NAME, payload) == 0) {Serial.print ("Xuất bản Thông báo:"); Serial.println (tải trọng); } else {Serial.println ("Xuất bản không thành công"); }} vTaskDelay (1000 / portTICK_RATE_MS); đánh dấu ++;
Bước 7: Trực quan hóa dữ liệu trong AWS
- Đăng nhập vào tài khoản AWS của bạn.
- trên góc trái của thanh công cụ, bạn sẽ tìm thấy tab Dịch vụ
- Nhấp vào tab này và trong tiêu đề Internet of Things, chọn IoT Core.
- Chọn QoS và không. tin nhắn cho người đăng ký. Nhập tên chủ đề.
Bước 8: Mã tổng thể
Bạn có thể tìm thấy mã tổng thể trên Kho lưu trữ Github này.
Tín dụng
- Arduino Json
- Cảm biến nhiệt độ và độ ẩm không dây
- ESP32
- PubSubClient
Đề xuất:
Bắt đầu với cảm biến nhiệt độ và rung không dây phạm vi dài: 7 bước
Bắt đầu với cảm biến nhiệt độ và rung động không dây phạm vi dài: Đôi khi rung động là nguyên nhân gây ra các vấn đề nghiêm trọng trong nhiều ứng dụng. Từ trục máy và ổ trục đến hiệu suất của đĩa cứng, rung động gây ra hư hỏng máy, thay thế sớm, hiệu suất thấp và gây ảnh hưởng lớn đến độ chính xác. Giám sát
Cảm biến / Máy đo nhiệt độ động cơ với đầu dò không dây cho xe cổ: 7 bước
Cảm biến / Máy đo nhiệt độ động cơ với đầu dò không dây cho xe cổ: Tôi đã làm đầu dò này cho Çipitak đáng yêu của mình. Một chiếc ô tô fiat 126 với động cơ 2 xi-lanh làm mát bằng không khí dưới nắp ca-pô sau .Çipitak không có đồng hồ đo nhiệt độ cho biết động cơ nóng đến mức nào nên tôi nghĩ rằng một cảm biến sẽ hữu ích
Giao diện Arduino với cảm biến siêu âm và cảm biến nhiệt độ không tiếp xúc: 8 bước
Giao diện Arduino với cảm biến siêu âm và cảm biến nhiệt độ không tiếp xúc: Ngày nay, các nhà sản xuất, nhà phát triển đang ưa thích Arduino để phát triển nhanh chóng việc tạo mẫu của các dự án. Arduino là một nền tảng điện tử mã nguồn mở dựa trên phần cứng và phần mềm dễ sử dụng. Arduino có cộng đồng người dùng rất tốt. Trong chương trình này
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
Cảm biến độ ẩm và nhiệt độ không dây tầm xa IOT với nút đỏ: 27 bước
Cảm biến độ ẩm và nhiệt độ không dây tầm xa IOT với nút đỏ: Giới thiệu cảm biến nhiệt độ độ ẩm không dây tầm xa của NCD, tự hào với phạm vi lên đến 28 Mile bằng cách sử dụng kiến trúc mạng lưới không dây. Việc kết hợp cảm biến nhiệt độ-độ ẩm Honeywell HIH9130 truyền nhiệt độ chính xác cao