Cuprins:

Noțiuni introductive despre AWS IoT cu senzor de temperatură fără fir folosind MQTT: 8 pași
Noțiuni introductive despre AWS IoT cu senzor de temperatură fără fir folosind MQTT: 8 pași

Video: Noțiuni introductive despre AWS IoT cu senzor de temperatură fără fir folosind MQTT: 8 pași

Video: Noțiuni introductive despre AWS IoT cu senzor de temperatură fără fir folosind MQTT: 8 pași
Video: IOT Notiuni introductive 2024, Noiembrie
Anonim
Noțiuni introductive despre AWS IoT cu senzor de temperatură fără fir folosind MQTT
Noțiuni introductive despre AWS IoT cu senzor de temperatură fără fir folosind MQTT

În Instructables anterioare, am trecut prin diferite platforme cloud, cum ar fi Azure, Ubidots, ThingSpeak, Losant etc. Am folosit protocolul MQTT pentru a trimite datele senzorului în cloud în aproape toată platforma cloud. Pentru mai multe informații despre MQTT, avantajele și avantajele sale față de protocolul HTTP, puteți consulta acest instructiv.

În această instrucțiune, vom mări o altă platformă cloud Amazon și cele mai familiare servicii Web. Mulți dintre voi ar putea fi familiarizați cu AWS aka Amazon Web Services și funcționalitatea în cloud oferită de AWS. A fost nucleul dezvoltării web de mulți ani. Odată cu amploarea crescândă a aplicațiilor IoT, AWS a venit cu soluția AWSIoT. AWSIoT este o soluție fiabilă pentru găzduirea aplicațiilor noastre IoT.

Urmând acest instructable:

  • Veți putea configura un cont AWS pentru aplicația dvs. IoT
  • Veți putea conecta ESP32 la AWS IoT core
  • Trimiteți și primiți mesaje utilizând protocolul MQTT și
  • Vizualizați datele trimise în AWS

Pasul 1: Configurarea contului AWS

Configurarea contului AWS este destul de ușoară. Trebuie doar să încărcați câteva certificate, să atașați politici la acesta, să înregistrați dispozitivul și să începeți să primiți mesajele de date ale senzorului în AWS.

Pentru a configura contul AWS, urmați acest tutorial.

Pasul 2: Specificații hardware și software

Specificații hardware și software
Specificații hardware și software

Specificații software

Un cont AWS

Specificații hardware

  • ESP32
  • Senzor de temperatură și vibrații fără fir
  • Receptor Zigmo Gateway

Pasul 3: Senzori de vibrație și temperatură fără fir

Senzori de vibrație și temperatură fără fir
Senzori de vibrație și temperatură fără fir

Acesta este un senzor de temperatură și vibrații fără fir IoT industrial cu rază lungă de acțiune, care se mândrește cu o gamă de 2 mile folosind o arhitectură de rețea fără fir mesh. Incorporând un senzor de vibrație și temperatură pe 16 biți, acest senzor transmite date de vibrație extrem de precise la intervale definite de utilizator. Are următoarele caracteristici:

  • Senzor de vibrații pe 3 axe de grad industrial cu o rază de ± 32g
  • Calculează vibrațiile RMS, MAX și MIN
  • Îndepărtarea zgomotului cu ajutorul filtrului trece-jos
  • Gama de frecvență (lățime de bandă) până la 12, 800 Hz
  • Rată de eșantionare de până la 25, 600Hz
  • Comunicare criptată cu autonomie wireless de 2 mile
  • Gama de temperatură de funcționare -40 până la +85 ° C
  • Carcasă cu montare pe perete sau montată pe magnet IP65 Exemplu de software pentru Visual Studio și LabVIEW
  • Senzor de vibrații cu opțiune de sondă externă
  • Până la 500, 000 de transmisii de la 4 baterii AA Multe opțiuni de gateway și modem sunt disponibile

Pasul 4: Firmware ESP32 AWS

Pentru a vă conecta la AWS și a începe să trimiteți datele, parcurgeți pașii următori

  • Descărcați biblioteca AWS din următorul depozit Github
  • clonați repo și plasați fișierul AWS_IOT în folderul bibliotecii din directorul Arduino

git clone

Acum să trecem prin cod:

  • În această aplicație, am folosit un portal captiv pentru a salva acreditările WiFi și pentru a trece prin setările IP. Pentru introducerea detaliată pe portalul captiv, puteți parcurge următoarele instrucțiuni.
  • Portalul captiv ne oferă opțiunea de a alege între setările Static și DHCP. Introduceți doar acreditările precum IP static, mască de subrețea, gateway și gateway-ul senzorului wireless va fi configurat pe acel IP.
  • O pagină web este găzduită în care apare o listă care prezintă rețelele WiFi disponibile și acolo RSSI. Selectați rețeaua WiFi și parola și introduceți trimitere. Acreditările vor fi salvate în EEPROM și setarea IP va fi salvată în SPIFFS. Mai multe despre acest lucru pot fi găsite în acest instructable.

Pasul 5: Obținerea datelor senzorului de la senzorul de vibrație și temperatură fără fir

Obținerea datelor senzorului de la senzorul wireless de vibrații și temperatură
Obținerea datelor senzorului de la senzorul wireless de vibrații și temperatură
Obținerea datelor senzorului de la senzorul wireless de vibrații și temperatură
Obținerea datelor senzorului de la senzorul wireless de vibrații și temperatură

Obținem un cadru de 54 de octeți de la senzorii de temperatură și vibrații fără fir. Acest cadru este manipulat pentru a obține temperatura reală și datele despre vibrații.

ESP32 are trei UART-uri disponibile pentru utilizare în serie

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

și 3 porturi seriale hardware

  • Serial
  • Serial1
  • Serial2

Mai întâi, inițializați fișierul antet Hardware Serial. Aici vom folosi RX2 și TX2 aka. GPIO 16 și GPIO 17 pini ai plăcii ESP32 pentru a obține datele seriale.

#include

# define RXD2 16 # define TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // pinii 16 rx2, 17 tx2, 19200 bps, 8 biți fără paritate 1 bit de oprire

Următorii pași vă vor conduce mai departe pentru a obține valorile reale ale senzorului

  • Creați variabile pentru stocarea temperaturii, umidității, bateriei și a altor valori ale senzorilor
  • Setați Rx, pin pin, rata de transmisie și biți de paritate pentru seria hardware
  • Mai întâi, verificați dacă există ceva de citit folosind Serial1.available ()
  • Vom obține cadrul de 54 de octeți.
  • Verificați 0x7E care este octetul de pornire.
  • Datele despre vibrații constau în valoare RMS pentru axa 3, valori minime pentru axa 3, valori maxime pentru axa 3.
  • valorile temperaturii și ale bateriei vor conține 2 octeți de date
  • obțineți numele senzorului, tipul, versiunea senzorului va conține 1 octet de date și poate fi obținută de acolo de la adresa respectivă

if (Serial2.available ()) {Serial.println ("Citește seria"); date [0] = Serial2.read (); întârziere (k); if (date [0] == 0x7E) {Serial.println ("Got Packet"); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Serial2.read (); întârziere (1); } if (data [15] == 0x7F) /////// pentru a verifica dacă datele de recepție sunt corecte {if (data [22] == 0x08) //////// asigurați-vă că tipul senzorului este corect {rms_x = ((uint16_t) (((date [24]) << 16) + ((date [25]) << 8) + (data [26])) / 100); rms_y = ((uint16_t) (((date [27]) << 16) + ((date [28]) << 8) + (data [29])) / 100); rms_z = ((uint16_t) (((date [30]) << 16) + ((date [31]) << 8) + (date [32])) / 100); int16_t max_x = ((uint16_t) (((date [33]) << 16) + ((date [34]) << 8) + (date [35])) / 100); int16_t max_y = ((uint16_t) (((date [36]) << 16) + ((date [37]) << 8) + (date [38])) / 100); int16_t max_z = ((uint16_t) (((date [39]) << 16) + ((date [40]) << 8) + (date [41])) / 100);

int16_t min_x = ((uint16_t) (((date [42]) << 16) + ((date [43]) << 8) + (date [44])) / 100); int16_t min_y = ((uint16_t) (((date [45]) << 16) + ((date [46]) << 8) + (date [47])) / 100); int16_t min_z = ((uint16_t) (((date [48]) << 16) + ((date [49]) << 8) + (date [50])) / 100);

cTemp = ((((date [51]) * 256) + date [52])); baterie plutitoare = ((date [18] * 256) + date [19]); tensiune = 0,00322 * baterie; Serial.print („Număr senzor”); Serial.println (date [16]); senseNumber = date [16]; Serial.print („Tip senzor”); Serial.println (date [22]); Serial.print („Versiunea firmware”); Serial.println (date [17]); Serial.print ("Temperatura în grade Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Vibrația RMS în axa X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("Vibrația RMS în axa Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("Vibrația RMS în axa Z:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Vibrație minimă pe axa X:");

Serial.print (min_x); Serial.println ("mg"); Serial.print ("Vibrație minimă pe axa Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Vibrație minimă pe axa Z:"); Serial.print (min_z); Serial.println ("mg");

Serial.print ("valoare ADC:");

Serial.println (baterie); Serial.print ("Tensiunea bateriei:"); Serial.print (tensiune); Serial.println ("\ n"); if (tensiune <1) {Serial.println ("Timpul de înlocuire a bateriei"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); întârziere (1); }}}}

Pasul 6: Conectarea la AWS

Conectarea la AWS
Conectarea la AWS
  • Includeți fișierele de antet AWS_IOT.h, WiFi.h pentru a configura o conexiune cu hub-ul AWSIoT
  • Introduceți adresa gazdei, ID-ul clientului care va fi numele politicii și numele subiectului care va fi numele lucrului

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

Creați o variabilă char pentru a stoca JSON, în acest caz, am creat un format pentru a stoca JSON

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

Creați o instanță a clasei AWS_IOT

AWS_IOT esp; // Instanță a clasei AWS_IOT

Acum conectați-vă la hub-ul AWSIoT utilizând următoarea metodă

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Conectat la AWS"); întârziere (1000);

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

{Serial.println („Abonare reușită”); } else {Serial.println ("Abonamentul a eșuat, verificați numele lucrului și certificatele"); în timp ce (1); }} else {Serial.println ("conexiunea AWS a eșuat, verificați adresa HOST"); în timp ce (1); }

întârziere (2000);

}

publicați datele senzorului la fiecare 1 minut

if (bifați> = 60) // publicați pe subiect la fiecare 5 secunde {bifați = 0; char payload [PAYLOAD_MAX_LEN]; snprintf (sarcină utilă, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, tensiune); Serial.println (sarcină utilă); if (hornbill.publish (TOPIC_NAME, sarcină utilă) == 0) {Serial.print ("Publicare mesaj:"); Serial.println (sarcină utilă); } else {Serial.println ("Publicarea eșuată"); }} vTaskDelay (1000 / portTICK_RATE_MS); bifați ++;

Pasul 7: Vizualizarea datelor în AWS

Vizualizarea datelor în AWS
Vizualizarea datelor în AWS
Vizualizarea datelor în AWS
Vizualizarea datelor în AWS
Vizualizarea datelor în AWS
Vizualizarea datelor în AWS
  • Conectați-vă la contul dvs. AWS.
  • în colțul din stânga al barei de instrumente, veți găsi fila Servicii
  • Faceți clic pe această filă și sub rubrica Internet of Things selectați IoT Core.
  • Selectați QoS și nr. de mesaje către abonați. Introduceți numele subiectului.

Pasul 8: Cod general

Puteți găsi codul general în acest depozit Github.

credite

  • Arduino Json
  • Senzori de temperatură și umiditate fără fir
  • ESP32
  • PubSubClient

Recomandat: