Taula de continguts:
- Pas 1: configuració del compte AWS
- Pas 2: especificacions de maquinari i programari
- Pas 3: Sensors de vibració i temperatura sense fils
- Pas 4: Firmware ESP32 AWS
- Pas 5: Obtenir les dades del sensor del sensor de temperatura i vibració sense fils
- Pas 6: Connexió a AWS
- Pas 7: visualització de dades a AWS
- Pas 8: Codi general
Vídeo: Introducció a AWS IoT amb sensor de temperatura sense fils mitjançant MQTT: 8 passos
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:14
En Instructables anteriors, hem passat per diferents plataformes de núvol com Azure, Ubidots, ThingSpeak, Losant, etc. Hem utilitzat el protocol MQTT per enviar les dades del sensor al núvol a gairebé tota la plataforma de núvol. Per obtenir més informació sobre MQTT, els seus avantatges i avantatges respecte al protocol HTTP, podeu consultar aquest document.
En aquesta instrucció, ens aproparem a una altra plataforma de núvol més coneguda d'Amazon Web Services. Molts de vosaltres podríeu estar familiaritzats amb AWS aka Amazon Web Services i la funcionalitat al núvol que ofereix AWS. Ha estat el nucli del desenvolupament web durant molts anys. Amb l’escala creixent d’aplicacions IoT, AWS ha presentat la solució d’AWSIoT. AWSIoT és una solució fiable per allotjar les nostres aplicacions IoT.
Seguint aquesta instrucció:
- Podreu configurar un compte AWS per a la vostra aplicació IoT
- Podreu connectar l’ESP32 al nucli AWS IoT
- Enviar i rebre missatges mitjançant el protocol MQTT i
- Visualitzeu les dades enviades a AWS
Pas 1: configuració del compte AWS
Configurar un compte AWS és bastant fàcil. Només cal carregar un parell de certificats, adjuntar-hi polítiques, registrar el dispositiu i començar a rebre els missatges de dades del sensor a AWS.
Per configurar el compte d'AWS, seguiu aquest tutorial.
Pas 2: especificacions de maquinari i programari
Especificació de programari
Un compte AWS
Especificació de maquinari
- ESP32
- Sensor de temperatura i vibració sense fils
- Receptor Zigmo Gateway
Pas 3: Sensors de vibració i temperatura sense fils
Es tracta d’un sensor de temperatura i vibració sense fils IoT industrial de llarg abast, amb un rang de fins a 2 milles mitjançant una arquitectura de xarxa de malla sense fils. Incorporant un sensor de vibració i temperatura de 16 bits, aquest sensor transmet dades de vibracions molt precises a intervals definits per l'usuari. Té les funcions següents:
- Sensor de vibració de 3 eixos de grau industrial amb un rang de ± 32 g
- Calcula la vibració RMS, MAX i MIN g
- Eliminació de soroll mitjançant el filtre de pas baix
- Rang de freqüència (amplada de banda) fins a 12, 800 Hz
- Velocitat de mostra fins a 25, 600Hz
- Comunicació xifrada amb un rang sense fils de 2 milles
- Rang de temperatura de funcionament -40 a +85 ° C
- Instal·lació mural o muntada amb imant IP65 Exemple de programari per a Visual Studio i LabVIEW
- Sensor de vibració amb opció de sonda externa
- Fins a 500.000 transmissions de 4 bateries AA Hi ha moltes opcions de passarel·la i mòdem disponibles
Pas 4: Firmware ESP32 AWS
Per connectar-vos a AWS i començar a enviar les dades, seguiu els passos següents
- Baixeu la biblioteca AWS des del següent repositori Github
- cloneu la reposició i col·loqueu el fitxer AWS_IOT a la carpeta de la biblioteca del directori Arduino
git clon
Ara anem a revisar el codi:
- En aquesta aplicació, hem fet ús d’un portal captiu per desar les credencials WiFi i passar el cursor a través de la configuració d’IP. Per obtenir una introducció detallada al portal captiu, podeu consultar les instruccions següents.
- El portal captiu ens ofereix l'opció de triar entre la configuració estàtica i DHCP. Només cal que introduïu les credencials com ara IP estàtica, màscara de subxarxa, passarel·la i la passarel·la del sensor sense fils es configurarà en aquesta IP.
- S’està allotjant una pàgina web on hi ha una llista que mostra les xarxes WiFi disponibles i allà el RSSI. Seleccioneu la xarxa WiFi i la contrasenya i introduïu enviar. Les credencials es desaran a EEPROM i la configuració IP es desarà a SPIFFS. Podeu trobar més informació sobre això en aquest instructiu.
Pas 5: Obtenir les dades del sensor del sensor de temperatura i vibració sense fils
Obtenim un quadre de 54 bytes dels sensors de temperatura i vibració sense fils. Aquest marc es manipula per obtenir les dades de temperatura i vibracions reals.
ESP32 té tres UART disponibles per a ús en sèrie
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- RX2 GPIO 16, TX2 GPIO 17
i 3 ports sèrie de maquinari
- En sèrie
- Sèrie1
- Sèrie2
Primer, inicialitzeu el fitxer de capçalera de la sèrie de maquinari. Aquí farem servir RX2 i TX2 aka. GPIO 16 i GPIO 17 pins de la placa ESP32 per obtenir les dades de sèrie.
#incloure
# define RXD2 16 # define TXD2 17
Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // pins 16 rx2, 17 tx2, 19200 bps, 8 bits sense paritat 1 bit de parada
Els següents passos us conduiran a obtenir els valors reals del sensor
- Creeu variables per emmagatzemar la temperatura, la humitat, la bateria i altres valors del sensor
- Establiu els bits Rx, tx, velocitat de transmissió i bits de paritat per al serial del maquinari
- Primer, comproveu que hi hagi alguna cosa per llegir mitjançant Serial1.available ()
- Obtindrem el marc de 54 bytes.
- Comproveu si hi ha 0x7E, que és el byte inicial.
- Les dades de vibració consisteixen en un valor RMS per als 3 eixos, valors mínims per a 3 eixos, valors màxims per a 3 eixos.
- la temperatura i els valors de la bateria contindran 2 bytes de dades
- obteniu el nom del sensor, el tipus, la versió del sensor contindrà 1 byte de dades i es podrà obtenir des de l'adreça respectiva
if (Serial2.available ()) {Serial.println ("Llegir sèrie"); dades [0] = Serial2.read (); retard (k); if (dades [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); retard (1); } if (dades [15] == 0x7F) /////// per comprovar si les dades de recepció són correctes {if (dades [22] == 0x08) //////// assegureu-vos que el tipus de sensor és correcte {rms_x = ((uint16_t) (((dades [24]) << 16) + ((dades [25]) << 8) + (dades [26])) / 100); rms_y = ((uint16_t) (((dades [27]) << 16) + ((dades [28]) << 8) + (dades [29])) / 100); rms_z = ((uint16_t) (((dades [30]) << 16) + ((dades [31]) << 8) + (dades [32])) / 100); int16_t max_x = ((uint16_t) (((dades [33]) << 16) + ((dades [34]) << 8) + (dades [35])) / 100); int16_t max_y = ((uint16_t) (((dades [36]) << 16) + ((dades [37]) << 8) + (dades [38])) / 100); int16_t max_z = ((uint16_t) (((dades [39]) << 16) + ((dades [40]) << 8) + (dades [41])) / 100);
int16_t min_x = ((uint16_t) (((dades [42]) << 16) + ((dades [43]) << 8) + (dades [44])) / 100); int16_t min_y = ((uint16_t) (((dades [45]) << 16) + ((dades [46]) << 8) + (dades [47])) / 100); int16_t min_z = ((uint16_t) (((dades [48]) << 16) + ((dades [49]) << 8) + (dades [50])) / 100);
cTemp = (((((dades [51]) * 256) + dades [52])); bateria flotant = ((dades [18] * 256) + dades [19]); tensió = 0,00322 * bateria; Serial.print ("Número del sensor"); Serial.println (dades [16]); SenseNumber = dades [16]; Serial.print ("Tipus de sensor"); Serial.println (dades [22]); Serial.print ("Versió del firmware"); Serial.println (dades [17]); Serial.print ("Temperatura en centígrads"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Vibració RMS a l'eix X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("Vibració RMS a l'eix Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("Vibració RMS a l'eix Z:"); Serial.print (rms_z); Serial.println ("mg");
Serial.print ("Vibració mínima a l'eix X:");
Serial.print (min_x); Serial.println ("mg"); Serial.print ("Vibració mínima a l'eix Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Vibració mínima a l'eix Z:"); Serial.print (min_z); Serial.println ("mg");
Serial.print ("valor ADC:");
Serial.println (bateria); Serial.print ("Voltatge de la bateria"); Serial.print (voltatge); Serial.println ("\ n"); if (tensió <1) {Serial.println ("Temps per substituir la bateria"); }}} else {for (i = 0; i <54; i ++) {Serial.print (dades ); Serial.print (","); retard (1); }}}}
Pas 6: Connexió a AWS
- Incloeu fitxers de capçalera AWS_IOT.h, WiFi.h per configurar una connexió amb el concentrador AWSIoT
- Introduïu la vostra adreça d’amfitrió, l’identificador de client que serà el nom de la política i el nom del tema, que serà el nom de la cosa
// ********* Credencials AWS ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";
Creeu una variable char per emmagatzemar el vostre JSON; en aquest cas, hem creat un format per emmagatzemar JSON
const char * format = "{" SensorId / ": \"% d / ", \" messageId / ":% d, \" rmsX / ":% d, \" rmsY / ":% d, \" rmsZ / ":% d, \" cTemp / ":% d, \" volta / ":%. 2f}";
Creeu una instància de la classe AWS_IOT
AWS_IOT esp; // Instància de la classe AWS_IOT
Ara connecteu-vos al concentrador AWSIoT mitjançant el següent mètode
void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLID_ID) == 0) {Serial.println ("Connectat a AWS"); retard (1000);
if (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))
{Serial.println ("Subscriure amb èxit"); } else {Serial.println ("La subscripció ha fallat, comproveu el nom de la cosa i els certificats"); mentre que (1); }} else {Serial.println ("La connexió AWS ha fallat, comproveu l'adreça HOST"); mentre que (1); }
endarreriment (2000);
}
publiqueu les dades del sensor cada 1 minut
if (tick> = 60) // publica al tema cada 5 segons {tick = 0; càrrega útil char [PAYLOAD_MAX_LEN]; snprintf (càrrega útil, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, voltatge); Serial.println (càrrega útil); if (hornbill.publish (TOPIC_NAME, càrrega útil) == 0) {Serial.print ("Publica missatge"); Serial.println (càrrega útil); } else {Serial.println ("No s'ha pogut publicar"); }} vTaskDelay (1000 / portTICK_RATE_MS); tick ++;
Pas 7: visualització de dades a AWS
- Inicieu la sessió al vostre compte d'AWS.
- a l'extrem esquerre de la barra d'eines, trobareu la pestanya Serveis
- Feu clic en aquesta pestanya i, a sota del títol Internet de les coses, seleccioneu IoT Core.
- Seleccioneu la QoS i no. de missatges als subscriptors. Introduïu el nom del tema.
Pas 8: Codi general
Podeu trobar el codi general en aquest dipòsit de Github.
Crèdits
- Arduino Json
- Sensors sense fils de temperatura i humitat
- ESP32
- PubSubClient
Recomanat:
Introducció als sensors de vibració i temperatura sense fils de llarg abast: 7 passos
Introducció als sensors de vibració i temperatura sense fils de llarg abast: de vegades la vibració és la causa de problemes greus en moltes aplicacions. Des dels eixos i els coixinets de la màquina fins al rendiment del disc dur, la vibració provoca danys a la màquina, una substitució primerenca, un rendiment baix i provoca un gran èxit en la precisió. Seguiment
Robot sense fil Arduino mitjançant el mòdul sense fils HC12: 7 passos
Robot sense fil Arduino que utilitza el mòdul sense fils HC12: Ei, benvinguts. A la meva publicació anterior, explicava què és un circuit de pont H, IC de controlador de motor L293D, IC controlador de motor L293D per a la conducció de conductors de motor d’alta intensitat i com podeu dissenyar i fabricar la vostra pròpia placa de controladors de motor L293D
Creació d’alertes per correu electrònic del sensor de temperatura i humitat sense fils NCD mitjançant Node-Red: 22 passos
Creació d’alertes per correu electrònic del sensor de temperatura i humitat sense fils NCD mitjançant el vermell del node: aquí fem servir el sensor de temperatura i humitat de NCD, però els passos són iguals per a qualsevol dels productes ncd, de manera que si teniu altres sensors sense fils ncd, tingueu experiència lliure observar al costat de més. Mitjançant l’aturada d’aquest text, heu de
Publicació de dades del sensor de pressió sense fils mitjançant MQTT: 7 passos
Publicació de dades de sensors de pressió sense fils mitjançant MQTT: ESP32 i ESP 8266 són SoC molt familiars en el camp de l’IoT. Es tracta d’una mena de benefici per als projectes IoT. ESP 32 és un dispositiu amb WiFi i BLE integrats. Només cal que doneu el vostre SSID, contrasenya i configuracions d’IP i que integreu les coses a
Introduïu un timbre sense fils en un interruptor d'alarma sense fils o un interruptor d'encesa / apagat: 4 passos
Introduïu un timbre sense fils en un interruptor d'alarma sense fils o en un interruptor d'encès / apagat: recentment he construït un sistema d'alarma i l'he instal·lat a casa. Vaig fer servir interruptors magnètics a les portes i els vaig connectar a través de les golfes: les finestres eren una altra història i el cablejat dur no era una opció. Necessitava una solució sense fils i això és