INHOUDSOPGAWE:

Aan die gang met AWS IoT Met draadlose temperatuursensor met behulp van MQTT: 8 stappe
Aan die gang met AWS IoT Met draadlose temperatuursensor met behulp van MQTT: 8 stappe

Video: Aan die gang met AWS IoT Met draadlose temperatuursensor met behulp van MQTT: 8 stappe

Video: Aan die gang met AWS IoT Met draadlose temperatuursensor met behulp van MQTT: 8 stappe
Video: Real World Digital Transformation for Small Business | IoT Temperature Monitoring Solution 2024, November
Anonim
Aan die gang met AWS IoT Met draadlose temperatuursensor met behulp van MQTT
Aan die gang met AWS IoT Met draadlose temperatuursensor met behulp van MQTT

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

Hardeware en sagteware spesifikasies
Hardeware en sagteware spesifikasies

Sagteware spesifikasie

'N AWS -rekening

Hardeware spesifikasie

  • ESP32
  • Draadlose temperatuur- en vibrasiesensor
  • Zigmo Gateway ontvanger

Stap 3: Draadlose vibrasie- en temperatuursensors

Draadlose vibrasie- en temperatuursensors
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

Kry die sensordata van die draadlose vibrasie- en temperatuursensor
Kry die sensordata van die draadlose vibrasie- en temperatuursensor
Kry die sensordata van die draadlose vibrasie- en temperatuursensor
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

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

Koppel aan AWS
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

Data visualiseer in AWS
Data visualiseer in AWS
Data visualiseer in AWS
Data visualiseer in AWS
Data visualiseer in AWS
Data visualiseer 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: