Përmbajtje:

Fillimi me AWS IoT me sensorin e temperaturës pa tel duke përdorur MQTT: 8 hapa
Fillimi me AWS IoT me sensorin e temperaturës pa tel duke përdorur MQTT: 8 hapa

Video: Fillimi me AWS IoT me sensorin e temperaturës pa tel duke përdorur MQTT: 8 hapa

Video: Fillimi me AWS IoT me sensorin e temperaturës pa tel duke përdorur MQTT: 8 hapa
Video: Marlin Firmware 2.0.x Explained 2024, Nëntor
Anonim
Fillimi me AWS IoT me sensorin e temperaturës pa tela duke përdorur MQTT
Fillimi me AWS IoT me sensorin e temperaturës pa tela duke përdorur MQTT

Në Instructables të mëparshëm, ne kemi kaluar nëpër platforma të ndryshme cloud si Azure, Ubidots, ThingSpeak, Losant etj. Ne kemi qenë duke përdorur protokollin MQTT për dërgimin e të dhënave të sensorit në re në pothuajse të gjithë platformën cloud. Për më shumë informacion mbi MQTT, avantazhet dhe përfitimet e tij mbi protokollin HTTP mund t'i referoheni këtij udhëzuesi.

Në këtë udhëzues, ne do të zmadhojmë në një platformë tjetër cloud dhe më të njohur Amazon Web Services. Shumë prej jush mund të jenë të njohur me AWS aka Amazon Web Services dhe funksionalitetin cloud të ofruar nga AWS. Ka qenë thelbi i zhvillimit të uebit për shumë vite. Me shkallën në rritje të aplikacioneve IoT, AWS ka dalë me zgjidhjen e AWSIoT. AWSIoT është një zgjidhje e besueshme për pritjen e aplikacioneve tona IoT.

Duke ndjekur këtë udhëzues:

  • Ju do të jeni në gjendje të krijoni llogari AWS për aplikacionin tuaj IoT
  • Ju do të jeni në gjendje të lidhni ESP32 me bërthamën AWS IoT
  • Dërgoni dhe merrni mesazhe duke përdorur protokollin MQTT dhe
  • Vizualizoni të dhënat e dërguara në AWS

Hapi 1: Vendosja e llogarisë AWS

Krijimi i llogarisë AWS është mjaft i lehtë. Thjesht duhet të ngarkoni disa certifikata, t'i bashkëngjitni politikave, të regjistroni pajisjen dhe të filloni të merrni mesazhet e të dhënave të sensorit në AWS.

Për të krijuar llogarinë AWS ndiqni këtë udhëzues.

Hapi 2: Specifikimet e harduerit dhe softuerit

Specifikimet e harduerit dhe softuerit
Specifikimet e harduerit dhe softuerit

Specifikimi i Softuerit

Një llogari AWS

Specifikimet e harduerit

  • ESP32
  • Sensori i temperaturës dhe dridhjes pa tel
  • Marrës Zigmo Gateway

Hapi 3: Sensorët e dridhjeve pa tel dhe të temperaturës

Sensorë dridhje pa tel dhe temperaturë
Sensorë dridhje pa tel dhe temperaturë

Ky është një sensor dridhje dhe temperaturë wireless IoT Industrial me rreze të gjatë, që mburret deri në një distancë prej 2 Mile duke përdorur një arkitekturë të rrjetit me rrjetë pa tel. Duke përfshirë një sensor dridhjeje dhe temperature 16-bit, ky sensor transmeton të dhëna dridhjeje shumë të sakta në intervale të përcaktuara nga përdoruesi. Ajo ka karakteristikat e mëposhtme:

  • Sensori i dridhjeve me bosht 3 të shkallës industriale me Gama ± 32g
  • Llogarit dridhjen RMS, MAX dhe MIN g
  • Heqja e zhurmës duke përdorur filtrin me kalim të ulët
  • Gama e frekuencës (gjerësia e brezit) deri në 12, 800 Hz
  • Shkalla e mostrës deri në 25, 600Hz
  • Komunikimi i Kriptuar me Gama Wireless 2 Mile
  • Gama e temperaturës së funksionimit -40 deri +85 ° C
  • Shtojcë e montuar në mur ose e montuar me magnet IP65 Shembull Softuerësh për Visual Studio dhe LabVIEW
  • Sensori i dridhjeve me opsionin e sondës së jashtme
  • Deri në 500, 000 Transmetime nga 4 bateri AA Shumë opsione të Gateway dhe Modem në dispozicion

Hapi 4: Firmware ESP32 AWS

Për t'u lidhur me AWS dhe për të filluar dërgimin e të dhënave kaloni hapat e mëposhtëm

  • Shkarkoni bibliotekën AWS nga depoja e mëposhtme Github
  • klononi repon dhe vendoseni skedarin AWS_IOT në dosjen e bibliotekës të drejtorisë Arduino

git klon

Tani le të kalojmë nëpër kodin:

  • Në këtë aplikacion, ne kemi përdorur një portal të kapur për të ruajtur kredencialet WiFi dhe për të lëvizur përmes cilësimeve të IP. Për hyrjen e hollësishme në portalin robër, mund të kaloni përmes udhëzimeve të mëposhtme.
  • Portali i kapur na jep mundësinë të zgjedhim midis cilësimeve Static dhe DHCP. Thjesht futni kredencialet si IP Static, Subnet Mask, gateway dhe Porta e Sensorit Wireless do të konfigurohet në atë IP.
  • Një faqe në internet po mbahet ku një listë që tregon rrjetet WiFi në dispozicion dhe atje RSSI. Zgjidhni rrjetin WiFi dhe fjalëkalimin dhe futni paraqit. Kredencialet do të ruhen në EEPROM dhe cilësimi IP do të ruhet në SPIFFS. Më shumë për këtë mund të gjeni në këtë udhëzues.

Hapi 5: Marrja e të dhënave të sensorit nga sensori i dridhjeve pa tel dhe temperaturës

Marrja e të dhënave të sensorit nga sensori i dridhjeve pa tel dhe temperaturës
Marrja e të dhënave të sensorit nga sensori i dridhjeve pa tel dhe temperaturës
Marrja e të dhënave të sensorit nga sensori i dridhjeve pa tel dhe temperaturës
Marrja e të dhënave të sensorit nga sensori i dridhjeve pa tel dhe temperaturës

Ne po marrim një kornizë 54-bajtësh nga Sensorët e Temperaturës dhe Vibrimit pa Tel. Ky kuadër është manipuluar për të marrë të dhënat aktuale të temperaturës dhe dridhjeve.

ESP32 ka tre UART në dispozicion për përdorim serik

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

dhe 3 porte serike të harduerit

  • Serial
  • Seriali 1
  • Seriali 2

Së pari, inicializoni skedarin e kokës së serialit të harduerit. Këtu do të përdorim RX2 dhe TX2 aka. GPIO 16 dhe GPIO 17 kunjat e bordit ESP32 për të marrë të dhënat serike.

#përfshi

# përcakto RXD2 16 # përcakto TXD2 17

Serial2.fill (115200, SERIAL_8N1, RXD2, TXD2); // kunjat 16 rx2, 17 tx2, 19200 bps, 8 bit pa paritet 1 bit ndalues

Hapat e mëposhtëm do t'ju çojnë më tej për të marrë vlerat e vërteta të sensorit

  • Krijoni variabla për ruajtjen e temperaturës, lagështisë, baterisë dhe vlerave të tjera të sensorit
  • Vendosni Rx, pin tx, normën e baud dhe bitët e barazisë për serialin e harduerit
  • Së pari, kontrolloni që ka diçka për të lexuar duke përdorur Serial1.available ()
  • Ne do të marrim kuadrin prej 54 bajtësh.
  • Kontrolloni për 0x7E që është bajti i fillimit.
  • Të dhënat e dridhjeve përbëhen nga vlera RMS për boshtin 3, vlerat min për 3 boshtet, vlerat maksimale për 3 boshtet.
  • vlerat e temperaturës dhe baterisë do të përmbajnë 2 bajt të dhëna
  • merrni emrin e sensorit, llojin, versioni i sensorit do të përmbajë 1 bajt të dhëna dhe mund të merret nga atje adresa përkatëse

nëse (Serial2.disponueshëm ()) {Serial.println ("Lexo Serialin"); të dhënat [0] = Serial2.read (); vonesa (k); if (të dhënat [0] == 0x7E) {Serial.println ("Got Paketë"); ndërsa (! Serial2.i disponueshëm ()); për (i = 1; i <55; i ++) {të dhënat = Serial2.lex (); vonesa (1); } nëse (të dhënat [15] == 0x7F) /////// për të kontrolluar nëse të dhënat e nxjerra janë të sakta {nëse (të dhënat [22] == 0x08) //////// sigurohuni që lloji i sensorit është e saktë {rms_x = ((uint16_t) (((të dhënat [24]) << 16) + ((të dhënat [25]) << 8) + (të dhënat [26]))/100); rms_y = ((uint16_t) (((të dhënat [27]) << 16) + ((të dhënat [28]) << 8) + (të dhënat [29]))/100); rms_z = ((uint16_t) (((të dhënat [30]) << 16) + ((të dhënat [31]) << 8) + (të dhënat [32]))/100); int16_t max_x = ((uint16_t) (((të dhënat [33]) << 16) + ((të dhënat [34]) << 8) + (të dhënat [35]))/100); int16_t max_y = ((uint16_t) (((të dhënat [36]) << 16) + ((të dhënat [37]) << 8) + (të dhënat [38]))/100); int16_t max_z = ((uint16_t) (((të dhënat [39]) << 16) + ((të dhënat [40]) << 8) + (të dhënat [41]))/100);

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

cTemp = ((((të dhënat [51]) * 256) + të dhënat [52])); bateri notuese = ((të dhëna [18] * 256) + të dhëna [19]); tension = 0.00322 * bateri; Serial.print ("Numri i sensorit"); Serial.println (të dhënat [16]); senseNumber = të dhëna [16]; Serial.print ("Lloji i sensorit"); Serial.println (të dhënat [22]); Serial.print ("Versioni i firmuerit"); Serial.println (të dhënat [17]); Serial.print ("Temperatura në Celsius:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("Dridhja e RMS në boshtin X:"); Serial.print (rms_x); Serial.println ("mg"); Serial.print ("Dridhja e RMS në boshtin Y:"); Serial.print (rms_y); Serial.println ("mg"); Serial.print ("Dridhja e RMS në boshtin Z:"); Serial.print (rms_z); Serial.println ("mg");

Serial.print ("Dridhje minimale në boshtin X:");

Serial.print (min_x); Serial.println ("mg"); Serial.print ("Dridhje minimale në boshtin Y:"); Serial.print (min_y); Serial.println ("mg"); Serial.print ("Dridhje minimale në boshtin Z:"); Serial.print (min_z); Serial.println ("mg");

Serial.print ("Vlera ADC:");

Serial.println (bateri); Serial.print ("Tensioni i baterisë:"); Serial.print (tension); Serial.println ("\ n"); if (tension <1) {Serial.println ("Koha për të zëvendësuar baterinë"); }}} tjetër {për (i = 0; i <54; i ++) {Serial.print (të dhënat ); Serial.print (","); vonesa (1); }}}}

Hapi 6: Lidhja me AWS

Po lidhet me AWS
Po lidhet me AWS
  • Përfshi skedarët e kokës AWS_IOT.h, WiFi.h për të krijuar një lidhje me qendrën AWSIoT
  • Vendosni adresën tuaj të hostit, ID -në e klientit i cili do të jetë emri i politikës dhe emrin e temës që do të jetë emri i sendit

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

Krijoni një ndryshore char për të ruajtur JSON tuaj, në këtë rast, ne kemi krijuar një format për të ruajtur JSON

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

Krijoni një shembull të klasës AWS_IOT

AWS_IOT esp; // Instanca e klasës AWS_IOT

Tani lidheni me qendrën AWSIoT duke përdorur metodën e mëposhtme

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Lidhur me AWS"); vonesa (1000);

nëse (0 == hornbill.subscribe (TOPIC_NAME, mySubCallBackHandler))

{Serial.println ("Abonohu me sukses"); } else {Serial.println ("Abonimi dështoi, kontrolloni emrin e sendit dhe certifikatat"); ndërsa (1); }} else {Serial.println ("Lidhja AWS dështoi, kontrolloni adresën HOST"); ndërsa (1); }

vonesa (2000);

}

publikoni të dhënat e sensorit pas çdo 1 minutë

nëse (shënoni> = 60) // publikoni në temë çdo 5 sekonda {shënoni = 0; ngarkesë me ngarkesë [PAYLOAD_MAX_LEN]; snprintf (ngarkesa, PAYLOAD_MAX_LEN, format, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, tension); Serial.println (ngarkesa); if (hornbill.publish (TOPIC_NAME, ngarkesa) == 0) {Serial.print ("Publiko Mesazhin:"); Serial.println (ngarkesa); } else {Serial.println ("Publikimi dështoi"); }} vTaskDelay (1000 / portTICK_RATE_MS); shënoni ++;

Hapi 7: Vizualizimi i të dhënave në AWS

Vizualizimi i të dhënave në AWS
Vizualizimi i të dhënave në AWS
Vizualizimi i të dhënave në AWS
Vizualizimi i të dhënave në AWS
Vizualizimi i të dhënave në AWS
Vizualizimi i të dhënave në AWS
  • Hyni në llogarinë tuaj AWS.
  • në këndin e majtë të shiritit të veglave, do të gjeni skedën Shërbimet
  • Klikoni në këtë skedë dhe nën titullin Internet of Things zgjidhni IoT Core.
  • Zgjidhni QoS dhe nr. mesazhe për pajtimtarët. Shkruani emrin e temës.

Hapi 8: Kodi i përgjithshëm

Ju mund të gjeni kodin e përgjithshëm në këtë depo të Github.

Kredite

  • Arduino Json
  • Sensorë të temperaturës dhe lagështisë me valë
  • ESP32
  • PubSubClient

Recommended: