ESP8266 та Arduino, підключення, розпинування. ESP8266 прошивка, програмування в Arduino IDE Esp 01 підключення

Головна / Налаштування

Для роботи з RemoteXY модуль ESP8266 повинен мати версію прошивки з підтримкою команд AT не нижче v0.40. Щоб перевірити версію модуля, а також зміни прошивки в разі потреби, підключіть модуль до комп'ютера через послідовний порт. Модуль можна підключити через плату Arduino або USB-UART адаптер.

Підключення через плату Arduino

При використанні Arduino основний чіп ATmega переводиться в режим скидання, активним залишається вбудований USB-UART перетворювач. Для цього контакт RESET з'єднується із землею. Контакти RX і TX підключаються до ESP8266 безпосередньо, а не хрест навхрест, якби вони підключалися для роботи з контролером.

Підключення через USB-UART адаптер

Перетворювач повинен мати вихід 3.3V джерела для живлення ESP8266. Також це джерело має забезпечити необхідний струм не менше 200мА.



Контакт CPIO0 визначає режим роботи модуля. При не підключеному контакті модуль працює у штатному режимі та виконує AT команди. При замиканні контакту на землю модуль переводиться в режим оновлення вбудованої прошивки. Переведення модуля в режим прошивки вимагає, щоб контакт CPIO0 був підключений до «землі» в момент подачі живлення на модуль. Якщо з'єднувати контакт з модулем, перехід модуля в режим оновлення прошивки не відбудеться.

Перевірка поточної версії

Для надсилання AT команд та перегляду відповідей необхідно використовувати будь-яку програму монітора послідовного порту. Дуже добре підходить термінальна програма Arduino IDE. У програмі необхідно встановити режим відправлення команд із завершальним символом перекладу рядка та поверненням каретки. Швидкість роботи модуля за замовчуванням 115 200 біт/сек. Для роботи модуля в штатному режимі контакт CPIO0 має бути вимкнено.

Перевірити поточну версію прошивки можна за допомогою команди AT: AT+GMR. Приклад відповіді модуля:

AT version:0.40.0.0(Aug 8 2015 14:45:58)
SDK version:1.3.0

Build:1.3.0.2 Sep 11 2015 11:48:04
OK

Також варто дізнатися розмір флеш пам'яті вашого модуля, від цього залежить налаштування адрес завантаження даних при оновленні прошивки. У даній інструкції описано прошивку модуля з розміром флеш пам'яті 8Mbit(512KB+512KB) або 16Mbit(1024KB+1024KB) як найбільш поширених. Розмір флеш пам'яті можна дізнатися, виконавши команду AT скидання модуля: AT+RST.

Ets Jan 8 2013,rst cause:2, boot mode:(3,1)

Load 0x40100000, len 1396, room 16
tail 4
chksum 0x89
load 0x3ffe8000, len 776, room 4
tail 4
chksum 0xe8
load 0x3ffe8308, len 540, room 4
tail 8
chksum 0xc0
csum 0xc0

2nd boot version: 1.4(b1)
SPI Speed: 40MHz
SPI Mode: DIO
SPI Flash Size & Map: 8Mbit(512KB+512KB)
jump to run user1 @ 1000

#т#n"t use rtc mem data
slПrlМене
Ai-Thinker Technology Co.,Ltd.

Програма для прошивки

Для оновлення прошивки необхідно завантажити програму для прошивки та саму прошивку. Програма для прошивки ESP8266 буде використовувати Flash Download Tools v2.4 з офіційного сайту Espressif Systems. Посилання на сторінку завантаження на офіційному сайті: . Необхідно перейти до розділу "Tools".

Посилання на програму у нашому файловому сховищі: FLASH_DOWNLOAD_TOOLS_v2.4_150924.rar

Прошивка

Прошивку також можна завантажити з офіційного сайту. Посилання на сторінку завантаження на офіційному сайті: . Необхідно перейти до розділу «SDKs & Demos» та завантажити прошивку ESP8266 NONOS SDK версії не менше v1.3.0. Саме з цієї версії прошивки реалізовано підтримку AT команд v0.40 і більше.

Посилання на прошивку у нашому файловому сховищі: esp8266_nonos_sdk_v1.4.0_15_09_18_0.rar

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

Налаштування

Запускаємо програму прошивки Flash Download Tools v2.4 (одноіменний.exe файл). У вікні необхідно правильно вказати файли, що завантажуються, і налаштування з'єднання.


Завантажені файли розміщуються в каталозі bin архіву з прошивкою. Для кожного файлу необхідно вказати правильну адресу завантаження. Використовуйте наступну таблицю для вибору файлів та призначення адрес:

Встановіть такі установки:

  • SPIAutoSet – встановлений;
  • CrystalFreq – 26M;
  • FLASH SIZE – 8Mbit або 16Mbit залежно від розміру флеш-пам'яті;
  • COM PORT – виберіть порт, до якого підключено ESP;
  • BAUDRATE – 115200

Для старту прошивки необхідно натиснути кнопку "START".

Послідовність кроків для прошивки ESP8266

1. Підключіть модуль до комп'ютера згідно зі схемою підключення у цій статті.

2. Відкрийте монітор послідовного порту. Виконайте AT команди AT+RST та AT+GMR для визначення поточної версії прошивки та розміру пам'яті модуля. Цей крок також дозволяє перевірити правильність підключення модуля.

3. Запустіть програму прошивки Flash Download Tools, правильно налаштуйте файли, що завантажуються, встановіть налаштування.

4. Вимкніть живлення модуля ESP8266.

5. З'єднайте контакт CPIO0 на землю.

6. Подайте живлення на модуль ESP8266.

7. Натисніть у програмі прошивки кнопку START

8. Дочекайтесь закінчення прошивки модуля. Після прошивки з'явиться напис FINISH зеленого кольору.

9. Від'єднайте живлення модуля ESP8266. Від'єднайте землю від контакту CPIO0.

10. Увімкніть модуль, запустіть монітор послідовного порту. Переконайтеся в працездатності модуля та нової версії прошивки, виконавши AT команду AT+GMR.

Wi-Fi модуль ESP-01 – найпопулярніший модуль серії ESP8266. Спілкування з комп'ютером або мікроконтролером здійснюється через UART за допомогою набору AT-команд. Крім того, модуль можна використовувати як самостійний пристрій, для цього необхідно завантажити свою прошивку. Програмувати та завантажувати прошивки можна через Arduino IDE версії вище 1.6.5. Для прошивки модуля знадобиться перехідник UART-USB. Модуль ESP-01 може набути широкого поширення для використання в пристроях IoT (Інтернет речей).

Технічні характеристикимодуля

  • Wi-Fi 802.11 b/g/n
  • Режими WiFi: клієнт, точка доступу
  • Вихідна потужність – 19,5 дБ
  • Напруга живлення – 1.8 -3.6 В
  • Струм споживання - 220 мА
  • Портів GPIO: 4
  • Тактова частота процесора – 80 МГц
  • Об'єм пам'яті для коду
  • Оперативна пам'ять – 96 КБ
  • Розміри – 13×21 мм

Підключення

Розглянемо режим AT-команд. Для цього підключимо модуль до комп'ютера через перехідник USB-UART. Призначення висновків модуля (див. рисунок 1):
  • VCC - +3.3
  • GND – земля
  • RX, TX - висновки UART
  • CH_PD - Chip enable
  • GPIO0, GPIO2 - цифрові контакти
Модулю потрібне зовнішнє живлення 3.3.

Рисунок 1. Призначення контактів модуля ESP-01

Схема підключення для спілкування з модулем у режимі AT-команд (рисунок 2):

Рисунок 2. Схема підключення модуля ESP-01 до комп'ютера по порту

Рисунок 3. Схема збору

Для надсилання команд AT-команд в ОС Mac OS X можна використовувати програму CoolTerm, в операційній системі Windows програму Termite. Дізнатися швидкість COM-порту для з'єднання з модулем можна лише експериментально, для різних прошивок вона може бути різною. Для мого модуля швидкість дорівнювала 9600 бод. Крім того встановити обмін вдалося тільки після відключення та повторного підключення до живлення виводу CH_PD. Після підключення набираємо в терміналі AT і маємо отримати у відповідь від модуля OK. Команда AT+GMR видає номер версії прошивки модуля, команда AT+RST – перезавантажує модуль (див. мал. 4). Список основних AT-команд можна переглянути в цьому документі (ESP8266ATCommandsSet.pdf).

Рисунок 4. Відправлення AT-команд у модуль із програми Termite

Якщо режим AT команд вам не зручний, плату можна налаштувати за допомогою програми AppStack ESP8266 Config, завантажити яку можна за посиланням http://esp8266.ru/download/esp8266-utils/ESP8266_Config.zip . Зовнішній вигляд програми представлений малюнку 5. Налаштування модуля здійснюється з допомогою графічного інтерфейсу, у своїй виконання команд можна побачити у моніторі програми (див. рис. 6). У моніторі також можна надіслати AT-команди з командного рядка.

Рисунок 5. Програма AppStack ESP8266 Config

Рисунок 6. Serial monitor програми AppStack ESP8266 Config

Є два варіанти використання даного модуля:

  • у зв'язці з мікроконтролером (наприклад Arduino), який керуватиме модулем по UART;
  • написання власної прошивки для використання ESP8266 як самостійний пристрій.

Приклад використання

Розглянемо приклад підключення до модуля ESP-01 датчика вологості та температури DHT11 та надсилання даних у хмарний сервіс ThingSpeak (https://thingspeak.com/). Нам знадобляться такі деталі:
  • модуль ESP-01
  • макетна плата
  • датчик вологості та температури DHT11
  • резистор 10 ком
  • з'єднувальні дроти
  • блок живлення 3 – 3.6В
Спочатку підключимо датчик DS18B20 до модуля ESP-01. DS18B20 – цифровий датчик температури, що працює за однопровідним інтерфейсом 1-Wire. Схема підключення датчика DS18B20 до модуля показано на рис. 7.

7. Схема підключення датчика DHT11 до модуля ESP-01.

Потім потрібно завести профіль у сервісі ThingSpeak. У сервісі є інструкції для надсилання даних у сервіс та отримання даних із сервісу.

Рисунок 8. Схема у зборі.

Програму писатимемо в середовищі Arduino IDE для ESP8266. Будемо використовувати бібліотеки ESP8266WiFi.h (вбудовану) та OneWire.h. Завантажимо на плату Arduino скетч з лістингу 1 – отримання даних із датчика температури та надсилання даних у сервіс ThingSpeak. Необхідно внести свої дані для WiFi точки доступу для модуля ESP-01:

  • const char *ssid;
  • const char *password;
а також параметр privateKey для вашої програми у сервісі ThingSpeak. Лістинг 1 // сайт // Підключаємо бібліотеку для роботи з esp8266 # include // Підключаємо бібліотеку DHT до роботи з DHT11 #include // пін підключення контакту DATA #define DHTPIN 4 // датчик DHT11 #define DHTTYPE DHT11 // створення екземпляра об'єкта DHT DHT dht(DHTPIN, DHTTYPE); // ssid WiFi мережі підключення const char ssid = "********"; // Пароль WiFi мережі підключення const char password = "******"; // Сервер ThingSpeak const char * host = "184.106.153.149"; // API KEY вашої програми ThingSpeak const char * privateKey = "*************** *"; // Змінні для зберігання температури та вологості float temp; float humidity; // змінна інтервалу вимірювань unsigned long millis_int1=0; void setup() ( // запуск послідовного порту Serial.begin(115200); delay(10); Serial.print("Connect to WiFi"); Serial.println(ssid); // З'єднуємось по WiFi WiFi.begin(ssid) , password), while (WiFi.status() != WL_CONNECTED) ( delay(500); ) Serial.println("WiFi connected"); чекаємо інтервал 10 хвилин if(milis()-millis_int1>=10*60000) ( Serial.print("connect to ThingSpeak"); Serial.println(host); // Використовуємо WiFi клієнт WiFiClient client; if (!client.connect) (host, 80)) ( Serial.println("connection failed"); return; ) // отримати дані температури temp = get_data_temperature(); humidity = get_data_humidity(); // Створюємо URL із запитом для сервера String url = "/ update?key="; url += privateKey; url += "&temp="; url += temp; url += "&humidity="; url += humidity; // Відправляємо запит на сервер client.print(String(" GET ") + url + " HTTP/1.1\r\n" + "Host: " + host + "\r\n" + "Connection: close\r\n\r\n");delay(10); // відповідь сервера ThingSpeak while(client.available())( String req = client.readStringUntil("\r"); Serial.print(req); ) ) ) Тепер у сервісі ThingSpeak ми можемо дивитися графік показань нашого датчика температури DHT11 (Малюнок 9).

Рисунок 9. Графік показань датчика температури DS18B20 у сервісі ThingSpeak.

Часті питання FAQ

1. Модуль не відповідаєAT-команди
  • Перевірте правильність підключення модуля;
  • Перевірте правильність підключення контактів Rx, Tx до перехідника UART-USB;
  • Перевірте підключення контакту CH_PD до 3.3;
  • Експериментально підберіть швидкість обміну по послідовному порту.
2. Модуль ESP-01 не отримує даних температури від датчикаDHT11
  • Перевірте правильність підключення датчика DHT11 до модуля.
3. Не передаються дані до сервісу ThingSpeak
  • Перевірте підключення модуля до точки доступу WiFi;
  • Перевірте підключення точки доступу WiFi до Інтернету;
  • Перевірте правильність запиту до ThingSpeak.

У процесі вивчення та проектування все більш складних проектів настає час, коли виникає потреба та бажання навчитися працювати з таким поширеним видом зв'язку як WiFi. Так як саме такий вид зв'язку може дозволити комфортно створити єдину мережу для ваших розумних домашніх пристроїв і керувати ними, наприклад, з мобільного телефону, планшета або комп'ютера, тобто створити справжнісінький розумний будинок, який обійдеться вам в десятки разів дешевше, ніж купувати готові рішення у магазині. Застосування WiFi звичайно не обмежується на цьому і прикладів використання цього виду зв'язку настільки багато, що перераховувати їх немає сенсу, і якщо Ви потрапили на цю сторінку, значить, використання WiFi вам навіщось знадобилося, залишилося тільки розібратися, як правильно з ним працювати .

Розбиратися ми будемо на основі найдешевшого та найпопулярнішого WiFi модуля ESP8266-01. Купити модуль WiFi ESP8266-01 можна у нас на сайті.

Один з головних плюсів такого модуля - це наявність пам'яті і свого мікроконтролера на платі, що дозволяє працювати йому самостійно, завантаживши скетч безпосередньо в сам модуль.

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

І так, давайте приступимо і для початку розберемо висновки модуля WiFi ESP8266-01.

VCC- живлення модуля від 3V до 3.6V

GND- Земля.

RST- Висновок Reset, що відповідає за перезавантаження модуля.

CH_PD- "chip power-down" при подачі живлення активізується робота модуля.

TX- Передача даних (UART інтерфейс)

RX- прийом даних (UART інтерфейс)

GPIO0

GPIO2- порт введення/виводу загального призначення

Висновки GPIO0 і GPIO2 - це такі самі цифрові висновки, з якими ми працюємо на платах Arduino для взаємозв'язку з різними датчиками, і застосовуються вони у разі реалізації самостійної роботи на внутрішньому мікроконтролері WiFi модуля ESP8266-01.

Для надійного живлення модуля ESP8266-01 використовуйте зовнішнє стабілізоване джерело живлення на 3.3V і краще не намагайтеся брати живлення від своєї плати Arduino, тому що модуль споживає струм до 215mA і це може погано закінчиться для вашої налагоджувальної плати. Де взяти стабілізоване джерело живлення на 3.3V сподіваюся для вас не проблема, інакше вам ще рано займатися даним модулем. Мені, наприклад, подобається використовувати для швидкого збору схем на макетних платах такий модуль живлення 3.3V і 5.0V YWRobot, який дозволяє швидко отримати стабілізовану напругу на 3.3V або 5V на відповідних доріжках живлення макетної плати.

Підключаємо плюс (+) від нашого джерела живлення 3.3V VCCмодуля ESP8266-01, а мінус (-) джерела живлення підводимо до висновку GND. У такому стані на модулі увімкнеться червоний світлодіод, що сигналізує нам про правильне підключення живлення. Для того, щоб модуль активізувався, необхідно також з'єднати плюс (+) джерела живлення з виводом CH_PDмодуля ESP8266-01 і бажано це зробити одразу через резистор 10кОм. Тепер, коли ми включимо живлення, на модулі повинен спалахнути червоний світлодіод і кілька разів швидко мигнути синій світлодіод. Якщо у вас так все і відбувається, значить все добре, ви правильно все приєднали і ваш робочий модуль. В іншому випадку ще раз перевірте підключення, або замініть модуль, оскільки він, швидше за все, не робочий.

Йдемо далі. Для роботи з WiFi модулем ESP8266 нам потрібний перехідник USB-UART. Перехідники бувають різні, наприклад: FT232RL, CP2102, PL2303. Але ми припустимо, що у вас немає таких перехідників, і як перехідник USB-UART будемо використовувати плату Arduino. Я використовуватиму для цього плату Arduino NANO, а ви можете використовувати будь-яку іншу наявну у вашому розпорядженні. Підключення на будь-якій платі один в один ідентичний. Здійснюємо підключення згідно з наступною схемою.

Розгляньмо, що ми тут зробили. Відразу зверніть увагу, що ми замкнули перемичкою на платі Arduino висновки RSTі GND. Така маніпуляція відключає мікроконтролер і дозволяє зробити з нашої плати Arduino справжнісінький перехідник USB-UART.

Оскільки WiFi модуль ESP8266-01 ми живимо від окремого зовнішнього джерела живлення, не забуваймо, що ми повинні завжди з'єднувати між собою землю всіх джерел живлення в наших проектах. Тому ми з'єднуємо висновок GNDплати Arduino із землею (-) нашого зовнішнього джерела живлення 3.3V, що призначений для живлення модуля ESP8266-01.

Висновок TXвашої плати Arduino з'єднуємо з виводом TXмодуля ESP8266-01 По цій лінії будуть передаватися дані від модуля WiFi до плати Arduino. Хто знайомий з UART інтерфейсом, може задуматися: "Але як так? Скрізь вчили, що TX повинен з'єднуватися з RX. TX передає інформацію, а RX приймає". І Ви будете праві. Все правильно завжди TX з'єднується з RX, але саме у випадку, коли ми робимо з Arduino перехідник UART, необхідно підключати пристрої безпосередньо. Вважайте це винятком із правил.

Лінію RXвашої плати Arduino підключаємо так само прямо до лінії RXмодуля ESP8266-01 По цій лінії передаватиметься інформація від плати Arduino на плату WiFi модуля. Але робимо це з'єднання через так званий дільник напруги, що складається з двох резисторів номіналами 1кОм та 2кОм. Зменшити напругу на цій лінії за допомогою двох резисторів (дільника напруги) нам необхідно, тому що плата Arduino передає логічний сигнал напругою 5V, а модуль WiFi працює з напругою 3.3V. Для перетворення логічного сигналу ми могли б використовувати спеціальну хустку перетворювача логічних рівнів, що було б звичайно правильніше, але знову ж таки припустимо, що у вас її немає, і нам довелося піти більш простим шляхом і зробити це за допомогою дільника напруги.

Все необхідне для подальшої роботи ми поки що підключили, але у нас залишаються не задіяні ще 3 висновки ( GPIO0, GPIO2і RST) на WiFi модулі ESP8266-01. Для стабільної роботи WiFi модуля нам необхідно ці не задіяні висновки, що залишилися, підтягнути до плюсової (+) лінії живлення модуля через резистори в 10кОм.

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

І знову перевіряємо працездатність модуля WiFi ESP8266-01. Включаємо живлення і дивимося, щоб запалився червоний світлодіод і кілька разів мигнув синій. Якщо все так відбувається, значить чудово йдемо далі. В іншому випадку перевіряємо правильність з'єднань, а також якість всіх контактів. Може бути просто банальна ситуація, коли десять разів всі перевірили ще раз і переконалися, що все правильно підключили, але включаючи модуль, бачите, що синій світлодіод веде себе не адекватно, постійно горить, постійно блимає або взагалі ні на що не реагує. Це може статися через поганий контакт на якійсь лінії. Наприклад, збираючи схему на макетній платі, якийсь із резисторів нещільно сидить на своєму місці і це викликає перешкоди. Перевірте якість з'єднань. Модуль дуже чутливий. Не нехтуйте цим. Це часто причина не стабільної роботи.

Загалом, із підключенням ми закінчили. Зараз нам необхідно підготувати програму Arduino IDE для роботи з модулем WiFi ESP8266-01. Для цього нам треба завантажити та встановити в Arduino IDE необхідний архів з бібліотеками, прикладами та платами ESP, який згодом дозволить нам заливати скетчі прямо у мікроконтролер модуля ESP8266-01, міняти прошивку тощо. В рамках цієї статті нам, швидше за все, ці налаштування і не знадобляться, але мені здається, що після того, як ми розібралися з підключенням модуля, порядок дій буде правильним, якщо ми відразу скачаємо все необхідне для роботи з Arduino IDE. Тут все, в принципі, просто.

Запускаємо програму Arduino IDEта переходимо в меню "Файл" - "Параметри"

У вікні у верхньому полі пишемо "esp8266". У результаті у вікні у нас залишиться лише необхідна прошивка. При натисканні на прошивку з'явиться кнопка "Встановлення". Натискаємо на кнопку "Встановлення"і чекаємо, поки все встановиться. Архів досить великий, близько 150 мегабайт, тож доведеться почекати.

Після закінчення установки. Перезавантажуємо Arduino IDE та бачимо, як з'явилися нові плати ESP у меню "Інструменти" - "Плати". На цьому все. З налаштуванням Arduino IDE ми закінчили. Поки що нам ці налаштування не потрібні, але в подальшій роботі нам без них не обійтися.

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

І так підключаємо нашу плату Arduino через USB кабель до комп'ютера. А зовнішнє джерело живлення, яке живить WiFi модуль ESP8266-01поки що включати не треба. Запускаємо програму Arduino IDE, вибираємо в меню "Інструменти" нашу плату Arduino, у моєму випадку це Arduino NANO, а ви вибираєте свою. Так само не забуваємо вибрати порт, до якого підключена наша Ардуїнка. Сподіваюся все це ви розумієте та робити вмієте.

Відкриваємо моніторинг порту "Інструменти" - "Монітор порту". Вибираємо швидкість порту 74880 (на такій швидкості відбувається запуск модуля) та ліворуч у списку вибираємо "NL & CR"

Ось тепер підключаємо зовнішнє джерело живлення, яке живить наш WiFi модуль. Після цього ви повинні побачити в моніторі порту приблизно таку інформацію.

Тут ми бачимо деяку інформацію щодо нашого WiFi модуля (швидкість, кількість пам'яті на борту і т.д.). Отримана інформація може відрізнятися залежно від версії прошивки модуля WiFi. Не будемо на цьому звертати увагу. Важливе інше. Внизу ми бачимо набір безглуздих символів, це означає, що швидкість порту (74880 бод), яку ми виставили, підходить тільки для початкового завантаження модуля, щоб побачити цю інформацію, але ця швидкість не підходить для нормального спілкування з WiFi модулем.

Щоб підібрати правильну швидкість порту, просто змінювати швидкість порту і посилати в порт (поле зверху і кнопка відправити) символи ATпоки не отримаємо відповідь ОК. Якщо Ви спробуєте прямо зараз надіслати символи ATв порт на швидкості 74880, то отримуватимете чергові один-два безглузді символи у відповідь.

Спробуйте відразу виставити швидкість 115 200 бод і надіслати команду AT. Найчастіше модулі прошити на цю швидкість.

Ось таку картину ви повинні побачити у моніторі порту. Якщо все одно у відповідь надійшов незрозумілий набір символів, знижуйте швидкість і повторюйте відправку ATкоманди, поки у відповідь не повернеться ОК. Якщо ви перепробували всі швидкості і не домоглися правильної відповіді, то вам не пощастило і модуль прошитий прошивкою з нестандартною швидкістю. Тоді залишається лише перепрошувати модуль нормальною прошивкою, але це тема окремої статті.

Сподіваюся, що все добре і правильну швидкість ви підібрали. До речі, якщо ви спробуєте вимкнути і знову включити WiFi модуль, після того як підібрали правильну швидкість, то вже замість тієї самої первісної інформації, яка коректно відображалася на швидкості 74880 бод, ви навпаки побачите безладний набір символів, але в кінці ви побачите слово "ready" ". Але у нас є можливість переглянути цю первинну інформацію в нормальному вигляді на правильній швидкості, для цього необхідно програмно перезавантажити модуль за допомогою AT-команди AT+RST.

Щоб дізнатися про версію прошивки вашого WiFi модуля ESP8266-01, необхідно в монітор порту відправити команду AT+GMRі у відповідь ви отримаєте приблизно таку інформацію:

WiFi модуль ESP8266-01 може працювати як у режимі точки доступу, так і в режимі клієнта. Щоб дозволити модулю працювати відразу у всіх режимах, надішліть до монітора порту команду AT+CWMODE=3і у відповідь ви повинні отримати ОК.

Команда AT+CWLAPдозволить переглянути всі WiFi точки доступу, які бачить в даний момент ваш модуль. Мій модуль, наприклад, бачить на даний момент у зоні свого покриття лише три WiFi точки доступу. Відповідь має бути приблизно такою:

Наприклад, ми знаємо пароль до третьої точки доступу та щоб підключитися до неї виконуємо команду AT+CWJAP="ім'я","пароль", у моєму випадку ця команда виглядає AT+CWJAP="dsl_unlim_512_home","11111111", на що отримуємо успішну відповідь:

Параметри команди записуються на флеш пам'ять WiFi модуля ESP8266-01, і якщо ми вимкнемо модуль і знову увімкнемо, він автоматично підключиться до цієї точки доступу. Дивіться випадково у команді не допустіть пробіл, інакше отримайте у відповідь ERROR. Необхідно звернути увагу на те, що в останніх версіях прошивки рекомендують використовувати команду AT+CWJAP_CUR, тобто команда виглядатиме AT+CWJAP_CUR="ім'я", "пароль".Якщо раптом ми забули, до якої точки доступу підключено наш модуль, необхідно надіслати команду AT+CWJAP?або AT+CWJAP_CUR?і у відповідь отримаємо ту точку доступу, до якої підключений модуль WiFi на даний момент.

З підключенням та початковим налаштуванням WiFi модуля ESP8266-01ми розібралися. Модуль працює та готовий для реалізації ваших подальших проектів. Розібрати всі можливі приклади роботи з даним модулем у рамках однієї статті просто неможливо і ми цим займемося в наступних статтях. А для тих, хто не дуже товаришує з програмуванням, але дуже хоче швидше почати керувати своїми проектами за допомогою WiFi, рекомендую познайомити з конструктором WiFi проектів RemoteXY. Цей сайт допоможе вам без особливих труднощів створити інтерфейс управління для вашого мобільного телефону або планшета і за допомогою нього керувати своїм пристроєм, до якого ви підключите WiFi модуль.

Після появи плати на базі Wifi чіпа ESP8266, стали по-справжньому народними. Величезні можливості та мінімальна ціна, яка навіть на старті продажів і в роздріб не перевищувала 5$, зробили свою справу. Навколо чіпа організувалися спільноти, в яких люди діляться інформацією та створюють програмне забезпечення.

У чому причина такої популярності, крім низької ціни?

Справа в тому, що плати на ESP8266 це не просто модулі для зв'язку по WiFi. Чіп по суті є мікроконтролером зі своїми інтерфейсами SPI, UART, а також портами GPIO, а це означає, що модуль можна використовувати автономно без Arduino та інших плат з мікроконтролерами.

Інформація

Наші китайські товариші вже виробляють близько дванадцяти різновидів плат на базі ESP8266: із підключенням зовнішньої антени, з керамічною антеною, з антеною PCB, без антени. Також на різних модулях виведено різну кількість GPIO. Детальніше, можна прочитати на російськомовному сайті.

У даному огляді я буду використовувати одну з найперших плат ESP-01. Також для повноцінної роботи з чіпом буде потрібно конвертер USB/UART, рекомендую, огляд якого вже був на mysku.

Підключення

Розпинування роз'єму ESP-01, представлене на малюнку:

Якщо у своїх проектах вам не вистачить двох виведених GPIO, а займатися «брудними хаками» немає бажання, то я рекомендую відразу купувати нові плати, наприклад ESP-07або ESP-12. Тільки майте на увазі, що ці плати вимагають самостійного розведення і у продажу для цього є спеціальні мінінабори.

Фотографії даних плат


ESP-01 hacked by Dave Allan, як приклад. Додатково ви отримуєте 4 GPIO: GPIO14, GPIO12, GPIO13 та GPIO15

Схема підключення:
- ESP-01 VCC до USB/UART VCC (+3.3В);
- ESP-01 GND до USB/UART GND;
- ESP-01 URXD до USB/UART TXD;
- ESP-01 UTXD до USB/UART RXD;
- ESP-01 CH_PD до USB/UART VCC (+3.3В);
- ESP-01 GPIO0 до USB/UART GND - тільки під час прошивки!

Прошивка

Для ESP8266, існує SDK і оригінальна прошивка від Espressif Systems, але багатьох вона не влаштовує зважаючи на свою «вогкість», тому випускаються не оригінальні прошивки, такі як NodeMCU, Frankenstein та інші.

В даному огляді використовуватиметься не оригінальна прошивка NodeMCU. Список команд та приклади можна подивитися на .

Оновлюємо оригінальну «заводську» прошивку на NodeMCU:
- Завантажуємо утиліту для прошивання -;
- завантажуємо прошивку -;
- Підключаємо по ESP-01 до USB/UART за схемою, що представлена ​​вище. Не забуваймо підключити GPIO0 до GND. Вставляємо USB/UART у USB порт комп'ютера;
- Запускаємо XTCOM_UTIL.exe, переходимо в Tools -> Config Device, вибираємо COM-порт до якого підключена плата, ставимо швидкість порту 57600, тиснемо Open, потім Connect, програма повинна сказати "Connect with target OK!", закриваємо вікно налаштувань. Переходимо в меню API TEST, вибираємо (4) Flash Image Download, вказуємо шлях до файлу "nodemcu_512k_latest.bin", адресу залишаємо 0x00000, тиснемо DownLoad. Повинне розпочатися завантаження прошивки, після закінчення буде видано повідомлення;
- Відключаємо живлення плати, виведення GPIO0 від'єднуємо від загального дроту, вмикаємо живлення. Запускаємо термінал Putty, CoolTerm або ін. (УВАГА! Змінюємо швидкість порту на 9600), перевіряємо готовність плати командою
> print(node.chipid())
10013490

Перший скрипт

Якщо при роботі зі скриптами у Вас будуть проблеми, рекомендується подати живлення 3.3V не від USB/UART, а від окремого джерела. Напруга має бути саме 3.3V, наприклад, через модуль стабілізованого живлення на AMS1117 3.3V 800ma.

Для написання та завантаження скриптів в ESP8266, буде використовуватися невелика та зручна IDE - :

Наш перший скрипт, вимикатиме і включатиме світлодіод з періодичністю в 2 секунди:
- Відключаємо живлення, до GPIO2 підключаємо резистор та світлодіод. Включаємо живлення;
- Запускаємо ESPlorer, вибираємо потрібний COM та швидкість порту 9600, натискаємо Open;
- Вставляємо код та натискаємо Save To ESP;

Pin = 4 --GPIO2 gpio.mode(pin, gpio.OUTPUT) for i=1, 10, 1 do gpio.write(pin, gpio.LOW) tmr.delay(2000000) gpio.write(pin, gpio.HIGH ) tmr.delay(2000000) end
- Для повторного запуску натискаємо DoFile.

Підключаємо датчик DHT11

Щоб продемонструвати, більш просунуту роботу з прошивкою NodeMCU підключимо до ESP-01 датчик DHT11:
- DHT11 VCC до USB/UART VCC
- DHT11 GND до USB/UART GND
- DHT11 Out до USB/UART GPIO2

Код користувача Pigs Fly з форуму ESP8266.com

Works for DHT11 on ESP-07 (version w/16pins) and ESP-01 --Тільки 20141219 firmware tested. --Data stream acquisition timing is critical. There's --barely enough speed to work with to make this happen. --Pre-allocate vars used in loop. = 4; gpio.mode(pin, gpio.OUTPUT) tmr.delay(20000) gpio.write gpio.mode(pin, gpio.INPUT) --bus will always let up eventually, don"t bother with timeout while (gpio_read(pin)==0) do end c=0 while (gpio_read(pin)= =1 and c<100) do c=c+1 end --bus will always let up eventually, don"t bother with timeout while (gpio_read(pin)==0) do end c=0 while (gpio_read(pin)==1 and c<100) do c=c+1 end --acquisition loop for j = 1, 40, 1 do while (gpio_read(pin)==1 and bitlength<10) do bitlength=bitlength+1 end bitStream[j]=bitlength bitlength=0 --bus will always let up eventually, don"t bother with timeout while (gpio_read(pin)==0) do end end --DHT data acquired, process. Humidity = 0 HumidityDec=0 Temperature = 0 TemperatureDec=0 Checksum = 0 ChecksumTest=0 for i = 1, 8, 1 do if (bitStream >2) then Humidity = Humidity+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then HumidityDec = HumidityDec+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then Temperature = Temperature+2^(8-i) end end for i = 1, 8, 1 do if (bitStream > 2) then TemperatureDec = TemperatureDec+2^(8-i ) end end for i = 1, 8, 1 do if (bitStream > 2) then Checksum = Checksum+2^(8-i) end end ChecksumTest=(Humidity+HumidityDec+Temperature+TemperatureDec) % 0xFF print ("Temperature: "..Temperature.."."..TemperatureDec) print ("Humidity: "..Humidity.."."..HumidityDec) print ("ChecksumReceived: "..Checksum) print ("ChecksumTest: "..ChecksumTest )


Перепрошую за якість відео, знімав на телефон.

HTTP сервер

Приклад підключення до Wifi точки доступу та відповідь на запит по HTTP.

Wifi.setmode(wifi.STATION) wifi.sta.config("SSID","password") print(wifi.sta.getip()) srv:listen(80,function(conn) conn:on("receive", function(conn,payload) print(payload) conn:send("

Hello, User.

") end) end)

Епілог

Чіп ESP8266 це безумовно прорив, насамперед у співвідношенні ціна/якість. Звичайно варто згадати про існуючі проблеми в оригінальних і не оригінальних прошивках, але роботи ведуться і я сподіваюся, що в майбутньому подібні чіпи будуть вбудовані в кожен чайник. Планую купити +158 Додати в обране Огляд сподобався +103 +196

Як використовувати модуль ESP-01 для управління світлодіодом через Інтернет, модуль, який дозволяє керувати будь-яким електричним пристроєм.

У цьому уроці ESP8266 ми використовуємо модуль ESP-01 для управління світлодіодом через Інтернет. ESP8266 – дешева, але ефективна платформа для спілкування через Інтернет.

Він також простий у використанні Ардуїно. Пройшовши цей урок, ви отримаєте основні знання з управління будь-яким електричним пристроєм через Інтернет із будь-якої точки світу!

Тут ми використовуватимемо USB-to-TTL конвертер для програмування ESP8266 ESP-01. І ми будемо використовувати для розробки веб-сервера для дистанційного керування світлодіодом.

Як це працює

ESP8266 можна контролювати з локальної мережі Wi-Fi або Інтернету (після переадресації портів). Модуль ESP-01 має контакти GPIO, які можуть бути запрограмовані для увімкнення або вимкнення світлодіода або реле через Інтернет. Модуль можна запрограмувати за допомогою конвертера Arduino USB-to-TTL через послідовні контакти (RX, TX).

Підключення обладнання до ESP8266

Ми можемо використовувати конвертер USB-to-TTL або Arduino для програмування ESP8266. Ось три способи, якими ви можете слідувати, щоб завантажити код в ESP8266 - виберіть той, який вам підходить найкраще. Зверніться до діаграм для кожного варіанта і відповідним чином настройте обладнання.

1. Конвертер USB-to-TTL з використанням роз'єму DTR

Якщо ви використовуєте конвертер USB-to-TTL з виводом DTR, завантаження йтиме гладко. Будь ласка, майте на увазі, що серійний монітор не працюватиме при цьому.

USB TTL → ESP8266 ESP-01
GND → GND
TX → RX
RX → TX
RTS → RST
DTR → GPIO0

2. Конвертер USB у TTL без виводу DTR

Щоб підключити конвертер USB-TTL без виводу DTR, ми маємо використовувати ручну передачу. Для цього ми використовуємо дві кнопки – див. наступну діаграму:

USB TTL → ESP8266 ESP-01
GND → GND
TX → RX
RX → TX
Reset Button → RST
Flash Button → GPIO0

Під час завантаження коду натисніть кнопку "Завантаження" (Flash). Тримайте кнопку натиснутою, коли ви натискаєте один раз кнопку "Перезавантаження/Скинути" (Reset). Тепер можна відпустити кнопку Flash. ESP8266 тепер знаходиться в режимі, в якому ви зможете завантажити ескіз.

3. Використання Arduino Uno для завантаження коду в ESP8266

Ви можете використати для запуску коду ESP8266 ESP-01. При завантаженні коду слідуйте тій же процедурі, що у другому пункті, - утримуйте кнопку "Завантаження" натиснутою, коли ви натискаєте один раз на скидання, а потім відпускаєте кнопку Flash.

ARDUINO → ESP8266 ESP-01
GND → GND
TX → TX
RX → RX
Кнопка Reset → RST
Кнопка Flash → GPIO0

Завантаження коду ESP8266

Використовуйте будь-який з наведених вище способів і відкрийте , потім виберіть плату ESP8266 у меню:

Tools → Board → Generic ESP8266 Module
(Інструменти → Плата → Модуль ESP8266)

Примітка. Якщо ви не встановили і не налаштували плату ESP8266 для Arduino, зробіть це, виконавши кроки вище цього посібника. Потім можете йти далі.

Тепер скопіюйте наведений нижче код Arduino IDE і натисніть кнопку завантаження. Змініть SSID на точку доступу Wi-Fi та змініть пароль на свій пароль Wi-Fi та скомпілюйте.

#include const char * ssid = "YOUR_SSID"; / / type your ssid const char * password = "YOUR_PASSWORD"; // GPIO2 of ESP8266 WiFiServer server(80);//Service Port void setup() ( Serial.begin(115200); delay(10); pinMode(ledPin, OUTPUT); digitalWrite(ledPin, LOW); // Connect to WiFi network Serial.println(); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED ) ( delay(500); Serial.print("."); ) Serial.println(""); Serial.println("WiFi connected"); // Start the server server.begin(); Serial.println( "Server started"); // Print IP address Serial.print("Use this URL to connect: "); .println("/"); ) void loop() ( // Check if a client has connected WiFiClient client = server.available(); if (!client) ( return; ) // Wait until the client sends some data Serial .println("new client"); while(!client.available())( delay(1); ) // Read the first line of the request String request = client.readStringUntil("\r"); Serial.println (request);client.flush(); // Ma tch the request int value = LOW; if (request.indexOf("/LED=ON") != -1) ( digitalWrite(ledPin, HIGH); value = HIGH; ) if (request.indexOf("/LED=OFF") != -1)( digitalWrite(ledPin, LOW);value = LOW; ) //Set ledPin according to the request //digitalWrite(ledPin, value); // Return the response client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println(""); // do not forget this one client.println(""); client.println(" "); client.print("Led pin is now: "); if(value == HIGH) ( client.print("On"); ) else ( client.print("Off"); ) client.println( "

"); client.println("Click here turn the LED on pin 2 ON
"); client.println("Click here turn the LED на pin 2 OFF
"); client.println(""); delay(1); Serial.println("Client disconnected"); Serial.println(""); )

Відкрийте послідовний монітор і відкрийте URL-адресу, показану на послідовному моніторі, через веб-браузер. Підключіть GPIO 2 від ESP8266 до довшого виведення світлодіода. Тепер ви можете керувати світлодіодом віддалено через Інтернет!

Видаліть всі дроти, які були потрібні для завантаження коду. Модуль LM1117 використовується для забезпечення регульованого виходу 3,3 В. Це дозволить зробити модуль ESP8266 або ESP-01 автономним.

Підключення ESP8266 до Інтернету

В даний час модуль ESP8266 доступний лише через локальну мережу Wi-Fi. Щоб керувати пристроями з Інтернету, необхідно переадресувати порти на маршрутизаторі.

Для цього знайдіть IP-адресу вашої системи або за допомогою команди ifconfig у вашому терміналі, або перейдіть на сторінку whatsmyip.org. Скопіюйте свою IP-адресу. Тепер відкрийте налаштування маршрутизатора та перейдіть до «Переадресації». Введіть дані для "Сервісного порту" та "IP-адреси". Сервісний порт - це номер порту з коду Arduino (службовий порт: 80):

WiFiServer server(80);//Service Port

IP-адреса той, який ви вказали раніше. Залишіть інші параметри за замовчуванням. Тепер перейдіть до свого браузера і введіть адресу: xxx.xxx.xx.xx: 80. Повинна відкритися сторінка для керування світлодіодом.

© 2022 androidas.ru - Все про Android