Контакти

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

Китайська компанія Espressif в 2014 році, почала продавати Wi-Fi модулі, на чіпах ESP8266. який відразу завоював велику популярність у радіоаматорів через свою дешевизну і великими можливостями. На сьогоднішній день існує велика кількість різних модулів заснованих на чіпі ESP8266, в цій статті розповім про ESP-01.

Технічні характеристики

Напруга живлення: 3 В ~ 3.6 В
Максимальний робочий струм: 220 мА
Робоча частота: 2.4 ГГц
Режими: P2P (клієнт), soft-AP (точка доступу)
Кількість GPIO: 2.
Flash пам'ять 1024 кб.
Вихідна потужність в режимі 802.11b: + 19.5dBm
підтримка бездротового стандарту: 802.11 b / g / n
Габарити: 24.8мм х 14.3мм х 8мм

Загальні відомості про ESP-01

По суті, чіп ESP8266 є мініатюрним мікроконтролер з Wi-Fi передавачем, який може функціонувати в умовах повної автономії, без додаткової плати Arduino. За допомогою модуля ESP-01 можна передавати дані про температуру, вологість, включати реле і так далі. Для зручності використання чіпа ESP8266, виробник виготовив серію модулів від ESP-01 по ESP-14. Перший в цій серії, це модуль ESP-01 (існує ще ESP-01S, про нього трохи пізніше), що є одним з відомим, через свій ціни і невеликими розмірами, всього 14,3 мм на 24,8 мм. Але в ньому, є два недоліки, це обмежена кількість програмованих висновків GPIO і їх незручне розташування (незручно макетировать).


Модуль ESP-01 являє собою невелику плату, чорного кольору, на якій розташовані два основних чіпа, це мікро контролером ESP8266 і flash пам'ять на 1 Мб. Поруч розташований кварцитовий резонатор і надрукована антена. На платі встановлено два світлодіоди, червоний і блакитний. Червоний світлодіод, світиться коли на модулі є харчування, а синій блимає при виконанні команд (в NSP-01S видалений червоний світлодіод, через постійне споживання електроенергії). Для підключення модуля ESP-01, передбачено вісім висновків (два ряди по чотири виведення, кроком 2.54 мм), два з готових є цифровим входами-виходом, що підтримують широтно імпульсну модуляцію. Хоча модуль має за замовчуванням два висновки GPIO, можна використовувати інші доступні контакти, якщо у вас є необхідний інструмент для пайки.


призначення висновків
GND:«-» харчування модуля
GPIO2:(Digital I / O програмований)
GPIO0:(Digital I / O програмований, також використовується для режимів завантаження)
RX:UART прийом
TX:UART передача
CH_PD:(Включення / відключення живлення, повинні бути виведені на 3.3 В безпосередньо або через резистор)
RST:скидання, необхідно потягнути до 3.3В
VCC: «3.3В» харчування модуля

підключення модуля
Для роботи модуля ESP-01, необхідне джерело живлення постійного струму, Який повинен видавати 3.3 В і струмом не менше 250 мА. На жаль, штатний стабілізатор встановлений на Arduino не здатний видати необхідної ток для роботи ESP-01 (якщо вирішите все одно підключити ESP-01, чекайте нестабільну роботу і постійну перезавантаження). Крім того, логічні сигнал, даного модуля, Розрахований на 3.3 В, тобто на висновок RX необхідно подавати напругу 3.3В, а з виведення TX буде напруга рівне 3.3 В (так само і для інших висновків). Якщо необхідно підключити модуль до Arduino або іншим контролерам, які видають на логічний висновок 5 В, необхідно використовувати резистори або модуль логічних рівнів, якщо підключати безпосередньо, модуль вийде з ладу.

Увага! ESP-01 дуже примхливі до харчування, необхідно використовувати зовнішній стабілізатор напруги на 3.3В, в якості першого прикладу буду використовувати адаптер USB

З таблиці вище, видно, що модуль ESP-01 може працювати в декількох режимах сну, з мінімальним споживанням струму, викликаються вони програмному шляхом, крім останнього «Power Off», щоб задіяти цей режим, необхідно встановити перемичку, між GPIO16 і RST, пізніше наведу приклад.

Установка ESP8266 в IDE Arduino

Беремо з сайту arduino.cc програму IDE Arduino
Далі, необхідно встановити ESP плату в IDE Arduino, для цього запускаємо програму IDE Arduino, відкриваємо: Файл -\u003e Налаштування.
У новому відкритому вікні, у полі " Додаткові посилання для Менеджера плат:»Додаємо посилання:

Http://arduino.esp8266.com/stable/package_esp8266com_index.json

У відкритому вікні, шукаємо « esp8266 by ESP8266 Community »і натискаємо« встановити«. Установка займе кілька хвилин, потім з'явитися напис « Installed«, Тиснемо« Закрити«

натискаємо « Інструменти -\u003e Плати -\u003e Generis ESP8266 Module«.

Тепер необхідно підключити модуль ESP-01 до комп'ютера через спеціальний адаптер USB на чіпі CH340G


Налаштовуємо частоту процесора « CPU Frequency: «80 MHz»«, Швидкість« Upload Speed: «115200»»І вибираємо« порт«.

Потім завантажуємо скетч, який змусить ESP8266 блимати світлодіодом.

/ * Тестувалося на Arduino IDE 1.8.5 Дата тестування 15.06.2018г. * / #Define TXD 1 // GPIO1 / TXD01 void setup () (pinMode (TXD, OUTPUT);) void loop () (digitalWrite (TXD, HIGH); delay (1000); digitalWrite (TXD, LOW); delay ( 1 000);)

Як використовувати модуль 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 \u003d "YOUR_SSID"; // type your ssid const char * password \u003d "YOUR_PASSWORD"; // type your password int ledPin \u003d 2; // 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 ()! \u003d WL_CONNECTED ) (delay (500); Serial.print ( ".");) Serial.println ( ""); Serial.println ( "WiFi connected"); // Start the server server.begin (); Serial.println ( "Server started"); // Print the IP address Serial.print ( "Use this URL to connect:"); Serial.print ( "http: //"); Serial.print (WiFi.localIP ()); Serial .println ( "/");) void loop () (// Check if a client has connected WiFiClient client \u003d 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 \u003d client.readStringUntil ( "\\ r"); Serial.println (request); client.flush (); // Ma tch the request int value \u003d LOW; if (request.indexOf ( "/ LED \u003d ON")! \u003d -1) (digitalWrite (ledPin, HIGH); value \u003d HIGH;) if (request.indexOf ( "/ LED \u003d OFF")! \u003d -1) ( digitalWrite (ledPin, LOW); value \u003d 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 \u003d\u003d 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 on 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. Повинна відкритися сторінка для управління світлодіодом.

Для роботи з 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. У програмі необхідно встановити режим відправки команд із завершальним символом переведення рядка і поверненням каретки. Швидкість роботи модуля за замовчуванням 115200 біт / сек. Для роботи модуля в штатному режимі контакт 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 тисячу триста дев'яносто шість, 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.

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

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

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

інформація

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

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

підключення

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

Якщо в своїх проектах вам не вистачить двох виведених 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 за схемою яка представлена \u200b\u200bвище. Не забуваємо підключити GPIO0 до GND. Вставляємо USB / UART в USB порт комп'ютера;
- Запускаємо XTCOM_UTIL.exe, переходимо в Tools -\u003e 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), перевіряємо готовність плати командою
\u003e 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 \u003d 4 --GPIO2 gpio.mode (pin, gpio.OUTPUT) for i \u003d 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 --Only 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. BitStream \u003d () for j \u003d 1, 40, 1 do bitStream [j] \u003d 0 end bitlength \u003d 0 pin \u003d 4; gpio.mode (pin, gpio.OUTPUT) gpio.write (pin, gpio.LOW) tmr.delay (20000) --Use Markus Gritsch trick to speed up read / write on GPIO gpio_read \u003d gpio.read gpio_write \u003d gpio.write gpio.mode (pin, gpio.INPUT) --bus will always let up eventually, don "t bother with timeout while (gpio_read (pin) \u003d\u003d 0) do end c \u003d 0 while (gpio_read (pin) \u003d \u003d 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 \u003d Humidity + 2 ^ (8-i) end end for i \u003d 1, 8, 1 do if (bitStream\u003e 2) then HumidityDec \u003d HumidityDec + 2 ^ (8-i) end end for i \u003d 1, 8, 1 do if (bitStream\u003e 2) then Temperature \u003d Temperature + 2 ^ (8-i) end end for i \u003d 1, 8, 1 do if (bitStream\u003e 2) then TemperatureDec \u003d TemperatureDec + 2 ^ (8-i ) end end for i \u003d 1, 8, 1 do if (bitStream\u003e 2) then Checksum \u003d Checksum + 2 ^ (8-i) end end ChecksumTest \u003d (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

Як перевірити ESP8266

Для перевірки ESP8266, який ви тільки що придбали, потрібно.

Увага!Допустимий діапазон напруги живлення модуля ESP8266 від 3,0 до 3,6 вольт. Подача підвищеної напруги живлення на модуль гарантовано призведе до виходу ESP8266 з ладу.

Щоб перевірити ESP8266 ESP-01 достатньо підключити три Піна: VCC і CH_PD (chip enable) до харчування 3,3 вольт, а GND до землі. Якщо у вас не ESP-01, а інший модуль і на ньому виведений GPIO15, то додатково ще потрібно підключити GPIO15 до землі.

При успішному старті заводської прошивки на модулі ESP8266 загориться червоний світлодіод (індикатор харчування, на деяких версіях модуля, наприклад ESP-12, може бути відсутнім) і пару раз блимне синій (це індикатор передачі даних від модуля до терміналу по лінії TX-RX, може мати інший колір) і в вашій бездротової мережі повинна з'явиться нова точка доступу з ім'ям «ESP_XXXX», яку ви зможете побачити з будь-якого WiFi пристрою. назва точки доступу залежить від виробника прошивки і може бути іншим, наприклад AI-THINKER_AXXXXC. Якщо точка доступу з'явилася, то можна продовжити експерименти далі, якщо немає, то ще раз перевірте харчування, CH_PD, GND і якщо все підключено правильно то, швидше за все, у вас несправний модуль, але є надія, що прошивка в модулі з нестандартними настройками і , можливо, вам допоможе перепрошивка.

Як швидко підключити ESP8266

У мінімальний набір для підключення і прошивки модуля ESP8266 входить:

Червоний - харчування 3,3в

Чорний - GND

Жовтий - на боці ESP8266 - RX, на стороні USB-TTL - TX

Зелений - на боці ESP8266 - TX, на стороні USB-TTL - RX

Помаранчевий - CH_PD (CHIP ENABLE) - повинен бути завжди підтягнутий до харчування

Синій - GPIO0 - підключений через вимикач до землі, щоб увімкнути режим перепрошивки модуля. Для звичайного старту модуля GPIO0 можна залишити нікуди не підключеним.

Рожевий на правій схемі - нестабілізована харчування 5-8 вольт

4. Для старту модуля розірвіть ланцюг GPIO0 - GND і можете подавати живлення (причому саме в такому порядку: спочатку переконуємося, що GPIO0 «висить у повітрі», потім подаємо харчування на VCC і CH_PD)

Увага! У вищенаведених, реально працюють, прикладах підключення ESP8266 використовується підключення висновків ESP8266 «безпосередньо» до землі і харчуванню, або «висячий в повітрі», як у нас нікуди не підключений RESET, що є абсолютно неправильним і годиться тільки для пари перших експериментів, хоча і цілком працездатний на переважній більшості модулів. «Безпосередньо» до харчування підключається тільки висновок VCC, інші висновки: CH_PD, RESET, GPIO0, GPIO2, повинні бути підтягнуті (pullup) до харчування (VCC) через резистор від 4,7 до 50 кОм. «Безпосередньо», до мінуса (загального проведення) харчування підключаємо тільки GND, а GPIO0 підтягуємо (pulldown) теж через резистор до 10k до GND для перекладу модуль в режим завантаження прошивки. Якщо ви плануєте і далі експериментувати з ESP8266, то зробіть, втім так само як і для будь-яких інших мікроконтролерів. Детальний опис pullup і pulldown виходить за рамки даної статті, але ви зможете легко нагугліть опис правильного підключення портів введення-виведення. «» Підключення дозволить вам уникнути безлічі «чудес» і проблем і буде неминуче необхідним при виникненні труднощів із запуском або перепрошивкой модуля ESP8266.

Як правильно підключити ESP8266

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

Схема підключення ESP8266 (без автозавантаження прошивки, прошиваються попередньо встановивши перемичку BURN і перезагрузив модуль)

Схема підключення з підтримкою автозавантаження прошивки з Arduino IDE, UDK, Sming. Для Flash Download Tool і XTCOM_UTIL, можливо, буде потрібно відключення RTS / DTR. Якщо RTS і DTR вам відключати незручно, то можна додати в схему перемички

На цих схемах не показано підключення ADC і вільних GPIO - їх підключення буде залежати від того, що ви захочете реалізувати, але якщо хочете стабільності, то не забудьте притягти все GPIO до харчування (pullup), а ADC до землі (pulldown) через підтягує резистори .

Резистори на 10k можуть замінені на інші від 4,7k до 50k, за винятком GPIO15 - його номінал повинен бути до 10k. Номінал конденсатора, який згладжує високочастотні пульсації, може бути іншим.

З'єднання RESET і GPIO16 через резистор deep sleep на 470 Ом вам буде потрібно, якщо ви будете використовувати режим deep sleep: для виходу з режиму глибокого сну модуль перезавантажує сам себе, подаючи низький рівень на GPIO16. Без цього з'єднання глибокий сон буде вічним для вашого модуля.

На перший погляд на цих схемах здається, що GPIO0, GPIO2, GPIO15, GPIO1 (TX), GPIO3 (RX) зайняті і ви не можете їх використовувати для своїх цілей, але це не так. Високий рівень на GPIO0 і GPIO2, низький на GPIO15 потрібні тільки для старту модуля, а в подальшому ви можете використовувати їх на свій розсуд, тільки не забудьте забезпечити необхідні рівні до перезавантаження модуля.

Можна використовувати і TX, RX як GPIO1 і GPIO3 відповідно, не забуваючи про те, що при старті модуля будь-яка прошивка буде смикати TX, відправляючи зневадження в UART0 на швидкості 74480, але після успішного завантаження ви можете використовувати їх не тільки як UART0 для обміну з іншим пристроєм, але і як звичайні GPIO.

Для модулів, що мають меншу кількість розлучених пинов, як наприклад, ESP-01 підключення нерозведених пинов не потрібно, тобто на ESP-01 розведені тільки: VCC, GND, GPIO0, GPIO2, CH_PD і RESET - ось тільки їх і підтягуєте. Немає ніякої необхідності припаюватися прямо до мікросхемі ESP8266EX і притягувати нерозведені Піни, тільки якщо вам це.

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

Увага! Навіть ці схеми не можна назвати «ідеальними». Досконалості немає межі: зручно підключити другий USB-TTL до UART1 (c ESP8266 можна взяти тільки GND і UTXD1, тобто GPIO2) для підключення отладочного терміналу (буде потрібно другий USB-TTL конвертер) - тоді можна буде прошивати модуль ESP8266 через UART0 без відключення терміналу налагодження на UART1. Непогано буде підключити резистори малого номіналу до висновків обох UART, поставити діод в лінію RTS, додати конденсатор в трубопровід для гасіння низькочастотних імпульсів і т.д. Дуже зручно, наприклад, зроблено в цій отладочной платі: на всі GPIO підключені світлодіоди, на ADC підключений фоторезистор, але шкода, що немає кнопки RESET і перемичка тільки одна на GPIO0.

Правильним буде сказати вам, що не існує ідеальної і в той же час універсальної схеми підключення ESP8266. Вся справа в тому, що дуже багато залежить від прошивки, яку ви збираєтеся туди залити. Вищенаведені схеми розраховані на новачків, які тільки починають освоювати ESP8266, для експериментів. Для реальних проектів, можливо, вам доведеться трохи змінити схему. Наприклад, для потрібно підключити RTS до GPIO15, а CTS до GPIO13. Також в реальних проектах рекомендую приділити особливу увагу харчуванню.

Підключення ESP8266 через Arduino

Якщо у вас під рукою не виявилося USB-TTL конвертера на 3,3в, але є Arduino з вбудованим USB-TTL конвертером, то можна використовувати таку схему підключення

На що звернути увагу:

1. Arduino Reset підключений до GND (синій провід) щоб не запускався мікроконтролер на Arduino, в даному виді ми використовуємо Arduino як прозорий USB-TTL конвертер

2. RX і TX підключені не "на перехрещення», а прямо - RX - RX (зелений), TX - TX (жовтий)

3. Все інше підключено так само, як і в попередніх прикладах

Увага! У цій схемі також потрібно погоджувати рівні TTL 5 вольт Arduino і 3.3 вольта на ESP8266, однак непогано працює і так.

Увага!На Arduino може бути встановлений стабілізатор живлення, який не витримає струм, необхідний для ESP8266, тому перш, ніж проводити підключення звіртеся з даташіта на той стабілізатор, який встановлений саме у вас. Уникайте використання інші енергоспоживаючі компоненти одночасно з ESP8266 в зв'язку з ризиком виходу з ладу вбудованого в Arduino стабілізатора живлення.

З підключенням до послідовного порту доведеться трохи поворожити: в зв'язку з різноманітністю прошивок для ESP8266, підключення може здійснюватися на різних швидкостях. потрібну швидкість можна визначити шляхом простого перебору трьох варіантів: 9600, 57600 і 115200. Як здійснити перебір? Підключаєтеся в термінальній програмі до вашого віртуального послідовного порту виставивши наступні параметри: 9600 8N1, потім перезавантажувати модуль, відключивши CH_PD (chip enable) від харчування (USB-TTL при цьому залишається підключеним до USB) і знову включаєте (тобто просто пересмикуєте CH_PD , чому не пересмикує харчування - читаємо, також можна короткочасно замкнути RESET на землю для перезавантаження модуля) і спостерігаєте дані в терміналі. По-перше, світлодіоди на ESP8266 повинні горіти як описано на початку статті в розділі. По-друге, в терміналі ви повинні побачити «сміття» з різних символів, що закінчується рядком «ready». Якщо «ready» ми не бачимо, то перепідключатися терміналом на іншій швидкості і знову перезавантажуємо модуль.

На одному з варіантів швидкості «ready» ви все-таки побачите - вітаємо, ваш модуль готовий до роботи. Якщо немає, то ласкаво просимо - ми постараємося допомогти, але попередньо почитайте.

Трохи докладніше про «смітті». Справа в тому, що при старті прошивки, UART модуля ESP8266 перемикається на швидкість передачі 74 880 (ось такі кумедні ці китайці) видає в UART зневадження, потім перемикає швидкість порту на 115200 (ну або на 9600 або 57600 залежно від версії прошивки) , так ось ця налагоджувальна інформація і бачиться нам як сміття, тому що ми підключаємося до модуля на інший швидкості. Можете підключиться до ESP8266 на швидкості 74 880 (підтримує цю швидкість) і ви цю зневадження побачите, буде щось на зразок цього:

wdt reset load 0x40100000, len 25052, room 16 tail 12 chksum 0x0b ho 0 tail 12 room 4 load 0x3ffe8000, len 3312, room 12 tail 4 chksum 0x53 load 0x3ffe8cf0, len 6576, room 4 tail 12 chksum 0x0d csum 0x0d

wdt reset

load 0x40100000, len 25052, room 16

tail 12

chksum 0x0b

ho 0 tail 12 room 4

load 0x3ffe8000, len 3312, room 12

Що робити далі

Якщо у вас новий модуль, то, швидше за все, в ньому прошита одна зі старих кастомних AT прошивок. Швидше за все це який-небудь AI-THINKER AT v0.16 SDK v0.9.2. Перевірити версію прошивку ви можете командою «AT + GMR», тобто прямо в термінальній програмі набираєте AT + GMR без лапок і тиснете Enter. Модуль повинен відповісти «OK» і видати версію прошивки (наприклад, «0016000092» - в різних версіях AT прошивок формат виведення версії відрізняється). Управління модулем ESP8266 AT командами заслуговує на окрему статтю, проте ви легко зможете розібратися з цим і самі, скориставшись одним з наших довідників по AT командам:

На момент написання цієї статті актуальна версія прошивки для ESP8266:

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

Модуль ESP8266 чудовий тим, що не вимагає спеціального програматора - оновлення прошивки виробляється на тому ж залозі, на якому ви підключаєте модуль ESP8266 до комп'ютера, тобто теж через USB-TTL конвертер (ну або Arduino або RPi). Для оновлення прошивки на модулі ESP8266 виконайте наступне:

1. Скачайте нову версію прошивки з нашого сайту з розділу (ось посилання на на момент написання цієї статті)

2. Скачайте одну з утиліт для прошивки ESP8266 в залежності від вашої операційної системи з розділу з нашого сайту



Сподобалася стаття? поділіться їй