- Materiale necesare:
- Programarea microcontrolerului PIC:
- Funcții în biblioteca ESP8266:
- Program de probă:
- Ieșire de simulare:
- Verificare ieșire:
- Adăugarea de funcții la biblioteca ESP8266:
În acest articol, să discutăm despre modul de interfață a modulului WIFI ESP8266 cu un microcontroler PIC. Până acum s-ar putea să fi folosit modulul ESP8266 ca microcontroler independent sau s-ar putea să-l fi folosit cu biblioteca Arduino. Dar, când vine vorba de proiecte de sisteme încorporate hardcore, ar trebui să știm cum să îl folosim și cu microcontrolerele PIC. Acest lucru vă va ajuta să vă personalizați proiectele în perspectiva designului și, în același timp, să le faceți ieftine.
Modulele ESP8266 sunt livrate cu un firmware implicit încărcat în el, prin urmare putem programa modulul folosind comenzile AT. Aceste comenzi trebuie trimise printr-un canal de comunicare serial. Acest canal este stabilit între modulul PIC și modulul ESP8266 utilizând modulul USART din microcontrolerul PIC . Întreaga funcționare va fi monitorizată și raportată utilizatorului utilizând un ecran LCD de 16x2. Prin urmare, acest tutorial presupune că aveți cunoștințe de bază despre modulul USART în PIC, interfațarea LCD cu PIC și utilizarea comenzilor AT în ESP8266. Dacă nu, puteți reveni la tutorialele legate pentru a le învăța în prealabil.
Materiale necesare:
Ați avea nevoie de următorul hardware pentru a finaliza acest tutorial
- PIC16F877A
- Oscilator de cristal de 20 MHz
- 7805
- LM317
- ESP8266
- Afisaj LCD 16 * 2
- Programator PicKit3
- Rezistoare (1K, 220ohm, 360ohm)
- Condensatoare (1uF, 0.1uF, 33pF)
- Sârme de jumper
- Adaptor de 12V pentru alimentarea modulelor PIC și ESP
Hardware:
Schema completă a proiectului este prezentată mai jos
Schema constă din două circuite de regulator de tensiune, unul este un regulator de + 5V care este utilizat pentru alimentarea microcontrolerului PIC și celălalt este un regulator de 3,3V care alimentează modulul ESP8266. + 5V este reglat prin utilizarea unui 7805 (regulator de tensiune liniar IC). 3.3V este reglementat prin utilizarea LM317 (regulator de tensiune variabilă). Modulul ESP8266 consumă mult curent (~ 800mA), prin urmare, dacă proiectați propria sursă de alimentare, asigurați-vă că poate provoca un curent atât de mare. De asemenea, asigurați-vă că știfturile de masă ale PIC și ale modulului ESP8266 sunt conectate împreună.
Deci, acum știm că PIC funcționează pe + 5V și ESP8266 funcționează la 3,3V volți. Pentru a stabili o comunicare USART între aceste două module, trebuie să avem un circuit convertor logic de 5V - 3,3V așa cum se arată în figura de mai sus. Acest circuit nu este altceva decât un divizor potențial care convertește pur și simplu intrarea + 5V în 3,3V. Acest lucru va împiedica pinul RX tolerabil de 3,3V al ESP8266 să obțină + 5V.
Am realizat modulele PIC și ESP pe două plăci de perfecționare separate, așa cum se arată în aceste tutoriale. Astfel le pot folosi universal pentru mai multe proiecte similare
- Hardware LED folosind PIC
- Noțiuni introductive despre ESP8266
Puteți urmări același lucru sau vă puteți construi propria placă în stilul dvs. sau pur și simplu conectați circuitul de mai sus la o placă de calcul.
Programarea microcontrolerului PIC:
Pentru a programa microcontrolerul PIC pentru a trimite „comenzi AT” în serie folosind USART către modulul ESP8266, trebuie să folosim o bibliotecă. Această bibliotecă vă va economisi o mulțime de probleme, cum ar fi utilizarea modulelor de instrucțiuni ESP8266 pentru a verifica fiecare comandă AT și apoi pentru a găsi o modalitate de a le transmite modulului ESP. Această bibliotecă este un software gratuit dezvoltat inițial de Camil Staps și ulterior a fost îmbunătățit și modificat de Circuit Digest, astfel încât să poată fi utilizat cu microcontrolerul nostru PIC16F877A. O puteți descărca de aici
Biblioteca este încă în curs de dezvoltare, dar puteți utiliza majoritatea comenzilor AT importante din firmware-ul ESP8266. Dacă găsiți că lipsește o comandă de care aveți nevoie, anunțați-o în secțiunea de comentarii și voi încerca să o adaug. Acest tutorial vă va explica toate comenzile (până acum) care pot fi utilizate prin intermediul acestei biblioteci. Mai departe vă va ghida, de asemenea, să adăugați propriile funcții la bibliotecă.
Funcții în biblioteca ESP8266:
- Initialize_ESP8266 (): Această funcție va inițializa modulul USART al PIC pentru a comunica cu modulul ESP8266. Stabilește rata de transmisie la 115200 și pregătește pinul Rx și Tx al PIC pentru comunicarea USART.
- _esp8266_putch (): Această funcție este utilizată pentru a trimite un singur caracter în serie către modulul ESP8266. De exemplu, _esp8266_putch ('a') va trimite caracterul în serie către modulul ESP.
- _esp8266_getch (): Această funcție este utilizată pentru a obține un singur caracter din modulul ESP. De exemplu, dacă ESP tipărește „OK” și folosim char a = _esp8266_getch (). Apoi, caracterul „o” va fi stocat în variabila a.
- ESP8266_send_string (): Această funcție este versiunea șir a _esp8266_putch (). Poate trimite un șir complet către modulul ESP8266. De exemplu, ESP8266_send_string („AT / r / n”) va trimite comanda „AT” către modulul ESP8266.
- esp8266_isStarted (): Este folosit pentru a verifica dacă PIC poate comunica cu modulul ESP. Trimite comanda „AT” și așteaptă „OK” dacă este primit, returnează true, altfel returnează false.
- esp8266_restart (): Resetează modulul ESP8266 și returnează true, se resetează cu succes și returnează false dacă nu are succes.
- esp8266_mode (): Folosit pentru a seta modul de lucru al modulului ESP8266. După cum știm, poate funcționa în trei moduri diferite.
Mod stație |
|
Mod soft AP |
|
Atât modul Station, cât și modul AP |
- esp8266_connect (): Vă permite să vă conectați la un semnal wifi. De exemplu, esp8266_connect („acasă”, „12345678”) , va permite modulului dvs. să se conecteze la semnalul wifi numit acasă a cărui parolă este 12345678.
- esp8266_disconnect (): Această funcție vă deconectează modulul de la orice conexiune wifi care a fost conectată anterior
- esp8266_ip (): Obține adresa IP și o returnează. Utilizați această funcție dacă doriți să cunoașteți adresa IP a modulului ESP8266.
- esp8266_start (): Această funcție este utilizată pentru a porni o comunicație TCP sau UDP. De exemplu, esp8266_start ( "TCP", "192.168.101.110", 80) . Va porni o rețea TCP în acel IP și portul 80.
- esp8266_send (): Această funcție este utilizată pentru a trimite informații către rețeaua TCP / UDP. Scriptul HTML va fi trimis folosind această comandă. Apoi, acest script va apărea în adresa IP în care comunicarea a fost stabilită anterior.
- esp8266_config_softAP (): Această funcție este utilizată pentru a configura softAP-ul. De exemplu esp8266_config_softAP („office”, „12345678”); va crea un semnal Wifi numit office și parola 12345678 ar trebui folosită pentru a-l accesa.
- esp8266_get_stationIP (): Această funcție vă va returna adresa IP / MAC a clienților care sunt conectați la softAP dvs.
Program de probă:
Acum, că am înțeles funcțiile fiecărei comenzi din bibliotecă, permiteți-ne să analizăm un mic exemplu de program. În acest program vom verifica dacă conexiunea dintre ESP8266 și PIC este reușită și apoi vom crea o rețea WIFI (SoftAP) cu un nume și o parolă preferate. Programul complet și simularea acestuia vor fi explicate pentru înțelegerea dvs.
Din nou, dacă nu ați citit interfața noastră PIC cu LCD și PIC USART tutorial, vă rugăm să citiți, înainte de a continua, pentru că numai atunci va avea sens pentru dvs.
Deoarece abia începem să interfațăm PIC cu ESP8266, am folosit un ecran LCD pentru a mă asigura că lucrurile funcționează corect.
faceți {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nu a fost găsit"); } while (! esp8266_isStarted ()); // așteptați până când ESP trimite înapoi „OK” Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP este conectat"); __delay_ms (1500); Lcd_Clear ();
Când trimitem „AT” la modulul ESP8266, acesta răspunde cu „OK”. Acest lucru ne asigură că modulul ESP8266 este conectat cu succes. Funcția esp8266_isStarted () este utilizată pentru aceeași. Trimitem semnalul AT de la PIC și așteptăm până când modulul ESP devine viu și ne trimite un OK. Dacă obținem un OK, afișăm că „ESP este conectat” pe ecranul LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP setat ca AP"); __delay_ms (1500); Lcd_Clear ();
Liniile de cod de mai sus sunt folosite pentru a seta modulul ESP să funcționeze în modul „soft AP”. Funcția esp8266_mode (2); trimite comenzile AT „AT + CWMODE = 3” către modul și așteaptă ca modulul să răspundă cu „OK”
/ * Configurați numele AP și parola * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP configurat"); __delay_ms (1500); Lcd_Clear (); / * AP configurat * /
Acest segment al codului este utilizat pentru a configura softAP-ul. Aici am numit SSID ca „CircuitDigest” și parola ca „619007123”. Pentru a indica faptul că procesul este finalizat, vom aștepta ca modulul să răspundă cu „OK” și apoi să imprimăm AP configurat pe ecranul LCD.
Asta este acum că am interfațat modulul ESP8266 cu PIC MCU și am configurat softAP cu un nume și o parolă la alegere. Ca de obicei, să simulăm acest cod și să vedem cum funcționează.
Ieșire de simulare:
Folosim software-ul Proteus pentru a simula ieșirea. Fișierul de proiectare pentru același lucru poate fi găsit în atașament.
Deoarece nu avem un modul ESP8266 în biblioteca Proteus, am folosit terminalul Serial și răspundem înapoi ca utilizator la modulul PIC. Simularea odată finalizată ecranul va arăta ca mai jos
Ieșirea codului nostru este afișată în terminalul virtual. Funcționarea completă a simulării va fi explicată în videoclipul de mai jos.
Verificare ieșire:
Odată ce programul este verificat folosind simularea, aruncați-l în microcontrolerul PIC. Faceți conexiunile așa cum se arată în schemele de mai sus (secțiunea Hardware). Ar trebui să vă puteți urmări progresul prin intermediul ecranului LCD.
Odată ce ecranul LCD spune că AP-ul este configurat, putem verifica acest lucru folosind setările WIFI din telefon sau laptop. Laptopul meu arată următorul semnal conform programului nostru.
Băieți, am interacționat cu succes modulul ESP8266 cu microcontrolerul PIC. Aceasta este o interfață de bază și, dacă doriți să faceți orice proiecte complicate folosind ESP8266, este posibil să fie nevoie să adăugați propriile biblioteci sau cel puțin să adăugați propriile funcții. Aveți încredere în mine, este foarte ușor să faceți acest lucru, voi oferi o scurtă înțelegere pentru același lucru.
Adăugarea de funcții la biblioteca ESP8266:
Adăugarea propriei funcții vă va ajuta să trimiteți orice comandă „AT” către modulul ESP8266. Pentru a continua acest lucru, trebuie să citiți documentația setului de instrucțiuni a modulului ESP8266. Puteți trimite direct orice comandă AT pe care o găsiți în acel manual de instrucțiuni. Dar amintiți-vă întotdeauna să adăugați „/ r / n” la sfârșitul fiecărei comenzi AT. De exemplu, dacă doriți să stabiliți mai multe conexiuni cu modulul dvs. ESP. Apoi deschideți documentația setului de instrucțiuni și găsiți comanda AT care va face această treabă pentru dvs. Aici comanda „AT + CIPMUX = 1” vă va permite să stabiliți conexiuni multiple cu modulul dvs. ESP.
Acum tot ce trebuie să faceți este să trimiteți acest „AP + CIPMUX = 1” la modulul dvs. ESP8266 utilizând portul serial. Modul dur de a face acest lucru este prin simpla utilizare a comenzii
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Acest lucru va funcționa, dar nu este cel mai bun mod de a face acest lucru. Trebuie să citiți din nou ceea ce ESP8266 răspunde la comanda dvs. În cazul nostru, va răspunde cu „OK”. Deci, trebuie să citiți datele primite de la modulul ESP8266 și să confirmați că este „OK”. De asemenea, puteți face această funcție în cazul în care „1” sau „0” pot fi transmise ca argumente.
Continuați și încercați să creați propriile funcții pentru bibliotecă. Dar dacă aveți nevoie de ajutor, vă rog să folosiți secțiunea de comentarii și vă voi ajuta.