- Szükséges anyagok:
- A PIC mikrovezérlő programozása:
- Funkciók az ESP8266 könyvtárban:
- Mintaprogram:
- Szimulációs kimenet:
- Kimenet ellenőrzése:
- Funkciók hozzáadása az ESP8266 könyvtárhoz:
Ebben a cikkben vitassuk meg, hogyan csatlakoztassuk az ESP8266 WIFI modult egy PIC mikrovezérlőhöz. Eddig valószínűleg önálló mikrokontrollerként használta az ESP8266 modult, vagy az Arduino könyvtárral használhatta. De amikor a kemény beágyazott rendszer projektekről van szó, tudnunk kell, hogyan kell használni a PIC mikrovezérlőkkel is. Ez segít a projektek testreszabásában a tervezési szempontból, és egyúttal olcsóbbá is teszi.
Az ESP8266 modulok alapértelmezett firmware-t tartalmaznak, ezért AT parancsokkal programozhatjuk a modult. Ezeket a parancsokat soros kommunikációs csatornán kell elküldeni. Ez a csatorna a PIC és az ESP8266 modul között jön létre a PIC mikrokontroller USART moduljának használatával . Az egész munkát 16x2-es LCD kijelző segítségével figyeljük és jelentjük a felhasználónak. Ezért ez az oktatóanyag feltételezi, hogy van néhány alapvető ismerete a USART modulról a PIC-ben, az LCD összekapcsolása a PIC-vel és az AT parancsok használatával az ESP8266-ban. Ha nem, akkor visszatérhet a hivatkozott oktatóanyagokhoz, és előzetesen megtanulhatja őket.
Szükséges anyagok:
Az oktatóanyag végrehajtásához a következő hardverre lesz szüksége
- PIC16F877A
- 20MHz kristályoszcillátor
- 7805
- LM317
- ESP8266
- 16 * 2 LCD kijelző
- PicKit3 programozó
- Ellenállások (1K, 220ohm, 360ohm)
- Kondenzátorok (1uF, 0.1uF, 33pF)
- Jumper huzalok
- 12 V-os adapter a PIC és az ESP modul táplálásához
Hardver:
A projekt teljes vázlata itt látható
A vázlat két feszültségszabályozó áramkörből áll, az egyik egy + 5 V-os szabályozó, amelyet a PIC mikrovezérlő táplálásához használnak, a másik pedig egy 3,3 V-os szabályozó, amely az ESP8266 modult táplálja. A + 5 V-ot egy 7805 (lineáris feszültségszabályozó IC) szabályozza. A 3,3 V-ot az LM317 (változó feszültségszabályozó) szabályozza. Az ESP8266 modul sok áramot fogyaszt (~ 800mA), ezért, ha saját tápegységet tervez, győződjön meg róla, hogy ilyen nagy áramot tud forrni. Győződjön meg arról is, hogy a PIC és az ESP8266 modul földelőcsapjai össze vannak-e kötve.
Tehát most már tudjuk, hogy a PIC + 5V, az ESP8266 pedig 3,3V feszültségen működik. A két modul közötti USART kommunikáció létrehozásához 5V - 3.3V logikai átalakító áramkörre van szükségünk, amint az a fenti ábrán látható. Ez az áramkör nem más, mint egy potenciális osztó, amely egyszerűen átalakítja a bejövő + 5 V-ot 3,3 V-ra. Ez megakadályozza, hogy az ESP8266 3,3 V-os tűrhető RX-tűje + 5 V-ot kapjon.
A PIC és az ESP modulokat két különálló táblán készítettem, amint az ezekben az oktatóanyagokban látható. Így univerzálisan felhasználhatom őket hasonló projektekhez
- LED hardver PIC használatával
- Az ESP8266 használatának megkezdése
Kövesse ugyanezt, vagy elkészítheti saját stílusát, vagy egyszerűen csatlakoztathatja a fenti áramkört egy kenyérlemezhez.
A PIC mikrovezérlő programozása:
Ahhoz, hogy a PIC mikrokontrollert úgy programozzuk, hogy „AT parancsokat” küldjön sorozatosan a USART segítségével az ESP8266 modulhoz, használnunk kell egy könyvtárat. Ez a könyvtár sok problémát fog megtakarítani, például az ESP8266 utasításmodulok használatával ellenőrizheti az egyes AT parancsokat, majd megtalálja a módját, hogyan továbbíthatja azokat az ESP modulba. Ez a könyvtár egy ingyenes szoftver, amelyet eredetileg a Camil Staps fejlesztett ki, majd később a Circuit Digest fejlesztette és módosította, hogy a PIC16F877A mikrovezérlőnkkel használható legyen. Itt letöltheti
A könyvtár még fejlesztés alatt áll, de az ESP8266 firmware-ben használhatja a legtöbb fontos AT-parancsot. Ha úgy találja, hogy bármelyik parancs hiányzik, akkor tudassa velem a megjegyzés részben, és megpróbálom hozzáadni. Ez az oktatóanyag elmagyarázza az összes (eddig) parancsot, amelyeket ezen a könyvtáron keresztül használhat. A továbbiakban arra is felhívja Önt, hogy saját függvényeket vegyen fel a könyvtárba.
Funkciók az ESP8266 könyvtárban:
- Initialize_ESP8266 (): Ez a funkció inicializálja a PIC USART modulját, hogy kommunikáljon az ESP8266 modullal. 115200-ra állítja az adatátviteli sebességet, és előkészíti a PIC Rx és Tx tűjét az USART kommunikációhoz.
- _esp8266_putch (): Ez a függvény egyetlen karakter sorozatos elküldésére szolgál az ESP8266 modulhoz. Például a _esp8266_putch ('a') sorozatosan elküldi a karaktert az ESPmodulnak.
- _esp8266_getch (): Ez a funkció arra szolgál, hogy egyetlen karaktert kapjon az ESP modulból. Például, ha az ESP „OK” -t nyomtat, és a char a = _esp8266_getch () karaktert használjuk. Ezután az „o” karakter az a változóban lesz tárolva.
- ESP8266_send_string (): Ez a függvény a _esp8266_putch () karakterlánc-változata. Egy teljes sztringet küldhet az ESP8266 modulba. Például az ESP8266_send_string („AT / r / n”) elküldi az „AT” parancsot az ESP8266 modulnak.
- esp8266_isStarted (): Arra használják, hogy ellenőrizzék, a PIC képes-e kommunikálni az ESP modullal. Küldi az „AT” parancsot, és várja az „OK” szót, ha megkapta, akkor igaz értéket ad vissza, ha hamis értéket ad vissza.
- esp8266_restart (): Alaphelyzetbe állítja az ESP8266 modult, és az true értéket visszaállítja, ha a reset sikeres, és hamis, ha nem sikeres.
- esp8266_mode (): Az ESP8266 modul üzemmódjának beállítására szolgál. Mint tudjuk, három különböző módban működhet.
Állomás mód |
|
Soft AP mód |
|
Station és AP mód egyaránt |
- esp8266_connect (): Lehetővé teszi, hogy csatlakozzon egy wifi jelhez. Például az esp8266_connect („home”, „12345678”) lehetővé teszi, hogy a modul csatlakozzon az otthon nevű wifi jelhez, amelynek jelszava 12345678.
- esp8266_disconnect (): Ez a funkció leválasztja a modult minden korábban csatlakoztatott wifi-kapcsolatról
- esp8266_ip (): Megkapja és visszaadja az IP-címet. Használja ezt a funkciót, ha meg akarja tudni az ESP8266 modul IP-címét.
- esp8266_start (): Ez a funkció TCP vagy UDP kommunikáció indítására szolgál. Például esp8266_start ( "TCP", "192.168.101.110", 80) . TCP hálózatot indít abban az IP-ben és a 80-as porton.
- esp8266_send (): Ez a funkció arra szolgál, hogy információkat küldjön a TCP / UDP hálózatra. A HTML szkriptet ezzel a paranccsal küldjük el. Ezután ez a szkript megjelenik abban az IP-címben, amelyen a kommunikációt korábban létrehozták.
- esp8266_config_softAP (): Ez a funkció a softAP konfigurálására szolgál. Például esp8266_config_softAP („iroda”, „12345678”); létrehoz egy irodai nevű Wifi jelet, amelynek eléréséhez az 12345678 jelszót kell használni.
- esp8266_get_stationIP (): Ez a funkció visszaadja az Ön softAP-jához csatlakozó kliensek IP / MAC-címét.
Mintaprogram:
Most, hogy megértettük a könyvtár egyes parancsainak funkcióit, nézzünk meg egy kis mintaprogramot. Ebben a programban ellenőrizzük, hogy az ESP8266 és a PIC közötti kapcsolat sikeres-e, majd létrehozunk egy WIFI-hálózatot (SoftAP) egy preferált névvel és jelszóval. A teljes programot és annak szimulációját elmagyarázzuk az Ön számára.
Ismételten, ha még nem olvasta el az LCD és a PIC USART bemutató interfészét, kérjük, olvassa el a következőt, mielőtt folytatná, mert csak akkor lesz értelme az Ön számára.
Mivel még csak most kezdjük a PIC és az ESP8266 összekapcsolását, LCD-t használtam, hogy megbizonyosodjak a dolgok megfelelő működéséről.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nem található"); } while (! esp8266_isStarted ()); // várjon, amíg az ESP visszaküldi az "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("Az ESP csatlakoztatva van"); __késleltetési_ms (1500); Lcd_Clear ();
Amikor az „AT” -t elküldjük az ESP8266 modulnak, az „OK” -val válaszol. Ez biztosítja számunkra az ESP8266 modul sikeres csatlakoztatását. Az esp8266_isStarted () függvényt ugyanarra használják. Küldjük az AT jelet a PIC-től, és megvárjuk, amíg az ESP modul életre kel és OK-t küld nekünk. Ha OK-t kapunk, megjelenik az LCD-n az „ESP csatlakoztatva” felirat.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP beállítva AP-ként"); __késleltetési_ms (1500); Lcd_Clear ();
A fenti kódsorokat arra használjuk, hogy az ESP modult „soft AP” módban működjön. Az esp8266_mode (2) függvény; elküldi az AT „AT + CWMODE = 3” parancsokat a modulnak, és várja, hogy a modul „OK” -val válaszoljon
/ * Konfigurálja az AP nevét és jelszavát * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP konfigurálva"); __késleltetési_ms (1500); Lcd_Clear (); / * AP konfigurálva * /
A kód ezen szegmense a softAP konfigurálására szolgál. Itt az SSID-t „CircuitDigest” -nek, a jelszót pedig „619007123” -nak neveztük el. Annak jelzésére, hogy a folyamat befejeződött, megvárjuk, amíg a modul „OK” -val válaszol, majd kinyomtatjuk az LCD-képernyőre konfigurált AP-t.
Ez az, hogy most összekötöttük az ESP8266 modult a PIC MCU-val, és konfiguráltuk a softAP-ot egy választott névvel és jelszóval. Szokás szerint ezt a kódot szimulálhatjuk és megnézhetjük, hogyan működik.
Szimulációs kimenet:
A kimenet szimulálására a Proteus szoftvert használjuk. Az ugyanezhez tartozó tervfájl megtalálható a mellékletben.
Mivel a Proteus könyvtárban nincs ESP8266 modul, ezért a Serial terminált használjuk, és felhasználóként válaszolunk a PIC modulra. A szimuláció, miután elkészült, az alábbiak szerint fog kinézni
A kódunk kimenetét a Virtual terminál mutatja. A szimuláció teljes működését az alábbi videó ismerteti.
Kimenet ellenőrzése:
Miután a programot a szimulációval igazolták, dobja be a PIC mikrovezérlőjébe. Hajtsa végre a csatlakozásokat a fenti vázlatok szerint (Hardver rész). Képesnek kell lennie az LCD kijelzőn történő nyomon követésére.
Miután az LCD azt mondja, hogy az AP konfigurálva van, a Telefon vagy Laptop WIFI-beállításai segítségével ellenőrizhetjük. A laptopom a következő jelet mutatja programunk szerint.
Ez az, hogy srácok sikeresen csatlakoztattuk az ESP8266 modult a PIC mikrovezérlőhöz. Ez egy nagyon egyszerű felület, és ha bármilyen bonyolult projektet szeretne végrehajtani az ESP8266 használatával, akkor hozzá kell adnia saját könyvtárakat, vagy legalább hozzá kell adnia a saját funkcióit. Bízz bennem, nagyon könnyű ezt megtenni, rövid betekintést adok ugyanerre.
Funkciók hozzáadása az ESP8266 könyvtárhoz:
Saját funkció hozzáadásával bármely „AT” parancsot elküldhet az ESP8266 modulba. Ennek folytatásához olvassa el az ESP8266 modul utasításkészlet-dokumentációját. Közvetlenül elküldheti bármelyik AT parancsot, amelyet az utasításkészlet kézikönyvében talál. De ne felejtsd el minden AT parancs végén feltüntetni a „/ r / n” szót. Például, ha több kapcsolatot szeretne létrehozni az ESP moduljával. Ezután nyissa meg az utasításkészlet dokumentációját, és keresse meg, melyik AT parancs hajtja végre ezt a munkát az Ön számára. Itt az „AT + CIPMUX = 1” parancs lehetővé teszi, hogy több kapcsolatot létesítsen az ESP moduljával.
Most már csak annyit kell tennie, hogy ezt az „AP + CIPMUX = 1” -t elküldi az ESP8266 modulra a soros port használatával. Ennek kemény módja a parancs egyszerű használata
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Ez működni fog, de nem ez a legjobb módszer. Vissza kell olvasnia, hogy az ESP8266 mit válaszol a parancsára. Esetünkben „OK” -val válaszol. Tehát el kell olvasnia a bejövő adatokat az ESP8266 modulból, és meg kell erősítenie, hogy az „OK”. Azt is megteheti, hogy az „1” vagy „0” argumentumként átadható.
Menjen előre, és próbálja meg elkészíteni saját függvényeit a könyvtár számára. De ha segítségre van szüksége, kérjük, bátran használja a megjegyzés részt, és én segítek.