- Nepieciešamās sastāvdaļas
- ESP8266 Wi-Fi modulis
- LPC2148 savienošana ar ESP8266 sērijveida saziņai
- Shēmas shēma un savienojumi
- Darbības, kas saistītas ar UART0 programmēšanu LPC2148 saskarnei ESP8266
- LED vadīšana, izmantojot ESP8266 IoT Webserver ar LPC2148
ESP8266 Wi-Fi raiduztvērējs nodrošina iespēju mikrokontrolleru savienot ar tīklu. To plaši izmanto IoT projektos, jo tas ir lēts, niecīgs un viegli lietojams. Iepriekš mēs to izmantojām, lai izveidotu tīmekļa serveri, izmantojot Raspberry tīmekļa serveri un Arduino tīmekļa serveri.
Šajā apmācībā mēs saskarsimies ar ESP8266 Wi-Fi moduli ar ARM7-LPC2148 mikrokontrolieri un izveidosim tīmekļa serveri, lai kontrolētu ar LPC2148 savienoto LED. Darbplūsma notiks šādi:
- Nosūtiet AT komandas no LPC2148 uz ESP8266, lai konfigurētu ESP8266 AP režīmā
- Savienojiet klēpjdatoru vai datoru Wi-Fi ar ESP8266 piekļuves punktu
- Izveidojiet HTML tīmekļa lapu personālajā datorā ar ESP8266 tīmekļa servera piekļuves punkta IP adresi
- Izveidojiet programmu LPC2148, lai vadītu gaismas diode atbilstoši vērtībai, kas saņemta no ESP8266
Ja esat pilnīgi jauns ESP8266 Wi-Fi modulis, apmeklējiet tālāk norādītās saites, lai iepazītos ar ESP8266 Wi-Fi moduli.
- Darba sākšana ar ESP8266 Wi-Fi uztvērēju (1. daļa)
- Darba sākšana ar ESP8266 (2. daļa): AT komandu izmantošana
- Darba sākšana ar ESP8266 (3. daļa): ESP8266 programmēšana ar Arduino IDE un tās atmiņas mirgošana
Nepieciešamās sastāvdaļas
Aparatūra:
- ARM7-LPC2148
- ESP8266 Wi-Fi modulis
- FTDI (no USB uz UART TTL)
- LED
- 3.3V sprieguma regulatora IC
- Maizes dēlis
Programmatūra:
- KEIL uVision
- Flash burvju rīks
- Špakteles
ESP8266 Wi-Fi modulis
ESP8266 ir zemu izmaksu plaši izmantots Wi-Fi modulis iegultajiem projektiem, kam nepieciešama zema 3,3 V jauda. Sērijveida saziņai un datu pārsūtīšanai starp ESP8266 un jebkuru mikrokontrolleru, kam ir UART ports, tiek izmantoti tikai divi vadi TX un RX.
ESP8266 Wi-Fi moduļa tapu diagramma
- GND, zeme (0 V)
- TX, pārsūtīt datu bitu X
- GPIO 2, vispārējas nozīmes ievade / izeja Nr. 2
- CH_PD, mikroshēmas izslēgšana
- GPIO 0, vispārējas nozīmes ievade / izeja Nr. 0
- RST, Atiestatīt
- RX, saņemt datu bitu X
- VCC, spriegums (+3,3 V)
ESP8266 shēmas plates iestatīšana
ESP8266 nepieciešama pastāvīga 3,3 V barošana, un tas nav draudzīgs maizes dēlim. Tāpēc mūsu iepriekšējā apmācībā par ESP8266 mēs izveidojām shēmu ESP8266 ar 3,3 V sprieguma regulatoru, RESET spiedpogu un džempera iestatīšanu pārslēgšanas režīmiem (AT komanda vai zibspuldzes režīms). To var arī iestatīt uz maizes dēļa, neizmantojot perf board.
Šeit mēs pielodējām visus komponentus uz maizes dēļa, lai izveidotu savu ESP8266 Wi-Fi dēli
Uzziniet ESP8266 saskarni ar dažādiem mikrokontrolleriem, izmantojot šādas saites:
- Darba sākšana ar ESP8266 (3. daļa): ESP8266 programmēšana ar Arduino IDE un tās atmiņas mirgošana
- ESP8266 savienošana ar STM32F103C8: Web servera izveide
- E-pasta ziņojumu sūtīšana, izmantojot MSP430 Launchpad un ESP8266
- Saskarne ESP8266 ar PIC16F877A mikrokontrolleru
- IOT bāzēta atkritumu tvertnes uzraudzība, izmantojot Arduino un ESP8266
Visus uz ESP8266 balstītos projektus var atrast šeit.
LPC2148 savienošana ar ESP8266 sērijveida saziņai
Lai saskarni ESP8266 savienotu ar LPC2148, mums ir jāizveido UART sērijveida sakari starp šīm divām ierīcēm, lai nosūtītu AT komandas no LPC2148 uz ESP8266, lai konfigurētu ESP8266 Wi-Fi moduli. Lai uzzinātu vairāk par ESP8266 AT komandām, noklikšķiniet uz saites.
Tātad, lai izmantotu UART sakarus LPC2148, mums ir jāinicializē UART ports LPC2148. LPC2148 ir divas iebūvētas UART porti (UART0 un UART1).
UART piespraudes LPC2148
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
Inicializē UART0 LPC2148
Tā kā mēs zinām, ka LPC2148 tapas ir vispārējas nozīmes tapas, tāpēc mums UART0 izmantošanai jāizmanto PINSEL0 reģistrs. Pirms inicializācijas UART0 informē par šiem UART reģistriem, kas izmantoti LPC2148 UART funkcijas izmantošanai.
UART reģistrē LPC2148
Zemāk esošajā tabulā parādīti daži svarīgi reģistri, kas izmantoti programmēšanā. Turpmākajās apmācībās mēs īsumā redzēsim citus reģistrus, kas tiek izmantoti UART LPC2148.
x-0 UART0 un x-1 UART1:
REĢISTRĒTIES |
REĢISTRĒT VĀRDU |
LIETOT |
UxRBR |
Saņemt bufera reģistru |
Satur nesen saņemto vērtību |
UxTHR |
Pārraides turēšanas reģistrs |
Satur pārsūtāmos datus |
UxLCR |
Līnijas vadības reģistrs |
Satur UART rāmja formātu (datu bitu skaits, stop bits) |
UxDLL |
Dalītāja fiksators LSB |
USB ātruma ģeneratora vērtības LSB |
UxDLM |
Dalītāja fiksators MSB |
UBB ātruma ģeneratora vērtības MSB |
UXIER |
Pārtraukt iespējot reģistru |
To izmanto, lai iespējotu UART0 vai UART1 pārtraukuma avotus |
UxIIR |
Pārtraukt identifikācijas reģistru |
Tas satur statusa kodu, kuram ir prioritāte un gaidāmo pārtraukumu avots |
Shēmas shēma un savienojumi
Savienojumi starp LPC2148, ESP8266 un FTDI ir parādīti zemāk
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
ESP8266 baro, izmantojot 3,3 V sprieguma regulatoru, un FTDI un LPC2148 baro no USB.
Kāpēc FTDI ir šeit?Šajā apmācībā mēs esam pievienojuši FTDI RX tapu (no USB uz UART TTL) ESP8266 TX tapai, kas ir tālāk savienota ar LPC2148 RX tapu, lai mēs varētu redzēt ESP8266 moduļa atbildi, izmantojot jebkuru termināla programmatūru, piemēram, špakteli, Arduino IDE. Bet tam iestatiet datu pārraides ātrumu atbilstoši ESP8266 Wi-Fi moduļa datu pārraides ātrumam. (Mana Bauda likme ir 9600).
Darbības, kas saistītas ar UART0 programmēšanu LPC2148 saskarnei ESP8266
Tālāk ir norādītas programmēšanas darbības, lai savienotu ESP8266 ar LPC2148, kas padarīs to saderīgu ar IoT.
1. solis: - Vispirms mums ir jāinicializē UART0 TX un RX tapas PINSEL0 reģistrā.
(P0.0 kā TX un P0.1 kā RX) PINSEL0 = PINSEL0 - 0x00000005;
2. solis: - Nākamais U0LCR (līnijas vadības reģistrs), iestatiet DLAB (dalītāja fiksatora piekļuves bits) uz 1, jo tas viņiem ļauj, un pēc tam iestatiet apstāšanās bitu skaitu kā 1 un datu rāmja garumu - 8 bitu.
U0LCR = 0x83;
3. solis: - Tagad ir svarīgi atzīmēt U0DLL un U0DLM vērtību iestatīšanu atkarībā no PCLK vērtības un vēlamā datu pārraides ātruma. Parasti ESP8266 mēs izmantojam 9600 bitu pārraides ātrumu. Tātad, redzēsim, kā UART0 iestatīt 9600 bitu pārraides ātrumu.
Formula pārraides ātruma aprēķināšanai:
Kur, PLCK: perifērijas pulkstenis frekvencē (MHz)
U0DLM, U0DLL: Bauda ātruma ģeneratora dalītāju reģistri
MULVAL, DIVADDVAL: Šie reģistri ir frakciju ģeneratoru vērtības
Bauda ātrumam 9600 ar PCLK = 15MHZ
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97,65
Tātad U0DLM = 0, un mēs iegūstam U0DLL = 97 (frakcija nav atļauta)
Tāpēc mēs izmantojam šādu kodu:
U0DLM = 0x00; U0DLL = 0x61; (Heksadecimālā vērtība 97)
4. solis: - Visbeidzot, mums LCR jāatspējo DLA (Divisor Latch Access) kā atspējota vērtība 0.
Tātad mums ir
U0LCR & = 0x0F;
5. solis: - Lai pārsūtītu rakstzīmi, ielādējiet nosūtāmo baitu U0THR un pagaidiet, līdz tiek pārsūtīts baits, par ko liecina THRE kļūst AUGSTS.
void UART0_TxChar (char ch) { U0THR = ch; kamēr ((U0LSR & 0x40) == 0); }
6. solis: - Stīgu pārsūtīšanai tiek izmantota funkcija zemāk. Lai sūtītu virknes datus pa vienam, mēs izmantojām rakstzīmju funkciju no augšas.
void UART0_SendString (char * str) { uint8_t i = 0; while (str! = '\ 0') { UART0_TxChar (str); i ++; } }
7. solis: - Lai saņemtu virkni, šeit tiek izmantota pakalpojuma rutīnas pārtraukšanas funkcija, jo ESP8266 Wi-Fi modulis pārsūtīs datus atpakaļ uz LPC2148 RX kontaktu ikreiz, kad mēs nosūtīsim komandu AT vai kad ESP8266 nosūta datus uz LPC2148, tāpat kā mēs sūtām datus ESP8266 tīmekļa serverim.
Piemērs: Kad mēs nosūtām AT komandu uz ESP8266 no LPC2148 (“AT \ r \ n”), mēs saņemam atbildi “OK” no Wi-Fi moduļa.
Tāpēc mēs šeit izmantojam pārtraukumu, lai pārbaudītu vērtību, kas saņemta no ESP8266 Wi-Fi moduļa, jo ISR pārtraukuma pakalpojumu rutīnai ir visaugstākā prioritāte.
Tāpēc ikreiz, kad ESP8266 nosūta datus uz LPC2148 RX kontaktu, tiek iestatīts pārtraukums un tiek izpildīta ISR funkcija.
8. solis: - lai iespējotu UART0 pārtraukumus, izmantojiet šādu kodu
VICintEnable ir vektoru pārtrauc ļaut reģistru izmanto, lai ļautu pārtraukt par UART0.
VICIntEnable - = (1 << 6);
VICVecCnt10 ir vektoru pārtraukt kontroles reģistru, kas piešķir slots UART0.
VICVectCntl0 = (1 << 5) - 6;
Pēc tam VICVectaddr0 tiek vektorizēts pārtraukumu adrešu reģistrs, kuram ir pārtraukuma pakalpojuma ikdienas ISR adrese.
VICVectAddr0 = (neparakstīts) UART0_ISR;
Tad mums jāpiešķir pārtraukums RBR saņemšanas bufera reģistram. Tātad sadaļā Interrupt enable register (U0IER) mēs iestatījām RBR. Tā kā tiek pārtraukta pakalpojuma kārtība (ISR), kad mēs saņemam datus.
U0IER = IER_RBR;
Visbeidzot, mums ir ISR funkcija, kurai jāveic noteikts uzdevums, kad mēs saņemam datus no ESP8266 Wi-Fi moduļa. Šeit mēs tikko nolasījām saņemto vērtību no ESP8266, kas atrodas U0RBR, un saglabājam šo vērtību UART0_BUFFER. Visbeidzot ISR beigās VICVectAddr jāiestata ar nulles vai manekena vērtību.
void UART0_ISR () __irq { neparakstīta char IIRValue; IIRValue = U0IIR; IIRValue >> = 1; IIRValue & = 0x02; ja (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; ja (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
9. solis: - Tā kā ESP8266 Wi-Fi modulis jāiestata AP režīmā, mums jānosūta respektētās AT komandas no LPC2148, izmantojot funkciju UART0_SendString () .
Zemāk ir minētas AT komandas, kas no LPC2148 tiek nosūtītas uz ESP8266. Pēc katras AT komandas nosūtīšanas ESP8266 atbild ar “OK”
1. Nosūta AT uz ESP8266
UART0_SendString ("AT \ r \ n"); kavēšanās_ms (3000);
2. Nosūta AT + CWMODE = 2 (ESP8266 iestatīšana AP režīmā).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); kavēšanās_ms (3000);
3. Nosūta AT + CIFSR (lai saņemtu AP IP)
UART0_SendString ("AT + CIFSR \ r \ n"); kavēšanās_ms (3000);
4. Nosūta AT + CIPMUX = 1 (Mutliple savienojumiem)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); kavēšanās_ms (3000);
5. Nosūta AT + CIPSERVER = 1,80 (ESP8266 SERVER IESPĒJAMI ar ATVĒRTO OSTU)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); kavēšanās_ms (3000);
Hex faila programmēšana un mirgošana uz LPC2148
Lai ieprogrammētu ARM7-LPC2148, mums ir nepieciešams Keil uVision un Flash Magic rīks. Lai programmētu ARM7 Stick, izmantojot mikro USB portu, šeit tiek izmantots USB kabelis. Mēs rakstām kodu, izmantojot Keil, un izveidojam hex failu, un pēc tam HEX fails tiek flashed uz ARM7 stick, izmantojot Flash Magic. Lai uzzinātu vairāk par keil uVision un Flash Magic instalēšanu un to izmantošanu, sekojiet saitei Darba sākšana ar ARM7 LPC2148 mikrokontrolleru un ieprogrammējiet to, izmantojot Keil uVision.
Pilna programma ir sniegta apmācības beigās.
Piezīme: Augšupielādējot HEX failu LPC2148, nedrīkst darbināt ESP8266 Wi-Fi moduli un FTDI moduli, kas ir savienots ar LPC2148.
LED vadīšana, izmantojot ESP8266 IoT Webserver ar LPC2148
1. solis: - Pēc HEX faila augšupielādes LPC2148 pievienojiet FTDI moduli datoram, izmantojot USB kabeli, un atveriet špakteles termināļa programmatūru.
Atlasiet Serial un pēc tam atlasiet COM portu atbilstoši savam datoram vai LAPTOP mine (COM3). Pārraides ātrums ir 9600.
2. solis: - Tagad atiestatiet ESP8266 Wi-Fi moduli vai vienkārši IESLĒGT un IZSLĒGT vēlreiz, špakteles terminālis parādīs ESP8266 Wi-Fi moduļa atbildi, kā parādīts zemāk.
3. solis: - Tagad LPC2148 nospiediet pogu RESET. Pēc tam LPC2148 sāk sūtīt AT komandas uz ESP8266. To reakciju mēs varam redzēt špakteles terminālī.
4. solis: - Kā redzat attēlā virs ESP8266, ir iestatīts 2. REŽĪMS, kas ir AP režīms, un APIP adrese ir 192.168.4.1. Ievērojiet šo adresi, jo šī adrese tiks stingri kodēta tīmekļa vietnes HTML kodā, lai kontrolētu ar LPC2148 savienoto LED.
Svarīgi : Kad ESP8266 ir AP režīmā, personālais dators ir jāpievieno ESP8266 AP. Skatiet attēlu zem mana ESP8266 moduļa, kurā redzams AP ESP_06217B vārdā (tas ir atvērts un tam nav paroles).
5. solis: - Pēc datora pievienošanas ESP8266 AP, atveriet bloknotu un nokopējiet un ielīmējiet šīs HTML programmas tīmekļa lapu. Noteikti nomainiet APIP adresi atbilstoši savam ESP8266 Wi-Fi modulim
Laipni lūdzam Circuit Digest
ESP8266 Saskarne ar LPC2148: Web servera izveide, lai kontrolētu LED
LED ON LED izslēgtsŠajā HTML lapā mēs esam izveidojuši divas hipersaites pogas, lai ieslēgtu un izslēgtu LED no tīmekļa lapas.
Visbeidzot, notepad dokumentu saglabājiet kā.html paplašinājumu
Tīmekļa lapa tīmekļa pārlūkprogrammā tiks parādīta šādi.
Šeit adrese ir AP IP adrese 192.168.4.1, un mēs nosūtām vērtības @ un%, lai ieslēgtu un izslēgtu LED, izmantojot šo loģiku zemāk LPC2148.
while (1) { if (uart0_count! = 0) { COMMAND = UART0_BUFFER; if (COMMAND == LEDON) // Loģika, lai LED ieslēgtu vai izslēgtu atkarībā no saņemtās vērtības no ESP8266 { IOSET1 = (1 << 20); // Iestata OUTPUT HIGH delay_ms (100); } cits, ja (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // Iestata OUTPUT LOW delay_ms (100); } } }
Tādā veidā ierīci var vadīt attālināti, izmantojot ESP8266 un ARM7 mikrokontrolleru LPC2148. Pilns kods un paskaidrojuma video ir sniegts zemāk.