- Tarvittavat komponentit
- ESP8266 Wi-Fi-moduuli
- Yhdistetään LPC2148 ja ESP8266 sarjaliikennettä varten
- Piirikaavio ja liitännät
- Vaiheet, jotka liittyvät UART0: n ohjelmointiin LPC2148: ssa ESP8266: n liittämistä varten
- LEDin hallinta ESP8266 IoT -verkkopalvelimella LPC2148: lla
ESP8266 Wi-Fi-lähetin-vastaanotin tarjoaa tavan liittää mikro-ohjain verkkoon. Sitä käytetään laajasti IoT-projekteissa, koska se on halpa, pieni ja helppo käyttää. Olemme aiemmin käyttäneet sitä verkkopalvelimen luomiseen käyttämällä Vadelma-palvelinta ja Arduino-palvelinta.
Tässä opetusohjelmassa liitämme ESP8266 Wi-Fi -moduulin ARM7-LPC2148-mikrokontrolleriin ja luomme verkkopalvelimen ohjaamaan LPC2148: een liitettyä LEDiä. Työnkulku sujuu näin:
- Määritä ESP8266 AP-tilassa lähettämällä AT-komennot LPC2148: sta ESP8266: een
- Yhdistä kannettava tietokone tai tietokoneen Wi-Fi ESP8266-tukiasemaan
- Luo HTML-verkkosivusto tietokoneella, jossa on ESP8266-palvelimen tukiaseman IP-osoite
- Luo LPC2148: lle ohjelma ohjaamaan LEDiä ESP8266: lta saadun arvon mukaan
Jos olet täysin uusi ESP8266-Wi-Fi-moduulissasi, tutustu alla oleviin linkkeihin tutustuaksesi ESP8266-Wi-Fi-moduuliin.
- ESP8266-Wi-Fi-lähetin-vastaanottimen (osa 1) käytön aloittaminen
- ESP8266: n käytön aloittaminen (osa 2): AT-komentojen käyttäminen
- ESP8266: n käytön aloittaminen (osa 3): ESP8266: n ohjelmointi Arduino IDE: llä ja sen muistin tyhjentäminen
Tarvittavat komponentit
Laitteisto:
- ARM7-LPC2148
- ESP8266 Wi-Fi -moduuli
- FTDI (USB - UART TTL)
- LED
- 3,3 V: n jännitesäätimen IC
- Leipälauta
Ohjelmisto:
- KEIL uVision
- Flash Magic -työkalu
- Kitti
ESP8266 Wi-Fi-moduuli
ESP8266 on edullinen laajasti käytetty Wi-Fi-moduuli upotettuihin projekteihin, joka vaatii alhaisen 3,3 V: n virran. Se käyttää vain kahta johtoa TX ja RX sarjaliikenteeseen ja tiedonsiirtoon ESP8266: n ja minkä tahansa UART-porttia sisältävän mikrokontrollerin välillä.
ESP8266-Wi-Fi-moduulin nastakaavio
- GND, maa (0 V)
- TX, Lähetä databitti X
- GPIO 2, yleiskäyttöinen tulo / lähtö nro 2
- CH_PD, sirun virrankatkaisu
- GPIO 0, yleiskäyttöinen tulo / lähtö nro 0
- RST, nollaus
- RX, Vastaanota databittiä X
- VCC, jännite (+3,3 V)
ESP8266-piirilevyn asentaminen
ESP8266 vaatii jatkuvaa 3,3 V: n syöttöä, eikä se ole leipälautaystävällinen. Joten edellisessä ESP8266: n opetusohjelmassa teimme piirilevyn ESP8266: lle, jossa on 3,3 V: n jännitesäädin, RESET-painike ja hyppääjän asetukset kytkentätiloja varten (AT-komento tai salamatila). Se voidaan myös asettaa leipälaudalle käyttämättä perf-kartonkia.
Täällä me juotimme kaikki osat leipälaudalle, jotta saisimme oman ESP8266-Wi-Fi-korttimme
Opi ESP8266: n liittäminen erilaisten mikrokontrollerien kanssa seuraavien linkkien avulla:
- ESP8266: n käytön aloittaminen (osa 3): ESP8266: n ohjelmointi Arduino IDE: llä ja sen muistin tyhjentäminen
- ESP8266: n yhdistäminen STM32F103C8: een: Verkkopalvelimen luominen
- Sähköpostin lähettäminen MSP430 Launchpadin ja ESP8266: n avulla
- ESP8266: n ja PIC16F877A-mikrokontrollerin liitäntä
- IOT-pohjainen kaatopaikkaseuranta Arduinon ja ESP8266: n avulla
Kaikki ESP8266-pohjaiset projektit löytyvät täältä.
Yhdistetään LPC2148 ja ESP8266 sarjaliikennettä varten
Jotta ESP8266 voidaan liittää LPC2148: een, meidän on muodostettava UART-sarjaliikenne näiden kahden laitteen välille lähettämään AT-komentoja LPC2148: sta ESP8266: een ESP8266: n Wi-Fi-moduulin määrittämiseksi. Jos haluat tietää enemmän ESP8266 AT -komennoista, seuraa linkkiä.
Joten voidaksemme käyttää UART-viestintää LPC2148: ssa, meidän on alustettava UART-portti LPC2148: ssa. LPC2148: ssa on kaksi sisäänrakennettua UART-porttia (UART0 ja UART1).
UART-nastat LPC2148: ssa
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
Alustetaan UART0 LPC2148: ssa
Koska tiedämme, että LPC2148: n nastat ovat yleiskäyttöisiä nastoja, meidän on käytettävä PINSEL0-rekisteriä UART0: n käyttämiseen. Ennen UART0: n alustamista kerrotaan näistä LPART2148: ssa käytetyistä UART-rekistereistä UART-ominaisuuden käyttämiseksi.
UART-rekisterit LPC2148: ssa
Alla olevassa taulukossa on joitain tärkeitä ohjelmoinnissa käytettyjä rekistereitä. Tulevissa opetusohjelmissamme näemme lyhyesti muut LPART2148: n UART-rekisterit.
x-0 UART0: lle ja x-1 UART1: lle:
REKISTERÖIDY |
REKISTERÖIDY NIMI |
KÄYTTÄÄ |
UxRBR |
Vastaanota puskurirekisteri |
Sisältää äskettäin vastaanotetun arvon |
UxTHR |
Lähetystietorekisteri |
Sisältää siirrettäviä tietoja |
UxLCR |
Linjaohjausrekisteri |
Sisältää UART-kehysmuodon (databittien määrä, pysäytysbitti) |
UxDLL |
Jakajan salpa LSB |
LSB UART-nopeuden generaattorin arvosta |
UxDLM |
Jakajan salpa MSB |
MSB UART-nopeuden generaattorin arvosta |
UXIER |
Keskeytä Ota rekisteröinti käyttöön |
Sitä käytetään UART0- tai UART1-keskeytyslähteiden käyttöönottoon |
UxIIR |
Keskeytä tunnistusrekisteri |
Se sisältää tilakoodin, jolla on prioriteetti ja odottavien keskeytysten lähde |
Piirikaavio ja liitännät
Yhteydet LPC2148, ESP8266 ja FTDI ovat alla
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
ESP8266 saa virran 3,3 V: n jännitesäätimestä ja FTDI & LPC2148: n virran USB: stä.
Miksi FTDI on täällä?Tässä opetusohjelmassa olemme liittäneet FTDI: n RX-nastan (USB - UART TTL) ESP8266 TX -nastaan, joka on edelleen kytketty LPC2148 RX-nastaan, jotta voimme nähdä ESP8266-moduulin vastauksen millä tahansa pääteohjelmistolla, kuten kitillä, Arduino IDE: llä. Mutta tälle asetetaan siirtonopeus ESP8266 Wi-Fi -moduulin siirtonopeuden mukaan. (Siirtonopeuteni on 9600).
Vaiheet, jotka liittyvät UART0: n ohjelmointiin LPC2148: ssa ESP8266: n liittämistä varten
Alla on ohjelmointivaiheet ESP8266: n liittämiseksi LPC2148: een, mikä tekee siitä IoT-yhteensopivan.
Vaihe 1: - Ensin on alustettava UART0 TX & RX -nastat PINSEL0-rekisterissä.
(P0.0 TX: nä ja P0.1 RX: nä) PINSEL0 = PINSEL0 - 0x00000005;
Vaihe 2: - Seuraavaksi U0LCR: ssä (Line Control Register), aseta DLAB (Divisor Latch Access Bit) -asetukseksi 1, koska se mahdollistaa niiden, ja aseta sitten lopetusbittien lukumääräksi 1 ja datakehyksen pituudeksi 8-bittinen.
U0LCR = 0x83;
Vaihe 3: - Nyt tärkeä vaihe on asettaa U0DLL- ja U0DLM-arvot PCLK-arvon ja halutun siirtonopeuden mukaan. Normaalisti ESP8266: lle käytämme siirtonopeutta 9600. Katsotaanpa, kuinka asetetaan 9600 siirtonopeus UART0: lle.
Kaava tiedonsiirtonopeuden laskemiseen:
Missä, PLCK: Perifeerinen kellotaajuus (MHz)
U0DLM, U0DLL: Siirtonopeuden generaattorin jakajarekisterit
MULVAL, DIVADDVAL: Nämä rekisterit ovat murtugeneraattorin arvoja
Siirtonopeudelle 9600 PCLK = 15MHz
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97,65
Joten U0DLM = 0 ja saamme U0DLL = 97 (murto-osaa ei sallita)
Joten käytämme seuraavaa koodia:
U0DLM = 0x00; U0DLL = 0x61; (Heksadesimaaliarvo 97)
Vaihe 4: - Lopuksi, DLA (Divisor Latch Access) on poistettava käytöstä asetettuna arvoon 0 LCR: ssä.
Joten meillä on
U0LCR & = 0x0F;
Vaihe 5: - Merkin lähettämistä varten lataa lähetettävä tavu muodossa U0THR ja odota, kunnes tavu lähetetään, mikä osoittaa, että KOLME tulee korkea.
void UART0_TxChar (char ch) { U0THR = ch; kun taas ((U0LSR & 0x40) == 0); }
Vaihe 6: - Merkkijonon lähettämiseen käytetään alla olevaa toimintoa. Lähettämällä merkkijonotietoja yksitellen käytimme merkkitoimintoa yllä olevasta vaiheesta.
void UART0_SendString (char * str) { uint8_t i = 0; while (str! = '\ 0') { UART0_TxChar (str); i ++; } }
Vaihe 7: - Merkkijonon vastaanottamiseksi keskeytetään palvelurutiinitoimintoa, koska ESP8266: n Wi-Fi-moduuli lähettää tiedot takaisin LPC2148: n RX-nastalle aina kun lähetämme AT-komennon tai kun ESP8266 lähettää tietoja LPC2148: lle, kuten lähetämme tiedot ESP8266-palvelimen palvelimelle.
Esimerkki: Kun lähetämme AT-komennon ESP8266: lle LPC2148: sta ("AT \ r \ n"), saamme vastauksen "OK" Wi-Fi-moduulista.
Joten käytämme tässä keskeytystä tarkistamaan ESP8266 Wi-Fi -moduulista vastaanotetun arvon, koska ISR-keskeytyspalvelurutiinilla on korkein prioriteetti.
Joten aina, kun ESP8266 lähettää tietoja LPC2148: n RX-nastalle, keskeytys asetetaan ja ISR-toiminto suoritetaan.
Vaihe 8: - Ota keskeytykset käyttöön UART0: lle käyttämällä seuraavaa koodia
VICintEnable on vektoroida keskeyttää jotta rekisteri käytetään, jotta keskeytys UART0.
VICIntEnable - = (1 << 6);
VICVecCnt10 on vektoroida kesketysyohjausrekisteriin että allokoi paikka UART0.
VICVectCntl0 = (1 << 5) - 6;
Seuraavaksi VICVectaddr0 on vektoroitu keskeytysosoiterekisteri, jolla on keskeytyspalvelurutiinin ISR-osoite.
VICVectAddr0 = (allekirjoittamaton) UART0_ISR;
Sitten meidän on määritettävä keskeytys RBR-vastaanottopuskurirekisterille. Joten asetamme RBR: lle Keskeytä käyttöön -rekisterissä (U0IER). Joten tämä keskeytyspalvelurutiini (ISR) kutsutaan, kun vastaanotamme tietoja.
U0IER = IER_RBR;
Lopuksi meillä on ISR-toiminto, jonka on tehtävä tietty tehtävä, kun vastaanotamme tietoja ESP8266 Wi-Fi -moduulista. Tässä luemme juuri vastaanotetun arvon ESP8266: sta, joka on U0RBR: ssä, ja tallennamme nämä arvot UART0_BUFFER: iin. Lopuksi ISR: n lopussa VICVectAddr tulisi asettaa nollalla tai näennäisarvolla .
void UART0_ISR () __irq { allekirjoittamaton merkki IIRValue; IIRValue = U0IIR; IIR-arvo >> = 1; IIRValue & = 0x02; jos (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; if (uart0_määrä == BUFFER_SIZE) { uart0_määrä = 0; } } VICVectAddr = 0x0; }
Vaihe 9: - Koska ESP8266: n Wi-Fi-moduuli tulisi asettaa AP-tilaan, meidän on lähetettävä kunnioitetut AT-komennot LPC2148: sta käyttämällä UART0_SendString () -toimintoa.
Seuraavassa mainitaan AT-komennot, jotka lähetetään ESP8266: lle LPC2148: sta. Kunkin AT-komennon lähettämisen jälkeen ESP8266 vastaa "OK"
1. Lähettää AT: lle ESP8266
UART0_SendString ("AT \ r \ n"); viive_ms (3000);
2. Lähettää AT + CWMODE = 2 (ESP8266: n asetus AP-tilassa).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); delay_ms (3000);
3. Lähettää AT + CIFSR (AP: n saamiseksi)
UART0_SendString ("AT + CIFSR \ r \ n"); viive_ms (3000);
4. Lähettää AT + CIPMUX = 1 (Mutliple-liitännöille)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); viive_ms (3000);
5. Lähettää AT + CIPSERVER = 1,80 (ESP8266-PALVELIMEN KÄYTTÖÖNOTTO AVAA PORTTI)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); viive_ms (3000);
Hex-tiedoston ohjelmointi ja vilkkuminen LPC2148: een
ARM7-LPC2148: n ohjelmointiin tarvitaan keil uVision & Flash Magic -työkalu. USB-kaapelia käytetään tässä ARM7-muistin ohjelmointiin mikro-USB-portin kautta. Kirjoitamme koodin Keilillä ja luomme heksatiedoston ja sitten HEX-tiedosto välitetään ARM7-tikkuun Flash Magicilla. Jos haluat tietää enemmän Keil uVisionin ja Flash Magicin asentamisesta ja niiden käytöstä, seuraa linkkiä Aloittaminen ARM7 LPC2148 -mikrokontrollerilla ja ohjelmoi se Keil uVisionin avulla.
Täydellinen ohjelma annetaan opetusohjelman lopussa.
Huomautus: Kun lataat HEX-tiedostoa LPC2148: een, et saa virtaa ESP8266 Wi-Fi -moduulista ja FTDI-moduulista, joka on kytketty LPC2148: een.
LEDin hallinta ESP8266 IoT -verkkopalvelimella LPC2148: lla
Vaihe 1: - Kun olet ladannut HEX-tiedoston LPC2148: een, liitä FTDI-moduuli tietokoneeseen USB-kaapelilla ja avaa kittiohjelmisto.
Valitse Sarja ja valitse sitten COM-portti tietokoneen tai LAPTOP-kaivoksen mukaan (COM3). Siirtonopeus on 9600.
Vaihe 2: - Nollaa nyt ESP8266 Wi-Fi -moduuli tai vain POWER OFF ja POWER ON uudelleen, kittipääte näyttää ESP8266 Wi-Fi -moduulin vastauksen alla olevan kuvan mukaisesti. \
Vaihe 3: - Paina nyt LPC2148: n RESET-painiketta. Sen jälkeen LPC2148 alkaa lähettää AT-komentoja ESP8266: lle. Voimme nähdä vastauksen kittiterminaalissa.
Vaihe 4: - Kuten yllä olevasta kuvasta näet, ESP8266 on asetettu tilassa 2, joka on AP-tila ja APIP: n osoite on 192.168.4.1. Huomaa tämä osoite, koska tämä osoite koodataan kovasti verkkosivun HTML-koodissa ohjaamaan LPC2148: een kytkettyä LEDiä.
Tärkeää : Kun ESP8266 on AP-tilassa, sinun on liitettävä tietokoneesi ESP8266 AP: hen. Katso ESP8266-moduulini alla oleva kuva, jossa AP on ESP_06217B: n nimi (se on auki eikä sillä ole salasanaa).
Vaihe 5: - Kun olet liittänyt tietokoneen ESP8266 AP: hen, avaa muistilehtiö ja kopioi ja liitä seuraava HTML-ohjelman verkkosivu. Varmista, että vaihdat APIP-osoitteen ESP8266-Wi-Fi-moduulin mukaan
Tervetuloa Circuit Digestiin
ESP8266 Liitäntä LPC2148: een: Web-palvelimen luominen LED: n ohjaamiseksi
LED PÄÄLLÄ LED POISTällä HTML-sivulla olemme luoneet kaksi hyperlinkitettyä painiketta napin kytkemiseksi päälle ja pois päältä verkkosivulta.
Lopuksi tallenna muistilehtiöasiakirja.html- laajennuksena
Verkkosivu näytetään verkkoselaimessa seuraavasti.
Tässä osoite on AP: n IP-osoite 192.168.4.1 ja lähetämme arvot @ ja% kytkemään LED päälle ja pois käyttämällä tätä logiikkaa alla LPC2148: ssa.
while (1) { if (uart0_määrä! = 0) { COMMAND = UART0_BUFFER; if (COMMAND == LEDON) // Logiikka asettaa LED: n PÄÄLLE tai POIS riippuen ESP8266: sta vastaanotetusta arvosta { IOSET1 = (1 << 20); // Asettaa OUTPUT HIGH delay_ms (100); } muut, jos (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // Asettaa OUTPUT LOW delay_ms (100); } } }
Näin laitetta voidaan ohjata etänä ESP8266- ja ARM7-mikrokontrollerilla LPC2148. Täydellinen koodi ja selitysvideo on annettu alla.