- Panimula sa ESP8285
- Diagram ng Linya ng Circuit ng Development ng ESP
- Pag-Fabricate ng aming ESP8285 Dev Board
- Pag-order ng PCB mula sa PCBWay
- Pagtitipon at Programing ng Lupon ng ESP8285
- Pagsubok sa isang Simple LED Blink Sketch
- Pagsubok sa Webserver Sketch sa ESP8285
Ang mga Controller ng ESP mula sa Espressif ay nagiging isang tanyag na pagpipilian para sa mga disenyo na batay sa IoT. Mayroong maraming mga uri ng mga module ng ESP at mga board ng pag-unlad na magagamit sa merkado, bukod sa kung saan ang NodeMCU ang pinakatanyag. Bukod sa na, ang ESP-12E, ang ESP01 ay popular din na mga pagpipilian. Ngunit kung nais mong gawing mas may kakayahang umangkop at siksik ang iyong disenyo, malamang na magdisenyo kami ng aming sariling module ng ESP mula sa antas ng maliit na tilad, sa halip na direktang paggamit ng isang madaling magagamit na module. Sa artikulong ito, matututunan natin kung paano mag-disenyo ng isang circuit at PCB para sa paggamit nang direkta sa mga Controller ng ESP (ESP8285) nang hindi gumagamit ng isang module.
Sa proyektong ito ginamit namin ang ESP8285 sapagkat ito ay isang nakawiwiling maliit na maliit na maliit na tilad. Ito ay isang maliit na SoC (System on Chip), na may IoT (Internet of Things) at may kakayahan sa malalim na pagtulog. Ito ay may parehong lakas tulad ng kanyang kapatid na lalaki na ESP8266 at bilang isang bonus, kasama nito ang built-in na 1MB flash memory na may maraming mga GPIO. Maaari mo ring gamitin ang ESP8266 bilang isang kahalili at ang karamihan sa mga bagay na tinalakay sa artikulong ito ay magiging pareho.
Sa isang nakaraang artikulo, ipinakita ko sa iyo kung paano mo mai-disenyo ang iyong sariling antena ng PCB para sa 2.4GHz, gamit ang parehong chip na ESP8285 bilang isang halimbawa. Maaari mong basahin ang artikulong iyon upang malaman ang tungkol sa disenyo ng antena para sa ESP8266 / ESP8285.
Kaya sa artikulong ito, sasakupin ko kung paano gumagana ang lahat ng mga circuit at sa wakas ay magkakaroon ng isang video na nagpapaliwanag sa lahat ng ito. Saklaw ko rin nang detalyado ang kumpletong pamamaraan upang mag-disenyo at mag-order ng mga board ng PCB mula sa PCBWay para sa aming disenyo ng module ng ESP.
Panimula sa ESP8285
Kung hindi mo alam ang tungkol sa maraming nalalaman na chip na ESP8285, narito ang isang mabilis na paliwanag na may isang listahan ng tampok. Ang ESP8285 ay isang maliit na maliit na tilad na may built-in na 1M flash at ram, halos kapareho ito ng module na ESP8286, ESP-01 ngunit ang panloob na memorya ng flash ay ginagawang mas compact at mas mura ito.
Ang chip na ito ay naglalaman ng L106 Diamond 32-bit core processor ng Tensilica at pareho din para sa ESP8266 din, iyon ang dahilan kung bakit ang lahat ng code para sa ESP8266 ay maaaring mai-flash direkta sa chip na ito nang walang anumang pagbabago, at mayroon itong parehong stack ng network bilang dosis na ESp8266.
Ang ESP8285 ay nagsasama ng mga switch ng antena, RF balun, power amplifier, mababang ingay na tumatanggap ng amplifier, mga filter, at mga module ng pamamahala ng kuryente. Pinapaliit ng compact na disenyo ang laki ng PCB, at nangangailangan ito ng kaunting panlabas na mga circuit. Kung nais mong matuto nang higit pa tungkol sa IC na ito, maaari mong laging suriin ang datasheet ng ESP8285 ng aparato sa Espressif Systems.
Diagram ng Linya ng Circuit ng Development ng ESP
Napaka-simple ng circuit at sinira ko ito para sa mas mahusay na pag-unawa. Ipinapakita ng iskemang sa ibaba ng ESP ang buong circuit, tulad ng nakikita mong may walong functional blocks, dadaan ako sa bawat isa at ipapaliwanag ang bawat bloke.
ESP8285 SOC:
Sa gitna ng proyekto ay ang ESP8285 SoC, lahat ng mga GPIO at iba pang mga kinakailangang koneksyon ay tinukoy dito.
Power Filter: Mayroong 7 power pin sa IC na ito, una ang power pin para sa ADC at IOs. Naikli ko silang magkasama, at gumagamit ng isang 47uF power filter capacitor, at isang 0.1uF decoupling capacitor upang salain ang input ng 3.3V DC.
Filter ng PI: Ang filter ng PI ay isa sa pinakamahalagang mga bloke ng disenyo na ito sapagkat responsable ito para sa pag-power ng RF amplifier at LNA, ang anumang panloob o panlabas na ingay ay maaaring mailarawan para sa seksyong ito, Kaya't para doon, hindi gagana ang seksyon ng RF. Iyon ang dahilan kung bakit ang mababang pass filter para sa seksyon ng LNA ay napakahalaga. Maaari kang matuto nang higit pa tungkol sa mga filter ng PI sa pamamagitan ng pagsunod sa link.
Crystal Oscillator: Ang 40MHz crystal oscillator ay nagsisilbing mapagkukunan ng orasan para sa ESP8285 SoC, at ang 10pF decoupling capacitors ay idinagdag bilang inirekomenda ng datasheet.
Seksyon ng LNA: Ang isa pang pinakamahalagang seksyon ng circuit na ito ay ang seksyon ng LNA; dito nagkokonekta ang antena ng PCB sa pisikal na pin ng ESP. Tulad ng inirekomenda ng datasheet, ginagamit ang isang 5.6pF capacitor, at dapat itong gumana nang maayos bilang tumutugma na circuit. Ngunit nagdagdag ako ng dalawang mga placeholder para sa dalawang inductors na kung sakaling gumagana ang pagtutugma ng circuit dissent, palagi kong mailalagay ang ilang mga inductor, upang mai-tweak ang mga halaga upang tumugma sa impedance ng antena.
Ang seksyon ng LNA ay mayroon ding dalawang PCB jumpers na may isang konektor sa UFL. Ang antena ng PCB ay itinatakda bilang default, ngunit kung ang iyong aplikasyon ay nangangailangan ng kaunting saklaw, maaari mong mapahamak ang jumper ng PCB at maiikli ang lumulukso para sa konektor ng UFL, at maaari mong ikonekta ang isang panlabas na antena tulad nito.
Konektor ng Input ng Baterya:
Maaari mong makita sa itaas, naglagay ako ng tatlong uri ng mga konektor ng baterya na kahanay sapagkat kung hindi mo makita ang isa, maaari mong palaging maglagay ng isa pa.
Mga Header ng GPIO at ang Mga Header ng Programming:
Ang mga header ng GPIO ay naroroon upang mai-access ang mga GPIO pin at ang header ng programa ay naroroon upang i-flash ang pangunahing Soc.
Auto Reset Circuit:
Sa bloke na ito, dalawang NPN transistor, MMBT2222A ang bumubuo ng auto-reset circuit kapag pinindot mo ang pindutan ng pag-upload sa Arduino IDE, ang tool na sawa ay tumawag, ang tool na ito ng sawa ay ang flash tool para sa mga aparato ng ESP, binibigyan ng tool na ito ng pi ang signal sa UART converter upang i-reset ang board habang hawak ang GPIO pin sa lupa. Pagkatapos nito, nagsisimula ang proseso ng pag-upload at pag-verify.
Power LED, On-Board LED, at ang Voltage Divider:
Power LED: Ang power LED ay may isang jumper ng PCB Kung ginagamit mo ang board na ito para sa application na pinalakas ng baterya, maaari mong solder ang jumper na ito upang makatipid ng kaunting lakas.
Onboard LED: Maraming mga dev-board sa merkado ang mayroong onboard LED, at ang board na ito ay walang kataliwasan; ang GPIO16 ng IC ay konektado sa isang onboard led. Sa tabi nito, mayroong isang placeholder para sa isang 0 OHM na risistor sa pamamagitan ng pag-populate ng 0 Ohms risistor, ikinokonekta mo ang GPIO16 sa pag-reset, at tulad ng nalalaman mo, ito ay isang napakahalagang hakbang upang maglagay ng isang ESP sa malalim na mode sa pagtulog.
Divider ng Boltahe: Tulad ng nalalaman mo, ang maximum na boltahe ng pag-input ng ADC ay 1V. Kaya, upang palitan ang saklaw ng input sa 3.3V, ginagamit ang divider ng boltahe. Ginawa ang pagsasaayos na maaari mong palaging magdagdag ng isang risistor sa serye gamit ang pin upang baguhin ang Saklaw sa 5V.
HT7333 LDO:
Ang isang LDO o Mababang Dropout Voltage Regulator ay ginagamit upang makontrol ang boltahe sa ESP8285 mula sa isang baterya na may pinakamaliit na pagkawala ng kuryente.
Ang maximum na boltahe ng pag-input ng HT7333 LDO ay 12V at ginagamit ito upang i-convert ang boltahe ng baterya sa 3.3V, pinili ko ang HT7333 LDO na ito sapagkat ito ay isang aparato na may napakababang kasalukuyang quiescent. Ang 4.7uF decoupling capacitors ay ginagamit upang patatagin ang LDO.
Push-button para sa Programming Mode:
Ang push-button ay konektado sa GPIO0, kung ang iyong UART converter ay walang RTS o DTR pin, maaari mong gamitin ang push-button na ito upang manu-manong hilahin ang GPIO0 sa lupa.
Pullup at Pulldown Resistors:
Ang mga pullup at pulldown resistors ay naroroon ayon sa inirekomenda ng datasheet.
Maliban dito, maraming mga pamantayan sa disenyo at patnubay ang sinusunod habang dinidisenyo ang PCB. Kung nais mong malaman ang higit pa tungkol dito, maaari mong makita iyon sa gabay sa disenyo ng hardware para sa ESP8266.
Pag-Fabricate ng aming ESP8285 Dev Board
Tapos na ang eskematiko, at maaari kaming magpatuloy sa paglalagay ng PCB. Gumamit kami ng software ng disenyo ng Eagle PCB upang gawin ang PCB, ngunit maaari mong idisenyo ang PCB sa iyong ginustong software. Ganito ang hitsura ng aming disenyo ng PCB kapag nakumpleto ito.
Ang BOM at ang mga Gerber file ay magagamit upang i-download mula sa Mga sumusunod na Link:
- ESP8282 Dev-Board Gerber Files
- ESP8282 Dev-Board BOM
Ngayon, na handa na ang aming Disenyo, oras na upang makuha ang gawa-gawa na mga PCB. Upang magawa ito, sundin lamang ang mga hakbang sa ibaba:
Pag-order ng PCB mula sa PCBWay
Hakbang 1: Pumasok sa https://www.pcbway.com/, mag-sign up kung ito ang iyong unang pagkakataon. Pagkatapos, sa tab na Prototype ng PCB, ipasok ang mga sukat ng iyong PCB, ang bilang ng mga layer, at ang bilang ng PCB na kailangan mo.
Hakbang 2: Magpatuloy sa pamamagitan ng pag-click sa pindutang 'Quote Now'. Dadalhin ka sa isang pahina kung saan magtatakda ng ilang karagdagang mga parameter tulad ng uri ng Lupon, Mga Layer, Materyal para sa PCB, Kapal, at Higit Pa, karamihan sa mga ito ay napili bilang default, kung pipiliin mo ang anumang tukoy na mga parameter, maaari kang pumili ito sa pakinggan.
Tulad ng nakikita mo, kailangan namin ang aming mga PCB na itim! kaya, napili ko ang itim sa seksyon ng kulay ng solder mask.
Hakbang 3: Ang pangwakas na hakbang ay i-upload ang Gerber file at magpatuloy sa pagbabayad. Upang matiyak na maayos ang proseso, napatunayan ng PCBWAY kung ang iyong Gerber file ay wasto bago magpatuloy sa pagbabayad. Sa ganitong paraan, makakatiyak ka na ang iyong PCB ay katha sa paggawa at maaabot ka bilang nakatuon.
Pagtitipon at Programing ng Lupon ng ESP8285
Matapos ang ilang araw, natanggap namin ang aming PCB sa isang maayos na kahon ng pakete, at ang kalidad ng PCB ay mabuti tulad ng lagi. Ang tuktok na layer at ang ilalim na layer ng board ay ipinapakita sa ibaba:
Matapos matanggap ang board, sinimulan ko kaagad ang paghihinang ng board. Gumamit ako ng isang hot air soldering station at maraming solder flux upang maghinang ang pangunahing CPU, at iba pang mga bahagi sa PCB ay solder sa pamamagitan ng isang soldering iron. Ang binuo module ay ipinapakita sa ibaba.
Kapag tapos na iyon, nakakonekta ko ang aking mapagkakatiwalaang module ng FTDI upang subukan ang board sa pamamagitan ng pag-upload ng isang sketch, Ang mga konektadong mga pin at isang imahe ng board na ipinakita sa ibaba:
ESP8285 Module ng Dev Board FTDI
3.3V -> 3.3V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
Kapag, nakumpleto na ang lahat ng kinakailangang koneksyon, na-set up ko ang Arduino IDE sa pamamagitan ng pagpili sa Generic ESP8285 Board mula sa Mga Tool > Lupon > Generic na ESP8285 Module .
Pagsubok sa isang Simple LED Blink Sketch
Susunod, oras na upang subukan ang board sa pamamagitan ng pag-blink ng isang LED, para doon, ginamit ko ang sumusunod na code:
/ * ESP8285 Blink Blink the blue LED sa module ng ESP828285 * / #define LED_PIN 16 // Tukuyin ang blinking LED pin void setup () {pinMode (LED_PIN, OUTPUT); // Simulan ang LED pin bilang isang output} // ang pagpapaandar ng loop ay tumatakbo nang paulit-ulit magpakailanman walang bisa loop () {digitalWrite (LED_PIN, LOW); // Turn the LED on (Tandaan na ang LOW ay ang antas ng boltahe) pagkaantala (1000); // Maghintay para sa isang pangalawang digitalWrite (LED_PIN, TAAS); // Patayin ang LED sa pamamagitan ng paggawa ng boltahe HATE na pagkaantala (1000); // Maghintay ng dalawang segundo}
Napakadali ng code, unang natukoy ko ang LED pin para sa board na ito, at nasa GPIO 16. Susunod, itinakda ko ang pin na iyon bilang isang output sa seksyon ng pag-setup. At sa wakas, sa seksyon ng loop, binuksan ko at isara ang pin na may isang segundong pagkaantala sa pagitan.
Pagsubok sa Webserver Sketch sa ESP8285
Kapag gumana ito nang maayos, oras na upang subukan ang HelloServer sketch mula sa Halimbawa ng ESP8266WebServer. Gumagamit ako ng isang halimbawa ng ESP8266 dahil ang karamihan sa code ay katugma sa esp8285 chip. Ang halimbawa ng code ay maaari ding matagpuan sa ilalim ng pahinang ito.
Ang code na ito ay napaka-simple din, Una, kailangan naming tukuyin ang lahat ng kinakailangang mga aklatan, # isama
susunod, kailangan naming ipasok ang pangalan at password ng hotspot.
#ifndef STASSID #define STASSID "your-ssid" #define STAPSK "your-password" #endif const char * ssid = STASSID; const char * password = STAPSK;
Susunod, kailangan nating tukuyin ang object ng ESP8266WebServer. Ang halimbawa dito ay tumutukoy dito bilang isang server (80) ang (80) ay ang numero ng port.
Susunod, kailangan naming tukuyin ang isang pin para sa isang LED sa aking kaso ito ay pin no 16.
Const int led = 16;
Susunod, tinukoy ang handleRoot () Function. Tatawagan ang pagpapaandar na ito kapag ang tawag sa IP address mula sa aming browser.
void handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "hello from esp8266!"); digitalWrite (led, 0); }
Susunod ay ang pag-andar ng pag-setup, pakinggan na kailangan nating tukuyin ang lahat ng kinakailangang mga parameter tulad ng-
pinMode (led, OUTPUT); // kami ay may tinukoy na ang humantong pin bilang output Serial.begin (115200); // sinimulan namin ang isang serial na koneksyon sa 115200 baud WiFi.mode (WIFI_STA); // itinakda namin ang wifi mode bilang istasyon WiFi.begin (ssid, password); pagkatapos ay sinisimulan namin ang koneksyon sa wifi na Serial.println (""); // ang linyang ito ay nagbibigay ng isang karagdagang puwang habang (WiFi.status ()! = WL_CONNected) {pagkaantala (500); Serial.print ("."); } / * habang ang loop ay sinusubukan namin ang katayuan ng koneksyon ng isa na nakakonekta sa ESP sa hotspot ang loop ay preno * / Serial.println (""); Serial.print ("Nakakonekta sa"); Serial.println (ssid); Serial.print ("IP address:"); Serial.println (WiFi.localIP ());
Susunod, pini-print namin ang pangalan at ang IP address ng nakakonektang SSID sa serial monitor window.
server.on ("/", hawakanRoot); // the on methode of the server object was called to handel the root function server.on ("/ inline", () {server.send (200, "text / plain", "this works as well");}); // muli ay tinawag namin ang on methode para sa / inline na halimbawa ng server.begin (); // susunod ay sinisimulan namin ang server sa pagsisimula ng methode Serial.println ("nagsimula ang HTTP server"); // at sa wakas ay naka-print kami ng isang pahayag sa serial monitor. } // na nagmamarka sa pagtatapos ng pag-andar ng void na void loop (void) {server.handleClient (); }
Sa pagpapaandar ng loop, tinawag namin ang mga pamamaraan ng handleClient () upang mapatakbo nang maayos ang esp.
Sa sandaling tapos na ito, ang board ng ESP8285 ay tumagal ng ilang oras upang makakonekta sa webserver at matagumpay na nagtrabaho tulad ng inaasahan na nagmarkahan sa pagtatapos ng proyektong ito.
Ang kumpletong pagtatrabaho ng board ay maaari ding matagpuan sa video na naka-link sa ibaba. Inaasahan kong nasiyahan ka sa artikulong ito at may natutunan na bago dito. Kung mayroon kang anumang pag-aalinlangan, maaari kang magtanong sa mga komento sa ibaba o maaaring magamit ang aming mga forum para sa detalyadong talakayan.