Innholdsfortegnelse:

Komme i gang med AWS IoT Med trådløs temperatursensor ved bruk av MQTT: 8 trinn
Komme i gang med AWS IoT Med trådløs temperatursensor ved bruk av MQTT: 8 trinn

Video: Komme i gang med AWS IoT Med trådløs temperatursensor ved bruk av MQTT: 8 trinn

Video: Komme i gang med AWS IoT Med trådløs temperatursensor ved bruk av MQTT: 8 trinn
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, November
Anonim
Komme i gang med AWS IoT Med trådløs temperatursensor ved hjelp av MQTT
Komme i gang med AWS IoT Med trådløs temperatursensor ved hjelp av MQTT

I tidligere instrukser har vi gått gjennom forskjellige skyplattformer som Azure, Ubidots, ThingSpeak, Losant etc. Vi har brukt MQTT -protokollen for å sende sensordata til skyen i nesten hele nettskyplattformen. For mer informasjon om MQTT, fordelene og fordelene i forhold til HTTP -protokollen, kan du se denne instruksen.

I denne instruksen vil vi zoome inn på enda en og mest kjent skyplattform Amazon Web Services. Mange av dere er kanskje kjent med AWS alias Amazon Web Services og nettskyfunksjonaliteten levert av AWS. Det har vært kjernen i webutvikling i mange år. Med den økende omfanget av IoT -applikasjoner har AWS kommet med løsningen på AWSIoT. AWSIoT er en pålitelig løsning for hosting av våre IoT -applikasjoner.

Ved å følge denne instruksen:

  • Du vil kunne sette opp AWS -konto for IoT -applikasjonen din
  • Du vil kunne koble ESP32 til AWS IoT -kjerne
  • Send og motta meldinger ved hjelp av MQTT- og HTTP -protokoll
  • Visualiser de sendte dataene i AWS

Trinn 1: Konfigurere AWS -konto

Å sette opp AWS -konto er ganske enkelt. Du trenger bare å laste opp et par sertifikater, knytte retningslinjer til det, registrere enheten og begynne å motta sensordatameldinger i AWS.

Følg denne opplæringen for å sette opp AWS -kontoen.

Trinn 2: Maskinvare- og programvarespesifikasjoner

Maskinvare- og programvarespesifikasjoner
Maskinvare- og programvarespesifikasjoner

Programvarespesifikasjon

En AWS -konto

Maskinvarespesifikasjon

  • ESP32
  • Trådløs temperatur- og vibrasjonssensor
  • Zigmo Gateway -mottaker

Trinn 3: Trådløse vibrasjons- og temperatursensorer

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

Dette er en Long Range Industrial IoT trådløs vibrasjons- og temperatursensor, med opptil 2 mils rekkevidde ved bruk av en trådløs nettverksarkitektur. Denne sensoren har en 16-biters vibrasjons- og temperatursensor og overfører svært nøyaktige vibrasjonsdata med brukerdefinerte intervaller. Den har følgende funksjoner:

  • Industriell 3-akset vibrasjonssensor med ± 32g rekkevidde
  • Beregner RMS, MAX og MIN g vibrasjon
  • Fjerning av støy ved bruk av lavpassfilter
  • Frekvensområde (båndbredde) opptil 12, 800 Hz
  • Prøvehastighet opptil 25, 600Hz
  • Kryptert kommunikasjon med 2 Mile Wireless Range
  • Driftstemperaturområde -40 til +85 ° C
  • Veggmontert eller magnetmontert IP65-klassifisert kabinett Eksempelprogramvare for Visual Studio og LabVIEW
  • Vibrasjonssensor med ekstern sonde
  • Opptil 500 000 overføringer fra 4 AA -batterier Mange gateway- og modemalternativer er tilgjengelige

Trinn 4: ESP32 AWS -fastvare

For å koble til AWS og begynne å sende dataene, gå gjennom følgende trinn

  • Last ned AWS -biblioteket fra følgende Github -depot
  • klon repoen og plasser AWS_IOT -filen i bibliotekmappen i Arduino -katalogen

git-klon

La oss gå gjennom koden:

  • I denne applikasjonen har vi brukt en fanget portal for å lagre WiFi -legitimasjonene og for å sveve gjennom IP -innstillingene. For en detaljert introduksjon på portalen, kan du gå gjennom følgende instrukser.
  • Den fangede portalen gir oss muligheten til å velge mellom statiske og DHCP -innstillinger. Bare skriv inn legitimasjonen som Statisk IP, Nettverksmaske, gateway og Wireless Sensor Gateway vil bli konfigurert på den IP -en.
  • En webside blir vert der en liste som viser tilgjengelige WiFi -nettverk og det RSSI. Velg WiFi -nettverket og passordet og skriv inn. Legitimasjonen lagres i EEPROM og IP -innstillingen lagres i SPIFFS. Mer om dette finner du i denne instruksjonsboken.

Trinn 5: Få sensordata fra trådløs vibrasjons- og temperatursensor

Få sensordata fra trådløs vibrasjon og temperatursensor
Få sensordata fra trådløs vibrasjon og temperatursensor
Få sensordata fra trådløs vibrasjon og temperatursensor
Få sensordata fra trådløs vibrasjon og temperatursensor

Vi får en 54-byte ramme fra de trådløse temperatur- og vibrasjonssensorene. Denne rammen manipuleres for å få den faktiske temperaturen og vibrasjonsdata.

ESP32 har tre UART -er tilgjengelig for seriell bruk

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

og 3 serielle serielle porter

  • Seriell
  • Seriell 1
  • Seriell 2

Initialiser først maskinvare seriell topptekstfil. Her skal vi bruke RX2 og TX2 aka. GPIO 16 og GPIO 17 -pinner på ESP32 -kortet for å få serielle data.

#inkludere

# definere RXD2 16 # definere TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // pins 16 rx2, 17 tx2, 19200 bps, 8 bits no parity 1 stop bit

Følgende trinn vil lede deg videre for å få de virkelige sensorverdiene

  • Lag variabler for lagring av temperatur, fuktighet, batteri og andre sensorverdier
  • Still inn Rx, tx pin, baud rate og paritetsbiter for maskinvareserien
  • Sjekk først at det er noe å lese ved hjelp av Serial1.available ()
  • Vi får rammen på 54 byte.
  • Se etter 0x7E som er startbyte.
  • Vibrasjonsdata består av RMS -verdi for 3 -aksen, min -verdier for 3 -aksen, maks -verdier for 3 -aksen.
  • temperatur og batteriverdier vil inneholde 2 byte med data
  • få sensornavnet, typen, sensorversjonen vil inneholde 1 byte data og kan hentes derfra respektive adresse

if (Serial2.available ()) {Serial.println ("Read Serial"); data [0] = Serial2.read (); forsinkelse (k); if (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 å sjekke om mottatte data er riktige {if (data [22] == 0x08) //////// kontroller sensortypen er riktig {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])); flytebatteri = ((data [18] * 256) + data [19]); spenning = 0,00322 * batteri; Serial.print ("Sensornummer"); Serial.println (data [16]); senseNumber = data [16]; Serial.print ("Sensortype"); Serial.println (data [22]); Serial.print ("Fastvareversjon"); Serial.println (data [17]); Serial.print ("Temperatur i Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS-vibrasjon i X-aksen:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("RMS-vibrasjon i Y-aksen:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("RMS-vibrasjon i Z-aksen:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Min vibrasjon i X-aksen:");

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

Serial.print ("ADC -verdi:");

Serial.println (batteri); Serial.print ("Batterispenning:"); Serial.print (spenning); Serial.println ("\ n"); if (spenning <1) {Serial.println ("Tid til å bytte batteri"); }}} annet {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); forsinkelse (1); }}}}

Trinn 6: Koble til AWS

Koble til AWS
Koble til AWS
  • Inkluder AWS_IOT.h, WiFi.h topptekster for å sette opp en forbindelse med AWSIoT -hub
  • Skriv inn vertsadressen din, klient -ID som vil være policy -navnet, og emnenavn som vil være tingenavnet

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

Lag en char -variabel for å lagre JSON, i dette tilfellet har vi laget et format for å lagre JSON

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

Lag en forekomst av AWS_IOT -klassen

AWS_IOT esp; // Forekomst av AWS_IOT -klassen

Koble nå til AWSIoT -huben med følgende metode

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

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

{Serial.println ("Abonner vellykket"); } else {Serial.println ("Abonnement mislyktes, sjekk navn og sertifikater"); mens (1); }} else {Serial.println ("AWS -tilkobling mislyktes, Kontroller HOST -adressen"); mens (1); }

forsinkelse (2000);

}

publiser sensordataene etter hvert 1 minutt

hvis (kryss> = 60) // publiser til emnet hvert 5. sekund {kryss = 0; char nyttelast [PAYLOAD_MAX_LEN]; snprintf (nyttelast, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, spenning); Serial.println (nyttelast); if (hornbill.publish (TOPIC_NAME, nyttelast) == 0) {Serial.print ("Publiser melding:"); Serial.println (nyttelast); } annet {Serial.println ("Publisering mislyktes"); }} vTaskDelay (1000 / portTICK_RATE_MS); kryss ++;

Trinn 7: Visualisering av data i AWS

Visualisering av data i AWS
Visualisering av data i AWS
Visualisering av data i AWS
Visualisering av data i AWS
Visualisering av data i AWS
Visualisering av data i AWS
  • Logg deg på AWS -kontoen din.
  • i venstre hjørne av verktøylinjen finner du kategorien Tjenester
  • Klikk på denne fanen, og velg IoT Core under Internet of Things -overskriften.
  • Velg QoS og nr. av meldinger til abonnenter. Skriv inn emnetavnet.

Trinn 8: Samlet kode

Du finner den generelle koden på dette Github -depotet.

Studiepoeng

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

Anbefalt: