- Szükséges alkatrészek
- ESP8266 Wi-Fi modul
- Az LPC2148 és az ESP8266 összekapcsolása a soros kommunikációhoz
- Áramkör és kapcsolatok
- Az UART0 programozása az LPC2148-ban az ESP8266 összekapcsolásához
- A LED vezérlése az ESP8266 IoT webszerver és az LPC2148 segítségével
Az ESP8266 Wi-Fi adó-vevő lehetővé teszi a mikrovezérlő csatlakoztatását a hálózathoz. Széles körben használják az IoT projektjeiben, mivel olcsó, apró és könnyen használható. Korábban már használtunk webszerver létrehozására a Raspberry webszerver és az Arduino webszerver segítségével.
Ebben az oktatóanyagban összekapcsolunk egy ESP8266 Wi-Fi modult az ARM7-LPC2148 mikrovezérlővel, és létrehozunk egy webszervert az LPC2148-hoz kapcsolt LED vezérléséhez. A munkafolyamat a következő lesz:
- Küldjön AT parancsokat az LPC2148-ról az ESP8266-ra az ESP8266 konfigurálásához AP módban
- Csatlakoztassa a laptop vagy a számítógép Wi-Fi-jét az ESP8266 hozzáférési ponthoz
- Hozzon létre egy HTML weboldalt PC-n az ESP8266 webszerver hozzáférési pontjának IP-címével
- Hozzon létre egy programot az LPC2148 számára a LED vezérléséhez az ESP8266-tól kapott értéknek megfelelően
Ha Ön teljesen új az ESP8266 Wi-Fi modulhoz, látogasson el az alábbi linkekre, hogy megismerje az ESP8266 Wi-Fi modult.
- Az első lépések az ESP8266 Wi-Fi adó-vevővel (1. rész)
- Az ESP8266 használatának megkezdése (2. rész): AT parancsok használata
- Az első lépések az ESP8266-tal (3. rész): Az ESP8266 programozása Arduino IDE-vel és a memória villogása
Szükséges alkatrészek
Hardver:
- ARM7-LPC2148
- ESP8266 Wi-Fi modul
- FTDI (USB - UART TTL)
- VEZETTE
- 3,3 V feszültségszabályozó IC
- Kenyérlemez
Szoftver:
- KEIL uVision
- Flash Magic eszköz
- Gitt
ESP8266 Wi-Fi modul
Az ESP8266 egy alacsony költségű, széles körben használt Wi-Fi modul beágyazott projektekhez, amely alacsony, 3,3 V-os energiát igényel. Csak két TX és RX vezetéket használ soros kommunikációhoz és adatátvitelhez az ESP8266 és bármely UART porttal rendelkező mikrovezérlő között.
ESP8266 Wi-Fi modul tűs rajza
- GND, föld (0 V)
- TX, X adatbit továbbítása
- GPIO 2, Általános célú bemenet / kimenet 2. sz
- CH_PD, chip kikapcsolása
- GPIO 0, általános célú bemenet / kimenet 0
- RST, Reset
- RX, X adatbit fogadása
- VCC, feszültség (+3,3 V)
Az ESP8266 áramköri kártya beállítása
Az ESP8266 állandó 3,3 V-os tápfeszültséget igényel, és nem kenyérpirító. Tehát az ESP8266 korábbi oktatóanyagunkban készítettünk egy áramkört az ESP8266 számára 3,3 V-os feszültségszabályozóval, egy RESET nyomógombbal és egy jumper beállítással az üzemmódváltáshoz (AT parancs vagy vakumód). A kenyérlapon is beállítható anélkül, hogy használná a tökéletes táblát.
Itt forrasztottuk az összes alkatrészt a kenyérlapra, hogy elkészítsük saját ESP8266 Wi-Fi lapunkat
Tanulja meg az ESP8266 és a különböző mikrovezérlők összekapcsolását az alábbi linkek segítségével:
- Az első lépések az ESP8266-tal (3. rész): Az ESP8266 programozása Arduino IDE-vel és a memória villogása
- Az ESP8266 és az STM32F103C8 összekapcsolása: Webszerver létrehozása
- E-mail küldése az MSP430 Launchpad és az ESP8266 használatával
- Az ESP8266 összekapcsolása a PIC16F877A mikrokontrollerrel
- IOT alapú dömperfigyelés Arduino és ESP8266 használatával
Az összes ESP8266 alapú projekt megtalálható itt.
Az LPC2148 és az ESP8266 összekapcsolása a soros kommunikációhoz
Az ESP8266 és az LPC2148 összekapcsolása érdekében létre kell hoznunk egy UART soros kommunikációt e két eszköz között, hogy AT parancsokat küldjünk az LPC2148-ról az ESP8266-ra az ESP8266 Wi-Fi modul konfigurálásához. Ha többet szeretne tudni az ESP8266 AT parancsokról, kövesse a linket.
Tehát az UART kommunikáció LPC2148-ban történő használatához inicializálnunk kell az UART portot az LPC2148-ban. Az LPC2148 két beépített UART porttal rendelkezik (UART0 és UART1).
UART csapok az LPC2148-ban
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
Az UART0 inicializálása az LPC2148 fájlban
Mivel tudjuk, hogy az LPC2148 csapjai általános célú csapok, ezért az UART0 használatához a PINSEL0 regisztert kell használnunk. Az UART0 inicializálása előtt megismeri ezeket az UART regisztereket, amelyeket az LPC2148-ban használtak az UART szolgáltatás használatához.
Az UART nyilvántartások az LPC2148-ban
Az alábbi táblázat néhány fontos regisztrációt tartalmaz, amelyeket a programozás során használnak. A jövőbeni oktatóprogramjainkban röviden megnézzük az UART-hoz használt más regisztereket az LPC2148-ban.
x-0 UART0 esetén és x-1 UART1 esetén:
REGISZTRÁCIÓ |
NYILVÁNTARTÁS NEVE |
HASZNÁLAT |
UxRBR |
Puffer regisztráció fogadása |
Nemrégiben kapott értéket tartalmaz |
UxTHR |
Adatkezelési nyilvántartás |
A továbbítandó adatokat tartalmazza |
UxLCR |
Vonalirányítási nyilvántartás |
UART keretformátumot tartalmaz (adatbitek száma, stopbit) |
UxDLL |
Osztó retesz LSB |
LSB az UART baud sebesség generátor értékéből |
UxDLM |
Osztó retesz MSB |
Az UART adatátviteli sebesség generátor MSB-je |
UxIER |
Megszakítás: Engedélyezze a regisztrációt |
Az UART0 vagy UART1 megszakítási források engedélyezésére szolgál |
UxIIR |
Azonosító nyilvántartás megszakítása |
Tartalmazza az állapotkódot, amelynek prioritása és forrása van a függőben lévő megszakításoknak |
Áramkör és kapcsolatok
Az LPC2148, az ESP8266 és az FTDI kapcsolatait az alábbiakban mutatjuk be
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
Az ESP8266 tápellátása 3,3 V feszültségszabályozón keresztül történik, az FTDI és LPC2148 tápellátása pedig USB-n keresztül történik.
Miért van itt az FTDI?Ebben az oktatóanyagban csatlakoztattuk az FTDI RX-tűjét (USB az UART TTL-hez) az ESP8266 TX tűhöz, amely tovább csatlakozik az LPC2148 RX-tűhöz, hogy bármilyen terminálszoftverrel, például putty, Arduino IDE segítségével láthassuk az ESP8266 modul válaszát. De ehhez állítsa be az átviteli sebességet az ESP8266 Wi-Fi modul adatátviteli sebességének megfelelően. (Az átviteli sebességem 9600).
Az UART0 programozása az LPC2148-ban az ESP8266 összekapcsolásához
Az alábbiakban bemutatjuk az ESP8266 és az LPC2148 összekapcsolásának programozási lépéseit, amelyek IoT-kompatibilitást tesznek lehetővé.
1. lépés: - Először inicializálnunk kell az UART0 TX és RX csapokat a PINSEL0 regiszterben.
(P0.0 TX-ként és P0.1 RX-ként) PINSEL0 = PINSEL0 - 0x00000005;
2. lépés: - Következő lépésként az U0LCR (Line Control Register) sorban állítsa a DLAB-t (Divisor Latch Access Bit) 1-re, mivel ez lehetővé teszi számukra, majd állítsa le a stopbitek számát 1-re és az adatkeret hosszát 8-bitesre.
U0LCR = 0x83;
3. lépés: - Most fontos megemlíteni az U0DLL és U0DLM értékeinek beállítását a PCLK értékétől és a kívánt átviteli sebességtől függően. Az ESP8266 esetében általában 9600-as sebességet használunk. Lássuk, hogyan állíthatjuk be az UART0 9600-as sebességét.
Kábel az adatátviteli sebesség kiszámításához:
Hol, PLCK: Perifériás óra frekvenciában (MHz)
U0DLM, U0DLL: Baud Rate generátor osztó regiszterek
MULVAL, DIVADDVAL: Ezek a regiszterek frakciógenerátor értékek
9600 Baud Rate esetén, PCLK = 15MHZ mellett
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97,65
Tehát U0DLM = 0 és megkapjuk az U0DLL = 97 értéket (a frakció nem megengedett)
Tehát a következő kódot használjuk:
U0DLM = 0x00; U0DLL = 0x61; (97 hexadecimális értéke)
4. lépés: - Végül a DLA (Divisor Latch Access) letiltását 0-ra kell állítanunk az LCR-ben.
Így van
U0LCR & = 0x0F;
5. lépés: - A karakter átviteléhez töltse be az elküldendő bájtot U0THR-ben, és várja meg, amíg a bájt továbbításra kerül, amit a HÁROM NAGYRA emelkedik.
érvénytelen UART0_TxChar (char ch) { U0THR = ch; míg ((U0LSR & 0x40) == 0); }
6. lépés: - A karakterlánc továbbításához az alábbi funkciót kell használni. A karaktersorozat adatainak egyenkénti elküldéséhez a fenti lépésben használt karakterfüggvényt használtuk.
void UART0_SendString (char * str) { uint8_t i = 0; while (str! = '\ 0') { UART0_TxChar (str); i ++; } }
7. lépés: - Karaktersorozat fogadásához itt megszakítja a szolgáltatás rutin funkciót, mert egy ESP8266 Wi-Fi modul adatokat továbbít az LPC2148 RX tűjére, amikor AT parancsot küldünk, vagy amikor egy ESP8266 adatokat küld az LPC2148-nak, mint mi adatokat az ESP8266 webszerveréhez.
Példa: Amikor az ATC parancsot elküldjük az ESP8266-nak az LPC2148-ból („AT \ r \ n”), akkor a „Wi-Fi” modultól kapunk egy „OK” választ.
Tehát itt egy megszakítást használunk az ESP8266 Wi-Fi modultól kapott érték ellenőrzésére, mivel az ISR megszakítási szolgáltatás rutinnak van a legnagyobb prioritása.
Tehát amikor egy ESP8266 adatokat küld az LPC2148 RX tűjére, a megszakítás be van állítva, és az ISR funkció végrehajtásra kerül.
8. lépés: - Az UART0 megszakításainak engedélyezéséhez használja a következő kódot
A VICintEnable vektoros megszakítás engedélyező regiszter, amelyet az UART0 megszakításának engedélyezésére használnak.
VICIntEnable - = (1 << 6);
A VICVecCnt10 vektoros megszakításvezérlő regiszter, amely lefoglalja a rést az UART0 számára.
VICVectCntl0 = (1 << 5) - 6;
Ezután a VICVectaddr0 vektoros megszakítási cím regiszter, amely megszakítási szolgáltatás rutin ISR címmel rendelkezik.
VICVectAddr0 = (aláíratlan) UART0_ISR;
Ezután meg kell jelölnünk a megszakítást az RBR fogadás puffer regiszterhez. Tehát a megszakítás engedélyezés regiszterben (U0IER) beállítottuk az RBR-t. Tehát ezt a megszakítási szolgáltatási rutint (ISR) hívjuk meg, amikor adatokat kapunk.
U0IER = IER_RBR;
Végül megvan az ISR funkció, amelynek bizonyos feladatokat kell végrehajtania, amikor adatokat kapunk az ESP8266 Wi-Fi modultól. Itt olvashattuk az ESP8266-tól kapott értéket, amely jelen van az U0RBR-ben, és tároljuk ezeket az értékeket az UART0_BUFFER-ben. Végül az ISR végén a VICVectAddr értékét nullával vagy dummy értékkel kell beállítani.
void UART0_ISR () __irq { unsigned char IIRValue; IIRValue = U0IIR; IIRValue >> = 1; IIRValue & = 0x02; if (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_szám ++; if (uart0_szám == BUFFER_SIZE) { uart0_szám = 0; } } VICVectAddr = 0x0; }
9. lépés: - Mivel az ESP8266 Wi-Fi modult AP módban kell beállítani, az UART0_SendString () függvény segítségével el kell küldenünk a tiszteletben tartott AT parancsokat az LPC2148- ból .
Az alábbiakban megemlítjük azokat az AT parancsokat, amelyeket az LPC2148-ból küldtek az ESP8266-nak. Minden AT parancs elküldése után az ESP8266 “OK” -val válaszol
1. AT-t küld az ESP8266-nak
UART0_SendString ("AT \ r \ n"); késleltetés ms (3000);
2. AT + CWMODE = 2 küld (az ESP8266 beállítása AP módban).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); késleltetés ms (3000);
3. AT + CIFSR-t küld (az AP IP megszerzéséhez)
UART0_SendString ("AT + CIFSR \ r \ n"); késleltetés ms (3000);
4. AT + CIPMUX = 1 küldés (Mutliple csatlakozásokhoz)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); késleltetés ms (3000);
5. AT + CIPSERVER = 1,80 küldés (az ESP8266 SZERVER NYITOTT PORTtal történő ENABLÁLÁSÁHOZ)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); késleltetés ms (3000);
Hex fájl programozása és villogása az LPC2148 fájlba
Az ARM7-LPC2148 programozásához szükségünk van keil uVision és Flash Magic eszközre. Az USB-kábellel itt lehet programozni az ARM7 Stick mikro USB-porton keresztül. Kódot írunk a Keil segítségével, és létrehozunk egy hex fájlt, majd a HEX fájlt a Flash Magic segítségével az ARM7 pálcára villantjuk. Ha többet szeretne megtudni a keil uVision és a Flash Magic telepítéséről és használatáról, kövesse az Első lépések az ARM7 LPC2148 mikrovezérlővel linket és programozza be a Keil uVision használatával.
A teljes program az oktatóanyag végén található.
Megjegyzés: A HEX fájl feltöltésekor az LPC2148 készülékbe nem szabad bekapcsolni az ESP8266 Wi-Fi modult és az LPC2148 készülékhez csatlakoztatott FTDI modult.
A LED vezérlése az ESP8266 IoT webszerver és az LPC2148 segítségével
1. lépés: - Miután feltöltötte a HEX fájlt az LPC2148-ra, csatlakoztassa az FTDI modult a számítógéphez USB-kábelen keresztül, és nyissa meg a putty terminál szoftvert.
Válassza a Soros lehetőséget, majd válassza ki a COM-portot a számítógépének vagy a LAPTOP-nak (COM3) megfelelően. Az átviteli sebesség 9600.
2. lépés: - Most állítsa alaphelyzetbe az ESP8266 Wi-Fi modult, vagy csak POWER OFF és POWER ON újra, a pitt terminál megmutatja az ESP8266 Wi-Fi modul válaszát az alábbiak szerint. \
3. lépés: - Most nyomja meg a RESET gombot az LPC2148-on. Ezt követően az LPC2148 elkezdi küldeni az AT parancsokat az ESP8266-nak. Ennek válaszát láthatjuk a gittterminálban.
4. lépés: - Amint a fenti képen látható, az ESP8266 a 2. módban van beállítva, amely AP mód, és az APIP címe 192.168.4.1. Vegye figyelembe ezt a címet, mert ez a cím kemény kódolású lesz a weboldal HTML-kódjában az LPC2148-hoz csatlakoztatott LED vezérléséhez.
Fontos : Ha az ESP8266 AP módban van, akkor csatlakoztatnia kell számítógépét az ESP8266 AP-hez. Lásd az ESP8266 modul alatt található képet, amelyen az AP látható az ESP_06217B néven (nyitva van és nincs jelszava).
5. lépés: - Miután csatlakoztatta a számítógépet az ESP8266 AP-hez, nyisson meg egy jegyzettömböt, és másolja be a következő HTML program weboldalát. Ne felejtse el megváltoztatni az APIP-címet az ESP8266 Wi-Fi modulnak megfelelően
Üdvözöljük a Circuit Digest oldalán
ESP8266 Interfészek az LPC2148-hoz: Webkiszolgáló létrehozása egy LED vezérléséhez
LED BE LED KIEzen a HTML oldalon két hiperhivatkozott gombot hoztunk létre a LED be- és kikapcsolásához a weboldalról.
Végül mentse el a jegyzettömböt.html kiterjesztésként
A weboldal az alábbiak szerint jelenik meg a webböngészőben.
Itt a cím az AP 192.168.4.1 IP-címe, és @ és% értékeket küldünk a LED be- és kikapcsolásához az alábbi logika segítségével az LPC2148-ban.
while (1) { if (uart0_szám! = 0) { COMMAND = UART0_BUFFER; if (COMMAND == LEDON) // Logic a LED be- vagy kikapcsolására az ESP8266-tól kapott érték függvényében { IOSET1 = (1 << 20); // Beállítja az OUTPUT HIGH delay_ms (100) értéket; } else if (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // Beállítja az OUTPUT LOW delay_ms (100) értéket; } } }
Így egy eszköz távvezérelhető az ESP8266 és az ARM7 LPC2148 mikrovezérlő segítségével. A teljes kódot és magyarázó videót az alábbiakban adjuk meg.