Tartalomjegyzék:
- 1. lépés: Az AWS -fiók beállítása
- 2. lépés: Hardver és szoftver specifikációk
- 3. lépés: Vezeték nélküli rezgés- és hőmérséklet -érzékelők
- 4. lépés: ESP32 AWS firmware
- 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
- 6. lépés: Csatlakozás az AWS -hez
- 7. lépés: Az adatok megjelenítése az AWS -ben
- 8. lépés: Általános kód
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
2024 Szerző: John Day | [email protected]. Utoljára módosítva: 2024-01-30 09:42
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
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
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
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
- RX0 GPIO 3, TX0 GPIO 1
- RX1 GPIO9, TX1 GPIO 10
- 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
- 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
- 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:
Vezeték nélküli Arduino robot a HC12 vezeték nélküli modul használatával: 7 lépés
Vezeték nélküli Arduino robot a HC12 vezeték nélküli modul használatával: Hé srácok, üdv újra. Korábbi hozzászólásomban elmagyaráztam, hogy mi az a H -híd áramkör, az L293D motorvezérlő IC, a malackalapú L293D motorvezérlő IC a nagyáramú motorvezérlők vezetéséhez, és hogyan tervezheti meg és készítheti el saját L293D motorvezérlő tábláját
Távirányítású autó - Vezeték nélküli vezeték nélküli Xbox 360 vezérlővel: 5 lépés
Távirányítású autó - vezérelhető a vezeték nélküli Xbox 360 vezérlő használatával: Ezek az utasítások saját távirányítású autó létrehozásához, vezeték nélküli Xbox 360 vezérlővel vezérelhetők
Az Stm32 használatának megkezdése az Arduino IDE használatával: 3 lépés
Az Stm32 használatának megkezdése az Arduino IDE használatával: Az STM32 meglehetősen erős és népszerű tábla, amelyet az Arduino IDE támogat. De használatához telepítenie kell az stm32 táblákat az Arduino IDE -be, így ebben az utasításban elmondom, hogyan kell telepíteni az stm32 táblákat és hogyan programozni
Az IDE használatának megkezdése az NRF51822, ARM® KEIL MDK V5 + ST-Link használatával: 6 lépés
Az első lépések az IDE-vel az NRF51822, ARM® KEIL MDK V5 + ST-Link segítségével: Áttekintés Amikor elkezdtem fejleszteni egy nRF51822 alkalmazást a hobbiprojektemhez, azt tapasztaltam, hogy nincs rendszerezett információ erről a témáról. Itt szeretném megjegyezni, hogy mit értem el. Ez leírja azt, ami miatt küzdök a megvalósításért
Ötven méter hatótávolságú vezeték nélküli hozzáférési pont TP Link WN7200ND USB vezeték nélküli adapterrel Raspbian Stretch -en: 6 lépés
Ötven méter hatótávolságú vezeték nélküli hozzáférési pont TP Link WN7200ND USB vezeték nélküli adapterrel a Raspbian Stretch -en: A Raspberry Pi kiválóan alkalmas biztonságos vezeték nélküli hozzáférési pontok létrehozására, de nem rendelkezik jó hatótávolsággal, TP Link WN7200ND USB vezeték nélküli adaptert használtam annak kiterjesztéséhez. Szeretném megosztani, hogyan kell csinálniMiért akarok málna pi -t használni router helyett? T