AWS IoT alustamine traadita temperatuurianduriga MQTT abil: 8 sammu
AWS IoT alustamine traadita temperatuurianduriga MQTT abil: 8 sammu
AQS IoT alustamine traadita temperatuurianduriga MQTT abil
AQS IoT alustamine traadita temperatuurianduriga MQTT abil

Varasemates juhistes oleme läbinud erinevaid pilveplatvorme, nagu Azure, Ubidots, ThingSpeak, Losant jne. Oleme kasutanud MQTT -protokolli andurite andmete saatmiseks pilve peaaegu kogu pilveplatvormil. MQTT, selle eeliste ja eeliste kohta HTTP -protokolli kohta lisateabe saamiseks lugege seda juhendit.

Selles juhendis suurendame veel ühte ja kõige tuttavamat pilveplatvormi Amazon Web Services. Paljud teist võivad olla tuttavad AWS -i ehk Amazoni veebiteenustega ja AWS -i pakutava pilvefunktsiooniga. See on olnud veebiarenduse tuum juba aastaid. IoT -rakenduste kasvava ulatusega on AWS välja pakkunud AWSIoT -lahenduse. AWSIoT on usaldusväärne lahendus meie IoT -rakenduste majutamiseks.

Järgides seda juhendit:

  • Saate oma IoT -rakenduse jaoks seadistada AWS -i konto
  • Saate ESP32 ühendada AWS IoT tuumaga
  • Sõnumite saatmine ja vastuvõtmine MQTT ja HTTP protokolli abil
  • Visualiseerige saadetud andmeid AWS -is

Samm: seadistage AWS -i konto

AWS -i konto seadistamine on üsna lihtne. Peate lihtsalt üles laadima paar sertifikaati, lisama sellele poliitika, registreerima seadme ja alustama AWS -is andurite andmesõnumite vastuvõtmist.

AWS -i konto seadistamiseks järgige seda õpetust.

Samm: riistvara ja tarkvara spetsifikatsioonid

Riistvara ja tarkvara spetsifikatsioonid
Riistvara ja tarkvara spetsifikatsioonid

Tarkvara spetsifikatsioon

AWS -i konto

Riistvara spetsifikatsioon

  • ESP32
  • Juhtmeta temperatuuri- ja vibratsiooniandur
  • Zigmo Gateway vastuvõtja

Samm: traadita vibratsiooni- ja temperatuuriandurid

Juhtmeta vibratsiooni- ja temperatuuriandurid
Juhtmeta vibratsiooni- ja temperatuuriandurid

See on kaugjuhtimispuldi tööstusliku IoT juhtmevaba vibratsiooni- ja temperatuuriandur, mis ulatub kuni 2 miili kauguseni, kasutades traadita võrgusilma arhitektuuri. See andur sisaldab 16-bitist vibratsiooni- ja temperatuuriandurit ning edastab ülitäpseid vibratsiooniandmeid kasutaja määratud ajavahemike järel. Sellel on järgmised omadused:

  • Tööstuslik 3-teljeline vibratsiooniandur vahemikuga ± 32 g
  • Arvutab RMS, MAX ja MIN g vibratsiooni
  • Müra eemaldamine madalpääsfiltri abil
  • Sagedusvahemik (ribalaius) kuni 12 800 Hz
  • Proovi sagedus kuni 25, 600 Hz
  • Krüpteeritud side 2 miili traadita levialaga
  • Töötemperatuuri vahemik -40 kuni +85 ° C
  • Seinale või magnetile kinnitatud IP65 hinnatud korpus Näidistarkvara Visual Studio ja LabVIEW jaoks
  • Vibratsiooniandur koos välise sondiga
  • Kuni 500 000 ülekannet 4 AA patareist. Saadaval on palju lüüsi ja modemi valikuid

Samm: ESP32 AWS püsivara

AWS -iga ühenduse loomiseks ja andmete saatmise alustamiseks tehke järgmist

  • Laadige AWS -i teek alla järgmisest Githubi hoidlast
  • kloonige repot ja asetage AWS_IOT -fail Arduino kataloogi raamatukogu kausta

git kloon

Nüüd vaatame koodi läbi:

  • Selles rakenduses kasutasime WiFi volikirjade salvestamiseks ja IP -seadete hõljumiseks suletud portaali. Suletud portaali üksikasjaliku tutvustuse jaoks saate läbi vaadata järgmise juhendi.
  • Suletud portaal annab meile võimaluse valida staatiliste ja DHCP -seadete vahel. Sisestage lihtsalt sellised volikirjad nagu staatiline IP, alamvõrgumask, lüüs ja traadita anduri lüüs konfigureeritakse sellel IP -l.
  • Hostitakse veebilehte, kus on loetelu saadaolevatest WiFi -võrkudest ja seal RSSI. Valige WiFi -võrk ja parool ning sisestage Esita. Volitused salvestatakse EEPROM -i ja IP -sätted salvestatakse SPIFFS -i. Lisateavet selle kohta leiate sellest juhendist.

Samm: anduri andmete hankimine traadita vibratsiooni- ja temperatuuriandurilt

Anduri andmete hankimine traadita vibratsiooni- ja temperatuuriandurilt
Anduri andmete hankimine traadita vibratsiooni- ja temperatuuriandurilt
Anduri andmete hankimine traadita vibratsiooni- ja temperatuuriandurilt
Anduri andmete hankimine traadita vibratsiooni- ja temperatuuriandurilt

Me saame traadita temperatuuri- ja vibratsioonianduritelt 54-baidise raami. Seda kaadrit manipuleeritakse, et saada tegelikke temperatuuri ja vibratsiooni andmeid.

ESP32 -l on seeriakasutuseks saadaval kolm UART -i

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

ja 3 riistvara jadapordi

  • Seriaal
  • Seeria1
  • Sarja2

Esmalt lähtestage riistvara jada päisefail. Siin kasutame RX2 ja TX2 aka. Seeriaandmete saamiseks kasutage ESP32 plaadi GPIO 16 ja GPIO 17 kontakte.

#kaasake

# define RXD2 16 # define TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // tihvtid 16 rx2, 17 tx2, 19200 bps, 8 bitti ilma pariteedita 1 stopbit

Järgmised sammud aitavad teil andurite tegelikke väärtusi saada

  • Looge muutujaid temperatuuri, niiskuse, aku ja muude andurite väärtuste salvestamiseks
  • Määrake riistvara jada jaoks Rx, tx pin, edastuskiirus ja pariteedibitid
  • Kõigepealt kontrollige, kas Serial1.available () abil on midagi lugeda
  • Saame raami 54 baiti.
  • Kontrollige 0x7E, mis on algusbait.
  • Vibratsiooniandmed koosnevad 3 telje RMS -väärtusest, 3 telje minväärtustest, 3 telje maksimumväärtustest.
  • temperatuuri ja aku väärtused sisaldavad 2 baiti andmeid
  • saada anduri nimi, tüüp, anduri versioon sisaldab 1 baiti andmeid ja sealt saab vastava aadressi

if (Serial2.available ()) {Serial.println ("Read Serial"); andmed [0] = Serial2.read (); viivitus (k); if (andmed [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); viivitus (1); } if (andmed [15] == 0x7F) ///////, et kontrollida, kas tagasivõtmisandmed on õiged {if (andmed [22] == 0x08) //////// veenduge, et anduri tüüp on õige {rms_x = ((uint16_t) (((andmed [24]) << 16) + ((andmed [25]) << 8) + (andmed [26]))/100); rms_y = ((uint16_t) (((andmed [27]) << 16) + ((andmed [28]) << 8) + (andmed [29]))/100); rms_z = ((uint16_t) (((andmed [30]) << 16) + ((andmed [31]) << 8) + (andmed [32]))/100); int16_t max_x = ((uint16_t) (((andmed [33]) << 16) + ((andmed [34]) << 8) + (andmed [35]))/100); int16_t max_y = ((uint16_t) (((andmed [36]) << 16) + ((andmed [37]) << 8) + (andmed [38]))/100); int16_t max_z = ((uint16_t) (((andmed [39]) << 16) + ((andmed [40]) << 8) + (andmed [41]))/100);

int16_t min_x = ((uint16_t) (((andmed [42]) << 16) + ((andmed [43]) << 8) + (andmed [44]))/100); int16_t min_y = ((uint16_t) (((andmed [45]) << 16) + ((andmed [46]) << 8) + (andmed [47]))/100); int16_t min_z = ((uint16_t) (((andmed [48]) << 16) + ((andmed [49]) << 8) + (andmed [50]))/100);

cTemp = ((((andmed [51]) * 256) + andmed [52])); ujukpatarei = ((andmed [18] * 256) + andmed [19]); pinge = 0,00322 * aku; Serial.print ("Anduri number"); Serial.println (andmed [16]); senseNumber = andmed [16]; Serial.print ("Anduri tüüp"); Serial.println (andmed [22]); Serial.print ("Püsivara versioon"); Serial.println (andmed [17]); Serial.print ("Temperatuur Celsiuse järgi:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS vibratsioon X-teljel:"); Seeria.print (rms_x); Serial.println ("mg"); Serial.print ("RMS vibratsioon Y-teljel:"); Seeria.print (rms_y); Serial.println ("mg"); Serial.print ("RMS vibratsioon Z-teljel:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Minimaalne vibratsioon X-teljel:");

Seeriatrükk (min_x); Serial.println ("mg"); Serial.print ("Min vibratsioon Y-teljel:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Minimaalne vibratsioon Z-teljel:"); Serial.print (min_z); Serial.println ("mg");

Serial.print ("ADC väärtus:");

Serial.println (aku); Serial.print ("Aku pinge:"); Jadajälg (pinge); Serial.println ("\ n"); if (pinge <1) {Serial.println ("Aku vahetamise aeg"); }}} muu {jaoks (i = 0; i <54; i ++) {Serial.print (andmed ); Serial.print (","); viivitus (1); }}}}

6. toiming: ühenduse loomine AWS -iga

Ühendamine AWS -iga
Ühendamine AWS -iga
  • Kaasa AWS_IOT.h, WiFi.h päisefailid, et luua ühendus AWSIoT -jaoturiga
  • Sisestage oma hostiaadress, kliendi ID, mis on poliitika nimi, ja teema nimi, millest saab asja nimi

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

Looge oma JSON -i salvestamiseks muutuja char, sel juhul oleme loonud vormingu JSON -i salvestamiseks

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

Looge klassi AWS_IOT eksemplar

AWS_IOT esp; // AWS_IOT klassi eksemplar

Nüüd looge ühendus AWSIoT -jaoturiga, kasutades järgmist meetodit

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Ühendatud AWS -iga"); viivitus (1000);

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

{Serial.println ("Subscribe Successfull"); } else {Serial.println ("Tellimine ebaõnnestus, kontrollige asja nime ja sertifikaate"); samas (1); }} else {Serial.println ("AWS -ühendus ebaõnnestus, kontrollige HOST -i aadressi"); samas (1); }

viivitus (2000);

}

avaldage anduri andmed iga 1 minuti järel

if (linnuke> = 60) // avaldada teemasse iga 5 sekundi tagant {tick = 0; söe kasulik koormus [PAYLOAD_MAX_LEN]; snprintf (kasulik koormus, PAYLOAD_MAX_LEN, vorming, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, pinge); Serial.println (kasulik koormus); if (hornbill.publish (TOPIC_NAME, kasulik koormus) == 0) {Serial.print ("Avalda sõnum:"); Serial.println (kasulik koormus); } else {Serial.println ("Avaldamine ebaõnnestus"); }} vTaskDelay (1000 / portTICK_RATE_MS); linnuke ++;

Samm: andmete visualiseerimine AWS -is

Andmete visualiseerimine AWS -is
Andmete visualiseerimine AWS -is
Andmete visualiseerimine AWS -is
Andmete visualiseerimine AWS -is
Andmete visualiseerimine AWS -is
Andmete visualiseerimine AWS -is
  • Logige sisse oma AWS -i kontole.
  • tööriistariba vasakus nurgas leiate vahekaardi Teenused
  • Klõpsake seda vahekaarti ja valige asjade Interneti pealkirja all IoT Core.
  • Valige QoS ja nr. tellijatele saadetud sõnumitest. Sisestage teema nimi.

8. samm: üldine kood

Selle Githubi hoidla üldise koodi leiate.

Autorid

  • Arduino Json
  • Juhtmevabad temperatuuri ja niiskuse andurid
  • ESP32
  • PubSubClient

Soovitan: