- Erforderliche Materialien:
- Programmierung des PIC-Mikrocontrollers:
- Funktionen in der ESP8266-Bibliothek:
- Beispielprogramm:
- Simulationsausgabe:
- Ausgabeüberprüfung:
- Hinzufügen von Funktionen zur ESP8266-Bibliothek:
In diesem Artikel wird erläutert, wie das WIFI-Modul ESP8266 mit einem PIC-Mikrocontroller verbunden wird. Bisher haben Sie möglicherweise das ESP8266-Modul als eigenständigen Mikrocontroller verwendet oder es mit der Arduino-Bibliothek verwendet. Aber wenn es um Hardcore-Embedded-System-Projekte geht, sollten wir wissen, wie man es auch mit PIC-Mikrocontrollern verwendet. Dies wird Ihnen helfen, Ihre Projekte in der Designperspektive anzupassen und gleichzeitig billig zu machen.
In die ESP8266-Module ist eine Standard-Firmware geladen, daher können wir das Modul mit AT-Befehlen programmieren. Diese Befehle müssen über einen seriellen Kommunikationskanal gesendet werden. Dieser Kanal wird zwischen dem PIC- und dem ESP8266-Modul mithilfe des USART-Moduls im PIC-Mikrocontroller hergestellt . Die gesamte Arbeit wird überwacht und dem Benutzer mithilfe eines 16x2-LCD-Displays gemeldet. In diesem Lernprogramm wird daher davon ausgegangen, dass Sie über grundlegende Kenntnisse des USART-Moduls in PIC, der Schnittstelle zwischen LCD und PIC sowie der Verwendung von AT-Befehlen in ESP8266 verfügen. Wenn Sie dies nicht tun, können Sie auf die verknüpften Tutorials zurückgreifen, um sie vorher zu lernen.
Erforderliche Materialien:
Sie benötigen die folgende Hardware, um dieses Lernprogramm abzuschließen
- PIC16F877A
- 20 MHz Quarzoszillator
- 7805
- LM317
- ESP8266
- 16 * 2 LCD-Anzeige
- PicKit3-Programmierer
- Widerstände (1K, 220 Ohm, 360 Ohm)
- Kondensatoren (1 uF, 0,1 uF, 33 pF)
- Überbrückungsdrähte
- 12-V-Adapter zur Stromversorgung des PIC- und ESP-Moduls
Hardware:
Das vollständige Schema des Projekts ist hier unten dargestellt
Das Schema besteht aus zwei Spannungsreglerkreisen, von denen einer ein + 5-V-Regler ist, der zur Stromversorgung des PIC-Mikrocontrollers verwendet wird, und der andere ein 3,3-V-Regler, der das ESP8266-Modul versorgt. Die + 5V werden mit einem 7805 (Linear Voltage Regulator IC) geregelt. Die 3,3 V werden mit LM317 (Variable Voltage Regulator) geregelt. Das ESP8266-Modul verbraucht viel Strom (~ 800 mA). Wenn Sie also ein eigenes Netzteil entwerfen, stellen Sie sicher, dass es so hohen Strom liefern kann. Stellen Sie außerdem sicher, dass die Erdungsstifte des PIC und des ESP8266-Moduls miteinander verbunden sind.
Jetzt wissen wir also, dass der PIC mit +5 V und der ESP8266 mit 3,3 V betrieben wird. Um eine USART-Kommunikation zwischen diesen beiden Modulen herzustellen, benötigen wir eine 5V - 3,3V Logikwandlerschaltung, wie in der obigen Abbildung gezeigt. Diese Schaltung ist nichts anderes als ein Potentialteiler, der einfach die eingehenden + 5V in 3,3 V umwandelt. Dadurch wird verhindert, dass der 3,3 V-tolerierbare RX-Pin des ESP8266 + 5 V erhält.
Ich habe die PIC- und ESP-Module auf zwei separaten Perf-Boards erstellt, wie in diesen Tutorials gezeigt. Auf diese Weise kann ich sie universell für ähnlichere Projekte verwenden
- LED-Hardware mit PIC
- Erste Schritte mit ESP8266
Sie können dem gleichen folgen oder Ihr eigenes Board in Ihrem Stil bauen oder einfach die obige Schaltung mit einem Steckbrett verbinden.
Programmierung des PIC-Mikrocontrollers:
Um den PIC-Mikrocontroller so zu programmieren, dass er mit USART seriell „AT-Befehle“ an das ESP8266-Modul sendet, muss eine Bibliothek verwendet werden. Diese Bibliothek erspart Ihnen viel Aufwand, z. B. die Verwendung der ESP8266-Anweisungsmodule, um nach jedem einzelnen AT-Befehl zu suchen und dann eine Möglichkeit zu finden, diese an das ESP-Modul zu übertragen. Diese Bibliothek ist eine kostenlose Software, die ursprünglich von Camil Staps entwickelt wurde. Später wurde sie von Circuit Digest verbessert und modifiziert, sodass sie mit unserem PIC16F877A-Mikrocontroller verwendet werden kann. Sie können es hier herunterladen
Die Bibliothek befindet sich noch in der Entwicklung, Sie können jedoch die meisten wichtigen AT-Befehle in der ESP8266-Firmware verwenden. Wenn Sie feststellen, dass einer der von Ihnen benötigten Befehle fehlt, lassen Sie es mich im Kommentarbereich wissen, und ich werde versuchen, ihn für Sie hinzuzufügen. In diesem Tutorial werden Ihnen alle Befehle (bis jetzt) erklärt, die von dieser Bibliothek verwendet werden können. Außerdem erfahren Sie, wie Sie der Bibliothek eigene Funktionen hinzufügen können.
Funktionen in der ESP8266-Bibliothek:
- Initialize_ESP8266 (): Diese Funktion initialisiert das USART-Modul des PIC für die Kommunikation mit dem ESP8266-Modul. Es setzt die Baudrate auf 115200 und bereitet den Rx- und Tx-Pin des PIC für die USART-Kommunikation vor.
- _esp8266_putch (): Mit dieser Funktion wird ein einzelnes Zeichen seriell an das ESP8266-Modul gesendet. Beispielsweise sendet _esp8266_putch ('a') das Zeichen a seriell an das ESP-Modul.
- _esp8266_getch (): Mit dieser Funktion wird ein einzelnes Zeichen vom ESP-Modul abgerufen. Zum Beispiel, wenn das ESP "OK" druckt und wir char a = _esp8266_getch () verwenden. Dann wird das Zeichen 'o' in der Variablen a gespeichert.
- ESP8266_send_string (): Diese Funktion ist die String-Version von _esp8266_putch (). Es kann eine vollständige Zeichenfolge an das ESP8266-Modul senden. Beispielsweise sendet ESP8266_send_string ("AT / r / n") den Befehl "AT" an das ESP8266-Modul.
- esp8266_isStarted (): Hiermit wird überprüft, ob der PIC mit dem ESP-Modul kommunizieren kann. Es sendet den Befehl "AT" und wartet auf "OK", wenn es empfangen wird, gibt es true zurück, andernfalls gibt es false zurück.
- esp8266_restart (): Setzt das ESP8266-Modul zurück und gibt true zurück, wird erfolgreich zurückgesetzt und gibt false zurück, wenn dies nicht erfolgreich ist.
- esp8266_mode (): Dient zum Einstellen des Arbeitsmodus des ESP8266-Moduls. Wie wir wissen, kann es in drei verschiedenen Modi funktionieren.
Stationsmodus |
|
SoftAP Modus |
|
Sowohl Station als auch AP-Modus |
- esp8266_connect (): Ermöglicht die Verbindung zu einem WLAN-Signal. Mit esp8266_connect ("home", "12345678") kann Ihr Modul beispielsweise eine Verbindung zum WLAN-Signal "home" herstellen, dessen Kennwort 12345678 lautet.
- esp8266_disconnect (): Diese Funktion trennt Ihr Modul von jeder zuvor verbundenen WLAN-Verbindung
- esp8266_ip (): Ruft die IP-Adresse ab und gibt sie zurück. Verwenden Sie diese Funktion, wenn Sie die IP-Adresse des ESP8266-Moduls kennen möchten.
- esp8266_start (): Mit dieser Funktion wird eine TCP- oder UDP-Kommunikation gestartet. Zum Beispiel esp8266_start ( "TCP", "192.168.101.110", 80) . Startet ein TCP-Netzwerk in dieser IP und Port 80.
- esp8266_send (): Mit dieser Funktion werden Informationen an das TCP / UDP-Netzwerk gesendet. Das HTML-Skript wird mit diesem Befehl gesendet. Dieses Skript wird dann in der IP-Adresse angezeigt, in der die Kommunikation zuvor hergestellt wurde.
- esp8266_config_softAP (): Mit dieser Funktion wird der SoftAP konfiguriert. Zum Beispiel esp8266_config_softAP ("office", "12345678"); erstellt ein Wifi-Signal mit dem Namen office und das Kennwort 12345678 sollte verwendet werden, um darauf zuzugreifen.
- esp8266_get_stationIP (): Diese Funktion gibt Ihnen die IP / MAC-Adresse der Clients zurück, die mit Ihrem SoftAP verbunden sind.
Beispielprogramm:
Nachdem wir die Funktionen jedes einzelnen Befehls in der Bibliothek verstanden haben, wollen wir uns ein kleines Beispielprogramm ansehen. In diesem Programm prüfen wir, ob die Verbindung zwischen ESP8266 und PIC erfolgreich ist, und erstellen dann ein WIFI-Netzwerk (SoftAP) mit einem bevorzugten Namen und Kennwort. Das vollständige Programm und die Simulation desselben werden zu Ihrem Verständnis erläutert.
Wenn Sie unser Tutorial zur PIC-Schnittstelle mit LCD und PIC USART noch nicht gelesen haben, lesen Sie bitte das, bevor Sie fortfahren, da dies nur dann für Sie sinnvoll ist.
Da wir gerade erst anfangen, PIC mit dem ESP8266 zu verbinden, habe ich ein LCD verwendet, um sicherzustellen, dass die Dinge richtig funktionieren.
do {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nicht gefunden"); } while (! esp8266_isStarted ()); // warte bis der ESP "OK" zurücksendet Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ist verbunden"); __delay_ms (1500); Lcd_Clear ();
Wenn wir das "AT" an das ESP8266-Modul senden, antwortet es mit einem "OK". Dies stellt sicher, dass das ESP8266-Modul erfolgreich verbunden ist. Die Funktion esp8266_isStarted () wird dafür verwendet. Wir senden das Signal AT vom PIC und warten, bis das ESP-Modul lebendig wird, und senden uns ein OK. Wenn wir ein OK erhalten, zeigen wir auf dem LCD an, dass das „ESP angeschlossen ist“.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP als AP festgelegt"); __delay_ms (1500); Lcd_Clear ();
Die obigen Codezeilen werden verwendet, um das ESP-Modul so einzustellen, dass es im „Soft AP“ -Modus arbeitet. Die Funktion esp8266_mode (2); sendet die AT-Befehle "AT + CWMODE = 3" an das Modul und wartet darauf, dass das Modul mit "OK" antwortet.
/ * Konfigurieren Sie den AP-Namen und das Kennwort * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP konfiguriert"); __delay_ms (1500); Lcd_Clear (); / * AP konfiguriert * /
Dieses Segment des Codes wird zum Konfigurieren des SoftAP verwendet. Hier haben wir die SSID als "CircuitDigest" und das Passwort als "619007123" bezeichnet. Um anzuzeigen, dass der Vorgang abgeschlossen ist, warten wir, bis das Modul mit „OK“ antwortet, und drucken dann den konfigurierten AP auf den LCD-Bildschirm.
Jetzt haben wir das ESP8266-Modul mit der PIC-MCU verbunden und den SoftAP mit einem Namen und einem Passwort unserer Wahl konfiguriert. Wie üblich können wir diesen Code simulieren und sehen, wie er funktioniert.
Simulationsausgabe:
Wir verwenden die Proteus-Software, um die Ausgabe zu simulieren. Die entsprechende Designdatei finden Sie im Anhang.
Da wir kein ESP8266-Modul in der Proteus-Bibliothek haben, verwenden wir das serielle Terminal und antworten als Benutzer auf das PIC-Modul. Der Bildschirm mit der abgeschlossenen Simulation sieht wie folgt aus
Die Ausgabe unseres Codes wird im virtuellen Terminal angezeigt. Die vollständige Funktionsweise der Simulation wird im folgenden Video erläutert.
Ausgabeüberprüfung:
Sobald das Programm mithilfe der Simulation überprüft wurde, legen Sie es in Ihrem PIC-Mikrocontroller ab. Stellen Sie die Verbindungen wie in den obigen Schaltplänen (Abschnitt Hardware) gezeigt her. Sie sollten in der Lage sein, Ihren Fortschritt über das LCD-Display zu verfolgen.
Sobald das LCD anzeigt, dass der AP konfiguriert ist, können wir dies mithilfe der WIFI-Einstellungen in Telefon oder Laptop überprüfen. Mein Laptop zeigt das folgende Signal gemäß unserem Programm.
Das heißt, wir haben das ESP8266-Modul erfolgreich mit dem PIC-Mikrocontroller verbunden. Dies ist eine sehr einfache Benutzeroberfläche. Wenn Sie mit dem ESP8266 komplizierte Projekte ausführen möchten, müssen Sie möglicherweise Ihre eigenen Bibliotheken oder zumindest Ihre eigenen Funktionen hinzufügen. Vertrauen Sie mir, es ist sehr einfach, ich werde einen kurzen Einblick dafür geben.
Hinzufügen von Funktionen zur ESP8266-Bibliothek:
Durch Hinzufügen einer eigenen Funktion können Sie einen beliebigen AT-Befehl an das ESP8266-Modul senden. Um damit fortzufahren, müssen Sie die Dokumentation des Befehlssatzes des ESP8266-Moduls lesen. Sie können jeden AT-Befehl, den Sie in dieser Bedienungsanleitung finden, direkt senden. Denken Sie jedoch immer daran, am Ende jedes AT-Befehls "/ r / n" anzuhängen. Zum Beispiel, wenn Sie mehrere Verbindungen mit Ihrem ESP-Modul herstellen möchten. Öffnen Sie dann die Dokumentation zum Befehlssatz und finden Sie heraus, welcher AT-Befehl diese Aufgabe für Sie erledigt. Hier können Sie mit dem Befehl „AT + CIPMUX = 1“ mehrere Verbindungen mit Ihrem ESP-Modul herstellen.
Jetzt müssen Sie nur noch diesen „AP + CIPMUX = 1“ über die serielle Schnittstelle an Ihr ESP8266-Modul senden. Die Hardcore-Methode besteht darin, einfach den Befehl zu verwenden
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Dies wird funktionieren, ist aber nicht der beste Weg, dies zu tun. Sie müssen zurücklesen, wie Ihr ESP8266 auf Ihren Befehl reagiert. In unserem Fall wird mit "OK" geantwortet. Sie müssen also die eingehenden Daten vom ESP8266-Modul lesen und bestätigen, dass es sich um ein „OK“ handelt. Sie können diese Funktion auch ausführen, wenn die "1" oder "0" als Argumente übergeben werden kann.
Versuchen Sie, Ihre eigenen Funktionen für die Bibliothek zu erstellen. Wenn Sie jedoch Hilfe benötigen, können Sie den Kommentarbereich nutzen, und ich werde Ihnen weiterhelfen.