- Въведение в ESP8285
- Схема на борда за развитие на ESP
- Изработване на нашата платка за разработчици ESP8285
- Поръчка на печатни платки от PCBWay
- Сглобяване и програмиране на платката ESP8285
- Тестване с проста LED мигаща скица
- Тестване на скица на уеб сървър на ESP8285
ESP контролерите от Espressif стават широко популярен избор за IoT базирани дизайни. На пазара вече се предлагат много видове ESP модули и дъски за разработка, сред които NodeMCU е най-популярният. Освен това, ESP-12E, ESP01 също са популярни избори. Но ако искате да направите своя дизайн по-гъвкав и компактен, шансовете са, че трябва да проектираме свой собствен ESP модул от нивото на чипа, вместо директно да използваме лесно достъпен модул. В тази статия ще научим как да проектираме схема и печатни платки за директно използване на ESP контролерите (ESP8285), без да използваме модул.
В този проект използвахме ESP8285, защото е много интересен малък чип. Това е малък SoC (система на чип), с IoT (Интернет на нещата) и възможности за дълбок сън. Той има същата мощност като големия му брат ESP8266 и като бонус се предлага с вградена 1MB флаш памет с много GPIO. Можете също да използвате ESP8266 като алтернатива и повечето от нещата, обсъдени в тази статия, ще останат същите.
В предишна статия ви показах как можете да проектирате своя собствена PCB антена за 2.4GHz, като използвате същия чип ESP8285 като пример. Можете да прочетете тази статия, за да научите за дизайна на антената за ESP8266 / ESP8285.
Така че в тази статия ще разгледам как работят всички вериги и накрая ще има видео, обясняващо всичко. Също така разгледах подробно цялата процедура за проектиране и поръчване на платките от PCB от PCBWay за нашия дизайн на модула ESP.
Въведение в ESP8285
Ако не знаете за този универсален чип ESP8285, ето кратко обяснение със списък с функции. ESP8285 е малък чип с вградена 1M светкавица и RAM, доста прилича на модула ESP8286, ESP-01, но вътрешната флаш памет го прави много по-компактен и по-евтин.
В този чип се помещава 32-битовият ядрен процесор L106 Diamond на Tensilica и същото важи и за ESP8266, затова целият код за ESP8266 може да се мига директно към този чип без никакви модификации и има същия мрежов стек като дозата ESp8266.
ESP8285 интегрира антенни ключове, RF балун, усилвател на мощност, усилвател с ниско ниво на шум, филтри и модули за управление на мощността. Компактният дизайн минимизира размера на печатната платка и изисква минимални външни схеми. Ако искате да научите повече за тази интегрална схема, винаги можете да проверите листа с данни на ESP8285 на устройството в Espressif Systems.
Схема на борда за развитие на ESP
Веригата е много проста и я разбих за по-добро разбиране. Долната схема на ESP показва цялата схема, тъй като можете да видите, че има осем функционални блока, ще разгледам всеки един и ще обясня всеки блок.
ESP8285 SOC:
В основата на проекта е ESP8285 SoC, тук са дефинирани всички GPIO и други необходими връзки.
Филтър за захранване: На този IC има 7 захранващи щифта, първо е захранващият щифт за ADC и IO. Съкратих ги заедно и използвам кондензатор на филтър за мощност 47uF и кондензатор за разединяване 0,1uF, за да филтрирам входа от 3,3V DC.
PI филтър: PI филтърът е един от най-важните блокове на този дизайн, тъй като той е отговорен за захранването на RF усилвателя и LNA, всеки вътрешен или външен шум може да бъде описателен за този раздел, така че за това RF раздел няма да работи. Ето защо нискочестотният филтър за LNA секцията е много важен. Можете да научите повече за PI филтрите, като следвате връзката.
Кристален осцилатор: 40MHz кристалният осцилатор служи като часовник за ESP8285 SoC, а разделителните кондензатори 10pF бяха добавени, както се препоръчва в листа с данни.
LNA секция: Друг най-важен участък от тази верига е LNA секцията; тук антената на печатната платка се свързва към физическия щифт на ESP. Както се препоръчва от листа с данни, се използва кондензатор 5.6pF и той трябва да работи добре като съвпадащата верига. Но съм добавил две резервни части за две индуктори, сякаш в случай, че съответстващото несъгласие на веригата работи, винаги мога да поставя някои индуктори, за да коригирам стойностите, за да съответстват на антенния импеданс.
Секцията LNA също има два джъмпера на печатни платки с UFL конектор. Антената на печатната платка е настроена по подразбиране, но ако вашето приложение изисква малко повече обхват, можете да разглобите джъмпера на печатната платка и да съкратите джъмпера за UFL конектора и можете да свържете външна антена точно така.
Входен конектор за батерията:
Можете да видите по-горе, аз поставих три вида съединители за батерии паралелно, защото ако не успяхте да намерите такъв, винаги можете да поставите друг.
GPIO заглавки и заглавки за програмиране:
GPIO хедърите са там за достъп до GPIO пиновете, а заглавката за програмиране е там, за да мига основния Soc.
Верига за автоматично нулиране:
В този блок, два NPN транзистора, MMBT2222A формира верига за автоматично нулиране, когато натиснете бутона за качване в IDE на Arduino, инструментът python получава повикване, този инструмент python е флаш инструментът за ESP устройства, този инструмент pi дава сигнал към преобразувателя UART за нулиране на платката, докато държите GPIO щифта на земята. След това започва процесът на качване и проверка.
Светодиод за захранване, бордов светодиод и разделител на напрежението:
Индикатор за захранване: Индикаторът за захранване има джъмпер за печатни платки. Ако използвате тази платка като за захранване от батерии, можете да DE спойкате този джъмпер, за да спестите доста енергия.
Вграден светодиод: Много разработчици на пазара имат вграден светодиод и тази платка не е изключение; GPIO16 на IC е свързан към вграден светодиод. Наред с това има резервоар за резистор 0 OHM чрез запълване на резистора 0 Ома, вие свързвате GPIO16 към нулирането и както може би знаете, това е много важна стъпка за поставяне на ESP в режим на дълбок сън.
Разделител на напрежение: Както може би знаете, максималното входно напрежение на ADC е 1V. Така че, за да промените обхвата на входа на 3.3V, се използва делителят на напрежението. Конфигурацията е направена така, че винаги можете да добавите резистор последователно с щифта, за да промените обхвата на 5V.
HT7333 LDO:
LDO или регулатор на ниско отпадащо напрежение се използва за регулиране на напрежението към ESP8285 от батерия с минимални загуби на мощност.
Максималното входно напрежение на HT7333 LDO е 12V и се използва за преобразуване на напрежението на батерията в 3.3V, избрах този HT7333 LDO, защото е устройство с много нисък ток на покой. Разделителните кондензатори 4.7uF се използват за стабилизиране на LDO.
Бутон за режим на програмиране:
Бутонът е свързан към GPIO0, ако вашият UART конвертор няма RTS или DTR щифт, можете да използвате този бутон, за да издърпате ръчно GPIO0 към земята.
Издърпващи и изтеглящи резистори:
Съпротивленията за издърпване и изтегляне са там, както се препоръчва в листа с данни.
Освен това, много дизайнерски норми и насоки бяха спазени при проектирането на печатната платка. Ако искате да научите повече за това, можете да намерите това в ръководството за хардуерен дизайн за ESP8266.
Изработване на нашата платка за разработчици ESP8285
Схемата е направена и можем да продължим с излагането на печатната платка. Използвахме софтуер за проектиране на печатни платки на Eagle, за да направим печатната платка, но вие можете да проектирате печатната платка с предпочитания от вас софтуер. Нашият дизайн на печатни платки изглежда така, когато завърши.
Файловете BOM и Gerber са достъпни за изтегляне от следните връзки:
- ESP8282 Deber-Board Gerber файлове
- ESP8282 Спецификация на борда за разработчици
Сега, когато нашият дизайн е готов, време е да се произвеждат печатни платки, използвани. За да направите това, просто следвайте стъпките по-долу:
Поръчка на печатни платки от PCBWay
Стъпка 1: Влезте в https://www.pcbway.com/, регистрирайте се, ако за първи път. След това в раздела PCB Prototype въведете размерите на вашата PCB, броя на слоевете и броя на PCB, който ви е необходим.
Стъпка 2: Продължете, като кликнете върху бутона „Цитирай сега“. Ще бъдете отведени на страница, където да зададете няколко допълнителни параметъра като тип платка, слоеве, материал за печатни платки, дебелина и др., Повечето от тях са избрани по подразбиране, ако сте избрали някакви конкретни параметри, можете да изберете го чувам.
Както можете да видите, имахме нужда от нашите печатни платки в черно! така че, избрах черно в раздела за цветна маска за спойка.
Стъпка 3: Последната стъпка е да качите файла Gerber и да продължите с плащането. За да се увери, че процесът е гладък, PCBWAY проверява дали вашият Gerber файл е валиден, преди да продължи с плащането. По този начин можете да бъдете сигурни, че вашата PCB е удобна за изработка и ще се свърже с вас като ангажирана.
Сглобяване и програмиране на платката ESP8285
След няколко дни получихме нашата ПХБ в чист пакет и качеството на ПХБ беше добро както винаги. Най-горният и долният слой на дъската са показани по-долу:
След като получих дъската, веднага започнах да запоявам дъската. Използвал съм станция за запояване с горещ въздух и много припой за запояване на основния процесор, а други компоненти на печатната платка са запоени чрез поялник. Сглобеният модул е показан по-долу.
След като приключите, свързах моя надежден FTDI модул, за да тествам дъската, като качих скица, свързаните щифтове и изображение на дъската, показано по-долу:
ESP8285 Dev Board FTDI модул
3.3V -> 3.3V
Tx -> Rx
Rx -> Tx
DTR -> DTR
RST -> RST
GND -> GND
След като всички необходими връзки са завършени, настроих IDE на Arduino, като избрах Общата платка ESP8285 от Инструменти > Платка > Общ модул ESP8285 .
Тестване с проста LED мигаща скица
След това е време да тествате платката, като мига светодиод, за това използвах следния код:
/ * ESP8285 Мига Мига синия светодиод на модула ESP828285 * / #define LED_PIN 16 // Определяне на мигаща настройка на празен LED пин () {pinMode (LED_PIN, OUTPUT); // Инициализираме светодиодния щифт като изход} // функцията на цикъла работи отново и отново завинаги void loop () {digitalWrite (LED_PIN, LOW); // Включете светодиода (имайте предвид, че LOW е нивото на напрежението) закъснение (1000); // Изчакайте втори digitalWrite (LED_PIN, HIGH); // Изключете светодиода, като направите напрежението HIGH delay (1000); // Изчакайте две секунди}
Кодът е много прост, първо определих светодиодния щифт за тази платка и е на GPIO 16. След това зададох този щифт като изход в раздела за настройка. И накрая, в раздела за контури, включих и изключих щифта със закъснение от една секунда между тях.
Тестване на скица на уеб сървър на ESP8285
След като това работи добре, е време да тествате скицата HelloServer от примера ESP8266WebServer. Използвам пример за ESP8266, защото по-голямата част от кода е съвместим с чипа esp8285. Примерният код също може да бъде намерен в долната част на тази страница.
Този код също е много прост. Първо, трябва да дефинираме всички необходими библиотеки, #include
След това трябва да въведем името и паролата на точката за достъп.
#ifndef STASSID #define STASSID "your-ssid" #define STAPSK "your-password" #endif const char * ssid = STASSID; const char * парола = STAPSK;
След това трябва да дефинираме обекта ESP8266WebServer. Примерът тук го определя като сървър (80), а (80) е номерът на порта.
След това трябва да дефинираме щифт за светодиод, в моя случай това беше пин № 16.
const int led = 16;
След това е дефинирана функцията handleRoot () . Тази функция ще бъде извикана при обаждане на IP адреса от нашия браузър.
void handleRoot () {digitalWrite (led, 1); server.send (200, "text / plain", "здравей от esp8266!"); digitalWrite (led, 0); }
Следва функцията за настройка, чуйте, че трябва да дефинираме всички необходими параметри като-
pinMode (led, OUTPUT); // дефинирали сме led пина като изход Serial.begin (115200); // стартирахме серийна връзка с 115200 бод WiFi.mode (WIFI_STA); // зададохме wifi режима като станция WiFi.begin (ssid, парола); след това започваме wifi връзката Serial.println (""); // този ред дава допълнително пространство докато (WiFi.status ()! = WL_CONNECTED) {delay (500); Serial.print ("."); } / * в цикъл while тестваме състоянието на връзката, който ESP е в състояние да свърже с горещата точка, който цикълът ще спира * / Serial.println (""); Serial.print ("Свързан с"); Serial.println (ssid); Serial.print ("IP адрес:"); Serial.println (WiFi.localIP ());
След това отпечатваме името и IP адреса на свързания SSID в прозореца на серийния монитор.
server.on ("/", handleRoot); // on methode на сървърния обект се извиква, за да обработи коренната функция server.on ("/ inline", () {server.send (200, "text / plain", "и това работи");}); // отново извикахме метода on за / вградения пример server.begin (); // следващия стартираме сървъра с метода начало Serial.println ("HTTP сървърът стартира"); // и накрая отпечатваме изявление в серийния монитор. } //, което отбелязва края на функцията за настройка void loop (void) {server.handleClient (); }
Във функцията за цикъл сме извикали методите handleClient () , за да работим правилно esp.
След като това беше направено, платката ESP8285 отне известно време, за да се свърже с уеб сървъра и успешно работеше според очакванията, което бележи края на този проект.
Пълната работа на дъската може да бъде намерена и във видеото, свързано по-долу. Надявам се тази статия да ви е харесала и да научите нещо ново от нея. Ако имате някакви съмнения, можете да попитате в коментарите по-долу или да използвате нашите форуми за подробна дискусия.