- Potrebné materiály:
- Programovanie mikrokontroléra PIC:
- Funkcie v knižnici ESP8266:
- Ukážkový program:
- Výstup simulácie:
- Overenie výstupu:
- Pridávanie funkcií do knižnice ESP8266:
V tomto článku si ukážeme, ako prepojiť modul WIFI ESP8266 s mikrokontrolérom PIC. Doteraz ste modul ESP8266 mohli používať ako samostatný mikrokontrolér alebo ste ho mohli používať s knižnicou Arduino. Pokiaľ však ide o tvrdé projekty zabudovaného systému, mali by sme vedieť, ako ich používať aj s mikrokontrolérmi PIC. To vám pomôže prispôsobiť vaše projekty z hľadiska dizajnu a zároveň ich urobiť lacnými.
Moduly ESP8266 sa dodávajú s predvoleným firmvérom, ktorý je do nich načítaný, a preto môžeme modul programovať pomocou príkazov AT. Tieto príkazy sa musia odosielať cez sériový komunikačný kanál. Tento kanál je nadviazaný medzi PIC a modulom ESP8266 pomocou modulu USART v mikrokontroléri PIC . Celá práca bude monitorovaná a hlásená užívateľovi pomocou 16x2 LCD displeja. Preto tento tutoriál predpokladá, že máte základné znalosti o module USART v PIC, o prepojení LCD s PIC a používaní príkazov AT v ESP8266. Ak tak neurobíte, môžete sa vrátiť k prepojeným tutoriálom a vopred sa ich naučiť.
Potrebné materiály:
Na absolvovanie tohto tutoriálu by ste potrebovali nasledujúci hardvér
- PIC16F877A
- 20MHz kryštálový oscilátor
- 7805
- LM317
- ESP8266
- 16 * 2 LCD displej
- Programátor PicKit3
- Rezistory (1K, 220ohm, 360ohm)
- Kondenzátory (1uF, 0,1uF, 33pF)
- Prepojovacie vodiče
- 12V adaptér na napájanie PIC a ESP modulu
Hardvér:
Kompletná schéma projektu je uvedená nižšie
Schéma pozostáva z dvoch obvodov regulátora napätia, jeden je regulátor + 5V, ktorý sa používa na napájanie mikrokontroléra PIC a druhý je regulátor 3,3 V, ktorý napája modul ESP8266. Napätie + 5 V je regulované pomocou 7805 (integrovaný obvod regulátora lineárneho napätia). 3,3 V sa reguluje pomocou regulátora variabilného napätia LM317. Modul ESP8266 spotrebúva veľké množstvo prúdu (~ 800 mA), takže ak si navrhujete svoj vlastný zdroj napájania, uistite sa, že môže napájať taký vysoký prúd. Uistite sa tiež, že uzemňovacie kolíky PIC a modulu ESP8266 sú navzájom spojené.
Takže teraz vieme, že PIC pracuje na + 5V a ESP8266 na 3,3V voltoch. Na nadviazanie USART komunikácie medzi týmito dvoma modulmi potrebujeme obvod logického prevodníka 5V - 3,3V, ako je znázornené na obrázku vyššie. Tento obvod nie je nič iné ako delič potenciálov, ktorý jednoducho prevádza prichádzajúcich + 5 V na 3,3 V. To zabráni tomu, aby kolík RX tolerovateľný na 3,3 V ESP8266 dostal + 5V.
Vyrobil som moduly PIC a ESP na dvoch samostatných doskách perf, ako ukazuje tento návod. Takto ich môžem univerzálne použiť pre viac podobných projektov
- LED hardvér využívajúci PIC
- Začíname s ESP8266
Môžete postupovať podľa toho istého príkladu alebo si postaviť vlastnú dosku vo svojom štýle alebo jednoducho pripojiť vyššie uvedený okruh k nepájivému poli.
Programovanie mikrokontroléra PIC:
Aby sme mohli naprogramovať mikrokontrolér PIC na sériové zasielanie „AT príkazov“ pomocou USART do modulu ESP8266, musíme použiť knižnicu. Táto knižnica vám ušetrí veľa problémov, napríklad pomocou inštrukčných modulov ESP8266 skontrolovať každý príkaz AT a potom nájsť spôsob, ako ich preniesť do modulu ESP. Táto knižnica je slobodný softvér, ktorý pôvodne vyvinul Camil Staps. Neskôr ho vylepšil a upravil program Circuit Digest tak, aby ho bolo možné použiť s našim mikrokontrolérom PIC16F877A. Môžete si ho stiahnuť tu
Knižnica je stále vo vývoji, ale vo firmvéri ESP8266 môžete použiť väčšinu dôležitých AT príkazov. Ak zistíte, že chýba niektorý z príkazov, ktoré potrebujete, dajte mi vedieť v sekcii komentárov a pokúsim sa ho pre vás pridať. V tomto výučbe vám vysvetlíme všetky doterajšie príkazy, ktoré možno v tejto knižnici používať. Ďalej vás tiež prevedie pridaním vlastných funkcií do knižnice.
Funkcie v knižnici ESP8266:
- Initialize_ESP8266 (): Táto funkcia inicializuje modul USART PIC na komunikáciu s modulom ESP8266. Nastavuje prenosovú rýchlosť na 115200 a pripravuje kolíky Rx a Tx PIC na komunikáciu USART.
- _esp8266_putch (): Táto funkcia sa používa na sériové odoslanie jedného znaku do modulu ESP8266. Napríklad _esp8266_putch ('a') odošle znak sériovo do modulu ESP.
- _esp8266_getch (): Táto funkcia sa používa na získanie jedného znaku z modulu ESP. Napríklad ak ESP tlačí „OK“ a použijeme char a = _esp8266_getch (). Potom sa znak „o“ uloží do premennej a.
- ESP8266_send_string (): Táto funkcia je reťazcovou verziou _esp8266_putch (). Môže odoslať jeden kompletný reťazec do modulu ESP8266. Napríklad ESP8266_send_string („AT / r / n“) odošle príkaz „AT“ do modulu ESP8266.
- esp8266_isStarted (): Používa sa na kontrolu, či PIC môže komunikovať s modulom ESP. Pošle príkaz „AT“ a po prijatí počká na „OK“, vráti true, inak vráti false.
- esp8266_restart (): Resetuje modul ESP8266 a vráti hodnotu true, resetuje sa úspešne a vráti hodnotu false, ak nie je úspešná.
- esp8266_mode (): Používa sa na nastavenie pracovného režimu modulu ESP8266. Ako vieme, môže pracovať v troch rôznych režimoch.
Režim stanice |
|
Mäkký režim AP |
|
Stanica aj režim AP |
- esp8266_connect (): Umožňuje vám pripojiť sa k signálu wifi. Napríklad esp8266_connect („domov“, „12345678“) umožní vášmu modulu pripojiť sa k wifi signálu s názvom domov, ktorého heslo je 12345678.
- esp8266_disconnect (): Táto funkcia odpojí váš modul od ľubovoľného wifi pripojenia, ktoré bolo predtým pripojené
- esp8266_ip (): Získa adresu IP a vráti ju. Túto funkciu použite, ak chcete poznať adresu IP modulu ESP8266.
- esp8266_start (): Táto funkcia sa používa na spustenie komunikácie TCP alebo UDP. Napríklad esp8266_start ( "TCP", "192.168.101.110", 80) . Spustí sieť TCP v tejto IP a porte 80.
- esp8266_send (): Táto funkcia sa používa na zasielanie informácií do siete TCP / UDP. Pomocou tohto príkazu sa odošle skript HTML. Potom sa tento skript zobrazí na adrese IP, na ktorej bola predtým nadviazaná komunikácia.
- esp8266_config_softAP (): Táto funkcia sa používa na konfiguráciu softAP. Napríklad esp8266_config_softAP („office“, „12345678“); vytvorí signál Wifi s názvom office a na prístup k nemu by sa malo použiť heslo 12345678.
- esp8266_get_stationIP (): Táto funkcia vám vráti IP / MAC adresu klientov, ktorí sú pripojení k vášmu softAP.
Ukážkový program:
Teraz, keď sme pochopili funkcie každého príkazu v knižnici, pozrime sa na malý ukážkový program. V tomto programe skontrolujeme, či je spojenie medzi ESP8266 a PIC úspešné, a potom vytvoríme sieť WIFI (SoftAP) s preferovaným menom a heslom. Pre vaše pochopenie bude vysvetlený kompletný program a jeho simulácia.
Pokiaľ ste si ešte nečítali náš návod na prepojenie PIC s LCD a PIC USART, prečítajte si predtým, než budete pokračovať, pretože len potom vám to bude dávať zmysel.
Pretože ešte len začíname s rozhraním PIC s ESP8266, použil som LCD, aby som sa ubezpečil, že veci fungujú správne.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nenájdené"); } while (! esp8266_isStarted ()); // počkaj, až ESP pošle späť „OK“ Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP je pripojený"); __delay_ms (1 500); Lcd_Clear ();
Keď pošleme „AT“ do modulu ESP8266, odpovie späť „OK“. To nám zaisťuje úspešné pripojenie modulu ESP8266. Na to isté sa používa funkcia esp8266_isStarted (). Posielame signál AT z PIC a čakáme na oživenie modulu ESP a pošleme nám OK. Ak dostaneme OK, na LCD displeji zobrazíme „ESP je pripojený“.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nastavené ako AP"); __delay_ms (1 500); Lcd_Clear ();
Vyššie uvedené riadky kódu sa používajú na nastavenie modulu ESP na prácu v režime „mäkkého AP“. Funkcia esp8266_mode (2); pošle AT príkazy „AT + CWMODE = 3“ do modulu a počká, kým modul odpovie „OK“
/ * Nakonfigurujte názov prístupového bodu a heslo * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP nakonfigurovaný"); __delay_ms (1 500); Lcd_Clear (); / * Konfigurovaný AP * /
Tento segment kódu sa používa na konfiguráciu softAP. Tu sme pomenovali SSID ako „CircuitDigest“ a heslo ako „619007123“. Aby sme naznačili, že proces je dokončený, počkáme, kým modul odpovie „OK“, a potom vytlačíme AP nakonfigurovaný na obrazovku LCD.
To je všetko, teraz sme prepojili modul ESP8266 s PIC MCU a nakonfigurovali sme softAP s menom a heslom podľa nášho výberu. Ako obvykle umožňuje tento kód simulovať a zistiť, ako funguje.
Výstup simulácie:
Na simuláciu výstupu používame softvér Proteus. Súbory s podobnými návrhmi nájdete v prílohe.
Pretože v knižnici Proteus nemáme modul ESP8266, použili sme sériový terminál a ako užívateľ reagujeme späť na modul PIC. Po dokončení bude simulácia vyzerať nižšie
Výstup nášho kódu sa zobrazuje vo virtuálnom termináli. Kompletné fungovanie simulácie bude vysvetlené vo videu nižšie.
Overenie výstupu:
Po overení programu pomocou simulácie ho vložte do svojho mikrokontroléra PIC. Pripojte káble tak, ako je to znázornené na schémach vyššie (časť Hardvér). Mali by ste byť schopní sledovať váš pokrok cez LCD displej.
Len čo LCD zobrazí, že je AP nakonfigurovaný, môžeme to skontrolovať pomocou nastavení WIFI v telefóne alebo notebooku. Môj laptop zobrazuje nasledujúci signál podľa nášho programu.
To je to, že sme úspešne prepojili modul ESP8266 s mikrokontrolérom PIC. Toto je veľmi základné rozhranie a ak chcete pomocou ESP8266 robiť nejaké zložité projekty, možno budete musieť pridať svoje vlastné knižnice alebo aspoň svoje vlastné funkcie. Verte mi, že je to veľmi ľahké, za to isté poskytnem stručný prehľad.
Pridávanie funkcií do knižnice ESP8266:
Pridanie vlastnej funkcie vám pomôže poslať akýkoľvek príkaz „AT“ do modulu ESP8266. Aby ste mohli pokračovať, musíte si prečítať dokumentáciu k súboru inštrukcií modulu ESP8266. Môžete priamo poslať akýkoľvek príkaz AT, ktorý nájdete v príručke k tejto inštrukčnej sade. Nezabudnite však na konci každého príkazu AT pridať „/ r / n“. Napríklad ak chcete nadviazať viac spojení s vašim modulom ESP. Potom otvorte dokumentáciu sady pokynov a vyhľadajte náš príkaz AT, ktorý za vás urobí túto prácu. Tu vám príkaz „AT + CIPMUX = 1“ umožní nadviazať viac spojení s vašim modulom ESP.
Všetko, čo musíte urobiť, je poslať tento „AP + CIPMUX = 1“ do vášho modulu ESP8266 pomocou sériového portu. Najnáročnejším spôsobom, ako to dosiahnuť, je jednoduché použitie príkazu
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Toto bude fungovať, ale nie je to najlepší spôsob, ako to urobiť. Musíte si prečítať, čo váš ESP8266 reaguje na váš príkaz. V našom prípade odpovie „OK“. Musíte si prečítať prichádzajúce dáta z modulu ESP8266 a potvrdiť, že sú „v poriadku“. Môžete tiež vytvoriť túto funkciu, kde ako argumenty možno zadať „1“ alebo „0“.
Pokračujte a skúste si pre knižnicu vytvoriť vlastné funkcie. Ale ak potrebujete pomoc, neváhajte použiť sekciu komentárov a ja vám pomôžem.