- Potrebni materiali:
- Programiranje mikrokrmilnika PIC:
- Funkcije v knjižnici ESP8266:
- Vzorčni program:
- Izhod za simulacijo:
- Izhodno preverjanje:
- Dodajanje funkcij v knjižnico ESP8266:
V tem članku bomo razpravljali o tem, kako povezati modul WIFI ESP8266 z mikrokrmilnikom PIC. Doslej ste morda uporabljali modul ESP8266 kot samostojni mikrokrmilnik ali pa ste ga uporabljali s knjižnico Arduino. Ko pa gre za trdo vgrajene sistemske projekte, bi morali vedeti, kako jih uporabiti tudi z mikrokrmilniki PIC. To vam bo pomagalo, da svoje projekte prilagodite z vidika oblikovanja, hkrati pa jih boste pocenili.
Moduli ESP8266 imajo privzeto vdelano programsko opremo, zato lahko modul programiramo z ukazi AT. Te ukaze je treba poslati prek serijskega komunikacijskega kanala. Ta kanal se vzpostavi med PIC in modulom ESP8266 z uporabo modula USART v mikrokrmilniku PIC . Celotno delo bo nadzorovano in uporabniku prijavljeno z uporabo LCD zaslona 16x2. Zato ta vadnica predpostavlja, da imate nekaj osnovnega znanja o modulu USART v PIC, povezovanju LCD-ja s PIC in uporabi ukazov AT v ESP8266. Če tega ne storite, se lahko vrnete na povezane vaje in se jih prej naučite.
Potrebni materiali:
Za dokončanje te vadnice boste potrebovali naslednjo strojno opremo
- PIC16F877A
- 20MHz kristalni oscilator
- 7805
- LM317
- ESP8266
- 16 * 2 LCD zaslon
- Programer PicKit3
- Upori (1K, 220ohm, 360ohm)
- Kondenzatorji (1uF, 0,1uF, 33pF)
- Jumper žice
- 12V adapter za napajanje modulov PIC in ESP
Strojna oprema:
Celotna shema projekta je prikazana tukaj spodaj
Sheme so sestavljene iz dveh vezij napetostnega regulatorja, eno je + 5V regulator, ki se uporablja za napajanje mikrokrmilnika PIC, drugo pa 3.3V regulator, ki napaja modul ESP8266. + 5V se uravnava s pomočjo 7805 (IC linearnega napetostnega regulatorja). 3.3V se regulira z uporabo LM317 (Variable Voltage Regulator). Modul ESP8266 porabi veliko toka (~ 800mA), zato, če načrtujete lastno napajanje, se prepričajte, da lahko napaja tako visok tok. Prepričajte se tudi, da so ozemljitveni zatiči PIC in modula ESP8266 povezani.
Zdaj vemo, da PIC deluje na + 5V, ESP8266 pa na 3,3V voltov. Za vzpostavitev komunikacije USART med tema moduloma potrebujemo vezje logičnega pretvornika 5V - 3,3V, kot je prikazano na zgornji sliki. To vezje ni nič drugega kot potencialni delilnik, ki preprosto pretvori dohodnih + 5V v 3,3V. To bo preprečilo, da bi 3,3-voltni RX-pin ESP8266 dobil + 5V.
Module PIC in ESP sem izdelal na dveh ločenih perf ploščah, kot je prikazano v teh vadnicah. Tako jih lahko univerzalno uporabim za več podobnih projektov
- LED strojna oprema s PIC
- Uvod v ESP8266
Lahko sledite istemu, zgradite svojo tablo v svojem slogu ali zgoraj povežete zgornje vezje s ploščo.
Programiranje mikrokrmilnika PIC:
Za programiranje mikrokrmilnika PIC za serijsko pošiljanje »ukazov AT« s pomočjo USART na modul ESP8266 moramo uporabiti knjižnico. Ta knjižnica vam bo prihranila veliko težav, na primer z uporabo modulov z navodili ESP8266 za preverjanje vsakega ukaza AT in nato iskanje načina za njihov prenos v modul ESP. Ta knjižnica je brezplačna programska oprema, ki jo je prvotno razvil Camil Staps, kasneje pa jo je izboljšal in spremenil Circuit Digest, tako da jo lahko uporabljamo z našim mikrokrmilnikom PIC16F877A. Lahko ga prenesete tukaj
Knjižnica je še v razvoju, vendar lahko v vdelani programski opremi ESP8266 uporabite večino pomembnih ukazov AT. Če ugotovite, da manjka kateri koli ukaz, ki ga potrebujete, mi ga sporočite v razdelku za komentarje in poskusil ga bom dodati za vas. Ta vadnica vam bo razložila vse ukaze (do zdaj), ki jih lahko uporablja ta knjižnica. Nadalje vas bodo vodili tudi, kako v knjižnico dodate svoje funkcije.
Funkcije v knjižnici ESP8266:
- Initialize_ESP8266 (): Ta funkcija bo inicializirala modul USART PIC za komunikacijo z modulom ESP8266. Nastavi hitrost prenosa na 115200 in pripravi Rx in Tx zatič PIC za komunikacijo USART.
- _esp8266_putch (): Ta funkcija se uporablja za serijsko pošiljanje enega znaka v modul ESP8266. Na primer, _esp8266_putch ('a') bo znak serijsko poslal modulu ESP.
- _esp8266_getch (): Ta funkcija se uporablja za pridobivanje enega znaka iz modula ESP. Na primer, če ESP tiska “OK” in uporabljamo char a = _esp8266_getch (). Potem bo znak 'o' shranjen v spremenljivki a.
- ESP8266_send_string (): Ta funkcija je nizna različica _esp8266_putch (). Na modul ESP8266 lahko pošlje en celoten niz. Na primer, ESP8266_send_string (“AT / r / n”) bo poslal modul ESP8266 ukaz “AT”.
- esp8266_isStarted (): Uporablja se za preverjanje, ali lahko PIC komunicira z modulom ESP. Pošlje ukaz "AT" in počaka na "OK", če ga prejme, vrne true, sicer vrne false.
- esp8266_restart (): ponastavi modul ESP8266 in vrne true, ponastavi se uspešno in vrne false, če ni uspešno.
- esp8266_mode (): Uporablja se za nastavitev načina delovanja modula ESP8266. Kot vemo, lahko deluje v treh različnih načinih.
Postajni način |
|
Način mehke AP |
|
Način Station in AP |
- esp8266_connect (): omogoča povezavo z wifi signalom. Na primer, esp8266_connect (“home”, “12345678”) bo modulu omogočil povezavo z wifi signalom z imenom home, katerega geslo je 12345678.
- esp8266_disconnect (): Ta funkcija odklopi modul od katere koli povezave WiFi, ki je bila prej povezana
- esp8266_ip (): Pridobi naslov IP in ga vrne. To funkcijo uporabite, če želite vedeti naslov IP modula ESP8266.
- esp8266_start (): Ta funkcija se uporablja za zagon komunikacije TCP ali UDP. Na primer esp8266_start ( "TCP", "192.168.101.110", 80) . Začel bo omrežje TCP v tem IP-ju in vrata 80.
- esp8266_send (): Ta funkcija se uporablja za pošiljanje informacij v omrežje TCP / UDP. S tem ukazom bo poslan skript HTML. Potem se bo ta skript prikazal na naslovu IP, v katerem je bila komunikacija vzpostavljena prej.
- esp8266_config_softAP (): Ta funkcija se uporablja za konfiguriranje softAP. Na primer esp8266_config_softAP (“pisarna”, “12345678”); bo ustvaril signal Wifi z imenom office in za dostop do njega morate uporabiti geslo 12345678.
- esp8266_get_stationIP (): Ta funkcija vam vrne naslov IP / MAC odjemalcev, ki so povezani z vašim softAP.
Vzorčni program:
Zdaj, ko smo razumeli funkcije vsakega ukaza v knjižnici, si oglejmo majhen vzorčni program. V tem programu bomo preverili, ali je povezava med ESP8266 in PIC uspešna, nato pa ustvarili omrežje WIFI (SoftAP) s prednostnim imenom in geslom. Za vaše razumevanje bo razložen celoten program in simulacija le-tega.
Še enkrat, če niste prebrali naše vadnice PIC za povezovanje z LCD in PIC USART, preberite, preden nadaljujete, saj bo le tako smiselno za vas.
Ker šele začenjamo povezovati PIC z ESP8266, sem z LCD-jem preveril, ali stvari delujejo pravilno.
naredite {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ni mogoče najti"); } medtem ko (! esp8266_isStarted ()); // počakamo, da ESP pošlje nazaj "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP je povezan"); __zakasnitev_ms (1500); Lcd_Clear ();
Ko modul ESP8266 pošljemo “AT”, ta odgovori z “OK”. To nam zagotavlja, da je modul ESP8266 uspešno povezan. Za isto se uporablja funkcija esp8266_isStarted (). Iz PIC-a pošljemo signal AT in počakamo, da modul ESP oživi in nam pošlje OK. Če dobimo v redu, na LCD-prikazovalniku prikažemo, da je "ESP povezan".
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nastavljen kot AP"); __zakasnitev_ms (1500); Lcd_Clear ();
Zgornje vrstice kode se uporabljajo za nastavitev modula ESP v načinu "mehke AP". Funkcija esp8266_mode (2); pošlje modulu AT ukaze "AT + CWMODE = 3" in počaka, da se modul odzove z "OK"
/ * Konfigurirajte ime in geslo dostopne točke * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP konfiguriran"); __zakasnitev_ms (1500); Lcd_Clear (); / * AP konfiguriran * /
Ta segment kode se uporablja za konfiguracijo softAP. Tu smo SSID poimenovali kot „CircuitDigest“, geslo pa kot „619007123“. Za potrditev, da je postopek končan, bomo počakali, da se modul odzove z »V redu« in nato na LCD zaslon natisnili AP, konfiguriran.
To je to, zdaj smo modul ESP8266 povezali s PIC MCU in softAP konfigurirali z imenom in geslom po naši izbiri. Kot ponavadi si lahko simuliramo to kodo in preverimo, kako deluje.
Izhod za simulacijo:
Za simulacijo izhodov uporabljamo programsko opremo Proteus. Datoteko zasnove za isto najdete v priponki.
Ker v knjižnici Proteus nimamo modula ESP8266, uporabljamo serijski terminal in se kot uporabnik odzivamo na modul PIC. Zaslon simulacije po zaključku bo videti spodaj
Izhod naše kode je prikazan v navideznem terminalu. Popolno delovanje simulacije bo razloženo v spodnjem videu.
Izhodno preverjanje:
Ko je program s simulacijo preverjen, ga zložite v svoj mikrokrmilnik PIC. Povezave vzpostavite, kot je prikazano v zgornjih shemah (razdelek Strojna oprema). Napredek bi morali spremljati prek LCD zaslona.
Ko na LCD-prikazovalniku piše, da je dostopna točka nastavljena, lahko to preverimo z nastavitvami WIFI v telefonu ali prenosnem računalniku. Moj prenosnik kaže naslednji signal v skladu z našim programom.
To je to, fantje smo modul ESP8266 uspešno povezali z mikrokrmilnikom PIC. To je zelo osnovni vmesnik in če želite z ESP8266 izvesti kakšne zapletene projekte, boste morda morali dodati lastne knjižnice ali vsaj svoje funkcije. Verjemite mi, da je to zelo enostavno, za to bom dal kratek vpogled.
Dodajanje funkcij v knjižnico ESP8266:
Če dodate svojo funkcijo, boste lažje poslali kateri koli ukaz "AT" modulu ESP8266. Za nadaljevanje morate prebrati dokumentacijo z navodili modula ESP8266. Lahko neposredno pošljete kateri koli ukaz AT, ki ga najdete v priročniku z navodili. Vedno pa ne pozabite dodati »/ r / n« na koncu vsakega ukaza AT. Na primer, če želite z modulom ESP vzpostaviti več povezav. Nato odprite dokumentacijo z navodili in poiščite, kateri ukaz AT bo to opravil namesto vas. Tu vam ukaz “AT + CIPMUX = 1” omogoča vzpostavitev več povezav z vašim modulom ESP.
Zdaj morate le poslati ta "AP + CIPMUX = 1" na svoj modul ESP8266 s pomočjo serijskih vrat. Najtežji način za to je preprosto uporabo ukaza
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
To bo delovalo, vendar ni najboljši način za to. Prebrati morate, kaj se vaš ESP8266 odziva na vaš ukaz. V našem primeru se bo odzval z "OK". Torej morate prebrati dohodne podatke iz modula ESP8266 in potrditi, da je v redu. To funkcijo lahko naredite tudi tako, da se kot argumenta posredujeta "1" ali "0".
Pojdi naprej in poskusi narediti svoje funkcije za knjižnico. Če pa potrebujete pomoč, vas prosimo, da uporabite odsek za komentarje, in jaz vam bom pomagal.