- Reikalingos medžiagos:
- PIC mikrovaldiklio programavimas:
- ESP8266 bibliotekos funkcijos:
- Pavyzdinė programa:
- Modeliavimo išvestis:
- Išvesties patikrinimas:
- Funkcijų pridėjimas prie ESP8266 bibliotekos:
Šiame straipsnyje aptarkime, kaip susieti WIFI modulį ESP8266 su PIC mikrovaldikliu. Iki šiol galbūt naudojote ESP8266 modulį kaip atskirą mikrovaldiklį arba naudojote jį su „Arduino“ biblioteka. Tačiau kalbėdami apie sunkiųjų įterptųjų sistemų projektus, turėtume žinoti, kaip tai naudoti ir su PIC mikrovaldikliais. Tai padės jums pritaikyti savo projektus projektavimo perspektyvoje ir tuo pačiu padaryti juos pigius.
ESP8266 moduliuose yra numatytoji programinė-aparatinė programinė įranga, todėl modulį galime užprogramuoti naudodami AT komandas. Šios komandos turi būti siunčiamos per nuoseklųjį ryšio kanalą. Šis kanalas nustatomas tarp PIC ir ESP8266 modulio, naudojant USART modulį PIC mikrovaldiklyje . Visas darbas bus stebimas ir pranešamas vartotojui naudojant 16x2 LCD ekraną. Taigi šioje pamokoje daroma prielaida, kad turite šiek tiek pagrindinių žinių apie USART modulį PIC, LCD sąsają su PIC ir AT komandų naudojimą ESP8266. Jei to nepadarysite, galite grįžti į susietas mokomąsias programas ir iš anksto jų išmokti.
Reikalingos medžiagos:
Norint užpildyti šią pamoką, jums reikės šios aparatūros
- PIC16F877A
- 20MHz kristalinis osciliatorius
- 7805
- LM317
- ESP8266
- 16 * 2 LCD ekranas
- „PicKit3“ programuotojas
- Rezistoriai (1K, 220ohm, 360ohm)
- Kondensatoriai (1uF, 0.1uF, 33pF)
- Džemperių laidai
- 12 V adapteris PIC ir ESP moduliams maitinti
Techninė įranga:
Visa projekto schema parodyta žemiau
Schema susideda iš dviejų įtampos reguliatorių grandinių, viena yra + 5 V reguliatorius, naudojamas PIC mikrovaldikliui maitinti, o kitas - 3,3 V reguliatorius, kuris maitina ESP8266 modulį. + 5 V reguliuojamas naudojant 7805 (linijinės įtampos reguliatoriaus IC). 3.3V įtampa reguliuojama naudojant LM317 (kintamos įtampos reguliatorius). ESP8266 modulis sunaudoja daug srovės (~ 800mA), taigi, jei projektuojate savo maitinimo šaltinį, įsitikinkite, kad jis gali tiekti tokią didelę srovę. Taip pat įsitikinkite, kad PIC ir ESP8266 modulio įžeminimo kaiščiai yra sujungti.
Taigi dabar mes žinome, kad PIC veikia + 5 V įtampa, o ESP8266 - 3,3 V įtampa. Norint užmegzti USART ryšį tarp šių dviejų modulių, reikia 5–3,3 V loginio keitiklio grandinės, kaip parodyta aukščiau esančiame paveikslėlyje. Ši grandinė yra ne kas kita, o potencialus daliklis, kuris tiesiog konvertuoja gaunamą + 5 V į 3,3 V. Tai neleis, kad 3,3 V toleruojamas ESP8266 RX kaištis gautų + 5 V.
Aš padariau PIC ir ESP modulius ant dviejų atskirų perf plokščių, kaip parodyta šiose pamokose. Tokiu būdu galiu juos universaliai naudoti panašesniems projektams
- LED aparatūra naudojant PIC
- Darbo su ESP8266 pradžia
Galite sekti tuo pačiu arba susikurti savo lentą pagal savo stilių arba tiesiog prijungti aukščiau pateiktą grandinę prie duonos lentos.
PIC mikrovaldiklio programavimas:
Norint užprogramuoti PIC mikrovaldiklį „ES komandas“ nuosekliai siųsti naudojant „USART“ į ESP8266 modulį, turime naudoti biblioteką. Ši biblioteka sutaupys daug rūpesčių, pvz., Naudojant ESP8266 instrukcijų modulius, kad patikrintumėte kiekvieną AT komandą ir rastumėte būdą, kaip jas perduoti į ESP modulį. Ši biblioteka yra nemokama programinė įranga, kurią iš pradžių sukūrė „Camil Staps“, o vėliau ją tobulino ir modifikavo „Circuit Digest“, kad ją būtų galima naudoti su mūsų PIC16F877A mikrovaldikliu. Galite atsisiųsti čia
Biblioteka vis dar tobulinama, tačiau galite naudoti daugumą svarbių AT komandų programinėje įrangoje ESP8266. Jei pastebite, kad trūksta bet kurios jums reikalingos komandos, praneškite man ją komentarų skyriuje ir pabandysiu ją jums pridėti. Šioje pamokoje paaiškinsite visas komandas (iki šiol), kurias gali naudoti per šią biblioteką. Toliau taip pat bus nurodyta pridėti savo funkcijas prie bibliotekos.
ESP8266 bibliotekos funkcijos:
- Initialize_ESP8266 (): ši funkcija inicijuos PIC USART modulį, kad jis galėtų bendrauti su ESP8266 moduliu. Jis nustato perdavimo greitį 115200 ir paruošia PIC Rx ir Tx kaiščius USART ryšiui.
- _esp8266_putch (): Ši funkcija naudojama vienam simboliui nuosekliai siųsti į ESP8266 modulį. Pvz., _Esp8266_putch ('a') simbolį nusiųs nuosekliai į ESP modulį.
- _esp8266_getch (): Ši funkcija naudojama norint gauti vieną simbolį iš ESP modulio. Pavyzdžiui, jei ESP spausdina „OK“ ir mes naudojame char a = _esp8266_getch (). Tada simbolis „o“ bus saugomas kintamajame a.
- ESP8266_send_string (): ši funkcija yra eilutės _esp8266_putch () versija. Jis gali siųsti vieną visą eilutę į ESP8266 modulį. Pavyzdžiui, ESP8266_send_string („AT / r / n“) išsiųs komandą „AT“ į ESP8266 modulį.
- esp8266_isStarted (): Jis naudojamas patikrinti, ar PIC gali bendrauti su ESP moduliu. Jis siunčia komandą „AT“ ir laukia „OK“, jei gauta, ji grąžina tiesą, o kita - klaidingą.
- esp8266_restart (): iš naujo nustatomas ESP8266 modulis ir grąžinama teisinga, jei atstatymas sėkmingas, o jei nepavyksta, - klaidinga
- esp8266_mode (): naudojamas nustatyti ESP8266 modulio darbo režimą. Kaip žinome, jis gali veikti trimis skirtingais režimais.
Stoties režimas |
|
„Soft AP“ režimas |
|
Tiek „Station“, tiek „AP“ režimas |
- esp8266_connect (): leidžia prisijungti prie „wifi“ signalo. Pavyzdžiui, esp8266_connect („home“, „12345678“) leis jūsų moduliui prisijungti prie „wifi“ signalo, pavadinto „home“, kurio slaptažodis yra 12345678.
- esp8266_disconnect (): ši funkcija atjungia jūsų modulį nuo bet kurio anksčiau prijungto „wifi“ ryšio
- esp8266_ip (): Gauna ir grąžina IP adresą. Naudokite šią funkciją, jei norite sužinoti ESP8266 modulio IP adresą.
- esp8266_start (): ši funkcija naudojama norint pradėti TCP arba UDP ryšį. Pvz., Esp8266_start ( „TCP“, „192.168.101.110“, 80) . Paleis TCP tinklą tame IP ir 80 prievade.
- esp8266_send (): ši funkcija naudojama informacijai siųsti į TCP / UDP tinklą. HTML scenarijus bus išsiųstas naudojant šią komandą. Tada šis scenarijus pasirodys IP adrese, kuriuo anksčiau buvo užmegztas ryšys.
- esp8266_config_softAP (): ši funkcija naudojama programinei programai konfigūruoti. Pavyzdžiui, esp8266_config_softAP („office“, „12345678“); sukurs „Wifi“ signalą pavadinimu „office“, o prie jo turėtų būti naudojamas slaptažodis 12345678.
- esp8266_get_stationIP (): ši funkcija grąžins klientų, prisijungusių prie jūsų programinės įrangos, IP / MAC adresą.
Pavyzdinė programa:
Dabar, kai supratome kiekvienos komandos funkcijas bibliotekoje, pažvelkime į mažą pavyzdinę programą. Šioje programoje mes patikrinsime, ar ryšys tarp ESP8266 ir PIC yra sėkmingas, tada sukursime WIFI tinklą („SoftAP“) su pageidaujamu vardu ir slaptažodžiu. Jūsų supratimui bus paaiškinta visa programa ir jos modeliavimas.
Vėlgi, jei dar neskaitėte mūsų PIC sąsajos su LCD ir PIC USART pamoka, prieš tęsdami perskaitykite, nes tik tada tai bus jums prasminga.
Kadangi mes dar tik pradedame sąsają su PIC su ESP8266, aš naudoju LCD, norėdamas įsitikinti, kad viskas veikia tinkamai.
padaryti {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP nerastas"); } while (! esp8266_isStarted ()); // palauk, kol ESP atsiųs „OK“ Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP prijungtas"); __delay_ms (1500); Lcd_Clear ();
Kai mes siunčiame „AT“ į ESP8266 modulį, jis atsako „OK“. Tai užtikrina, kad ESP8266 modulis yra sėkmingai prijungtas. Tam tikslui naudojama funkcija esp8266_isStarted (). Siunčiame signalą AT iš PIC ir laukiame, kol ESP modulis atgaivins, ir atsiųsime mums OK. Jei gauname OK, LCD ekrane rodome, kad „ESP yra prijungtas“.
esp8266_mode (2); „Lcd_Set_Cursor“ (1,1); Lcd_Print_String ("ESP nustatyta kaip AP"); __delay_ms (1500); Lcd_Clear ();
Pirmiau nurodytos kodo eilutės naudojamos norint nustatyti ESP modulį veikiant „minkštos AP“ režimu. Funkcija esp8266_mode (2); išsiunčia AT komandas „AT + CWMODE = 3“ į modulį ir laukia, kol modulis atsakys „OK“
/ * Konfigūruokite AP pavadinimą ir slaptažodį * / esp8266_config_softAP ("CircuitDigest", "619007123"); „Lcd_Set_Cursor“ (1,1); „Lcd_Print_String“ („AP sukonfigūruota“); __delay_ms (1500); Lcd_Clear (); / * Konfigūruota AP * /
Šis kodo segmentas naudojamas programinės įrangos konfigūravimui. Čia SSID pavadinome kaip „CircuitDigest“, o slaptažodį - „619007123“. Norėdami nurodyti, kad procesas baigtas, lauksime, kol modulis atsakys „Gerai“, tada atspausdinsime AP sukonfigūruotą LCD ekrane.
Štai, dabar mes susiejome ESP8266 modulį su PIC MCU ir sukonfigūravome programinę įrangą pasirinktu vardu ir slaptažodžiu. Kaip įprasta, galima imituoti šį kodą ir pamatyti, kaip jis veikia.
Modeliavimo išvestis:
Rezultatams imituoti naudojame „Proteus“ programinę įrangą. To paties dizaino failą galite rasti priede.
Kadangi „Proteus“ bibliotekoje neturime ESP8266 modulio, mes naudojame Serial terminalą ir atsakome kaip vartotojas į PIC modulį. Kai baigsite modeliavimą, jis atrodys žemiau
Mūsų kodo išvestis rodoma virtualiame terminale. Visas modeliavimo darbas bus paaiškintas toliau pateiktame vaizdo įraše.
Išvesties patikrinimas:
Kai programa bus patikrinta naudojant modeliavimą, išmeskite ją į savo PIC mikrovaldiklį. Prijunkite jungtis, kaip parodyta aukščiau pateiktose schemose (skyrius „Aparatūra“). Turėtumėte galėti stebėti savo pažangą per LCD ekraną.
Kai LCD ekrane sakoma, kad AP yra sukonfigūruotas, galime tai patikrinti naudodamiesi WIFI nustatymais telefone arba nešiojamajame kompiuteryje. Mano nešiojamas kompiuteris rodo šį signalą pagal mūsų programą.
Tai yra vaikinai, mes sėkmingai sujungėme ESP8266 modulį su PIC mikrovaldikliu. Tai yra labai paprasta sąsaja. Jei norite atlikti sudėtingus projektus naudodami ESP8266, gali tekti pridėti savo bibliotekas arba bent jau pridėti savo funkcijas. Patikėkite, tai padaryti yra labai lengva, aš trumpai įžvelgsiu tą patį.
Funkcijų pridėjimas prie ESP8266 bibliotekos:
Pridėję savo funkciją, galėsite nusiųsti bet kokią komandą „AT“ į ESP8266 modulį. Norėdami tai tęsti, turite perskaityti ESP8266 modulio instrukcijų rinkinio dokumentaciją. Galite tiesiogiai siųsti bet kurią AT komandą, kurią rasite tame instrukcijų rinkinio vadove. Tačiau visada nepamirškite kiekvienos AT komandos pabaigoje pridėti „/ r / n“. Pavyzdžiui, jei norite užmegzti kelis ryšius su savo ESP moduliu. Tada atidarykite instrukcijų rinkinio dokumentaciją ir raskite, kuri AT komanda atliks šį darbą už jus. Čia komanda „AT + CIPMUX = 1“ leis jums užmegzti kelis ryšius su savo ESP moduliu.
Dabar tereikia nusiųsti šį „AP + CIPMUX = 1“ į ESP8266 modulį, naudojant nuoseklųjį prievadą. Kietas būdas tai padaryti yra paprasčiausiai naudojant komandą
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Tai veiks, bet nėra geriausias būdas tai padaryti. Turite perskaityti, ką jūsų ESP8266 reaguoja į jūsų komandą. Mūsų atveju jis atsakys „Gerai“. Taigi jūs turite perskaityti gaunamus duomenis iš ESP8266 modulio ir patvirtinti, kad tai yra „gerai“. Taip pat galite padaryti šią funkciją, kur „1“ arba „0“ gali būti perduodami kaip argumentai.
Pirmyn pabandykite sukurti savo funkcijas bibliotekai. Bet jei jums reikia pagalbos, prašome laisvai naudotis komentarų skiltimi, ir aš jums padėsiu.