WiFi ESP8266 е нова стъпка в дизайна на домашни устройства с безжичен интерфейс. ESP8266 "Witty Cloud" в момента е най-успешният WiFi модул за домашни продукти и интелигентен дом

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

Преди да имаме време да свикнем с идеята, че всякакви интересни занаяти могат да бъдат направени на стотинка Arduino, Attiny или STM, устройства с WiFi и мощни 80 мегахерцови процесори станаха техни конкуренти в цената. (По дяволите, процесорът ми е в първия собствен компютърбеше малко по-бързо, на колко години съм).

Един проблем - всички устройства с ESP8266, които минаха през ръцете ми бяха много неудобни, свързването им беше мъка. Но китайската индустрия ни чу и се справи почти добре :)

Защо "обичаме" различни варианти ESP8266:

  • Те се захранват от 3,3 волта, а не от по-обикновените пет
  • При пик те изискват ток до 320mA, което е извън възможностите на конвенционалните USB-TTL конвертори.
  • Стъпката между изходите на платката обикновено не е стандартните 2,54 mm, а точно 2 mm - което прави запояването сложно приключение
  • Има само една версия на платката със стъпка на щифта от 2,54 mm (“ESP8266-01”), но има минимум полезни щифтове
  • Чипът се превключва в режим на програмиране чрез затваряне на контактите, което изисква умение. Или запояване на бутона
  • С Reset същия проблем - или изключете захранването или запоете бутона
И тогава китайската индустрия издаде „ESP8266-12E“ под името „ Остроумен облак»:

Дъската е „сандвич“ от две. На горния слой (вляво на двете снимки) е самият чип ESP8266, под него е захранващият конектор MicroUSB и регулаторът на напрежение AMS1117-3.3, чиято задача е да превърне 5 волта в 3.3. Според листа с данни регулаторът има токове до 0,8 A, така че това е повече от достатъчно за захранване на чипа. Там - Бутон за рестартиранеза рестартиране.
За да има нещо, което да заема празните ъгли на дъската, китайците бутнаха там RGB LED и фоторезистор, повече за тях по-късно.

На долния слой на „сандвича“ (на снимката вдясно) има пълноценен MicroUSB, чип CH340G и бутони „Flash“ (режим на фърмуера) и „Reset“.

„Сандвич” дава по-голяма свобода на действие. Можете да свържете „сандвича“ към компютъра в долната (пълна) USB конектор, препрограмирайте го - и след това интегрирайте само горната част във вашия занаят, спестявайки размера на тялото.

Освен това дъното на „сандвича“ може да се използва за програмиране на домашно приготвени модули. Самият аз запоих модулите ESP8266-12 и ESP8266-07, които лежаха наоколо върху не много успешни адаптерни платки за $0,22 и прикрепих AMS1117 регулатори „на сопол“ - и двата работеха без никакви проблеми и се оказаха 100% съвместими по отношение на конекторите и бутони:

Добре, стига хвалби на модула, нека направим нещо полезно.Страницата на продавача рекламира някакъв вид SDK и дори някакъв китайски „облак“ за устройства, базирани на ESP8266 и Android, въпреки че няма (почти) никаква информация за тях на английски. Ако е така, да се откажем от тях, да стартираме Arduino IDE 1.6 и да влезем в настройките.

В прозореца „Допълнителни URL адреси“ вмъкнете реда https://arduino.esp8266.com/package_esp8266com_index.json След това отворете „Диспечер на дъски“ и въведете „ESP8266“ в лентата за търсене. Щракнете върху Инсталиране и се пригответе да изчакате, докато бъдат изтеглени до 130 мегабайта пакети:

Нека свържем „сандвича“ към компютъра в долния (пълен) MicroUSB конектор. Windows трябва да открие USB-TTL конвертора "CH340G" и да му присвои виртуален порт. Именно този порт ще посочим в настройките на Arduino IDE. Останалите настройки са:

Нека поставим елементарния код в паметта

#включи const char* ssid = "??? име на вашата WiFi точка???"; const char* password = "??? парола???"; WiFiServer сървър(80); void setup() ( Serial.begin(115200); WiFi.begin(ssid, парола); while (WiFi.status() != WL_CONNECTED) ( delay(500); Serial.print("."); ) сървър. begin(); Serial.print("IP адрес на нашия модул: "); Serial.println(WiFi.localIP()); ) void loop() ( WiFiClient client = server.available(); if (!client) ( return; ) while(!client.available())( delay(1); ) client.flush(); String s = "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\n\r \nздравейте от esp8266!\n"; client.print(s); delay(1); )

Моля, имайте предвид, че по време на процеса на мигане не е необходимо да натискате бутона Flash - платката ще се погрижи за всичко сама.

След като новата програма бъде заредена в ESP8266, тя може да бъде изключена от компютъра и захранвана дори от power bank. Долна част„Сандвичът“ може да се отдели, вече не е необходим.

Или със Помощ за Arduinoсериен монитор (скорост на порта - 115200), или в уеб интерфейса на рутера гледаме IP адреса, който сме получили в домашна WiFi мрежанашия ESP8266. Отворете този адрес в браузъра на вашия компютър или телефон:

Нашето устройство е свързано с домашна мрежа, отвори уеб сървъра и ни отговаря.

Сигурни ли сте, че устройството ви работи? Да продължим.За да се използва за нещо полезно в ежедневието, е интересно да се „сприятелите“ с него, например с реле. Вярно е, че класическите 5-волтови релета по дефиниция вече не са необходими - рискът е твърде голям напрежението от 3,3 волта да не е достатъчно, за да може електромагнитът да издърпа арматурата. Затова вземаме твърдотелно реле Omron за $1,90. Според листа с данни напрежението, което имаме, е достатъчно, за да работи ясно:

Свързваме „плюс“ и „минус“ към VCC и GND контактите на горния слой на „сандвича“, а третият сигнален проводник към, например, контакта GPIO 2. Като програма можете да вземете скицата на WiFiWebServer, която е прикачена към библиотеката на Arduino, или използвайте програмата на колегата Sav13от samopal.pro/wifi-power-esp8266/

За теста взех обикновена 20W халогенна крушка и я щраках до насита:

Операцията се извършва за част от секундата след подаване на командата. За да проверя надеждността, вмъкнах прост брояч в кода и скицирах обикновен bat файл, който включваше и изключваше електрическата крушка с пауза в секунда. Отворих няколко допълнителни прозореца, от които започнах да бомбардирам IP адреса на модула с безкрайна команда ping. След няколко часа броячът за включване и изключване надхвърли 19 хиляди, но всичко работи - което дава известна увереност в надеждността на устройството.

Ако сте прочели дотук, но в главата ви се върти мисълта „всичко това е сложно“, подготвих ви нещо приятно

Не забравяйте, че споменах това Китайски производител“за смяна” сложи ли RGB LED и фоторезистор на платката? Можете да експериментирате с тях, дори ако нямате други сензори или други периферни устройства.

В тази опция ще трябва да положите усилия и да стартирате Arduino IDE точно веднъж.


Екранът на приложението е празно поле, върху което можете да поставяте елементи, като на табло. Първо опитайте "zeRGBa" и "gauge":

В настройките на зебрата посочете, че трицветният светодиод на платката е свързан към щифтове 12 (зелен), 13 (син) и 15 (червен):

В настройките на "gauge" посочете, че фоторезисторът на платката е свързан към аналоговия вход "adc0":

Активирайте това, което сте изваяли, като щракнете върху бутона в горния десен ъгъл. Ще видите, че жълтият индикатор се променя в зависимост от нивото на осветеност, а RGB светодиодът на „сандвича“ променя цвета си, когато мушкате зебрата:

Практиката показва, че децата наистина харесват това нещо. Едно е да играете игри на други хора на таблет, друго е да направите и нарисувате сами „дистанционно управление“ и да контролирате нещо осезаемо. Достатъчно е да поемете подготвителната част в Arduino и след това да покажете как да го използвате, осигурете няколко светодиода, бутони или части като аналогов температурен сензор LM35 - те веднага ще ви отнемат „играчката“ и детето ви ще бъде заето за дълго време. Няма да ви дръпнат за ушите, проверено е.

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

Резюме

За цена малко над 200 рубли получавате много мощен и доста независимо устройство, на който можете да програмирате всякакви полезни неща за вашия дом - и да ги управлявате през WiFi.

„Сандвичът“ се оказа изненадващо сполучлив. Той е с по-малко от един долар по-скъп от чистия ESP8266-12, но ви спестява много време и проблеми. Куп кабели и макет не са необходими.

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

На тази цена "сандвичът" е ясен конкурент на Arduino Nano и го прави много ненужен Bluetooth модули(тип HC-05) и още повече - радиомодули NRF24L01+.

Хванах се и почти наруших традицията:

Днес, благодарение на развитието, цената на Wi-Fi модулите е стотинки. Това ви позволява да разработвате домашни устройства на ниво Wi-Fi технология. Какво ни дава това? Всъщност много е практически същото като самия Интернет в допълнение към всичко останало. По този начин, когато правите всяко устройство, то вече ще има достъп до мрежата и интернет (ако присъства в мрежата), което означава, че устройството е теоретично достъпно за всяко друго устройство, намиращо се в мрежата или свързано към интернет. Само преди пет години вие и аз дори не можехме да мечтаем за такова ниво на домашни устройства.

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

И така, при избора WiFi модулИзборът на ESP8266 клони към модела ESP-07 с възможност за свързване външна антеназа да получите най-добрия закупен сигнал Китайски онлайн магазин GearBest. В този случай ще ни трябва самата антена (не се занимавах с подробности, но всяка друга с RP-SMA конектор WiFi честоти), конектор за свързване на антената към модула и, ако е необходимо, удължителен кабел за антената. Плюс необходимите сензори.

Да работя с модул ESP-07Печатна платка е направена съгласно следната схема:

Веригата се състои от три основни блока: 3,3-волтов стабилизатор на напрежение VR1 с необходимите елементи (регулируемата версия на стабилизатора може да бъде заменена с ams1117 3v3 с изключение на резистори R1 и R3), блокът, необходим за програмиране на WiFi модула е направен на базата на интерфейсен преобразувател USB-UART CH340G с необходимото окабеляване на микросхемата (CH340G може да бъде заменен с всякакви други микросхеми със съответната функционалност чрез промяна на окабеляването за сменения чип), самият WiFi модул, както и като необходими елементи за неговата работа и програмиране. За да влезете в режим на програмиране, трябва да натиснете бутона S2 Prog и да рестартирате модула или да изключите и включите захранването с натиснат бутон S2 Prog. След това, като използвате софтуера на вашия компютър, изтеглете фърмуера на WiFi модула. След завършване на фърмуера рестартирайте отново модула, но без да натискате бутона S2 Prog - по този начин модулът ще работи в основен режим. Когато използвате външна антена, платката осигурява място за закрепване на скобата на антената. Самата скоба може да бъде с най-проста конфигурация. За свързване към компютър се използва мини-USB конектор.

За да свържете антената към ESP-07, използвайте IPX към RP-SMA кабел. Тъй като избрах 18 dB GDI-8218 антена за себе си, устройството, сглобено със сензори, изглежда доста заплашително. Разбира се, когато използвате множество сензори, трябва да свържете всичко макет, ако използвате само един сензор BMP280 за наблюдение на метеорологичните параметри (измерва температура, налягане и влажност), тогава веригата изглежда по-красива. В допълнение, платката за ESP8266 е направена като универсален инструмент, така че ако я редактирате, за да инсталирате сензори директно върху платката, веригата ще придобие по-компактен и естетичен вид.

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

Алтернатива на такава платка могат да бъдат фабричните платки nodemcu или адаптерни платки за PLS/PBS контакти. Последните имат само няколко резистора, необходими за включване на модула и място за стабилизатор на напрежение (не е включен). Поради много минималния им характер, не беше удобно за мен да използвам такива платки (освен ако не са част от друго устройство, оборудвано с конектор за такава платка).

За да се свържете със сензорния модул, можете да използвате всички безплатни GPIO на модула. За да получим показания на параметрите, от които се нуждаем, могат да се използват всякакви сензори във всяка конфигурация, за която Ще говоримПо-долу. Използвах сензори DS18B20 във формат на измервателна сонда (удобно е да наблюдавате температурата навън или всяка течност, тъй като се счита за водоустойчив), BMP180 за наблюдение атмосферно наляганеи AM2302 за контрол на влажността на закрито. Не забравяйте за необходимото окабеляване на сензорите, ако не ги използвате под формата на модули с всичко необходимо: ​​DS18B20 е свързан с издърпващ резистор към положителния източник на захранване (10 kOhm резистор между 1-проводника щифт и захранващият положителен), подобно на AM2302 (DHT22), сензорите, които работят на I 2 C шината, също трябва да имат издърпващи резистори на SCL и SDA контактите.

Въпреки това, за да постигнете резултата, е необходимо да напишете фърмуер, така че устройството да работи точно както ни е необходимо. С подготвени идеи, при търсене на SDK за ESP8266, беше намерен онлайн дизайнер на фърмуер (или онлайн компилатор), който не изисква познания по програмиране (в повечето си функции)! За да получите достъп до модула на фърмуера, е необходима регистрация, в противен случай това меню изобщо не е достъпно. Без регистрация можете да изтеглите само фърмуера за „бърз старт“.

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

След това флашнете модула с помощта на програмата nodemcu-flasher (програмните настройки по-долу на екранните снимки) (свържете устройството чрез USB към компютъра). При флашване нищо не трябва да се свързва към UART щифтовете на модула (GPIO1, GPIO3), в противен случай модулът може да не бъде флашнат. Ако планирате да свържете нещо към тези щифтове, тогава трябва да го изключите за времето на фърмуера. След като мигаме фърмуера, рестартираме модула или изключваме и включваме захранването - в зависимост от настройките, модулът ще се свърже към мрежата или ще създаде своя собствена точка за достъп. Устройството е готово за настройки и работа!

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

Задайте настройките за модула ESP-07 (както показва практиката, настройката на размера на флаш паметта не засяга използваната проба; очевидно правилната стойност се задава автоматично):

Посочете пътя до файла на фърмуера:

Посочете COM портинсталиран при свързване за този модул и натиснете бутона Flash (ако всичко е направено правилно, тогава зареждането ще започнефърмуер в модула):

Изчакайте фърмуера да завърши:

Преди да компилирате фърмуера, е удобно да зададете настройки по подразбиране на страницата на онлайн компилатора, където трябва да въведете името на точката за достъп и WiFi пароларутер (раздел " Система" в края на списъка за избор на функционалност, преди да сглобите фърмуера). Освен това можете да зададете статичен IP адрес за устройството. За да направите това, в системни функциитрябва да поставите отметка в квадратчето до „ Настройките по подразбиране» и щракнете върху зъбното колело, за да изведете меню, където тези данни се въвеждат, ако е необходимо. В този случай, след като включите WiFi устройството, то автоматично ще се свърже с рутера. След като го включите, отворете браузъра и в адресната лента въведете IP адреса на устройството, с което се е регистрирало в мрежата. Стигаме до менюто WiFi устройства, където можете не само да наблюдавате параметрите на сензорите в мрежата, но и да конфигурирате други функции, които сте избрали преди сглобяването на фърмуера.

Ако не направите настройките по подразбиране, преди да сглобите фърмуера, тогава при първото включване (след мигане трябва да натиснете бутона resrt на модула 3 пъти с интервал от 1 секунда), ще бъде създадена точка за достъп hamessmartпо адреса 192.168.4.1 . С помощта на телефон или лаптоп трябва да се свържете с точка за достъп и да отидете на този адрес през браузър, да направите настройки, да преконфигурирате, ако е необходимо Режим станцияв настройките Основен(влезте, за да влезете в менюто , парола 0000 ), въвеждайки и името на точката WiFi достъпрутер и парола.

Първо трябва да въведете настройките в менюто Основен(поле Конфигсъдържа връзки за настройки и конфигурация на избрани функции).

За да влезете в менюто ще трябва да въведете вашето потребителско име и парола. 0000 . Тук можете да управлявате настройките за сигурност, време и мрежова връзка. За да запазите въведените настройки, натиснете бутона Комплект.

Върнете се в главното меню и следвайте връзката Хардуер. Тук активираме и конфигурираме сензорите, които ще бъдат свързани към модула (наличието на различни сензори в това меню се определя от техния избор при сглобяване на фърмуера - ако не изберете нещо преди компилирането, тези функции няма да са налични в самия фърмуер). За сензори, работещи на I2C шината, трябва да зададете общи за всички устройства GPIO. Защо общи? Шината I2C ви позволява да свържете няколко устройства паралелно. Всяко такова устройство има свой собствен адрес и веднага щом главното устройство предаде този адрес, подчиненото устройство с този адрес ще знае, че сега ще се обменят данни с него, докато другите устройства в шината са неактивни. За свързване на сензори за влажност DHT11/22 се използва отделен крак на модула, който се задава в настройките на това меню. За да активирате сензора DS18B20, трябва също да зададете отделен GPIO щифт, след което, като не забравяте да запазите въведените настройки, отидете в главното меню и следвайте връзката с 1 проводник.

В това меню щракнете Списък за изчистване и сканиране, след което трябва да се появи документ за самоличностсензор DS18B20. И едва след това температурният сензор ще работи.

За да свържете аналогови сензори, можете да използвате ADC (единственият щифт ADC WiFi модул). Това е вграденият ADC на модула с малък капацитет 10 бита (1023 проби)с референтно напрежение 1,024 V. Ако сензорът има ниво на изходно напрежение, по-голямо от тази стойност, е необходимо да се използва делител на напрежение, използващ резистори с известен коефициент на разделяне. Получената стойност от ADC ще се различава от действителната стойност с този фактор. Много аналогови сензори се предлагат в търговската мрежа като модули, базирани на LM393. Принципът на работа на такива модули е, че подстригващият резистор задава референтното напрежение за компаратора (LM393) и веднага щом въздействието върху сензора увеличава напрежението на входа на компаратора, което го прави по-голямо от еталонното, на изхода на този модул ще се формира логическа единица. По този начин можете да регулирате прага на реакция на сензора (или по-скоро модула на този сензор) и да записвате постигането на този праг просто като използвате GPIO ESP8266 е конфигуриран за въвеждане. За да направите това, отидете в главното меню и щракнете върху връзката GPIO. В това меню задайте пин номера и режима на работа за него и го запазете. Показанията ще бъдат като " 0 " или " 1 " - прагът е достигнат или не, действието е извършено или не.

Сега, за да покажете показанията на сензора в Интернет, следвайте връзката Сървъриили DDNSв зависимост от избрания метод на интернет връзка. Първоначално планирах да използвам услугата narodmon.ru за тази цел, която показва показанията на сензорите на всички потребители, използващи тази услуга, директно на картата. В допълнение, тази услуга има приложения и джаджи за мобилни устройстваи компютър, което е много удобно. Регистрирайте се в тази услуга (тя е напълно безплатна), като използвате документ за самоличност(вижте екранната снимка по-долу - връзка Сървъриполета Конфиг).

Обслужване хораотмон(популярен мониторинг) съхранява показанията на сензорите до 1 година и ви позволява да съставяте сензорни показатели за период в допълнение към друга функционалност.

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

Разбира се, онлайн компилаторът предоставя много други функции: връзка различни дисплеи, изпращане на имейлили sms (задължително gsm модулЗа изпращане на smsбез интернет услуги), изпълнявайки персонализирани логически операции, контролиране на различни периферни устройства с помощта на GPIO и PWM, запис на наблюдаваните параметри на SD карта с памет и много други. Ако един модул не е достатъчен, тогава можете да направите няколко от тях, те ще работят като едно цяло вътре споделена мрежаблагодарение на функциите на виртуални сензори и виртуален GPIO (едно устройство получава показания от сензори от друго GET заявка). Ако просто няма достатъчно входно/изходни портове, тогава има функции за свързване на разширители на портове. Някои функции са достъпни само в режим Pro фърмуер, който се активира на главната страница чрез връзката GET PRO. За да активирате е необходимо да въведете код, който не е безплатен, но струва само символична сума, която можете да получите в лична сметкауебсайт за онлайн компилатор.

За настройките е важно да не бъркате GPIO на модула (ако ESP-07 е запоен към платката, обозначенията на щифтовете не се виждат) за нормална работа:

В допълнение към всичко, останалите клеми на модула могат да бъдат свързани към дисплей, на който ще показваме стойностите на сензорите за времето. Дизайнерът поддържа ILI9341 - TFT LCD 240x320 дисплеи, работещи чрез SPI интерфейс.

Когато сглобяваме фърмуера, ние определяме към кои GPIO щифтове CS и DC на дисплея ще бъдат свързани (менюто с настройки се извиква на уебсайта на дизайнера, когато избираме функции, като щракнете върху зъбното колело до функцията, от която се нуждаем). Останалите щифтове трябва да бъдат свързани, както следва: MOSI - GPIO13, SCK - GPIO14, нулиране и LED са свързани към плюса на vcc захранването и, съответно, vcc и gnd към плюса и минуса на захранването (взимаме захранване от WiFi модула 3,3 волта).

Тук включваме TFT, ако е необходимо, завъртаме дисплея на 90 градуса и задаваме в кои редове ( Ред 0, Ред2...) каква информация ще покажем. С активирана функция Време и NTPВ системните функции на дизайнера информацията за времето се взема от NTP сървъра през интернет, което превръща нашето устройство в точен часовник, който не се нуждае от конфигуриране. Ние извеждаме текущо времекъм дисплея и още няколко метеорологични параметри за попълване на дисплея. За да направите това на полето Изберете линияизберете ред, до него избираме параметъра, който ще покажем на този ред, по-долу, ако е необходимо, избираме центриране на данни, размер на шрифта и цвят на шрифта. Кликнете Комплекти настройката се запазва. Шрифтът е само от прост шрифт. Изборът на подготвени параметри е доста малък, но достатъчен, но с помощта на конструктора на низ можете да покажете всякакви параметри във всяка конфигурация.

Статията е придружена от файл печатна електронна платказа модул ESP-07, фърмуер с празен формуляр, фърмуер с различни функционалности за ESP-07, малко документация, драйвер за USB програмиране за чип CH340G, програма за флашване на ESP8266.

Списък на радиоелементите

Обозначаване Тип Деноминация Количество ЗабележкаМагазинМоят бележник
IC1 Модул ESP8266ESP-071 Към бележника
IC2 USB интерфейс ICCH340G1 Към бележника
VR1 Линеен регулатор

AMS1117-ADJ

1 Към бележника
VD1 диод на Шотки

1N5819

1 Към бележника
R1 Резистор

3 kOhm

1 1206 Към бележника
R2, R7-R9 Резистор

10 kOhm

4 0805 Към бележника
R3 Резистор

1,8 kOhm

1 1206 Към бележника
R4 Резистор

1 kOhm

1 0805 Към бележника
R5, R6 Резистор

390 ома

2 0805 Към бележника
C1 Кондензатор10 µF1 на дъска керамика 1206 Към бележника
C7 Кондензатор22 µF1 тантал + 2,2 µF керамика 1206 Към бележника
C6 Кондензатор100 µF1 тантал

Модулът на чипсета 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 kOhm).

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

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

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

Pinout

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

Чипът ESP8266 е един от най-популярните инструменти за организиране на безжични комуникации в проекти за интелигентен дом. Като се използва безжичен контролерможете да организирате комуникация чрез WiFi интерфейса, предоставяйки Ардуино проектиДостъп до интернет и възможност за дистанционно управление и събиране на данни. Такива популярни дъски като 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-bit ADC;
  • Поддържа външна памет до 16 MB;
  • Необходимото захранване е от 2,2 до 3,6 V, консумация на ток до 300 mA, в зависимост от избрания режим.

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

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

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

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

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

pinout esp8266

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

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

Pinout за 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 pinout

Основните разлики между 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 модули.

IN понастоящемСледните функции могат да бъдат реализирани за 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 ms за изпълнение. Yield() е аналог на функцията delay(0).
  • Сериен и сериен1 (UART0 и UART1). Серийната работа по ESP8266 е подобна на работата по Arduino. Записването и четенето на данни блокира изпълнението на кода, ако 128-байтовият FIFO и 256-байтовият софтуерен буфер са пълни. Серийният обект използва хардуер UART0, можете да зададете щифтове GPIO15 (TX) и GPIO13 (RX) за него вместо GPIO1(TX) и GPIO3(RX). За да направите това, след Serial.begin(); трябва да извикате Serial.swap();. По същия начин Serial1 използва UART1, който работи за предаване. Необходимият щифт за това е GPIO2.
  • Макро ПРОГРАМА. Работата му е подобна на тази на 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,3 V от Arduino към Vcc&CH_PD на модула ESP8266, Земя от Arduino към маса от ESP8266, 0 – TX, 1 – RX.

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

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

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

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

  • Свързване на USB-TTL към USB и към ESP.
  • Стартиране на Arduino IDE.
  • Изберете необходимия порт, платка, честота и размер на флаш памет в менюто с инструменти.
  • Файл - Примери - ESP8266WiFi - WiFiWebServer.
  • Запишете SSID и паролата на Wi-Fi мрежата в скицата.
  • Започнете да компилирате и качвате код.
  • Изчакайте процесът на фърмуера да приключи, изключете 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 – може да работи като ШИМ.

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

WeMos базиран на esp8266

WeMos е друг тип платформа, базирана на микроконтролера esp8266. Съответно има Wi-Fi модул, поддържа Arduino IDE, има конектор за външна антена. Платката има 11 цифрови входа/изхода, които (с изключение на D0) поддържат interrupt/pwm/I2C/one-wire. Максималното захранващо напрежение достига 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.

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

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

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

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

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

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

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

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

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

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

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

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

  • 802.11 b/g/n протокол
  • Wi-Fi Direct (P2P), мека 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)

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

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

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

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