- Materials necessaris:
- Programació del microcontrolador PIC:
- Funcions a la biblioteca ESP8266:
- Programa de mostra:
- Sortida de simulació:
- Verificació de la sortida:
- Addició de funcions a la biblioteca ESP8266:
En aquest article, anem a discutir com interfície el mòdul WIFI ESP8266 amb un microcontrolador PIC. Fins ara és possible que hàgiu estat utilitzant el mòdul ESP8266 com a microcontrolador autònom o que l’hagueu utilitzat amb la biblioteca Arduino. Però, quan es tracta de projectes de sistemes incrustats de gran intensitat, hauríem de saber utilitzar-lo també amb microcontroladors PIC. Això us ajudarà a personalitzar els vostres projectes des del punt de vista del disseny i, alhora, a fer-los econòmics.
Els mòduls ESP8266 inclouen un firmware per defecte carregat, de manera que podem programar el mòdul mitjançant ordres AT. Aquestes ordres s’han d’enviar a través d’un canal de comunicació en sèrie. Aquest canal s’estableix entre el mòdul PIC i el mòdul ESP8266 mitjançant el mòdul USART del microcontrolador PIC . Tot el funcionament es controlarà i es comunicarà a l'usuari mitjançant una pantalla LCD de 16x2. Per tant, aquest tutorial suposa que teniu coneixements bàsics sobre el mòdul USART de PIC, la interfície LCD amb PIC i l’ús d’ordres AT a ESP8266. Si no ho feu, podeu tornar als tutorials enllaçats per aprendre'ls prèviament.
Materials necessaris:
Necessiteu el següent maquinari per completar aquest tutorial
- PIC16F877A
- Oscil·lador de cristall de 20 MHz
- 7805
- LM317
- ESP8266
- Pantalla LCD de 16 * 2
- Programador PicKit3
- Resistències (1K, 220ohm, 360ohm)
- Condensadors (1uF, 0.1uF, 33pF)
- Filferros de pont
- Adaptador de 12V per alimentar el mòdul PIC i ESP
Maquinari:
A continuació es mostra l’esquema complet del projecte

L’esquema consta de dos circuits de regulador de voltatge, un és un regulador de + 5V que s’utilitza per alimentar el microcontrolador PIC i l’altre és un regulador de 3,3V que alimenta el mòdul ESP8266. El + 5V es regula mitjançant un 7805 (IC de regulador de tensió lineal). El 3,3 V es regula mitjançant l’ús de LM317 (regulador de tensió variable). El mòdul ESP8266 consumeix molta intensitat (~ 800 mA), per tant, si esteu dissenyant la vostra pròpia font d'alimentació, assegureu-vos que pugui obtenir un corrent tan elevat. Assegureu-vos també que els pins de terra del PIC i del mòdul ESP8266 estan connectats entre si.
Ara sabem que el PIC funciona a + 5V i l’ESP8266 funciona a 3,3V volts. Per establir una comunicació USART entre aquests dos mòduls, necessitem un circuit convertidor lògic de 5V a 3,3V, tal com es mostra a la figura anterior. Aquest circuit no és res més que un divisor potencial que simplement converteix els + 5V entrants a 3,3V. Això evitarà que el pin RX tolerable de 3,3V de l’ESP8266 aconsegueixi + 5V.
He fet els mòduls PIC i ESP en dues taules de perfils separades, tal com es mostra en aquests tutorials. D'aquesta manera els puc utilitzar universalment per a projectes més similars
- Maquinari LED mitjançant PIC
- Introducció a ESP8266
Podeu seguir el mateix, o construir el vostre propi tauler al vostre estil o simplement connectar el circuit anterior a una taula de proves.
Programació del microcontrolador PIC:
Per poder programar el microcontrolador PIC per enviar “ordres AT” en sèrie mitjançant USART al mòdul ESP8266, hem d’utilitzar una biblioteca. Aquesta biblioteca us estalviarà molts problemes, com fer servir els mòduls d’instruccions ESP8266 per comprovar si hi ha totes les ordres AT i després trobar una manera de transmetre-les al mòdul ESP. Aquesta biblioteca és un programari lliure desenvolupat originalment per Camil Staps i posteriorment va ser millorat i modificat per Circuit Digest perquè es pugui utilitzar amb el nostre microcontrolador PIC16F877A. Podeu descarregar-lo aquí
La biblioteca encara està en desenvolupament, però podeu utilitzar la majoria de les ordres AT importants del firmware ESP8266. Si trobeu a faltar alguna de les ordres que necessiteu, feu-ho saber a la secció de comentaris i intentaré afegir-la. Aquest tutorial us explicarà totes les ordres (fins ara) que poden fer servir aquesta biblioteca. A més, també us guiarà per afegir les vostres pròpies funcions a la biblioteca.
Funcions a la biblioteca ESP8266:
- Initialize_ESP8266 (): aquesta funció inicialitzarà el mòdul USART del PIC per comunicar-se amb el mòdul ESP8266. Estableix la velocitat de transmissió en 115200 i prepara el pin Rx i Tx de PIC per a la comunicació USART.
- _esp8266_putch (): aquesta funció s'utilitza per enviar un sol caràcter en sèrie al mòdul ESP8266. Per exemple, _esp8266_putch ('a') enviarà el caràcter en sèrie al mòdul ESP.
- _esp8266_getch (): aquesta funció s'utilitza per obtenir un sol caràcter del mòdul ESP. Per exemple, si l'ESP imprimeix "OK" i fem servir char a = _esp8266_getch (). Aleshores, el caràcter 'o' s'emmagatzemarà a la variable a.
- ESP8266_send_string (): aquesta funció és la versió de cadena de _esp8266_putch (). Pot enviar una cadena completa al mòdul ESP8266. Per exemple, ESP8266_send_string ("AT / r / n") enviarà l'ordre "AT" al mòdul ESP8266.
- esp8266_isStarted (): s’utilitza per comprovar si el PIC pot comunicar-se amb el mòdul ESP. Envia l'ordre "AT" i espera "OK" si es rep, torna cert, en cas contrari, torna fals.
- esp8266_restart (): Restableix el mòdul ESP8266 i retorna true, es restableix correctament i torna false si no és correcte.
- esp8266_mode (): s’utilitza per configurar el mode de treball del mòdul ESP8266. Com sabem, pot funcionar en tres modes diferents.
|
Mode estació |
|
|
Mode AP suau |
|
|
Tant el mode Station com AP |
- esp8266_connect (): us permet connectar-vos a un senyal wifi. Per exemple, esp8266_connect ("home", "12345678") , permetrà que el mòdul es connecti al senyal wifi anomenat home la contrasenya del qual és 12345678.
- esp8266_disconnect (): aquesta funció desconnecta el mòdul de qualsevol connexió wifi que ja estava connectada
- esp8266_ip (): obté l'adreça IP i la torna. Utilitzeu aquesta funció si voleu conèixer l'adreça IP del mòdul ESP8266.
- esp8266_start (): aquesta funció s'utilitza per iniciar una comunicació TCP o UDP. Per exemple esp8266_start ( "TCP", "192.168.101.110", 80) . Iniciarà una xarxa TCP en aquesta IP i el port 80.
- esp8266_send (): aquesta funció s'utilitza per enviar informació a la xarxa TCP / UDP. L'escriptura HTML s'enviarà mitjançant aquesta ordre. A continuació, aquest script apareixerà a l'adreça IP en què es va establir la comunicació anteriorment.
- esp8266_config_softAP (): aquesta funció s'utilitza per configurar el softAP. Per exemple esp8266_config_softAP ("oficina", "12345678"); crearà un senyal Wifi anomenat office i s’hauria d’utilitzar la contrasenya 12345678 per accedir-hi.
- esp8266_get_stationIP (): aquesta funció us retornarà l'adreça IP / MAC dels clients que estan connectats al vostre softAP.
Programa de mostra:
Ara que hem entès les funcions de totes i cadascuna de les ordres de la biblioteca, busquem un petit programa de mostra. En aquest programa comprovarem si la connexió entre ESP8266 i PIC és correcta i, a continuació, crearem una xarxa WIFI (SoftAP) amb un nom i una contrasenya preferits. El programa complet i la simulació del mateix s’explicaran per a la vostra comprensió.
Una vegada més, si no heu llegit la nostra interfície PIC amb el tutorial USART de LCD i PIC, si us plau llegiu el document, abans de continuar, perquè només llavors tindrà sentit per a vosaltres.
Com que tot just estem començant a interfície PIC amb l'ESP8266, he utilitzat una pantalla LCD per assegurar-me que les coses funcionen correctament.
fer {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP no trobat"); } while (! esp8266_isStarted ()); // espereu fins que l'ESP enviï "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP està connectat"); __delay_ms (1500); Lcd_Clear ();
Quan enviem el "AT" al mòdul ESP8266, aquest respon de nou amb un "OK". Això ens assegura que el mòdul ESP8266 està connectat correctament. La funció esp8266_isStarted () s’utilitza per a la mateixa. Enviem el senyal AT des del PIC i esperem fins que el mòdul ESP es posi viu i ens enviï un OK. Si obtenim un OK, mostrarem que el "ESP està connectat" a la pantalla LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP es defineix com a AP"); __delay_ms (1500); Lcd_Clear ();
Les línies de codi anteriors s’utilitzen per configurar el mòdul ESP perquè funcioni en mode “soft AP”. La funció esp8266_mode (2); envia les ordres AT "AT + CWMODE = 3" al mòdul i espera que el mòdul respongui amb "OK"
/ * Configureu el nom de l'AP i la contrasenya * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP configurat"); __delay_ms (1500); Lcd_Clear (); / * AP configurat * /
Aquest segment del codi s’utilitza per configurar el softAP. Aquí hem anomenat el SSID com a "CircuitDigest" i la contrasenya com a "619007123". Per indicar que el procés s'ha completat, esperarem que el mòdul respongui amb "D'acord" i després imprimirem AP configurat a la pantalla LCD.
És a dir, ara hem interfaçat el mòdul ESP8266 amb la MCU PIC i hem configurat el softAP amb un nom i una contrasenya que escollim. Com de costum, podem simular aquest codi i veure com funciona.
Sortida de simulació:
Estem utilitzant el programari Proteus per simular la sortida. El fitxer de disseny del mateix es pot trobar al fitxer adjunt.
Com que no tenim cap mòdul ESP8266 a la biblioteca Proteus, hem utilitzat el terminal Serial i responem com a usuari al mòdul PIC. La pantalla de simulació un cop finalitzada es mostrarà a continuació

La sortida del nostre codi es mostra al terminal virtual. El funcionament complet de la simulació s’explicarà al vídeo següent.
Verificació de la sortida:
Un cop verificat el programa mitjançant la simulació, aboqueu-lo al microcontrolador PIC. Feu les connexions tal com es mostra als esquemes anteriors (secció Maquinari). Hauríeu de poder fer un seguiment del vostre progrés a través de la pantalla LCD.
Un cop la pantalla LCD digui que l'AP està configurat, podem comprovar-ho mitjançant la configuració de WIFI al telèfon o a l'ordinador portàtil. El meu ordinador portàtil mostra el següent senyal segons el nostre programa.

És a dir, nois, que hem interfaçat amb èxit el mòdul ESP8266 amb el microcontrolador PIC. Aquesta és una interfície molt bàsica i, si voleu fer projectes complicats amb l’ESP8266, és possible que hagueu d’afegir les vostres pròpies biblioteques o, com a mínim, afegir les vostres pròpies funcions. Confieu en mi, és molt fàcil fer-ho; us donaré una breu visió del mateix.
Addició de funcions a la biblioteca ESP8266:
Afegir una funció pròpia us ajudarà a enviar qualsevol ordre “AT” al mòdul ESP8266. Per continuar, heu de llegir la documentació del conjunt d'instruccions del mòdul ESP8266. Podeu enviar directament qualsevol ordre AT que trobeu al manual d'aquest conjunt d'instruccions. Però recordeu sempre d’afegir “/ r / n” al final de cada ordre AT. Per exemple, si voleu establir diverses connexions amb el vostre mòdul ESP. A continuació, obriu la documentació del conjunt d’instruccions i cerqueu la nostra comanda AT que us farà aquesta feina. Aquí l'ordre "AT + CIPMUX = 1" us permetrà establir diverses connexions amb el vostre mòdul ESP.
Ara tot el que heu de fer és enviar aquest "AP + CIPMUX = 1" al mòdul ESP8266 mitjançant el port sèrie. La manera més dura de fer-ho és simplement mitjançant l’ordre
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Això funcionarà, però no és la millor manera de fer-ho. Heu de tornar a llegir el que respon el vostre ESP8266 al vostre comandament. En el nostre cas, respondrà amb "D'acord". Per tant, heu de llegir les dades entrants del mòdul ESP8266 i confirmar que està "bé". També podeu fer aquesta funció on es pugui passar el "1" o el "0" com a arguments.
Seguiu endavant i intenteu fer les vostres pròpies funcions per a la biblioteca. Però si necessiteu ajuda, no dubteu a utilitzar la secció de comentaris i us ajudaré.
