Talaan ng mga Nilalaman:
- Hakbang 1: Pag-set up ng AWS Account
- Hakbang 2: Mga Pagtukoy sa Hardware at Software
- Hakbang 3: Wireless Vibration at Mga Sensor ng Temperatura
- Hakbang 4: ESP32 AWS Firmware
- Hakbang 5: Pagkuha ng Data ng Sensor Mula sa Wireless Vibration at Temperature Sensor
- Hakbang 6: Kumokonekta sa AWS
- Hakbang 7: Pagpapakita ng Data sa AWS
- Hakbang 8: Pangkalahatang Code
Video: Pagsisimula Sa AWS IoT Sa Wireless Temperature Sensor Gamit ang MQTT: 8 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:13
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
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
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
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
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- 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
- 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
- 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:
Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: 4 na Hakbang
Subukan ang Bare Arduino, Gamit ang Software ng Laro Gamit ang Capacitive Input at LED: " Push-It " Interactive na laro gamit ang isang hubad na Arduino board, walang mga panlabas na bahagi o mga kable na kinakailangan (gumagamit ng isang capacitive 'touch' input). Ipinapakita sa itaas, ipinapakita ang pagtakbo nito sa dalawang magkakaibang board. Push-Mayroon itong dalawang layunin. Upang mabilis na maipakita / v
Internet Clock: Ipakita ang Petsa at Oras Gamit ang isang OLED Gamit ang ESP8266 NodeMCU Sa NTP Protocol: 6 na Hakbang
Internet Clock: Display Date and Time With an OLED Gamit ang ESP8266 NodeMCU With NTP Protocol: Kumusta mga tao sa mga itinuturo na ito na magtatayo kami ng isang orasan sa internet na magkakaroon ng oras mula sa internet kaya't ang proyektong ito ay hindi mangangailangan ng anumang RTC upang tumakbo, kakailanganin lamang nito ang isang nagtatrabaho koneksyon sa internet At para sa proyektong ito kailangan mo ng isang esp8266 na magkakaroon ng
Wireless Remote Gamit ang 2.4Ghz NRF24L01 Module Sa Arduino - Nrf24l01 4 Channel / 6 Channel Transmitter Receiver para sa Quadcopter - Rc Helicopter - Rc Plane Gamit ang Arduino: 5 Hakbang (na may Mga Larawan)
Wireless Remote Gamit ang 2.4Ghz NRF24L01 Module Sa Arduino | Nrf24l01 4 Channel / 6 Channel Transmitter Receiver para sa Quadcopter | Rc Helicopter | Rc Plane Gamit ang Arduino: Upang mapatakbo ang isang Rc car | Quadcopter | Drone | RC eroplano | RC boat, palagi kaming nangangailangan ng isang reciever at transmitter, kumbaga para sa RC QUADCOPTER kailangan namin ng isang 6 channel transmitter at receiver at ang uri ng TX at RX ay masyadong magastos, kaya gagawa kami ng isa sa aming
Lumilikha ng Mga Alerto sa Email ng NCD Wireless Temperature at Humidity Sensor Gamit ang Node-Red: 22 Hakbang
Lumilikha ng Mga Alerto sa Email ng NCD Wireless Temperature at Humidity Sensor Gamit ang Node-Red: Gumagamit kami dito ng sensor ng Temperatura at Humidity ng NCD, ngunit ang mga hakbang ay mananatiling pantay para sa alinman sa ncd na produkto, kaya't kung mayroon kang iba pang mga ncd wireless sensor, maranasang libre sa obserbahan sa tabi bukod. Sa pamamagitan ng paghinto ng teksto na ito, kailangan mong
Kontrolin ang Arduino Gamit ang Smartphone Sa pamamagitan ng USB Gamit ang Blynk App: 7 Mga Hakbang (na may Mga Larawan)
Kontrolin ang Arduino Gamit ang Smartphone Sa Pamamagitan ng USB Sa Blynk App: Sa tutorial na ito, matututunan namin kung paano gamitin ang Blynk app at Arduino upang makontrol ang lampara, ang kumbinasyon ay sa pamamagitan ng USB serial port. Ang layunin ng pagtuturo na ito ay upang ipakita ang pinakasimpleng solusyon sa malayo-pagkontrol ng iyong Arduino o c