- Būtini komponentai
- ESP8266 „Wi-Fi“ modulis
- LPC2148 prijungimas prie ESP8266 nuosekliam ryšiui
- Grandinės schema ir jungtys
- Veiksmai, susiję su UART0 programavimu LPC2148 sąsajoje ESP8266
- Šviesos diodų valdymas naudojant ESP8266 IoT tinklo serverį su LPC2148
ESP8266 „Wi-Fi“ siųstuvas-imtuvas suteikia galimybę prijungti mikrovaldiklį prie tinklo. Jis plačiai naudojamas daiktų interneto projektuose, nes yra pigus, mažytis ir lengvai naudojamas. Anksčiau jį naudojome kurdami interneto serverį naudodami „Raspberry“ ir „Arduino“ serverius.
Šioje pamokoje mes susiesime ESP8266 „Wi-Fi“ modulį su „ARM7-LPC2148“ mikrovaldikliu ir sukursime interneto serverį, kuris valdys prie LPC2148 prijungtą šviesos diodą. Darbo eiga bus tokia:
- Siųskite AT komandas iš LPC2148 į ESP8266, kad sukonfigūruotumėte ESP8266 AP režimu
- Prijunkite nešiojamąjį kompiuterį arba kompiuterio „Wi-Fi“ prieigą prie ESP8266 prieigos taško
- Sukurkite HTML tinklalapį asmeniniame kompiuteryje su ESP8266 tinklo serverio prieigos taško IP adresu
- Sukurkite programą LPC2148, kad valdytumėte šviesos diodą pagal iš ESP8266 gautą vertę
Jei esate visiškai naujas ESP8266 „Wi-Fi“ modulis, apsilankykite toliau pateiktose nuorodose ir susipažinkite su „ESP8266 Wi-Fi“ moduliu.
- Darbo su ESP8266 „Wi-Fi“ imtuvu (1 dalis) pradžia
- Darbo su ESP8266 (2 dalis) pradžia: AT komandų naudojimas
- Darbo su ESP8266 pradžia (3 dalis): ESP8266 programavimas su „Arduino IDE“ ir jos atminties mirksėjimas
Būtini komponentai
Techninė įranga:
- ARM7-LPC2148
- ESP8266 „Wi-Fi“ modulis
- FTDI (iš USB į UART TTL)
- LED
- 3,3 V įtampos reguliatoriaus IC
- Bandomoji Lenta
Programinė įranga:
- KEIL uVision
- „Flash Magic“ įrankis
- Glaistas
ESP8266 „Wi-Fi“ modulis
ESP8266 yra nebrangus plačiai naudojamas „Wi-Fi“ modulis įterptiesiems projektams, kuriam reikalinga maža 3,3 V galia. Jis naudoja tik du laidus TX ir RX nuosekliam ryšiui ir duomenų perdavimui tarp ESP8266 ir bet kurio mikrovaldiklio, turinčio UART prievadą.
ESP8266 „Wi-Fi“ modulio kaiščių schema
- BND, žemė (0 V)
- TX, perduoti X duomenų bitą
- GPIO 2, bendrosios paskirties įvestis / išvestis Nr. 2
- CH_PD, lusto išjungimas
- GPIO 0, bendrosios paskirties įvestis / išvestis Nr. 0
- RST, nustatyti iš naujo
- RX, gauti duomenų bitą X
- VCC, įtampa (+3,3 V)
ESP8266 grandinės plokštės nustatymas
ESP8266 reikia nuolat tiekti 3,3 V įtampą ir tai nėra draugiška duonai. Taigi ankstesnėje ESP8266 pamokoje mes sukūrėme ESP8266 plokštę su 3,3 V įtampos reguliatoriumi, RESET mygtuku ir jungiklio nustatymu perjungimo režimams (AT komanda arba blykstės režimas). Tai taip pat galima nustatyti ant duonos lentos nenaudojant perf lentos.
Čia mes sulitavome visus komponentus ant plokštės, kad galėtume sukurti savo „ESP8266“ „Wi-Fi“ plokštę
Sužinokite apie ESP8266 sąsają su įvairiais mikrovaldikliais, atlikdami šias nuorodas:
- Darbo su ESP8266 pradžia (3 dalis): ESP8266 programavimas su „Arduino IDE“ ir jos atminties mirksėjimas
- ESP8266 prijungimas prie STM32F103C8: internetinio serverio sukūrimas
- El. Pašto siuntimas naudojant „MSP430 Launchpad“ ir „ESP8266“
- ESP8266 sąsaja su PIC16F877A mikrovaldikliu
- IOT pagrįstas savivartės stebėjimas naudojant „Arduino“ ir ESP8266
Visus ESP8266 pagrįstus projektus galite rasti čia.
LPC2148 prijungimas prie ESP8266 nuosekliam ryšiui
Norėdami susieti ESP8266 su LPC2148, turime užmegzti UART nuoseklųjį ryšį tarp šių dviejų įrenginių, norėdami siųsti AT komandas iš LPC2148 į ESP8266, kad sukonfigūruotumėte „ESP8266 Wi-Fi“ modulį. Norėdami sužinoti daugiau apie ESP8266 AT komandas, spustelėkite nuorodą.
Taigi, norėdami naudoti UART ryšį LPC2148, turime inicijuoti UART prievadą LPC2148. LPC2148 turi du integruotus UART prievadus (UART0 ir UART1).
UART kontaktai LPC2148
UART_port |
TX_PIN |
RX_PIN |
UART0 |
P0.0 |
P0.1 |
UART1 |
P0.8 |
P0.9 |
Inicijuojama UART0 LPC2148
Kadangi žinome, kad LPC2148 kaiščiai yra bendrosios paskirties kaiščiai, todėl naudodami UART0 turime naudoti PINSEL0 registrą. Prieš inicijuodamas UART0, sužinos apie šiuos UART registrus, naudojamus LPC2148 naudojant UART funkciją.
UART registruojasi LPC2148
Žemiau esančioje lentelėje pateikiami keli svarbūs registrai, naudojami programuojant. Mūsų būsimose mokymo programose trumpai pamatysime apie kitus registrus, naudojamus UART, LPC2148.
x-0 UART0 ir x-1 UART1:
REGISTRUOTIS |
REGISTRUOTI VARDĄ |
NAUDOTI |
UxRBR |
Gaukite buferio registrą |
Turi neseniai gautą vertę |
UxTHR |
Perdavimo holdingo registras |
Turi būti perduodami duomenys |
UxLCR |
Linijos valdymo registras |
Turi UART rėmelio formatą (duomenų bitų skaičius, sustabdymo bitas) |
UxDLL |
Skirstytuvo užraktas LSB |
LSB UART perdavimo greičio generatoriaus vertės |
UxDLM |
Skirstytuvo fiksatorius MSB |
UART perdavimo greičio generatoriaus vertės MSB |
Nenuobodžiaujantis |
Pertraukti Įjungti registrą |
Jis naudojamas įgalinti UART0 arba UART1 pertraukimo šaltinius |
UxIIR |
Nutraukti identifikavimo registrą |
Jame yra būsenos kodas, kurio prioritetas ir laukiančių pertraukimų šaltinis |
Grandinės schema ir jungtys
Jungtys tarp LPC2148, ESP8266 ir FTDI parodytos žemiau
LPC2148 |
ESP8266 |
FTDI |
TX (P0.0) |
RX |
NC |
RX (P0.1) |
TX |
RX |
ESP8266 maitinamas per 3,3 V įtampos reguliatorių, o FTDI ir LPC2148 maitinamas iš USB.
Kodėl FTDI yra čia?Šioje pamokoje mes prijungėme FTDI RX kaištį (iš USB į UART TTL) prie ESP8266 TX kaiščio, kuris toliau sujungtas su LPC2148 RX kaiščiu, kad galėtume pamatyti ESP8266 modulio atsaką naudodami bet kokią terminalo programinę įrangą, pvz., Glaistą, „Arduino IDE“. Bet tam nustatykite duomenų perdavimo greitį pagal ESP8266 „Wi-Fi“ modulio perdavimo greitį. (Mano perdavimo sparta yra 9600).
Veiksmai, susiję su UART0 programavimu LPC2148 sąsajoje ESP8266
Toliau pateikiami programavimo veiksmai, skirti prijungti ESP8266 su LPC2148, todėl jis bus suderinamas su IoT.
1 žingsnis: - Pirmiausia turime inicijuoti UART0 TX ir RX kaiščius PINSEL0 registre.
(P0.0 kaip TX ir P0.1 kaip RX) PINSEL0 = PINSEL0 - 0x00000005;
2 žingsnis: - Toliau U0LCR („Line Control Register“) nustatykite DLAB („Divisor Latch Access Bit“) į 1, nes tai leidžia jiems, tada nustatykite sustabdymo bitų skaičių kaip 1, o duomenų kadro ilgis - 8 bitai.
U0LCR = 0x83;
3 žingsnis: - Dabar reikia atkreipti dėmesį į tai, kad reikia nustatyti U0DLL ir U0DLM reikšmes, atsižvelgiant į PCLK vertę ir norimą perdavimo greitį. Paprastai ESP8266 mes naudojame 9600 perdavimo spartą. Taigi pažiūrėkime, kaip nustatyti 9600 perdavimo greitį UART0.
Baudos spartos skaičiavimo formulė:
Kur, PLCK: periferinis laikrodis dažniu (MHz)
U0DLM, U0DLL: perdavimo spartos generatoriaus daliklio registrai
MULVAL, DIVADDVAL: Šie registrai yra trupmenos generatoriaus vertės
9600 perdavimo spartai, kai PCLK = 15 MHz
MULVAL = 1 & DIVADDVAL = 0
256 * U0DLM + U0DLL = 97,65
Taigi U0DLM = 0 ir gausime U0DLL = 97 (trupmena neleidžiama)
Taigi mes naudojame šį kodą:
U0DLM = 0x00; U0DLL = 0x61; (97 šešioliktainė vertė)
4 žingsnis: - Galiausiai turime nustatyti, kad DLA („Divisor Latch Access“) išjungta LCR.
Taigi mes turime
U0LCR & = 0x0F;
5 žingsnis: - Jei norite perduoti simbolį, įkelkite baitą, kuris bus siunčiamas U0THR, ir palaukite, kol bus perduotas baitas, o tai rodo THRE tampa aukštas.
negaliojantis UART0_TxChar (char ch) { U0THR = ch; o ((U0LSR & 0x40) == 0); }
6 žingsnis: - Stygoms perduoti naudojama žemiau pateikta funkcija. Norėdami išsiųsti eilutės duomenis po vieną, naudojome simbolių funkciją iš viršaus.
negaliojantis UART0_SendString (char * str) { uint8_t i = 0; while (str! = '\ 0') { UART0_TxChar (str); i ++; } }
7 žingsnis: - Norint gauti eilutę, čia naudojama pertraukimo paslaugos įprasta funkcija, nes ESP8266 „Wi-Fi“ modulis perduos duomenis atgal į LPC2148 RX kaištį, kai tik mes siunčiame komandą AT arba kai ESP8266 siunčia duomenis į LPC2148, kaip mes siunčiame. duomenis į ESP8266 tinklo serverį.
Pavyzdys: Kai mes išsiųsime AT komandą ESP8266 iš LPC2148 („AT \ r \ n“), mes gausime atsakymą „Gerai“ iš „Wi-Fi“ modulio.
Taigi mes naudojame pertraukimą, kad patikrintume vertę, gautą iš „ESP8266“ „Wi-Fi“ modulio, nes ISR pertraukimo paslaugų rutina turi didžiausią prioritetą.
Taigi, kai tik ESP8266 siunčia duomenis į LPC2148 RX kaištį, nustatomas pertraukimas ir ISR funkcija vykdoma.
8 žingsnis: - Norėdami įjungti UART0 pertraukimus, naudokite šį kodą
„ VICintEnable“ yra vektorizuotas pertraukimo įgalinimo registras, naudojamas įgalinti UART0 pertraukimą.
VICIntEnable - = (1 << 6);
VICVecCnt10 yra Vektorius nutraukti kontrolės registrą, kad skiria lizdas UART0.
VICVectCntl0 = (1 << 5) - 6;
Tada „ VICVectaddr0“ yra vektorizuotas pertraukimo adresų registras, turintis pertraukimo tarnybos įprastos ISR adresą.
VICVectAddr0 = (nepasirašytas) UART0_ISR;
Tada mes turime priskirti RBR gavimo buferio registro pertraukimą. Taigi, pertraukimo įgalinimo registre (U0IER) nustatėme RBR. Taigi, kai gauname duomenis, iškviečiama ta pertraukiamoji tarnyba (ISR).
U0IER = IER_RBR;
Galiausiai turime ISR funkciją, kuri turi atlikti tam tikrą užduotį, kai gauname duomenis iš ESP8266 „Wi-Fi“ modulio. Čia mes tiesiog perskaitėme gautą vertę iš ESP8266, esančią U0RBR, ir išsaugome šią vertę UART0_BUFFER. Galiausiai ISR pabaigoje VICVectAddr turėtų būti nustatyta nulinė arba manekeno vertė.
void UART0_ISR () __irq { nepasirašyta char IIRValue; IIRVertė = U0IIR; IIRVertė >> = 1; „IIRValue“ = = 0x02; jei (IIRValue == IIR_RDA) { UART_BUFFER = U0RBR; uart0_count ++; if (uart0_count == BUFFER_SIZE) { uart0_count = 0; } } VICVectAddr = 0x0; }
9 žingsnis: - Kadangi ESP8266 „Wi-Fi“ modulis turėtų būti nustatytas AP režime, turime išsiųsti gerbiamas AT komandas iš LPC2148 naudodami funkciją UART0_SendString () .
Toliau paminėtos AT komandos, siunčiamos ESP8266 iš LPC2148. Išsiuntęs kiekvieną AT komandą, ESP8266 atsakys „OK“
1. Siunčia AT į ESP8266
UART0_SendString ("AT \ r \ n"); delsos_ms (3000);
2. Siunčia AT + CWMODE = 2 (nustatant ESP8266 AP režimu).
UART0_SendString ("AT + CWMODE = 2 \ r \ n"); delsos_ms (3000);
3. Siunčia AT + CIFSR (norint gauti AP IP)
UART0_SendString ("AT + CIFSR \ r \ n"); delsos_ms (3000);
4. Siunčia AT + CIPMUX = 1 (Mutliple jungtims)
UART0_SendString ("AT + CIPMUX = 1 \ r \ n"); delsos_ms (3000);
5. Siunčia AT + CIPSERVER = 1,80 (ESP8266 SERVERIO su ATIDARYTU UOSTU ĮJUNGIMAS)
UART0_SendString ("AT + CIPSERVER = 1,80 \ r \ n"); delsos_ms (3000);
Hex failo programavimas ir mirksėjimas į LPC2148
Norėdami programuoti ARM7-LPC2148, mums reikia „Keil uVision“ ir „Flash Magic“ įrankio. USB laidas naudojamas programuoti „ARM7 Stick“ per „micro USB“ prievadą. Mes rašome kodą naudodami „Keil“ ir sukuriame hex failą, tada HEX failas perduodamas į „ARM7“ lazdelę naudojant „Flash Magic“. Norėdami sužinoti daugiau apie „Keil uVision“ ir „Flash Magic“ diegimą ir kaip juos naudoti, spustelėkite nuorodą „Darbo pradžia su„ ARM7 LPC2148 “mikrovaldikliu ir užprogramuokite naudodami„ Keil uVision “.
Pilna programa pateikiama mokymo programos pabaigoje.
Pastaba: Įkeliant HEX failą į LPC2148, nereikia maitinti ESP8266 „Wi-Fi“ modulio ir FTDI modulio, kuris yra prijungtas prie LPC2148.
Šviesos diodų valdymas naudojant ESP8266 IoT tinklo serverį su LPC2148
1 žingsnis: - Įkėlę HEX failą į LPC2148, USB kabeliu prijunkite FTDI modulį prie kompiuterio ir atidarykite glaisto terminalo programinę įrangą.
Pasirinkite Serial, tada pasirinkite COM prievadą pagal savo kompiuterį arba LAPTOP mano buvimą (COM3). Perdavimo greitis yra 9600.
2 žingsnis: - Dabar iš naujo nustatykite „ESP8266“ „Wi-Fi“ modulį arba tiesiog išjunkite ir vėl įjunkite, glaisto terminalas parodys ESP8266 „Wi-Fi“ modulio atsaką, kaip parodyta žemiau. \
3 žingsnis: - Dabar paspauskite RESET mygtuką LPC2148. Po to LPC2148 pradeda siųsti AT komandas į ESP8266. To atsakymą galime pamatyti glaisto terminale.
4 žingsnis: - Kaip matote aukščiau esančiame paveikslėlyje, ESP8266 nustatytas 2 MODE, ty AP režimu, o APIP adresas yra 192.168.4.1. Atkreipkite dėmesį į šį adresą, nes šis adresas bus užkoduotas tinklalapio HTML kode, kad būtų galima valdyti prie LPC2148 prijungtą šviesos diodą.
Svarbu : Kai ESP8266 veikia AP režimu, turite prijungti savo kompiuterį prie ESP8266 AP. Žiūrėkite paveikslėlį žemiau mano modulio ESP8266, kuriame yra AP, pavadinimu ESP_06217B (jis atidarytas ir neturi slaptažodžio).
5 žingsnis: - Prijungę kompiuterį prie ESP8266 AP, atidarykite bloknotą ir nukopijuokite ir įklijuokite šį HTML programos tinklalapį. Nepamirškite pakeisti APIP adreso pagal savo „ESP8266“ „Wi-Fi“ modulį
Sveiki atvykę į „Circuit Digest“
ESP8266 Sąsaja su LPC2148: interneto serverio sukūrimas LED valdymui
Šviesos diodas įjungtas Šviesos diodas išjungtasŠiame HTML puslapyje mes sukūrėme du hipersaitinius mygtukus, kad įjungtumėte ir išjungtumėte LED nuo tinklalapio.
Galiausiai išsaugokite bloknotą kaip.html plėtinį
Tinklalapis bus rodomas taip, kaip žemiau, žiniatinklio naršyklėje.
Čia adresas yra AP IP adresas 192.168.4.1 ir mes siunčiame reikšmes @ ir%, kad įjungtume ir išjungtume šviesos diodą, naudodamiesi šia logika, esančia LPC2148.
while (1) { if (uart0_count! = 0) { COMMAND = UART0_BUFFER; if (COMMAND == LEDON) // Logika nustatyti LED ON arba OFF, priklausomai nuo gautos vertės iš ESP8266 { IOSET1 = (1 << 20); // Nustato OUTPUT HIGH delay_ms (100); } dar jei (COMMAND == LEDOFF) { IOCLR1 = (1 << 20); // nustato OUTPUT LOW delay_ms (100); } } }
Taip įrenginį galima valdyti nuotoliniu būdu naudojant ESP8266 ir ARM7 mikrovaldiklį LPC2148. Visas kodas ir paaiškinimo vaizdo įrašas pateikiami žemiau.