- Nødvendige materialer:
- Programmering af PIC-mikrocontroller:
- Funktioner i ESP8266-biblioteket:
- Prøveprogram:
- Simulation output:
- Outputbekræftelse:
- Tilføjelse af funktioner til ESP8266-biblioteket:
Lad os i denne artikel diskutere, hvordan man interfacer WIFI-modul ESP8266 med en PIC-mikrocontroller. Indtil videre har du muligvis brugt ESP8266-modulet som en enkeltstående mikrokontroller eller måske brugt det sammen med Arduino-biblioteket. Men når det kommer til hardcore-indlejrede systemprojekter, bør vi også vide, hvordan man bruger det med PIC-mikrocontrollere. Dette hjælper dig med at tilpasse dine projekter i designperspektiv og samtidig gøre det billigt.
ESP8266-modulerne leveres med en standard firmware indlæst i den, og derfor kan vi programmere modulet ved hjælp af AT-kommandoer. Disse kommandoer skal sendes via en seriel kommunikationskanal. Denne kanal etableres mellem PIC og ESP8266-modulet ved hjælp af USART-modulet i PIC-mikrocontrolleren . Hele arbejdet overvåges og rapporteres til brugeren ved hjælp af en 16x2 LCD-skærm. Derfor forudsætter denne tutorial, at du har en vis grundlæggende viden om USART-modulet i PIC, interfacing LCD med PIC og brug af AT-kommandoer i ESP8266. Hvis du ikke gør det, kan du falde tilbage til de linkede tutorials for at lære dem på forhånd.
Nødvendige materialer:
Du har brug for følgende hardware for at gennemføre denne tutorial
- PIC16F877A
- 20MHz krystaloscillator
- 7805
- LM317
- ESP8266
- 16 * 2 LCD-skærm
- PicKit3 programmør
- Modstande (1K, 220ohm, 360ohm)
- Kondensatorer (1uF, 0.1uF, 33pF)
- Jumper ledninger
- 12V adapter til strømforsyning af PIC- og ESP-modulet
Hardware:
Projektets komplette skema er vist nedenfor
Skemaerne består af to spændingsregulator kredsløb, den ene er en + 5V regulator, der bruges til at drive PIC-mikrocontrolleren, og den anden er en 3.3V regulator, der driver ESP8266-modulet. + 5V reguleres ved hjælp af en 7805 (lineær spændingsregulator IC). 3.3V reguleres ved hjælp af LM317 (Variabel spændingsregulator). ESP8266-modulet bruger meget strøm (~ 800mA), og sørg derfor for, at det kan skaffe så høj strøm, hvis du designer din egen strømforsyning. Sørg også for, at jordstifterne på PIC og ESP8266-modulet er forbundet sammen.
Så nu ved vi, at PIC fungerer på + 5V, og ESP8266 fungerer ved 3,3V volt. For at etablere en USART-kommunikation mellem disse to moduler har vi brug for et 5V - 3.3V logisk konverterkredsløb som vist i ovenstående figur. Dette kredsløb er intet andet end en potentiel skillevæg, som simpelthen konverterer den indgående + 5V til 3,3V. Dette forhindrer, at den 3,3 V tolerable RX-pin på ESP8266 får + 5V.
Jeg har lavet PIC- og ESP-modulerne på to separate perfboards, som vist i disse tutorials. På denne måde kan jeg bruge dem universelt til flere lignende projekter
- LED-hardware ved hjælp af PIC
- Kom godt i gang med ESP8266
Du kan følge det samme eller bygge dit eget kort i din stil eller blot forbinde ovenstående kredsløb til et brødbræt.
Programmering af PIC-mikrocontroller:
For at programmere PIC-mikrocontrolleren til at sende “AT-kommandoer” serielt ved hjælp af USART til ESP8266-modulet, skal vi bruge et bibliotek. Dette bibliotek sparer dig for en masse besvær som at bruge ESP8266 instruktionsmoduler til at kontrollere for hver eneste AT-kommando og derefter finde en måde at overføre dem til ESP-modulet. Dette bibliotek er gratis software, der oprindeligt blev udviklet af Camil Staps, og senere blev det forbedret og modificeret af Circuit Digest, så det kan bruges med vores PIC16F877A Microcontroller. Du kan downloade det her
Biblioteket er stadig under udvikling, men du kan bruge de fleste af de vigtige AT-kommandoer i ESP8266-firmwaren. Hvis du finder ud af, at en af de kommandoer, du har brug for, mangler, så lad mig det vide i kommentarsektionen, og jeg vil prøve at tilføje den til dig. Denne tutorial forklarer dig alle de kommandoer (hidtil), der kan bruges af gennem dette bibliotek. Yderligere vil også guide dig til at tilføje dine egne funktioner til biblioteket.
Funktioner i ESP8266-biblioteket:
- Initialize_ESP8266 (): Denne funktion initialiserer USART-modulet i PIC for at kommunikere med ESP8266-modulet. Den indstiller baudhastigheden til 115200 og forbereder Rx- og Tx-stiften i PIC til USART-kommunikation.
- _esp8266_putch (): Denne funktion bruges til at sende et enkelt tegn serielt til ESP8266-modulet. For eksempel sender _esp8266_putch ('a') tegnet a serielt til ESPmodulen.
- _esp8266_getch (): Denne funktion bruges til at få et enkelt tegn fra ESP-modulet. For eksempel hvis ESP udskriver “OK”, og vi bruger char a = _esp8266_getch (). Derefter gemmes char 'o' i variablen a.
- ESP8266_send_string (): Denne funktion er strengversionen af _esp8266_putch (). Det kan sende en komplet streng til ESP8266-modulet. For eksempel sender ESP8266_send_string (“AT / r / n”) kommandoen “AT” til ESP8266-modulet.
- esp8266_isStarted (): Det bruges til at kontrollere, om PIC kan kommunikere med ESP-modulet. Den sender kommandoen "AT" og venter på "OK", hvis den modtages, returnerer den ellers, den returnerer falsk.
- esp8266_restart (): Nulstiller ESP8266-modulet og returnerer true er nulstillet og returnerer false hvis det ikke lykkes.
- esp8266_mode (): Bruges til at indstille arbejdstilstanden til ESP8266-modulet. Som vi ved, kan det fungere i tre forskellige tilstande.
Station-tilstand |
|
Blød AP-tilstand |
|
Både Station og AP-tilstand |
- esp8266_connect (): Giver dig mulighed for at oprette forbindelse til et wifi-signal. For eksempel esp8266_connect ("hjem", "12345678") , tillader dit modul at oprette forbindelse til wifi-signalet med navnet hjem, hvis adgangskode er 12345678.
- esp8266_disconnect (): Denne funktion afbryder dit modul fra enhver wifi-forbindelse, der tidligere var tilsluttet
- esp8266_ip (): Henter IP-adressen og returnerer den. Brug denne funktion, hvis du vil vide IP-adressen på ESP8266-modulet.
- esp8266_start (): Denne funktion bruges til at starte en TCP- eller UDP-kommunikation. For eksempel esp8266_start ( "TCP", "192.168.101.110", 80) . Vil starte et TCP-netværk i denne IP og port 80.
- esp8266_send (): Denne funktion bruges til at sende information til TCP / UDP-netværket. HTML-scriptet sendes ved hjælp af denne kommando. Derefter vises dette script i den IP-adresse, hvor kommunikationen blev oprettet tidligere.
- esp8266_config_softAP (): Denne funktion bruges til at konfigurere softAP. For eksempel esp8266_config_softAP (“office”, ”12345678”); opretter et Wifi-signal med navnet office, og adgangskoden 12345678 skal bruges til at få adgang til det.
- esp8266_get_stationIP (): Denne funktion giver dig IP / MAC-adressen for de klienter, der er forbundet til din softAP.
Prøveprogram:
Nu hvor vi har forstået funktionerne i hver eneste kommando i biblioteket, lad os se på et lille eksempelprogram. I dette program vil vi kontrollere, om forbindelsen mellem ESP8266 og PIC er vellykket, og derefter oprette et WIFI-netværk (SoftAP) med et foretrukket navn og adgangskode. Det komplette program og simuleringen af det samme vil blive forklaret for din forståelse.
Igen, hvis du ikke har læst vores PIC-grænseflade med LCD- og PIC USART-tutorial, skal du læse denne, inden du fortsætter, for kun da giver det mening for dig.
Da vi lige er begyndt at interface PIC med ESP8266, har jeg brugt en LCD til at sikre, at tingene fungerer korrekt.
gør {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ikke fundet"); } mens (! esp8266_isStarted ()); // vent til ESP sender "OK" Lcd_Set_Cursor (1,1) tilbage; Lcd_Print_String ("ESP er tilsluttet"); __forsink_ms (1500); Lcd_Clear ();
Når vi sender “AT” til ESP8266-modulet, svarer det tilbage med “OK”. Dette sikrer os, at ESP8266-modulet er tilsluttet korrekt. Funktionen esp8266_isStarted () bruges til det samme. Vi sender signalet AT fra PIC, og vi venter til ESP-modulet bliver levende og sender os en OK. Hvis vi får en OK, viser vi, at "ESP er tilsluttet" på LCD'et.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP indstillet som AP"); __forsink_ms (1500); Lcd_Clear ();
Ovenstående kodelinjer bruges til at indstille ESP-modulet til at fungere i “soft AP” -tilstand. Funktionen esp8266_mode (2); sender AT-kommandoerne “AT + CWMODE = 3” til modulet og venter på, at modulet reagerer med “OK”
/ * Konfigurer AP-navnet og adgangskoden * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP konfigureret"); __forsink_ms (1500); Lcd_Clear (); / * AP konfigureret * /
Dette segment af koden bruges til at konfigurere softAP. Her har vi navngivet SSID som “CircuitDigest” og adgangskoden som “619007123”. For at indikere, at processen er afsluttet, venter vi på, at modulet reagerer med “OK” og derefter udskriver AP konfigureret på LCD-skærmen.
Det er det, nu har vi interfacet ESP8266-modulet med PIC MCU og har konfigureret softAP med et navn og en adgangskode efter eget valg. Som sædvanlig kan vi simulere denne kode og se, hvordan den fungerer.
Simulation output:
Vi bruger Proteus-softwaren til at simulere output. Designfilen til det samme kan findes i vedhæftet fil.
Da vi ikke har et ESP8266-modul i Proteus-biblioteket, har vi brugt den serielle terminal og reagerer tilbage som bruger på PIC-modulet. Når skærmen er afsluttet, vil simuleringen se ud som nedenfor
Outputtet af vores kode vises i den virtuelle terminal. Den komplette bearbejdning af simuleringen vil blive forklaret i videoen nedenfor.
Outputbekræftelse:
Når programmet er verificeret ved hjælp af simuleringen, skal du dumpe det i din PIC-mikrocontroller. Foretag forbindelserne som vist i skemaerne ovenfor (hardwareafsnittet). Du skal være i stand til at spore dine fremskridt gennem LCD-displayet.
Når LCD'en siger, at AP er konfigureret, kan vi tjekke det ud ved hjælp af WIFI-indstillingerne i telefon eller bærbar computer. Min bærbare computer viser følgende signal i henhold til vores program.
Det er det, vi har med succes grænsefladen til ESP8266-modulet med PIC Microcontroller. Dette er en meget grundlæggende grænseflade, og hvis du vil lave komplicerede projekter ved hjælp af ESP8266, skal du muligvis tilføje dine egne biblioteker eller i det mindste tilføje dine egne funktioner. Stol på mig, det er meget let at gøre det, jeg vil give et kort indblik i det samme.
Tilføjelse af funktioner til ESP8266-biblioteket:
Tilføjelse af din egen funktion hjælper dig med at sende enhver “AT” -kommando til ESP8266-modulet. For at fortsætte med dette skal du læse dokumentationen til instruktionssættet til ESP8266-modulet. Du kan sende en hvilken som helst AT-kommando direkte, som du finder i denne brugsanvisning. Men husk altid at tilføje “/ r / n” i slutningen af hver AT-kommando. For eksempel hvis du vil oprette flere forbindelser med dit ESP-modul. Åbn derefter instruktionssætningsdokumentationen, og find vores hvilken AT-kommando, der gør dette job for dig. Her giver kommandoen “AT + CIPMUX = 1” dig mulighed for at oprette flere forbindelser med dit ESP-modul.
Nu skal du bare sende denne “AP + CIPMUX = 1” til dit ESP8266-modul ved hjælp af den serielle port. Den hardcore måde at gøre dette på er ved blot at bruge kommandoen
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Dette fungerer, men er ikke den bedste måde at gøre det på. Du skal læse tilbage, hvad din ESP8266 reagerer på din kommando. I vores tilfælde vil det svare med "OK". Så du er nødt til at læse de indgående data fra ESP8266-modulet og bekræfte, at det er en “OK”. Du kan også lave denne funktion, hvor "1" eller "0" kan sendes som argumenter.
Gå videre og prøv at lave dine egne funktioner til biblioteket. Men hvis du har brug for hjælp, bedes du være fri til at bruge kommentarsektionen, så hjælper jeg dig.