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
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
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