- Materiali richiesti:
- Programmazione del microcontrollore PIC:
- Funzioni nella libreria ESP8266:
- Programma di esempio:
- Output della simulazione:
- Verifica dell'output:
- Aggiunta di funzioni alla libreria ESP8266:
In questo articolo, discutiamo come interfacciare il modulo WIFI ESP8266 con un microcontrollore PIC. Finora potresti aver utilizzato il modulo ESP8266 come microcontrollore autonomo o potresti averlo utilizzato con la libreria Arduino. Ma, quando si tratta di progetti di sistemi embedded hardcore, dovremmo sapere come usarli anche con microcontrollori PIC. Questo ti aiuterà a personalizzare i tuoi progetti in ottica di design e allo stesso tempo anche a renderli economici.
I moduli ESP8266 vengono forniti con un firmware predefinito caricato al suo interno, quindi possiamo programmare il modulo utilizzando i comandi AT. Questi comandi devono essere inviati tramite un canale di comunicazione seriale. Questo canale viene stabilito tra il PIC e il modulo ESP8266 utilizzando il modulo USART nel microcontrollore PIC . L'intera lavorazione verrà monitorata e segnalata all'utente tramite un display LCD 16x2. Quindi, questo tutorial presuppone che tu abbia una conoscenza di base del modulo USART in PIC, dell'interfacciamento di LCD con PIC e dell'uso dei comandi AT in ESP8266. Se non lo fai, puoi tornare ai tutorial collegati per apprenderli in anticipo.
Materiali richiesti:
Avresti bisogno del seguente hardware per completare questo tutorial
- PIC16F877A
- Oscillatore a cristallo da 20 MHz
- 7805
- LM317
- ESP8266
- Display LCD 16 * 2
- Programmatore PicKit3
- Resistori (1K, 220ohm, 360ohm)
- Condensatori (1uF, 0,1uF, 33pF)
- Cavi jumper
- Adattatore 12V per alimentare il modulo PIC e ESP
Hardware:
Di seguito è riportato lo schema completo del progetto
Lo schema è costituito da due circuiti del regolatore di tensione, uno è un regolatore + 5V che viene utilizzato per alimentare il microcontrollore PIC e l'altro è un regolatore 3.3V che alimenta il modulo ESP8266. Il + 5V è regolato utilizzando un 7805 (Linear Voltage Regulator IC). Il 3,3 V è regolato utilizzando LM317 (regolatore di tensione variabile). Il modulo ESP8266 consuma molta corrente (~ 800mA) quindi se stai progettando il tuo alimentatore assicurati che possa generare una corrente così elevata. Inoltre, assicurarsi che i pin di terra del PIC e del modulo ESP8266 siano collegati insieme.
Quindi ora sappiamo che il PIC funziona a + 5V e l'ESP8266 funziona a 3,3V volt. Per stabilire una comunicazione USART tra questi due moduli è necessario disporre di un circuito convertitore logico da 5 V a 3,3 V come mostrato nella figura sopra. Questo circuito non è altro che un potenziale divisore che converte semplicemente i + 5V in ingresso in 3,3V. Ciò impedirà al pin RX tollerabile di 3,3 V di ESP8266 di ottenere + 5V.
Ho realizzato i moduli PIC ed ESP su due schede perf separate, come mostrato in questi tutorial. In questo modo posso usarli universalmente per progetti più simili
- Hardware LED utilizzando PIC
- Iniziare con ESP8266
Puoi seguire lo stesso, o costruire la tua scheda nel tuo stile o semplicemente collegare il circuito sopra a una breadboard.
Programmazione del microcontrollore PIC:
Per programmare il microcontrollore PIC in modo che invii "comandi AT" in serie utilizzando USART al modulo ESP8266 dobbiamo utilizzare una libreria. Questa libreria ti farà risparmiare un sacco di problemi, come usare i moduli di istruzioni ESP8266 per controllare ogni comando AT e poi trovare un modo per trasmetterli al modulo ESP. Questa libreria è un software gratuito originariamente sviluppato da Camil Staps e successivamente è stato migliorato e modificato da Circuit Digest in modo che possa essere utilizzato con il nostro microcontrollore PIC16F877A. Potete scaricarlo qui
La libreria è ancora in fase di sviluppo, ma è possibile utilizzare la maggior parte dei comandi AT importanti nel firmware ESP8266. Se trovi che uno dei comandi di cui hai bisogno manca, fammelo sapere nella sezione commenti e cercherò di aggiungerlo per te. Questo tutorial ti spiegherà tutti i comandi (finora) che possono essere utilizzati da questa libreria. Inoltre ti guiderà anche ad aggiungere le tue funzioni alla libreria.
Funzioni nella libreria ESP8266:
- Initialize_ESP8266 (): questa funzione inizializzerà il modulo USART del PIC per comunicare con il modulo ESP8266. Imposta il baud rate a 115200 e prepara i pin Rx e Tx del PIC per la comunicazione USART.
- _esp8266_putch (): questa funzione viene utilizzata per inviare un singolo carattere in serie al modulo ESP8266. Ad esempio, _esp8266_putch ('a') invierà il carattere in serie a ESPmodule.
- _esp8266_getch (): questa funzione viene utilizzata per ottenere un singolo carattere dal modulo ESP. Ad esempio, se l'ESP stampa "OK" e utilizziamo il carattere a = _esp8266_getch (). Quindi il carattere "o" verrà memorizzato nella variabile a.
- ESP8266_send_string (): questa funzione è la versione stringa di _esp8266_putch (). Può inviare una stringa completa al modulo ESP8266. Ad esempio, ESP8266_send_string ("AT / r / n") invierà il comando "AT" al modulo ESP8266.
- esp8266_isStarted (): viene utilizzato per verificare se il PIC può comunicare con il modulo ESP. Invia il comando “AT” e attende “OK” se ricevuto restituisce true altrimenti restituisce false.
- esp8266_restart (): ripristina il modulo ESP8266 e restituisce true se viene ripristinato con successo e restituisce false se non riesce.
- esp8266_mode (): usato per impostare la modalità di lavoro del modulo ESP8266. Come sappiamo può funzionare in tre diverse modalità.
Modalità stazione |
|
Modalità Soft AP |
|
Sia la modalità Station che AP |
- esp8266_connect (): consente di connettersi a un segnale wifi. Ad esempio esp8266_connect ("home", "12345678") , consentirà al modulo di connettersi al segnale wifi denominato home la cui password è 12345678.
- esp8266_disconnect (): questa funzione disconnette il tuo modulo da qualsiasi connessione wifi precedentemente connessa
- esp8266_ip (): ottiene l'indirizzo IP e lo restituisce. Utilizzare questa funzione se si desidera conoscere l'indirizzo IP del modulo ESP8266.
- esp8266_start (): questa funzione viene utilizzata per avviare una comunicazione TCP o UDP. Ad esempio esp8266_start ( "TCP", "192.168.101.110", 80) . Avvierà una rete TCP in quell'IP e nella porta 80.
- esp8266_send (): questa funzione viene utilizzata per inviare informazioni alla rete TCP / UDP. Lo script HTML verrà inviato utilizzando questo comando. Quindi questo script apparirà nell'indirizzo IP in cui è stata stabilita la comunicazione in precedenza.
- esp8266_config_softAP (): questa funzione viene utilizzata per configurare il softAP. Ad esempio esp8266_config_softAP ("office", "12345678"); creerà un segnale Wifi denominato office e la password 12345678 dovrebbe essere utilizzata per accedervi.
- esp8266_get_stationIP (): questa funzione restituirà l'indirizzo IP / MAC dei client che sono connessi al tuo softAP.
Programma di esempio:
Ora che abbiamo compreso le funzioni di ogni comando nella libreria, esaminiamo un piccolo programma di esempio. In questo programma controlleremo se la connessione tra ESP8266 e PIC è andata a buon fine e quindi creeremo una rete WIFI (SoftAP) con un nome e una password preferiti. Il programma completo e la simulazione dello stesso verranno spiegati per la vostra comprensione.
Anche in questo caso se non hai letto il nostro tutorial sull'interfacciamento di PIC con LCD e PIC USART, leggi il, prima di procedere perché solo allora avrà senso per te.
Dato che abbiamo appena iniziato a interfacciare PIC con ESP8266, ho usato un LCD per assicurarmi che le cose funzionassero correttamente.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP non trovato"); } while (! esp8266_isStarted ()); // aspetta che l'ESP rispedisca "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP è connesso"); __delay_ms (1500); Lcd_Clear ();
Quando inviamo "AT" al modulo ESP8266, esso risponde con un "OK". Questo ci garantisce che il modulo ESP8266 sia connesso correttamente. La funzione esp8266_isStarted () viene utilizzata per lo stesso. Inviamo il segnale AT dal PIC e aspettiamo che il modulo ESP si attivi e ci invii un OK. Se otteniamo un OK, mostriamo che "ESP è connesso" sul display LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP impostato come AP"); __delay_ms (1500); Lcd_Clear ();
Le righe di codice sopra vengono utilizzate per impostare il modulo ESP in modo che funzioni in modalità "soft AP". La funzione esp8266_mode (2); invia i comandi AT "AT + CWMODE = 3" al modulo e attende che il modulo risponda con "OK"
/ * Configura il nome AP e la password * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP configurato"); __delay_ms (1500); Lcd_Clear (); / * AP configurato * /
Questo segmento del codice viene utilizzato per configurare il softAP. Qui abbiamo chiamato l'SSID "CircuitDigest" e la password "619007123". Per indicare che il processo è completo, aspetteremo che il modulo risponda con "OK" e quindi stamperemo AP configurato sullo schermo LCD.
È così che ora abbiamo interfacciato il modulo ESP8266 con l'MCU PIC e abbiamo configurato il softAP con un nome e una password di nostra scelta. Come al solito simuliamo questo codice e vediamo come funziona.
Output della simulazione:
Stiamo usando il software Proteus per simulare l'output. Il file di progettazione per lo stesso può essere trovato in allegato.
Poiché non abbiamo un modulo ESP8266 nella libreria Proteus, dobbiamo utilizzare il terminale seriale e rispondere come utente al modulo PIC. La schermata di simulazione una volta completata apparirà come di seguito
L'output del nostro codice è mostrato nel terminale virtuale. Il funzionamento completo della simulazione verrà spiegato nel video sottostante.
Verifica dell'output:
Una volta che il programma è stato verificato utilizzando la simulazione, scaricarlo nel microcontrollore PIC. Effettuare i collegamenti come mostrato negli schemi sopra (sezione Hardware). Dovresti essere in grado di monitorare i tuoi progressi attraverso il display LCD.
Una volta che il display LCD dice che l'AP è configurato, possiamo verificarlo utilizzando le impostazioni WIFI nel telefono o nel laptop. Il mio laptop mostra il seguente segnale secondo il nostro programma.
Cioè ragazzi, abbiamo interfacciato con successo il modulo ESP8266 con il microcontrollore PIC. Questa è un'interfaccia molto semplice e se vuoi fare progetti complicati usando ESP8266 potresti dover aggiungere le tue librerie o almeno aggiungere le tue funzioni. Credetemi, è molto facile farlo, darò una breve panoramica per lo stesso.
Aggiunta di funzioni alla libreria ESP8266:
L'aggiunta della tua funzione ti aiuterà a inviare qualsiasi comando "AT" al modulo ESP8266. Per procedere con questo è necessario leggere la documentazione del set di istruzioni del modulo ESP8266. È possibile inviare direttamente qualsiasi comando AT che si trova nel manuale del set di istruzioni. Ma ricorda sempre di aggiungere "/ r / n" alla fine di ogni comando AT. Ad esempio, se desideri stabilire più connessioni con il tuo modulo ESP. Quindi apri la documentazione del set di istruzioni e trova il nostro comando AT che farà questo lavoro per te. Qui il comando “AT + CIPMUX = 1” ti permetterà di stabilire più connessioni con il tuo modulo ESP.
Ora tutto ciò che devi fare è inviare questo "AP + CIPMUX = 1" al tuo modulo ESP8266 utilizzando la porta seriale. Il modo fondamentale per farlo è semplicemente usare il comando
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Funzionerà ma non è il modo migliore per farlo. Devi rileggere ciò che il tuo ESP8266 risponde al tuo comando. Nel nostro caso risponderà con "OK". Quindi devi leggere i dati in arrivo dal modulo ESP8266 e confermare che è un "OK". Inoltre è possibile creare questa funzione in cui "1" o "0" possono essere passati come argomenti.
Vai avanti e prova a creare le tue funzioni per la libreria. Ma se hai bisogno di aiuto, sentiti libero di usare la sezione commenti e io ti aiuterò.