- Tarvittavat materiaalit:
- PIC-mikrokontrollerin ohjelmointi:
- ESP8266-kirjaston toiminnot:
- Näyteohjelma:
- Simulointilähtö:
- Lähtövahvistus:
- Funktioiden lisääminen ESP8266-kirjastoon:
Tässä artikkelissa keskustellaan siitä, kuinka WIFI-moduuli ESP8266 liitetään PIC-mikrokontrolleriin. Toistaiseksi olet saattanut käyttää ESP8266-moduulia erillisenä mikrokontrollerina tai olet saattanut käyttää sitä Arduino-kirjaston kanssa. Mutta kun on kyse vakavista sulautetuista järjestelmistä, meidän tulisi tietää, miten sitä käytetään myös PIC-mikrokontrollerien kanssa. Tämä auttaa sinua mukauttamaan projektiisi suunnittelun näkökulmasta ja samalla tekemään siitä halpaa.
ESP8266-moduulien mukana on ladattu oletusohjelmisto, joten voimme ohjelmoida moduulin AT-komentojen avulla. Nämä komennot on lähetettävä sarjaliikennekanavan kautta. Tämä kanava muodostetaan PIC: n ja ESP8266-moduulin välille käyttämällä PIC-mikrokontrollerin USART-moduulia . Koko työskentelyä seurataan ja raportoidaan käyttäjälle 16x2 LCD -näytöllä. Siksi tässä opetusohjelmassa oletetaan, että sinulla on perustietoja PIC: n USART-moduulista, LCD: n liittämisestä PIC: ään ja AT-komentojen käytöstä ESP8266: ssa. Jos et, voit palata linkitettyihin opetusohjelmiin oppiaksesi ne etukäteen.
Tarvittavat materiaalit:
Tarvitset seuraavan laitteiston tämän opetusohjelman suorittamiseen
- PIC16F877A
- 20MHz kideoskillaattori
- 7805
- LM317
- ESP8266
- 16 * 2 LCD-näyttö
- PicKit3-ohjelmoija
- Vastukset (1K, 220ohm, 360ohm)
- Kondensaattorit (1uF, 0.1uF, 33pF)
- Hyppääjän johdot
- 12 V: n sovitin PIC- ja ESP-moduulien virtalähteeseen
Laitteisto:
Projektin täydellinen kaavio on esitetty alla
Kaaviot koostuvat kahdesta jännitteen säätöpiiristä, toinen on + 5 V: n säädin, jota käytetään PIC-mikrokontrollerin virtaan, ja toinen on 3,3 V: n säädin, joka käyttää ESP8266-moduulia. + 5 V: n säätö tapahtuu 7805: llä (lineaarisen jännitteen säätimen IC). 3,3 V: n säätö tapahtuu LM317: llä (vaihteleva jännitesäädin). ESP8266-moduuli kuluttaa paljon virtaa (~ 800mA), joten jos suunnittelet omaa virtalähdettä, varmista, että se voi tuottaa niin suuren virran. Varmista myös, että PIC: n ja ESP8266-moduulin maadoitustapit on liitetty toisiinsa.
Joten nyt tiedämme, että PIC toimii + 5 V: lla ja ESP8266 toimii 3,3 V voltilla. USART-yhteyden muodostamiseksi näiden kahden moduulin välille tarvitsemme 5 V - 3,3 V logiikkamuunninpiirin, kuten yllä olevassa kuvassa on esitetty. Tämä piiri ei ole muuta kuin potentiaalijakaja, joka yksinkertaisesti muuntaa saapuvan + 5 V: n 3,3 V: ksi. Tämä estää ESP8266: n 3,3 V: n siedettävän RX-nastan saamasta + 5 V.
Olen tehnyt PIC- ja ESP-moduulit kahdelle erilliselle levylle, kuten näissä opetusohjelmissa on esitetty. Näin voin käyttää niitä yleisesti vastaavampiin projekteihin
- LED-laitteisto PIC: n avulla
- ESP8266: n käytön aloittaminen
Voit seurata samaa tai rakentaa oman levyn tyylilläsi tai yksinkertaisesti liittää yllä oleva piiri piirilevyyn.
PIC-mikrokontrollerin ohjelmointi:
Jotta PIC-mikrokontrolleri voidaan ohjelmoida lähettämään ”AT-komennot” sarjaan USART: n avulla ESP8266-moduuliin, meidän on käytettävä kirjastoa. Tämä kirjasto säästää paljon vaivaa, kuten ESP8266-käskymoduulien avulla tarkistaa jokaisen AT-komennon ja löytää tapa lähettää se sitten ESP-moduuliin. Tämä kirjasto on ilmainen ohjelmisto, jonka alun perin on kehittänyt Camil Staps, ja myöhemmin sitä on parannettu ja muokattu Circuit Digestillä, jotta sitä voidaan käyttää PIC16F877A-mikrokontrollerimme kanssa. Voit ladata sen täältä
Kirjastoa kehitetään edelleen, mutta voit käyttää suurinta osaa ESP8266-laiteohjelmiston tärkeistä AT-komennoista. Jos huomaat, että jokin tarvitsemastasi komennosta puuttuu, ilmoita siitä minulle kommenttiosassa ja yritän lisätä sen sinulle. Tässä opetusohjelmassa selitetään kaikki komennot (toistaiseksi), joita tämän kirjaston kautta voidaan käyttää. Lisäksi opastaa myös lisäämään omia toimintoja kirjastoon.
ESP8266-kirjaston toiminnot:
- Initialize_ESP8266 (): Tämä toiminto alustaa PIC: n USART-moduulin kommunikoimaan ESP8266-moduulin kanssa. Se asettaa siirtonopeudeksi 115200 ja valmistelee PIC: n Rx- ja Tx-nastan USART-tiedonsiirtoa varten.
- _esp8266_putch (): Tätä toimintoa käytetään lähettämään yksi merkki sarjaan ESP8266-moduuliin. Esimerkiksi _esp8266_putch ('a') lähettää merkin sarjaan ESP-moduuliin.
- _esp8266_getch (): Tätä toimintoa käytetään yhden merkin hakemiseen ESP-moduulista. Esimerkiksi jos ESP tulostaa “OK” ja käytämme char a = _esp8266_getch (). Tällöin merkki o tallennetaan muuttujaan a.
- ESP8266_send_string (): Tämä funktio on _esp8266_putch () -merkkijonoversio. Se voi lähettää yhden kokonaisen merkkijonon ESP8266-moduuliin. Esimerkiksi ESP8266_send_string (“AT / r / n”) lähettää komennon “AT” ESP8266-moduulille.
- esp8266_isStarted (): Sitä käytetään tarkistamaan, pystyykö PIC kommunikoimaan ESP-moduulin kanssa. Se lähettää komennon "AT" ja odottaa "OK", jos se saadaan totta, muuten se palauttaa epätosi.
- esp8266_restart (): Nollaa ESP8266-moduulin ja palauttaa true palauttaa onnistuneen ja palauttaa false, jos se ei onnistu.
- esp8266_mode (): Käytetään ESP8266-moduulin toimintatilan asettamiseen. Kuten tiedämme, se voi toimia kolmessa eri tilassa.
Asematila |
|
Pehmeä AP-tila |
|
Sekä Station- että AP-tila |
- esp8266_connect (): Voit muodostaa yhteyden wifi-signaaliin. Esimerkiksi esp8266_connect (“koti”, ”12345678”) antaa moduulin muodostaa yhteyden koti-nimiseen wifi-signaaliin, jonka salasana on 12345678.
- esp8266_disconnect (): Tämä toiminto katkaisee moduulin kaikista aiemmin yhdistetyistä wifi-yhteyksistä
- esp8266_ip (): Hakee IP-osoitteen ja palauttaa sen. Käytä tätä toimintoa, jos haluat tietää ESP8266-moduulin IP-osoitteen.
- esp8266_start (): Tätä toimintoa käytetään TCP- tai UDP-viestinnän aloittamiseen. Esimerkiksi esp8266_start ( "TCP", "192.168.101.110", 80) . Käynnistää TCP-verkon kyseisessä IP: ssä ja portissa 80.
- esp8266_send (): Tätä toimintoa käytetään tietojen lähettämiseen TCP / UDP-verkkoon. HTML-komentosarja lähetetään tällä komennolla. Sitten tämä komentosarja näkyy siinä IP-osoitteessa, johon viestintä perustettiin aiemmin.
- esp8266_config_softAP (): Tätä toimintoa käytetään ohjelmoimaan softAP. Esimerkiksi esp8266_config_softAP (“toimisto”, ”12345678”); luo Wifi-signaalin nimeltä toimisto ja sen käyttämiseen tulisi käyttää salasanaa 12345678.
- esp8266_get_stationIP (): Tämä toiminto palauttaa sinulle softAP-tietokoneeseesi yhteydessä olevien asiakkaiden IP / MAC-osoitteen.
Näyteohjelma:
Nyt kun olemme ymmärtäneet jokaisen kirjaston komennon toiminnot, tutkitaan pieni esimerkkiohjelma. Tässä ohjelmassa tarkistamme, onko yhteys ESP8266: n ja PIC: n välillä onnistunut, ja luomme sitten WIFI-verkon (SoftAP), jolla on ensisijainen nimi ja salasana. Koko ohjelma ja sen simulointi selitetään ymmärryksesi vuoksi.
Jälleen, jos et ole lukenut PIC-liitäntää LCD- ja PIC USART -oppaaseen, lue tämä ennen kuin jatkat, koska vasta silloin se on järkevää sinulle.
Koska olemme vasta aloittamassa PIC: n liittämistä ESP8266: een, olen käyttänyt LCD-näyttöä varmistaakseni, että asiat toimivat oikein.
tee {Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP: tä ei löydy"); } while (! esp8266_isStarted ()); // odota, kunnes ESP lähettää takaisin "OK" Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP on kytketty"); _ viive_ms (1500); Lcd_Clear ();
Kun lähetämme “AT” ESP8266-moduuliin, se vastaa takaisin “OK”. Tämä varmistaa meille, että ESP8266-moduuli on kytketty onnistuneesti. Funktiota esp8266_isStarted () käytetään samaan. Lähetämme signaalin AT PIC: ltä ja odotamme, kunnes ESP-moduuli elää ja lähettää meille OK. Jos saamme OK, näytämme, että “ESP on kytketty” nestekidenäytössä.
esp8266_mode (2); Lcd_Set_Cursor (1,1); Lcd_Print_String ("ESP asetettu AP: ksi"); _ viive_ms (1500); Lcd_Clear ();
Yllä olevia koodirivejä käytetään asettamaan ESP-moduuli toimimaan “pehmeän AP” -tilassa. Funktio esp8266_mode (2); lähettää AT-komennot "AT + CWMODE = 3" moduuliin ja odottaa, että moduuli vastaa "OK"
/ * Määritä tukiaseman nimi ja salasana * / esp8266_config_softAP ("CircuitDigest", "619007123"); Lcd_Set_Cursor (1,1); Lcd_Print_String ("AP määritetty"); _ viive_ms (1500); Lcd_Clear (); / * AP määritetty * /
Tätä koodisegmenttiä käytetään ohjelmoimaan softAP. Tässä olemme nimenneet SSID: n nimellä "CircuitDigest" ja salasanaksi "619007123". Osoittaaksemme prosessin päättyneen, odotamme moduulin vastaavan "OK" -näppäimellä ja tulostamme sitten konfiguroidun AP: n LCD-näytölle.
Eli nyt olemme liittäneet ESP8266-moduulin PIC MCU: n kanssa ja konfiguroineet softAP: n valitsemallamme nimellä ja salasanalla. Kuten tavallista, voit simuloida tätä koodia ja nähdä, miten se toimii.
Simulointilähtö:
Käytämme Proteus-ohjelmistoa tuotoksen simulointiin. Saman suunnittelutiedosto löytyy liitteestä.
Koska meillä ei ole ESP8266-moduulia Proteus-kirjastossa, olemme käyttäneet Serial-päätelaitetta ja vastanneet takaisin käyttäjänä PIC-moduuliin. Kun simulaatio on valmis, se näyttää alla olevalta
Koodimme lähtö näkyy virtuaalipäätteessä. Simulaation täydellinen toiminta selitetään alla olevassa videossa.
Lähtövahvistus:
Kun ohjelma on vahvistettu simulaatiolla, pudota se PIC-mikrokontrolleriin. Tee liitännät yllä olevien kaavioiden mukaisesti (Laitteisto-osa). Sinun pitäisi pystyä seuraamaan edistymistäsi LCD-näytön kautta.
Kun nestekidenäytössä sanotaan, että tukiasema on määritetty, voimme tarkistaa sen käyttämällä puhelimen tai kannettavan tietokoneen WIFI-asetuksia. Kannettava tietokone näyttää seuraavan signaalin ohjelmamme mukaan.
Eli kaverit olemme onnistuneesti liittäneet ESP8266-moduulin PIC-mikrokontrolleriin. Tämä on hyvin yksinkertainen käyttöliittymä, ja jos haluat tehdä monimutkaisia projekteja ESP8266: n avulla, sinun on ehkä lisättävä omat kirjastosi tai ainakin lisättävä omat toiminnot. Luota minuun, se on erittäin helppo tehdä, annan lyhyen käsityksen samasta.
Funktioiden lisääminen ESP8266-kirjastoon:
Oman toiminnon lisääminen auttaa sinua lähettämään minkä tahansa “AT” -komennon ESP8266-moduuliin. Jatkaaksesi tätä, sinun on luettava ESP8266-moduulin ohjeet. Voit lähettää minkä tahansa AT-komennon, jonka löydät kyseisestä käyttöohjekirjasta. Muista kuitenkin aina lisätä ”/ r / n” jokaisen AT-komennon loppuun. Esimerkiksi jos haluat luoda useita yhteyksiä ESP-moduuliin. Avaa sitten ohjejoukon dokumentaatio ja etsi mikä AT-komento tekee tämän työn puolestasi. Tässä komento “AT + CIPMUX = 1” antaa sinun luoda useita yhteyksiä ESP-moduuliin.
Nyt sinun tarvitsee vain lähettää tämä “AP + CIPMUX = 1” ESP8266-moduuliin sarjaporttia käyttämällä. Vakava tapa tehdä tämä on yksinkertaisesti käyttämällä komentoa
_esp8266_print ("AT + CIPMUX = 1 \ r \ n" ")
Tämä toimii, mutta ei ole paras tapa tehdä se. Sinun on luettava takaisin, mitä ESP8266 vastaa komentoosi. Meidän tapauksessamme se vastaa "OK". Joten sinun on luettava saapuvat tiedot ESP8266-moduulista ja vahvistettava, että se on “OK”. Voit myös tehdä tämän toiminnon siten, että "1" tai "0" voidaan välittää argumentteina.
Yritä tehdä omia toimintoja kirjastolle. Mutta jos tarvitset apua, voit vapaasti käyttää kommenttiosaa ja autan sinua.