Sisukord:
- Samm: seadistage AWS -i konto
- Samm: riistvara ja tarkvara spetsifikatsioonid
- Samm: traadita vibratsiooni- ja temperatuuriandurid
- Samm: ESP32 AWS püsivara
- Samm: anduri andmete hankimine traadita vibratsiooni- ja temperatuuriandurilt
- 6. toiming: ühenduse loomine AWS -iga
- Samm: andmete visualiseerimine AWS -is
- 8. samm: üldine kood
2025 Autor: John Day | [email protected]. Viimati modifitseeritud: 2025-01-13 06:57
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
Tarkvara spetsifikatsioon
AWS -i konto
Riistvara spetsifikatsioon
- ESP32
- Juhtmeta temperatuuri- ja vibratsiooniandur
- Zigmo Gateway vastuvõtja
Samm: traadita 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
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
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- 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
- 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
- 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