Indholdsfortegnelse:
- Trin 1: Opsætning af AWS -konto
- Trin 2: Hardware- og softwarespecifikationer
- Trin 3: Trådløse vibrations- og temperatursensorer
- Trin 4: ESP32 AWS -firmware
- Trin 5: Hent sensordata fra trådløs vibration og temperatursensor
- Trin 6: Tilslutning til AWS
- Trin 7: Visualisering af data i AWS
- Trin 8: Overordnet kode
Video: Kom godt i gang med AWS IoT Med trådløs temperatursensor ved hjælp af MQTT: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:28
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
Softwarespecifikation
En AWS -konto
Hardware specifikation
- ESP32
- Trådløs temperatur- og vibrationssensor
- Zigmo Gateway modtager
Trin 3: 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
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
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- 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
- 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
- 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:
Kom godt i gang med I2C Sensor Interface ?? - Tilslut din MMA8451 ved hjælp af ESP32s: 8 trin
Kom godt i gang med I2C Sensor Interface ?? - Interface Din MMA8451 Brug af ESP32'er: I denne vejledning lærer du alt om, hvordan du starter, tilslutter og får I2C -enhed (Accelerometer) til at arbejde med controller (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Kom godt i gang med M5StickV AI + IOT -kameraet: 6 trin (med billeder)
Kom godt i gang med M5StickV AI + IOT kameraet: Kort oversigt anstændige specifikationer. Kameraet drives af utrolige
Kom godt i gang med Amazon AWS IoT og ESP8266: 21 trin
Kom godt i gang med Amazon AWS IoT og ESP8266: Dette projekt viser dig, hvordan du tager ESP8266 -modulet og forbinder det direkte til AWS IOT ved hjælp af Mongoose OS. Mongoose OS er et open source -operativsystem til mikrokontrollere, der understreger cloud -forbindelse. Det blev udviklet af Cesanta, en Dublin
Kom godt i gang med ESP32 CAM - Streaming af video ved hjælp af ESP CAM over Wifi - ESP32 sikkerhedskamera projekt: 8 trin
Kom godt i gang med ESP32 CAM | Streaming af video ved hjælp af ESP CAM over Wifi | ESP32 Security Camera Project: I dag lærer vi, hvordan man bruger dette nye ESP32 CAM -kort, og hvordan vi kan kode det og bruge det som et sikkerhedskamera og få en streaming video over wifi
IoT Analog Input - Kom godt i gang med IoT: 8 trin
IoT Analog Input - Kom godt i gang med IoT: Forståelse af analoge input er en afgørende del for at forstå, hvordan tingene omkring os fungerer, de fleste hvis ikke alle sensorer er analoge sensorer (nogle gange konverteres disse sensorer til digitale). I modsætning til digitale indgange, der kun kan tændes eller slukkes, analog indgang