ESP8266 "Witty Cloud" е най-успешният WiFi модул за DIY и интелигентен дом в момента. ESP8266 ESP07 WiFi модул за домашна автоматизация

Беше топло поздравен от общността на Хабра. Въпреки факта, че съдържаше малко конкретна информация... Имаше основателна причина за това - NDA, който подписахме, за да получим SDK от производителя на решението, Espressif. Ето защо ние просто казахме: „Е, има такова решение“. Така че тези, които се интересуват, имат възможност да обърнат внимание.

Онзи ден ние (проектът COOLRF, не забравяйте абонирайте се за нашата общност VKontakteако все още не сте член) са получили разрешение от производителя на чипове да публикуват информация в нашите статии, която преди това попада в условията на споразумение за неразкриване. Който се интересува от подробности - добре дошъл под кат.

Типични случаи на употреба

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

Има две опции за използване на чипа: 1) като UART-WIFI мост, когато модул, базиран на ESP8266, е свързан към съществуващо решениебазиран на всеки друг микроконтролер и управляван от AT команди, осигуряващ свързване на решението с Wi-Fi инфраструктурата; 2) внедряване на ново решение, използващо самия чип ESP8266 като контролен микроконтролер.

Първият сценарий беше описан накратко в последната ни статия. Реализира се с помощта на някой от евтините китайски модули ESP8266. Много подходящ за любителите на arduino и тези, които вече имат в ръцете си готов схематичен и отстранен фърмуер, базиран на нещо свое, любимо.

Втората версия на скрипта включва писане на индивидуален фърмуер за управление на чипа "отвътре". V този моментфърмуерът трябва да е написан за собствен компилатор. С което по принцип са свързани изискванията за неразкриване на информация около това решение. В обозримо бъдеще производителят планира да премине към използване на GCC и тези ограничения ще бъдат премахнати.

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

Основни функции

Чипът ESP8266 е едно от най-интегрираните WiFi решения. Много от всичко, което често е част от външната лента в конкурентни решения, се вписва вътре в чипа:

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

Подобрена версия на 32-битовия процесор от серия L106 Diamond на Tensilica управлява тази интегрирана ферма. Какво интересно има вътре?

  • 802.11 b / g / n протокол
  • Wi-Fi Direct (P2P), soft-AP
  • Интегриран стек от TCP/IP протоколи
  • Интегриран TR превключвател, балун, LNA, усилвател на мощност и съответстваща мрежа
  • Интегриран PLL, регулатори и блокове за управление на мощността
  • + 20.5dBm изходна мощност в режим 802.11b
  • Поддържа разнообразие от антени
  • Ток на утечка при изключване на захранването на< 10uA
  • SDIO 2.0, SPI, UART
  • STBC, 1x1 MIMO, 2x1 MIMO
  • A-MPDU & A-MSDU агрегиране и 0.4μs предпазен интервал
  • Събудете се и прехвърлете пакети< 22ms
  • Консумация на енергия в режим на готовност на< 1.0mW (DTIM3)

Технология с ултра ниска мощност

Консумацията на енергия е една от най-големите важни характеристикирешение, което твърди, че е мозъкът на милиарди IoT устройства. Каква е причината за популярността на BLE и различни патентовани имплементации на радио интерфейс? В крайна сметка всички устройства, базирани на тези реализации, все още се стремят да влязат в обикновен Wi-Fi, използвайки специални мостови устройства.

Тайната е проста - трудно е да се създаде устройство, свързано с WiFi, което да работи на автономно захранване за достатъчно време. Потребителите не са готови да сменят батериите на сензорите на всеки два до три месеца. Следователно „достъпът до мрежата“ трябваше да бъде осигурен с мостове, свързани с постоянно електричество. ESP8266 трябва да реши този проблем. Сега Wi-Fi може да се използва дори в самостоятелни сензори, захранвани от малки батерии. Чрез използването на усъвършенствани механизми за управление на захранването на решението.

Ако погледнете набързо характеристиките на потреблението на чипа, може да сте на тъмно. 215mA в режим на предаване - нищо особено? Да, но след като прочетете листа с данни, започвате да разбирате перспективите на решението. ESP8266 черпи около 60uA в дълбок сън (при работещ часовник в реално време) и по-малко от 1,0 mA (DTIM = 3) или по-малко от 0,5 mA (DTIM = 10)като същевременно поддържа връзка с Wi-Fi точка за достъп.

Модулът на чипсета ESP8266 е прост и евтин начиндобавете функции към вашето устройство безжиченчрез Wi-Fi.

Използвайте ESP8266, за да управлявате устройството си дистанционно или да взимате показания от сензори през интернет. Свържете притурката си към социални мрежиили да реагирате на данните, които получавате чрез API от уеб услуги.

Има много разновидности в семейството модули ESP8266. Представеният модул е ​​ESP-01. Него WiFi антенавградени в платката, а 2 свободни GPIO порта са допълнително изведени към краката.

Взаимодействие

Контролното устройство комуникира с ESP8266 през UART (сериен порт) с помощта на набора от AT команди. Следователно работата с модула е тривиална за всяка платка с UART интерфейс: използвайте Arduino, Raspberry Pi, каквото сърцето ви пожелае.

Работата по получаване и предаване на данни изглежда като взаимодействие с необработен TCP сокет или сериен порт на компютър.

Освен това модулът може да бъде презареден. Можете да програмирате и изтеглите фърмуер чрез Arduino IDE, точно както при работа с Arduino. Отговарянето на AT команди е просто функция на стандартния фърмуер, инсталиран във фабриката. И можете да напишете своя собствена, ако проектът го изисква. Тъй като има 2 I/O порта на модула с общо предназначение, можете изобщо без контролна платка: просто свържете периферните устройства директно към тях.

За да може Arduino IDE да се научи как да флашва ESP8266, достатъчно е да добавите директорията с конфигурацията на платформата към папката с вашите скици.

За физическа връзкаКогато мигате, ще ви трябва USB към UART конвертор или платка Arduino / Iskra, конфигурирана за режим на USB мост.

Хранене

Основното напрежение на модула е 3,3 волта. Неговите щифтове не толерира 5 волта... Ако приложите напрежение по-високо от 3,3 волта към захранването, комуникациите или I/O щифта, модулът ще се повреди.

Следователно, за да прехвърлите данни към модула от 5-волтови контролни платки, използвайте, за да приведете напрежението в приемливия диапазон. Ще работи разделител на два резистора с една и съща стойност (например 10 kΩ).

Не са необходими посредници за получаване на данни. Сигнал от 3,3 V ще се възприема като логическа единица от контролната платка.

Захранване на модула дори с 3,3 волта. Те могат да бъдат получени от отделен регулатор на напрежението.

Модулът консумира 220 mA на пик. Регулаторът на напрежението, използван на платките 5V Arduino за 3.3V щифт, може да не е достатъчен. Обърнете внимание на характеристиките на вашата дъска. Например, Arduino Uno и Arduino Leonardo могат да извеждат не повече от 50 mA от 3.3V щифта, така че трябва да използвате външен регулатор; и Iskra Neo може да захранва до 800mA, така че може да захранва ESP8266 директно от платката.

Pinout

Поради разположението на краката близо до 2 реда, модулът не може да се монтира на макетната платка. Използвайте прототипна платка за запояване или проводници с женски конектори за свързване към щифтовете на модула.


Миниатюрните WiFi модули ESP8266 са доста атрактивни за системи умен доми домашна автоматизация... Наричат ​​ги още „убийци на NRF24L01“.
Поръчах си по-късните модификации ESP07 и ESP12, които са по-малки и Голям бройполучени GPIO, което не изисква "хакове" за използване на допълнителни I/O портове в тях.

Тези модули са разработени китайска компания

Спецификации:

  • WIFI: 802.11 b / g / n с WEP, WPA, WPA2.
  • Режими на работа: клиент (STA), точка за достъп (AP), клиент + точка за достъп (STA + AP).
  • Захранващо напрежение 1.7..3.6 V.
  • Консумационен ток: до 215mA в зависимост от режима на работа.
  • Брой GPIO: 16.
  • Флаш памет 512kb.
  • RAM за данни 80 kb
  • Инструкции за RAM - 32 kb.
Относно модификациите на модула ESP8266

Поръчах модулите през януари.
Цена - $3,78, - $4,24. Купих премия за преглед на статия. Пристигнахме за 31 дни в запечатани торби







ESP8266 ESP-07




ESP8266 ESP-12




Отне доста време за съживяването на модула
За да направите това, трябва да приложите 3.3V към него. Освен това стабилизаторите на USB / UART преобразувателите не дърпат този модул чрез ток, така че е необходимо външно захранване.

RXD, TXD и GND са свързани чрез към компютъра.

В резултат на това сглобих следната схема на макет.

Тук веднага се натъкнах на следната трудност - стъпката на дупките за ESP07 е 2 мм, а не 2,5 като за щифтовите конектори, използвани в Arduino и други места.
Трябваше да запоя макетната платка на проводници





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

След това стартирах програмата CollTerm и на скорост 9600 получих покана от модула.
AT + GMR команда, издадена 0020000904 (версия на SDK - 0020, във версия AT - 0904)


За тези, които са твърде мързеливи, като мен, за да се справят с AT команди, има една, която ви позволява да конфигурирате всичко това.

Направих фърмуера. Защото тази програмаработи само с COM1-COM6, трябваше да сменя моя COM33 от USB / UART конвертора на COM6 в диспечера на устройства.

Освен това фърмуерът не е труден: отваряме порта и се свързваме. Скоростта се избира автоматично. Основното нещо е да не забравите да поставите GPIO0 на земята (имам специален джъмпер за това). Скоростта се избира автоматично. Понякога връзката не е била установена. Натискането на бутона RESET по време на връзката помогна.



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


Успях да стартирам модула за налягане / температура BMP180, свързан към GPIO2 и GPIO0

За да направя това, изтеглих файла bmp180.lua от готови модули, които идват с фърмуера от GITHUB
И след това файлът init.lau се изпълнява при зареждане на ESP8266
tmr.alarm (1, 5000, 1, функция () print ("ip:", wifi.sta.getip ()) bmp180 = изисква ("bmp180") bmp180.init (4, 3) tmr.stop (1) - край на спиране на алармата)

Изпълнението на програма без забавяне на таймера доведе до постоянна грешка.
След рестартиране кодът
bmp180.read (OSS) t = bmp180.getTemperature () p = bmp180.getPressure () - температура в градуси по Целзий и отпечатване по Фаренхайт ("Температура:" .. (t / 10) .. "C") - налягане в различни печатни единици ("Налягане:" .. (p * 75/10000) .. "mmHg")

Издадох текущото налягане и температура на конзолата.

Но не можах да стартирам изхода на тези параметри в режим на уеб сървър. Всичко е за липса на памет. Поотделно уеб сървърът и BMP180 работеха и заедно се разпаднаха
ПАНИКА: незащитена грешка при извикване на Lua API (грешка при зареждане на модул "bmp180" от файл "bmp180.lua": не достатъчнопамет)
Или просто изрезки от LUA код паднаха на конзолата.

Не беше възможно да се модернизира в движение.

По-нататъшният ми път беше да събера моя фърмуер на собствен SDK, напр. Но това е друга история. Мога само да кажа, че фърмуерът е сглобен без проблеми, но злощастният BMP180 не беше пуснат.

заключения

  • Модулите ESP8266 са много евтино решение за изграждане на интелигентна домашна мрежа и друга домашна автоматизация с помощта на WiFi
  • Тези модули са доста подходящи за подмяна на NRF24L01 + във връзка с Arduino и други "популярни" контролери.
  • За да работи като независим контролер, ESP8266 има малко ресурси и доста необработен фърмуер
  • Програмирането на ESP модули е досаден процес, който може да изплаши начинаещите.
  • Като цяло ESP8266 има голямо обещание. Ще изчакам разработването на фърмуер и инструменти за разработка, но засега ще ги използвам заедно с други контролери (с изключение на)))

Чипът ESP8266 е един от най-популярните инструменти за безжична комуникация в проекти за интелигентен дом. С помощта на безжичен контролер можете да организирате комуникация чрез WiFi интерфейса, осигурявайки Ардуино проектиДостъп до интернет и възможност за дистанционно управление и събиране на данни. На базата на ESP8266 са създадени такива популярни платки като WeMos и NodeMcu, както и огромен брой самостоятелно изработени проекти. В тази статия ще научим какво представлява ESP82266, какви са неговите разновидности, как да работим с ESP8266 в Arduino IDE.

ESP8266 е WiFi микроконтролер, който може да изпълнява програми от флаш памет. Устройството е пуснато през 2014 г китайска фирма Espressif и стана популярен почти веднага.

Контролерът е евтин, има малко количество външни елементии има следните технически параметри:

  • Поддържа Wi-Fi протоколи 802.11 b / g / n с WEP, WPA, WPA2;
  • Има 14 входни и изходни порта, SPI, I2C, UART, 10-битов ADC;
  • Поддържа външна паметдо 16 MB;
  • Необходима мощност от 2,2 до 3,6 V, консумация на ток до 300 mA, в зависимост от избрания режим.

Важна характеристика е липсата на дефинирана от потребителя енергонезависима памет на чипа. Програмата се изпълнява от външен SPI ROM с помощта на динамично натоварваненеобходимите елементи на програмата. Вътрешните периферни устройства могат да бъдат достъпни не от документацията, а от API на набор от библиотеки. Производителят посочва приблизителното количество RAM - 50 KB.

Характеристики на платката ESP8266:

  • Удобна връзка с компютър - чрез USB кабел, захранван от него;
  • Вграден преобразувател на напрежение 3.3V;
  • 4 MB флаш памет;
  • Вградени бутони за рестартиране и мигане;
  • Всички портове са изведени към платката на два гребена с стъпка 2,5 мм.

Области на приложение ESP8266

  • Автоматизация;
  • Различни системи за интелигентен дом: Безжично управление, безжични контакти, температурен контрол, допълнение към алармени системи;
  • Мобилна електроника;
  • ID на етикета;
  • Детски играчки;
  • Мрежови мрежи.

Изводи на Esp8266

Има много разновидности на модула ESP8266. Фигурата показва някои от тях. Най-популярният вариант е ESP 01.

Изпълнението на програмата трябва да бъде зададено от състоянието на портовете GPIO0, GPIO2 и GPIO15, когато захранването приключи. Могат да се разграничат два важни режима - когато кодът се изпълнява от UART (GPIO0 = 0, GPIO2 = 1 и GPIO15 = 0) за мигане на флаш картата и когато се изпълнява от външен ROM (GPIO0 = 1, GPIO2 = 1 и GPIO15 = 0) в стандартен режим.

Изводът за ESP01 е показан на снимката.

Описание на контактите:

  • 1 - смлян, 8 - храна. Според документацията напрежението се подава до 3,6 V - това е важно да се има предвид при работа с Arduino, който обикновено се захранва с 5 V.
  • 6 - RST, необходим за рестартиране на микроконтролера, когато към него се приложи ниско логическо ниво.
  • 4 - CP_PD, също се използва за поставяне на устройството в режим на пестене на енергия.
  • 7 и 0 - RXD0 и TXD0, това е хардуерният UART, необходим за мигане на модула.
  • 2 - TXD0, към този щифт е свързан светодиод, който светва, когато логическото ниво е ниско на GPIO1 и когато данните се предават през UART.
  • 5 - GPIO0, входен и изходен порт, също ви позволява да поставите устройството в режим на програмиране (когато портът е свързан към ниско логическо ниво и е приложено напрежение).
  • 3 - GPIO2, входен и изходен порт.

Извод за ESP-12

Основните разлики между Arduino и ESP8266

  • ESP8266 има повече флаш памет, докато ESP8266 няма енергонезависима памет;
  • ESP8266 процесор по-бърз от Arduino;
  • ESP8266 Wi-Fi;
  • ESP8266 черпи повече ток от Arduino;

Програмиране на ESP8266 в Arduino IDE

Комплектът за разработка Esp8266 включва:

  • Компилатор от пакета GNU Compiler Collection.
  • Библиотеки, стекове WiFi протоколи, TCP / IP.
  • Средство за зареждане на информация в програмата на контролера.
  • Работен IDE.

Първоначално модулите ESP8266 се доставят с фърмуер от производителя. С негова помощ можете да управлявате модула от външен микроконтролер, да изпълнявате работа с Wi-Fi като с модем. Има и много други готови фърмуери. Някои от тях ви позволяват да персонализирате работата на модула с помощта на WEB интерфейса.

Може да се програмира от Arduino IDE. С негова помощ можете лесно да пишете скици и да ги качвате на ESP8266, да флаширате ESP8266, докато самата платка Arduino не е необходима. Arduino IDE поддържа всички видове ESP8266 модули.

V понастоящемза ESP8266 могат да се реализират следните функции:

  • Основните функции на езика Wiring. Да управлява GPIO портовеможе да се направи по същия начин, както с щифтовете на платката Arduino: pinMode, digitalRead, digitalWrite, analogWrite. Командата analogRead (A0) чете стойностите на ADC. С помощта на командата analogWrite (pin, value) можете да свържете PWM към желания GPIO изход. Когато стойността е 0, PWM се изключва, максимална стойностдостига константа, равна на 1023. Използвайки функциите attachInterrupt, detachInterrupt, можете да прекъсвате на всеки GPIO порт с изключение на 16.
  • Време и забавяне. С помощта на командите millis и micros можете да върнете ms и μs, които са преминали от началото. Отлагането ви позволява да поставите на пауза изпълнението на програмата за правилното време... Функцията за забавяне (...) също ви позволява да поддържате нормална работа Wi-Fi, ако скицата съдържа големи елементи, чието завършване отнема повече от 50 мс. Добив () е аналогичен на функцията за забавяне (0).
  • Serial и Serial1 (UART0 и UART1). Серийната работа на ESP8266 е подобна на работата на arduino. Записването и четенето на данни блокира изпълнението на код, ако 128-байтовият FIFO и 256-байтовият мек буфер са пълни. Обектът Serial използва хардуерния UART0, за него можете да зададете щифтове GPIO15 (TX) и GPIO13 (RX) вместо GPIO1 (TX) и GPIO3 (RX). За да направите това, след функцията Serial.begin (); трябва да извикате Serial.swap () ;. По подобен начин Serial1 използва UART1, който предава. Необходим щифт за този GPIO2.
  • PROGMEM макрос. Работата му е подобна на тази на Arduino. Позволява преместване на данни само за четене и низови константи във флаш памет. В същото време ESP8266 не съхранява същите константи, което води до допълнителна загуба на флаш памет.
  • I2C. Преди да започнете работа с I2C шината, шините се избират с помощта на функцията Wire.pins (int sda, int scl).
  • SPI, OneWire - напълно поддържан.

Използване на esp8266 за комуникация с Arduino през WiFi

Преди да се свържете към Arduino, важно е да запомните, че захранващото напрежение на ESP8266 не може да бъде по-високо от 3,6, докато напрежението на Arduino е 5 V. Трябва да свържете 2 микроконтролера с помощта на резистивни делители. Преди да свържете модула, трябва да се запознаете с изводите на избрания ESP8266. Схемата за свързване на ESP8266-01 е показана на фигурата.

3.3V от Arduino - към Vcc & CH_PD на модул ESP8266, Заземяване от Arduino - към земята от ESP8266, 0 - TX, 1 - RX.

За подкрепа стабилна работаНеобходим е източник на ESP8266 постоянно напрежениепри 3,3 V и максимален ток 250 mA. Ако захранването се захранва от USB-TTL преобразувател, може да възникнат неизправности и неизправности.

Работата с Wi-Fi библиотеката за ESP8266 е подобна на библиотеката за обикновен щит. Има няколко функции:

  • режим (m) - за да изберете един от трите режима: клиент, точка за достъп или и двата режима едновременно.
  • softAP (ssid) - необходим за създаване отворена точкадостъп.
  • softAP (ssid, парола) - създава точка за достъп с парола, която трябва да бъде поне 8 знака.
  • WiFi.macAddress (mac) и WiFi.softAPmacAddress (mac) - дефинира MAC адреса.
  • WiFi.localIP () и WiFi.softAPIP () - определяне на IP адреса.
  • printDiag (сериен); - ще ви позволи да намерите информация за диагностиката.
  • WiFiUDP - поддръжка за изпращане и получаване на мултикаст пакети в клиентски режим.

Работата се извършва по следния алгоритъм:

  • USB-TTL връзка към USB и ESP.
  • Стартиране на Arduino IDE.
  • Изберете инструменти от менюто желан порт, платка, честота и размер на флаш паметта.
  • Файл - Примери - ESP8266WiFi - WiFiWebServer.
  • Запишете Wi-Fi SSID и парола в скицата.
  • Започнете да компилирате и изтегляте кода.
  • Изчакайте до края на процеса на фърмуера, изключете GPIO0 от земята.
  • Задайте скоростта на 115200.
  • Връзката ще бъде осъществена, IP адресът ще бъде записан.
  • Отворете браузъра, влезте адресна лента IP номер / gpio / 1
  • Погледнете монитора на порта, ако към изхода GPIO2 е свързан светодиод, той трябва да светне.

NodeMCU, базиран на Esp8266

NodeMCU е платформа, базирана на модул esp8266. Използва се за управление на веригата от разстояние чрез интернет чрез Wi-Fi. Платката е малка, компактна и евтина; има USB конектор от предната страна. В близост има бутони за отстраняване на грешки и рестартиране на микроконтролера. Инсталиран е и чип ESP8266. Захранващо напрежение - от 5 до 12 V, желателно е да се захранва повече от 10 V.

Голямото предимство на платката е ниската консумация на енергия. Те често се използват във вериги с със самостоятелно захранване... На платката има само 11 порта с общо предназначение, някои от които имат специални функции:

  • D1 и D2 - за интерфейса I2C / TWI;
  • D5-D8- за SPI интерфейс;
  • D9, D10 - за UART;
  • D1-D10 - може да работи като PWM.

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

WeMos, базиран на esp8266

WeMos е друг тип платформа, базирана на микроконтролера esp8266. Съответно има Wi-Fi модул, Поддържа се Arduino IDE, конектор за външна антена... Платката има 11 цифрови I/O, които (с изключение на D0) поддържат прекъсване / pwm / I2C / еднопроводно. Максималното захранващо напрежение достига 3,3 V. На платформата има и USB конектор. Аналогов вход 1 с максимално напрежение 3.2V.

За да работите с модула, трябва да инсталирате драйвера CH340 и да конфигурирате Arduino IDE за ESP8266. За да направите това, трябва да в менюто с настройки в реда „ допълнителна връзказа мениджър на борда "добавете адрес http://arduino.esp8266.com/stable/package_esp8266com_index.json.

След това трябва да намерите пакета esp8266 от ESP8266 и да го инсталирате. След това трябва да изберете микроконтролера Wemos D1 R2 от менюто с инструменти и да напишете желаната скица.

Заключения относно ESP8266

С помощта на платки, базирани на чипа ESP8266, можете да добавите „ голям интернет“, което ги прави много по-интелигентни. Дистанционно, събиране и анализ на данни на сървъра, обработка на глас и работа с изображения - всичко това става достъпно, когато свържем нашия проект чрез WiFi към Интернет. В следващите статии ще разгледаме по-отблизо как можете да програмирате устройства, базирани на esp8266, както и да обърнем внимание на такива популярни платки като WeMos и NodeMcu.