Inhoudsopgave:
- Stap 1: AWS-account instellen
- Stap 2: Hardware- en softwarespecificaties
- Stap 3: Draadloze trillings- en temperatuursensoren
- Stap 4: ESP32 AWS-firmware
- Stap 5: De sensorgegevens ophalen van de draadloze trillings- en temperatuursensor
- Stap 6: Verbinding maken met AWS
- Stap 7: Gegevens visualiseren in AWS
- Stap 8: Algemene code
Video: Aan de slag met AWS IoT met draadloze temperatuursensor met MQTT - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
In eerdere Instructables hebben we verschillende cloudplatforms doorlopen, zoals Azure, Ubidots, ThingSpeak, Losant enz. We hebben het MQTT-protocol gebruikt voor het verzenden van de sensorgegevens naar de cloud in bijna het hele cloudplatform. Voor meer informatie over MQTT, de voordelen en voordelen ervan ten opzichte van het HTTP-protocol, kunt u dit instructable raadplegen.
In deze instructable zoomen we in op nog een ander en meest vertrouwd cloudplatform Amazon Web Services. Velen van jullie zijn misschien bekend met AWS, ook wel Amazon Web Services genoemd, en de cloudfunctionaliteit van AWS. Het is al jaren de kern van webontwikkeling. Met de toenemende schaal van IoT-toepassingen heeft AWS de oplossing van AWSIoT bedacht. AWSIoT is een betrouwbare oplossing voor het hosten van onze IoT-toepassingen.
Door deze instructable te volgen:
- U kunt een AWS-account instellen voor uw IoT-toepassing
- U kunt de ESP32 verbinden met de AWS IoT-kern
- Berichten verzenden en ontvangen met MQTT en
- Visualiseer de verzonden gegevens in AWS
Stap 1: AWS-account instellen
Het opzetten van een AWS-account is vrij eenvoudig. U hoeft alleen maar een paar certificaten te uploaden, er beleid aan toe te voegen, het apparaat te registreren en de sensorgegevensberichten in AWS te ontvangen.
Volg deze tutorial om het AWS-account in te stellen.
Stap 2: Hardware- en softwarespecificaties
Softwarespecificatie:
Een AWS-account
Hardwarespecificatie:
- ESP32
- Draadloze temperatuur- en trillingssensor
- Zigmo Gateway-ontvanger
Stap 3: Draadloze trillings- en temperatuursensoren
Dit is een industriële IoT draadloze vibratie- en temperatuursensor met een groot bereik, met een bereik tot 2 mijl met behulp van een draadloze mesh-netwerkarchitectuur. Deze sensor bevat een 16-bits trillings- en temperatuursensor en verzendt zeer nauwkeurige trillingsgegevens met door de gebruiker gedefinieerde intervallen. Het heeft de volgende kenmerken:
- Industriële 3-assige trillingssensor met ± 32 g bereik
- Berekent RMS, MAX en MIN g trillingen
- Ruisverwijdering met behulp van laagdoorlaatfilter
- Frequentiebereik (bandbreedte) tot 12, 800 Hz
- Samplefrequentie tot 25, 600Hz
- Versleutelde communicatie met een draadloos bereik van 2 mijl
- Bedrijfstemperatuurbereik -40 tot +85 °C
- Wandmontage of magneetmontage Behuizing met IP65-classificatie Voorbeeldsoftware voor Visual Studio en LabVIEW
- Trillingssensor met optie voor externe sonde
- Tot 500.000 transmissies van 4 AA-batterijenVeel gateway- en modemopties beschikbaar
Stap 4: ESP32 AWS-firmware
Om verbinding te maken met AWS en om te beginnen met het verzenden van de gegevens doorloopt u de volgende stappen:
- Download de AWS-bibliotheek van de volgende Github-repository:
- kloon de repo en plaats het AWS_IOT-bestand in de bibliotheekmap van de Arduino-map
git clone
Laten we nu de code doornemen:
- In deze applicatie hebben we gebruik gemaakt van een captive portal om de wifi-inloggegevens op te slaan en door de IP-instellingen te zweven. Voor de gedetailleerde introductie op de captive portal kunt u de volgende instructable doorlopen.
- De captive portal geeft ons de mogelijkheid om te kiezen tussen statische en DHCP-instellingen. Voer gewoon de inloggegevens in zoals Static IP, Subnet Mask, gateway en de Wireless Sensor Gateway wordt geconfigureerd op dat IP.
- Er wordt een webpagina gehost waar een lijst wordt weergegeven met beschikbare WiFi-netwerken en daar RSSI. Selecteer het wifi-netwerk en wachtwoord en voer verzenden in. De inloggegevens worden opgeslagen in de EEPROM en de IP-instelling wordt opgeslagen in de SPIFFS. Meer hierover is te vinden in dit instructable.
Stap 5: De sensorgegevens ophalen van de draadloze trillings- en temperatuursensor
We krijgen een frame van 54 bytes van de draadloze temperatuur- en trillingssensoren. Dit frame wordt gemanipuleerd om de werkelijke temperatuur en trillingsgegevens te krijgen.
ESP32 heeft drie UART's beschikbaar voor serieel gebruik
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
en 3 hardware seriële poorten
- serieel
- Serieel1
- Serieel2
Initialiseer eerst het Hardware Serial-headerbestand. Hier zullen we RX2 en TX2 aka gebruiken. GPIO 16 en GPIO 17 pinnen van het ESP32-bord om de seriële gegevens te krijgen.
#erbij betrekken
# definieer RXD2 16 # definieer TXD2 17
Serial2.begin(115200, SERIAL_8N1, RXD2, TXD2); // pinnen 16 rx2, 17 tx2, 19200 bps, 8 bits geen pariteit 1 stopbit
De volgende stappen leiden u verder om de echte sensorwaarden te krijgen
- Creëer variabelen voor het opslaan van temperatuur, vochtigheid, batterij en andere sensorwaarden
- Stel de Rx-, tx-pin, baudrate en pariteitsbits in voor de hardwareserie
- Controleer eerst of er iets te lezen is met Serial1.available()
- We krijgen het frame van 54 bytes.
- Controleer op 0x7E, dit is startbyte.
- Trillingsgegevens bestaan uit RMS-waarde voor de 3 assen, min waarden voor 3 assen, max waarden voor 3 assen.
- temperatuur- en batterijwaarden bevatten 2 bytes aan gegevens
- verkrijg de sensornaam, het type, de sensorversie zal 1 byte aan gegevens bevatten en kan van het respectievelijke adres worden opgehaald
if (Serial2.available()) { Serial.println("Read Serial"); data[0] = Serial2.read(); vertraging (k); if(data[0]==0x7E) { Serial.println("Gekregen pakket"); while (!Serial2.available()); for (i = 1; i< 55; i++) { data = Serial2.read(); vertraging(1); } if(data[15]==0x7F) /////// om te controleren of de ontvangen gegevens correct zijn { if(data[22]==0x08) //////// zorg ervoor dat het sensortype klopt { 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 = ((((gegevens[51]) * 256) + gegevens[52])); float-batterij = ((data[18] * 256) + data[19]); spanning = 0,00322 * batterij; Serial.print("Sensornummer"); Serial.println(data[16]); senseNumber = gegevens[16]; Serial.print("Sensortype "); Serial.println(data[22]); Serial.print("Firmwareversie"); Serial.println(data[17]); Serial.print ("Temperatuur in Celsius:"); Serieel.print(cTemp); Serieel.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 trilling in X-as:");
Serieel.afdruk(min_x); Serial.println ("mg"); Serial.print ("Min trilling in Y-as:"); Serial.print(min_y); Serial.println ("mg"); Serial.print ("Min trilling in Z-as:"); Serial.print(min_z); Serial.println ("mg");
Serial.print ("ADC-waarde:");
Serial.println(batterij); Serial.print ("Batterijspanning:"); Seriële.afdruk (spanning); Serieel.println("\n"); if (voltage < 1) { Serial.println ("Tijd om de batterij te vervangen"); } } } else { for (i = 0; i< 54; i++) { Serial.print(data); Serieel.print(", "); vertraging(1); } } } }
Stap 6: Verbinding maken met AWS
- Voeg AWS_IOT.h, WiFi.h-headerbestanden toe om een verbinding met de AWSIoT-hub tot stand te brengen
- Voer uw hostadres, client-ID in, wat de beleidsnaam zal zijn, en onderwerpnaam die de naam van het ding zal zijn
//**********AWS-referenties ***********//char HOST_ADDRESS="a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID= "ncdGatewayPolicy"; char TOPIC_NAME= "ncdGatewayThing";
Maak een char-variabele om uw JSON op te slaan, in dit geval hebben we een indeling gemaakt om JSON op te slaan
const char *format = "{"SensorId\":\"%d\", \"messageId\":%d, \"rmsX\":%d, \"rmsY\":%d, \"rmsZ \":%d, \"cTemp\":%d, \"voltage\":%.2f}";
Maak een instantie van de AWS_IOT-klasse
AWS_IOT in het bijzonder; // Instantie van AWS_IOT klasse
Maak nu verbinding met de AWSIoT-hub met behulp van de volgende methode
void reconnectMQTT(){ if(hornbill.connect(HOST_ADDRESS, CLIENT_ID)== 0) { Serial.println("Verbonden met AWS"); vertraging (1000);
if(0==hornbill.subscribe(TOPIC_NAME, mySubCallBackHandler))
{ Serial.println ("Abonneren succesvol"); } else { Serial.println("Abonneren mislukt, controleer de naam en certificaten van het ding"); terwijl(1); } } else { Serial.println("AWS-verbinding mislukt, controleer het HOST-adres"); terwijl(1); }
vertraging (2000);
}
publiceer de sensorgegevens na elke minuut
if (tick>= 60) // publiceer elke 5 seconden naar onderwerp {tick=0; char-lading [PAYLOAD_MAX_LEN]; snprintf(payload, PAYLOAD_MAX_LEN, formaat, senseNumber, msgCount++, rms_x, rms_y, rms_z, cTemp, voltage); Serial.println(lading); if(hornbill.publish(TOPIC_NAME, payload) == 0) { Serial.print("Publiceer bericht:"); Serial.println(lading); } else { Serial.println("Publiceren mislukt"); } } vTaskDelay (1000 / portTICK_RATE_MS); vink ++;
Stap 7: Gegevens visualiseren in AWS
- Log in op uw AWS-account.
- in de linkerhoek van de werkbalk vindt u het tabblad Services
- Klik op dit tabblad en selecteer onder de kop Internet of Things IoT Core.
- Selecteer de QoS en nee. van berichten aan abonnees. Voer de onderwerpnaam in.
Stap 8: Algemene code
Je kunt de algemene code vinden op deze Github-repository.
Credits
- Arduino Json
- Draadloze temperatuur- en vochtigheidssensoren
- ESP32
- PubSubClient
Aanbevolen:
Aan de slag met draadloze temperatuur- en trillingssensoren met groot bereik: 7 stappen
Aan de slag met draadloze temperatuur- en trillingssensoren met groot bereik: Soms zijn trillingen de oorzaak van ernstige problemen in veel toepassingen. Van machineassen en lagers tot de prestaties van de harde schijf, trillingen veroorzaken schade aan de machine, vroegtijdige vervanging, lage prestaties en veroorzaken een grote aanslag op de nauwkeurigheid. Toezicht houden
Aan de slag met Ham Radio: 5 stappen (met afbeeldingen)
Aan de slag met Ham Radio: Als een onlangs geslagen ham-licentiehouder, wil ik het proces doorgeven dat ik heb gevolgd om in hamradio te komen. Ik werd verleid door het zelfredzaamheidsaspect van de hobby, mensen een manier geven om te communiceren wanneer andere methoden worden verstoord. Maar het is ook de moeite waard om
Aan de slag met de M5StickV AI + IOT-camera: 6 stappen (met afbeeldingen)
Aan de slag met de M5StickV AI + IOT-camera: kort overzicht De M5StickV is een kleine AI + IOT-camera met een diameter van bijna 2 munten. degelijke specificaties. De camera wordt aangedreven door ongelooflijke
Aan de slag met Amazon AWS IoT en ESP8266: 21 stappen
Aan de slag met Amazon AWS IoT en ESP8266: dit project laat zien hoe u de ESP8266-module kunt nemen en deze rechtstreeks kunt verbinden met AWS IOT met behulp van Mongoose OS. Mongoose OS is een open source besturingssysteem voor microcontrollers dat cloudconnectiviteit benadrukt. Het is ontwikkeld door Cesanta, een Dublin
IoT Analoge Input - Aan de slag met IoT: 8 stappen
IoT Analoge Input - Aan de slag met IoT: Inzicht in analoge inputs is een cruciaal onderdeel om te begrijpen hoe de dingen om ons heen werken, de meeste, zo niet alle sensoren zijn analoge sensoren (soms worden deze sensoren omgezet naar digitaal). In tegenstelling tot digitale ingangen die alleen aan of uit kunnen staan, is analoge ingang