- Szükséges anyagok:
- Ahogyan a dolgok működnek?
- Az ESP8266-01 programozása:
- Az ESP8266-01 összekapcsolása az Arduinóval:
- Arduino program és munka:
Az ESP8266-01 nagyszerű modul volt, amely csillapította minden szomjúságunkat az IOT projektek miatt. Megjelenése óta erős közösséget fejlesztett ki, és könnyen használható, olcsó és nagy teljesítményű Wi-Fi modullá fejlődött. Egy másik nyílt forráskódú platform, amely sokkal népszerűbb, az Arduino, már rengeteg projektet építenek köré. E két platform kombinálása számos innovatív projekt számára nyit kaput, így ebben az oktatóanyagban megtanuljuk, hogyan kell összekapcsolni az ESP8266-01 modult az Arduinóval. Így képesek leszünk adatokat küldeni vagy fogadni az Arduino és az Internet között.
Ezen oktatóanyag céljából az ESP8266-01 API-n keresztül olvassuk el az időt, a dátumot, a hőmérsékletet és a páratartalmat az internetről. Ezután küldje el ezeket az értékeket egy Arduino táblára, és jelenítse meg őket a 16 * 2-es LCD képernyőn. Jól hangzik !! Tehát kezdjük.
Szükséges anyagok:
- Arduino Board (bármilyen verzió)
- ESP8266-01
- FTDI programozó kártya 3,3 V opcióval
- 16x2 LCD
- Potenciométer
- Nyomógomb
- Csatlakozó vezetékek
- Kenyérlemez
Ahogyan a dolgok működnek?
Mielőtt belevágnánk, fontos tudni, hogy ez a dolog valójában hogyan fog működni. Alapvetően az ESP8266-01 modullal kell kezdenünk. Az Arduino IDE-t fogjuk használni az ESP8266 programozásához, és a kódot úgy írjuk, hogy egy API segítségével JSON-fájlt olvashasson el a http- kérelemen keresztül. Ezután megfogalmazzuk ezt a JSON fájlt, hogy csak a szükséges információkat nyerjük ki a teljes JSON fájlból.
Miután megfogalmazta az információt, kinyomtatjuk a soros kommunikáció segítségével. Ezeket a soros vonalakat ezután összekapcsolják az Arduino-val, hogy az Arduino elolvashassa az ESP8266-ból küldött információkat. Miután az információkat elolvasta és feldolgozta, megjelenítjük az LCD képernyőn.
Rendben van, ha még nem értette ezt teljesen, mert ugyanezt megtanuljuk a bemutató további részében is.
Az ESP8266-01 programozása:
Ez az oktatóanyag feltételezi, hogy van tapasztalata az ESP8266 modullal kapcsolatban. Ha nem, akkor javasoljuk, hogy olvassa el a következő három oktatóanyagot, hogy teljes mértékben megértse.
- Az ESP8266-01 használatának megkezdése
- Az ESP8266-01 programozása AT parancsokkal
- Az ESP8266-01 programozása az Arduino IDE használatával és a memória villogása
Itt megtekintheti az összes ESP8266 projektünket.
Itt fogjuk programozni az ESP8266-01 modult az Arduino IDE segítségével. Hardverhez az FTDI kártyát használjuk 3,3 V-val az ESP8266 programozásához, mivel ez nagyon egyszerűvé teszi a hardvert. Az ESP8266 és az FTDI kártya összekapcsolásának kapcsolási rajza az alábbiakban látható.
Ellenőrizze, hogy a következő feltételek teljesülnek-e
1. Az ESP8266-01 csak 3,3 V toleráns, ne használjon 5 V-ot. Tehát az FTDI-t csak 3,3 V-os módban állítsa be.
2. A GPIO_0-nak földelni kell a programozási módhoz
3. A visszaállító csapot egy gombon keresztül kell csatlakoztatni a földelő csaphoz. Ezt a gombot közvetlenül a kód feltöltése előtt meg kell nyomni. A gomb minden egyes megnyomásakor az ESP8266-01 modul kék LED-je magasra emelkedik, jelezve, hogy a modul visszaállt.
Miután a kapcsolatok elkészültek, nyissa meg az Arduino IDE-t, és ellenőrizze, hogy sikeresen feltöltheti-e a minta programot. Ha nem biztos abban, hogy az Arduino IDE használatával hogyan tölthet fel programot az ESP8266-ra, kövesse az ESP8266 programozását az Arduino alkalmazással annak megtanulásához. Ezen a ponton feltételezem, hogy sikeresen feltöltötte a blink programot.
. A teljes programot ennek az oldalnak a végén adom meg alább, és apró részletként magyarázom őket. A programhoz az Arduino JSON könyvtár fordításához is szükség van, így ha még nem adta hozzá a könyvtárat az Arduino IDE-hez, akkor adja hozzá úgy, hogy letölti az Arduino JSON könyvtárból a Github-ból.
Az ESP8266-nak kapcsolódnia kell az internethez, hogy megkapja az adatokat a dátumról, az időről, a hőmérsékletről és a páratartalomról. Tehát meg kell engednie, hogy csatlakozzon a Wi-Fi-hez az SSID és a Jelszó igazolásával az alábbi sorokban
const char * ssid = "JIO-Fi"; // Írja be Wi-Fi SSID-jét const char * password = "Pas123"; // Írja be a Wi-Fi jelszavát
A setup () függvényen belül ellenőrizzük, hogy az ESP képes-e csatlakozni a Wi-Fi-hez, ha nem, akkor örökké ott fog várni, ha a soros monitorra nyomtatja a „Csatlakozás..” feliratot.
while (WiFi.status ()! = WL_CONNECTED) {// Várjon, amíg a Wi-Fi csatlakozik, késleltetés (1000); Serial.print ("Csatlakozás.."); // Csatlakozás nyomtatása.. a kapcsolat létrejöttéig }
A következő lépés a nagyon fontos lépés. Ha a Wi-Fi kapcsolat sikeres, akkor egy http get kérést kell meghívnunk, hogy elolvassuk a JSON fájlt az internetről. Ebben az oktatóanyagban a wunderground.com által biztosított API-t használom. Tehát, ha ugyanazt kívánja használni, akkor beléphet a linkekbe és regisztrálhat az ingyenes API kulcsra, vagy használhat tetszőleges API-t. Miután véglegesítette az API-t, az alábbihoz hasonló linket kap
Megjegyzés: Megváltoztattam a link API kulcsát, így ez nem fog működni. Tartsa biztonságban az API kulcsát, és ne ossza meg.
Az itteni API-t arra használom, hogy megkapjuk Chennai időjárási adatait. Bármely API-t használhat. De amikor bármelyik böngészőbe betölti az API-t, akkor JSON fájlt kell adnia. Például az API az alábbi JSON fájlt adja vissza
Előfordulhat, hogy a tied más fájlt ad vissza. Ellenőrizhetjük, hogy ezt a JSON fájlt megkapta-e az ESP8266 is, ha elolvassuk és kinyomtatjuk a JSON-t a soros monitorunkra a következő sorok használatával
int httpCode = http.GET (); // átad egy lekérési kérelmet, ha (httpCode> 0) {// Ellenőrizze a visszatérő kódot // payload = http.getString (); // Az érték tárolása a varibale hasznos terhelésen a hibakereséshez // Serial.println (hasznos teher); // A hibakeresés hasznos terhelésének kinyomtatása, különben kommentelje mindkét sort
Megjegyeztem ezeket a sorokat, mivel csak teszteléshez szükségesek. Miután megbizonyosodott arról, hogy az ESP8266 képes megszerezni a JSON-adatokat, itt az ideje az adatok megfogalmazásának. Amint láthatja, ezek az adatok hatalmasak, és az értékek többsége haszontalan, kivéve azokat, amelyekre számunkra szükség van, például dátum, idő, hőmérséklet és páratartalom.
Tehát a JSON Arduino könyvtár segítségével választjuk el a számunkra szükséges értékeket és tároljuk azt egy változóban. Ez azért lehetséges, mert a JSON fájlban szereplő értékek névérték párokként vannak hozzárendelve. Tehát ez a név egy karakterlánc, amely megtartja a számunkra szükséges értéket.
Ehhez át kell költöznünk egy weboldalra, amely elemzi a JSON fájlt, és megadja nekünk az Arduino kódot. Igen, ez olyan egyszerű. Lépjen a https://arduinojson.org/assistant/ oldalra, és illessze be a böngészőnkbe töltött JSON fájlt, és nyomja meg az Enter billentyűt. Ha kész, az enyém valami ilyesmit nézett ki alább
Görgessen kissé lefelé az automatikusan létrehozott fráziskészítő program megtekintéséhez
Csak annyit kell tennie, hogy kiválasztja a kívánt változót, átmásolja és beilleszti Arduino IDE-jére, ahogy itt
/ * Adatok megfogalmazása a JSON függvénytár használatával + 2 * JSON_OBJECT_SIZE (3) + JSON_OBJECT_SIZE (8) + JSON_OBJECT_SIZE (12) + JSON_OBJECT_SIZE (56) + 2160; DynamicJsonBuffer jsonBuffer (bufferSize); JsonObject & root = jsonBuffer.parseObject (http.getString ()); / * Az adatok megfogalmazásának vége * / // Címezze a sin értéket a kívánt változókra JsonObject & current_observation = root; // a jelenlegi_megfigyelés alatt JsonObject & current_observation_observation_location = aktuális_megfigyelés; // megfigyelés alatt_helyszín const char * current_observation_station_id = current_observation; // "ICHENNAI1" // megkapja a helymeghatározásokat const char * current_observation_local_time_rfc822 = current_observation; // Helyi idő // megkapja a helyi idő const char * current_observation_temperature_string = current_observation; // "90,7 F (32,6 C)" // megkapja a hőmérséklet érték const char * current_observation_relative_humidity = current_observation; // "73%" // megkapja a páratartalom értékét
Nemrég másoltam a current_observation_station_id, current_observation_local_time_rfc822, current_observation_temperature_string és current_observation_relative_hididity változókat. Mivel csak azt a négy adatot tervezzük megjeleníteni az LCD képernyőn.
Végül megszereztük a szükséges adatokat az internetről, és elmentettük őket egy olyan változóba, amelyet kényelmesen használhatunk. Ahhoz, hogy ezeket az adatokat elküldjük az Arduino-nak, csak sorosan kell írnunk a soros monitoron keresztül. A következő sorok pontosan ugyanezt fogják tenni
// A változók nyomtatása a Serial.print (current_observation_station_id) soros monitoron keresztül ; // küldje el a hely adatait az Arduino delay (100) címre ; // stabilitási késleltetés Serial.print (current_observation_local_time_rfc822); // küldje el a helyi idő adatait az Arduino delay (100) címre ; // stabilitási késleltetés Serial.print (current_observation_temperature_string); // küldje el a hőmérséklet részleteit az Arduino delay (100) -nak ; // stabilitási késleltetés Serial.print (aktuális_megfigyelés_relatív_nedvesség); // küldje el a páratartalom részleteit az Arduino delay (100) címre ; // stabilitás késleltetés
Ne feledje, hogy a Serial.print () fájlt használtam, nem pedig a Serial.println () parancsot, mivel a Serial.println () parancs a / n és / r fájlokat csatolja a számunkra nem szükséges adatokkal együtt. Hozzáadtunk egy 10 másodperces késleltetést is, hogy az ESP ezeket az értékeket csak 10 másodpercenként küldje el az Arduino-nak.
Az ESP8266-01 összekapcsolása az Arduinóval:
Eddig úgy programoztuk az ESP8266-01-t, hogy 10 másodpercenként olvassa el a szükséges adatokat az internetről, és sorosan küldje el őket. Most össze kell kapcsolnunk az ESP-t az Arduinóval, hogy el tudjuk olvasni ezeket a soros adatokat. Hozzá kell adnunk egy 16 * 2-es LCD-kijelzőt is az Arduino-hoz, hogy megjeleníthessük az ESP8266 modulból kapott adatokat. Az ESP8266 modul és az Arduino összekapcsolására szolgáló kapcsolási rajz az alábbiakban látható
Győződjön meg róla, hogy a GPIO_0 tű szabadon maradt. A modult csak az Arduino 3,3 V-os tűjével táplálja, majd nyomja meg a nyomógombot az ESP modul működtetési modulba helyezéséhez. Most az ESP-re feltöltött programnak el kellett kezdenie működni, és a modulnak az adatokat soros tűn keresztül kell elküldenie az Arduino-nak. Ezek a soros csapok az Arduino 6. és 7. számú csatlakozóihoz vannak csatlakoztatva. Tehát használhatjuk az Arduino szoftver soros opcióját, hogy kiolvassuk ezeket a soros adatokat a csapokról.
Arduino program és munka:
A teljes Arduino program az oldal végén található ESP kóddal együtt is meg van adva. Görgessen lefelé a program megtekintéséhez, vagy olvashat tovább, ha meg akarja érteni a programot.
Az interfész program meglehetősen egyszerű, csak a szoftver soros könyvtárát kell használnunk, hogy kiolvassuk az adatokat a 6-os és 7-es tűről, és megjelenítsük az LCD képernyőn. Mivel a beérkező adatok karakterlánc formátumban vannak, a szubsztring opciót kell használnunk, hogy a hasznos terhelést a követelményeink szerint fel lehessen bontani, vagy szükség esetén akár egész számra is konvertáljuk. Tehát azzal kezdjük, hogy meghatározzuk azokat a csapokat, amelyekhez az LCD csatlakozik.
const int rs = 8, en = 9, d4 = 10, d5 = 11, d6 = 12, d7 = 13; // Tüskék, amelyekhez az LCD van csatlakoztatva LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
Mivel mi már csatlakozik a Rx és Tx tüskéit ESP8266 a 6. és 7. -én csap Arduino van, hogy inicializálja a szoftver soros azoknak csapokat, hogy ki tudjuk fogadni a soros adat tőlük.I neveket ezt ESP_Serial, akkor nevezzen el bármit, amit csak kíván
SoftwareSerial ESP_Serial (6,7); Tx, Rx
A setup () függvényben inicializáljuk a soros kommunikációt a soros monitorhoz és a szoftveres soroshoz is. Ha emlékszel, az ESP programot 9600 baud sebességgel kommunikáltuk, így ugyanazt az átviteli sebességet kell használnunk a szoftver soros portjára. Az LCD-n 2 másodpercig egy kis bevezető üzenetet is megjelenítünk.
void setup () {lcd.begin (16, 2); // 16 * 2 LCD kijelzőt használunk: lcd.print ("Arduino & ESP"); // Bevezető üzenet megjelenítése Serial.begin (115200); ESP_Serial.begin (9600); késés (2000); lcd.clear (); }
A main loop () függvényben ellenőriznünk kell, hogy az ESP8266 küld-e valamit. Ha igen, akkor elolvassuk a karakterláncot az ESP8266-ból, és elmentjük a payload nevű változóba. A változó hasznos teher String típusú, és az ESP8266 modulból küldött teljes információt tárolja.
while (ESP_Serial.available ()> 0) {hasznos terhelés = ESP_Serial.readString ();
Most ezt a húrot apró darabokra kell bontanunk, hogy saját céljainkra felhasználhassuk őket, ebben az esetben el kell osztanunk őket, hogy megjelenítsük az LCD képernyőn. Ezt könnyen megteheti az Arduino szubsztring funkció használatával . Ahhoz, hogy használni tudja ezt az alstring függvényt, ismernie kell az egyes karakterek helyzetét. Kinyomtathatja a hasznos terhet a soros monitorra, hogy megismerje a karakterek helyzetét, és felhasználhatja őket az alsorok kategorizálására az alábbiak szerint
local_date = hasznos teher.substring (14, 20); helyi_idő = hasznos teher.substring (26, 31); hőmérséklet = hasznos teher. alhúr (48, 54); Páratartalom = hasznos teher. Alhúzás (55, 60);
Most folytathatom és használhatom ezeket a változókat akár soros monitorra, akár csak az LCD-re. A soros monitorra történő kinyomtatás azonban segít abban, hogy ellenőrizzük, hogy az alszalagok megfelelően vannak-e felosztva. Ezután csak kinyomtatjuk őket az LCD-kijelzőre a következő sorok segítségével
lcd.clear (); lcd.setCursor (1, 0); lcd.print (helyi_dátum); lcd.setCursor (8, 0); lcd.print (helyi_idő); lcd.setCursor (1, 1); lcd.print (hőmérséklet); lcd.setCursor (10, 1); lcd.print (páratartalom);
Töltse fel a programot az Arduino alkalmazásba, és ellenőrizze, hogy a kapcsolatok megegyeznek-e a fenti kapcsolási rajzon. Addig állítsa be az LCD-kijelző kontrasztját, amíg tisztán nem látja a dolgokat. Meg kell látnia a Bevezetés üzenetet az LCD-n, majd néhány másodperc múlva az alábbiak szerint meg kell jelennie a részleteknek, például a dátum, az idő, a hőmérséklet és a páratartalom az LCD-képernyőn.
Azt is észreveheti, hogy az ESP8266 kék LED-je villog minden alkalommal, amikor az Data bejön. Ha ezt nem látja, az azt jelenti, hogy az ESP nincs programozási módban, próbálja meg a Reset gombot megnyomva ellenőrizni a kapcsolatokat is.
Ehhez hasonlóan bármilyen API-t használhat arra, hogy az internetről megkapja a szükséges adatokat, és betáplálja azokat az Arduino-ba, és feldolgozza az Arduino-val végzett munkáját. Rengeteg API áll rendelkezésre az interneten, és mindazokkal korlátlan számú projektet készíthet. Remélem, megértette a projektet, és élvezte az építését. Ha bármilyen problémával szembesült, tegye közzé az alábbi megjegyzés részben vagy fórumunkon.
Az összes ESP8266 kapcsolódó projektünket itt találja.