- Potrebni materijali:
- Programiranje PIC mikrokontrolera:
- Funkcije u knjižnici ESP8266:
- Uzorak programa:
- Izlaz simulacije:
- Provjera izlaza:
- Dodavanje funkcija u knjižnicu ESP8266:
U ovom ćemo članku razgovarati o tome kako povezati WIFI modul ESP8266 s PIC mikrokontrolerom. Do sada ste možda koristili modul ESP8266 kao samostalni mikrokontroler ili ste ga mogli koristiti s Arduino knjižnicom. Ali, kada je riječ o hardcore ugrađenim sistemskim projektima, trebali bismo ga znati koristiti i s PIC mikrokontrolerima. To će vam pomoći da prilagodite svoje projekte u perspektivi dizajna, a istovremeno ih i učinite jeftinima.
Moduli ESP8266 isporučuju se sa zadanim ugrađenim softverom, stoga modul možemo programirati pomoću AT naredbi. Te se naredbe moraju poslati serijskim komunikacijskim kanalom. Ovaj se kanal uspostavlja između PIC-a i ESP8266 modula korištenjem USART modula u PIC mikrokontroleru . Cjelokupni rad nadgledat će se i prijaviti korisniku upotrebom LCD zaslona 16x2. Stoga ovaj vodič pretpostavlja da imate neko osnovno znanje o USART modulu u PIC-u, povezivanju LCD-a s PIC-om i korištenju AT naredbi u ESP8266. Ako to ne učinite, možete se vratiti na povezane vodiče da biste ih prethodno naučili.
Potrebni materijali:
Za dovršetak ovog vodiča potreban vam je sljedeći hardver
- PIC16F877A
- Kristalni oscilator od 20 MHz
- 7805
- LM317
- ESP8266
- LCD zaslon od 16 * 2
- Programer PicKit3
- Otpornici (1K, 220ohm, 360ohm)
- Kondenzatori (1uF, 0,1uF, 33pF)
- Žice kratkospojnika
- 12V adapter za napajanje PIC i ESP modula
Hardver:
Kompletna shema projekta prikazana je ovdje dolje

Sheme se sastoje od dva kruga regulatora napona, jedan je + 5V regulator koji se koristi za napajanje PIC mikrokontrolera, a drugi je 3,3V regulator koji napaja modul ESP8266. + 5V regulira se pomoću 7805 (IC linearnog napona). 3.3V se regulira pomoću LM317 (Variable Voltage Regulator). Modul ESP8266 troši puno struje (~ 800mA), stoga ako projektirate vlastiti izvor napajanja, pobrinite se da može proizvesti tako visoku struju. Također pripazite da su igle za uzemljenje PIC-a i ESP8266 modula spojene zajedno.
Dakle, sada znamo da PIC radi na + 5V, a ESP8266 na 3.3V volta. Da bismo uspostavili USART komunikaciju između ova dva modula trebamo imati sklop logičkog pretvarača 5V - 3,3V kao što je prikazano na gornjoj slici. Ovaj krug nije ništa drugo doli razdjelnik potencijala koji jednostavno pretvara dolaznih + 5V u 3,3V. To će spriječiti da podnošljivi RX pin od 3,3 V ESP8266 dobije + 5 V.
Napravio sam PIC i ESP module na dvije odvojene perf ploče, kao što je prikazano u ovim vodičima. Na taj ih način mogu univerzalno koristiti za više sličnih projekata
- LED hardver koji koristi PIC
- Početak rada s ESP8266
Možete slijediti isto, ili izraditi vlastitu ploču u svom stilu ili jednostavno spojiti gornji krug na ploču s pločama.
Programiranje PIC mikrokontrolera:
Da bismo programirali PIC mikrokontroler da serijski šalje "AT naredbe" pomoću USART-a na modul ESP8266, moramo koristiti knjižnicu. Ova će vam knjižnica uštedjeti puno gnjavaže, poput korištenja modula uputa ESP8266 za provjeru svake AT naredbe, a zatim pronaći način da ih prenesete na ESP modul. Ova je knjižnica besplatni softver koji je izvorno razvio Camil Staps, a kasnije ga je poboljšao i izmijenio Circuit Digest tako da se može koristiti s našim mikrokontrolerom PIC16F877A. Možete ga preuzeti ovdje
Biblioteka je još uvijek u razvoju, ali možete koristiti većinu važnih AT naredbi u firmwareu ESP8266. Ako ustanovite da nedostaje bilo koja naredba koja vam je potrebna, javite mi je u odjeljku za komentare i pokušat ću je dodati za vas. Ovaj će vam vodič objasniti sve naredbe (do sada) koje se mogu koristiti putem ove knjižnice. Dalje će vas voditi i da dodate vlastite funkcije u knjižnicu.
Funkcije u knjižnici ESP8266:
- Initialize_ESP8266 (): Ova će funkcija inicijalizirati USART modul PIC-a za komunikaciju s ESP8266 modulom. Postavlja brzinu prijenosa na 115200 i priprema Rx i Tx pin PIC-a za USART komunikaciju.
- _esp8266_putch (): Ova se funkcija koristi za serijsko slanje jednog znaka na modul ESP8266. Na primjer, _esp8266_putch ('a') će serijski slati znak na ESPmodul.
- _esp8266_getch (): Ova se funkcija koristi za dobivanje jednog znaka iz ESP modula. Na primjer, ako ESP ispisuje "OK", a mi koristimo char a = _esp8266_getch (). Tada će se znak 'o' pohraniti u varijablu a.
- ESP8266_send_string (): Ova je funkcija inačica niza _esp8266_putch (). Na modul ESP8266 može poslati jedan cjeloviti niz. Na primjer, ESP8266_send_string ("AT / r / n") poslat će naredbu "AT" modulu ESP8266.
- esp8266_isStarted (): Koristi se za provjeru može li PIC komunicirati s ESP modulom. Šalje naredbu "AT" i čeka "OK" ako je primi vrati true, inače vraća false.
- esp8266_restart (): Resetira modul ESP8266 i vraća true, poništava se uspješno i vraća false ako nije uspješno.
- esp8266_mode (): Koristi se za postavljanje načina rada modula ESP8266. Kao što znamo može raditi u tri različita načina.
|
Način stanice |
|
|
Meki AP način |
|
|
I Station i AP način |
- esp8266_connect (): Omogućuje vam spajanje na wifi signal. Na primjer, esp8266_connect ("dom", "12345678") , omogućit će vašem modulu da se poveže na wifi signal nazvan dom čija je lozinka 12345678.
- esp8266_disconnect (): Ova funkcija odvaja vaš modul od bilo koje wifi veze koja je prethodno bila spojena
- esp8266_ip (): Dohvaća IP adresu i vraća je. Koristite ovu funkciju ako želite znati IP adresu modula ESP8266.
- esp8266_start (): Ova se funkcija koristi za pokretanje TCP ili UDP komunikacije. Na primjer esp8266_start ( "TCP", "192.168.101.110", 80) . Pokrenut će TCP mrežu na toj IP i priključku 80.
- esp8266_send (): Ova se funkcija koristi za slanje podataka u TCP / UDP mrežu. Pomoću ove naredbe poslat će se HTML skripta. Tada će se ova skripta pojaviti na IP adresi u kojoj je komunikacija uspostavljena prije.
- esp8266_config_softAP (): Ova se funkcija koristi za konfiguriranje softAP-a. Na primjer esp8266_config_softAP ("ured", "12345678"); stvorit će Wifi signal pod nazivom office i za pristup mu treba koristiti lozinku 12345678.
- esp8266_get_stationIP (): Ova funkcija vratit će vam IP / MAC adresu klijenata koji su povezani na vaš softAP.
Uzorak programa:
Sad kad smo razumjeli funkcije svake naredbe u knjižnici, pogledajmo mali program s uzorcima. U ovom ćemo programu provjeriti je li veza između ESP8266 i PIC uspješna, a zatim ćemo stvoriti WIFI mrežu (SoftAP) s željenim imenom i lozinkom. Kompletni program i simulacija istog bit će objašnjeni za vaše razumijevanje.
Opet, ako niste pročitali naš vodič za povezivanje PIC-a s LCD-om i PIC USART-om, pročitajte, prije nego što nastavite, jer će vam samo tada to imati smisla.
Budući da smo tek započeli s povezivanjem PIC-a s ESP8266, koristio sam LCD zaslon kako bih provjerio rade li ispravno.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nije pronađen"); } dok (! esp8266_isStarted ()); // pričekajte da ESP pošalje natrag "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP je povezan"); __zakašnjenje_ms (1500); Lcd_Clear ();
Kada pošaljemo "AT" modulu ESP8266, on odgovara s "OK". To nam osigurava uspješno povezivanje modula ESP8266. Za isto se koristi funkcija esp8266_isStarted (). Šaljemo signal AT s PIC-a i čekamo da modul ESP oživi i pošalje nam OK. Ako dobijemo OK, na LCD-u prikazujemo da je "ESP spojen".
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP postavljen kao AP"); __zakašnjenje_ms (1500); Lcd_Clear ();
Gornji retci koda koriste se za postavljanje ESP modula da radi u načinu "meke AP". Funkcija esp8266_mode (2); šalje AT naredbe “AT + CWMODE = 3” modulu i čeka da modul odgovori s “OK”
/ * Konfigurirajte ime i lozinku za pristupnu točku * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP konfiguriran"); __zakašnjenje_ms (1500); Lcd_Clear (); / * AP konfiguriran * /
Ovaj segment koda koristi se za konfiguriranje softAP-a. Ovdje smo SSID imenovali "CircuitDigest", a lozinku kao "619007123". Da bismo označili da je postupak dovršen, pričekat ćemo da modul odgovori s "U redu", a zatim ispisati AP konfiguriran na LCD zaslon.
To je to, sada smo povezali modul ESP8266 s PIC MCU-om i konfigurirali softAP s imenom i lozinkom po našem izboru. Kao i obično, simulirajte ovaj kod i pogledajte kako to radi.
Izlaz simulacije:
Za simuliranje rezultata koristimo softver Proteus. Datoteka dizajna za istu nalazi se u privitku.
Budući da u knjižnici Proteus nemamo modul ESP8266, koristimo serijski terminal i kao korisnik odgovaramo na PIC modul. Zaslon nakon završetka simulacije izgledat će kao u nastavku

Izlaz našeg koda prikazan je u virtualnom terminalu. Kompletan rad simulacije objasnit će se u video ispod.
Provjera izlaza:
Nakon što se program provjeri pomoću simulacije, izbacite ga u svoj PIC mikrokontroler. Povežite veze kao što je prikazano u gornjim shemama (odjeljak Hardver). Svoj biste napredak trebali moći pratiti putem LCD zaslona.
Jednom kada LCD kaže da je AP konfiguriran, možemo to provjeriti pomoću postavki WIFI-a u telefonu ili prijenosnom računalu. Moj laptop pokazuje sljedeći signal prema našem programu.

To je to, momci, uspješno smo povezali modul ESP8266 s PIC mikrokontrolerom. Ovo je vrlo osnovno sučelje i ako želite raditi složene projekte koristeći ESP8266, možda ćete morati dodati vlastite knjižnice ili barem dodati vlastite funkcije. Vjerujte mi, vrlo je lako to učiniti, dat ću kratki uvid za isto.
Dodavanje funkcija u knjižnicu ESP8266:
Dodavanje vlastite funkcije pomoći će vam da pošaljete bilo koju naredbu "AT" na modul ESP8266. Da biste nastavili s ovim, trebate pročitati dokumentaciju skupa uputa modula ESP8266. Možete izravno poslati bilo koju AT naredbu koja se nalazi u tom priručniku s uputama. Ali uvijek ne zaboravite dodati "/ r / n" na kraju svake AT naredbe. Na primjer, ako želite uspostaviti više veza sa svojim ESP modulom. Zatim otvorite dokumentaciju skupa uputa i pronađite našu AT naredbu koja će za vas obaviti ovaj posao. Ovdje će vam naredba “AT + CIPMUX = 1” omogućiti uspostavu višestrukih veza s vašim ESP modulom.
Sada sve što morate učiniti je poslati ovaj "AP + CIPMUX = 1" na svoj ESP8266 modul pomoću serijskog porta. Najteži način za to je jednostavna upotreba naredbe
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Ovo će uspjeti, ali nije najbolji način za to. Morate pročitati što vaš ESP8266 odgovara na vašu naredbu. U našem slučaju odgovorit će s "U redu". Dakle, morate pročitati dolazne podatke iz modula ESP8266 i potvrditi da je to "OK". Također možete napraviti ovu funkciju gdje se "1" ili "0" mogu proslijediti kao argumenti.
Samo naprijed i pokušajte napraviti vlastite funkcije za knjižnicu. Ali ako trebate pomoć, slobodno se poslužite odjeljkom za komentare i ja ću vam pomoći.
