Indholdsfortegnelse:

Kom godt i gang med AWS IoT Med trådløs temperatursensor ved hjælp af MQTT: 8 trin
Kom godt i gang med AWS IoT Med trådløs temperatursensor ved hjælp af MQTT: 8 trin

Video: Kom godt i gang med AWS IoT Med trådløs temperatursensor ved hjælp af MQTT: 8 trin

Video: Kom godt i gang med AWS IoT Med trådløs temperatursensor ved hjælp af MQTT: 8 trin
Video: Introduction to Heltec LoRa CubeCell Development Board HTCC-AB01 2024, November
Anonim
Kom godt i gang med AWS IoT Med trådløs temperatursensor ved hjælp af MQTT
Kom godt i gang med AWS IoT Med trådløs temperatursensor ved hjælp af MQTT

I tidligere Instructables har vi gennemgået forskellige skyplatforme som Azure, Ubidots, ThingSpeak, Losant osv. Vi har brugt MQTT -protokollen til at sende sensordata til skyen i næsten hele cloudplatformen. For mere information om MQTT, dens fordele og fordele i forhold til HTTP -protokollen, kan du henvise til denne instruerbare.

I denne instruks vil vi zoome ind på endnu en og mest kendt cloud -platform Amazon Web Services. Mange af jer kender måske AWS, også kendt som Amazon Web Services, og cloud -funktionaliteten fra AWS. Det har været kernen i webudvikling i mange år. Med den stigende omfang af IoT -applikationer er AWS kommet med løsningen på AWSIoT. AWSIoT er en pålidelig løsning til hosting af vores IoT -applikationer.

Ved at følge denne instruerbare:

  • Du vil kunne oprette AWS -konto til din IoT -applikation
  • Du vil kunne slutte ESP32 til AWS IoT -kernen
  • Send og modtag beskeder ved hjælp af MQTT- og HTTP -protokol
  • Visualiser de sendte data i AWS

Trin 1: Opsætning af AWS -konto

Opsætning af AWS -konto er ret let. Du skal bare uploade et par certifikater, vedhæfte politikker til det, registrere enheden og begynde at modtage sensordatameldinger i AWS.

Følg denne vejledning for at oprette AWS -kontoen.

Trin 2: Hardware- og softwarespecifikationer

Hardware- og softwarespecifikationer
Hardware- og softwarespecifikationer

Softwarespecifikation

En AWS -konto

Hardware specifikation

  • ESP32
  • Trådløs temperatur- og vibrationssensor
  • Zigmo Gateway modtager

Trin 3: Trådløse vibrations- og temperatursensorer

Trådløse vibrations- og temperatursensorer
Trådløse vibrations- og temperatursensorer

Dette er en Long Range Industrial IoT trådløs vibrations- og temperatursensor, der kan prale af op til en 2 Mile rækkevidde ved hjælp af en trådløs mesh -netværksarkitektur. Denne sensor har en 16-bit vibrations- og temperatursensor og sender meget præcise vibrationsdata med brugerdefinerede intervaller. Det har følgende funktioner:

  • Industriel grad 3-akset vibrationssensor med ± 32g rækkevidde
  • Beregner RMS, MAX og MIN g vibration
  • Fjernelse af støj ved hjælp af lavpasfilter
  • Frekvensområde (båndbredde) op til 12, 800 Hz
  • Prøvehastighed op til 25, 600Hz
  • Krypteret kommunikation med 2 Mile Wireless Range
  • Driftstemperaturområde -40 til +85 ° C
  • Vægmonteret eller magnetmonteret IP65-klassificeret kabinet Eksempelsoftware til Visual Studio og LabVIEW
  • Vibrationssensor med ekstern sonde
  • Op til 500.000 transmissioner fra 4 AA -batterier Mange tilgængelige gateway- og modemindstillinger

Trin 4: ESP32 AWS -firmware

For at oprette forbindelse til AWS og begynde at sende dataene skal du gennemgå følgende trin

  • Download AWS -biblioteket fra følgende Github -lager
  • klon repoen og placer AWS_IOT -filen i biblioteksmappen i Arduino -biblioteket

git-klon

Lad os nu gå igennem koden:

  • I denne applikation har vi gjort brug af en bunden portal til at gemme WiFi -legitimationsoplysningerne og til at svæve gennem IP -indstillingerne. For en detaljeret introduktion på den fangede portal kan du gå igennem følgende instruerbare.
  • Den fangede portal giver os mulighed for at vælge mellem statisk og DHCP -indstillinger. Bare indtast legitimationsoplysninger som Statisk IP, Subnetmaske, gateway og Wireless Sensor Gateway bliver konfigureret på denne IP.
  • En webside hostes, hvor en liste viser tilgængelige WiFi -netværk og der RSSI. Vælg WiFi -netværket og adgangskoden, og indtast Send. Legitimationsoplysningerne gemmes i EEPROM, og IP -indstillingen gemmes i SPIFFS. Mere om dette kan findes i denne instruktive.

Trin 5: Hent sensordata fra trådløs vibration og temperatursensor

Hent sensordata fra trådløs vibration og temperatursensor
Hent sensordata fra trådløs vibration og temperatursensor
Hent sensordata fra trådløs vibration og temperatursensor
Hent sensordata fra trådløs vibration og temperatursensor

Vi får en 54-byte ramme fra de trådløse temperatur- og vibrationssensorer. Denne ramme manipuleres for at få den faktiske temperatur og vibrationsdata.

ESP32 har tre UART'er til rådighed til seriel brug

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

og 3 hardware serielle porte

  • Seriel
  • Seriel1
  • Seriel2

Initialiser først hardwareseriel headerfil. Her vil vi bruge RX2 og TX2 aka. GPIO 16 og GPIO 17 ben på ESP32 -kortet for at hente serielle data.

#omfatte

# definere RXD2 16 # definere TXD2 17

Serial2.begyndt (115200, SERIAL_8N1, RXD2, TXD2); // pins 16 rx2, 17 tx2, 19200 bps, 8 bits ingen paritet 1 stopbit

Følgende trin fører dig videre for at få de rigtige sensorværdier

  • Opret variabler til lagring af temperatur, fugtighed, batteri og andre sensorværdier
  • Indstil Rx, tx pin, baud rate og paritets bits for hardware serien
  • Kontroller først, at der er noget at læse ved hjælp af Serial1.available ()
  • Vi får rammen på 54 bytes.
  • Kontroller for 0x7E, som er startbyte.
  • Vibrationsdata består af RMS -værdi for 3 -aksen, min -værdier for 3 -akser, max -værdier for 3 -akse.
  • temperatur og batteriværdier indeholder 2 byte data
  • få sensorens navn, type, sensorversionen indeholder 1 byte data og kan hentes derfra fra den respektive adresse

hvis (Serial2.available ()) {Serial.println ("Read Serial"); data [0] = Serial2.read (); forsinkelse (k); hvis (data [0] == 0x7E) {Serial.println ("Got Packet"); mens (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); forsinkelse (1); } if (data [15] == 0x7F) /////// for at kontrollere, om recive -dataene er korrekte {if (data [22] == 0x08) //////// sørg for at sensortypen er korrekt {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])); flydebatteri = ((data [18] * 256) + data [19]); spænding = 0,00322 * batteri; Serial.print ("Sensornummer"); Serial.println (data [16]); senseNumber = data [16]; Serial.print ("Sensortype"); Serial.println (data [22]); Serial.print ("Firmwareversion"); Serial.println (data [17]); Serial.print ("Temperatur i Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS-vibration i X-akse:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS-vibration i Y-akse:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS-vibration i Z-aksen:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Min vibration i X-akse:");

Seriel.print (min_x); Serial.println ("mg"); Serial.print ("Min vibration i Y-akse:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Min vibration i Z-aksen:"); Seriel.print (min_z); Serial.println ("mg");

Serial.print ("ADC -værdi:");

Serial.println (batteri); Serial.print ("Batterispænding:"); Seriel.print (spænding); Serial.println ("\ n"); if (spænding <1) {Serial.println ("Tid til udskiftning af batteriet"); }}} andet {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); forsinkelse (1); }}}}

Trin 6: Tilslutning til AWS

Opretter forbindelse til AWS
Opretter forbindelse til AWS
  • Inkluder AWS_IOT.h, WiFi.h header -filer for at oprette en forbindelse med AWSIoT -hub
  • Indtast din værtsadresse, dit klient -id, som vil være policenavnet, og emnetavnet, der vil være tingets navn

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

Opret en char -variabel for at gemme din JSON, i dette tilfælde har vi oprettet et format til at gemme JSON

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

Opret en forekomst af AWS_IOT -klassen

AWS_IOT esp; // Forekomst af AWS_IOT -klasse

Opret nu forbindelse til AWSIoT -hub ved hjælp af følgende metode

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Tilsluttet AWS"); forsinkelse (1000);

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

{Serial.println ("Abonner vellykket"); } else {Serial.println ("Abonnement mislykkedes, tjek tingets navn og certifikater"); mens (1); }} else {Serial.println ("AWS -forbindelse mislykkedes, tjek HOST -adressen"); mens (1); }

forsinkelse (2000);

}

offentliggøre sensordataene efter hvert 1 minut

if (tick> = 60) // publicer til emnet hvert 5. sekund {tick = 0; char nyttelast [PAYLOAD_MAX_LEN]; snprintf (nyttelast, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, spænding); Serial.println (nyttelast); if (hornbill.publish (TOPIC_NAME, nyttelast) == 0) {Serial.print ("Publicer meddelelse:"); Serial.println (nyttelast); } else {Serial.println ("Publicering mislykkedes"); }} vTaskDelay (1000 / portTICK_RATE_MS); kryds ++;

Trin 7: Visualisering af data i AWS

Visualisering af data i AWS
Visualisering af data i AWS
Visualisering af data i AWS
Visualisering af data i AWS
Visualisering af data i AWS
Visualisering af data i AWS
  • Log ind på din AWS -konto.
  • i venstre hjørne af værktøjslinjen finder du fanen Services
  • Klik på denne fane, og vælg IoT Core under overskriften Internet of Things.
  • Vælg QoS og nr. beskeder til abonnenter. Indtast emnets navn.

Trin 8: Overordnet kode

Du kan finde den overordnede kode på dette Github -lager.

Credits

  • Arduino Json
  • Trådløse temperatur- og fugtighedsfølere
  • ESP32
  • PubSubClient

Anbefalede: