INHOUDSOPGAWE:
- Stap 1: Stel 'n AWS -rekening op
- Stap 2: Spesifikasies vir hardeware en sagteware
- Stap 3: Draadlose vibrasie- en temperatuursensors
- Stap 4: ESP32 AWS -firmware
- Stap 5: Kry die sensordata van die draadlose vibrasie- en temperatuursensor
- Stap 6: Koppel aan AWS
- Stap 7: Visualisering van data in AWS
- Stap 8: Algemene kode
Video: Aan die gang met AWS IoT Met draadlose temperatuursensor met behulp van MQTT: 8 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
In vorige instruksies het ons verskillende wolkplatforms soos Azure, Ubidots, ThingSpeak, Losant, ens. Deurgegaan. Vir meer inligting oor MQTT, die voordele en voordele daarvan bo HTTP -protokol, kan u na hierdie instruksies verwys.
In hierdie instruksies sal ons inzoomen op nog 'n ander en bekendste wolkplatform Amazon Web Services. Baie van u is moontlik bekend met AWS, ook bekend as Amazon Web Services, en die wolkfunksies wat deur AWS verskaf word. Dit is al jare lank die kern van webontwikkeling. Met die toenemende omvang van IoT -toepassings, het AWS met die oplossing van AWSIoT vorendag gekom. AWSIoT is 'n betroubare oplossing vir die aanbied van ons IoT -toepassings.
Deur hierdie instruksies te volg:
- U sal 'n AWS -rekening vir u IoT -toepassing kan opstel
- U kan die ESP32 aan AWS IoT -kern koppel
- Stuur en ontvang boodskappe met behulp van MQTT en HTTP protokol
- Visualiseer die gestuurde data in AWS
Stap 1: Stel 'n AWS -rekening op
Dit is redelik maklik om 'n AWS -rekening op te stel. U hoef net 'n paar sertifikate op te laai, beleide daaraan te heg, die toestel te registreer en die sensordata -boodskappe in AWS te ontvang.
Volg hierdie tutoriaal om die AWS -rekening op te stel.
Stap 2: Spesifikasies vir hardeware en sagteware
Sagteware spesifikasie
'N AWS -rekening
Hardeware spesifikasie
- ESP32
- Draadlose temperatuur- en vibrasiesensor
- Zigmo Gateway ontvanger
Stap 3: Draadlose vibrasie- en temperatuursensors
Dit is 'n langafstand -industriële IoT -draadlose vibrasie- en temperatuursensor, met 'n bereik van 2 myl met 'n draadlose netwerk -argitektuur. Met 'n 16-bis vibrasie- en temperatuursensor, stuur hierdie sensor hoogs akkurate vibrasie-data met gebruikersgedefinieerde tussenposes. Dit het die volgende kenmerke:
- Industriële graad 3-as trillingsensor met ± 32g reeks
- Bereken RMS, MAX en MIN g trilling
- Verwydering van geraas met behulp van 'n laagdeurlaatfilter
- Frekwensiebereik (bandwydte) tot 12, 800 Hz
- Monstertempo tot 25, 600Hz
- Geënkripteerde kommunikasie met 'n draadlose reeks van 2 myl
- Bedryfstemperatuurbereik -40 tot +85 ° C
- Op muur gemonteerde of met magnete gemonteerde IP65-gegradeerde omhulsel Voorbeeldprogrammatuur vir Visual Studio en LabVIEW
- Trillingsensor met eksterne sonde -opsie
- Tot 500 000 transmissies vanaf 4 AA -batterye Baie gateway- en modemopsies beskikbaar
Stap 4: ESP32 AWS -firmware
Volg die volgende stappe om aan AWS te koppel en die data te begin stuur
- Laai die AWS -biblioteek af vanaf die volgende Github -bewaarplek
- kloon die repo en plaas die AWS_IOT -lêer in die biblioteekmap van die Arduino -gids
git-kloon
Kom ons gaan nou deur die kode:
- In hierdie toepassing het ons gebruik gemaak van 'n gevange portaal om die WiFi -geloofsbriewe te stoor en deur die IP -instellings te beweeg. Vir die gedetailleerde inleiding op die gevange portaal, kan u deur die volgende instruksies gaan.
- Die gevange portaal gee ons die opsie om te kies tussen statiese en DHCP -instellings. Voer net die geloofsbriewe in, soos Static IP, Subnet Mask, gateway en die Wireless Sensor Gateway sal op die IP gekonfigureer word.
- 'N Webblad word aangebied met 'n lys met beskikbare WiFi -netwerke en daar RSSI. Kies die WiFi -netwerk en wagwoord en voer in. Die geloofsbriewe word in die EEPROM gestoor en die IP -instelling word in die SPIFFS gestoor. Meer hieroor kan gevind word in hierdie instruksies.
Stap 5: Kry die sensordata van die draadlose vibrasie- en temperatuursensor
Ons kry 'n raam van 54 byte van die draadlose temperatuur- en trillingsensors. Hierdie raam word gemanipuleer om die werklike temperatuur- en trillingsdata te kry.
ESP32 het drie UART's beskikbaar vir seriële gebruik
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
en 3 hardeware -seriële poorte
- Reeks
- Reeks 1
- Reeks 2
Inisialiseer eers die hardeware -reeksopskriflêer. Hier sal ons RX2 en TX2 aka gebruik. GPIO 16 en GPIO 17 penne van die ESP32 -bord om die reeksdata te kry.
#insluit
# definieer RXD2 16 # definieer TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // penne 16 rx2, 17 tx2, 19200 bps, 8 bisse geen pariteit 1 stopbit
Die volgende stappe sal u verder lei om die werklike sensorwaardes te kry
- Skep veranderlikes vir die berging van temperatuur, humiditeit, battery en ander sensorwaardes
- Stel die Rx, tx pin, baud rate en pariteit bits in vir die hardeware reeks
- Kyk eers of daar iets is om te lees met Serial1.available ()
- Ons kry die raam van 54 grepe.
- Kontroleer of 0x7E die beginbyte is.
- Trillingsdata bestaan uit RMS -waarde vir die 3 -as, min -waardes vir 3 -as, maksimum waardes vir 3 -as.
- temperatuur en batterywaardes bevat 2 grepe data
- kry die sensornaam, -tipe, die sensorweergawe bevat 1 greep data en kan van die betrokke adres verkry word
if (Serial2.available ()) {Serial.println ("Serial Read"); data [0] = Serial2.read (); vertraging (k); if (data [0] == 0x7E) {Serial.println ("Pakket gekry"); terwyl (! Serial2.available ()); vir (i = 1; i <55; i ++) {data = Serial2.read (); vertraging (1); } if (data [15] == 0x7F) /////// om seker te maak of die ontvangde data korrek is {if (data [22] == 0x08) //////// maak seker dat die tipe sensor is is korrek {rms_x = ((uint16_t) (((data [24]) << 16) + ((data [25]) << 8) + (data [26])))/100); rms_y = ((uint16_t) (((data [27]) << 16) + ((data [28]) << 8) + (data [29])))/100); rms_z = ((uint16_t) (((data [30]) << 16) + ((data [31]) << 8) + (data [32])))/100); int16_t max_x = ((uint16_t) (((data [33]) << 16) + ((data [34]) << 8) + (data [35])))/100); int16_t max_y = ((uint16_t) (((data [36]) << 16) + ((data [37]) << 8) + (data [38])))/100); int16_t max_z = ((uint16_t) (((data [39]) << 16) + ((data [40]) << 8) + (data [41])))/100);
int16_t min_x = ((uint16_t) (((data [42]) << 16) + ((data [43]) << 8) + (data [44])))/100); int16_t min_y = ((uint16_t) (((data [45]) << 16) + ((data [46]) << 8) + (data [47])))/100); int16_t min_z = ((uint16_t) (((data [48]) << 16) + ((data [49]) << 8) + (data [50]))/100);
cTemp = ((((data [51]) * 256) + data [52])); float battery = ((data [18] * 256) + data [19]); spanning = 0.00322 * battery; Serial.print ("Sensornommer"); Serial.println (data [16]); senseNumber = data [16]; Serial.print ("Sensortipe"); Serial.println (data [22]); Serial.print ("Firmware -weergawe"); Serial.println (data [17]); Serial.print ("Temperatuur in Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS-trilling in X-as:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS-trilling in Y-as:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS-trilling in Z-as:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print ("Min vibrasie in X-as:");
Reeks.afdruk (min_x); Serial.println ("mg"); Serial.print ("Min vibrasie in Y-as:"); Reeks.afdruk (min_j); Serial.println ("mg"); Serial.print ("Min vibrasie in Z-as:"); Reeks.afdruk (min_z); Serial.println ("mg");
Serial.print ("ADC -waarde:");
Serial.println (battery); Serial.print ("Batteryspanning:"); Reeks.afdruk (spanning); Serial.println ("\ n"); if (spanning <1) {Serial.println ("Tyd om die battery te vervang"); }}} anders {vir (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); vertraging (1); }}}}
Stap 6: Koppel aan AWS
- Sluit AWS_IOT.h, WiFi.h -koplêers in om 'n verbinding met AWSIoT -hub op te stel
- Voer u gasheeradres, kliënt -ID in, wat die polisnaam is, en onderwerpnaam wat die dingnaam sal wees
// ********* AWS geloofsbriewe ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Skep 'n char veranderlike om u JSON te stoor, in hierdie geval het ons 'n formaat geskep om JSON te stoor
const char *format = "{" SensorId / ": \"%d / ", \" messageId / ":%d, \" rmsX / ":%d, \" rmsY / ":%d, \" rmsZ / ":%d, \" cTemp / ":%d, \" voltage / ":%. 2f}";
Skep 'n voorbeeld van die AWS_IOT -klas
AWS_IOT esp; // Voorkoms van AWS_IOT -klas
Koppel nou aan die AWSIoT -hub deur die volgende metode te gebruik
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Gekoppel aan AWS"); vertraging (1000);
as (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("Teken suksesvol in"); } anders {Serial.println ("Teken misluk, kontroleer die naam en sertifikate"); terwyl (1); }} else {Serial.println ("AWS -verbinding misluk, kyk na die HOST -adres"); terwyl (1); }
vertraging (2000);
}
publiseer die sensordata na elke 1 minuut
if (tick> = 60) // publiseer elke 5 sekondes na onderwerp {tick = 0; char laai [PAYLOAD_MAX_LEN]; snprintf (loonvrag, PAYLOAD_MAX_LEN, formaat, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, spanning); Serial.println (loonvrag); if (hornbill.publish (TOPIC_NAME, payload) == 0) {Serial.print ("Publiseer boodskap:"); Serial.println (loonvrag); } anders {Serial.println ("Publiseer misluk"); }} vTaskDelay (1000 / portTICK_RATE_MS); bosluis ++;
Stap 7: Visualisering van data in AWS
- Meld aan by u AWS -rekening.
- In die linkerhoek van die werkbalk vind u die oortjie Dienste
- Klik op hierdie oortjie en kies onder IoT Core onder die opskrif Internet of Things.
- Kies die QoS en nr. boodskappe aan intekenare. Voer die onderwerpnaam in.
Stap 8: Algemene kode
U kan die algehele kode op hierdie Github -bewaarplek vind.
Krediete
- Arduino Json
- Draadlose sensors vir temperatuur en humiditeit
- ESP32
- PubSubClient
Aanbeveel:
Aan die gang met die I2C -sensorinterface ?? - Koppel u MMA8451 met behulp van ESP32's: 8 stappe
Aan die gang met die I2C -sensorinterface ?? - Koppel u MMA8451 met behulp van ESP32's: In hierdie tutoriaal leer u alles oor hoe om 'n I2C -toestel (versnellingsmeter) te begin, aan te sluit en te laat werk met die kontroleerder (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Draadlose Arduino -robot met behulp van die HC12 -draadlose module: 7 stappe
Draadlose Arduino -robot wat die HC12 -draadlose module gebruik: Hallo ouens, welkom terug. In my vorige pos het ek verduidelik wat 'n H Bridge Circuit is, L293D -motorbestuurder -IC, L293D -motorbestuurder -IC vir die bestuur van hoëstroom -motorbestuurders en hoe u u eie L293D -motorbestuurderbord kan ontwerp en maak
Aan die gang met ESP32 CAM - Streaming van video met behulp van ESP CAM via wifi - ESP32 -beveiligingskamera -projek: 8 stappe
Aan die gang met ESP32 CAM | Streaming van video met behulp van ESP CAM via wifi | ESP32 -beveiligingskamera -projek: Vandag leer ons hoe u hierdie nuwe ESP32 CAM -bord kan gebruik en hoe ons dit kan kodeer en as 'n beveiligingskamera kan gebruik en 'n stroomvideo oor wifi kan kry
Die verkryging van onderdele en die ontwerp van 'n uithardingskamer (aan die gang): 5 stappe
Onderdele aanskaf en 'n genesingskamer ontwerp (aan die gang): Gietkamer's is nie inherent ingewikkeld nie; daar is al voorheen moderne tegnologie as 'n manier om voedsel te bewaar, maar die eenvoud is juis hoekom dit nie te moeilik is om dit te outomatiseer nie. U hoef net 'n paar faktore te beheer: temperatuur
Instruksies vir die voltooiing van die opmaak van die baanskyfontwerp vir die opheffing/verlaging van die middelste voetsteun op motorwielstoele: 9 stappe (met foto's)
Instruksies vir die voltooiing van die opmaak van die baanskyfontwerp vir die opheffing/verlaging van die middelste voetsteun op motorwielstoele: die middelste voetsteunhysers moet goed onder die sitplek geberg word en laer om te ontplooi. 'N Meganisme vir die onafhanklike werking van die opberging en ontplooiing van voetsteun is nie ingesluit by rolstoele op die mark nie, en PWC -gebruikers het die behoefte uitgespreek