- Matériaux nécessaires:
- Programmation du microcontrôleur PIC:
- Fonctions de la bibliothèque ESP8266:
- Exemple de programme:
- Sortie de simulation:
- Vérification de sortie:
- Ajout de fonctions à la bibliothèque ESP8266:
Dans cet article, expliquons comment interfacer le module WIFI ESP8266 avec un microcontrôleur PIC. Jusqu'à présent, vous avez peut-être utilisé le module ESP8266 en tant que microcontrôleur autonome ou l'avez peut-être utilisé avec la bibliothèque Arduino. Mais, quand il s'agit de projets de systèmes embarqués hardcore, nous devons également savoir comment l'utiliser avec des microcontrôleurs PIC. Cela vous aidera à personnaliser vos projets dans une perspective de conception et en même temps à le rendre bon marché.
Les modules ESP8266 sont livrés avec un firmware par défaut chargé, nous pouvons donc programmer le module à l'aide des commandes AT. Ces commandes doivent être envoyées via un canal de communication série. Ce canal est établi entre le PIC et le module ESP8266 en utilisant le module USART dans le microcontrôleur PIC . L'ensemble du travail sera surveillé et signalé à l'utilisateur à l'aide d'un écran LCD 16x2. Par conséquent, ce didacticiel suppose que vous avez des connaissances de base sur le module USART dans PIC, sur l'interface LCD avec PIC et sur l'utilisation des commandes AT dans ESP8266. Si vous ne le faites pas, vous pouvez revenir aux didacticiels liés pour les apprendre à l'avance.
Matériaux nécessaires:
Vous aurez besoin du matériel suivant pour terminer ce didacticiel
- PIC16F877A
- Oscillateur à cristal 20 MHz
- 7805
- LM317
- ESP8266
- Écran LCD 16 * 2
- Programmeur PicKit3
- Résistances (1K, 220ohm, 360ohm)
- Condensateurs (1uF, 0.1uF, 33pF)
- Fils de cavalier
- Adaptateur 12V pour alimenter le module PIC et ESP
Matériel:
Le schéma complet du projet est présenté ci-dessous
Le schéma se compose de deux circuits de régulation de tension, l'un est un régulateur + 5V qui est utilisé pour alimenter le microcontrôleur PIC et l'autre est un régulateur 3,3V qui alimente le module ESP8266. Le + 5V est régulé en utilisant un 7805 (IC régulateur de tension linéaire). Le 3,3 V est régulé à l'aide du LM317 (régulateur de tension variable). Le module ESP8266 consomme beaucoup de courant (~ 800 mA), donc si vous concevez votre propre alimentation, assurez-vous qu'il peut fournir un courant aussi élevé. Assurez-vous également que les broches de masse du PIC et du module ESP8266 sont connectées ensemble.
Nous savons donc maintenant que le PIC fonctionne sur + 5V et que l'ESP8266 fonctionne à 3,3V volts. Afin d'établir une communication USART entre ces deux modules, nous avons besoin d'un circuit convertisseur logique 5V - 3,3V, comme indiqué dans la figure ci-dessus. Ce circuit n'est rien d'autre qu'un diviseur de potentiel qui convertit simplement le + 5V entrant en 3,3V. Cela empêchera la broche RX tolérable 3,3 V de l'ESP8266 d'obtenir + 5V.
J'ai créé les modules PIC et ESP sur deux cartes de performance distinctes, comme indiqué dans ces tutoriels. De cette façon, je peux les utiliser universellement pour des projets plus similaires
- Matériel LED utilisant PIC
- Premiers pas avec ESP8266
Vous pouvez suivre la même chose, créer votre propre carte dans votre style ou simplement connecter le circuit ci-dessus à une maquette.
Programmation du microcontrôleur PIC:
Afin de programmer le microcontrôleur PIC pour envoyer des «commandes AT» en série en utilisant USART au module ESP8266, nous devons utiliser une bibliothèque. Cette bibliothèque vous évitera beaucoup de tracas, comme l'utilisation des modules d'instructions ESP8266 pour vérifier chaque commande AT, puis trouver un moyen de les transmettre au module ESP. Cette librairie est un logiciel gratuit à l'origine développé par Camil Staps et plus tard il a été amélioré et modifié par Circuit Digest afin de pouvoir être utilisé avec notre microcontrôleur PIC16F877A. Vous pouvez le télécharger ici
La bibliothèque est encore en cours de développement, mais vous pouvez utiliser la plupart des commandes AT importantes du micrologiciel ESP8266. Si vous trouvez que l'une des commandes dont vous avez besoin est manquante, faites-le moi savoir dans la section commentaires et j'essaierai de l'ajouter pour vous. Ce tutoriel vous expliquera toutes les commandes (jusqu'à présent) qui peuvent être utilisées via cette bibliothèque. Plus vous guidera également pour ajouter vos propres fonctions à la bibliothèque.
Fonctions de la bibliothèque ESP8266:
- Initialize_ESP8266 (): Cette fonction initialisera le module USART du PIC pour communiquer avec le module ESP8266. Il définit le débit en bauds à 115200 et prépare les broches Rx et Tx du PIC pour la communication USART.
- _esp8266_putch (): Cette fonction est utilisée pour envoyer un seul caractère en série au module ESP8266. Par exemple, _esp8266_putch ('a') enverra le caractère a en série au module ESP.
- _esp8266_getch (): Cette fonction est utilisée pour récupérer un seul caractère du module ESP. Par exemple, si l'ESP imprime «OK» et que nous utilisons char a = _esp8266_getch (). Ensuite, le caractère «o» sera stocké dans la variable a.
- ESP8266_send_string (): Cette fonction est la version chaîne de _esp8266_putch (). Il peut envoyer une chaîne complète au module ESP8266. Par exemple, ESP8266_send_string («AT / r / n») enverra la commande «AT» au module ESP8266.
- esp8266_isStarted (): Il est utilisé pour vérifier si le PIC peut communiquer avec le module ESP. Il envoie la commande "AT" et attend "OK" s'il est reçu il retourne vrai sinon il retourne faux.
- esp8266_restart (): réinitialise le module ESP8266 et renvoie true si la réinitialisation est réussie et renvoie false si elle échoue.
- esp8266_mode (): Utilisé pour définir le mode de fonctionnement du module ESP8266. Comme nous le savons, il peut fonctionner selon trois modes différents.
Mode station |
|
Mode AP doux |
|
Mode Station et AP |
- esp8266_connect (): vous permet de vous connecter à un signal wifi. Par exemple esp8266_connect ("home", "12345678") , permettra à votre module de se connecter au signal wifi nommé home dont le mot de passe est 12345678.
- esp8266_disconnect (): Cette fonction déconnecte votre module de toute connexion wifi précédemment connectée
- esp8266_ip (): récupère l'adresse IP et la renvoie. Utilisez cette fonction si vous souhaitez connaître l'adresse IP du module ESP8266.
- esp8266_start (): Cette fonction est utilisée pour démarrer une communication TCP ou UDP. Par exemple esp8266_start ( "TCP", "192.168.101.110", 80) . Démarre un réseau TCP sur cette IP et le port 80.
- esp8266_send (): Cette fonction est utilisée pour envoyer des informations au réseau TCP / UDP. Le script HTML sera envoyé à l'aide de cette commande. Ensuite, ce script apparaîtra dans l'adresse IP dans laquelle la communication a été établie auparavant.
- esp8266_config_softAP (): Cette fonction est utilisée pour configurer le softAP. Par exemple esp8266_config_softAP ("office", "12345678"); créera un signal Wifi nommé office et le mot de passe 12345678 doit être utilisé pour y accéder.
- esp8266_get_stationIP (): Cette fonction vous renverra l'adresse IP / MAC des clients connectés à votre softAP.
Exemple de programme:
Maintenant que nous avons compris les fonctions de chaque commande de la bibliothèque, examinons un petit exemple de programme. Dans ce programme, nous allons vérifier si la connexion entre ESP8266 et PIC est réussie, puis créer un réseau WIFI (SoftAP) avec un nom et un mot de passe préférés. Le programme complet et la simulation de celui-ci seront expliqués pour votre compréhension.
Encore une fois, si vous n'avez pas lu notre tutoriel d'interfaçage PIC avec LCD et PIC USART, veuillez lire le, avant de continuer car ce n'est qu'alors que cela aura un sens pour vous.
Depuis que nous commençons à peine à interfacer PIC avec l'ESP8266, j'ai utilisé un écran LCD pour m'assurer que tout fonctionne correctement.
faire {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP non trouvé"); } while (! esp8266_isStarted ()); // attend que l'ESP renvoie "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP est connecté"); __delay_ms (1500); Lcd_Clear ();
Lorsque nous envoyons le «AT» au module ESP8266, il répond par un «OK». Cela nous garantit que le module ESP8266 est connecté avec succès. La fonction esp8266_isStarted () est utilisée pour la même chose. Nous envoyons le signal AT du PIC et nous attendons que le module ESP soit vivant et nous envoyons un OK. Si nous obtenons un OK, nous affichons que «l'ESP est connecté» sur l'écran LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP défini comme AP"); __delay_ms (1500); Lcd_Clear ();
Les lignes de code ci-dessus sont utilisées pour configurer le module ESP pour qu'il fonctionne en mode «AP logiciel». La fonction esp8266_mode (2); envoie les commandes AT «AT + CWMODE = 3» au module et attend que le module réponde par «OK»
/ * Configurez le nom et le mot de passe AP * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP configuré"); __delay_ms (1500); Lcd_Clear (); / * AP configuré * /
Ce segment du code est utilisé pour configurer le softAP. Ici, nous avons nommé le SSID comme «CircuitDigest» et le mot de passe comme «619007123». Pour indiquer que le processus est terminé, nous attendrons que le module réponde avec «OK», puis imprimerons AP configuré sur l'écran LCD.
Voilà maintenant que nous avons interfacé le module ESP8266 avec le MCU PIC et avons configuré le softAP avec un nom et un mot de passe de notre choix. Comme d'habitude, simulons ce code et voyons comment cela fonctionne.
Sortie de simulation:
Nous utilisons le logiciel Proteus pour simuler la sortie. Le fichier de conception pour le même peut être trouvé dans la pièce jointe.
Comme nous n'avons pas de module ESP8266 dans la bibliothèque Proteus, nous avons utilisé le terminal série et répondons en tant qu'utilisateur au module PIC. L'écran de simulation une fois terminé ressemblera à ci-dessous
La sortie de notre code est affichée dans le terminal virtuel. Le fonctionnement complet de la simulation sera expliqué dans la vidéo ci-dessous.
Vérification de sortie:
Une fois le programme vérifié à l'aide de la simulation, videz-le dans votre microcontrôleur PIC. Effectuez les connexions comme indiqué dans les schémas ci-dessus (section Matériel). Vous devriez être en mesure de suivre votre progression sur l'écran LCD.
Une fois que l'écran LCD indique que l'AP est configuré, nous pouvons le vérifier en utilisant les paramètres WIFI dans le téléphone ou l'ordinateur portable. Mon ordinateur portable affiche le signal suivant selon notre programme.
Voilà les gars, nous avons réussi à interfacer le module ESP8266 avec le microcontrôleur PIC. Il s'agit d'une interface très basique et si vous voulez faire des projets compliqués en utilisant l'ESP8266, vous devrez peut-être ajouter vos propres bibliothèques ou au moins ajouter vos propres fonctions. Croyez-moi, il est très facile de le faire, je vais vous donner un bref aperçu de la même chose.
Ajout de fonctions à la bibliothèque ESP8266:
L'ajout de votre propre fonction vous aidera à envoyer n'importe quelle commande «AT» au module ESP8266. Pour cela, vous devez lire la documentation du jeu d'instructions du module ESP8266. Vous pouvez envoyer directement toute commande AT que vous trouverez dans ce manuel d'instructions. Mais n'oubliez jamais d'ajouter «/ r / n» à la fin de chaque commande AT. Par exemple, si vous souhaitez établir plusieurs connexions avec votre module ESP. Ensuite, ouvrez la documentation du jeu d'instructions et trouvez la commande AT qui fera ce travail pour vous. Ici la commande «AT + CIPMUX = 1» vous permettra d'établir plusieurs connexions avec votre module ESP.
Il ne vous reste plus qu'à envoyer ce «AP + CIPMUX = 1» à votre module ESP8266 en utilisant le port série. La manière la plus dure de le faire est d'utiliser simplement la commande
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Cela fonctionnera mais ce n'est pas la meilleure façon de le faire. Vous devez relire ce que votre ESP8266 répond à votre commande. Dans notre cas, il répondra «OK». Vous devez donc lire les données entrantes du module ESP8266 et confirmer qu'il s'agit d'un «OK». Vous pouvez également faire cette fonction où le «1» ou «0» peut être passé comme arguments.
Allez-y et essayez de créer vos propres fonctions pour la bibliothèque. Mais si vous avez besoin d'aide, n'hésitez pas à utiliser la section des commentaires et je vous aiderai.