Cuprins:
- Pasul 1: Configurarea contului AWS
- Pasul 2: Specificații hardware și software
- Pasul 3: Senzori de vibrație și temperatură fără fir
- Pasul 4: Firmware ESP32 AWS
- Pasul 5: Obținerea datelor senzorului de la senzorul de vibrație și temperatură fără fir
- Pasul 6: Conectarea la AWS
- Pasul 7: Vizualizarea datelor în AWS
- Pasul 8: Cod general
Video: Noțiuni introductive despre AWS IoT cu senzor de temperatură fără fir folosind MQTT: 8 pași
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:44
Î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 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
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ț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
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- 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
- 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
- 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:
Noțiuni introductive despre senzorii de temperatură și vibrații fără fir cu rază lungă de acțiune: 7 pași
Noțiuni introductive despre senzorii de temperatură și vibrații fără fir cu rază lungă de acțiune: Uneori vibrațiile sunt cauza problemelor grave în multe aplicații. De la arborii și rulmenții mașinii până la performanța hard disk-ului, vibrațiile cauzează deteriorarea mașinii, înlocuirea timpurie, performanța scăzută și provoacă un impact major asupra preciziei. Monitorizarea
Noțiuni introductive despre interfața senzorului I2C ?? - Interfață MMA8451 folosind ESP32s: 8 pași
Noțiuni introductive despre interfața senzorului I2C ?? - Interfața MMA8451 folosind ESP32s: În acest tutorial, veți afla totul despre cum să porniți, să conectați și să obțineți dispozitivul I2C (accelerometru) care funcționează cu controlerul (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Noțiuni introductive despre RPLIDAR low-cost folosind Jetson Nano: 5 pași
Noțiuni introductive cu RPLIDAR low-cost Utilizarea Jetson Nano: Prezentare succintă Detectarea și Ranging-ul luminii (LiDAR) funcționează în același mod în care sunt utilizate telemetre ultrasonice cu impuls laser în locul undelor sonore. Yandex, Uber, Waymo ș.a
Noțiuni introductive despre Amazon AWS IoT și ESP8266: 21 de pași
Noțiuni introductive despre Amazon AWS IoT și ESP8266: Acest proiect vă arată cum să luați modulul ESP8266 și să îl conectați direct la AWS IOT folosind sistemul de operare Mongoose. Mongoose OS este un sistem de operare open source pentru microcontrolere care pune accent pe conectivitatea în cloud. A fost dezvoltat de Cesanta, un Dublin
Instalarea Raspbian în Raspberry Pi 3 B Fără HDMI - Noțiuni introductive despre Raspberry Pi 3B - Configurarea Raspberry Pi 3: 6 pași
Instalarea Raspbian în Raspberry Pi 3 B Fără HDMI | Noțiuni introductive despre Raspberry Pi 3B | Configurarea Raspberry Pi 3: După cum unii dintre voi știți, computerele Raspberry Pi sunt minunate și puteți obține întregul computer doar pe o singură placă mică. Raspberry Pi 3 Model B are un quad-core 64-bit ARM Cortex A53 tactat la 1,2 GHz. Acest lucru pune Pi 3 aproximativ 50