Sisukord:

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

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

Video: AWS IoT alustamine traadita temperatuurianduriga MQTT abil: 8 sammu
Video: CS50 2014 – 7-я неделя, продолжение 2024, November
Anonim
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: