- Súčasti sú povinné
- Modul Wi-Fi ESP8266
- Prepojenie LPC2148 s ESP8266 pre sériovú komunikáciu
- Schéma zapojenia a zapojenia
- Kroky spojené s programovaním UART0 v LPC2148 na prepojenie ESP8266
- Ovládanie LED pomocou webového servera IoT ESP8266 s LPC2148
Transceiver Wi-Fi ESP8266 poskytuje spôsob pripojenia mikrokontroléra k sieti. Je široko používaný v projektoch IoT, pretože je lacný, malý a ľahko použiteľný. Predtým sme ho použili na vytvorenie webového servera pomocou webového servera Raspberry a webového servera Arduino.
V tomto návode prepojíme modul Wi-Fi ESP8266 s mikrokontrolérom ARM7-LPC2148 a vytvoríme webový server na kontrolu LED pripojených k LPC2148. Pracovný postup bude nasledovať:
- Posielajte AT príkazy z LPC2148 do ESP8266, aby ste nakonfigurovali ESP8266 v režime AP
- Pripojte prenosný počítač alebo počítač k sieti Wi-Fi s prístupovým bodom ESP8266
- Vytvorte webovú stránku HTML v počítači s IP adresou prístupového bodu webového servera ESP8266
- Vytvorte program pre LPC2148 na riadenie LED podľa hodnoty prijatej z ESP8266
Ak je váš modul Wi-Fi ESP8266 úplne nový, pomocou nasledujúcich odkazov sa oboznámte s modulom Wi-Fi ESP8266.
- Začíname s prijímačom Wi-Fi ESP8266 (1. časť)
- Začíname s ESP8266 (časť 2): Používanie príkazov AT
- Začíname s ESP8266 (časť 3): Programovanie ESP8266 s Arduino IDE a blikanie pamäte
Súčasti sú povinné
Hardvér:
- ARM7-LPC2148
- Modul Wi-Fi ESP8266
- FTDI (USB na UART TTL)
- LED
- IC regulátora napätia 3,3 V
- Nepál
Softvér:
- KEIL uVision
- Flash Magic Tool
- Tmel
Modul Wi-Fi ESP8266
ESP8266 je nízkonákladový široko používaný modul Wi-Fi pre zabudované projekty, ktorý vyžaduje nízky výkon 3,3 V. Používa iba dva vodiče TX a RX na sériovú komunikáciu a prenos dát medzi ESP8266 a akýmkoľvek mikrokontrolérom s portom UART.
Schéma pripnutia pre modul Wi-Fi ESP8266
- GND, zem (0 V)
- TX, Vysiela dátový bit X
- GPIO 2, univerzálny vstup / výstup č. 2
- CH_PD, vypnutie čipu
- GPIO 0, univerzálny vstup / výstup č. 0
- RST, vynulovať
- RX, príjem dátového bitu X
- VCC, napätie (+3,3 V)
Nastavenie dosky plošných spojov ESP8266
ESP8266 vyžaduje stály prísun 3,3 V a nie je priateľský k použitiu. Takže v našom predchádzajúcom návode na ESP8266 sme vytvorili obvodovú dosku pre ESP8266 s regulátorom napätia 3,3 V, tlačidlom RESET a nastavením prepojky pre prepínanie režimov (príkaz AT alebo režim blesku). Môže byť tiež nastavený na breadboard bez použitia dosky perf.
Tu sme spájkovali všetky komponenty na nepájivej doske, aby sme vytvorili našu vlastnú Wi-Fi dosku ESP8266
Naučte sa prepojiť ESP8266 s rôznymi mikrokontrolérmi pomocou nasledujúcich odkazov:
- Začíname s ESP8266 (časť 3): Programovanie ESP8266 s Arduino IDE a blikanie pamäte
- Prepojenie ESP8266 s STM32F103C8: Vytvorenie webového servera
- Posielanie e-mailov pomocou nástroja MSP430 Launchpad a ESP8266
- Prepojenie ESP8266 s mikrokontrolérom PIC16F877A
- Monitorovanie kontajnerov na báze IOT pomocou Arduino a ESP8266
Všetky projekty založené na ESP8266 nájdete tu.
Prepojenie LPC2148 s ESP8266 pre sériovú komunikáciu
Aby sme mohli prepojiť ESP8266 s LPC2148, musíme medzi týmito dvoma zariadeniami nadviazať sériovú komunikáciu UART, aby sme mohli konfigurovať modul Wi-Fi ESP8266 na zasielanie AT príkazov z LPC2148 do ESP8266. Ak sa chcete dozvedieť viac informácií o príkazoch ESP8266 AT, kliknite na odkaz.
Takže aby sme mohli používať komunikáciu UART v LPC2148, musíme inicializovať port UART v LPC2148. LPC2148 má dva zabudované porty UART (UART0 a UART1).
Kolíky UART v LPC2148
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0,9 |
Inicializácia UART0 v LPC2148
Pretože vieme, že piny LPC2148 sú piny na všeobecné použitie, musíme na použitie UART0 použiť register PINSEL0. Pred inicializáciou UART0 dáva vedieť o týchto registroch UART používaných v LPC2148 na použitie funkcie UART.
UART sa registruje v LPC2148
Nasledujúca tabuľka zobrazuje niektoré dôležité registre používané v programovaní. V našich budúcich tutoriáloch uvidíme v krátkosti ďalšie registre používané pre UART v LPC2148.
x-0 pre UART0 a x-1 pre UART1:
REGISTROVAŤ |
REGISTROVAŤ MENO |
POUŽITIE |
UxRBR |
Prijať register vyrovnávacej pamäte |
Obsahuje nedávno prijatú hodnotu |
UxTHR |
Prenášajte holdingový register |
Obsahuje údaje, ktoré sa majú prenášať |
UxLCR |
Register riadenej dopravy |
Obsahuje formát rámca UART (počet dátových bitov, stop bit) |
UxDLL |
Západka deliča LSB |
LSB hodnoty generátora prenosovej rýchlosti UART |
UxDLM |
Rozdeľovač Západka MSB |
MSB hodnoty generátora prenosovej rýchlosti UART |
UxIER |
Prerušiť povolenie registra |
Používa sa na povolenie zdrojov prerušenia UART0 alebo UART1 |
UxIIR |
Register prerušenia identifikácie |
Obsahuje stavový kód, ktorý má prioritu a zdroj čakajúcich prerušení |
Schéma zapojenia a zapojenia
Pripojenia medzi LPC2148, ESP8266 a FTDI sú zobrazené nižšie
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
ESP8266 je napájaný cez regulátor napätia 3,3 V a FTDI a LPC2148 sú napájané z USB.
Prečo je FTDI tu?V tomto tutoriáli sme pripojili pin RX FTDI (USB na UART TTL) k kolíku ESP8266 TX, ktorý je ďalej pripojený k pinu LPC2148 RX, takže môžeme vidieť odozvu modulu ESP8266 pomocou ľubovoľného terminálového softvéru, ako je tmel, Arduino IDE. Pre to však nastavte prenosovú rýchlosť podľa prenosovej rýchlosti Wi-Fi modulu ESP8266. (Moja prenosová rýchlosť je 9600).
Kroky spojené s programovaním UART0 v LPC2148 na prepojenie ESP8266
Ďalej sú uvedené kroky programovania na pripojenie ESP8266 k LPC2148, vďaka ktorým bude kompatibilný s IoT.
Krok 1: - Najprv musíme inicializovať piny UART0 TX & RX v registri PINSEL0.
(P0.0 ako TX a P0.1 ako RX) PINSEL0 = PINSEL0 - 0x00000005;
Krok 2: - Ďalej v U0LCR (Line Control Register) nastavte DLAB (Divisor Latch Access Bit) na 1, pretože ich umožňuje, a potom nastavte počet stop bitov na 1 a dĺžku dátového rámca na 8 bitov.
U0LCR = 0x83;
Krok 3: - Teraz je potrebné poznamenať, že je potrebné nastaviť hodnoty U0DLL a U0DLM v závislosti od hodnoty PCLK a požadovanej prenosovej rýchlosti. Normálne pre ESP8266 používame prenosovú rýchlosť 9600. Pozrime sa teda, ako nastaviť prenosovú rýchlosť 9600 pre UART0.
Vzorec pre výpočet prenosovej rýchlosti:
Kde, PLCK: Periférne hodiny vo frekvencii (MHz)
U0DLM, U0DLL: registre deliča generátora prenosovej rýchlosti
MULVAL, DIVADDVAL: Tieto registre sú hodnoty generátora zlomkov
Pre prenosovú rýchlosť 9600 s PCLK = 15 MHz
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97,65
Takže U0DLM = 0 a dostaneme U0DLL = 97 (frakcia nie je povolená)
Používame teda nasledujúci kód:
U0DLM = 0x00; U0DLL = 0x61; (Hexadecimálna hodnota 97)
Krok 4: - Nakoniec musíme v LCR deaktivovať nastavenie DLA (Divisor Latch Access) na hodnotu 0.
Takže máme
U0LCR & = 0x0F;
Krok 5: - Pri prenose znaku načítajte bajt, ktorý sa má odoslať, v U0THR a počkajte, kým sa bajt prenesie, čo je indikované tým, že sa THRE stáva HIGH.
void UART0_TxChar (char ch) { U0THR = ch; while ((U0LSR & 0x40) == 0); }
Krok 6: - Na prenos reťazca sa používa funkcia uvedená nižšie. Na postupné odosielanie reťazcových údajov sme použili znakovú funkciu z vyššie uvedeného kroku.
void UART0_SendString (char * str) { uint8_t i = 0; while (str! = '\ 0') { UART0_TxChar (str); i ++; } }
Krok 7: - Na príjem reťazca sa tu používa funkcia prerušenia služby, pretože Wi-Fi modul ESP8266 bude prenášať dáta späť na pin RX LPC2148 vždy, keď pošleme príkaz AT, alebo kedykoľvek, keď ESP8266 pošle údaje LPC2148, ako by sme ich poslali údaje na webový server ESP8266.
Príklad: Keď pošleme príkaz AT na ESP8266 z LPC2148 („AT \ r \ n“), dostaneme od modulu Wi-Fi odpoveď „OK“.
Takže tu používame prerušenie na kontrolu hodnoty prijatej z modulu Wi-Fi ESP8266, pretože rutina služby prerušenia ISR má najvyššiu prioritu.
Takže kedykoľvek ESP8266 pošle dáta na pin RX LPC2148, nastaví sa prerušenie a vykoná sa funkcia ISR.
Krok 8: - Ak chcete povoliť prerušenia pre UART0, použite nasledujúci kód
VICintEnable je vektorovanie povolenie prerušenie register slúži na aktiváciu prerušenia na UART0.
VICIntEnable - = (1 << 6);
VICVecCnt10 je vektorovanie prerušenie riadiaci register, ktorý alokuje slot pre UART0.
VICVectCntl0 = (1 << 5) - 6;
Ďalej je VICVectaddr0 vektorovaný register adries prerušenia, ktorý má adresu ISR rutiny služby prerušenia.
VICVectAddr0 = (nepodpísané) UART0_ISR;
Potom musíme priradiť prerušenie pre register vyrovnávacej pamäte RBR Receive. Takže v Interrupt enable register (U0IER) sme nastavili pre RBR. Takže táto rutina prerušenia služby (ISR) sa volá, keď prijímame údaje.
U0IER = IER_RBR;
Nakoniec máme funkciu ISR, ktorá musí vykonať určitú úlohu, keď prijímame údaje z modulu Wi-Fi ESP8266. Tu sme práve prečítali prijatú hodnotu z ESP8266, ktorá je prítomná v U0RBR, a tieto hodnoty uložíme do UART0_BUFFER. Nakoniec na konci ISR by mala byť VICVectAddr nastavená na nulovú alebo fiktívnu hodnotu.
void UART0_ISR () __irq { nepodpísaný znak IIRValue; IIRValue = U0IIR; IIRValue >> = 1; IIRValue & = 0x02; if (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; if (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
Krok 9: - Pretože modul ESP8266 Wi-Fi by mal byť nastavený v režime AP, musíme pomocou funkcie UART0_SendString () posielať rešpektované príkazy AT z LPC2148.
Ďalej sú uvedené AT príkazy, ktoré sa posielajú na ESP8266 z LPC2148. Po odoslaní každého príkazu AT ESP8266 odpovie „OK“
1. Odošle AT na ESP8266
UART0_SendString ("AT \ r \ n"); delay_ms (3000);
2. Odošle AT + CWMODE = 2 (nastavenie ESP8266 v režime AP).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); delay_ms (3000);
3. Posiela AT + CIFSR (na získanie IP adresy AP)
UART0_SendString ("AT + CIFSR \ r \ n"); delay_ms (3000);
4. Odošle AT + CIPMUX = 1 (pre viacnásobné pripojenia)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); delay_ms (3000);
5. Odošle AT + CIPSERVER = 1,80 (pre POVOLENIE SERVERU ESP8266 s OTVORENÝM PORTOM)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); delay_ms (3000);
Programovanie a blikanie hexadecimálneho súboru na LPC2148
Na programovanie ARM7-LPC2148 potrebujeme keil uVision & Flash Magic nástroj. Tu sa používa USB kábel na programovanie ARM7 Stick cez micro USB port. Napíšeme kód pomocou Keila a vytvoríme hexadecimálny súbor. Potom sa HEX súbor nahrá na flash disk ARM7 pomocou Flash Magic. Ak sa chcete dozvedieť viac o inštalácii keil uVision a Flash Magic a o tom, ako ich používať, kliknite na odkaz Začíname s mikrokontrolérom ARM7 LPC2148 a naprogramujte ho pomocou Keil uVision.
Kompletný program je uvedený na konci tutoriálu.
Poznámka: Počas nahrávania súboru HEX na LPC2148 nesmiete napájať Wi-Fi modul ESP8266 a FTDI modul, ktorý je pripojený k LPC2148.
Ovládanie LED pomocou webového servera IoT ESP8266 s LPC2148
Krok 1: - Po nahraní súboru HEX na LPC2148 pripojte modul FTDI k počítaču pomocou kábla USB a otvorte softvér terminálneho tmelu.
Vyberte Sériové a potom Vyberte port COM podľa vášho PC alebo dolu LAPTOP (COM3). Prenosová rýchlosť je 9600.
Krok 2: - Teraz resetujte modul Wi-Fi ESP8266 alebo len ZAPNITE a ZAPNITE ZAPNUTÝ, terminál tmelu zobrazí reakciu modulu Wi-Fi ESP8266, ako je to zobrazené nižšie. \
Krok 3: - Teraz stlačte tlačidlo RESET na LPC2148. Potom začne LPC2148 posielať AT príkazy na ESP8266. Vidíme na to reakciu v tmelovom termináli.
Krok 4: - Ako vidíte na obrázku vyššie, ESP8266 je nastavený v REŽIME 2, čo je režim AP, a adresa APIP je 192.168.4.1. Túto adresu si zapamätajte, pretože táto adresa bude v HTML kóde webovej stránky pevne zakódovaná, aby sa ovládala kontrolka LED pripojená k LPC2148.
Dôležité : Keď je ESP8266 v režime AP, musíte pripojiť váš počítač k ESP8266 AP. Na obrázku nižšie môj modul ESP8266 zobrazuje AP v mene ESP_06217B (je otvorené a nemá heslo).
Krok 5: - Po pripojení počítača k ESP8266 AP otvorte poznámkový blok a skopírujte a vložte nasledujúcu webovú stránku programu HTML. Nezabudnite zmeniť adresu APIP podľa vášho modulu Wi-Fi ESP8266
Vitajte v prehľade okruhov
ESP8266 Prepojenie s LPC2148: Vytvorenie webového servera na kontrolu LED
LED svieti LED nesvietiNa tejto stránke HTML sme vytvorili dve tlačidlá s hypertextovým odkazom na zapnutie a vypnutie LED diódy z webovej stránky.
Nakoniec uložte dokument poznámkového bloku ako príponu .html
Webová stránka sa vo webovom prehliadači zobrazí nižšie.
Tu je adresa AP IP adresa 192.168.4.1 a my posielame hodnoty @ a% na zapnutie a vypnutie LED pomocou tejto logiky nižšie v LPC2148.
while (1) { if (uart0_count! = 0) { COMMAND = UART0_BUFFER; if (COMMAND == LEDON) // Logika nastavenia LED ZAPNUTÁ alebo VYPNUTÁ v závislosti od prijatej hodnoty z ESP8266 { IOSET1 = (1 << 20); // Nastaví VÝSTUP VYSOKÝ delay_ms (100); } else if (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // Nastaví VÝSTUP NÍZKY delay_ms (100); } } }
Takto je možné zariadenie ovládať na diaľku pomocou mikrokontroléra ESP8266 a ARM7 LPC2148. Kompletný kód a video s vysvetlením sú uvedené nižšie.