- Kinakailangan ang Mga Bahagi
- Module ng Wi-Fi ng ESP8266
- Pagkonekta sa LPC2148 sa ESP8266 para sa Serial Communication
- Circuit Diagram at Mga Koneksyon
- Mga hakbang na kasangkot sa pag-program ng UART0 sa LPC2148 para sa pag-interface ng ESP8266
- Pagkontrol sa LED gamit ang ESP8266 IoT Webserver gamit ang LPC2148
Ang ESP8266 Wi-Fi transceiver ay nagbibigay ng isang paraan upang ikonekta ang isang microcontroller sa network. Malawakang ginagamit ito sa mga proyekto ng IoT sapagkat ito ay mura, maliit at madaling gamitin. Ginamit namin ito dati upang lumikha ng webserver gamit ang Raspberry webserver at Arduino webserver.
Sa tutorial na ito makikipag-ugnay kami sa isang module ng Wi-Fi ng ESP8266 gamit ang ARM7-LPC2148 microcontroller at lumikha ng isang webserver upang makontrol ang LED na konektado sa LPC2148. Ang daloy ng trabaho ay magiging ganito:
- Magpadala ng mga utos ng AT mula sa LPC2148 hanggang sa ESP8266 upang mai-configure ang ESP8266 sa AP mode
- Ikonekta ang laptop o computer Wi-Fi sa access point ng ESP8266
- Lumikha ng isang webpage na HTML sa PC na may access point IP address ng webserver ng ESP8266
- Lumikha ng isang programa para sa LPC2148 upang makontrol ang LED alinsunod sa halagang natanggap mula sa ESP8266
Kung ang iyong ganap na bago sa module ng Wi-Fi ng ESP8266 bisitahin ang mga link sa ibaba upang pamilyar sa module na Wi-Fi ng ESP8266.
- Pagsisimula sa ESP8266 Wi-Fi Transceiver (Bahagi 1)
- Pagsisimula sa ESP8266 (Bahagi 2): Paggamit ng Mga utos
- Pagsisimula sa ESP8266 (Bahagi 3): Programming ESP8266 sa Arduino IDE at Flashing nito Memory
Kinakailangan ang Mga Bahagi
Hardware:
- ARM7-LPC2148
- ESP8266 Wi-Fi Module
- FTDI (USB hanggang UART TTL)
- LED
- 3.3V Boltahe Regulator IC
- Breadboard
Software:
- KEIL uVision
- Flash Magic Tool
- Putty
Module ng Wi-Fi ng ESP8266
Ang ESP8266 ay isang murang gastos na malawak na ginamit na module ng Wi-Fi para sa mga naka-embed na proyekto na nangangailangan ng mababang lakas na 3.3V. Gumagamit lamang ito ng dalawang wires TX at RX para sa serial na komunikasyon at paglilipat ng data sa pagitan ng ESP8266 at anumang microcontroller na mayroong UART port.
Pin Diagram para sa module na Wi-Fi ng ESP8266
- GND, Ground (0 V)
- TX, Ipadala ang data na bit X
- GPIO 2, Pangkalahatang-layunin na input / output Bilang 2
- CH_PD, Chip power-down
- GPIO 0, Pangkalahatang-layunin na input / output No. 0
- RST, I-reset
- RX, Tumanggap ng data bit X
- VCC, Boltahe (+3.3 V)
Pagse-set up ng ESP8266 Circuit Board
Nangangailangan ang ESP8266 ng isang pare-pareho na supply ng 3.3V at hindi ito friendly sa breadboard. Kaya sa aming nakaraang tutorial sa ESP8266, gumawa kami ng circuit board para sa ESP8266 na may 3.3V Voltage regulator, isang RESET push button at jumper setup para sa switching mode (AT command o flash mode). Maaari rin itong i-setup sa breadboard nang hindi gumagamit ng perf board.
Dito naming hinihinang ang lahat ng mga bahagi sa breadboard upang makagawa ng aming sariling ESP8266 Wi-Fi board
Alamin ang pag-interfaced ng ESP8266 sa iba't ibang mga microcontroller sa pamamagitan ng pagsunod sa mga link sa ibaba:
- Pagsisimula sa ESP8266 (Bahagi 3): Programming ESP8266 sa Arduino IDE at Flashing nito Memory
- Pagkonekta sa ESP8266 sa STM32F103C8: Lumilikha ng isang Webserver
- Pagpapadala ng Email Gamit ang MSP430 Launchpad at ESP8266
- Ang interface ng ESP8266 sa PIC16F877A Microcontroller
- IOT Batay sa Pagsubaybay sa Dumpster gamit ang Arduino & ESP8266
Ang lahat ng mga proyekto na nakabatay sa ESP8266 ay matatagpuan dito.
Pagkonekta sa LPC2148 sa ESP8266 para sa Serial Communication
Upang mai-interface ang ESP8266 sa LPC2148 dapat tayong magtaguyod ng isang serial na komunikasyon sa UART sa pagitan ng dalawang aparatong ito upang magpadala ng mga utos ng AT mula sa LPC2148 hanggang sa ESP8266 upang mai-configure ang module ng Wi-Fi ng ESP8266. Upang malaman ang higit pa tungkol sa mga utos ng ESP8266 AT sundin ang link.
Kaya upang magamit ang komunikasyon ng UART sa LPC2148 kailangan nating gawing simula ang UART port sa LPC2148. Ang LPC2148 ay may dalawang inbuilt na UART port (UART0 at UART1).
UART Pins sa LPC2148
UART_Port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
Inisyal ang UART0 sa LPC2148
Tulad ng alam natin na ang mga pin ng LPC2148 ay mga pangkalahatang layunin na pin kaya kailangan nating gumamit ng rehistro ng PINSEL0 para sa paggamit ng UART0. Bago simulan ang UART0 ipaalam ang tungkol sa mga rehistro ng UART na ginamit sa LPC2148 para sa paggamit ng tampok na UART.
Mga Rehistro ng UART sa LPC2148
Ipinapakita ng talahanayan sa ibaba ang ilang mahahalagang rehistro na ginamit sa pagprograma. Sa aming mga hinaharap na mga tutorial makikita natin nang maikli ang tungkol sa iba pang mga rehistro na ginamit para sa UART sa LPC2148.
x-0 para sa UART0 at x-1 para sa UART1:
REGISTER |
REGISTER NAME |
PAGGAMIT |
UxRBR |
Makatanggap ng Rehistro ng Buffer |
Naglalaman ng Halagang Natanggap na Halaga |
UxTHR |
Ipadala ang Rehistro ng Hawak |
Naglalaman ng Data na ililipat |
UxLCR |
Pagrehistro sa Line Control |
Naglalaman ng format na frame ng UART (Hindi sa Mga Data Bits, Itigil ang bit) |
UxDLL |
Divisor Latch LSB |
Ang LSB ng UART baud rate na halaga ng generator |
UxDLM |
Divisor Latch MSB |
Ang halaga ng generator ng MSB ng UART baud rate |
UxIER |
Makagambala Paganahin ang Rehistro |
Ginagamit ito upang paganahin ang mga mapagkukunang nagagambala ng UART0 o UART1 |
UxIIR |
Makagambala sa Rehistro ng Pagkakakilanlan |
Naglalaman ito ng code ng katayuan na may priyoridad at mapagkukunan ng mga nakabinbing pagkagambala |
Circuit Diagram at Mga Koneksyon
Ang mga koneksyon sa pagitan ng LPC2148, ESP8266 at FTDI ay ipinapakita sa ibaba
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
Ang ESP8266 ay pinalakas sa pamamagitan ng isang 3.3V voltage Regulator at ang FTDI & LPC2148 ay pinalakas mula sa USB.
Bakit nandito ang FTDI?Sa tutorial na ito, nakakonekta namin ang RX pin ng FTDI (USB sa UART TTL) sa pin ng ESP8266 TX na higit na konektado sa LPC2148 RX pin, upang makita namin ang tugon ng module na ESP8266 gamit ang anumang terminal software tulad ng masilya, Arduino IDE. Ngunit para sa pagtatakda ng rate ng baud ayon sa rate ng baud ng module na Wi-Fi ng ESP8266. (Ang Aking Baud Rate ay 9600).
Mga hakbang na kasangkot sa pag-program ng UART0 sa LPC2148 para sa pag-interface ng ESP8266
Nasa ibaba ang mga hakbang sa pagprograma upang ikonekta ang ESP8266 sa LPC2148 na gagawing tugma sa IoT.
Hakbang 1: - Una kailangan naming simulan ang mga pin ng UART0 TX & RX sa rehistro ng PINSEL0.
(P0.0 bilang TX at P0.1 bilang RX) PINSEL0 = PINSEL0 - 0x00000005;
Hakbang 2: - Susunod sa U0LCR (Pagrehistro ng Line Control), itakda ang DLAB (Divisor Latch Access Bit) sa 1 dahil pinapayagan ang mga ito at pagkatapos ay magtakda ng walang mga stop bits bilang 1 at haba ng frame ng data na 8-bit.
U0LCR = 0x83;
Hakbang 3: - Ngayon mahalagang hakbang na dapat tandaan ay upang itakda ang mga halaga ng U0DLL & U0DLM depende sa halaga ng PCLK at nais na rate ng baud. Karaniwan para sa ESP8266 gumagamit kami ng baud rate na 9600. Kaya't tingnan natin kung paano magtakda ng 9600 baud rate para sa UART0.
Formula para sa pagkalkula ng rate ng baud:
Kung saan, PLCK: Peripheral Clock sa Frequency (MHz)
U0DLM, U0DLL: Mga rehistro ng divider generator ng baud Rate
MULVAL, DIVADDVAL: Ang mga rehistro na ito ay mga halaga ng generator ng praksyon
Para sa Baud Rate 9600 sa PCLK = 15MHZ
MULVAL = 1 at DIVADDVAL = 0
256 * U0DLM + U0DLL = 97.65
Kaya U0DLM = 0 at nakukuha namin ang U0DLL = 97 (Hindi pinapayagan ang Fraction)
Kaya gumagamit kami ng sumusunod na code:
U0DLM = 0x00; U0DLL = 0x61; (Hexadecimal na halaga ng 97)
Hakbang 4: - Panghuli, dapat nating gawin na huwag paganahin ang DLA (Divisor Latch Access) na itinakda sa 0 sa LCR.
Kaya mayroon kaming
U0LCR & = 0x0F;
Hakbang 5: - Para sa Pagpapadala ng isang Character, i-load ang byte upang maipadala sa U0THR at maghintay hanggang maipadala ang byte, na ipinahiwatig ng THRE na naging HATAAS.
walang bisa ang UART0_TxChar (char ch) { U0THR = ch; habang ((U0LSR & 0x40) == 0); }
Hakbang 6: - Para sa Pagpapadala ng isang String, ginagamit ang pagpapaandar sa ibaba. Upang magpadala ng data ng string isa-isang ginamit namin ang pagpapaandar ng character mula sa itaas na hakbang.
walang bisa UART0_SendString (char * str) { uint8_t i = 0; habang (str! = '\ 0') { UART0_TxChar (str); ako ++; } }
Hakbang 7: - Para sa Pagtanggap ng isang string, ginagamit ang gumagambala na pagpapaandar na gawain sa serbisyo dito dahil ang isang module na Wi-Fi ng ESP8266 ay magpapadala ng data pabalik sa RX pin ng LPC2148 tuwing nagpapadala kami ng AT utos o tuwing ang isang ESP8266 ay nagpapadala ng data sa LPC2148, tulad ng ipinapadala namin data sa isang webserver ng ESP8266.
Halimbawa: Kapag nagpadala kami ng utos ng AT sa ESP8266 mula sa LPC2148 ("AT \ r \ n") pagkatapos ay makakakuha kami ng tugon na "OK" mula sa module na Wi-Fi.
Kaya gumagamit kami ng isang nakakagambala dito upang suriin ang halagang natanggap mula sa module na Wi-Fi ng ESP8266 habang ang ISR makagambala na gawain ay mayroong pinakamataas na priyoridad.
Kaya't tuwing ang isang ESP8266 ay nagpapadala ng data sa RX pin ng LPC2148 ang pagkagambala ay nakatakda at ang ISR na pagpapaandar ay naisakatuparan.
Hakbang 8: - Upang paganahin ang mga pagkagambala para sa UART0, gamitin ang sumusunod na code
Ang VICintEnable ay vectored makagambala paganahin ang rehistro na ginamit upang paganahin ang makagambala para sa UART0.
VICIntEnable - = (1 << 6);
Ang VICVecCnt10 ay vectored makagambala control register na naglalaan ng puwang para sa UART0.
VICVectCntl0 = (1 << 5) - 6;
Susunod na ang VICVectaddr0 ay naka- vector na makagambala sa rehistro ng address na mayroong nakakagambala na gawain na ISR address.
VICVectAddr0 = (unsigned) UART0_ISR;
Pagkatapos ay kailangan naming italaga ang makagambala para sa RBR Tumanggap ng rehistro ng buffer. Kaya't sa Nakagambala paganahin ang rehistro (U0IER) na itinakda namin para sa RBR. Kaya't ang nakakagambala na gawain sa serbisyo (ISR) ay tinawag kapag nakatanggap kami ng data.
U0IER = IER_RBR;
Sa wakas, mayroon kaming pagpapaandar na ISR na kailangang gawin ang ilang gawain kapag nakatanggap kami ng data mula sa ESP8266 Wi-Fi Module. Nabasa lamang namin dito ang natanggap na halaga mula sa ESP8266 na naroroon sa U0RBR at iimbak ang halagang iyon sa UART0_BUFFER. Sa wakas sa pagtatapos ng ISR ang VICVectAddr ay dapat itakda na may zero o halaga ng dummy.
walang bisa UART0_ISR () __irq { unsigned char IIRValue; IIRValue = U0IIR; IIRValue >> = 1; IIRValue & = 0x02; kung (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; kung (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
Hakbang 9: - Tulad ng dapat itakda sa module na AP ang module ng Wi-Fi ng ESP8266, kailangan naming ipadala ang respetadong mga utos na AT mula sa LPC2148 sa pamamagitan ng paggamit ng pagpapaandar ng UART0_SendString () .
Ang mga utos na AT na ipinadala sa ESP8266 mula sa LPC2148 ay nabanggit sa ibaba. Matapos ipadala ang bawat utos ng AT sa ESP8266 ay tumugon sa "OK"
1. Nagpadala ng AT sa ESP8266
UART0_SendString ("AT \ r \ n"); delay_ms (3000);
2. Ipinapadala SA + CWMODE = 2 (Pagtatakda ng ESP8266 sa AP mode).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); delay_ms (3000);
3. Ipinapadala SA + CIFSR (Para sa pagkuha ng IP ng AP)
UART0_SendString ("AT + CIFSR \ r \ n"); delay_ms (3000);
4. Ipinapadala SA + CIPMUX = 1 (Para sa Mga Koneksyon sa Mutliple)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); delay_ms (3000);
5. Nagpapadala SA + CIPSERVER = 1,80 (Para sa PAG-ENABLAR sa ESP8266 SERVER na may OPEN PORT)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); delay_ms (3000);
Programming at Flashing Hex File sa LPC2148
Upang Program ARM7-LPC2148 kailangan namin ng keV uVision at Flash Magic tool. Ginagamit ang isang USB Cable dito upang mai-program ang ARM7 Stick sa pamamagitan ng micro USB port. Nagsusulat kami ng code gamit ang Keil at lumikha ng isang hex file at pagkatapos ang HEX file ay na-flash sa ARM7 stick gamit ang Flash Magic. Upang malaman ang higit pa tungkol sa pag-install ng keil uVision at Flash Magic at kung paano gamitin ang mga ito sundin ang link na Nagsisimula Sa ARM7 LPC2148 Microcontroller at Program ito gamit ang Keil uVision.
Ang kumpletong programa ay ibinibigay sa pagtatapos ng tutorial.
Tandaan: Habang ina-upload ang HEX file sa LPC2148 hindi mo dapat pinapagana ang Module ng Wi-Fi ng ESP8266 at ang module na FTDI na konektado sa LPC2148.
Pagkontrol sa LED gamit ang ESP8266 IoT Webserver gamit ang LPC2148
Hakbang 1: - Pagkatapos mag-upload ng HEX file sa LPC2148, ikonekta ang module na FTDI sa PC sa pamamagitan ng USB cable at buksan ang putty terminal software.
Piliin ang Serial at pagkatapos Piliin ang COM port alinsunod sa iyong PC o sa akin ang LAPTOP ay (COM3). Ang baud rate ay 9600.
Hakbang 2: - Ngayon i-reset ang ESP8266 Wi-Fi Module o i-POWER OFF lang at POWER ON ulit ito, ipapakita ng masilya terminal ang tugon ng module na Wi-Fi ng ESP8266 tulad ng ipinakita sa ibaba. \
Hakbang 3: - Ngayon pindutin ang I-reset ang pindutan sa LPC2148. Pagkatapos nito ay nagsisimula nang magpadala ang LPC2148 ng mga AT na utos sa ESP8266. Maaari naming makita ang tugon ng na sa masilya terminal.
Hakbang 4: - Tulad ng nakikita mo sa imahe sa itaas ang ESP8266 ay nakatakda sa MODE 2 na AP mode at ang address ng APIP ay 192.168.4.1. Tandaan ang address na ito dahil ang address na ito ay magiging hard coded sa webpage HTML code upang makontrol ang LED na konektado sa LPC2148.
Mahalaga : Kapag ang ESP8266 ay nasa AP mode dapat mong ikonekta ang iyong PC sa ESP8266 AP. Tingnan ang imahe sa ibaba ng aking module na ESP8266 ay nagpapakita ng AP sa pangalan ng ESP_06217B (Bukas ito at walang password).
Hakbang 5: - Matapos ikonekta ang PC sa ESP8266 AP, magbukas ng isang notepad at kopyahin ang sumusunod na webpage ng programa ng HTML. Tiyaking baguhin ang address ng APIP alinsunod sa iyong module na Wi-Fi ng ESP8266
Maligayang pagdating sa Circuit Digest
Ang ESP8266 Interfacing sa LPC2148: Lumilikha ng Webserver upang makontrol ang isang LED
LED ON LED OFFSa pahinang HTML na ito, gumawa kami ng dalawang mga naka-hyperlink na pindutan upang I-on at i-off ang LED mula sa webpage.
Panghuli i- save ang dokumento ng notepad bilang.html extension
Ipapakita ang webpage tulad ng nasa ibaba sa web browser.
Narito ang address ay ang AP IP address 192.168.4.1 at nagpapadala kami ng mga halagang @ at% upang i-ON at I-OFF ang LED sa pamamagitan ng paggamit ng lohika na ito sa ibaba sa LPC2148.
habang (1) { kung (uart0_count! = 0) { KOMANDI = UART0_BUFFER; kung (UTOS == LEDON) // Logic upang itakda ang LED ON o OFF depende sa natanggap na halaga mula sa ESP8266 { IOSET1 = (1 << 20); // Nagtatakda ng OUTPUT HIGH delay_ms (100); } iba pa kung (KOMANDA == LEDOFF) { IOCLR1 = (1 << 20); // Sets OUTPUT LOW delay_ms (100); } } }
Ito ay kung paano makokontrol ang isang aparato nang malayuan gamit ang ESP8266 at ARM7 microcontroller LPC2148. Ang kumpletong video ng code at paliwanag ay ibinibigay sa ibaba.