- Potřebné materiály:
- Programování mikrokontroléru PIC:
- Funkce v knihovně ESP8266:
- Ukázkový program:
- Výstup simulace:
- Ověření výstupu:
- Přidání funkcí do knihovny ESP8266:
V tomto článku pojďme diskutovat o tom, jak propojit modul WIFI ESP8266 s mikrokontrolérem PIC. Doposud jste možná používali modul ESP8266 jako samostatný mikrokontrolér nebo jste jej mohli používat s knihovnou Arduino. Ale pokud jde o tvrdé projekty vestavěných systémů, měli bychom vědět, jak je používat také s mikrokontroléry PIC. To vám pomůže přizpůsobit vaše projekty z hlediska designu a zároveň také zlevnit.
Moduly ESP8266 jsou dodávány s nahraným výchozím firmwarem, a proto můžeme modul programovat pomocí AT příkazů. Tyto příkazy musí být odeslány přes sériový komunikační kanál. Tento kanál je vytvořen mezi PIC a modulem ESP8266 pomocí modulu USART v mikrokontroléru PIC . Celá práce bude sledována a reportována uživateli pomocí 16x2 LCD displeje. Proto tento výukový program předpokládá, že máte základní znalosti o modulu USART v PIC, propojování LCD s PIC a používání AT příkazů v ESP8266. Pokud tak neučiníte, můžete se vrátit k propojeným výukovým programům a předem se je naučit.
Potřebné materiály:
K dokončení tohoto kurzu budete potřebovat následující hardware
- PIC16F877A
- 20MHz krystalový oscilátor
- 7805
- LM317
- ESP8266
- 16 * 2 LCD displej
- Programátor PicKit3
- Rezistory (1K, 220ohm, 360ohm)
- Kondenzátory (1uF, 0,1uF, 33pF)
- Propojovací vodiče
- 12V adaptér pro napájení PIC a ESP modulu
Hardware:
Kompletní schéma projektu je uvedeno níže
Schémata se skládají ze dvou obvodů regulátoru napětí, jeden je regulátor + 5V, který se používá k napájení mikrokontroléru PIC a druhý je regulátor 3,3 V, který napájí modul ESP8266. + 5 V je regulováno pomocí 7805 (IC Lineární regulátor napětí). 3,3 V se reguluje pomocí regulátoru proměnného napětí LM317. Modul ESP8266 spotřebovává velké množství proudu (~ 800 mA), takže pokud navrhujete vlastní zdroj napájení, ujistěte se, že může být zdrojem tak vysokého proudu. Také se ujistěte, že zemnicí kolíky PIC a modulu ESP8266 jsou propojeny dohromady.
Takže nyní víme, že PIC pracuje na + 5V a ESP8266 pracuje na 3,3V voltech. Aby bylo možné navázat komunikaci USART mezi těmito dvěma moduly, potřebujeme obvod logického převodníku 5V - 3,3V, jak je znázorněno na obrázku výše. Tento obvod není nic jiného než potenciální dělič, který jednoduše převádí příchozí + 5 V na 3,3 V. To zabrání tomu, aby kolík RX tolerovatelný na 3,3 V ESP8266 dostal + 5V.
Vytvořil jsem moduly PIC a ESP na dvou samostatných deskách perf, jak je ukázáno v těchto tutoriálech. Tímto způsobem je mohu univerzálně použít pro více podobných projektů
- LED hardware využívající PIC
- Začínáme s ESP8266
Můžete postupovat stejně, nebo si vytvořit vlastní desku ve svém stylu nebo jednoduše připojit výše uvedený obvod k prkénku na prkénko.
Programování mikrokontroléru PIC:
Abychom mohli naprogramovat mikrokontrolér PIC na sériové odesílání „AT příkazů“ pomocí USART do modulu ESP8266, musíme použít knihovnu. Tato knihovna vám ušetří spoustu potíží, například pomocí instrukčních modulů ESP8266 zkontrolovat každý příkaz AT a poté najít způsob, jak je přenést do modulu ESP. Tato knihovna je svobodný software původně vyvinutý společností Camil Staps a později ji vylepšil a upravil Circuit Digest, aby ji bylo možné použít s naším mikrokontrolérem PIC16F877A. Zde si jej můžete stáhnout
Knihovna je stále ve vývoji, ale ve firmwaru ESP8266 můžete použít většinu důležitých AT příkazů. Pokud zjistíte, že některý z příkazů, které potřebujete, chybí, dejte mi o tom vědět v sekci komentářů a pokusím se ho přidat za vás. Tento výukový program vám vysvětlí všechny příkazy (dosud), které lze použít prostřednictvím této knihovny. Dále vás také provede přidáním vlastních funkcí do knihovny.
Funkce v knihovně ESP8266:
- Initialize_ESP8266 (): Tato funkce inicializuje modul USART PIC pro komunikaci s modulem ESP8266. Nastavuje přenosovou rychlost na 115200 a připravuje kolíky Rx a Tx PIC na komunikaci USART.
- _esp8266_putch (): Tato funkce se používá k sériovému odeslání jednoho znaku do modulu ESP8266. Například _esp8266_putch ('a') pošle znak sériově ESPmodule.
- _esp8266_getch (): Tato funkce se používá k získání jediného znaku z modulu ESP. Například pokud ESP tiskne „OK“ a používáme char a = _esp8266_getch (). Poté bude znak 'o' uložen do proměnné a.
- ESP8266_send_string (): Tato funkce je řetězcová verze _esp8266_putch (). Může odeslat jeden kompletní řetězec do modulu ESP8266. Například ESP8266_send_string („AT / r / n“) odešle do modulu ESP8266 příkaz „AT“.
- esp8266_isStarted (): Slouží ke kontrole, zda PIC může komunikovat s modulem ESP. Posílá příkaz „AT“ a čeká na „OK“, pokud je přijat, vrátí hodnotu true, jinak vrátí hodnotu false.
- esp8266_restart (): Resetuje modul ESP8266 a vrátí true je reset úspěšný a vrátí false pokud není úspěšný.
- esp8266_mode (): Používá se k nastavení pracovního režimu modulu ESP8266. Jak víme, může fungovat ve třech různých režimech.
Režim stanice |
|
Režim měkkého AP |
|
Stanice i režim AP |
- esp8266_connect (): Umožňuje připojení k signálu wifi. Například esp8266_connect („home“, „12345678“) umožní vašemu modulu připojit se k wifi signálu s názvem home, jehož heslo je 12345678.
- esp8266_disconnect (): Tato funkce odpojí váš modul od jakéhokoli připojení wifi, které bylo dříve připojeno
- esp8266_ip (): Získá adresu IP a vrátí ji. Tuto funkci použijte, pokud chcete znát IP adresu modulu ESP8266.
- esp8266_start (): Tato funkce se používá ke spuštění komunikace TCP nebo UDP. Například esp8266_start ( "TCP", "192.168.101.110", 80) . Spustí síť TCP v této IP a portu 80.
- esp8266_send (): Tato funkce se používá k odesílání informací do sítě TCP / UDP. Pomocí tohoto příkazu bude odeslán skript HTML. Poté se tento skript zobrazí na adrese IP, na které byla komunikace navázána dříve.
- esp8266_config_softAP (): Tato funkce se používá ke konfiguraci softAPu. Například esp8266_config_softAP („office“, „12345678“); vytvoří Wifi signál s názvem office a pro jeho přístup by mělo být použito heslo 12345678.
- esp8266_get_stationIP (): Tato funkce vám vrátí IP / MAC adresu klientů, kteří jsou připojeni k vašemu softAP.
Ukázkový program:
Nyní, když jsme porozuměli funkcím každého příkazu v knihovně, pojďme se podívat do malého ukázkového programu. V tomto programu zkontrolujeme, zda je spojení mezi ESP8266 a PIC úspěšné, a poté vytvoříme síť WIFI (SoftAP) s preferovaným jménem a heslem. Celý program a jeho simulace budou pro vaše pochopení vysvětleny.
Pokud jste si ještě nečetli náš návod PIC o propojení s LCD a PIC USART, přečtěte si prosím, než budete pokračovat, protože to vám bude dávat smysl.
Jelikož teprve začínáme propojovat PIC s ESP8266, použil jsem LCD, abych se ujistil, že věci fungují správně.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nebyl nalezen"); } while (! esp8266_isStarted ()); // počkat, až ESP pošle zpět „OK“ Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP je připojen"); __delay_ms (1500); Lcd_Clear ();
Když pošleme „AT“ do modulu ESP8266, odpoví zpět „OK“. Tím je zajištěno, že modul ESP8266 je úspěšně připojen. Funkce esp8266_isStarted () se používá pro totéž. Posíláme signál AT z PIC a čekáme, až modul ESP ožije a pošle nám OK. Pokud dostaneme OK, na LCD displeji se zobrazí „ESP je připojen“.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nastaveno jako AP"); __delay_ms (1500); Lcd_Clear ();
Výše uvedené řádky kódu slouží k nastavení modulu ESP tak, aby pracoval v režimu „soft AP“. Funkce esp8266_mode (2); pošle AT příkazy „AT + CWMODE = 3“ do modulu a čeká na odpověď modulu „OK“
/ * Nakonfigurujte název AP a heslo * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP nakonfigurováno"); __delay_ms (1500); Lcd_Clear (); / * AP nakonfigurován * /
Tento segment kódu se používá ke konfiguraci softAP. Zde jsme pojmenovali SSID jako „CircuitDigest“ a heslo jako „619007123“. Abychom označili, že je proces dokončen, počkáme, až modul odpoví „OK“, a poté vytiskneme AP nakonfigurovaný na LCD obrazovku.
To je vše, nyní jsme propojili modul ESP8266 s PIC MCU a nakonfigurovali jsme softAP podle jména a hesla podle našeho výběru. Jako obvykle umožňuje simulovat tento kód a zjistit, jak to funguje.
Výstup simulace:
K simulaci výstupu používáme software Proteus. Soubor návrhu stejného najdete v příloze.
Protože v knihovně Proteus nemáme modul ESP8266, použili jsme sériový terminál a odpověděli jsme zpět jako uživatel na modul PIC. Po dokončení bude simulace vypadat níže
Výstup našeho kódu se zobrazuje ve virtuálním terminálu. Kompletní fungování simulace bude vysvětleno ve videu níže.
Ověření výstupu:
Jakmile je program ověřen pomocí simulace, vložte jej do svého mikrokontroléru PIC. Proveďte připojení podle schémat výše (část Hardware). Měli byste být schopni sledovat svůj pokrok prostřednictvím LCD displeje.
Jakmile LCD zobrazí, že je AP nakonfigurován, můžeme to zkontrolovat pomocí nastavení WIFI v telefonu nebo notebooku. Můj laptop zobrazuje následující signál podle našeho programu.
To je to, že jsme úspěšně propojili modul ESP8266 s mikrokontrolérem PIC. Jedná se o velmi základní rozhraní a pokud chcete pomocí ESP8266 provádět jakékoli složité projekty, možná budete muset přidat své vlastní knihovny nebo alespoň přidat své vlastní funkce. Věřte mi, že je to velmi snadné, za to samé uvedu krátký pohled.
Přidání funkcí do knihovny ESP8266:
Přidání vlastní funkce vám pomůže odeslat jakýkoli příkaz „AT“ do modulu ESP8266. Chcete-li pokračovat, musíte si přečíst dokumentaci sady instrukcí modulu ESP8266. Můžete přímo odeslat jakýkoli příkaz AT, který najdete v příručce této sady instrukcí. Nezapomeňte však vždy na konec každého příkazu AT připojit „/ r / n“. Například pokud chcete navázat více spojení s modulem ESP. Poté otevřete dokumentaci sady instrukcí a najděte náš příkaz AT, který tuto práci provede za vás. Zde vám příkaz „AT + CIPMUX = 1“ umožní navázat více spojení s vaším modulem ESP.
Nyní musíte pouze poslat tento „AP + CIPMUX = 1“ na váš modul ESP8266 pomocí sériového portu. Tvrdý způsob, jak toho dosáhnout, je jednoduše pomocí příkazu
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
To bude fungovat, ale není to nejlepší způsob, jak to udělat. Musíte si přečíst, co váš ESP8266 reaguje na váš příkaz. V našem případě odpoví „OK“. Musíte tedy přečíst příchozí data z modulu ESP8266 a potvrdit, že je „v pořádku“. Můžete také vytvořit tuto funkci, kde lze jako argument předat „1“ nebo „0“.
Jděte do toho a zkuste vytvořit pro knihovnu své vlastní funkce. Pokud ale potřebujete pomoc, neváhejte použít sekci komentářů a já vám pomůžu.