Talaan ng mga Nilalaman:

Pagsisimula Sa AWS IoT Sa Wireless Temperature Sensor Gamit ang MQTT: 8 Hakbang
Pagsisimula Sa AWS IoT Sa Wireless Temperature Sensor Gamit ang MQTT: 8 Hakbang

Video: Pagsisimula Sa AWS IoT Sa Wireless Temperature Sensor Gamit ang MQTT: 8 Hakbang

Video: Pagsisimula Sa AWS IoT Sa Wireless Temperature Sensor Gamit ang MQTT: 8 Hakbang
Video: Turn ON and OFF LED using mobile App using Bluetooth on ESP32 board 2024, Nobyembre
Anonim
Pagsisimula Sa AWS IoT Sa Wireless Temperature Sensor Gamit ang MQTT
Pagsisimula Sa AWS IoT Sa Wireless Temperature Sensor Gamit ang MQTT

Sa mga naunang Instructable, dumaan kami sa iba't ibang mga platform ng ulap tulad ng Azure, Ubidots, ThingSpeak, Losant atbp. Ginagamit namin ang MQTT protocol para sa pagpapadala ng data ng sensor sa cloud sa halos lahat ng cloud platform. Para sa karagdagang impormasyon sa MQTT, ang mga pakinabang at benepisyo nito sa paglipas ng HTTP protocol maaari kang sumangguni sa itinuturo na ito.

Sa itinuturo na ito, mag-zoom kami sa isa pa at pinaka pamilyar na cloud platform na Amazon Web Services. Marami sa inyo ay maaaring pamilyar sa AWS aka Amazon Web Services at ang ulap na pag-andar na ibinigay ng AWS. Ito ang naging core ng pag-unlad ng web sa loob ng maraming taon. Sa pagtaas ng sukat ng mga aplikasyon ng IoT, ang AWS ay nakakuha ng solusyon ng AWSIoT. Ang AWSIoT ay isang maaasahang solusyon para sa pagho-host ng aming mga aplikasyon ng IoT.

Sa pamamagitan ng pagsunod sa itinuturo na ito:

  • Magagawa mong i-set up ang AWS account para sa iyong IoT application
  • Magagawa mong ikonekta ang ESP32 sa AWS IoT core
  • Magpadala at tumanggap ng mga mensahe gamit ang MQTT at HTTP protocol
  • Mailarawan ang ipinadala na data sa AWS

Hakbang 1: Pag-set up ng AWS Account

Ang pag-set up ng AWS account ay medyo madali. Kailangan mo lamang mag-upload ng isang pares ng mga sertipiko, maglakip ng mga patakaran dito, Irehistro ang aparato at simulang matanggap ang mga mensahe ng data ng sensor sa AWS.

Upang mai-set up ang AWS account sundin ang tutorial na ito.

Hakbang 2: Mga Pagtukoy sa Hardware at Software

Mga Pagtukoy sa Hardware at Software
Mga Pagtukoy sa Hardware at Software

Pagtukoy ng Software

Isang AWS account

Pagtukoy sa Hardware

  • ESP32
  • Wireless Temperature at Vibration Sensor
  • Tumatanggap ng Zigmo Gateway

Hakbang 3: Wireless Vibration at Mga Sensor ng Temperatura

Mga Wireless Vibration at Temperatura Sensor
Mga Wireless Vibration at Temperatura Sensor

Ito ay isang Long Range Industrial IoT wireless na panginginig ng boses at temperatura sensor, ipinagmamalaki hanggang sa isang saklaw ng 2 Mile gamit ang isang wireless mesh networking architecture. Isinasama ang isang 16-bit na Panginginig at Temperatura sensor, ang sensor na ito ay nagpapadala ng lubos na tumpak na data ng panginginig ng boses sa mga agwat na tinukoy ng gumagamit. Mayroon itong mga sumusunod na tampok:

  • Industrial grade 3-axis Vibration Sensor na may ± 32g Saklaw
  • Kinakalkula ang RMS, MAX, at MIN g Vibration
  • Pag-aalis ng Ingay gamit ang Low-pass Filter
  • Saklaw ng Frequency (Bandwidth) hanggang 12, 800 Hz
  • Sample Rate ng hanggang sa 25, 600Hz
  • Naka-encrypt na Komunikasyon sa 2 Mile Wireless Range
  • Saklaw na Temperatura ng Operating -40 hanggang +85 ° C
  • Wall-Mounted o Magnet Mounted IP65 Rated EnclosureExample Software para sa Visual Studio at LabVIEW
  • Vibration Sensor na may External Probe Option
  • Hanggang sa 500, 000 Mga Pagpapadala mula sa 4 na Mga Baterya ng AA Maraming magagamit na Mga Pagpipilian sa Gateway at Modem

Hakbang 4: ESP32 AWS Firmware

Upang kumonekta sa AWS at upang simulang ipadala ang data ay dumaan sa mga sumusunod na hakbang

  • I-download ang AWS library mula sa sumusunod na repository ng Github
  • i-clone ang repo at ilagay ang AWS_IOT file sa folder ng library ng direktoryo ng Arduino

git clone

Ngayon dumaan tayo sa code:

  • Sa application na ito, gumawa kami ng isang bihag na portal upang mai-save ang mga kredensyal ng WiFi at upang mag-hover sa pamamagitan ng mga setting ng IP. Para sa detalyadong pagpapakilala sa bihag na portal, maaari kang dumaan sa sumusunod na itinuro.
  • Binibigyan kami ng portal ng bihag na pagpipilian upang pumili sa pagitan ng mga setting ng Static at DHCP. Ipasok lamang ang mga kredensyal tulad ng Static IP, Subnet Mask, gateway at ang Wireless Sensor Gateway ay mako-configure sa IP na iyon.
  • Ang isang webpage ay nai-host kung saan ang isang listahan na nagpapakita ng mga magagamit na mga network ng WiFi at doon RSSI. Piliin ang WiFi network at password at ipasok ang isumite. Ang mga kredensyal ay mai-save sa EEPROM at ang setting ng IP ay nai-save sa SPIFFS. Higit pa dito ay matatagpuan sa itinuturo na ito.

Hakbang 5: Pagkuha ng Data ng Sensor Mula sa Wireless Vibration at Temperature Sensor

Pagkuha ng Data ng Sensor Mula sa Wireless Vibration at Temperature Sensor
Pagkuha ng Data ng Sensor Mula sa Wireless Vibration at Temperature Sensor
Pagkuha ng Data ng Sensor Mula sa Wireless Vibration at Temperature Sensor
Pagkuha ng Data ng Sensor Mula sa Wireless Vibration at Temperature Sensor

Nakakakuha kami ng isang 54-byte na frame mula sa Wireless Temperature at Vibration Sensors. Ang frame na ito ay manipulahin upang makuha ang aktwal na data ng data at panginginig ng boses.

Ang ESP32 ay mayroong tatlong mga UART na magagamit para sa paggamit ng Serial

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. RX2 GPIO 16, TX2 GPIO 17

at 3 hardware Serial port

  • Serial
  • Serial1
  • Serial2

Una, pasimulan ang Hardware Serial header file. Dito ay gagamitin namin ang RX2 at TX2 aka. Ang GPIO 16 at GPIO 17 na mga pin ng board ng ESP32 upang makuha ang serial data.

# isama

# tukuyin ang RXD2 16 # tukuyin ang TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // pin 16 rx2, 17 tx2, 19200 bps, 8 bits no parity 1 stop bit

Ang mga sumusunod na hakbang ay hahantong sa iyo pa upang makuha ang totoong mga halaga ng sensor

  • Lumikha ng mga variable para sa pagtatago ng temperatura, halumigmig, baterya, at iba pang mga halaga ng sensor
  • Itakda ang Rx, tx pin, baud rate at parity bits para sa serial serial
  • Una, suriin na may isang bagay na mababasa gamit ang Serial1.available ()
  • Makukuha namin ang frame ng 54 bytes.
  • Suriin ang 0x7E na nagsisimula byte.
  • Ang data ng panginginig ay binubuo ng halaga ng RMS para sa 3 axis, mga halagang min para sa 3 axis, mga max na halaga para sa 3 axis.
  • ang mga halaga ng temperatura at baterya ay maglalaman ng 2 bytes ng data
  • kunin ang pangalan ng sensor, uri, bersyon ng sensor ay maglalaman ng 1 byte ng data at maaaring makuha mula doon sa kani-kanilang address

kung (Serial2.available ()) {Serial.println ("Read Serial"); data [0] = Serial2.read (); antala (k); kung (data [0] == 0x7E) {Serial.println ("Got Packet"); habang (! Serial2.available ()); para sa (i = 1; i <55; i ++) {data = Serial2.read (); antala (1); } kung (data [15] == 0x7F) /////// upang suriin kung tama ang recive data {kung (data [22] == 0x08) //////// siguraduhin na ang uri ng sensor wasto {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) (((data [30]) << 16) + ((data [31]) << 8) + (data [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 = ((((data [51]) * 256) + data [52])); float baterya = ((data [18] * 256) + data [19]); boltahe = 0.00322 * baterya; Serial.print ("Sensor Number"); Serial.println (data [16]); senseNumber = data [16]; Serial.print ("Sensor Type"); Serial.println (data [22]); Serial.print ("Bersyon ng Firmware"); Serial.println (data [17]); Serial.print ("Temperatura sa Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS panginginig sa X-axis:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS panginginig sa Y-axis:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("Panginginig ng RMS sa Z-axis:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Min na panginginig sa X-axis:");

Serial.print (min_x); Serial.println ("mg"); Serial.print ("Min na panginginig sa Y-axis:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Min na panginginig sa Z-axis:"); Serial.print (min_z); Serial.println ("mg");

Serial.print ("Halaga ng ADC:");

Serial.println (baterya); Serial.print ("Boltahe ng Baterya:"); Serial.print (boltahe); Serial.println ("\ n"); kung (boltahe <1) {Serial.println ("Oras upang Palitan Ang Baterya"); }}} iba pa {para sa (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); antala (1); }}}}

Hakbang 6: Kumokonekta sa AWS

Kumokonekta sa AWS
Kumokonekta sa AWS
  • Isama ang mga AWS_IOT.h, mga file ng header ng WiFi.h upang mag-set up ng isang koneksyon sa AWSIoT hub
  • Ipasok ang iyong Host Address, Client Id na magiging pangalan ng patakaran, at pangalan ng paksa na magiging pangalan ng bagay

// ********* Mga Kredensyang AWS ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";

Lumikha ng isang variable ng char upang maiimbak ang iyong JSON, sa kasong ito, gumawa kami ng isang format upang maiimbak ang JSON

Const char * format = "{" SensorId / ": \"% d / ", \" messageId / ":% d, \" rmsX / ":% d, \" rmsY / ":% d, \" rmsZ / ":% d, \" cTemp / ":% d, \" voltage / ":%. 2f}";

Lumikha ng isang halimbawa ng klase ng AWS_IOT

AWS_IOT esp; // Instance ng klase ng AWS_IOT

Ngayon kumonekta sa AWSIoT hub gamit ang sumusunod na pamamaraan

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Nakakonekta sa AWS"); pagkaantala (1000);

kung (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Mag-subscribe Matagumpay"); } iba pa {Serial.println ("Nabigo ang Pag-subscribe, Suriin ang Pangalan ng Mga Bagay at Mga Sertipiko"); habang (1); }} iba pa {Serial.println ("Nabigo ang koneksyon sa AWS, Suriin ang HOST Address"); habang (1); }

pagkaantala (2000);

}

i-publish ang data ng sensor pagkatapos ng bawat 1 minuto

kung (tick> = 60) // i-publish sa paksa bawat 5seconds {tick = 0; char payload [PAYLOAD_MAX_LEN]; snprintf (payload, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, boltahe); Serial.println (payload); kung (hornbill.publish (TOPIC_NAME, payload) == 0) {Serial.print ("I-publish ang Mensahe:"); Serial.println (payload); } iba pa {Serial.println ("Nabigo ang pag-publish"); }} vTaskDelay (1000 / portTICK_RATE_MS); tik ++;

Hakbang 7: Pagpapakita ng Data sa AWS

Ipinapakita ang Data sa AWS
Ipinapakita ang Data sa AWS
Ipinapakita ang Data sa AWS
Ipinapakita ang Data sa AWS
Ipinapakita ang Data sa AWS
Ipinapakita ang Data sa AWS
  • Mag-login sa iyong AWS account.
  • sa kaliwang sulok ng toolbar, mahahanap mo ang tab na Mga Serbisyo
  • Mag-click sa tab na ito at sa ilalim ng heading ng Internet of Things piliin ang IoT Core.
  • Piliin ang QoS at hindi. ng mga mensahe sa mga tagasuskribi. Ipasok ang pangalan ng paksa.

Hakbang 8: Pangkalahatang Code

Mahahanap mo ang pangkalahatang code sa Github Repository na ito.

Mga Kredito

  • Arduino Json
  • Wireless Sensors ng Temperatura at Humidity
  • ESP32
  • PubSubClient

Inirerekumendang: