Проте, вже перші результати дуже радують.
По-перше, про те, що це за модуль, можна почитати тут. тут. тут ну і тут.
Документації трохи, від слова зовсім. Але щось є.
2) Ціна. Особливо до кризи. В районі 3 (трьох!) Доларів. Це було 100 руб. Млинець. Зараз це вже 200 руб на ebay, але це дешевше Ардуіно, це дешевше Ethernet Shield (близько 500 руб) це не сильно дорожче вельми химерних модулів на базі ENC28J60 або «народної» NRF24L01 (яка коштує в два рази менше, але їх потрібно мінімум дві !).
3) Оголошене рекордно низьке енергоспоживання, в тому числі дозволяє використовувати модуль в пристроях, що живляться від батарей.
4) Якщо я правильно зрозумів, цей модуль не просто забезпечує WiFi зв'язок, він вдає із себе програмований мікроконтролер, який може виконувати якісь простейщіе дії по взаємодії із зовнішнім світом. А це знову ж ціна.
Тобто потенційно все це дуже цікаво.
1) Якщо я правильно зрозумів, це оригінальна китайська розробка. Добре це чи ні сказати складно, але яким чином маловідомий розробник зміг створити продукт перевершує розробки маститих брендів - я не розумію.
Хоча все коли-небудь трапляється вперше.
2) Уже згадана убогість документації та відсутність осудного даташіта.
3) Деяка небезглючность пристрою.
У будь-якому випадку, було вирішено спробувати.
Модуль був куплений на ebay. Всього в продажу є кілька варіантів модулів на базі однієї і тієї ж мікросхеми, що відрізняються кількістю виведених ніг, наявністю або відсутністю вбудованої антени і т.п. Детальніше див. Тут.
Вибір припав на варіант ESP-03 з таких міркувань:
1) Є вбудована керамічна антена. Антена - це якраз те, що я не готовий підключати самостійно.
2) Виведено найбільшу кількість ніг. Буде можливість спробувати цими ногами чимось покерувати.
3) Невисока ціна.
Тому було вирішено оснастити перехідник лінійним стабілізатором на базі моєї улюбленої XC6206 (всього обв'язування - два керамічних конденсатора) і сполученням рівнів на дві лінії на польових транзисторах (за посиланням см. Розділ Інтерфейс з послідовно включеним MOSFET транзисторів).
Крім того, принципово виніс всі контакти модуля на стандартну кутову гребінку по краю перехідника. Нехай буде. Як потім виявилося - не дарма.
Зазвичай, знаючи свою схильність встромляти дроту не туди, куди потрібно, я всюди на автоматі ставлю захист від переплюсовкі "ідеальним діодом", а в перехідник поставити забув. За що і Полат в результаті :-(
Другий косяк з перехідником з'ясувався після спроби випаять з нього жертву експерименту в надії на те, що постраждала не вона, а сам перехідник. На жаль, це виявилося неможливо зробити, не відірвавши від модуля всі контакти. Правда паяльного фена у мене все ще немає, а прогрівання газовим пальником не допомогло.
А це не зовсім те, на що я розраховував. Я то думав поекспериментувати з цим модулем в переходнике а потім перепаять його в яку-небудь корисну саморобку.
Мабуть, при наступній спробі перехідник буду радикально модернізувати.
Буду впиваються в перехідник купу зволікань-ніжок до контактних площадок на нижньому боці плати, а сам ESP8266 припаяти до цих ніжок зверху. так щоб контакти модуля не прихопив до перехідника. Тоді можна буде спокійно отпаять ніжки від майданчиків перехідника, витягнути модуль разом з ніжками і вже потім спокійно отпаивать від нього ніжки по одній.
Тепер же власне досвід використання.
Я підключав модуль до комп'ютера через саморобний перехідник USB-UART на базі cp2102. Харчування на модуль (5 Вольт) брав з перехідника - це фактично живлення від USB порту комп'ютера.
Оскільки для роботи нога CH_PD - Chip enable - повинна бути підключена до 3.3 Вольт, я просто з'єднав її проводом з ногою 3.3.
В принципі, я заздалегідь передбачив в переходнике можливість впаювання постійної перемички між CH_PD і 3V3, проте не впаюються її.
Спочатку модуль повівся дивно.
Оскільки продавець в описі вказав, що модуль працює по UART на швидкості 115200/8 / N / 1 я виставив в терміналі 115200 і отримав сміття.
За спалахів світлодіодів на лініях UART і по терміналу було видно, що в момент з'єднання ніг CH_PD і 3V3 модуль видає якусь інформацію. Однак ні на швидкості 115200, ні на який інший з стандартного набору, вона не читалася і модуль на подальші команди не реагував.
Однак гугленіе ось сюди підказало рішення - для запуску модуля ногу GPIO15 необхідно підтягнути до землі. Я просто з'єднав її проводом з земляний ногою на постійній основі.
Модуль статртовал на швидкості ... 96000.
Гаразд, це вже легше.
Далі я виконував в основному дії по ось цього посту.
Примітка: команда «AT» нечутлива до регістру (можна набирати маленькими буквами), всі інші - чутливі.
Поміняв швидкість UART: AT + CIOBAUD = 115200
Успішно.
Встановив режим роботи WiFi: AT + CWMODE = 1
Подивився список доступних WiFi точок доступу: AT + CWLAP
Побачив. Зітхнув з полегшенням - бездротовий зв'язок є.
Підключився до свого роутера: AT + CWJAP = "
У мене в квартирі дві WiFi точки доступу - одна поруч із вхідними дверима (Ethernet-роутер + WiFi), а друга - за моїм робочим столом (це колишній ADSL-модем, він грає роль провідного хаба і WiFi точки достпа).
Залишилося найголовніше - смикнути який-небудь URL і отримати відповідь.
На практиці це означатиме можливість передати інформацію з пристрою до зовнішнього світу.
Це фактично звичайний HTTP GET-запит.
У відповідь модуль викидає неповний шматок веб-коду гугловський сторінки, після чого починає вести себе якось дивно. Чи то модуль глючить від великої кількості даних, то чи термінал, розбиратися я не став, а переключився на роботу з власним сервером, який формував набагато коротший відповідь.
Щоб привести модуль в себе, його було досить перезавантажити короткочасно знявши 3.3 Вольта з ноги CH_PD.
При роботі з власним веб-сервером я успішно зробив кілька GET-запитів.
Заміряв струм. Точно поміряти не зміг, тому що при підключенні через мА-діапазон мультиметра модуль працювати не захотів - почав знову видавати сміття.
Що це було, я не зрозумів.
Може бути, в момент старту модуль вибивав захист мультиметра по току. Довелося підключати через А-діапазон, вийшло близько 0.2-0.3 А, тобто 200-300 мА, з зрозуміло ніякої точністю.
Однак в будь-якому випадку, для XC6206 це вже на межі. Вона то більше 200 мА видавати не повинна.
А далі я спробував підключити модуль до Ардуіно.
Причому оскільки «залізний» UART Ардуіно використовувався для зв'язку її з комп'ютером, я підвісив ESP8266 на Софтова UART (бібліотека SoftwareSerial) на 10-ий і 11-ий Піни Ардуіно.
І ось тут то чи Софтова UART не справлявся зі швидкістю 115200, то чи не варто підключати харчування через Ардуіно, але нормально зв'язатися з модулем через Ардуіно мені вже не вдалося - передача весь час збивалася на сміття.
А потім я для перевірки і зміни швидкості ESP8266, почав перемикати його між Ардуіно і перехідником USB-UART, потім назад, в результаті чого переплюсовал харчування і ESP8266 згорів ...
Привіт всім!
Що ж, і я додам, теж не зміг пройти повз цих модулів.
Обзавівся 07 і 12 і вже (правда повільно) пару тижнів їх колупаю.
Ось тут писав про це. Сюди копіювати не буду, щоб не плодити одну і ту ж інфу. Якщо цікаво, то прочитайте там, будь ласка.
В принципі, можу щось спростувати або підтвердити (що сам перевірити встиг).
По-перше, модулі досить примхливі за багатьма параметрами, тому підключати їх слід саме так, як, наприклад, я за посиланням вище описав.
Тобто не залишати в повітрі ні 1 ноги, все підтягувати. Причому не варто підключати жодну ногу прямо ні до землі, ні до харчування, тому що ноги можуть в різних варіаціях і на різних прошивках працювати в різних режимах, і та ж GPIO15 може включитися на вихід, а якщо вона у вас на землю жорстко повішена, то просто вигорить.
В принципі, у мене модулі заводяться з найпростішим підключенням: GPIO15 підтягти на землю, CH_PD на 3.3 і RX | TX до перехідника на комп. Правда в такому режимі працює воно ну зовсім не стабільно, але працює, якщо не чіпати руками і не дихати :)
Споживання, насправді цілком може перевищувати навіть заявлені в документації mA. У мене підстрибувало приблизно до 270 mA. Точно не скажу - не пам'ятаю. В середньому ж модуль зазвичай їв близько 80 mA. Знову ж по пам'яті. Я сильно з цим не морочився, просто поміряв - порівняв з ДШ і успокоілся.В ідеалі розраховувати на 300, а краще з запасом на 350 mA - якщо проектувати для нього харчування / підбирати стабілізатор.
Далі, режим зниженого в модулі є. Насправді навіть кілька варіантів його є.
Але в AT-прошивці тільки 1 найпростіший присутній: режим глибокого сну.
У нього модуль переходить при подачі певної команди на вказане в цій команді час. А через це час сам себе будить через GPIO16, якщо з'єднати його з ногою резета.
Тобто по суті він сам себе скидає через заданий відрізок часу. І якщо не підключити GPIO16 до резет, просто не прокинеться :)
Про роботу через Ардуіно: софтового серіалу на Ардуіно не вистачає для нормальної роботи з ESP, занадто швидкість велика і мало ресурсів. Нормальної роботи в такому режимі не отримати.
Ті, кому кров з носу треба на Ардуіно з 1 хардварний UART використовувати і ESP і підключення до ПК, роблять навпаки: ESP підключають до хвардварному порту, а до ПК Ардуіно вже по софтварному вішають.
Ну і ще рекомендується перевірити, які в бібліотеках Ардуіно встановлені буфери на UART на прийом / передачу, і, можливо, збільшити їх.
Я для тестів використовую МЕГУ, в ній 4 UART апаратних, так що проблем немає, причому ганяю її на 3.3 вольта, так що і погоджувати нічого не доводиться :)
Що до прошивок, на даний момент є такі найпоширеніші варіанти:
- заводська на базі AT-команд
- NodeMCU - прошивка. що дозволяє заганяти і використовувати на ESP скрипти на мові lua
- ну і як варіант - народ пише свої власні прошивки на C / C ++ - для цього всі передумови є, так як в такому випадку можна позбутися (частково) від глючной коду Espressif і модуль дійсно може перетворитися в надійного самостійного виконавця. Для прикладу можна глянути ось таку ось збірку.
А так народ навіть свій UDK робить. для розробки. Його теж має сенс глянути.
Якщо коротко: то прошивки. засновані повністю на коді від Espressif мають безліч багів (від неї ж). І покладатися на них на 100% в якості самостійного пристрою - не можна. Тільки якщо для домашніх виробів.
Так що варіанти два:
1) використовувати додатково ще який-небудь МК в зв'язці з ESP і просто рулювати цією ESP з зовнішнього МК (принаймні хоча б відслідковувати її зависання і перезавантажувати її якщо зависне)
2) писати свою прошивку, попередньо розібравшись в тонкощах роботи і відмовившись по можливості від SDK Espressif
Я для себе поки зупинився на 1 варіанті. Тобто використовую ESP просто в якості прозорого WiFi моста для AVRкі, через який она спілкується вже з головним пристроєм.
І так, якщо кого цікавить моя думка по модулях: вони не без недоліків, але особисто мене вони дуже радують, особливо з точки зору ціни (навіть при поточному курсі рубля). Так що я їх планую використовувати в своїх виробах домашніх і далі.
PS: я на звання знавця не претендую, просто перечитав з того, що було, дуже багато. Так що, якщо у кого питання які - задавайте, постараюся відповісти на що зможу, або принаймні пошлю по посиланню підходящої.
Дуже раджу для початку ознайомитися з цією ось документацією:
ESP8266_Module Application Design Guide.pdf
ESP8266_Beginners_Guide_V0.4.1.pdf
ESP8266_Specifications_v4.1.pdf
Для роботи з AT-прошивкою:
4A-AT-Espressif AT Instruction Set_v0.21.pdf
4B-AT-Espressif AT Command Examples_v0.3.pdf
Для вивчення SDK:
2C-SDK-Espressif IoT SDK Programming Guide_v0.9.5.pdf
Вона вся є тут.
Не густо, але загальне якесь розуміння скласти можна і не наступити далі на граблі, типу: «Чомусь при спробі поміряти вбудованим ADC напруга більше 1 вольта модуль перезавантажується / зависає. »- а тому що таке обмеження у нього: від 0 до 1 вольта, і в специфікаціях це зазначено :)
Хоча і на 100% вірити їм не варто звичайно. Зокрема споживання максимальне зазначено в 215 mA в специфікаціях, а на ділі модуль може їсти більше.
Оффтоп але добру пораду. Знання повинні дублюватися. Раджу не лінуватися і писати на обох ресурсах. Занадто багато сайтів з корисною інформацією просто зникли за останні роки. Адмін чи запив або одружився, трамвай адміна переїхав, датацентр згорів, ... купа обставин буває. Сайт типу цього наприклад залежить від однієї людини. Не дай бог що з ним трапиться, ні базу не завантажити, ні домен не продовжити, ні хостинг не оплатити.
Да уж, не дай Бог ...
Маю і ESP-07 і ESP-12 по кілька штук. Все не перевіряв, бо прийшли в запаяних пакетиках, так що вибрав по 1 того і того. Брав на ali. У різних, ЕМНІП, продавців. Від ESP-01 чогось відразу вирішив відмовитися нафіг, почитавши форум і інтернет :)
07 запаюють на макетке сам, тому що не було хустки для розпаювання. Вийшло надійно і для макетке підходить добре.
12 вже паял на прийшли дешевий жовті хустки, по зручності гірше підходять для макетке, тому що по ширині закривають її всю, зате припаяти в разу швидше виходить - це зрозуміло. Ну та це дрібниці.
Підключення використовую стандартне:
- 3.3 вольта зі стабілізатора на 1117 на VCC і GND
- додатково електроліт і кераміка з харчування
- ADC через 4,7Ком на землю
- GPIO15 через 10кОм на землю
- GPIO2, 0, 5, 4, 13, 12, 14 через 10кОм на +3.3
- GPIO16 через 10кОм на +3.3 і через 470ом на REST
- CH_PD через 470ом на +3.3
- RX, TX безпосередньо на arduino або на USB-TTL (обидва працюють в режимі 3.3 вольта, тому без узгодження, ну і земля ще загальна)
(При перепрошивке: вимикаю / GPIO0 перекидають на землю / включаю / прошиваю / відключаю / повертаю GPIO0 на +3.3 / включаю - profit)
Частково інфу брав з цієї ось і інших схем в інтернеті, частково домислював сам за повідомленнями тут на форумі (зокрема від ув. Pvvx) і за логікою :) Якщо коротко, то підтягувати треба все і обов'язково через резистори, щоб ненароком не попалити GPIO . Безпосередньо тільки саме харчування. Так RX | TX бо рівні узгоджені. Харчування потрібно подавати рівне / стабільний і з запасом по струму.
До речі, мої модулі ще дуже не люблять до потрапляння в схему будь-якого шматка непідключеного дроти.
Тобто, працює схема, беремо просто проводок (хоч той же макетний) і встромляє його в шину живлення на землю - ESP при цьому частенько перезавантажується.
Ось так це виглядає якось тиц і тиц.
Модулі 07 прийшли нові, тобто у них розводка як у 12-их (зустрічав інформацію, що раніше розводка була трохи інша).
Разом: і 07 і 12 працюють, шиються. Спілкуються з ПК як через USB-TTL (на CP-шке начебто) так і через arduino в режимі програмного моста (в тому сенсі, що на arduino використовується два UART порту і скрипт, прокидаємо через них інформацію прозоро).
Тестую поки на AT прошивках (на 07 залив останню бету).
Для себе написав поки программуліна ще на delphi 7 (жах, розумію, але поки так), яку використовую для тестування стабільності передачі в прозорому режимі: вона відправляє різні обсяги даних, приймає їх і порівнює. Виглядає якось так. Якщо кому таке поділитися потрібно - пишіть, викину куди-небудь.
В принципі стабільність роботи для моїх потреб достатня (я збираюся ESP використовувати чисто як міст WiFi-UART). При великому розмірі пакета, або якщо пакети йдуть великим потоком, ESP звичайно перезавантажується, буває. Але якщо мати МК-майстер для контролю, який завжди дасть ESPешке по рогам, якщо та задурити, а останню використовувати чисто як модуль зв'язку - то норм. Та й пакети я збираюся передавати байт по 16-32. Ну ще 128 байт-пакетики будуть, тому що хочу ще прошивку головного МК (AVR-ки) через WiFi реалізувати.
Якось так.
ESP-07 виходить тепер з висновком АЦП? Де на нього футпрінт знайти?