Kazalo:

Začetek uporabe AWS IoT z brezžičnim temperaturnim senzorjem z uporabo MQTT: 8 korakov
Začetek uporabe AWS IoT z brezžičnim temperaturnim senzorjem z uporabo MQTT: 8 korakov

Video: Začetek uporabe AWS IoT z brezžičnim temperaturnim senzorjem z uporabo MQTT: 8 korakov

Video: Začetek uporabe AWS IoT z brezžičnim temperaturnim senzorjem z uporabo MQTT: 8 korakov
Video: ВСЯ НОЧЬ С ПОЛТЕРГЕЙСТОМ В ЖИЛОМ ДОМЕ, я заснял жуткую активность. 2024, Julij
Anonim
Začetek uporabe AWS IoT z brezžičnim temperaturnim senzorjem z uporabo MQTT
Začetek uporabe AWS IoT z brezžičnim temperaturnim senzorjem z uporabo MQTT

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 strojne in programske opreme
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

Brezžični senzorji vibracij in temperature
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

Pridobivanje podatkov senzorja iz brezžičnega senzorja vibracij in temperature
Pridobivanje podatkov senzorja iz brezžičnega senzorja vibracij in temperature
Pridobivanje podatkov senzorja iz brezžičnega senzorja vibracij in temperature
Pridobivanje podatkov 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

  1. RX0 GPIO 3, TX0 GPIO 1
  2. RX1 GPIO9, TX1 GPIO 10
  3. 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

Povezovanje z AWS
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

Vizualizacija podatkov v AWS
Vizualizacija podatkov v AWS
Vizualizacija podatkov v AWS
Vizualizacija podatkov v AWS
Vizualizacija podatkov v AWS
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: