WiFi модуль ESP8266

Содержание

ESP8266 — недороге рішення для підключення різних пристроїв, розроблених переважно на базі мікроконтролерів, до мережі WiFi. ESP8266 працює з інтерфейсом UART, що спрощує процес підключення до мікроконтролера і є найбільш простим і зрозумілим рішенням. Модуль керується AT командами і не потребує жодних спеціалізованих бібліотек.

ESP8266 ESP8266 ESP8266 ESP8266

Параметри модуля ESP8266

  • напруга живлення 3.3 В
  • струм 215 mA у режимі передачі даних, до 62 mA під час прийому даних
  • 802.11 b/g/n протокол
  • керування модулем за допомогою AT-команд
  • робоча температура від -40 до +125 градусів за шкалою Цельсія
  • максимальна дистанція зв`язку — 100 метрів

Живлення ESP8266

Живлення ESP8266 — 3.3 В. Виводи толерантні до 5 В, але модуль не працює, якщо його живити напругою +5 В. Модуль споживає досить багато — 215 мА у режимі передачі даних та 62 мА у режимі прийому. Зверніть увагу на потужність Вашого блоку живлення. Він має видавати як мінімум 300 mA, інакше можуть виникнути проблеми.

Розпіновка та підключення ESP8266

Підключимо WiFi модуль ESP8266 до комп’ютера за допомогою UART-USB перехідника та спробуємо попрацювати з модулем у ручному режимі. Не забуваємо, що TX модуля підключаємо до RX UART-USB перехідника, а RX модуля підключаємо до TX UART-USB перехідника. Вхід CH_PD (chip enable) підключаємо до +3.3 В.

ESP8266 Pins

Приколи з терміналом (#13#10)

Можна використовувати будь-яку термінальну програму. У мене встановлений PuTTY. Це SSH клієнт, але він може працювати і з COM портом. Після підключення пробуємо вводити команду AT. Натискаємо ENTER і. нічого не відбувається. Модуль не сприймає команду. З`ясувалося, що модуль ESP8266 вимагає закінчення вводу команди двома символами с кодами 13 і 10 (без додаткових налаштувань в PuTTY по натисканню клавіші ENTER відправляється тільки #13). Я, не довго думаючи, використав старий прийом: натискав на клаві лівий Alt та набирав "10" на цифровій клавіатурі. Потім знайшлась спеціальна опція у налаштуваннях (розділ "Terminal"), яка вирішує цю проблему автоматично: "Implicit LF in every CR".

AT Команди ESP8266

  • AT — Тестова команда повертає OK
  • AT+RST — Перезавантаження модуля. По завершенню перезавантаження повинні побачити "ready"
  • AT+GMR-Перевірка версії прошивки модуля
  • AT+CWMODE=режим — Задає режим роботи модуля mode: 1 — клієнт, 2 — точка доступу, 3 — змішаний режим
  • AT+CWLAP — Повертає список WiFi точок доступу, до яких можливо підключитися
  • AT+CWJAP=ім’я,пароль — Підключитися до точки доступу задавши ім`я точки та пароль. Якщо підключення пройшло успішно — команда видасть OK. А модуль збереже у пам`яті дані про точку і надалі самостійно буде до неї підключатися
  • AT+CWQAP — Відключитися від точки доступу
  • AT+CWSAP=ім`я,пароль,канал,шифрування — Створити свою точку доступу самого модуля
  • AT+CWLIF — отримати список підключених пристроїв (якщо модуль працює, як точка доступу)
  • AT+CIPSTATUS — Отримати поточний статус TCP-з’єднання
  • AT+CIPSTART — Для одного з`єднання (+CIPMUX=0): AT+CIPSTART=тип,адрес,порт Для багатопоточного режиму (+CIPMUX=1): AT+CIPSTART=ID,тип,адреса,порт ID— ідентифікатор з`єднання тип— тип з`єднання: TCP або UDP адреса— адреса IP або URL порт— порт
  • AT+CIPMODE= режим — Встановити режим передачі даних: режим= 0 — not data mode (сервер може відправляти данні клієнту і може приймати дані від клієнта) режим= 1 — data mode (сервер може відправляти данні клієнту, але не може приймати дані від клієнта)
  • AT+CIPSEND — Відправити данні Для одного з`єднання (+CIPMUX=0): AT+CIPSEND=кількість символів Для багатопоточного режиму (+CIPMUX=1): AT+CIPSTART=ID,кількість символів ID— ідентифікатор з`єднання кількість символів— кількість даних (байт) що відправляються. Самі данні передаються після відповіді модуля на команду після символу ""
  • AT+CIPCLOSE — Закрити з`єднання. Параметр для багатопоточного режиму ID— ідентифікатор з`єднання. Для одного з`єднання (+CIPMUX=0): AT+CIPCLOSE Для багатопоточного режиму (+CIPMUX=1): AT+CIPCLOSE=ID
  • AT+CIFSR — Отримати IP модуля. Це можливо після підключення до WiFi точки.
  • AT+CIPMUX= режим — Задає кількість з’єднань. режим=0 для одного з`єднання, режим=1 для багатопоточного режиму (до п`яти підключень)
  • AT+CIPSERVER= режим, порт — Відкрити порт. режим- режим прихованості (0 — прихований, 1 — відкритий), порт — порт
  • AT+CIPSTO=час — Встановити час одного з`єднання у секундах (timeout)
  • AT+CIOBAUD=швидкість — Встановити швидкість UART порту. Працює для версій прошивки від 0.92.
  • Прийом інформації — дані приходять з позначкою +IPD, після якої йде інформація про кількість прийнятих даних, а потім — сама інформація. Для одного з`єднання (+CIPMUX=0): +IPD,кількість символів:інформація Для багатопоточного режиму (+CIPMUX=1): +IPD,ID з`єднання,кількість символів:інформація Приклад: +IPD,0,6:ptnpnh — прийнято 6 байт інформації.

Дуже прикро, але я не знайшов команди, за допомогою якої можна дізнатися MAC-адресу модуля. Довелося дізнаватися MAC-адресу модуля після підключення модуля до WiFi мережі. Не дуже зручно, якщо для доступу до WiFi застосовується фільтрація по MAC-адресам, як у мене.

Оновлення прошивки ESP8266

Я рекомендую оновити прошивку модуля, якщо вона застаріла. Перевірити версію прошивки можна командою AT+GMR. Качаємо програму для прошивки, та саму прошивку. Потім треба перевести модуль у режим програмування. Для цього треба підключити GPIO0 до GND. І тільки після цього подавати живлення на модуль. Якщо GPIO0 переключати під час роботи модуля, це не спрацює. Далі, за допомогою програми заливаємо прошивку. Як оновити прошивку, де і які програми качати — детально написано тут: http://esp8266.ru/esp8266-podkluchenie-obnovlenie-proshivki/#esp8266-update-firmware Доречі, оновлення прошивки також можливе через Інтернет, але тільки якщо поточна версія прошивки старша за 0.92. Я скористався цим один раз і більше не хочу. Після такого оновлення модуль моргав світлодіодами, як скажений і зовсім не хотів працювати. Прошивка вручну допомогла повернути його до життя.

Тестуємо ESP8266 вручну

Щоб підключити модуль ESP8266 до WiFi виконуємо наступні команди:

SID — SID Вашої WiFi мережі;
password — пароль для доступу до WiFi.

Після підключення можемо переглянути IP-адресу модуля. Я сподіваюся, Ви розумієте, що Ваша WiFi точка доступу повинна мати DHCP сервера і автоматично видавати IP-адреси.

На своєму маршрутизаторі я прописав статичну адресу для мого модуля — 192.168.1.100.

Відкриємо порт (88):

Тепер, коли підключитесь до модуля на вказаний порт, зможете передавати дані. Спробуємо зробити це за допомогою telnet:

Якщо у Вас Windows 7, чи щось новіше від Білла, тоді Ви не знайдете telnet у системі. Доведеться щось вигадувати. Але, якщо у Вас є PuTTY скористайтеся наступною командою:

Тепер, якщо Ви все зробили правильно, можна ввести дані руками і на терміналі, підключеному до модуля ESP8266, побачимо як вони прилітають. Можна спробувати підключитися до модуля звичайним браузером: http://192.168.1.100:88

Дані схожі на щось таке:

+IPD — префікс
0 — ID сесії
303 — довжина прийнятих даних

після символу ":" йдуть дані.

Якщо треба відповісти, відправляємо модулю команду:

0 — ID сесії;
3 — довжина даних які ми будемо передавати чикаємо символ "" Та вводимо данні.

Повинні побачити відповідь модуля:

А у консолі telnet набрані дані — "www" . Якщо Ви підключилися браузером, відповідь "www" браузер, скоріш за все, не зрозуміє. Йому потрібна коректна відповідь. Щось схоже на таке:

Цим ми і займемося трохи далі.

Модуль може робити в режимі одиночного підключення і у режимі декількох підключень (до 5) (дивись команду: AT+CIPSTART). Та, коли модуль працював у однопоточному режимі, мені не вдалося відкрити порт. Тому далі я працював лише з багатопоточним режимом (AT+CIPMUX=1).

Налаштування доступу до WiFi точки. Як "не світити" пароль.

Модуль може бути як точкою доступу, так і підключатися до вказаної точки доступу. Я використовував модуль для підключення до існуючої WiFi мережі. Дуже приємна особливість — після підключення модуль зберігає ім`я WiFi точки та пароль. Якщо модуль вимкнути і знову включити, він самостійно буде підключатися до раніше вказаної точки доступу. Після підключення модуль отримає IP, і готовий для роботи. Лишається тільки налаштувати порт. Таким чином, якщо у Вас змінився пароль до WiFi, або взагалі змінилися налаштування, достатньо витягти модуль з Вашого пристрою, підключити до комп’ютера за допомогою UART-USB перехідника і вручну підключитися до WiFi. Модуль запам`ятає параметри підключення, після чого його можна повернути у пристрій. Тобто, Вам не прийдеться вигадувати яким чином вбивати новий пароль до WiFi точки у Вашому пристрої. Це особливо важливо для мініатюрних задач, де взагалі можуть бути відсутні дисплей, кнопки, тощо.

Підключаємо модуль ESP8266 до мікроконтролера Atmega

Підключимо модуль до мікроконтролера і спробуємо написати приклад для обробки запитів через звичайний браузер. У прикладі я використав звичайнісіньку Atmega8.

Спробуємо зробити простенький Web-інтерфейс, за допомогою якого можна буде вмикати і вимикати світлодіод.

Заходимо будь-яким браузером: http://192.168.1.100:88

Програма формує просту HTML-сторінку з двома посиланнями для вмикання і вимикання світлодіода.

Проблеми модуля ESP8266

Під час створення цього прикладу виникла проблема. Справа у тому, що браузер, окрім основного запиту, відправляє запит на отримання файла favicon.ico. Інколи він приходить досить невчасно, коли програма закриває з`єднання. Це інколи призводило зо зависання модуля. Тому у прикладі стоїть досить великий тайм-аут (AT+CIPSTO=5) і сесія закривається не програмно, а автоматично (команда AT+CIPCLOSE=id не використовується). Якщо використовувати telnet або аналогічну програму, зависань не відбувалося.

Загнати модуль у ступор також можна наступним чином:

  1. модуль піднімає порт
  2. до нього підключаємось за допомогою telnet, тощо, відправляємо дані
  3. мікроконтролер починає відповідати і у той момент, коли мікроконтролер отримав символ "" і надсилає дані у модуль, ми рвемо зв`язок. Мається на увазі закриваємо Telnet, тощо. FiWi продовжує працювати як треба, модуль ESP8266 у мережі видно (тобто він пінгується), але.
  4. модуль ESP8266 у ступорі і на запити більше не відповідає.

Виходить, що WiFi модуль ESP8266 може не коректно працювати якщо під час передачі даних рветься TCP-з`єднання. Можливо Ви ніколи і не зіштовхнетесь з цією проблемою, може вона буде вирішена у наступних версіях прошивки, проте вона існує і трохи мене розчарувала. Вцілому можу сказати, що я не в захваті від модуля, але, якщо пристосуватися до його особливостей, — цілком можна використовувати. До того ж, це саме просте рішення для підключення мікроконтролерів до комп’ютерної мережі. З цим модулем навіть самі слабенькі мікроконтролери, які мають UART, можуть працювати у локальній мережі чи у Інтернеті.


Источник: blog.avislab.com