Знайомство з модулем ESP8266?
В процесі вивчення та проектування Інтернет речей (Internet of Things, скорчено IoT) приходить час, коли виникає необхідність навчитися працювати з таким поширеним видом зв'язку як WiFi. Оскільки саме такий вид зв'язку може дозволити комфортно створити єдину мережу для ваших розумних домашніх пристроїв та грамотно ними керувати. Наприклад, з мобільного телефону, планшета або комп'ютера, тобто іншими словами створити справжнісінький розумний будинок, який обійдеться вам в десятки разів дешевше, ніж купувати готові рішення в магазині або створити автономного робота з управлінням з мобільного телефону. Використання WiFi звичайно не обмежується на цьому, і прикладів використання цього виду зв'язку настільки багато, що перераховувати їх немає сенсу. А краще розібратися, як правильно працювати з таким модулем.
Розберемо як можна працювати з даним моделей не маючи перехідника USB – UART і не маючи налагоджувальних плат. В якості перехідника USB-UART буде використано плату Arduino. Розберемо підключення на основі Arduino Mega 2560 .
ESP8266
Широка доступність Wi-Fi мереж роблять цікавим для розробника можливість реалізації у своїх проектах функції безпровідного доступу як в локальну, так і глобальну мережу. Наявність на ринку великого числа недорогих рішень що дозволяють інтегрувати Wi-Fi робить концепцію IoT (Internet of thing, Інтернету речей) такою, що легко реалізовується навіть для початківців. Одним з «проривів» останніх років в області безпровідних рішень стала поява мікроконтролера ESP8266EX від компанії Espressif Systems. Недорогий чіп з мінімумом зовнішніх компонентів дозволяє отримати повноцінне Wi-Fi рішення.
Основні характеристики:
— підтримка WiFi протоколів 802.11 b/g/n з WEP, WPA, WPA2;
— підтримка режимів роботи : клієнт (STA), точка доступу (AP), клієнт+точка доступу (STA+AP);
— напруга живлення (1.7-3.6) В (реально потрібно 3.3 В);
— споживаний струм: до 300 мА залежно від режиму роботи.
Проте якщо «рядовий» інженер або розробник-ентузіаст спробує просто «в лоб» узяти цей чіп і реалізувати на за йото допомогою Wi-Fi інтерфейс, то можна бути впевненим, що його чекає декілька тижнів захоплюючого прочитання datasheet-тів, вивчення особливостей SDK, копання в прикладах коду та інструментах розробки. Навіть така проста дія як заливка програми в ESP8266 призведе до вирішення серйозних питань. Така пригода уб'є бажання освоїти цей прекрасний міроконтролер у кого завгодно. Зрозуміло, розібратися в у всьому вищесказаному потрібно якщо розробник збирається займатися з ESP8266 професійно, використати його в комерційних продуктах. Проте якщо йдеться про «тест-драйв», бажанні використати Wi-Fi в радіоаматорстві, швидкому прототипуванні пристроїв (актуально для починів (стартап)), та й просто розширення кругозору, то потрібне доступніше рішення.
На щастя китайською радіоелектронною промисловістю був оперативно освоєний випуск модулів на основі ESP8266. Це ціла лінійка недорогих модулів ESP з маркіровкою від 01 до 12. Причому мало не кожен місяць стабільно з'являються нові модифікації, такі як ESP-12E (вирізняється додатковими виводами), ESP-13 (аналог WROOM-02), ESP-14 (flash пам'ять збільшена до 4 Мб) і так далі. Ситуація тут вже краща - підключивши до відповідних виводів живлення (дуже важливо, живлення +3,3В, модуль дуже примхливий до напруги живлення) та використовуючи USB-UART перехідник можна почати повноцінно працювати з ESP8266. Також необхідно зробити додаткову обв'язку у вигляді пари перемикачів для перезавантаження модуля і для його прошивки, 5-6 резисторів і пари конденсаторів для стабільного функціонування ESP8266 (чіп дуже чутливий до якості живлення). Робота не складна але вимагає певних навичок і розуміння принципів роботи ESP8266. Безперечною перевагою такого підходу є те, що після відладки модуль можна стаціонарно встановлювати у будь-який виріб для реалізації Wi-Fi інтерфейсу. Основна складність для розробника залишається в необхідності розібратися в усьому різноманітті модулів ESP та вибрати найбільш відповідний.
Починати знайомство з ESP8266 необхідно з налагоджувальних плат (development board). Як правило, вони позбавляють від маси другорядних завдань що не відносяться безпосередньо до вивчення ESP8266 (один тільки нестандартний крок распіновки модуля в 2 мм відніме у вас 2-3 години часу), зменшують ймовірність ушкодження модуля з необережності (стандартна напруга +5В виведе ваш ESP8266 з ладу)
Отже, чим же зручні налагоджувальні плати ESP8266 (на прикладі NodeMCU LoLin v.3) :
— наявність вбудованого інтерфейсу USB-UART реалізованого на добре відомих перетворювачах CP2102 або CH340G. Підключення до ПК відбувається за допомогою звичайного кабелю microUSB;
— вбудований перетворювач напруги +3,3 В, а саме живлення береться безпосередньо від USB порту ПК;
— усі доступні на ESP8266 виводи виведені на дві гребінки із стандартним кроком 2,54 мм ;
— на налагоджувальній платі є 4 Мб flash пам'яті, а використання прошивки NodeMCU дозволить реалізувати вбудовану файлову систему spiffs;
— вбудовані мікрокнопки reset і flash для перезавантаження і перепрошивки модуля.
На ринку представлена величезна кількість різних налагоджувальних плат.
Однак можливо у вас немає налагоджувальної плати. Що можна зробити?
З чого почати?
Приступимо і спершу розберемо виводи WiFi модуля ESP8266 – 01, як найпростішого технічного рішення
VCC - живлення модуля від 3V до 3.6V (пам’ятаємо 3.3V ).
GND - земля.
RST - контакт Reset відповідає за перезавантаження модуля.
CH_PD - "chip power - down" при поданні живлення на нього, активізується робота модуля.
TX - передача даних (UART інтерфейс)
RX - прийом даних (UART інтерфейс)
GPIO0 - порт вводу/виводу загального призначення
GPIO2 - порт вводу/виводу загального призначення
GPIO0 і GPIO2 - це такі самі цифрові виводи, з якими працюємо на платах Arduino для взаємозв'язку з різними датчиками, і застосовуються вони у разі реалізації самостійної роботи на внутрішньому мікроконтролері WiFi модуля ESP8266 - 01.
Підключаємо плюс (+) джерела живлення 3.3V до контакту VCC модуля ESP8266 - 01, а мінус (-) джерела живлення підводиться до контакту GND. У такому стані на модулі включиться червоний світлодіод, що сигналізує нам про правильне підключення живлення. Для того, щоб модуль активізувався, необхідно також з'єднати плюс (+) джерела живлення з контактом CH_PD модуля ESP8266 - 01 і бажано це зробити відразу через резистор 10кОм. Тепер, коли включено живлення, на модулі повинен світитися червоний світлодіод і пару разів швидко блимнути синій (голубий) світлодіод. Якщо все так і відбувається, це означає все відмінно, модуль підключено правильно. Інакше ще раз перевіряємо підключення.
Далі. Для роботи з Wi-Fi модулем ESP8266 потрібен перехідник USB - UART. Перехідники бувають різні, наприклад: FT232RL, CP2102, PL2303. Робота з перехідниками це окрема тема яка вимагає детального вивчення.
Розберемо як можна працювати з даним моделей не маючи перехідника USB – UART і не маючи налагоджувальних плат. В якості перехідника USB-UART буде використано плату Arduino. Розберемо підключення на основі Arduino Mega 2560 .
Робимо підключення згідно з наступною схемою.
Для надійного живлення модуля ESP8266 - 01 необхідно використовувати стабілізоване джерело живлення 3.3V, краще не брати живлення від своєї плати Arduino, оскільки модуль споживає струм до 215mA і це може погано закінчиться для Arduino. Де узяти стабілізоване джерело живлення на 3.3V сподіваюся для вас не проблема, інакше вам явно ще рано займатися цим модулем. Наприклад, можна використати, для швидкого збору схем на макетних платах, такий модуль живлення 3.3V і 5.0V як YWRobot, який дозволяє швидко отримати стабілізовану напругу на 3.3V або 5V на відповідних контактах.
Підключаємо плюс (+) від джерела живлення 3.3V до контакту VCC модуля ESP8266 - 01, а мінус (-) джерела живлення підводиться до контакту GND. У такому стані на модулі включиться червоний світлодіод, що сигналізує нам про правильне підключення живлення. Для того, щоб модуль активізувався, необхідно також з'єднати плюс (+) джерела живлення з контактом CH_PD модуля ESP8266 - 01 через резистор 10кОм. На модулі повинен засвітитися червоний світлодіод і пару разів швидко блимнути синій світлодіод.
Увагу! Необхідно замкнути перемичкою на платі Arduino контакти RST і GND. Така маніпуляція відключає мікроконтролер і дозволяє зробити з плати Arduino справжнісінький перехідник USB-UART.
Оскільки WiFi модуль ESP8266-01 живимо від окремого зовнішнього джерела живлення, то повинні завжди з’єднувати землю усіх джерел живлення. З’єднуємо виведення GND плати Arduino з землею (-) зовнішнього джерела живлення 3.3V, призначеного для живлення модуля ESP8266-01.
Контакт TX плати Arduino сполучаємо з контактом TX модуля ESP8266-01. По цій лінії передаватимуться дані від Wi-Fi модуля до плати Arduino. Хто знайомий з UART інтерфейсом, може замислитися: "Але як же так? Скрізь навчали, що TX повинен з'єднуватися з RX. TX передає інформацію, а RX приймає". І ви будете праві. Усе вірно завжди TX з'єднується з RX, але саме у разі, коли ми робимо з Arduino перехідник USB-UART, необхідно підключати пристрої безпосередньо. Вважайте це виключенням з правил.
Лінію RX плати Arduino підключаємо так само безпосередньо до лінії RX модуля ESP8266-01. По цій лінії передаватиметься інформація від плати Arduino на плату Wi-Fi модуля. Але робимо це з'єднання через так званий дільника напруги, що складається з двох резисторів номіналами 1кОм і 2кОм. Зменшити напругу на цій лінії за допомогою двох резисторів (дільника напруги) нам необхідно, оскільки плата Arduino передає логічний сигнал напругою 5V, а Wi-Fi модуль працює з напругою 3.3V. Для перетворення логічного сигналу можна використати спеціальну перетворювачі логічних рівнів, що було б звичайно правильніше, але знову ж таки припустимо, що їх немає, і довелося піти простішим шляхом і зробити це за допомогою дільника напруги.
Усе необхідне для подальшої роботи підключено, але залишаються не задіяні ще 3 контакти (GPIO0, GPIO2 і RST) на WiFi модулі ESP8266-01. Для стабільної роботи Wi-Fi модуля необхідно ці не задіяні контакти, що залишилися, підтягнути до плюсової (+) лінії живлення модуля через резистори в 10кОм.
Це позбавить нас від різних завад (перешкод) і зробить роботу модуля стабільною. Краще це робити відразу. Інакше модуль постійно буде перезавантажуватися, видавати не зрозумілу інформацію, або взагалі не захоче працювати.
І знову перевіряємо працездатність модуля WiFi ESP8266-01. Включаємо живлення і дивимося, засвітився червоний світлодіод і пару разів блимнув синій. Якщо усе так відбувається, це означає все відмінно, можна рухатися далі. Інакше перевіряємо правильність з'єднань та надійність усіх контактів. Може бути просто банальна ситуація, коли десять разів усе перевірили і переконалися, що усе правильно підключили, але включаючи модуль, бачите, що синій світлодіод поводиться не адекватно, постійно горить, постійно блимає або взагалі ні на що не реагує. Це може відбуватися із-за поганого контакту. Наприклад, збираючи схему на макетній платі, який-небудь з резисторів нещільно сидить на своєму місці і це призводить до неконтакту. Перевіряти якість з'єднань обовязково. Модуль дуже чутливий. Не нехтуйте цим. Це часта причина не стабільної роботи.
З залізом розібралися, переходимо до програмного забезпечення.