Innholdsfortegnelse:
- Trinn 1: Konfigurere AWS -konto
- Trinn 2: Maskinvare- og programvarespesifikasjoner
- Trinn 3: Trådløse vibrasjons- og temperatursensorer
- Trinn 4: ESP32 AWS -fastvare
- Trinn 5: Få sensordata fra trådløs vibrasjons- og temperatursensor
- Trinn 6: Koble til AWS
- Trinn 7: Visualisering av data i AWS
- Trinn 8: Samlet kode
Video: Komme i gang med AWS IoT Med trådløs temperatursensor ved bruk av MQTT: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:23
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
Programvarespesifikasjon
En AWS -konto
Maskinvarespesifikasjon
- ESP32
- Trådløs temperatur- og vibrasjonssensor
- Zigmo Gateway -mottaker
Trinn 3: 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
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
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- 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
- 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
- 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:
Komme i gang med I2C sensorgrensesnitt ?? - Grensesnitt for MMA8451 ved bruk av ESP32s: 8 trinn
Komme i gang med I2C sensorgrensesnitt ?? - Grensesnitt for MMA8451 ved bruk av ESP32s: I denne opplæringen lærer du alt om hvordan du starter, kobler til og får I2C -enhet (akselerometer) til å fungere med kontrolleren (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
En ekstremt enkel måte å komme i gang med hjemmeautomatisering ved hjelp av DIY -moduler: 6 trinn
En ekstremt enkel måte å komme i gang med hjemmeautomatisering ved hjelp av DIY -moduler: Jeg ble positivt overrasket da jeg bestemte meg for å prøve å legge til noen DIY -sensorer til hjemmeassistenten. Å bruke ESPHome er ekstremt enkelt, og i dette innlegget vil vi lære å kontrollere en GPIO -pin og også oppnå temperatur og amp; fuktighetsdata fra et trådløst n
Trådløs Arduino -robot ved bruk av HC12 trådløs modul: 7 trinn
Trådløs Arduino -robot som bruker HC12 trådløs modul: Hei folkens, velkommen tilbake. I mitt forrige innlegg forklarte jeg hva en H Bridge Circuit er, L293D motordriver IC, piggybacking L293D Motordriver IC for å kjøre motorer med høy strøm og hvordan du kan designe og lage ditt eget L293D motorførerkort
Komme i gang med Amazon AWS IoT og ESP8266: 21 trinn
Komme i gang med Amazon AWS IoT og ESP8266: Dette prosjektet viser deg hvordan du tar ESP8266 -modulen og kobler den direkte til AWS IOT ved hjelp av Mongoose OS. Mongoose OS er et åpen kildekode -operativsystem for mikrokontrollere som legger vekt på nettilkobling. Det ble utviklet av Cesanta, et Dublin
Komme i gang med ESP32 CAM - Streaming av video ved bruk av ESP CAM over Wifi - ESP32 sikkerhetskamera -prosjekt: 8 trinn
Komme i gang med ESP32 CAM | Streaming av video ved bruk av ESP CAM over Wifi | ESP32 Security Camera Project: I dag lærer vi hvordan du bruker dette nye ESP32 CAM -kortet og hvordan vi kan kode det og bruke det som et sikkerhetskamera og få en streaming video over wifi