Tartalomjegyzék:

Az AWS IoT használatának megkezdése a vezeték nélküli hőmérséklet -érzékelővel az MQTT használatával: 8 lépés
Az AWS IoT használatának megkezdése a vezeték nélküli hőmérséklet -érzékelővel az MQTT használatával: 8 lépés

Videó: Az AWS IoT használatának megkezdése a vezeték nélküli hőmérséklet -érzékelővel az MQTT használatával: 8 lépés

Videó: Az AWS IoT használatának megkezdése a vezeték nélküli hőmérséklet -érzékelővel az MQTT használatával: 8 lépés
Videó: Sonoff Ihost - Центр управления умным домом без доступа к интернет с Zigbee и Matter 2024, Július
Anonim
Az AWS IoT első lépései vezeték nélküli hőmérséklet -érzékelővel az MQTT használatával
Az AWS IoT első lépései vezeték nélküli hőmérséklet -érzékelővel az MQTT használatával

A korábbi Instructables -ben különböző felhőplatformokon mentünk keresztül, például Azure, Ubidots, ThingSpeak, Losant stb. Az MQTT protokollt használtuk az érzékelőadatok felhőbe küldéséhez szinte az összes felhőplatformon. Ha többet szeretne megtudni az MQTT -ről, annak előnyeiről és előnyeiről a HTTP protokollhoz képest, olvassa el ezt az útmutatót.

Ebben az utasításban egy újabb és legismertebb Amazon Web Services felhőplatformra fogunk nagyítani. Sokan ismerik az AWS -t, vagyis az Amazon Web Services szolgáltatást és az AWS által biztosított felhőfunkciókat. Ez évek óta a webfejlesztés magja. Az IoT alkalmazások növekvő léptékével az AWS az AWSIoT megoldásával rukkolt elő. Az AWSIoT megbízható megoldás IoT -alkalmazásaink tárolására.

Ennek az utasításnak a követésével:

  • AWS -fiókot állíthat be az IoT -alkalmazáshoz
  • Az ESP32 -t csatlakoztathatja az AWS IoT maghoz
  • Üzenetek küldése és fogadása MQTT és HTTP protokoll használatával
  • Vizualizálja az elküldött adatokat az AWS -ben

1. lépés: Az AWS -fiók beállítása

Az AWS fiók beállítása meglehetősen egyszerű. Csak fel kell töltenie néhány tanúsítványt, csatolnia kell hozzá házirendeket, regisztrálnia kell az eszközt, és el kell kezdenie fogadni az érzékelőadatokat az AWS -ben.

Az AWS -fiók beállításához kövesse ezt az útmutatót.

2. lépés: Hardver és szoftver specifikációk

Hardver és szoftver specifikációk
Hardver és szoftver specifikációk

Szoftver specifikáció

AWS fiók

Hardver specifikáció

  • ESP32
  • Vezeték nélküli hőmérséklet- és rezgésérzékelő
  • Zigmo Gateway vevő

3. lépés: Vezeték nélküli rezgés- és hőmérséklet -érzékelők

Vezeték nélküli rezgés- és hőmérséklet -érzékelők
Vezeték nélküli rezgés- és hőmérséklet -érzékelők

Ez egy nagy hatótávolságú ipari IoT vezeték nélküli rezgés- és hőmérséklet -érzékelő, amely akár 2 mérföldes hatótávolsággal is büszkélkedhet, vezeték nélküli háló hálózati architektúrával. A 16 bites rezgés- és hőmérséklet-érzékelőt magában foglaló érzékelő rendkívül pontos rezgési adatokat továbbít a felhasználó által meghatározott időközönként. A következő tulajdonságokkal rendelkezik:

  • Ipari fokozatú, 3 tengelyes rezgésérzékelő ± 32 g tartományban
  • Kiszámítja az RMS, MAX és MIN g rezgéseket
  • Zajeltávolítás aluláteresztő szűrővel
  • Frekvenciatartomány (sávszélesség) 12, 800 Hz -ig
  • Mintafrekvencia 25, 600 Hz -ig
  • Titkosított kommunikáció 2 mérföldes vezeték nélküli hatótávolsággal
  • Üzemi hőmérséklet -40 és +85 ° C között
  • Falra vagy mágnesre szerelt IP65 besorolású ház Példaszoftver a Visual Studio és a LabVIEW számára
  • Rezgésérzékelő külső szonda opcióval
  • Akár 500 000 sebességváltó 4 AA elemről. Sok átjáró és modem opció áll rendelkezésre

4. lépés: ESP32 AWS firmware

Az AWS -hez való csatlakozáshoz és az adatok küldésének megkezdéséhez kövesse az alábbi lépéseket

  • Töltse le az AWS könyvtárat a következő Github adattárból
  • klónozza a repót, és helyezze az AWS_IOT fájlt az Arduino könyvtár könyvtármappájába

git klón

Most nézzük végig a kódot:

  • Ebben az alkalmazásban egy rögzített portált használtunk a WiFi hitelesítő adatok mentéséhez és az IP -beállítások lebegéséhez. A Capture Portal részletes bevezetéséhez olvassa el az alábbi utasításokat.
  • A rögzített portál lehetőséget kínál a statikus és a DHCP beállítások közötti választásra. Csak adja meg a hitelesítő adatokat, például a statikus IP -t, az alhálózati maszkot, az átjárót és a vezeték nélküli érzékelő átjárót az adott IP -címen.
  • Egy weboldal található, ahol az elérhető WiFi hálózatok és az RSSI listája látható. Válassza ki a WiFi hálózatot és a jelszót, majd írja be a Küldés gombot. A hitelesítő adatok az EEPROM -ba kerülnek mentésre, az IP -beállítás pedig a SPIFFS -be. Erről bővebben ebben az oktatóanyagban olvashat.

5. lépés: Az érzékelőadatok lekérése a vezeték nélküli rezgés- és hőmérséklet -érzékelőből

Az érzékelőadatok lekérése a vezeték nélküli rezgés- és hőmérséklet -érzékelőből
Az érzékelőadatok lekérése a vezeték nélküli rezgés- és hőmérséklet -érzékelőből
Az érzékelőadatok lekérése a vezeték nélküli rezgés- és hőmérséklet -érzékelőből
Az érzékelőadatok lekérése a vezeték nélküli rezgés- és hőmérséklet -érzékelőből

54 bájtos keretet kapunk a vezeték nélküli hőmérséklet- és rezgésérzékelőktől. Ezt a keretet manipulálják, hogy megkapják a tényleges hőmérséklet- és rezgésadatokat.

Az ESP32 három UART -ot kínál soros használatra

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

és 3 hardveres soros port

  • Sorozatszám
  • Sorozat1
  • Sorozat2

Először inicializálja a Hardware Serial fejlécfájlt. Itt az RX2 és a TX2 aka -t fogjuk használni. Az ESP32 kártya GPIO 16 és GPIO 17 csapjai a soros adatok megszerzéséhez.

#befoglalni

# define RXD2 16 # define TXD2 17

Serial2.begin (115200, SERIAL_8N1, RXD2, TXD2); // csapok 16 rx2, 17 tx2, 19200 bps, 8 bit nincs paritás 1 stop bit

A következő lépések tovább vezetnek a valós érzékelőértékekhez

  • Hozzon létre változókat a hőmérséklet, páratartalom, akkumulátor és egyéb érzékelőértékek tárolására
  • Állítsa be a hardver soros Rx, tx pin, baud rate és parity bitjeit
  • Először ellenőrizze, hogy van -e olvasnivaló a Serial1.available () használatával
  • Megkapjuk az 54 bájtos keretet.
  • Ellenőrizze a 0x7E -t, amely kezdő bájt.
  • A rezgési adatok a 3 tengely RMS értékéből, 3 tengely min értékéből, 3 tengely max értékéből állnak.
  • A hőmérséklet és az akkumulátor értéke 2 bájt adatot tartalmaz
  • Az érzékelő neve, típusa, verziója 1 bájtnyi adatot tartalmaz, és onnan kapható meg a megfelelő cím

if (Serial2.available ()) {Serial.println ("Serial Read"); adatok [0] = Sorozat2.olvasás (); késleltetés (k); if (adatok [0] == 0x7E) {Serial.println ("Megvan a csomag"); while (! Serial2.available ()); for (i = 1; i <55; i ++) {data = Sorozat2.olvasás (); késleltetés (1); } if (data [15] == 0x7F) /////// annak ellenőrzésére, hogy a recive adatok helyesek -e {if (data [22] == 0x08) //////// győződjön meg arról, hogy az érzékelő típusa helyes {rms_x = ((uint16_t) (((adatok [24]) << 16) + ((adatok [25]) << 8) + (adatok [26])))/100); rms_y = ((uint16_t) (((adatok [27]) << 16) + ((adatok [28]) << 8) + (adatok [29]))/100); rms_z = ((uint16_t) (((adatok [30]) << 16) + ((adatok [31]) << 8) + (adatok [32]))/100); int16_t max_x = ((uint16_t) ((([adatok [33]) << 16) + ((adatok [34]) << 8) + (adatok [35])))/100); int16_t max_y = ((uint16_t) ((([adatok [36]) << 16) + ((adatok [37]) << 8) + (adatok [38])))/100); int16_t max_z = ((uint16_t) (((adatok [39]) << 16) + ((adatok [40]) << 8) + (adatok [41]))/100);

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

cTemp = (((([adatok [51]) * 256) + adatok [52])); úszó akkumulátor = ((adatok [18] * 256) + adatok [19]); feszültség = 0,00322 * akkumulátor; Serial.print ("Érzékelő száma"); Serial.println (adatok [16]); senseNumber = adatok [16]; Serial.print ("Érzékelő típusa"); Serial.println (adatok [22]); Serial.print ("Firmware verzió"); Serial.println (adatok [17]); Serial.print ("Hőmérséklet Celsius -ban:"); Serial.print (cTemp); Serial.println ("C"); Serial.print ("RMS rezgés X-tengelyen:"); Soros.nyomtatás (rms_x); Soros.println ("mg"); Serial.print ("RMS rezgés Y tengelyen:"); Soros.nyomat (rms_y); Soros.println ("mg"); Serial.print ("RMS rezgés Z-tengelyen:"); Soros.nyomtatás (rms_z); Soros.println ("mg");

Serial.print ("Min. Rezgés az X tengelyen:");

Soros.nyomtatás (min_x); Soros.println ("mg"); Serial.print ("Min. Rezgés az Y tengelyen:"); Soros.nyomtatás (min_y); Soros.println ("mg"); Serial.print ("Min. Rezgés Z-tengelyen:"); Soros.nyomtatás (min_z); Soros.println ("mg");

Serial.print ("ADC érték:");

Soros.println (akkumulátor); Serial.print ("Akkumulátor feszültsége:"); Soros.nyomat (feszültség); Serial.println ("\ n"); if (feszültség <1) {Serial.println ("Az akkumulátor cseréjének ideje"); }}} else {for (i = 0; i <54; i ++) {Serial.print (data ); Serial.print (","); késleltetés (1); }}}}

6. lépés: Csatlakozás az AWS -hez

Csatlakozás az AWS -hez
Csatlakozás az AWS -hez
  • Tartalmazza az AWS_IOT.h, WiFi.h fejlécfájlokat az AWSIoT hubgal való kapcsolat létrehozásához
  • Adja meg a gazdagép címét, az ügyfél azonosítóját, amely a házirend neve lesz, és a téma nevét, amely a dolog neve lesz

// ********* AWS hitelesítő adatok ************* // char HOST_ADDRESS = "a2smbp7clzm5uw-ats.iot.us-east-1.amazonaws.com"; char CLIENT_ID = "ncdGatewayPolicy"; char TOPIC_NAME = "ncdGatewayThing";

Hozzon létre egy char változót a JSON tárolásához, ebben az esetben létrehoztunk egy formátumot a JSON tárolására

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

Hozzon létre egy példányt az AWS_IOT osztályból

AWS_IOT esp; // AWS_IOT osztály példánya

Most csatlakozzon az AWSIoT hubhoz a következő módszerrel

void reconnectMQTT () {if (hornbill.connect (HOST_ADDRESS, CLIENT_ID) == 0) {Serial.println ("Connected to AWS"); késleltetés (1000);

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

{Serial.println ("Feliratkozás sikeres"); } else {Serial.println ("Feliratkozás sikertelen, ellenőrizze a dolog nevét és tanúsítványait"); míg (1); }} else {Serial.println ("Az AWS kapcsolat nem sikerült, ellenőrizze a HOST címet"); míg (1); }

késleltetés (2000);

}

tegye közzé az érzékelő adatait 1 percenként

if (tick> = 60) // 5 másodpercenként közzétenni a témában {tick = 0; szén hasznos terhelés [PAYLOAD_MAX_LEN]; snprintf (hasznos terhelés, PAYLOAD_MAX_LEN, formátum, senseNumber, msgCount ++, rms_x, rms_y, rms_z, cTemp, feszültség); Serial.println (hasznos terhelés); if (hornbill.publish (TOPIC_NAME, hasznos terhelés) == 0) {Serial.print ("Üzenet közzététele:"); Serial.println (hasznos terhelés); } else {Serial.println ("A közzététel sikertelen"); }} vTaskDelay (1000 / portTICK_RATE_MS); pipa ++;

7. lépés: Az adatok megjelenítése az AWS -ben

Adatok megjelenítése az AWS -ben
Adatok megjelenítése az AWS -ben
Adatok megjelenítése az AWS -ben
Adatok megjelenítése az AWS -ben
Adatok megjelenítése az AWS -ben
Adatok megjelenítése az AWS -ben
  • Jelentkezzen be AWS -fiókjába.
  • az eszköztár bal sarkában található a Szolgáltatások lap
  • Kattintson erre a fülre, és a tárgyak internete címsor alatt válassza az IoT Core lehetőséget.
  • Válassza ki a QoS -t és a no. az előfizetőknek küldött üzenetekből. Adja meg a téma nevét.

8. lépés: Általános kód

A teljes kódot ezen a Github -lerakaton találja.

Hitelek

  • Arduino Json
  • Vezeték nélküli hőmérséklet- és páratartalom -érzékelők
  • ESP32
  • PubSubClient

Ajánlott: