- ESP8285 įvadas
- ESP plėtros valdybos grandinės schema
- ESP8285 „Dev“ plokštės gamyba
- Užsakymas PCB iš PCBWay
- ESP8285 plokštės surinkimas ir programavimas
- Testavimas naudojant paprastą LED mirksi eskizą
- Tikrinamas tinklo serverio eskizas naudojant ESP8285
ESP valdikliai iš „Espressif“ tampa plačiai populiarėjančiu daiktų internetiniu dizainu. Rinkoje jau yra daugybė ESP modulių ir plėtros plokščių, tarp kurių populiariausias yra „NodeMCU“. Be to, ESP-12E, ESP01 taip pat yra populiarus pasirinkimas. Bet jei norite, kad jūsų dizainas būtų lankstesnis ir kompaktiškesnis, yra tikimybė, kad mes turime sukurti savo ESP modulį iš lusto lygio, užuot tiesiogiai naudojęsi lengvai prieinamu moduliu. Šiame straipsnyje mes sužinosime, kaip sukurti grandinę ir PCB, kad ESP valdikliai (ESP8285) būtų naudojami tiesiogiai nenaudojant modulio.
Šiame projekte mes panaudojome ESP8285, nes tai yra labai įdomus mažas lustas. Tai mažytis „SoC“ („System on Chip“) su daiktų internetu (daiktų internetas) ir gilaus miego galimybėmis. Jis turi tokią pačią galią kaip ir jo didysis brolis ESP8266, o kaip premiją jis turi įmontuotą 1 MB „flash“ atmintį su daugybe GPIO. Taip pat galite naudoti ESP8266 kaip alternatyvą, o dauguma šiame straipsnyje aptartų dalykų vis tiek bus tie patys.
Ankstesniame straipsnyje aš jums parodžiau, kaip galite sukurti savo 2,4 GHz PCB anteną, kaip pavyzdį naudodami tą pačią ESP8285 mikroschemą. Galite sužinoti tą straipsnį, kad sužinotumėte apie ESP8266 / ESP8285 antenos dizainą.
Taigi šiame straipsnyje aptarsiu, kaip veikia visos grandinės, ir galiausiai bus visa tai paaiškinantis vaizdo įrašas. Aš taip pat išsamiai apžvelgiau visą PCB plokščių projektavimo ir užsakymo procedūrą iš „PCBWay“ mūsų ESP modulio dizainui.
ESP8285 įvadas
Jei nežinote apie šį universalų ESP8285 lustą, pateikite trumpą paaiškinimą su funkcijų sąrašu. ESP8285 yra maža mikroschema su įmontuota 1M blykste ir RAM, ji yra gana panaši į ESP8286, ESP-01 modulį, tačiau vidinė „flash“ atmintis daro ją daug kompaktiškesnę ir pigesnę.
Šioje mikroschemoje yra „Tensilica“ 32 bitų „Core“ procesorius „L106 Diamond“, tas pats pasakytina ir apie ESP8266, todėl visą ESP8266 kodą galima tiesiogiai mirksėti šioje mikroschemoje be jokių modifikacijų, o tinklo paketas yra toks pat, kaip ir „ESp8266“ dozės.
ESP8285 integruoti antenos jungikliai, RF balun, galios stiprintuvas, mažo triukšmo priėmimo stiprintuvas, filtrai ir energijos valdymo moduliai. Kompaktiškas dizainas sumažina PCB dydį ir reikalauja minimalių išorinių grandinių. Jei norite sužinoti daugiau apie šį IC, visada galite patikrinti įrenginio ESP8285 duomenų lapą „Espressif Systems“.
ESP plėtros valdybos grandinės schema
Grandinė yra labai paprasta, ir aš ją suskaidžiau, kad geriau suprasčiau. Žemiau pateiktoje ESP schemoje parodyta visa grandinė, nes, kaip matote, yra aštuoni funkciniai blokai, aš pereisiu kiekvieną iš jų ir paaiškinsiu kiekvieną bloką.
ESP8285 SOC:
Projekto esmė yra ESP8285 SoC, čia apibrėžti visi GPIO ir kiti reikalingi ryšiai.
Maitinimo filtras: Šiame IC yra 7 maitinimo kaiščiai, pirmiausia yra ADC ir IO maitinimo kaištis. Aš juos sutrumpinau ir naudoju 47uF galios filtro kondensatorių ir 0,1uF atsiejimo kondensatorių, kad filtruočiau 3.3V DC įvestį.
PI filtras: PI filtras yra vienas iš svarbiausių šio dizaino blokų, nes jis yra atsakingas už RF stiprintuvo ir LNA maitinimą, bet koks vidinis ar išorinis triukšmas gali būti apibūdinantis šį skyrių, taigi, RF skyrius neveiks. Štai kodėl žemų dažnių filtras LNA skyriui yra labai svarbus. Daugiau apie PI filtrus galite sužinoti spustelėdami nuorodą.
Kristalinis osciliatorius: 40MHz kristalinis osciliatorius naudojamas kaip ESP8285 SoC laikrodžio šaltinis, o 10pF atsiejimo kondensatoriai buvo pridėti, kaip rekomenduojama duomenų lape.
LNA skyrius: Kitas svarbiausias šios grandinės skyrius yra LNA skyrius; čia PCB antena prijungiama prie fizinio ESP kaiščio. Kaip rekomenduojama duomenų lape, naudojamas 5,6 pF kondensatorius, ir jis turėtų veikti puikiai, kaip suderinimo grandinė. Bet aš pridėjau du dviejų induktorių vietos rezervatorius, tarsi tuo atveju, jei sutampa grandinės nesutarimas, aš visada galiu įdėti kai kuriuos induktorius, norėdamas pakoreguoti vertes, kad atitiktų antenos impedanciją.
LNA skyriuje taip pat yra du PCB džemperiai su UFL jungtimi. PCB antena yra nustatyta pagal numatytuosius nustatymus, tačiau jei jūsų programai reikalingas šiek tiek didesnis nuotolis, galite ištuštinti PCB jungiklį ir sutrumpinti UFL jungties jungiklį ir taip pat galite prijungti išorinę anteną.
Baterijos įvesties jungtis:
Jūs galite pamatyti aukščiau, aš lygiagrečiai įdėjau trijų tipų akumuliatorių jungtis, nes jei nepavyko jų rasti, visada galite įdėti kitas.
GPIO antraštės ir programavimo antraštės:
GPIO antraštės yra skirtos pasiekti GPIO kaiščius, o programavimo antraštė yra skirta mirksėti pagrindiniam „Soc“.
Automatinio nustatymo grandinė:
Šiame bloke du NPN tranzistoriai, MMBT2222A, formuoja automatinio atstatymo grandinę, kai paspaudžiate įkėlimo mygtuką „Arduino IDE“, python įrankis sulaukia skambučio, šis python įrankis yra „ESP“ įrenginių „flash“ įrankis, šis pi įrankis suteikia signalą į UART keitiklį, kad plokštė būtų atstatyta laikant GPIO kaištį prie žemės. Po to prasideda įkėlimo ir patvirtinimo procesas.
Maitinimo šviesos diodas, borto šviesos diodas ir įtampos daliklis:
Maitinimo šviesos diodas: maitinimo šviesos diodas turi PCB jungiklį. Jei šią plokštę naudojate kaip su baterijomis veikiančią programą, galite DE sulituoti, kad sutaupytumėte nemažai energijos.
Borto šviesos diodas: daugelis rinkoje esančių lentų turi borto šviesos diodą, ir ši lenta nėra išimtis; IC GPIO16 yra prijungtas prie laive esančio LED. Be to, yra 0 OHM rezistoriaus vietos rezervavimo ženklas užpildant 0 omų rezistorių, jūs jungiate GPIO16 prie atstatymo ir, kaip jūs žinote, tai yra labai svarbus žingsnis norint įjungti ESP gilaus miego režimu.
Įtampos daliklis: kaip žinote, didžiausia ADC įėjimo įtampa yra 1 V. Taigi, norint pakeisti įvesties diapazoną į 3,3 V, naudojamas įtampos daliklis. Konfigūracija yra tokia, kad visada galite pridėti rezistorių nuosekliai su kaiščiu, kad diapazoną pakeistumėte į 5 V.
HT7333 LDO:
LDO arba mažo kritimo įtampos reguliatorius yra naudojamas reguliuoti įtampą iki ESP8285 iš akumuliatoriaus su minimaliais energijos nuostoliais.
Didžiausia HT7333 LDO įėjimo įtampa yra 12 V ir ji naudojama akumuliatoriaus įtampai konvertuoti į 3,3 V, aš pasirinkau šį HT7333 LDO, nes tai labai mažos ramybės srovės prietaisas. LDO stabilizavimui naudojami 4,7uF atsiejimo kondensatoriai.
Programavimo režimo mygtukas:
Mygtukas yra prijungtas prie GPIO0, jei jūsų UART keitiklis neturi RTS arba DTR kaiščio, galite naudoti šį mygtuką rankiniu būdu traukdami GPIO0 į žemę.
Pullup ir Pulldown rezistoriai:
Atsitraukimo ir išskleidžiamieji rezistoriai yra ten, kaip rekomenduojama duomenų lape.
Kuriant PCB, buvo laikomasi daugelio projektavimo normų ir rekomendacijų. Jei norite apie tai sužinoti daugiau, tai galite rasti ESP8266 aparatūros projektavimo vadove.
ESP8285 „Dev“ plokštės gamyba
Schema yra padaryta, ir mes galime tęsti PCB išdėstymą. Gamindami PCB, naudojome „Eagle“ PCB projektavimo programinę įrangą, tačiau jūs galite suprojektuoti PCB naudodami savo norimą programinę įrangą. Mūsų PCB dizainas atrodo taip, kai jis bus baigtas.
BOM ir Gerber failus galima atsisiųsti iš šių nuorodų:
- ESP8282 „Dev-Board Gerber Files“
- ESP8282 „Dev-Board“ BOM
Dabar, kai mūsų dizainas yra paruoštas, atėjo laikas pagaminti PCB. Norėdami tai padaryti, tiesiog atlikite šiuos veiksmus:
Užsakymas PCB iš PCBWay
1 žingsnis: Eikite į https://www.pcbway.com/, užsiregistruokite, jei tai jūsų pirmas kartas. Tada skirtuke PCB Prototype įveskite savo PCB matmenis, sluoksnių skaičių ir reikalingą PCB skaičių.
2 žingsnis: tęskite spustelėdami mygtuką „Pasiūlyti dabar“. Jūs pateksite į puslapį, kuriame galėsite nustatyti keletą papildomų parametrų, tokių kaip plokštės tipas, sluoksniai, medžiaga PCB, storis ir dar daugiau, dauguma jų yra pasirinkti pagal numatytuosius nustatymus, jei pasirenkate bet kuriuos konkrečius parametrus, galite pasirinkti tai girdėdamas.
Kaip matote, mums reikėjo, kad mūsų PCB būtų juoda! Taigi, litavimo kaukės spalvų skyriuje pasirinkau juodą spalvą.
3 žingsnis: Paskutinis žingsnis yra įkelti „Gerber“ failą ir tęsti mokėjimą. Norėdami įsitikinti, kad procesas vyksta sklandžiai, prieš tęsdamas mokėjimą PCBWAY patikrina, ar jūsų „Gerber“ failas galioja. Tokiu būdu galite būti tikri, kad jūsų PCB yra draugiškas gamybai ir pasieks jus kaip įsipareigojusį.
ESP8285 plokštės surinkimas ir programavimas
Po kelių dienų mes gavome savo PCB tvarkingoje pakuotės dėžutėje, o PCB kokybė buvo gera kaip visada. Viršutinis ir apatinis lentos sluoksnis parodytas žemiau:
Gavęs lentą iškart pradėjau lituoti lentą. Pagrindiniam procesoriui lituoti naudojau karšto oro litavimo stotį ir daug litavimo srauto, o kiti PCB komponentai lituojami per lituoklį. Surinktas modulis parodytas žemiau.
Kai tai bus padaryta, aš prijungiau savo patikimą FTDI modulį, kad galėčiau išbandyti plokštę, įkeldamas eskizą, prijungtus kaiščius ir lentos vaizdą, parodytą žemiau:
ESP8285 „Dev Board“ FTDI modulis
3,3 V -> 3,3 V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
BND -> GND
Kai visi reikalingi ryšiai bus baigti, aš sukūriau „Arduino IDE“ pasirinkdamas „Generic ESP8285 Board“ iš „ Tools“ > „ Board“ > „ Generic ESP8285“ modulio .
Testavimas naudojant paprastą LED mirksi eskizą
Tada atėjo laikas išbandyti lentą mirksint šviesos diodui, tam aš naudoju šį kodą:
/ * ESP8285 „Mirksėjimas“ Mirksi ESP828285 modulio mėlynas šviesos diodas * / #define LED_PIN 16 // Apibrėžkite mirksinčio LED kaiščio negaliojančio nustatymą () {pinMode (LED_PIN, OUTPUT); // Inicializuokite LED kaištį kaip išvestį} // ciklo funkcija veikia vėl ir vėl amžinai void loop () {digitalWrite (LED_PIN, LOW); // Įjunkite šviesos diodą (atkreipkite dėmesį, kad LOW yra įtampos lygis) vėlavimas (1000); // Palaukite antro „digitalWrite“ (LED_PIN, HIGH); // Išjunkite šviesos diodą, padarydami įtampą HIGH delay (1000); // Palaukite dvi sekundes}
Kodas yra labai paprastas, pirmiausia aš apibrėžiau šios plokštės LED kaištį ir jis yra GPIO 16. Tada aš nustatiau tą kaištį kaip išvestį sąrankos skyriuje. Galiausiai, kilpos skyriuje, aš įjungiau ir išjungiau kaištį su vienos sekundės vėlavimu tarp jų.
Tikrinamas tinklo serverio eskizas naudojant ESP8285
Kai tai pavyko, atėjo laikas išbandyti „HelloServer“ eskizą iš ESP8266WebServer pavyzdžio. Aš naudoju ESP8266 pavyzdį, nes dauguma kodo yra suderinama su esp8285 mikroschema. Kodo pavyzdį taip pat galite rasti šio puslapio apačioje.
Šis kodas taip pat yra labai paprastas. Pirma, turime apibrėžti visas reikalingas bibliotekas, # įtraukti
po to turime įvesti viešosios interneto prieigos taško pavadinimą ir slaptažodį.
#ifndef STASSID #define STASSID "tavo-ssid" #define STAPSK "tavo slaptažodis" #endif const char * ssid = STASSID; const char * slaptažodis = STAPSK;
Tada turime apibrėžti objektą ESP8266WebServer. Čia pateiktame pavyzdyje jis apibrėžiamas kaip serveris (80), o (80) yra prievado numeris.
Tada mes turime apibrėžti šviesos diodo kaištį, mano atveju, tai buvo kaištis Nr. 16.
const int vedė = 16;
Toliau apibrėžta funkcija „ handRoot ()“ . Ši funkcija bus iškviesta, kai skambinsite IP adresu iš mūsų naršyklės.
void handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "labas nuo esp8266!"); „digitalWrite“ (vedamas, 0); }
Kitas yra sąrankos funkcija, girdime, mes turime apibrėžti visus būtinus parametrus, pvz., pinMode (led, OUTPUT); // mes apibrėžėme LED kaištį kaip išvestį Serial.begin (115200); // mes pradėjome nuoseklų ryšį su 115200 baud WiFi.mode (WIFI_STA); // nustatėme „wifi“ režimą kaip stotį „WiFi.begin“ (ssid, slaptažodis); tada pradedame „wifi“ ryšį Serial.println (""); // ši eilutė suteikia papildomą erdvę, o (WiFi.status ()! = WL_CONNECTED) {delsa (500); Serijinis spaudinys ("."); } / * tuo metu, kai bandome prisijungimo būseną, kurią ESP gali prisijungti prie viešosios interneto prieigos taško, kilpa stabdys * / Serial.println (""); Serial.print („Prisijungta prie“); Serial.println (ssid); Serial.print („IP adresas:“); Serial.println („WiFi.localIP“ ());
Tada nuoseklaus monitoriaus lange spausdiname prijungto SSID pavadinimą ir IP adresą.
server.on ("/", handleRoot); // serverio objekto methode yra iškviestas tvarkyti šaknies funkciją server.on ("/ inline", () {server.send (200, "text / plain", "tai taip pat veikia");}); // vėl mes pakvietėme on-metode / inline example server.begin (); // toliau mes paleidžiame serverį nuo pradžios metodo Serial.println ("HTTP serveris prasidėjo"); // ir galiausiai nuosekliame ekrane atspausdiname pareiškimą. } // žymi sąrankos funkcijos pabaigą void loop (void) {server.handleClient (); }
Vykdydami ciklo funkciją, mes pakvietėme rankClient () metodus, kad tinkamai veiktų esp.
Tai padarius, ESP8285 plokštė užtruko, kol prisijungė prie interneto serverio, ir sėkmingai veikė, kaip tikėtasi, o tai pažymėjo šio projekto pabaigą.
Visą lentos darbą taip pat galite rasti žemiau esančiame vaizdo įraše. Tikiuosi, kad jums patiko šis straipsnis ir sužinojote iš jo kažką naujo. Jei turite kokių nors abejonių, galite paklausti žemiau pateiktų komentarų arba pasinaudoti mūsų forumais išsamiai diskusijai.