- Mga Materyal na Kinakailangan:
- Pagprogram ng PIC microcontroller:
- Mga pagpapaandar sa ESP8266 Library:
- Sample Program:
- Output ng simulation:
- Pag-verify ng Output:
- Pagdaragdag ng mga pag-andar sa ESP8266 Library:
Sa artikulong ito, talakayin natin kung paano i-interface ang WIFI module na ESP8266 sa isang PIC microcontroller. Sa ngayon maaaring ginagamit mo ang module na ESP8266 bilang isang standalone microcontroller o maaaring ginagamit mo ito sa Arduino library. Ngunit, pagdating sa mga hardcore na naka-embed na proyekto ng system dapat nating malaman kung paano ito gamitin sa mga PIC microcontroller din. Tutulungan ka nitong ipasadya ang iyong mga proyekto sa pananaw sa disenyo at sa parehong oras na ginagawang mura rin ito.
Ang mga module ng ESP8266 ay mayroong default na firmware na na-load dito, kaya maaari nating mai-program ang module gamit ang mga AT command. Ang mga utos na ito ay kailangang ipadala sa pamamagitan ng isang serial channel ng komunikasyon. Ang channel na ito ay itinatag sa pagitan ng PIC at ng module na ESP8266 sa pamamagitan ng paggamit ng USART module sa PIC microcontroller . Ang buong pagtatrabaho ay susubaybayan at maiuulat sa gumagamit sa pamamagitan ng paggamit ng isang 16x2 LCD display. Samakatuwid, ipinapalagay ng tutorial na ito na mayroon kang ilang pangunahing kaalaman tungkol sa module ng USART sa PIC, Pag-interface ng LCD na may PIC at paggamit ng mga AT command sa ESP8266. Kung hindi ka pagkatapos ay maaari kang bumalik sa mga naka-link na tutorial upang malaman ang mga ito muna.
Mga Materyal na Kinakailangan:
Kakailanganin mo ang sumusunod na hardware upang makumpleto ang tutorial na ito
- PIC16F877A
- 20MHz crystal oscillator
- 7805
- LM317
- ESP8266
- 16 * 2 LCD display
- Programmer ng PicKit3
- Mga Resistor (1K, 220ohm, 360ohm)
- Mga Capacitor (1uF, 0.1uF, 33pF)
- Jumper wires
- 12V Adapter upang mapagana ang module ng PIC at ESP
Hardware:
Ang kumpletong iskema ng proyekto ay ipinakita dito sa ibaba
Ang mga eskematiko ay binubuo ng dalawang mga circuit ng boltahe na regulator, ang isa ay isang regulator na + 5V na ginagamit upang paandarin ang microcontroller ng PIC at ang isa pa ay isang regulator na 3.3V na nagpapagana sa module na ESP8266. Ang + 5V ay kinokontrol sa pamamagitan ng paggamit ng isang 7805 (Linear Voltage Regulator IC). Ang 3.3V ay kinokontrol ng paggamit ng LM317 (Variable Voltage Regulator). Ang module ng ESP8266 ay kumokonsumo ng maraming kasalukuyang (~ 800mA) kaya't kung nagdidisenyo ka ng iyong sariling supply ng kuryente siguraduhing maaari itong mapagkukunan ng napakataas na kasalukuyang. Siguraduhin din na ang mga ground pin ng PIC at ang module na ESP8266 ay magkakonekta.
Kaya ngayon alam namin na ang PIC ay nagpapatakbo sa + 5V at ang ESP8266 ay nagpapatakbo sa 3.3V volts. Upang maitaguyod ang isang USART na komunikasyon sa pagitan ng dalawang modyul na ito kailangan namin ng isang 5V - 3.3V logic converter circuit tulad ng ipinakita sa nasa itaas na pigura. Ang circuit na ito ay walang anuman kundi isang potensyal na divider na simpleng nagko-convert ng papasok na + 5V sa 3.3V. Pipigilan nito ang 3.3V na mapagtiis na RX pin ng ESP8266 mula sa pagkuha ng + 5V.
Ginawa ko ang mga module ng PIC at ESP sa dalawang magkakahiwalay na mga perf board, tulad ng ipinakita sa mga tutorial na ito. Sa ganitong paraan magagamit ko ang mga ito sa pangkalahatan para sa higit pang mga katulad na proyekto
- LED hardware gamit ang PIC
- Pagsisimula sa ESP8266
Maaari mong sundin ang pareho, o bumuo ng iyong sariling board sa iyong istilo o simpleng ikonekta ang circuit sa itaas sa isang breadboard.
Pagprogram ng PIC microcontroller:
Upang ma- program ang PIC microcontroller upang maipadala ang "AT utos" na seryoso gamit ang USART sa module na ESP8266 kailangan naming gumamit ng isang silid-aklatan. Ang library na ito ay makatipid sa iyo ng maraming abala, tulad ng paggamit ng mga module ng pagtuturo ng ESP8266 upang suriin ang bawat utos ng AT at pagkatapos ay makahanap ng isang paraan upang maipadala ang mga ito sa module ng ESP. Ang library na ito ay libreng software na orihinal na binuo ng Camil Staps at kalaunan ay napabuti at binago ng Circuit Digest upang magamit ito sa aming PIC16F877A Microcontroller. Maaari mo itong i-download dito
Ang library ay nasa ilalim pa rin ng pag-unlad, ngunit maaari mong gamitin ang karamihan ng mga mahahalagang utos ng AT sa ESP8266 firmware. Kung may makita kang anumang utos na kailangan mo ay nawawala, pagkatapos ay ipaalam sa akin ito sa seksyon ng komento at susubukan kong idagdag ito para sa iyo. Ipapaliwanag sa iyo ng tutorial na ito ang lahat ng mga utos (sa ngayon) na maaaring magamit ng library na ito. Ang karagdagang ay gagabay sa iyo upang idagdag ang iyong sariling mga pag-andar sa library.
Mga pagpapaandar sa ESP8266 Library:
- Initialize_ESP8266 (): Ang pagpapaandar na ito ay magpapasimula sa module ng USART ng PIC upang makipag-usap sa module na ESP8266. Itinatakda nito ang baud rate sa 115200 at ihinahanda ang Rx at Tx pin ng PIC para sa komunikasyon ng USART.
- _esp8266_putch (): Ang pagpapaandar na ito ay ginagamit upang magpadala ng isang solong character nang serial sa module na ESP8266. Halimbawa, ang _esp8266_putch ('a') ay magpapadala ng character sa isang serial sa ESPmodule.
- _esp8266_getch (): Ginagamit ang pagpapaandar na ito upang makakuha ng isang solong character mula sa module ng ESP. Halimbawa kung ang ESP ay nagpi-print ng "OK" at gumagamit kami ng char a = _esp8266_getch (). Pagkatapos ang char 'o' ay itatago sa variable a.
- ESP8266_send_string (): Ang pagpapaandar na ito ay ang bersyon ng string ng _esp8266_putch (). Maaari itong magpadala ng isang kumpletong string sa module na ESP8266. Halimbawa, ang ESP8266_send_string ("AT / r / n") ay magpapadala ng utos na "AT" sa module na ESP8266.
- esp8266_isStarted (): Ginagamit ito upang suriin kung ang PIC ay maaaring makipag-usap sa module ng ESP. Ipinapadala nito ang utos na "AT" at naghihintay para sa "OK" kung natanggap ito ay nagbabalik ng totoo kung hindi man ay nagbabalik ito ng mali.
- esp8266_restart (): Nire-reset ang module na ESP8266 at nagbabalik ng totoo ay matagumpay na na-reset at nagbalik ng hindi totoo kung hindi matagumpay.
- esp8266_mode (): Ginamit upang itakda ang mode ng pagtatrabaho ng module na ESP8266. Tulad ng alam nating maaari itong gumana sa tatlong magkakaibang mga mode.
Station mode |
|
Soft AP mode |
|
Parehong Station at AP mode |
- esp8266_connect (): Pinapayagan kang kumonekta sa isang signal ng wifi. Halimbawa ng esp8266_connect ("home", "12345678") , papayagan ang iyong module na kumonekta sa wifi signal na pinangalanang bahay na ang password ay 12345678.
- esp8266_disconnect (): Ang function na ito ay magdidiskonekta sa iyo ng module mula sa anumang koneksyon sa wifi na dating nakakonekta
- esp8266_ip (): Nakukuha ang IP address at ibabalik ito. Gamitin ang pagpapaandar na ito kung nais mong malaman ang IP address ng module na ESP8266.
- esp8266_start (): Ginagamit ang pagpapaandar na ito upang simulan ang isang komunikasyon sa TCP o UDP. Halimbawa ng esp8266_start ( "TCP", "192.168.101.110", 80) . Sisimulan ang isang TCP network sa IP at port 80 na iyon.
- esp8266_send (): Ang pagpapaandar na ito ay ginagamit upang magpadala ng impormasyon sa network ng TCP / UDP. Ipapadala ang script ng HTML gamit ang utos na ito. Pagkatapos ang script na ito ay lilitaw sa IP address kung saan ang komunikasyon ay naitatag bago.
- esp8266_config_softAP (): Ginagamit ang pagpapaandar na ito upang mai-configure ang softAP. Halimbawa ng esp8266_config_softAP ("opisina", "12345678"); lilikha ng isang signal ng Wifi na pinangalanang tanggapan at ang password na 12345678 ay dapat gamitin upang ma-access ito.
- esp8266_get_stationIP (): Ang pagpapaandar na ito ay ibabalik sa iyo ang IP / MAC address ng mga kliyente na konektado sa iyong softAP.
Sample Program:
Ngayon na naintindihan natin ang mga pagpapaandar ng bawat isa at bawat utos sa silid-aralan tingnan natin ang isang maliit na sample na programa. Sa programang ito susuriin natin kung ang koneksyon sa pagitan ng ESP8266 at PIC ay matagumpay at pagkatapos ay lumikha ng isang WIFI network (SoftAP) na may ginustong pangalan at password. Ang kumpletong programa at ang simulation ng pareho ay ipapaliwanag para sa iyong pag-unawa.
Muli kung hindi mo nabasa ang aming PIC na nakikipag-ugnay sa tutorial ng LCD at PIC USART mangyaring basahin ang, bago magpatuloy dahil doon lamang ito magkakaroon ng katuturan sa iyo.
Dahil nagsisimula pa lamang kaming mag-interface ng PIC sa ESP8266, gumamit ako ng isang LCD upang matiyak na gumagana nang maayos ang mga bagay.
gawin ang {Lcd_Set_Cursor (1,1); Lcd_Print_String ("hindi nahanap ang ESP"); } habang (! esp8266_isStarted ()); // maghintay hanggang maibalik ng ESP ang "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("Nakakonekta ang ESP"); __delay_ms (1500); Lcd_Clear ();
Kapag ipinadala namin ang "AT" sa module na ESP8266 tumugon ito pabalik sa isang "OK". Tinitiyak nito sa amin na ang module na ESP8266 ay matagumpay na nakakonekta. Ang pagpapaandar na esp8266_isStarted () ay ginagamit para sa pareho. Nagpadala kami ng signal AT mula sa PIC at naghihintay kami hanggang sa module ng ESP upang mabuhay at padalhan kami ng isang OK. Kung nakakuha kami ng isang OK ipinapakita namin na ang "ESP ay konektado" sa LCD.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("itinakda ang ESP bilang AP"); __delay_ms (1500); Lcd_Clear ();
Ang mga linya sa itaas ng code ay ginagamit upang itakda ang module ng ESP upang gumana sa "malambot na AP" mode. Ang pagpapaandar esp8266_mode (2); ipinapadala ang AT utos na "AT + CWMODE = 3" sa modyul at hinihintay ang modyul na tumugon sa "OK"
/ * I-configure ang AP na pangalan at Password * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP configure"); __delay_ms (1500); Lcd_Clear (); / * Na-configure ang AP * /
Ginagamit ang segment na ito ng code upang mai-configure ang softAP. Pinangalanan namin dito ang SSID bilang "CircuitDigest" at ang password bilang "619007123". Upang ipahiwatig na ang proseso ay kumpleto ay maghihintay kami para sa module na tumugon sa "OK" at pagkatapos ay i-print ang AP na naka-configure sa LCD screen.
Iyon lang ngayon ay na-interfaced namin ang module na ESP8266 sa PIC MCU at na-configure ang softAP na may isang pangalan at password na aming napili. Tulad ng dati hinahayaan gayahin ang code na ito at makita kung paano ito gumagana.
Output ng simulation:
Gumagamit kami ng Proteus software upang gayahin ang output. Ang disenyo ng file para sa pareho ay matatagpuan sa kalakip.
Dahil wala kaming module na ESP8266 sa Proteus library ginamit namin ang Serial terminal at tumugon pabalik bilang isang gumagamit sa module ng PIC. Ang simulation sa sandaling nakumpleto ang screen ay magiging hitsura sa ibaba
Ang output ng aming code ay ipinapakita sa Virtual terminal. Ang kumpletong pagtatrabaho ng simulation ay ipapaliwanag sa video sa ibaba.
Pag-verify ng Output:
Kapag na-verify ang programa gamit ang simulation, itapon ito sa iyong PIC microcontroller. Gawin ang mga koneksyon tulad ng ipinapakita sa mga eskematiko sa itaas (seksyon ng Hardware). Dapat mong subaybayan ang iyong pag-unlad sa pamamagitan ng LCD display.
Kapag sinabi ng LCD na naka-configure ang AP maaari nating suriin iyon gamit ang mga setting ng WIFI sa Telepono o Laptop. Ipinapakita ng aking laptop ang sumusunod na signal alinsunod sa aming programa.
Iyon lang ang mga tao matagumpay nating na-interfaced ang module na ESP8266 sa PIC Microcontroller. Ito ay isang napaka-pangunahing interface at kung nais mong gumawa ng anumang mga kumplikadong proyekto gamit ang ESP8266 maaari kang magdagdag ng iyong sariling mga silid-aklatan o kahit na magdagdag ng iyong sariling mga pagpapaandar. Tiwala sa akin napakadaling gawin ito, magbibigay ako ng isang maikling pananaw para sa pareho.
Pagdaragdag ng mga pag-andar sa ESP8266 Library:
Ang pagdaragdag ng iyong sariling pag-andar ay makakatulong sa iyo na magpadala ng anumang "AT" na utos sa module na ESP8266. Upang magpatuloy kailangan mong basahin ang dokumentasyon ng hanay ng tagubilin ng module na ESP8266. Maaari kang direktang magpadala ng anumang utos ng AT na makikita mo sa manu-manong itinakdang tagubilin. Ngunit laging tandaan na idagdag ang "/ r / n" sa pagtatapos ng bawat utos ng AT. Halimbawa kung nais mong magtaguyod ng maraming koneksyon sa iyong module ng ESP. Pagkatapos buksan ang dokumentasyon ng hanay ng pagtuturo at hanapin ang aming aling utos ng AT ang gagawa ng trabahong ito para sa iyo. Dito, ang utos na "AT + CIPMUX = 1" ay magpapahintulot sa iyo na magtaguyod ng maraming koneksyon sa iyong module ng ESP.
Ngayon ang kailangan mo lang gawin ay ipadala ang "AP + CIPMUX = 1" na ito sa iyong module na ESP8266 gamit ang serial port. Ang hardcore na paraan ng paggawa nito ay sa pamamagitan ng simpleng paggamit ng utos
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Gagana ito ngunit hindi ito ang pinakamahusay na paraan ng paggawa nito. Kailangan mong basahin muli kung ano ang tugon ng iyong ESP8266 sa iyong utos. Sa aming kaso ito ay tutugon sa "OK". Kaya kailangan mong basahin ang papasok na data mula sa module na ESP8266 at kumpirmahing ito ay isang "OK". Gayundin maaari mong gawin ang pagpapaandar na ito kung saan ang "1" o "0" ay maaaring maipasa bilang mga argumento.
Sige at subukang gumawa ng iyong sariling mga pagpapaandar para sa library. Ngunit kung kailangan mo ng tulong mangyaring malaya upang magamit ang seksyon ng komento at tutulungan kita.