Kazalo:
- 1. korak: Nastavitev računa AWS
- 2. korak: Specifikacije strojne in programske opreme
- 3. korak: Brezžični senzorji vibracij in temperature
- 4. korak: Vdelana programska oprema ESP32 AWS
- 5. korak: Pridobite podatke senzorja iz brezžičnega senzorja vibracij in temperature
- 6. korak: Povezovanje z AWS
- 7. korak: Vizualizacija podatkov v AWS
- 8. korak: Splošna koda
Video: Začetek uporabe AWS IoT z brezžičnim temperaturnim senzorjem z uporabo MQTT: 8 korakov
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:05
V prejšnjih Instructables smo šli skozi različne platforme v oblaku, kot so Azure, Ubidots, ThingSpeak, Losant itd. Uporabljali smo protokol MQTT za pošiljanje senzorskih podatkov v oblak na skoraj vseh platformah v oblaku. Za več informacij o MQTT, njegovih prednostih in prednostih pred protokolom HTTP si oglejte ta navodila.
V tem navodilu bomo povečali še eno in najbolj znano oblačno platformo Amazon Web Services. Mnogi med vami so morda seznanjeni z AWS, imenovano Amazon Web Services, in funkcijami v oblaku, ki jih ponuja AWS. Že vrsto let je jedro spletnega razvoja. Z naraščajočim obsegom aplikacij interneta stvari je AWS prišel do rešitve AWSIoT. AWSIoT je zanesljiva rešitev za gostovanje naših IoT aplikacij.
Sledite tem navodilom:
- Za aplikacijo IoT boste lahko nastavili račun AWS
- ESP32 boste lahko povezali z jedrom AWS IoT
- Pošiljajte in prejemajte sporočila s protokolom MQTT in
- Vizualizirajte poslane podatke v AWS
1. korak: Nastavitev računa AWS
Nastavitev računa AWS je dokaj enostavna. Naložiti morate le nekaj potrdil, temu priložiti pravilnike, registrirati napravo in začeti prejemati podatkovna sporočila senzorja v AWS.
Če želite nastaviti račun AWS, sledite tej vadnici.
2. korak: Specifikacije strojne in programske opreme
Specifikacije programske opreme
Račun AWS
Specifikacije strojne opreme
- ESP32
- Brezžični senzor temperature in vibracij
- Sprejemnik Zigmo Gateway
3. korak: Brezžični senzorji vibracij in temperature
To je brezžični senzor vibracij in temperature industrijskega IoT na dolge razdalje, ki se ponaša z do 2 miljami dosega z uporabo brezžične mrežne arhitekture. Ta senzor z 16-bitnim senzorjem vibracij in temperature prenaša zelo natančne podatke o vibracijah v intervalih, ki jih določi uporabnik. Ima naslednje lastnosti:
- 3-osni vibracijski senzor industrijske stopnje z razponom ± 32 g
- Izračuna RMS, MAX in MIN g vibracij
- Odstranjevanje hrupa z nizkoprepustnim filtrom
- Frekvenčni razpon (pasovna širina) do 12, 800 Hz
- Hitrost vzorčenja do 25, 600Hz
- Šifrirana komunikacija z 2 miljskim brezžičnim dosegom
- Delovno temperaturno območje -40 do +85 ° C
- Stensko ali magnetno ohišje z oceno IP65 Primer programske opreme za Visual Studio in LabVIEW
- Senzor vibracij z možnostjo zunanje sonde
- Do 500.000 prenosov iz 4 baterij AA Na voljo je veliko možnosti prehoda in modema
4. korak: Vdelana programska oprema ESP32 AWS
Če se želite povezati z AWS in začeti pošiljati podatke, sledite tem korakom
- Prenesite knjižnico AWS iz naslednjega skladišča Github
- klonirajte repo in datoteko AWS_IOT postavite v mapo knjižnice imenika Arduino
git clone
Zdaj pa pojdimo skozi kodo:
- V tej aplikaciji smo za shranjevanje poverilnic WiFi in pomikanje po nastavitvah IP uporabili zaporni portal. Za podroben uvod na portalu za ujetnike si oglejte naslednja navodila.
- Zaporni portal nam daje možnost izbire med statičnimi in DHCP nastavitvami. Samo vnesite poverilnice, kot so statični IP, maska podomrežja, prehod in brezžični senzorski prehod bo konfiguriran na tem IP -ju.
- Gostuje spletna stran, na kateri je seznam z razpoložljivimi omrežji WiFi in RSSI. Izberite omrežje WiFi in geslo ter vnesite submit. Poverilnice bodo shranjene v EEPROM, nastavitev IP pa v SPIFFS. Več o tem najdete v tem navodilu.
5. korak: Pridobite podatke senzorja iz brezžičnega senzorja vibracij in temperature
Od brezžičnih senzorjev temperature in vibracij dobimo 54-bajtni okvir. S tem okvirjem se manipulira, da dobimo podatke o dejanski temperaturi in vibracijah.
ESP32 ima za serijsko uporabo na voljo tri UART
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
in 3 serijska vrata strojne opreme
- Serijski
- Serijski 1
- Serijski 2
Najprej inicializirajte naslovno datoteko Hardware Serial. Tukaj bomo uporabljali tudi RX2 in TX2. Zatiči GPIO 16 in GPIO 17 na plošči ESP32 za pridobivanje serijskih podatkov.
#vključi
# definiraj RXD2 16 # določi TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // zatiči 16 rx2, 17 tx2, 19200 bps, 8 bitov brez parnosti 1 stop bit
Naslednji koraki vas bodo vodili naprej do resničnih vrednosti senzorja
- Ustvarite spremenljivke za shranjevanje temperature, vlažnosti, baterije in drugih vrednosti senzorjev
- Nastavite Rx, tx pin, baud rate in paritetne bite za serijsko opremo strojne opreme
- Najprej preverite, ali je mogoče kaj prebrati s pomočjo Serial1.available ()
- Dobili bomo okvir 54 bajtov.
- Preverite, ali je 0x7E začetni bajt.
- Podatki o vibracijah so sestavljeni iz vrednosti RMS za 3 os, minimalne vrednosti za 3 osi, največje vrednosti za 3 osi.
- temperatura in vrednosti baterije bodo vsebovale 2 bajta podatkov
- dobite ime senzorja, tip, različica senzorja bo vsebovala 1 bajt podatkov in od tam lahko dobite ustrezen naslov
če (Serial2.available ()) {Serial.println ("Preberi serijsko številko"); podatki [0] = Serial2.read (); zamuda (k); if (podatki [0] == 0x7E) {Serial.println ("Dobil paket"); medtem ko (! Serial2.available ()); za (i = 1; i <55; i ++) {podatki = Serial2.read (); zamuda (1); } if (data [15] == 0x7F) ///////, da preverite, ali so sprejemljivi podatki pravilni {if (data [22] == 0x08) //////// se prepričajte, da je tip senzorja je pravilno {rms_x = ((uint16_t) (((podatki [24]) << 16) + ((podatki [25]) << 8) + (podatki [26]))/100); rms_y = ((uint16_t) (((podatki [27]) << 16) + ((podatki [28]) << 8) + (podatki [29]))/100); rms_z = ((uint16_t) (((podatki [30]) << 16) + ((podatki [31]) << 8) + (podatki [32]))/100); int16_t max_x = ((uint16_t) (((podatki [33]) << 16) + ((podatki [34]) << 8) + (podatki [35]))/100); int16_t max_y = ((uint16_t) (((podatki [36]) << 16) + ((podatki [37]) << 8) + (podatki [38]))/100); int16_t max_z = ((uint16_t) (((podatki [39]) << 16) + ((podatki [40]) << 8) + (podatki [41]))/100);
int16_t min_x = ((uint16_t) (((podatki [42]) << 16) + ((podatki [43]) << 8) + (podatki [44]))/100); int16_t min_y = ((uint16_t) (((podatki [45]) << 16) + ((podatki [46]) << 8) + (podatki [47]))/100); int16_t min_z = ((uint16_t) (((podatki [48]) << 16) + ((podatki [49]) << 8) + (podatki [50]))/100);
cTemp = ((((podatki [51]) * 256) + podatki [52])); plavajoča baterija = ((podatki [18] * 256) + podatki [19]); napetost = 0,00322 * baterija; Serial.print ("Številka senzorja"); Serial.println (podatki [16]); senseNumber = podatki [16]; Serial.print ("Vrsta senzorja"); Serial.println (podatki [22]); Serial.print ("Različica vdelane programske opreme"); Serial.println (podatki [17]); Serial.print ("Temperatura v Celzijusi:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS vibracije na osi X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS vibracije na osi Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS vibracije na osi Z:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print ("Najmanjše vibracije na osi X:");
Serial.print (min_x); Serial.println ("mg"); Serial.print ("Najmanjše vibracije na osi Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Najmanjše vibracije na osi Z:"); Serial.print (min_z); Serial.println ("mg");
Serial.print ("vrednost ADC:");
Serial.println (baterija); Serial.print ("Napetost akumulatorja:"); Serial.print (napetost); Serial.println ("\ n"); if (napetost <1) {Serial.println ("Čas za zamenjavo baterije"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); zamuda (1); }}}}
6. korak: Povezovanje z AWS
- Vključite datoteke glave AWS_IOT.h, WiFi.h za vzpostavitev povezave z zvezdiščem AWSIoT
- Vnesite naslov gostitelja, ID odjemalca, ki bo ime pravilnika, in ime teme, ki bo ime stvari
// ********* poverilnice AWS ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Ustvarite spremenljivko char za shranjevanje vašega JSON, v tem primeru smo ustvarili obliko za shranjevanje JSON
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" napetost / ":%. 2f}";
Ustvarite primerek razreda AWS_IOT
AWS_IOT esp; // Primerek razreda AWS_IOT
Zdaj se povežite z zvezdiščem AWSIoT na naslednji način
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Povezano z AWS"); zamuda (1000);
if (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("Naročite se uspešno"); } else {Serial.println ("Naročnina ni uspela, preverite ime stvari in potrdila"); medtem ko (1); }} else {Serial.println ("Povezava AWS ni uspela, preverite naslov HOST"); medtem ko (1); }
zamuda (2000);
}
objavi podatke senzorja po vsaki 1 minuti
if (tick> = 60) // objavi v temi vsakih 5 sekund {tick = 0; obremenitev char [PAYLOAD_MAX_LEN]; snprintf (koristna obremenitev, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, napetost); Serial.println (koristna obremenitev); if (hornbill.publish (TOPIC_NAME, koristna obremenitev) == 0) {Serial.print ("Objavi sporočilo:"); Serial.println (koristna obremenitev); } else {Serial.println ("Objava ni uspela"); }} vTaskDelay (1000 / portTICK_RATE_MS); označite ++;
7. korak: Vizualizacija podatkov v AWS
- Prijavite se v svoj račun AWS.
- v levem kotu orodne vrstice boste našli zavihek Storitve
- Kliknite ta zavihek in pod naslovom Internet stvari izberite IoT Core.
- Izberite QoS in ne. sporočil naročnikom. Vnesite ime teme.
8. korak: Splošna koda
Celotno kodo najdete v tem skladišču Github.
Krediti
- Arduino Json
- Brezžični senzorji temperature in vlažnosti
- ESP32
- PubSubClient
Priporočena:
Sestavite napravo Apple HomeKit s temperaturnim senzorjem z uporabo ESP8266 in BME280: 10 korakov
Sestavite napravo Apple HomeKit s temperaturnim senzorjem z uporabo ESP8266 in BME280: V današnjem navodilu bomo izdelovali nizkocenovne senzorje temperature, vlažnosti in vlage na podlagi senzorjev temperature/vlažnosti AOSONG AM2302/DHT22 ali BME280, senzorja vlage YL-69 in platformo ESP8266/Nodemcu. In za prikaz
Arduino vmesnik z ultrazvočnim senzorjem in brezkontaktnim temperaturnim senzorjem: 8 korakov
Arduino povezovanje z ultrazvočnim senzorjem in brezkontaktnim temperaturnim senzorjem: Danes ustvarjalci in razvijalci raje uporabljajo Arduino za hiter razvoj prototipov projektov. Arduino je odprtokodna elektronska platforma, ki temelji na enostavni strojni in programski opremi. Arduino ima zelo dobro skupnost uporabnikov. V tem projektu
Začetek uporabe Amazon AWS IoT in ESP8266: 21 korakov
Začetek uporabe Amazon AWS IoT in ESP8266: Ta projekt vam prikazuje, kako vzeti modul ESP8266 in ga z OS Mongoose povezati neposredno z AWS IOT. Mongoose OS je odprtokodni operacijski sistem za mikrokrmilnike, ki poudarja povezljivost v oblaku. Razvil jo je dublinski Cesanta
Sestavite napravo Apple HomeKit s temperaturnim senzorjem (DHT22) z uporabo RaspberryPI in DHT22: 11 korakov
Zgradite napravo Apple HomeKit Temperature Sensor (DHT22) z uporabo RaspberryPI in DHT22: iskal sem nizkocenovni senzor temperature / vlažnosti, ki bi ga lahko uporabil za spremljanje dogajanja v mojem plaznem prostoru, saj sem ugotovil, da je bilo to pomlad zelo mokro , in je bilo veliko vlage. Zato sem iskal senzor po ugodnih cenah, ki bi ga lahko
Analogni vhod IoT - Začetek uporabe IoT: 8 korakov
Analogni vhod IoT - Začetek uporabe IoT: Razumevanje analognih vhodov je ključni del razumevanja delovanja stvari okoli nas, večina, če ne vsi senzorji, so analogni senzorji (včasih se ti senzorji pretvorijo v digitalne). Za razliko od digitalnih vhodov, ki so lahko samo vklopljeni ali izklopljeni, analogni vhod