- Nødvendige materialer:
- Programmering av PIC-mikrokontrolleren:
- Funksjoner i ESP8266-biblioteket:
- Eksempelprogram:
- Simuleringsutgang:
- Utgangsbekreftelse:
- Legge til funksjoner i ESP8266-biblioteket:
I denne artikkelen, la oss diskutere hvordan du kan koble WIFI-modul ESP8266 til en PIC-mikrokontroller. Så langt har du kanskje brukt ESP8266-modulen som en frittstående mikrokontroller, eller du har kanskje brukt den med Arduino-biblioteket. Men når det gjelder hardcore innebygde systemprosjekter, bør vi vite hvordan vi også bruker det med PIC-mikrokontrollere. Dette vil hjelpe deg med å tilpasse prosjektene dine i designperspektiv og samtidig gjøre det billig.
ESP8266-modulene kommer med en standard firmware lastet inn i den, og derfor kan vi programmere modulen ved hjelp av AT-kommandoer. Disse kommandoene må sendes gjennom en seriell kommunikasjonskanal. Denne kanalen etableres mellom PIC og ESP8266-modulen ved å bruke USART-modulen i PIC-mikrokontrolleren . Hele arbeidet vil bli overvåket og rapportert til brukeren ved hjelp av en 16x2 LCD-skjerm. Derfor antar denne opplæringen at du har grunnleggende kunnskap om USART-modulen i PIC, grensesnitt LCD med PIC og bruk av AT-kommandoer i ESP8266. Hvis du ikke gjør det, kan du falle tilbake til de tilknyttede opplæringene for å lære dem på forhånd.
Nødvendige materialer:
Du trenger følgende maskinvare for å fullføre denne opplæringen
- PIC16F877A
- 20MHz krystalloscillator
- 7805
- LM317
- ESP8266
- 16 * 2 LCD-skjerm
- PicKit3 programmerer
- Motstander (1K, 220ohm, 360ohm)
- Kondensatorer (1uF, 0.1uF, 33pF)
- Jumper ledninger
- 12V adapter for å drive PIC- og ESP-modulen
Maskinvare:
Den fullstendige skjemaet for prosjektet er vist nedenfor
Skjemaene består av to spenningsregulatorer, den ene er en + 5V regulator som brukes til å drive PIC-mikrokontrolleren, og den andre er en 3.3V-regulator som driver ESP8266-modulen. + 5V reguleres ved hjelp av en 7805 (Lineær spenningsregulator IC). 3.3V reguleres ved hjelp av LM317 (Variable Voltage Regulator). ESP8266-modulen bruker mye strøm (~ 800mA), og sørg derfor for at den kan skaffe så høy strøm hvis du designer din egen strømforsyning. Forsikre deg også om at jordpinnene til PIC og ESP8266-modulen er koblet sammen.
Så nå vet vi at PIC opererer på + 5V og ESP8266 opererer på 3,3V volt. For å etablere en USART-kommunikasjon mellom disse to modulene, trenger vi en 5V - 3.3V logikkomformerkrets som vist i figuren ovenfor. Denne kretsen er ikke noe annet enn en potensiell skillelinje som bare konverterer innkommende + 5V til 3,3V. Dette vil forhindre at den 3,3 V tolerable RX-pinnen på ESP8266 får + 5V.
Jeg har laget PIC- og ESP-modulene på to separate perf-kort, som vist i disse veiledningene. På denne måten kan jeg bruke dem universelt til flere lignende prosjekter
- LED-maskinvare ved bruk av PIC
- Komme i gang med ESP8266
Du kan følge det samme, eller bygge ditt eget brett i din stil eller bare koble kretsen ovenfor til et brødbrett.
Programmering av PIC-mikrokontrolleren:
For å programmere PIC-mikrokontrolleren til å sende "AT-kommandoer" serielt ved bruk av USART til ESP8266-modulen, må vi bruke et bibliotek. Dette biblioteket vil spare deg for mye bry, som å bruke ESP8266 instruksjonsmodulene for å sjekke for hver AT-kommando, og deretter finne en måte å overføre dem til ESP-modulen. Dette biblioteket er gratis programvare som opprinnelig ble utviklet av Camil Staps, og senere ble det forbedret og modifisert av Circuit Digest slik at det kan brukes med vår PIC16F877A Microcontroller. Du kan laste den ned her
Biblioteket er fortsatt under utvikling, men du kan bruke de fleste viktige AT-kommandoene i firmware ESP8266. Hvis du finner at noe av kommandoen du trenger mangler, så gi meg beskjed i kommentarseksjonen, så prøver jeg å legge den til for deg. Denne opplæringen vil forklare deg alle kommandoene (så langt) som kan brukes av gjennom dette biblioteket. Videre vil du også veilede deg for å legge til dine egne funksjoner i biblioteket.
Funksjoner i ESP8266-biblioteket:
- Initialisere_ESP8266 (): Denne funksjonen vil initialisere USART-modulen til PIC for å kommunisere med ESP8266-modulen. Den setter overføringshastigheten til 115200 og forbereder Rx og Tx-pinnen til PIC for USART-kommunikasjon.
- _esp8266_putch (): Denne funksjonen brukes til å sende et enkelt tegn serielt til ESP8266-modulen. For eksempel vil _esp8266_putch ('a') sende tegnet a serielt til ESPmodulen.
- _esp8266_getch (): Denne funksjonen brukes til å få et enkelt tegn fra ESP-modulen. For eksempel hvis ESP skriver ut "OK" og vi bruker char a = _esp8266_getch (). Deretter lagres røye 'o' i variabelen a.
- ESP8266_send_string (): Denne funksjonen er strengversjonen av _esp8266_putch (). Den kan sende en komplett streng til ESP8266-modulen. For eksempel vil ESP8266_send_string (“AT / r / n”) sende kommandoen “AT” til ESP8266-modulen.
- esp8266_isStarted (): Den brukes til å sjekke om PIC kan kommunisere med ESP-modulen. Den sender kommandoen "AT" og venter på "OK" hvis den mottas, returnerer den sant, ellers returnerer den falsk.
- esp8266_restart (): Tilbakestiller ESP8266-modulen og returnerer true er tilbakestilt vellykket og returnerer false hvis ikke vellykket.
- esp8266_mode (): Brukes til å stille arbeidsmodus for ESP8266-modulen. Som vi vet kan det fungere i tre forskjellige moduser.
Stasjonsmodus |
|
Myk AP-modus |
|
Både stasjon og AP-modus |
- esp8266_connect (): Lar deg koble til et wifi-signal. For eksempel esp8266_connect ("hjem", "12345678") , vil tillate modulen din å koble til wifi-signalet som heter hjem med passordet er 12345678.
- esp8266_disconnect (): Denne funksjonen kobler modulen fra enhver wifi-tilkobling som tidligere var koblet til
- esp8266_ip (): Henter IP-adressen og returnerer den. Bruk denne funksjonen hvis du vil vite IP-adressen til ESP8266-modulen.
- esp8266_start (): Denne funksjonen brukes til å starte en TCP- eller UDP-kommunikasjon. For eksempel esp8266_start ( "TCP", "192.168.101.110", 80) . Vil starte et TCP-nettverk i den IP-en og port 80.
- esp8266_send (): Denne funksjonen brukes til å sende informasjon til TCP / UDP-nettverket. HTML-skriptet vil bli sendt med denne kommandoen. Deretter vises dette skriptet i IP-adressen der kommunikasjonen ble opprettet tidligere.
- esp8266_config_softAP (): Denne funksjonen brukes til å konfigurere softAP. For eksempel esp8266_config_softAP (“office”, ”12345678”); vil opprette et Wifi-signal med navnet office, og passordet 12345678 skal brukes for å få tilgang til det.
- esp8266_get_stationIP (): Denne funksjonen gir deg IP / MAC-adressen til klientene som er koblet til softAP.
Eksempelprogram:
Nå som vi har forstått funksjonene til hver kommando i biblioteket, la oss se på et lite eksempelprogram. I dette programmet vil vi sjekke om forbindelsen mellom ESP8266 og PIC er vellykket, og deretter opprette et WIFI-nettverk (SoftAP) med ønsket navn og passord. Hele programmet og simuleringen av det samme vil bli forklart for din forståelse.
Igjen, hvis du ikke har lest PIC-grensesnittet vårt med LCD- og PIC USART-opplæringen, vennligst les før du fortsetter, fordi bare da vil det være fornuftig for deg.
Siden vi nettopp har begynt å grensesnitt PIC med ESP8266, har jeg brukt en LCD for å sikre at ting fungerer som de skal.
gjør {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP ikke funnet"); } mens (! esp8266_isStarted ()); // vent til ESP sender tilbake "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP er tilkoblet"); __forsink_ms (1500); Lcd_Clear ();
Når vi sender "AT" til ESP8266-modulen, svarer den tilbake med "OK". Dette sikrer oss at ESP8266-modulen er koblet til. Funksjonen esp8266_isStarted () brukes til det samme. Vi sender signalet AT fra PIC og vi venter til ESP-modulen blir levende og sender oss en OK. Hvis vi får OK, viser vi at “ESP er tilkoblet” på LCD-skjermen.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP angitt som AP"); __forsink_ms (1500); Lcd_Clear ();
Ovennevnte kodelinjer brukes til å stille ESP-modulen til å fungere i “soft AP” -modus. Funksjonen esp8266_mode (2); sender AT-kommandoene "AT + CWMODE = 3" til modulen og venter på at modulen skal svare med "OK"
/ * Konfigurer AP-navnet og passordet * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP konfigurert"); __forsink_ms (1500); Lcd_Clear (); / * AP konfigurert * /
Dette segmentet av koden brukes til å konfigurere softAP. Her har vi kalt SSID som “CircuitDigest” og passordet som “619007123”. For å indikere at prosessen er fullført, vil vi vente på at modulen svarer med “OK” og deretter skrive ut AP konfigurert på LCD-skjermen.
Det er det nå vi har koblet ESP8266-modulen til PIC MCU og har konfigurert softAP med et navn og passord etter eget valg. Som vanlig kan vi simulere denne koden og se hvordan den fungerer.
Simuleringsutgang:
Vi bruker Proteus-programvaren til å simulere utdataene. Designfilen for det samme finner du i vedlegget.
Siden vi ikke har en ESP8266-modul i Proteus-biblioteket, har vi brukt seriell terminal og svarer tilbake som bruker på PIC-modulen. Når skjermen er fullført, vil simuleringen se ut som nedenfor
Utgangen av koden vår vises i den virtuelle terminalen. Fullstendig bearbeiding av simuleringen vil bli forklart i videoen nedenfor.
Utgangsbekreftelse:
Når programmet er bekreftet ved hjelp av simuleringen, kan du dumpe det i PIC-mikrokontrolleren din. Gjør tilkoblingene som vist i skjemaene ovenfor (Maskinvare-delen). Du bør kunne spore fremgangen din gjennom LCD-skjermen.
Når LCD-skjermen sier at AP er konfigurert, kan vi sjekke det ut ved hjelp av WIFI-innstillingene i telefon eller bærbar PC. Min bærbare datamaskin viser følgende signal i henhold til vårt program.
Det er det vi har lykkes med å ha koblet ESP8266-modulen med PIC Microcontroller. Dette er et veldig grunnleggende grensesnitt, og hvis du vil gjøre noen kompliserte prosjekter ved hjelp av ESP8266, kan det hende du må legge til dine egne biblioteker eller i det minste legge til dine egne funksjoner. Stol på meg det er veldig enkelt å gjøre det, jeg vil gi et kort innblikk for det samme.
Legge til funksjoner i ESP8266-biblioteket:
Hvis du legger til din egen funksjon, kan du sende en hvilken som helst “AT” -kommando til ESP8266-modulen. For å fortsette med dette må du lese instruksjonsdokumentasjonen til ESP8266-modulen. Du kan sende en hvilken som helst AT-kommando direkte i instruksjonsmanualen. Men husk alltid å legge til “/ r / n” på slutten av hver AT-kommando. For eksempel hvis du vil opprette flere forbindelser med ESP-modulen din. Åpne deretter instruksjonsdokumentasjonen og finn hvilken AT-kommando som vil gjøre denne jobben for deg. Her vil kommandoen “AT + CIPMUX = 1” tillate deg å opprette flere forbindelser med din ESP-modul.
Nå er alt du trenger å gjøre å sende denne "AP + CIPMUX = 1" til ESP8266-modulen din ved hjelp av den serielle porten. Den hardcore måten å gjøre dette på er å bare bruke kommandoen
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Dette fungerer, men er ikke den beste måten å gjøre det på. Du må lese tilbake hva ESP8266 reagerer på kommandoen din. I vårt tilfelle vil det svare med “OK”. Så du må lese innkommende data fra ESP8266-modulen og bekrefte at det er "OK". Du kan også gjøre denne funksjonen der "1" eller "0" kan sendes som argumenter.
Gå videre og prøv å lage dine egne funksjoner for biblioteket. Men hvis du trenger hjelp, vær så snill å bruke kommentarseksjonen, så hjelper jeg deg.