Як працює ESP8266

Початок роботи з esp8266 (частина 2): використання команд at

Цей підручник є продовженням попереднього підручника Початок роботи з ESP8266 (Частина 1). Отже, щоб зробити невеликий підсумок, у нашому попередньому навчальному посібнику ми познайомилися з модулем ESP і навчилися декільком основам про нього. Ми також виготовили плату розробки, використовуючи модуль послідовного адаптера FTDI, який можна легко використовувати для програмування модуля ESP, використовуючи як команди AT, так і Arduino IDE.

У цьому підручнику ми дізнаємося, як використовувати AT-команди для роботи модуля трансивера Wi-Fi ESP8266. І в наступному посібнику ми навчимося програмувати ESP8266 за допомогою Arduino IDE (без Arduino) та прошивки ESP8266.

Програмування ESP8266 за допомогою AT-команд:

Перший і найпростіший спосіб програмування модуля ESP – це використання команд AT. Букви AT означають «УВАГА». Команди AT – це інструкції, якими можна керувати певним модемом, у нашому випадку це модуль ESP8266. Команда AT завжди починається з літери AT і слідує за якоюсь конкретною командою. Повний перелік команд AT, які можна використовувати для управління та програмування ESP8266, наведено в документації Espressif Systems. Те саме можна знайти за посиланням нижче.

Ви можете прочитати документацію, щоб зрозуміти, що робитиме кожна команда. Але для цілей цього підручника я використовую лише кілька команд, щоб просто перевірити версію мікропрограми модуля та налаштувати модуль на роботу в режимі точки доступу (точки доступу).

Ці AT-команди можуть бути надіслані безпосередньо з будь-якого програмного забезпечення послідовного монітора (Putty або Arduino) з нашого комп’ютера, в основному для того, щоб відправити ці AT-команди, слід встановити послідовний зв’язок між модулями ESP і комп’ютером. Щоб увімкнути це з’єднання, цей вивід Rx та Tx модуля ESP підключений до виводу Tx та RX модуля FTDI відповідно, як пояснювалось у попередньому навчальному посібнику. Тож давайте почнемо…

Також перевірте наші різні цікаві проекти IoT на основі ESP8266.

Передумови:

Для цього проекту вам знадобиться наступне:

  1. Модуль ESP8266
  2. FTDI Breakout Board (3,3 В)
  3. Буде працювати будь-яке програмне забезпечення послідовного монітора, наприклад шпаклівка або навіть Arduino
  4. Мабуть, прочитали попередній підручник, і вищезгадане підключення слід зробити

Тоді найважливішим кроком є ​​правильне підключення модуля ESP. Це дуже добре пояснено в попередньому підручнику. Принципова схема знову показана тут для довідки:

Крок 1: Встановіть будь-яке програмне забезпечення послідовного монітора. Цей підручник використовує Arduino Serial Monitor, оскільки більшість з нас має досвід використання його на платах Arduino.

Крок 2: Підключіть модуль ESP та модуль FTDI до плати розробки та увімкніть його. Переконайтеся, що штифт GPIO0 залишається вільним, а штифт RST на мить підключений, а потім вільним. Ми використовували перемикач на платі для вибору між програмуванням за допомогою команди AT та за допомогою Arduino IDE. І використовували кнопку для скидання ESP. Якщо ви встановили з’єднання, як пояснювалося в попередньому підручнику, ваша дошка повинна виглядати приблизно так

Крок 3: Підключіть плату FTDI до комп’ютера та відкрийте Диспетчер пристроїв, під COM-портами ви повинні побачити, до якого COM-порту підключений ваш модуль FTDI, запишіть це. Шахта підключена до COM20, як показано нижче.

Крок 4: Відкрийте свій Arduino IDE, переконайтеся, що ви підключені до порту FTDI COM (мій – COM20). Це можна забезпечити, перевіривши Інструменти-> Порти. Тепер відкрийте свій послідовний монітор і виберіть «І NL&CR», і швидкість передачі даних «115200», як показано внизу зображення на наступному кроці.

Примітка: Ваша швидкість передачі даних також може відрізнятися залежно від вашого постачальника. Якщо 115200 не працює, спробуйте 9600 та 38400 та 74880.

Крок 5: Переконайтеся, що ваш штифт GPIO0 залишився вільним (перевірте перемикач) і натисніть кнопку скидання. Ви повинні побачити кілька випадкових значень на послідовному моніторі, а потім зупинитися, сказавши “готовий”, як показано на малюнку нижче

Якщо ви до цього досягли, то чудово !! Ви можете розпочати програмування модуля ESP8266, використовуючи команди AT, використовуючи таблицю даних. Щоб зробити його цікавішим, я покажу вам, як налаштувати ваш модуль ESP в режимі AP + STA, і побачу, як він працює.

Крок 6: Першою командою, яку ми використали б, є команда AT. Він просто використовується для перевірки успішності запуску. Коли ви вводите “AT” і натискаєте клавішу введення, він повинен відповісти “OK”.

Крок 7: Перевірити SDK та версію мікропрограми модуля можна за допомогою команди “AT + GMR”

Крок 8: Як вже було сказано, модуль ESP може працювати в режимі точки доступу (режим точки доступу), режиму STA або як режиму точки доступу, так і режиму STA. Давайте запустимо модуль в режимі точки доступу, щоб ми могли перевірити, чи працює.

Просто надішліть “AT + CWMODE = 2”, і він відповість вам “OK”

Після введення команд ваш послідовний монітор буде виглядати приблизно так, як показано нижче

Тепер ви можете перевірити, чи діє ваш модуль як точка доступу, просто спробувавши підключитися до його мережі WIFI. Відкрийте свої налаштування WIFI на мобільному телефоні чи ноутбуці та знайдіть доступні мережі, де ви повинні знайти свій модуль ESP, перелічений, як показано нижче. Шахта називається ESP_A3A3E7

Повні кроки та їх роботу також показано у відео нижче.

Тож давайте зупинимо це поки що, у наступному підручнику ми побачимо “Як ми можемо запрограмувати модуль за допомогою Arduino IDE та як прошити пам’ять ESP8266”.

Не забудьте перевірити інші наші проекти на основі ESP8266.

WiFi модуль ESP8266

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

Параметри модуля 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 В.

Приколи з терміналом (#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=,,, — ідентифікатор з`єднання — тип з`єднання: TCP або UDP — адреса IP або URL — порт
  • AT+CIPMODE= – Встановити режим передачі даних: = 0 — not data mode (сервер може відправляти данні клієнту і може приймати дані від клієнта) = 1 — data mode (сервер може відправляти данні клієнту, але не може приймати дані від клієнта)
  • AT+CIPSEND – Відправити данні Для одного з`єднання (+CIPMUX=0): AT+CIPSEND= Для багатопоточного режиму (+CIPMUX=1): AT+CIPSTART=, — ідентифікатор з`єднання — кількість даних (байт) що відправляються. Самі данні передаються після відповіді модуля на команду після символу “>”
  • AT+CIPCLOSE – Закрити з`єднання. Параметр для багатопоточного режиму — ідентифікатор з`єднання. Для одного з`єднання (+CIPMUX=0): AT+CIPCLOSE Для багатопоточного режиму (+CIPMUX=1): AT+CIPCLOSE=
  • 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,,: Приклад: +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 виконуємо наступні команди:

 AT+RST AT+CWMODE=1 AT+CWJAP="SID","password" 

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

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

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

 AT+CIPMODE=0 AT+CIPMUX=1 AT+CIPSERVER=1,88 

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

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

 plink.exe -telnet 192.168.1.100 -P 88 

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

+IPD,0,303:GET / HTTP/1.1 Host: 192.168.1.100 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive

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

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

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

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

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

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

 HTTP/1.1 200 OK Date: Sun, 12 Feb 2015 03:51:41 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Keep-Alive: timeout=5   Як працює ESP8266 - Відповіді фахівця  Текст  

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

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

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

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

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

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

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

 #include #include #include #include #include "delay.h" #include "uart.h" #define RXUBRR (F_CPU/16/9600)-1 //9600 //#define RXUBRR (F_CPU/16/115202)-1 //115200 uint8_t FLAG_REPLY; uint8_t RXi; char RXc; #define RX_BUF_SIZE 64 static char RXBuffer[RX_BUF_SIZE]; #define LED_DDR DDRB #define LED_PORT PORTB #define LED_PIN PINB0 #define LED_OFF LED_PORT |= (1 <// This function called from uart.c file (* - Make better if you wish) void RX_getc(unsigned char RXc) < if ((RXc != 255) && (RXc != 0) && (RXc != 10)) < if (RXc != 13) < RXBuffer[RXi] = RXc; RXi++; if (RXi >RX_BUF_SIZE-1) < clear_RXBuffer(); >> else < FLAG_REPLY = 1; >> > void uart_wite_char(char str) < while (RXc != str) RXc = uart_getc(); >void uart_wite_for(const char * str) < char result = 0; while (result == 0) < FLAG_REPLY = 0; clear_RXBuffer(); while (FLAG_REPLY == 0) < >result = strstr(RXBuffer, str); > > int main(void) < uint8_t id; // Init LED Port LED_DDR |= (1<0) < >if (strstr(RXBuffer, "/on") > 0) < LED_ON; >if (strstr(RXBuffer, "/off") > 0) < LED_OFF; >uart_wite_for("OK"); uart_puts("AT+CIPSEND="); uart_putc(id); uart_puts(",176\r\n"); //176 - length of returned data (HTML reply size) uart_wite_char('>'); uart_puts("HTTP/1.1 200 OK\r\n"); //length: 17 uart_puts("Content-Type: text/html; charset=UTF-8\r\n\r\n"); //length: 42 uart_puts("Як працює ESP8266 - Відповіді фахівцяon off\r\n"); //length: 117 uart_putc(id); //uart_wite_for("OK"); //uart_puts("AT+CIPCLOSE="); //uart_putc(id); //uart_puts("\r\n"); > > 

Заходимо будь-яким браузером: 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, можуть працювати у локальній мережі чи у Інтернеті.

  • ESP8266 NodeMCU Перше знайомство. Робимо WiFi розетку
  • ESP8266 NodeMCU. PWM
  • ESP8266 NodeMCU. ADC
  • ESP8266 NodeMCU. timer, rtc, SNTP, cron
  • ESP8266 NodeMCU. файлова система, SD Card
  • ESP8266 NodeMCU. UART
  • GPS-трекер на базі ESP8266
  • GPS-трекер + Дисплей SSD1306
  • ESP8266 NodeMCU. SSD1306. U8G
  • ESP-01 (ESP8266) upgrade flash memory to 4MB
  • ESP8266 NodeMCU. I2C. BME280/
  • Метеостанція на ESP8266
Интересный обзор. Мне кажется, что модель "прожорливый". Может вопрос и не совсем по теме статьи, но вам встречались wifi модули, которые можно использовать в устройствах, питающихся от батареек, с меньшим потреблением?
Да, ESP8266 прожорливый. К сожалению, Wi-Fi модулей с низким потреблением пока не встречал.

WiFi модуль ESP8266

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

Параметри модуля 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 В.

Приколи з терміналом (#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=,,, — ідентифікатор з`єднання — тип з`єднання: TCP або UDP — адреса IP або URL — порт
  • AT+CIPMODE= – Встановити режим передачі даних: = 0 — not data mode (сервер може відправляти данні клієнту і може приймати дані від клієнта) = 1 — data mode (сервер може відправляти данні клієнту, але не може приймати дані від клієнта)
  • AT+CIPSEND – Відправити данні Для одного з`єднання (+CIPMUX=0): AT+CIPSEND= Для багатопоточного режиму (+CIPMUX=1): AT+CIPSTART=, — ідентифікатор з`єднання — кількість даних (байт) що відправляються. Самі данні передаються після відповіді модуля на команду після символу “>”
  • AT+CIPCLOSE – Закрити з`єднання. Параметр для багатопоточного режиму — ідентифікатор з`єднання. Для одного з`єднання (+CIPMUX=0): AT+CIPCLOSE Для багатопоточного режиму (+CIPMUX=1): AT+CIPCLOSE=
  • 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,,: Приклад: +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 виконуємо наступні команди:

 AT+RST AT+CWMODE=1 AT+CWJAP="SID","password" 

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

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

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

 AT+CIPMODE=0 AT+CIPMUX=1 AT+CIPSERVER=1,88 

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

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

 plink.exe -telnet 192.168.1.100 -P 88 

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

+IPD,0,303:GET / HTTP/1.1 Host: 192.168.1.100 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Connection: keep-alive

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

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

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

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

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

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

 HTTP/1.1 200 OK Date: Sun, 12 Feb 2015 03:51:41 GMT Content-Type: text/html; charset=UTF-8 Transfer-Encoding: chunked Connection: keep-alive Keep-Alive: timeout=5   Як працює ESP8266 - Відповіді фахівця  Текст  

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

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

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

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

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

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

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

 #include #include #include #include #include "delay.h" #include "uart.h" #define RXUBRR (F_CPU/16/9600)-1 //9600 //#define RXUBRR (F_CPU/16/115202)-1 //115200 uint8_t FLAG_REPLY; uint8_t RXi; char RXc; #define RX_BUF_SIZE 64 static char RXBuffer[RX_BUF_SIZE]; #define LED_DDR DDRB #define LED_PORT PORTB #define LED_PIN PINB0 #define LED_OFF LED_PORT |= (1 <// This function called from uart.c file (* - Make better if you wish) void RX_getc(unsigned char RXc) < if ((RXc != 255) && (RXc != 0) && (RXc != 10)) < if (RXc != 13) < RXBuffer[RXi] = RXc; RXi++; if (RXi >RX_BUF_SIZE-1) < clear_RXBuffer(); >> else < FLAG_REPLY = 1; >> > void uart_wite_char(char str) < while (RXc != str) RXc = uart_getc(); >void uart_wite_for(const char * str) < char result = 0; while (result == 0) < FLAG_REPLY = 0; clear_RXBuffer(); while (FLAG_REPLY == 0) < >result = strstr(RXBuffer, str); > > int main(void) < uint8_t id; // Init LED Port LED_DDR |= (1<0) < >if (strstr(RXBuffer, "/on") > 0) < LED_ON; >if (strstr(RXBuffer, "/off") > 0) < LED_OFF; >uart_wite_for("OK"); uart_puts("AT+CIPSEND="); uart_putc(id); uart_puts(",176\r\n"); //176 - length of returned data (HTML reply size) uart_wite_char('>'); uart_puts("HTTP/1.1 200 OK\r\n"); //length: 17 uart_puts("Content-Type: text/html; charset=UTF-8\r\n\r\n"); //length: 42 uart_puts("Як працює ESP8266 - Відповіді фахівцяon off\r\n"); //length: 117 uart_putc(id); //uart_wite_for("OK"); //uart_puts("AT+CIPCLOSE="); //uart_putc(id); //uart_puts("\r\n"); > > 

Заходимо будь-яким браузером: 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, можуть працювати у локальній мережі чи у Інтернеті.

  • ESP8266 NodeMCU Перше знайомство. Робимо WiFi розетку
  • ESP8266 NodeMCU. PWM
  • ESP8266 NodeMCU. ADC
  • ESP8266 NodeMCU. timer, rtc, SNTP, cron
  • ESP8266 NodeMCU. файлова система, SD Card
  • ESP8266 NodeMCU. UART
  • GPS-трекер на базі ESP8266
  • GPS-трекер + Дисплей SSD1306
  • ESP8266 NodeMCU. SSD1306. U8G
  • ESP-01 (ESP8266) upgrade flash memory to 4MB
  • ESP8266 NodeMCU. I2C. BME280/
  • Метеостанція на ESP8266
Интересный обзор. Мне кажется, что модель "прожорливый". Может вопрос и не совсем по теме статьи, но вам встречались wifi модули, которые можно использовать в устройствах, питающихся от батареек, с меньшим потреблением?
Да, ESP8266 прожорливый. К сожалению, Wi-Fi модулей с низким потреблением пока не встречал.

Related Post

Баргузинський соболь де живеБаргузинський соболь де живе

Зміст:1 Баргузинский соболь: красиве і хижа тварина2 Баргузинский заповедник2.1 Характеристики Баргузинского заповедника2.2 История Баргузинского заповедника2.3 Географические особенности и климат2.4 Флора и фауна2.5 Что можно посетить в Баргузинском заповеднике2.5.1 Маршрут «Шумилиха»2.5.2

На чому краще вчитися грати на піаніно чи синтезаторіНа чому краще вчитися грати на піаніно чи синтезаторі

Цей невеликий огляд показав, що для освоєння навичок підходять всі види клавішних. Якщо в перспективі потрібно грати на концертному роялі, вчитися краще на цифровому піаніно. Коли поставлена мета використовувати професійний

Чим обробити укус блохиЧим обробити укус блохи

Зміст:1 Як лікувати укус блохи? Кошти від укусу бліх. Що робити, якщо вкусила блоха1.1 Різновиди бліх1.2 Розпізнавання блошиного укусу1.3 Порівняння блошиних і клопових укусів1.4 Симптоми1.5 Небезпека блошиних укусів1.6 Наслідки1.7 Перша