Esp 01 фърмуер на arduino. ESP8266 фърмуер, програмиране в Arduino IDE

22.02.2024

Китайската компания Espressif през 2014 г. започна да продава Wi-Fi модули, базирани на чипове ESP8266. който веднага спечели голяма популярност сред радиолюбителите поради ниската си цена и големите си възможности. Днес има голям брой различни модули, базирани на чипа ESP8266; в тази статия ще говоря за ESP-01.

Технически параметри

Захранващо напрежение: 3V ~ 3.6V
Максимален работен ток: 220mA
Работна честота: 2.4 GHz
Режими: P2P (клиент), soft-AP (точка за достъп)
Брой GPIO: 2.
Флаш памет: 1024 kb.
Изходна мощност в режим 802.11b: +19.5dBm
Безжична стандартна поддръжка: 802.11 b/g/n
Размери: 24.8mm x 14.3mm x 8mm

Обща информация за ESP-01

По същество чипът ESP8266 е миниатюрен микроконтролер с Wi-Fi предавател, който може да работи напълно автономно, без допълнителна платка Arduino. С помощта на модула ESP-01 можете да предавате данни за температура, влажност, да включвате реле и т.н. За по-лесно използване на чипа ESP8266, производителят е произвел серия от модули от ESP-01 до ESP-14. Първият в тази серия е модулът ESP-01 (има и ESP-01S, повече за това малко по-късно), който е един от най-известните поради цената и малкия си размер, само 14,3 mm на 24,8 mm. Но има два недостатъка: ограничен брой програмируеми GPIO пинове и тяхното неудобно местоположение (неудобно за оформление).


Модулът ESP-01 представлява малка платка, черна, върху която са разположени два основни чипа, микроконтролер ESP8266 и флаш памет 1 MB. Наблизо има кварцитен резонатор и печатна антена. Платката има два светодиода, червен и син. Червеният светодиод свети, когато модулът има захранване, а синият мига, когато се изпълняват команди (червеният светодиод е премахнат от NSP-01S поради постоянна консумация на енергия). За свързване на модула ESP-01 са предвидени осем пина (два реда по четири пина, стъпка 2,54 mm), два от готовите са цифров вход-изход, поддържащи широчинно-импулсна модулация. Въпреки че модулът има два GPIO пина по подразбиране, можете да използвате други налични щифтове, ако имате необходимия инструмент за запояване.


Присвояване на ПИН
GND:"-" модулно захранване
GPIO2:(Програмируем цифров I/O)
GPIO0:(Програмируем цифров I/O, използва се и за режими на зареждане)
RX: UART приемане
TX: UART предаване
CH_PD:(включване/изключване на захранването, трябва да се изведе до 3,3 V директно или чрез резистор)
RST:нулиране, трябва да го дръпнете до 3.3V
VCC:“3.3V” модулно захранване

Модулна връзка
За работата на модула ESP-01 е необходим източник на постоянен ток, който трябва да осигурява 3,3 V и ток най-малко 250 mA. За съжаление стандартният стабилизатор, инсталиран на Arduino, не е в състояние да достави необходимия ток за работа на ESP-01 (ако все пак решите да свържете ESP-01, очаквайте нестабилна работа и постоянно рестартиране). В допълнение, логическият сигнал на този модул е ​​проектиран за 3,3 V, тоест напрежение от 3,3 V трябва да бъде приложено към RX щифта, а напрежение от 3,3 V ще се подава от TX щифта (същото за другите щифтове ). Ако трябва да свържете модула към Arduino или други контролери, които извеждат 5V към логическия щифт, трябва да използвате резистори или модул с логическо ниво; ако свържете директно, модулът ще се провали.

внимание! ESP-01 са много капризни, когато става въпрос за захранване, трябва да използвате външен регулатор на напрежението 3,3 V, аз ще използвам USB адаптер като първи пример

От таблицата по-горе се вижда, че модулът ESP-01 може да работи в няколко режима на заспиване, с минимална консумация на ток, те се извикват от софтуера, с изключение на последното „Изключване“, за да активирате този режим, трябва да инсталирайте джъмпер между GPIO16 и RST, по-късно ще ви дам пример.

Инсталиране на ESP8266 в Arduino IDE

Изтеглете програмата Arduino IDE от уебсайта arduino.cc
След това трябва да инсталирате ESP платката в Arduino IDE, стартирайте програмата Arduino IDE и отворете: Файл -> Настройки.
В нов отворен прозорец, в полето „ Допълнителни връзки за PCB Manager:» добавяне на връзка:

Http://arduino.esp8266.com/stable/package_esp8266com_index.json

В отворения прозорец потърсете " esp8266 от ESP8266 Communit y" и натиснете " Инсталирайте". Инсталацията ще отнеме няколко минути, след което съобщението „ Инсталиран", щракнете върху " затвори«

Щракнете върху " Инструменти -> Платки -> Модул Generis ESP8266«.

Сега трябва да свържете модула ESP-01 към компютъра чрез специален USB адаптер на чипа CH340G


Регулиране на честотата на процесора " Честота на процесора: "80 MHz"", скорост" Скорост на качване: "115200"" и изберете " Порт«.

След това качваме скица, която ще накара ESP8266 да мига светодиода.

/* Тествано на Arduino IDE 1.8.5 Дата на теста 15.06.2018 г. */ #define TXD 1 // GPIO1 / TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite(TXD, HIGH); delay(1000); digitalWrite(TXD, LOW); delay( 1000);

... Като цяло този материал не се ограничава само до една тема за Arduino.

Темата за ESP8266 е доста трудна. Но ако работите с тези Wi-Fi модули в средата за разработка Arduino IDE, прагът за влизане пада до ниво, приемливо за средния потребител на Arduino. И не само момчето от Arduino, но и всеки човек, който има желание да измисли нещо по темата IoT (Internet of Things), и то без да отделя много време за четене на документацията за чипа и изучаване на API за тези модули.

Това видео напълно дублира материала, представен в статията по-долу.

Е, вече знаем как да свържем ESP8266 и да го поставим в режим на програмиране, сега нека да преминем към нещо по-полезно.

Веднага ще кажа, че след като програмираме модула в средата за разработка на Arduino, ние унищожаваме родния фърмуер и вече няма да можем да работим с модула с помощта на AT команди. Лично това не ме кара да се охлажда/горещи, но ако някой има нужда от него, към края на статията ще ви покажа как да флашнете собствения фърмуер обратно в модула или някакъв вид буутлоудър като NodeMcu.

Като начало изтеглете най-новата версия на Arduino IDE от официалния уебсайт, в момента тя е 1.6.7. По-стари версии като 1.0.5. няма да се поберат, защото просто нямат необходимата функционалност и танците с тамбура не ни интересуват, нали?

Стартираме средата за разработка и веднага отиваме на Файл/Настройки:

Http://arduino.esp8266.com/stable/package_esp8266com_index.json

След това отидете на Tools/Board:/Board Manager...:

Пред нас ще се появи прозорец на мениджъра на борда, превъртете го до дъното и ако всичко е направено правилно, ще видим нещо подобно:

Щракнете с курсора върху надписа " esp8266от Общност ESP8266"след това имаме бутон" Инсталиране ", избираме желаната версия, вземам най-новата, днес е 2.1.0 и я инсталирам. Средата за разработка ще изтегли необходимите файлове (около 150 мегабайта) и срещу надпис " esp8266от Общност ESP8266Ще се появи „ИНСТАЛИРАНО“, тоест инсталирано:

Превъртаме надолу списъка с платки и виждаме, че имаме много различни ESP в списъка, вземете „Generic ESP8266 Module“:

Отидете на „Инструменти“ и изберете желания COM порт (за мен това е COM32) Arduino или USB UART конвертор, след което задайте скорост на качване: „115200“:

Задаваме скоростта на 74880 и „NL & CR“ и отново изключваме и подаваме захранване и той ще отговори с информация за отстраняване на грешки:

Имайте предвид, че 74880 не е основната скорост на ESP8266, тя просто изпраща информация за отстраняване на грешки. Ако модулът не изпраща нищо към конзолата, тогава нещо може да е свързано неправилно.

По подразбиране скоростта трябва да е 115200, но в някои случаи може да е 9600 и други... Така че опитайте да я намерите.

След като изберем необходимата скорост, изпращаме модула „AT“ и той трябва да отговори, че всичко е „ОК“. Командата "AT+GMR" показва информация за фърмуера.

Преди да започнете да мигате ESP8266 в Arduino IDE, съветвам ви да прочетете статията до края.

Сега нека се опитаме да флашнем ESP8266 чрез Arduino IDE. Поставяме модула в режим на програмиране (написах как да направя това в предишна статия).

Нека добавим стандартен светодиод към мигача:

// От г-н PodelkinTs youtube.com/RazniePodelki // специално за geektimes.ru/post/271754/ #define TXD 1 // GPIO1/TXD01 void setup() ( pinMode(TXD, OUTPUT); ) void loop() ( digitalWrite (TXD, HIGH); digitalWrite (TXD, LOW);

Блесна? Така че всичко беше направено правилно. Откъде разбрах, че светодиодът е свързан към първия пин? В предишната статия има снимка с разводки на различни модули и има маркировка на портовете при използване на буутлоудъра Arduino (щифтовете са маркирани в розово).

Мигането на светодиод разбира се е добре, но трябва да инсталираме някакъв вид уеб сървър или да започнем да контролираме светодиода поне с помощта на бутони в браузъра, нали? Но ще ви разкажа за това друг път.

И сега как да флашна обратно родния фърмуери как дори да флашнете модул с програми за зареждане на трети страни. За ESP8266 има такава програма като NodeMCU Flasher, която първоначално е предназначена за мигане на NodeMCU boot loader. Но както се оказа, той перфектно мига друг фърмуер.

Ще прикача архив с тази програма и фърмуер към статията за удобство, но винаги можете да изтеглите нова версия на NodeMCU Flasher.

В папката “nodemcu-flasher-master” има 2 папки, Win64 и Win32, и в зависимост от битовата дълбочина на вашата ОС изберете тази, от която се нуждаете. След това в папката Release стартирайте „ESP8266Flasher.exe“ и вижте интерфейса на програмата:

Изберете желания COM порт и отидете в раздела „Конфигурация“, премахнете кръста до „INTERNAL://NODEMCU“ и го поставете една точка по-ниско, както е на екранната снимка:

(Ако искате да флашнете буутлоудъра на NodeMCU, премахнете кръста там, където не е бил, и го поставете там, където е бил, тоест близо до „INTERNAL://NODEMCU“).

След това щракваме върху зъбното колело и избираме къде се намира нашият фърмуер, фърмуерът обикновено е във формат *.bin (в прикачения архив е „v0.9.5.2 AT Firmware.bin“, който е в главната папка) и изберете също „0x00000“ като и по-високо.

Връщаме се отново в раздела „Операция“, поставяме модула в режим на програмиране и щракнете върху „Flash“:

Това е всичко, модулът започна да се мига, след мигане, не забравяйте да рестартирате модула и готово, той е мига с фърмуера, от който се нуждаем.

Проверяваме с AT командата “AT+GMR” дали сме направили всичко правилно:

Както виждате, всичко мина гладко.

Moule esp-01
Диаграма на правилното свързване на модула esp-01 за програмиране и фърмуер.

Модулът се флашва, като се премине в режим на програмиране, като се задържи натиснат бутона FLASH, след което се натиска за кратко бутона RESET и се отпуска FLASH.
Модулът се превключва в режим на програмиране.
В терминала в този момент можете да видите

ets 8 януари 2013 г., първа причина: 2, режим на зареждане: (1.6)
boot mode:(1,6) - рестартирайте чрез RESET в режим на програмиране
boot mode:(1,7) - захранване рестартиране в режим на програмиране - което не е съвсем правилно.

За фърмуера ще използвам програмата ПРОГРАМИСТ НА ФЪРМУЕР NODEMCU
(Архив с програмата ще бъде прикачен към темата)
Разопаковайте архива и стартирайте в моя случай 32-битовата версия на програмата\Win32\Release\ESP8266Flasher.exe
Ние го конфигурираме за модула, в моя случай това е 1 мегабайт флаш памет или 8 мегабита.




Първата стъпка е да изтриете паметта с празен файл от 1 MB.
Това е незадължителен елемент. Можете да пропуснете изтриването и да отидете на фърмуера.
Тези, които имат повече или по-малко памет, се нуждаят от празен файл с подходящ размер.
След това определяме какъв фърмуер е необходим!
Можете да използвате готов фърмуер на NODEMCU или да го сглобите от дизайнер с модулите, от които се нуждаете.
Например, един от старите доказани NODEMCU

Конструктор wifi-iot.com/
Конструктор nodemcu-build.com/
или изтеглете най-новата

Проблеми с фърмуера
АкоМодулът esp8266 не мига, проверете издърпванията и правилната връзка към GND GPIO0. И също дали RX TX са объркани.
В терминала можете да проверите дали се показва boot mode:(1,6) или boot mode:(1,7).

Акослед неуспешен фърмуер модулът не работи, опитайте да изтриете паметта с празен празен файл с размера на вашата памет.

АкоМодулът не работи след успешен фърмуер и изпраща безкраен боклук към порта (светодиодът за предаване на данни може да мига), това се случва при мигане на най-новите компилации на Nodemcu, тогава ще трябва допълнително да флашнете файла в областта на паметта, в зависимост от чип памет.
Информацията за паметта е взета от уебсайта на nodemcu.
0x7c000 за 512 kB, модули като ESP-01,03,07
0xfc000 за 1 MB, модули като ESP8285, PSF-A85, но също и някои разновидности на esp-01,01s
0x1fc000 за 2 MB
0x3fc000 за 4 MB, тип модул ESP-12E, NodeMCU devkit 1.0, WeMos D1 mini и др.

Ако нищо друго не помогне, пишете...

Ще добавя официалната група на производителя на оборудването

В процеса на изучаване и проектиране на все по-сложни проекти идва моментът, когато възниква необходимостта и желанието да се научите как да работите с такъв общ тип комуникация като WiFi. Тъй като този тип комуникация може да ви позволи удобно да създадете единна мрежа за вашите интелигентни домашни устройства и да ги управлявате, например от мобилен телефон, таблет или компютър, тоест, с други думи, да създадете истински интелигентен дом, който ще струва вие десетки пъти по-малко, отколкото купувате готови решения в магазина. Използването на WiFi, разбира се, не се ограничава до това и има толкова много примери за използване на този тип комуникация, че няма смисъл да ги изброявате, а ако сте попаднали на тази страница, това означава, че вече трябва да използвате WiFi по някаква причина, просто трябва да разберете как да работите с него правилно.

Ще го разберем въз основа на най-евтиния и популярен WiFi модул ESP8266-01. Можете да закупите WiFi модул ESP8266-01 на нашия уебсайт.

Едно от основните предимства на такъв модул е ​​наличието на памет и собствен микроконтролер на платката, което му позволява да работи независимо чрез зареждане на скицата директно в самия модул.

Всъщност има доста модификации на модула ESP8266 WiFi и ние няма да ги изброяваме тук; след като се научите да работите с една, лесно можете да започнете да работите с други. Бих искал незабавно да отбележа, че работата с WiFi може да изглежда доста трудна задача и ако имате малко завършени проекти в багажа си, по-добре е засега да се откажете от WiFi комуникацията и да използвате радиокомуникации във вашите проекти, работейки с които е много по-лесно за разбиране. Създават се цели общности и тематични форуми за работа с WiFi модули, което още веднъж доказва колко трудно е за повечето хора веднага да разберат този тип комуникация и след повторно четене на цялата информация повечето хора просто се отказват. Най-вероятно няма да мога да събера цялата важна информация само в тази статия и няма смисъл да го правя, в противен случай това ще доведе до нова бъркотия. Ще се опитам да следвам пътя на стриктна последователност от най-важните точки, така че да започнете да разбирате принципа на действие на този тип комуникация и след това просто да развиете собствените си умения в тази посока.

И така, нека да започнем и първо да разгледаме щифтовете на WiFi модула ESP8266-01.

VCC- модулно захранване от 3V до 3.6V

GND- Земята.

RST- Изход за нулиране, отговорен за рестартиране на модула.

CH_PD- "chip power-down" при подаване на захранване към него се активира работата на модула.

TX- трансфер на данни (UART интерфейс)

RX- приемане на данни (UART интерфейс)

GPIO0

GPIO2- I/O порт с общо предназначение

Изводите GPIO0 и GPIO2 са точно същите цифрови изводи, с които работим на платките Arduino за взаимно свързване с различни сензори и се използват в случай на внедряване на независима работа на вътрешния WiFi микроконтролер на модула ESP8266-01.

За да захранвате надеждно модула ESP8266-01, използвайте външно стабилизирано захранване от 3,3 V и по-добре не се опитвайте да вземете захранване от вашата платка Arduino, тъй като модулът консумира ток до 215 mA и това може да завърши зле за вашата платка за отстраняване на грешки. От къде да вземете стабилизирано захранване на 3.3V, надявам се да не ви е проблем, иначе явно ви е рано да се занимавате с този модул. Например, обичам да използвам този захранващ модул 3,3 V и 5,0 V YWRobot за бързо сглобяване на вериги на макетни платки, което ви позволява бързо да получите стабилизирано напрежение от 3,3 V или 5 V на съответните захранващи пътища на макетната платка.

Свързване на плюса (+) от нашето 3.3V захранване към пин VCCмодул ESP8266-01 и минус (-) изведете източника на захранване към изхода GND. В това състояние червеният светодиод на модула ще светне, сигнализирайки, че захранването е свързано правилно. За да се активира модула е необходимо да се свърже и плюса (+) захранване с изх CH_PDмодул ESP8266-01 и е препоръчително това да става директно през резистор 10 kOhm. Сега, когато включим захранването, червеният светодиод на модула трябва да светне, а синият светодиод трябва да мига бързо няколко пъти. Ако това се случи с вас, значи всичко е наред, свързали сте всичко правилно и модулът ви работи. В противен случай проверете отново връзката или сменете модула, тъй като най-вероятно не работи.

Да продължим. За да работим с WiFi модула ESP8266, се нуждаем от USB-UART адаптер. Има различни адаптери, например: FT232RL, CP2102, PL2303. Но ще приемем, че нямате такива адаптери и ще използваме платка Arduino като USB-UART адаптер. Ще използвам платка Arduino NANO за това, но можете да използвате всяка друга на ваше разположение. Връзката на всяка платка е идентична. Правим връзката съгласно следната схема.

Нека да видим какво сме направили тук. Моля, незабавно обърнете внимание, че сме свързали щифтовете на платката Arduino с джъмпер RSTИ GND. Тази манипулация дезактивира микроконтролера и ни позволява да направим истински USB-UART адаптер от нашата Arduino платка.

Тъй като ние захранваме WiFi модула ESP8266-01 от отделно външно захранване, не забравяйте, че винаги трябва да свързваме земята на всички захранвания в нашите проекти. Затова свързваме изхода GNDАрдуино платки със земя (-) нашето външно захранване от 3,3 V, предназначено да захранва модула ESP8266-01.

Заключение TXсвържете вашата платка Arduino към щифта TXМодул ESP8266-01. Тази линия ще предава данни от WiFi модула към платката Arduino. Всеки, запознат с UART интерфейса, може да се чуди: „Но как е възможно това? Навсякъде учат, че TX трябва да се свързва с RX, а RX да получава.“ И ще бъдеш прав. Точно така, TX винаги е свързан към RX, но в случай, че правим UART адаптер от Arduino, е необходимо да свържете устройствата директно. Считайте това за изключение от правилото.

Линия RXНие също така свързваме вашата платка Arduino директно към линията RXМодул ESP8266-01. Тази линия ще предава информация от платката Arduino към платката на WiFi модула. Но ние правим тази връзка чрез така наречения делител на напрежението, състоящ се от два резистора с номинални стойности от 1 kOhm и 2 kOhm. Трябва да намалим напрежението на тази линия с помощта на два резистора (делител на напрежение), тъй като платката Arduino предава логически сигнал с напрежение 5V, а WiFi модулът работи с напрежение 3,3V. За да преобразуваме логическия сигнал, бихме могли да използваме специална карта за конвертор на логическо ниво, което разбира се би било по-правилно, но отново, нека приемем, че нямате такъв и трябваше да изберем по-прост път и да го направим с делител на напрежението.

Вече свързахме всичко необходимо за по-нататъшна работа, но все още имаме още 3 неизползвани пина ( GPIO0, GPIO2И RST) включено WiFi модул ESP8266-01. За стабилна работа на WiFi модула трябва да издърпаме тези останали неизползвани пинове на плюс (+) модулни захранващи линии чрез резистори 10 kOhm.

Това ще ни спести от различни смущения (смущения) и ще направи работата на модула стабилна. По-добре е да го направите веднага. В противен случай не се изненадвайте, че вашият модул е ​​постоянно претоварен, произвежда неразбираема информация или изобщо не иска да работи. Използването на издърпващи резистори на неизползвани щифтове на микроконтролер трябва да бъде основно правило, ако искате стабилна работа във вашите проекти.

И отново проверяваме функционалността на WiFi модула ESP8266-01. Включете захранването и вижте, че червеният светодиод светва, а синият светодиод премигва няколко пъти. Ако всичко се случи по този начин, тогава страхотно, да продължим. В противен случай проверяваме изправността на връзките, както и качеството на всички контакти. Може просто да е тривиална ситуация, когато сте проверили всичко десет пъти и сте се уверили, че всичко е свързано правилно, но когато включите модула, виждате, че синият светодиод не се държи адекватно, свети постоянно, постоянно мига, или изобщо не реагира на нищо. Това може да се дължи на лош контакт по някоя линия. Например, когато се сглобява верига на макетна платка, един от резисторите не седи плътно на мястото си и това причинява смущения. Проверете качеството на връзките. Модулът е много чувствителен. Не пренебрегвайте това. Това е често срещана причина за нестабилна работа.

Общо взето приключихме с връзката. Сега трябва да подготвим програмата Arduino IDE за работа с WiFi модула ESP8266-01. За да направим това, трябва да изтеглим и инсталираме в Arduino IDE необходимия архив с библиотеки, примери и ESP платки, което впоследствие ще ни позволи да качваме скици директно в микроконтролера на модула ESP8266-01, да променяме фърмуера и т.н. За целите на тази статия най-вероятно няма да имаме нужда от тези настройки, но ми се струва, че след като разберем как да свържем модула, процедурата ще бъде правилна, ако веднага изтеглим всичко необходимо за работа с Arduino IDE . Всичко тук е просто по принцип.

Стартирайте програмата Arduino IDEи отидете в менюто "Файл" - "Настройки"

В прозореца, който се показва, в горното поле пишем „esp8266“. В резултат на това в прозореца ще имаме само необходимия фърмуер. Когато щракнете върху фърмуера, ще се появи бутон "Инсталация". Кликнете върху бутона "Инсталация"и изчакайте, докато всичко се инсталира. Архивът е доста голям, около 150 мегабайта, така че ще трябва да изчакате.

След като инсталацията приключи. Рестартираме Arduino IDE и виждаме как новите ESP платки са се появили в менюто „Инструменти“ - „Дъски“. това е всичко Приключихме с настройката на Arduino IDE. Засега не се нуждаем от тези настройки, но в бъдеща работа няма да можем без тях.

Имаме всичко свързано и подготвено, сега можем да започнем да разбираме контролите. Всъщност сега ще продължим да проверяваме и конфигурираме модула с помощта на AT команди и няма начин да се направи без него. WiFi модулите са внедрени по такъв начин, че цялата комуникация с тях се осъществява с помощта на така наречените AT команди, които са свързани във фърмуера на модула. Тук няма да изброяваме всички AT команди, има доста от тях и ако искате да проучите всичко внимателно, можете лесно да ги намерите в Интернет. И сега ще използваме само най-необходимото, за да започнем.

И така, свързваме нашата платка Arduino чрез USB кабел към компютъра. И външен източник на захранване, който захранва WiFi модул ESP8266-01Все още не е необходимо да го включвате. Стартираме програмата Arduino IDE, избираме нашата платка Arduino от менюто „Инструменти“, в моя случай това е Arduino NANO и вие избирате вашата. Също така не забравяйте да изберете порта, към който е свързан нашият Arduino. Надявам се, че разбирате всичко това и знаете как да го направите.

Мониторинг на отворен порт "Инструменти" - "Монитор на портове". Избор на скоростта на порта 74880 (при тази скорост модулът стартира) и изберете “NL & CR” в списъка вляво

Сега свързваме външен източник на захранване, който захранва нашия WiFi модул. След което трябва да видите приблизително следната информация в монитора на порта.

Тук виждаме малко информация за нашия WiFi модул (скорост, количество памет на борда и т.н.). Получената информация може да се различава в зависимост от версията на фърмуера на WiFi модула. Нека не се фокусираме върху това. Нещо друго е важно. По-долу виждаме набор от безсмислени знаци, това означава, че скоростта на порта (74880 бода), която сме задали, е подходяща само за първоначалното зареждане на модула, за да видите тази информация нормално, но тази скорост не е подходяща за нормална комуникация с WiFi модула.

За да изберем правилната скорост на порта, ние просто ще променим скоростта на порта и ще изпратим символи към порта (полето в горната част и бутона за изпращане) ATдокато получим отговор добре. Ако се опитате да изпратите символи точно сега ATкъм порта със скорост 74880, ще получите още един или два безсмислени знака в отговор.

Опитайте веднага да зададете скоростта на 115200 бода и да изпратите AT команда. Най-често модулите се мигат с тази скорост.

Това е картината, която трябва да видите на вашия порт монитор. Ако все още получавате неразбираем набор от знаци в отговор, намалете скоростта и изпратете отново ATкоманди, докато отговорът се върне добре. Ако сте опитали всички скорости и не сте получили правилния отговор, тогава нямате късмет и модулът се флашва с фърмуер с нестандартна скорост. След това остава само да презаредите модула с нормален фърмуер, но това е тема за отделна статия.

Надявам се, че всичко е наред и сте избрали правилната скорост. Между другото, ако се опитате да изключите и включите отново WiFi модула, след като сте избрали правилната скорост, тогава вместо същата първоначална информация, която беше правилно показана при скорост от 74880 бода, вие, напротив, вижте разбъркан набор от знаци, но в края ще видите думата „готов“ ". Но имаме възможност да видим тази първоначална информация в нормална форма с правилната скорост; за това трябва програмно да рестартираме модула с помощта на AT командата AT+RST.

За да разберете версията на фърмуера на вашия WiFi модул ESP8266-01, трябва да изпратите команда до монитора на порта AT+GMRи в отговор ще получите приблизително следната информация:

WiFi модулът ESP8266-01 може да работи както в режим на точка за достъп, така и в режим клиент. За да позволите на модула да работи във всички режими наведнъж, изпратете командата до монитора на порта AT+CWMODE=3и в отговор трябва да получите добре.

Екип AT+CWLAPще ви позволи да видите всички WiFi точки за достъп, които вашият модул вижда в момента. Моят модул, например, в момента вижда само три WiFi точки за достъп в зоната на покритие. Отговорът трябва да бъде нещо подобно:

Например знаем паролата за третата точка за достъп и за да се свържем с нея, изпълняваме командата AT+CWJAP="име","парола", в моя случай тази команда изглежда така AT+CWJAP="dsl_unlim_512_home","11111111", на което получаваме успешен отговор:

Командните параметри се записват във флаш паметта на WiFi модула ESP8266-01 и ако изключим модула и го включим отново, той автоматично ще се свърже с тази точка за достъп. Виж, случайно не позволявай интервал в командата, иначе ще получиш отговор ГРЕШКА. Моля, имайте предвид, че в най-новите версии на фърмуера се препоръчва да използвате командата AT+CWJAP_CUR, тоест командата ще изглежда така AT+CWJAP_CUR="име","парола".Ако изведнъж сме забравили към коя точка за достъп е свързан нашият модул, трябва да изпратим команда AT+CWJAP?или AT+CWJAP_CUR?и в отговор ще получим точката за достъп, към която в момента е свързан WiFi модулът.

С връзка и първоначална настройка WiFi модул ESP8266-01разбрахме го. Модулът работи и е готов за реализиране на Вашите бъдещи проекти. Просто не е възможно да се анализират всички възможни примери за работа с този модул в рамките на една статия и ще се занимаваме с това в следващите статии. А за тези, които не са много запознати с програмирането, но наистина искат бързо да започнат да управляват своите проекти с помощта на WiFi, препоръчвам да ги запознаете с дизайнера на проекти RemoteXY WiFi. Този сайт ще ви помогне лесно да създадете контролен интерфейс за вашия мобилен телефон или таблет и да го използвате, за да контролирате вашето устройство, към което свързвате WiFi модул.

Много потребители вече са насочили вниманието си към чипа ESP8266-12, издаден от Espressif. Цената му е значително по-евтина в сравнение със стандартна Bluetooth адаптерна платка и въпреки по-малките си размери има значително по-големи възможности. Сега всички домашни ентусиасти имат възможност да работят в Wi-Fi мрежа в два режима наведнъж, тоест да свържат компютъра си към всякакви точки за достъп или да го включат като такава точка.

От друга страна, трябва правилно да разберете, че такива табла не са просто щитове, предназначени само за Wi-Fi комуникация. Самият ESP8266 е микроконтролер, който има собствени интерфейси UART, GPIO и SPI, тоест може да се използва като напълно автономно оборудване. След пускането на този чип мнозина го нарекоха истинска революция и с течение на времето такива устройства ще започнат да се вграждат дори в най-простите видове оборудване, но засега устройството е сравнително ново и няма стабилен фърмуер за него. Много експерти по света се опитват да измислят свой собствен фърмуер, тъй като качването им на дъската всъщност не е трудно, но въпреки различни трудности, устройството вече може да се нарече доста подходящо за работа.

В момента се разглеждат само два варианта за използване на този модул:

  • Използване на платката в комбинация с допълнителен микроконтролер или компютър, който ще управлява модула чрез UART.
  • Независимо писане на фърмуер за чипа, което ви позволява по-късно да го използвате като самостоятелно устройство.

Съвсем естествено е, че в този случай няма да разглеждаме независим фърмуер.

Гледайки лекотата на използване и добрата производителност, много хора предпочитат модела ESP8266 сред многото микроконтролери. Свързването и актуализирането на фърмуера на това устройство е изключително лесно и достъпно и се извършва на същия хардуер, на който оборудването е свързано към компютъра. Тоест и чрез USB-TTL конвертор или, ако някой предпочита други опции за свързване, може да стане през RPi и Arduino.

Как да проверя?

За да проверите функционалността на новозакупеното устройство, ще трябва да използвате специален стабилизиран източник на напрежение с номинално напрежение 3,3 волта. Заслужава да се отбележи веднага, че действителният обхват на захранващото напрежение на този модул е ​​от 3 до 3,6 волта, а подаването на повишено напрежение незабавно ще доведе до факта, че просто ще повредите вашия ESP8266. Фърмуерът и друг софтуер може да започнат да работят неправилно след такава ситуация и ще трябва да поправите устройството или да го поправите по някакъв начин.

За да определите функционалността на този модел микроконтролер, трябва само да свържете три пина:

  • CH_PD и VCC са свързани към захранване от 3,3 волта.
  • GND се свързва към земята.

Ако не използвате ESP-01, а някакъв друг модул и той вече първоначално има изход GPIO15, тогава в този случай ще трябва да го свържете допълнително към земята.

Ако фабричният фърмуер стартира нормално, тогава в този случай можете да видите и след това синята светлина ще мига няколко пъти. Заслужава обаче да се отбележи, че не всички устройства от серията ESP8266 имат червен индикатор за захранване. Фърмуерът на някои устройства не предвижда червеният индикатор да свети, ако модулът няма такъв (по-специално това се отнася за модела ESP-12).

След като се свържете, нова точка за достъп ще бъде активирана във вашата безжична мрежа, която ще се нарича ESP_XXXX и ще може да бъде открита от всяко устройство, което има достъп до Wi-Fi. В този случай името на точката за достъп директно зависи от производителя на фърмуера, който използвате, и следователно може да е нещо различно.

Ако точката се появи, можете да продължите да експериментирате, в противен случай ще трябва да проверите отново захранването, както и правилността на връзките GND и CH_PD и ако всичко е свързано правилно, най-вероятно все още се опитвате да използвайте повреден модул или на. Просто има инсталиран фърмуер с нестандартни настройки.

Как бързо да го свържете?

Стандартният комплект, необходим за свързване на този модул, включва следното:

  • самият модул;
  • макет без спойка;
  • пълен комплект женски-мъжки проводници, предназначени за макетна платка, или специален кабел DUPONT M-F;
  • USB-TTL конвертор, базиран на PL2303, FTDI или някакъв подобен чип. Най-добрият вариант е, ако RTS и DTR също се извеждат към USB-TTL адаптера, тъй като благодарение на това можете да постигнете сравнително бързо зареждане на фърмуера от някои UDK, Arduino IDE или Sming, без дори да се налага ръчно да превключвате GPIO0 към маса.

Ако използвате 5-волтов преобразувател, тогава в този случай ще трябва да закупите допълнителен стабилизатор на мощността, базиран на чипа 1117 или някакъв подобен, както и източник на захранване (за стандартен 1117, дори обикновен 5- волтовото зарядно за смартфон е доста подходящо). Препоръчително е да не използвате Arduino IDE или USB-TTL като източник на захранване за ESP8266, а да използвате отделен, тъй като това в крайна сметка може да се отърве от много проблеми.

Разширен комплект за осигуряване на удобна и постоянна работа на модула изисква използването на допълнителни резистори, светодиоди и DIP превключватели. Освен това можете да използвате и евтин USB монитор, който ще ви позволи постоянно да наблюдавате количеството консумиран ток, а също така ще осигурите малка защита на USB шината от

какво трябва да направя

На първо място, заслужава да се отбележи фактът, че в ESP8266 контролите може да са малко по-различни в зависимост от това кой конкретен модел използвате. Днес има доста такива модули и първото нещо, от което се нуждаете, е да идентифицирате модела, който използвате, и да вземете решение за неговия pinout. В тази инструкция ще говорим за работа с модула ESP8266 ESP-01 V090 и ако използвате друг модел с GPIO15 щифт (HSPICS, MTDO), ще трябва да го издърпате на земята както за стандартния старт на модула и да използвате режима на фърмуера.

След това проверете отново дали захранващото напрежение за свързания модул е ​​3,3 волта. Както бе споменато по-горе, допустимият диапазон е от 3 до 3,6 волта и ако се увеличи, устройството излиза от строя, но захранващото напрежение дори може да бъде значително по-ниско от 3 волта, посочени в документите.

Ако използвате 3,3-волтов USB-TTL конвертор, свържете модула точно както е показано вляво на снимката по-долу. Ако използвате изключително петволтов USB-TTL, тогава обърнете внимание на дясната страна на фигурата. На мнозина може да изглежда, че правилната верига е по-ефективна поради факта, че използва отделен източник на захранване, но всъщност в случай на използване на 5-волтов USB-TTL преобразувател е много желателно да се направи и допълнителен резисторен делител, за да осигури съвпадение на триволтови и петволтови логически нива, или просто използвайте модула за преобразуване на ниво.

Характеристики на връзката

Дясната фигура показва свързването на UTXD (TX), както и URXD (RX) на този модул към петволтова TTL логика и такива процедури се извършват само на ваша собствена опасност и риск. За ESP8266 описанието казва, че модулът работи ефективно само с 3,3-волтова логика. В по-голямата част от случаите, дори когато работите с петволтова логика, оборудването не се проваля, но понякога възникват такива ситуации, така че такава връзка не се препоръчва.

Ако нямате възможност да използвате специализиран 3,3-волтов USB-TTL конвертор, можете да използвате резисторен делител. Също така си струва да се отбележи, че в дясната снимка стабилизаторът на мощност 1117 е свързан без допълнително окабеляване и това е наистина работеща технология, но все пак е най-добре да използвате схемата на свързване 1117 с кондензаторно окабеляване - трябва да го проверите с листа с данни ESP8266 за вашия стабилизатор или използвайте напълно готов един модул, базиран на базата 1117.

За да стартирате модула, трябва да отворите веригата GPIO0-TND, след което можете да подадете захранване. Струва си да се отбележи, че всичко трябва да се направи точно в този ред, тоест първо се уверете, че GPIO0 „виси във въздуха“ и едва след това подайте захранване към CH_PD и VCC.

Как да се свържете правилно?

Ако можете да отделите повече от една вечер, за да свържете правилно модула ESP8266, можете да използвате по-стабилна опция. На диаграмата по-горе виждате опция за свързване с автоматично изтегляне на фърмуера.

Струва си да се отбележи, че изображението по-горе не показва използването на безплатни GPIO или ADC и тяхната връзка ще зависи пряко от това какво точно искате да внедрите, но ако искате да осигурите стабилност, не забравяйте да изтеглите всички GPIO към захранването и ADC към земята с помощта на издърпващи резистори.

Ако е необходимо, 10k резистори могат да бъдат заменени с всякакви други в диапазона от 4,7k до 50k, с изключение на GPIO15, тъй като неговата стойност не трябва да бъде повече от 10k. Стойността на кондензатора, който изглажда високочестотните пулсации, може да е малко по-различна.

Свързването на RESET и GPIO16 чрез използването на резистор за дълбок сън от 470 ома може да се наложи при използване на подходящия режим, тъй като за да излезе от режим на дълбок сън, модулът извършва пълно рестартиране чрез прилагане на ниско ниво към GPIO16. Без тази връзка режимът на дълбок сън за вашия модул ще продължи вечно.

На пръв поглед може да изглежда, че GPIO0, GPIO1 (TX), GPIO2, GPIO3 (RX) и GPIO15 са заети, така че няма да можете да ги използвате за вашите цели, но всъщност това далеч не е така. Достатъчно високо ниво на GPIO0 и GPIO2, както и ниско ниво на GPIO15 може да са необходими само за първоначалното стартиране на модула, а в бъдеще можете да ги използвате по свое усмотрение. Единственото нещо, което си струва да се отбележи, е да не забравяте да осигурите необходимите нива, преди да извършите пълно нулиране на вашето оборудване.

Можете също да използвате TX, RX като алтернатива на GPIO1 и GPIO3, но не забравяйте, че след като модулът стартира, всеки фърмуер започва да „дърпа“ TX, като едновременно с това изпраща информация за отстраняване на грешки към UART0 със скорост 74480, но след изтеглянето ще бъде успешно, те могат да се използват не само като UART0 за обмен на данни с друго устройство, но и като стандартни GPIO.

За модули, които имат малък брой кабелни щифтове (например ESP-01), няма нужда да свързвате отменени щифтове, тоест само GND, CH_PD, VCC, GPIO0, GPIO2 и RESET са свързани към ESP-01 , и това са тези, от които се нуждаете, ще трябва да бъдат затегнати. Няма нужда да запоявате директно към чипа ESP8266EX и след това да издърпвате голите щифтове, освен ако наистина не ви трябва.

Такива електрически схеми бяха използвани след голям брой експерименти, извършени от квалифицирани специалисти и събрани от много различна информация. Струва си да се отбележи, че дори такива схеми не могат да се считат за идеални, тъй като могат да се използват редица други, не по-малко ефективни опции.

Връзка чрез Arduino

Ако по някаква причина нямате 3,3 волтов USB-TTL конвертор, тогава WiFi модулът ESP8266 може да бъде свързан чрез Arduino с вграден конвертор. Тук първо ще трябва да насочите вниманието си към три основни елемента:

  • Когато се използва с ESP8266, Arduino Reset първоначално е свързан към GND, за да предотврати стартирането на микроконтролера, и в тази форма се използва като прозрачен USB-TTL конвертор.
  • RX и TX не бяха свързани „на кръстопътя“, а директно - RX-RX (зелен), TX-TX (жълт).
  • Всичко останало е свързано точно както е описано по-горе.

Какво да вземете предвид

Тази схема също изисква съпоставяне на нивата на TTL от 5 волта на Arduino, както и 3,3 волта на ESP8266, но може да функционира доста добре и в двата случая.

Когато е свързан към ESP8266, Arduino може да е оборудван с регулатор на мощността, който не може да се справи с тока, изискван от ESP8266, така че ще трябва да проверите листа с данни за този, който използвате, преди да го активирате. Не се опитвайте да свържете други енергоемки компоненти с ESP8266, тъй като това може да доведе до повреда на регулатора на мощността, вграден в Arduino.

Има и друга схема за свързване на ESP8266 и Arduino, която използва SoftSerial. Тъй като за библиотеката SoftSerial скоростта на порта 115200 е твърде висока и не може да гарантира стабилна работа, този метод на свързване не се препоръчва, въпреки че има някои случаи, в които всичко работи доста стабилно.

Връзка чрез RaspberryPi

Ако изобщо нямате USB-TTL конвертори, тогава можете да използвате RaspberryPi. В този случай за ESP8266 програмирането и свързването се извършват почти идентично, но всичко тук не е толкова удобно и освен това ще трябва да използвате 3,3-волтов стабилизатор на мощността.

Като начало свързваме RX, TX и GND на нашето устройство към ESP8266 и вземаме GND и VCC от този, предназначен за 3,3 волта. Тук трябва да се обърне специално внимание на факта, че трябва да свържете всички GND устройства, тоест стабилизатора RaspberryPi и ESP8266. Ако стабилизаторът, вграден в модела на вашето устройство, може да издържи до 300 милиампера допълнително натоварване, тогава в този случай свързването на ESP8266 е съвсем нормално, но всичко това се прави само на ваша отговорност и риск.

Настройка на параметри

След като сте разбрали как да свържете ESP8266, трябва да се уверите, че драйверите за вашите устройства са инсталирани правилно, в резултат на което към системата е добавен нов виртуален сериен порт. Тук ще трябва да използвате програма - терминал за сериен порт. По принцип можете да изберете всяка помощна програма според вашия вкус, но трябва правилно да разберете, че всяка команда, която изпращате към серийния порт, трябва да има символите CR+LF в края.

Помощните програми CoolTerm и ESPlorer са доста разпространени, като последният ви позволява да не влизате сами в ESP8266 и в същото време улеснява работата с lua скриптове под NodeMCU, така че може да се използва като стандартен терминал.

За да се свържете нормално, ще трябва да свършите много работа, тъй като фърмуерът за ESP8266 е предимно разнообразен и активирането може да се извърши с различни скорости. За да изберете най-добрия вариант, ще трябва да преминете през три основни опции: 9600, 57600 и 115200.

Как да сортирам?

За да започнете, свържете се към виртуалния сериен порт в програмата на терминала, като зададете параметрите на 9600 8N1, след това извършете пълно рестартиране на модула, като изключите CH_PD (разрешаване на чип) от захранването и след това го активирайте отново, като дръпнете CH_PD. Можете също така да извършите кратко RESET към маса, за да нулирате модула и да наблюдавате данните в терминала.

Първо, светодиодите на устройството трябва да изглеждат точно както е показано в тестовата процедура. Също така трябва да наблюдавате набор от различни знаци в терминала, който ще завърши с готов ред, а ако го няма, се извършва повторно свързване към терминала с различна скорост, последвано от рестартиране на модула.

Когато видите този ред в една от опциите за скорост, можете да считате, че модулът е готов за работа.

Как да актуализирам фърмуера?

След като инсталирате ESP8266, свързването на устройството ще отнеме само няколко секунди и след това можете да започнете да актуализирате фърмуера. За да инсталирате нов софтуер, трябва да направите следното.

За да започнете, изтеглете новата версия на фърмуера от официалния уебсайт и изтеглете специална помощна програма за фърмуера. Тук трябва да се обърне специално внимание на това каква операционна система е инсталирана на машината, с която работи ESP8266. Най-добре е да свържете устройството към системи, по-стари от Windows 7.

За стандартните операционни системи Windows би било оптимално да използвате програма, наречена XTCOM UTIL, която е особено удобна за използване, ако фърмуерът се състои само от един файл. Най-добрата опция за много платформи е помощната програма esptool, която обаче изисква python, както и необходимостта от задаване на параметри чрез командния ред. В допълнение, ESP8266 ви позволява удобно да свържете основните функции с Flash Download Tool, който има доста голям брой настройки, както и удобна технология за инсталиране на фърмуер от няколко файла.

След това изключете вашата терминална програма от серийния порт и също така напълно изключете CH_PD от захранването, свържете GPIO0 на модула към GND и след това CH_PD може да бъде върнат обратно. В крайна сметка просто стартирайте модулната програма за фърмуер и я заредете в релето ESP8266.

В по-голямата част от случаите фърмуерът се зарежда в модула със скорост около 115200, но специален режим осигурява автоматично разпределение на скоростта, в резултат на което фърмуерът може да се извърши със скорост над 9600, актуализирайки наличните функции на ESP8266. Arduino беше използван за връзка или USB-TTL - тук не играе специална роля и тук максималната скорост вече зависи от дължината на проводниците, използвания конвертор и редица други фактори.