Управління навантаженням на NodeMCU за допомогою мобільної програми. Робота з ESP8266: Початкове налаштування, оновлення прошивки, зв'язок по Wi-Fi, відправка-отримання даних на ПК Розраховані на багато користувачів MIMO і OFDMA

Функції бібліотеки WiFi ESP8266 дуже схожі з функціями бібліотеки для звичайного шилду WiFi.

Список відмінностей:

  • WiFi. mode (m): вибрати режим WIFI_AP(точка доступу), WIFI_STA(клієнт), або WIFI_AP_STA(обидва режими одночасно).
  • WiFi. softAP (ssid)створює відкриту точку доступу
  • WiFi. softAP (ssid, password)створює точку доступу з WPA2-PSK шифруванням, пароль має бути не менше 8 символів
  • WiFi. macAddress (mac )дозволяє отримати MAC адресу в режимі клієнта
  • WiFi. softAPmacAddress (mac )дозволяє отримати MAC адресу в режимі точки доступу
  • WiFi. localIP ()дозволяє отримати IP адресу в режимі клієнта
  • WiFi. softAPIP()дозволяє отримати IP-адресу в режимі точки доступу
  • WiFi. RSSI ()поки що не реалізована
  • WiFi. printDiag (Serial);виводить діагностичну інформацію
  • Клас WiFiUDPпідтримує прийом та передачу multicast пакетів у режимі клієнта. Для передачі multicast пакета використовуйте замість udp. beginPacket (addr, port)функцію udp. beginPacketMulticast (addr, port, WiFi. localIP ()). Коли ви очікуєте на multicast пакети, використовуйте замість udp. begin (port )функцію udp. beginMulticast (WiFi . localIP () , multicast_ip_addr , port ). Ви можете використовувати udp. destinationIP ()для визначення того, був пакет відправлений на multicast адресу або призначався саме вам. Функції Multicast не підтримуються в режимі точки доступу.

WiFiServer, WiFiClient, і WiFiUDPпрацюю так само, як і з бібліотекою звичайного WiFi шилду. Чотири приклади йде в комплекті з цією бібліотекою.

Тікер

Бібліотека Ticker може бути використана для виконання подій, що періодично повторюються, через певний час. Два приклади включено у постачання.

В даний час не рекомендується блокувати операції введення-виведення (мережа, послідовний порт, файлові операції) в callback функціях тикера. Замість блокування встановлюйте прапор у функціях callback і перевіряйте цей прапор в основному циклі.

EEPROM

Ця бібліотека дещо відрізняється від стандартної Arduino EEPROM. Необхідно викликати функцію EEPROM. begin (size)Кожного разу перед початком читання або запису розмір (вказується в байтах) відповідає розміру даних, які ви маєте намір використовувати в EEPROM. Розмір даних має бути в діапазоні від 4 до 4096 байт.

Функція EEPROM. writeне здійснює запис даних у флеш пам'ять негайно, ви повинні використовувати функцію EEPROM. commit()щоразу, коли ви хочете зберегти дані на згадку. Функція EEPROM. end()теж здійснює запис даних, а також звільняє оперативну пам'ятьвід даних, запис яких зроблено. Бібліотека EEPROM використовує один сектор флеш пам'яті, починаючи з адреси 0x7b000 для зберігання даних. У поставку включено три приклади роботи з EEPROM.

I2C (Бібліотека Wire)

Реалізовано лише режим ведучого, частота орієнтовно до 450 кГц. Перед використанням шини I2C, потрібно вибрати піни SDA та SCL шляхом виклику функції Wire. pins (int sda, int scl), наприклад Wire. pins (0 , 2 )для модуля ESP-01 Для інших модулів піни за замовчуванням 4(SDA) та 5(SCL).

SPI

Бібліотека SPI підтримує весь Arduino SPI API, включаючи транзакції, зокрема фазу синхронізації (CPHA). Clock polarity (CPOL) поки що не підтримується (SPI_MODE2 і SPI_MODE3 не працюють).

ESP8266 API

Підтримка функцій, специфічних для ESP8266 (режим глибокого сну та сторожовий таймер), реалізована в об'єкті ESP. Функція ESP. deepSleep (microseconds, mode)переводить модуль режим глибокого сну. Параметр modeможе приймати значення: WAKE_DEFAULT, WAKE_RFCAL, WAKE_NO_RFCAL, WAKE_RF_DISABLED. GPIO16 має бути з'єднаний із RESET для виходу з режиму глибокого сну.

Функції ESP. wdtEnable(), ESP. wdtDisable(), і ESP. wdtFeed()керують сторожовим таймером.

ESP. reset()перезавантажує модуль

ESP. getFreeHeap()

ESP. getFreeHeap()повертає розмір вільної пам'яті

ESP. getChipId()повертає ESP8266 chip IDE, int 32bit

ESP. getFlashChipId()повертає flash chip ID, int 32bit

ESP. getFlashChipSize()повертає розмір флеш пам'яті в байтах, оскільки його визначає SDK (може бути менше реального розміру).

ESP. getFlashChipSpeed ​​(void)повертає частоту флеш пам'яті, Гц.

ESP. getCycleCount()Повертає кількість циклів CPU з моменту старту, невідображається 32-bit. Може бути корисною для точного таймінгу дуже коротких операцій

Бібліотека OneWire

Бібліотека OneWire була адаптована для ESP8266 (внесені зміни до OneWire.h) Якщо у вас встановлена ​​бібліотека OneWire до папки Arduino/libraries, то використовуватиметься саме вона, а не з комплекту постачання.

mDNS бібліотека ESP8266mDNS

Бібліотека дозволяє реалізувати у вашій програмі відповідь на мультикастові запити DNS для локальної зони, наприклад “esp8266.local”. В даний час підтримується лише одна зона. Дозволяє звертатися до WEB серверу ESP8266 на ім'я, а не тільки на IP адресу. Додаткову інформацію ви можете знайти в прикладі, що додається, і у файлі readme даної бібліотеки.

Бібліотека Серво

Бібліотека дозволяє керувати сервомоторами. Підтримує до 24 сервоприводів на доступних GPIO. За промовчанням перші 12 сервоприводів будуть використовувати Timer0 і будуть незалежними від будь-яких інших процесів. Наступні 12 сервоприводів використовуватимуть Timer1 та розділятимуть ресурси з іншими функціями, які використовують Timer1. Більшість сервоприводів працюватимуть з керуючим сигналом ESP8266 3,3в, але не зможуть працювати на напрузі 3,3в і вимагатимуть окремого джерела живлення. Не забудьте з'єднати загальний провід GND цього джерела з GND ESP8266

  • DHT11 – використовуйте для ініціалізації такі параметри DHT dht (DHTPIN, DHTTYPE, 15)
  • NeoPixelBus – Arduino NeoPixel бібліотека для esp8266
  • PubSubClient Бібліотека MQTT by @Imroy. Стаття на нашому сайтіпро цю бібліотеку
  • Comfast CF-WU715N - найдешевший бездротовий мережевий WiFi адаптер, який мені вдалося знайти на просторах інтернет-магазинів. Тож у сьогоднішньому огляді буде цікавий продукт, який дуже сподобається тим, хто любить заощаджувати. Подивимося на його характеристики, дізнаємось, як встановити драйвера та налаштувати WiFi приймач Comfast WU715N.

    У нього ще є потужніший "братик" - Comfast CF-WU720N. У нього майже ті ж параметри, але за рахунок продуктивнішого заліза, корпус значно більший.

    Відразу хочу обмовитися, що Comfast WU715N не самий недорогий адаптер - є і ще дешевше, але якість їх не задовольнить навіть найдосвідченішого користувача. Тому я провів невелику роботу з пошуку дійсно відповідного продукту, який був би недорогим, але водночас якісним. І знайшов модель від маловідомого в Росії, але дуже популярного в Китаї виробника мережевого обладнання Comfast.


    Зовнішній вигляд мережного адаптера Comfast CF-WU715N

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

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


    Якщо ж брати його у фірмовій коробці, то це буде виглядати так:

    Драйвера адаптера підходять для Windows 7 і 8, тому будь-який сучасний комп'ютер зможе з ним працювати.

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

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

    • Чіпсет - Ralink RT5370
    • Антена - 2 децибели
    • Інтерфейс - USB 2.0
    • Стандарт WiFi - B, G, N
    • Швидкість - до 150 мбіт/с
    • Шифрування - WEP, WPA, WPA2

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

    Тобто одразу три в одному – непогано для бюджетної моделі!

    Встановлення драйвера та налаштування Comfast CF-WU715N

    Тепер давайте подивимося, як налаштовується цей маленький бездротовий адаптер.
    Вставляємо його в порт USB, а диск з драйверами для адаптера і програмою для конфігурації в CD-Rom. Диск краще не втрачати, тому що потім завантажити драйвер для мережевого адаптера буде проблематично - російської версії, так само як і будь-якої іншої, крім китайської та англійської, офіційний сайт виробника не має. Я шляхом довгих пошуків методом «наукового тику» все ж таки зміг знайти сторінку моделі Comfast CF-WU715N, але ніякого програмного забезпечення в розділі завантажень так і не знайшов.


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

    Відкривши його зміст побачимо папки, назва яких говорить про те, що тут є весь потрібний софт для роботи як у Windows 7/8, так і Linux та MacOS.

    Ми повинні запустити файл 3070setup.exe. Спочатку погоджуємося з ліцензійною угодою, після чого вибираємо тип установки - тільки драйвера Comfast або разом з фірмовим додатком - переклад китайців трохи шкутильгає, але суть вмісту зрозуміла.

    Якщо ви не плануєте використовувати свій бездротовий адаптер для підключень WiFi Direct, то саму програму налаштування можна не ставити, так як всі підключення до мережі робляться стандартними засобами Windows.


    Після встановлення піктограм у нижній панелі Windows з'явиться характерна іконка бездротового з'єднання. Можна по ній натиснути і вибрати зі списку доступних мереж свій WiFi.

    Але ми підемо іншим шляхом і подивимося, що нам пропонує утиліта Ralink Wireless Utility, яка була на диску.

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

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

    Якщо ж ви бажаєте безпосередньо з'єднатися з іншим комп'ютером, на якому також встановлений бездротовий адаптер, який підтримує роботу через WiFi Direct, то клацаємо у додатку на іконку WiFi і відкриваємо нове вікно

    Для включення двічі клацаємо по зоні цього віконця та задаємо ім'я нашого комп'ютера для виявлення

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

    Адаптер Comfast як точка доступу

    Тепер подивимося на третю можливість мережевого адаптера Comfast — працювати як точка доступу (Access Point), тобто роздавати інтернет WiFi на інші пристрої.

    Для активації даного режиму знаходимо в правому нижньому кутку на панелі значків «стрілку» і в віконці, що відкрилося — іконку програми Ralink Utility у вигляді літери «R».

    Клацаємо по ній правою кнопкою миші і бачимо кілька пунктів. Нас зараз цікавить другий і третій — «Переключити в режим STA+AP» і «Переключити в режим точки доступу».

    • STA+AP - це режим, при якому адаптер одночасно прийматиме інтернет по wifi від роутера і відразу роздавати його іншим.
    • AP — це режим простої точки доступу, при якому ваш комп'ютер повинен бути підключений до інтернету через кабель або через інший бездротовий. мережевий адаптер— безпосередньо чи через роутер не важливо, — а Comfast тільки роздаватиме сигнал, але не прийматиме його.

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

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

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

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

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

    Тест швидкості

    Все це класно, але що з наслідком роботи? Адже ми купуємо мережевий адаптер, перш за все, для стабільної роботи в інтернеті. Тому ми здійснили виміри швидкості через сервіс SpeedTest.net. Спочатку для точки відліку швидкість ПК, підключеного до роутера через кабель.

    Після чого через адаптер Comfast

    В результаті маємо 27 MB/s на завантаження через бездротовий адаптер проти 39 MB/s за кабелем і трохи нижчий показник на завантаження - 24 проти 41. Дуже непогані показники для такого пристрою, які гарантують нам достатньо високу швидкістьпід час роботи в інтернеті по WiFi з'єднанню.

    І майже такі ж результати адаптера при роботі як точка доступу — ми підключили до нього iPad Air і заміряли показники через програму від того ж SpeedTest.

    Зрештою, останнє зняття показань у режимі одночасної роботи як клієнта і точки, коли адаптер отримував сигнал по WiFi і роздавав його довше на iPad.

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

    Де купити цей мережевий адаптер, спитаєте Ви? Я його замовив у моєму улюбленому китайському інтернет-магазині AliExpress і обійшовся він близько 5$, що на наші гроші на момент покупки складало близько 170 рублів. Зараз через курс долара він став трохи дорожчим, але де ще за такі гроші ви знайдете щось варте?

    Якщо є питання, відповім у коментарях.

    Якщо стаття допомогла, то на подяку прошу зробити 3 прості речі:
    1. Підписатися на наш YouTube канал
    2. Надіслати посилання на публікацію до себе на стіну в соціальній мережі за кнопкою вище

    В якій відображені найважливіші зміни у новій редакції стандарту порівняно з чинним 802.11ac.

    Зверніть увагу, що 802.11ax буде працювати в шпальтах частот 2.4 і 5 ГГц (раніше в 802.11ac від діапазону 2.4 ГГц намагалися відмовитися). Також, у новій специфікації буде вчетверо збільшено кількість піднесених FFT OFDM. Але найбільш важливою зміною є те, що з виходом 802.11ax інтервал між піднесучими буде також скорочено в чотири рази, і при цьому існуючі смуги пропускання каналів залишилися без змін:

    Малюнок 1 - Інтервали між піднесучими в 802.11ax

    Таким чином, на малюнку вище ми бачимо вужчі інтервали між піднесучими. Плюсом до змін в OFDM також додається 1024-QAM модуляція, що дозволить збільшити максимальну (теоретичну максимально можливу) швидкість передачі даних майже до 10 Гбіт/сек.

    Перейдемо до розгляду технологій 802.11ax фізично

    У 802.11ax буде доопрацьовано механізм beamforming'a (автоматичного формування діаграми спрямованості у бік абонента) порівняно з більш ранньою версією 802.11ac. Відповідно до цього механізму, формувач діаграми спрямованості ініціює процедуру зондування каналу за допомогою Null Data Packet. При цьому він вимірює рівень активності в каналі та використовує цю інформацію для обчислення матриці каналів. Потім матриця каналів використовується для фокусування радіочастотної енергії у бік кожного окремого користувача. Спільно з beamforming, стандарт 802.11ax буде підтримувати дві нові для Wi-Fi розраховані на багато користувачів технології: Multi-User MIMO і Multi-User OFDMA.

    Розраховані на багато користувачів MIMO і OFDMA

    У стандарті 802.11ax буде визначено два режими роботи:

    Single User (один користувач).У цьому режимі бездротові станції STA посилають і приймають дані точок доступу AP по одному, як вони отримують доступ до середовища. Механізм доступу був описаний у .

    Multi-User (розрахований на багато користувачів режим).Цей режим дозволяє точці доступу одночасно працювати з кількома STA. Стандарт ділить цей режим далі на розрахований на багато користувачів Downlink і Uplink.

    DownlinkMulti-Userдозволяє точці доступу AP одночаснопередавати дані кільком бездротовим STA, які обслуговуються в зоні радіопокриття AP. Існуючий стандарт 802.11ac вже визначає цю функцію. А ось розрахований на багато користувачів Uplink є нововведенням.

    UplinkMulti-Userдозволяє точці доступу AP одночасноприймати дані від кількох бездротових станцій STA. Це нова можливість стандарту 802.11ax, яка не існувала у жодній з попередніх версій стандарту Wi-Fi.

    У розрахованому на багато користувачів режимі роботи стандарт також визначає два різних способівмультиплексування більшої кількості користувачів у певній області: Multi-User MIMO та OFDMA. Для обох цих методів точка доступу AP виступає як центральний контролер, аналогічно тому, як стільникова базова станція LTE управляє мультиплексуванням користувачів у зоні обслуговування. Розглянемо MU-MIMO та OFDMA більш докладно.

    Розрахований на багато користувачів MIMO

    Пристрої 802.11ax використовуватимуть методи формування діаграми спрямованості (запозичені з 802.11ac) для одночасного спрямування пакетів до кількох просторово рознесених користувачів. Тобто, точка доступу AP буде обчислювати матрицю каналів для кожного користувача та управляти паралельними променями для різних користувачів, причому кожен промінь міститиме пакети для свого конкретного користувача.

    У 802.11ax підтримується одночасне відправлення до восьми розрахованих на багато користувачів MIMO-потоків. Крім того, кожен потік MU-MIMO може мати власний MCS (швидкість передачі та ступінь модуляції). До різних користувачів може бути організована довільна кількість потоків. При використанні просторового мультиплексування MU-MIMO точки доступу можна буде порівняти з комутатором Ethernet, що має кілька портів. Кожен окремий порт – це окремий потік MU-MIMO. При цьому до кожного окремого абонента може бути "прокинуто" кілька потоків:


    Малюнок 2 - MU-MIMO Beamforming для обслуговування множини, просторово рознесених користувачів

    Новою функціональністю у 802.11ax є MU-MIMO Uplink. Як було зазначено вище, точка доступу AP може ініціювати одночасний прийом пакетів від кожної зі STA за допомогою тригерного кадру. Коли кілька STA у відповідь тригерний кадр передають свої власні пакети, точка доступу AP застосовує матрицю каналів до прийнятих променів і відокремлює інформацію, що міститься в кожному промені. Так AP також може ініціювати розрахований на багато користувачів прийом одночасний від всіх абонентських STA в мережі:


    Малюнок 3 -

    Розрахований на багато користувачів OFDMA

    У стандарті 802.11ax з'явиться нова для Wi-Fi, запозичена із мереж 4G, технологія мультиплексування великої кількості абонентів у загальній смузі пропускання: Orthogonal Frequency Division Multiple Access (OFDMA). Ця технологія ґрунтується на OFDM, яка вже використовується у 802.11ac. Суть її в тому, що OFDMA в 802.11ax дозволяє додатково "нарізати" стандартні канали шириною 20, 40, 80 та 160 МГц на дрібніші. Таким чином, відбувається поділ каналів на дрібніші підканали з певною кількістю піднесучих. Як і в LTE, у стандарті 802.11ax найменший підканал називається Resource Unit (RU), що має мінімальний розмір 26 піднесучих. Для наочності, на малюнку нижче зображено поділ частотних ресурсів для одного користувача з використанням OFDM (ліворуч) та мультиплексування чотирьох користувачів в одному каналі з використанням OFDMA (праворуч):


    Малюнок 4 -

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

    Нижче показано, як система 802.11ax може мультиплексувати канал, використовуючи різні розміри RU. Зверніть увагу, що найменший розділ каналу вміщує до 9 користувачів на кожні 20 МГц смуги пропускання:


    Малюнок 5

    Розділення каналів Wi-Fi з використанням каналів шириною 40 МГц:


    Малюнок 6

    Розділення каналів Wi-Fi з використанням каналів шириною 80 МГц:


    Малюнок 7

    У наведеній нижче таблиці показано кількість користувачів (для різної ширини каналів), які тепер можуть отримувати частотно-мультиплексований доступ OFDMA:

    Кількість підканалів UA Ширина каналу 20 МГц Ширина каналу 40 МГц Ширина каналу 80 МГц Ширина каналу 160 МГц
    26 9 18 37 74
    52 4 8 16 32
    106 2 4 8 16
    242 1-SU/MU-MIMO 2 4 8
    484 N/A 1-SU/MU-MIMO 2 4
    966 N/A N/A 1-SU/MU-MIMO 4
    2x966 N/A N/A N/A 1-SU/MU-MIMO

    Робота Multi-User Uplink

    Як було зазначено вище, у 802.11ax з'явиться можливість одночасної передачі пакетів від кількох абонентів до точки доступу. Для координації роботи MU-MIMO або Uplink OFDMA точка доступу AP передає тригерний кадр всім користувачам. Цей кадр вказує кількість просторових потоків та/або параметри OFDMA (частоту та розміри RU) кожного користувача. Тригерний кадр також містить інформацію про управління потужністю, так що окремі користувачі можуть збільшувати або зменшувати свою потужність, що передається, прагнучи зрівняти потужність, одержувану точкою доступу AP від ​​всіх користувачів, і покращувати тим самим якість прийому кадрів. AP також інструктує всіх користувачів, коли починати та зупиняти передачу. AP відправляє розрахований на багато користувачів тригерний кадр, який вказує всім користувачам точний момент часу, коли вони всі повинні почати передавати дані, і точну тривалість їх кадрів, щоб гарантувати, що всі вони завершать передачу одночасно. Як тільки AP отримує кадри від усіх користувачів, вона відправляє назад ACK блок, який говорить про завершення передачі:


    Малюнок 8 - Координація розрахованої на багато користувачів пристроїв у Wi-Fi-мережі

    Висновок

    Однією з основних цілей стандарту 802.11ax є забезпечення вищої середньої пропускної спроможності кожного користувача (загалом у 4 разу) у щільних бездротових мережах. З цією метою, пристрої 802.11ax підтримують роботу розрахованих на багато користувачів технологій MIMO і OFDMA. Також додано можливість одночасної передачі від декількох пристроїв точці доступу AP, тим самим планується зниження часу очікування та простою обладнання через невдалі спроби захопити середовище передачі. Теоретично все виглядає, як завжди, чітко і красиво, проте, який ефект буде практично - покаже час. Поки що можна з упевненістю сказати лише те, що ефект від 802.11ax буде тільки в тому випадку, якщо в мережі всі пристрої підтримуватимуть новий стандарт. Інакше, має пройти ще кілька років, перш ніж ми перейдемо від старого доброго Wi-Fi (з його зависаннями у великих мережах) до ефективного 802.11ax.

    У цій статті показано приклад використання плати NodeMCU. А саме керування навантаженням за допомогою релейного модуля з 4 реле та програми на мобільний телефонандроїд.

    Підключаємо всі контакти за схемою

    Після підключення всіх компонентів необхідно скопіювати наведений нижче програмний код і вставити його в програму Arduino IDE і завантажити цей програмний код в саму плату Arduino.

    #include // Ім'я та пароль вашої мережі WiFi const char * ssid = "test"; const char* password = "test"; // Створюємо сервер та порт для прослуховування 80 WiFiServer server(80); void setup() ( Serial.begin(115200); delay(10); // Підготовка GPIO pinMode(5, OUTPUT); digitalWrite(5, 1); pinMode(4, OUTPUT); digitalWrite(4, 1); pinMode (0, OUTPUT), digitalWrite(0, 1); pinMode(2, OUTPUT); digitalWrite(2, 1); 192,168,1,131),IPAddress(192,168,1,111),IPAddress(255,255,255,0),IPAddress(192,168,1,1)), WiFi.begin(ssid, password); = WL_CONNECTED) ( delay(500); Serial.print("."); ) Serial.println(""); Serial.println("WiFi connected"); // Запуск сервера server.begin(); Serial.println ("Server started"); // Виведення отриманої IP адреси Serial.println(WiFi.localIP()); ) void loop() ( // Перевірка підключення WiFiClient client = server.available(); if (!client) ( return ; ) // Очікування даних Serial.println("new client");while (!client.available()) ( delay(1); ) // Читання першого рядка запиту String req = client.readStringUntil("r"); Serial.println(req); client.flush(); // Робота з GPIO if (req.indexOf("/1/0")! = -1) digitalWrite(5, 0); else if (req.indexOf("/1/1") != -1) digitalWrite(5, 1); else if (req.indexOf("/2/0") != -1) digitalWrite(4, 0); else if (req.indexOf("/2/1") != -1) digitalWrite(4, 1); else if (req.indexOf("/3/0") != -1) digitalWrite(0, 0); else if (req.indexOf("/3/1") != -1) digitalWrite(0, 1); else if (req.indexOf("/4/0") != -1) digitalWrite(2, 0); else if (req.indexOf("/4/1") != -1) digitalWrite(2, 1); else if (req.indexOf("/5") != -1) ( Serial.println("TEST OK"); String s = "HTTP/1.1 200 OKContent-Type: text/html\r\ n\r\n\r\n \r\nTest OK. Uptime: "; // Підстчет UpTime int Sec = (millis() / 1000UL) % 60; int Min = ((millis() / 1000UL) / 60UL) % 60; int Hours = ((millis() / 1000UL) / 3600UL) % 24; int Day = ((millis() / 1000UL) / 3600UL / 24UL); s + = ":"; s + = Sec; s + = "\n"; client.print(s); client.stop(); return; ) else // Якщо невірний запит написати про помилку ( Serial.println("invalid request"); String s = "HTTP/1.1 200 OK\ r\nContent-Type: text/html\r\n\r\n\r\n \r\nInvalid request"; s += "\n"; client.print(s); client.stop(); return; ) client.flush(); // Формування відповіді String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\ r\n\r\n\r\n \r\nGPIO set OK"; s += "\n"; // Send the response to the client client.print(s); delay(1); Serial.println("Client disonnected"); )

    Вихідники можна подивитися за цим посиланням: https://yadi.sk/d/ehabE3C_3M36Yo за цим посиланням завантажується файл з розширенням.

    Мною була замовлена ​​найпростіша плата з ESP8266 – ESP-01, виглядає вона так:

    У старій ревізії плати на роз'єм були виведені лише VCC, GND, URXD та UTXD.
    В останній ревізії додалися RST, GPIO0, GPIO2 та CH_PD.

    Усього є 11 модифікацій плат, що відрізняються кількістю висновків та варіантом виконання:
    ESP-01: PCB antenna, після того, як покладається на відстань до завтовшки 400 метрів, легко використовувати.
    ESP-02: SMD package for submission limit, antenna може бути drawn with IPX header casing.
    ESP-03: SMD package, built-in ceramic antenna technology, all available IO leads.
    ESP-04: SMD package, customers може customize antenna types, flexible design, all the IO leads.
    ESP-05: SMD package, тільки тягнеться до серійної та RST pin, малої external antenna.
    ESP-06: внизу технологія, пов'язана з усіма IO-портами, з металевою shielding shell, може бути FCC CEcertification, recommended.
    ESP-07: Semi-hole чіп технологія, всі IO leads, з мішель shielding shell, може бути FCC CE certifiedIPX external antenna, can also be built-in ceramic antenna.
    ESP-08: з ESP-07, крім того, що antenna є у вигляді клієнтів може визначити їх власні.
    ESP-09: Ultra-small size package, тільки 10 * 10 mm, 4-layer board technology 1M bytes!
    ESP-10: SMD interface, narrow-body design, 10 mm wide, suitable for light with controller.
    ESP-11: SMD interface, ceramic antenna, невеликий volume.

    Розпинання роз'єму ESP-01:

    Призначення висновків плати ESP-01 таке:
    VCC, GND – харчування плати (+3.3В);
    URXD,UTXD - висновки RS232 толерантні до 3.3В
    RST - Апаратне скидання (reset)
    GPIO0, GPIO2 - висновки GPIO
    CH_PD - Chip enable, для роботи має бути підключений до +3.3В.

    Для переключення в режим оновлення прошивки потрібно подати низький рівень на GPIO0 та високий на CH_PD.

    Для підключення плати ESP-01 до ПК я використав USB-to-RS232 перетворювач на FT232R з виходами TTL 3.3В, можна використовувати наприклад такий.
    Харчування ESP-01 потрібно строго 3.3В, тому довелося скористатися перетворювачем DC-DC, можна використовувати такий .

    З базовою прошивкою плата ESP-01 управляється командами AT, тому нам буде потрібна програма-термінал, я використовував CoolTerm.

    Можливо 2 варіанти використання модуля:
    1. Використання плати ESP-01 спільно з доп.мікроконтролером, який керуватиме модулем по UART.
    2. Написання власної прошивки для чіпа ESP8266 та його використання як самодостатній пристрій.

    Природно вигіднішим є 2-й варіант, тим паче потенціал чіпа ESP8266 досить великий.

    Спочатку ми спробуємо варіант №1, тобто управляти платою ESP-01 через RS232.

    Схема підключення дуже проста:
    Висновок VCC – харчування плати (+3.3В);
    Висновок GND – загальний;
    Висновки URXD, UTXD - підключаємо до конвертера USB-to-RS232 (в режимі 3.3В)
    Висновок CH_PD – підключаємо до живлення плати (+3.3В);

    У терміналі (CoolTerm) встановлюємо швидкість COM-порту 57600. Встановити саме таку швидкість, т.к. якщо в чіпі ESP8266 стоїть стара прошивка (а швидше за все це так і є), він працюватиме тільки з такою швидкістю порту.

    Тиснемо Connect, вводимо команду AT, у відповідь має прийти OK. Якщо все так, то плата працює, можна рухатись далі.

    Процедура оновлення прошивки

    Вводимо команду AT+GMR – перевірка версії AT та SDK, у відповідь видає 0016000902, де 0016 – версія SDK, 0901 – версія AT

    На поточний момент (06.11.2014) вже доступна прошивка 0018000902 (Версія SDK - 0018, версія AT - 0902)

    Тепер можна і потрібно оновити прошивку:
    1. Качаємо утиліту XTCOM звідси.
    2. Качаємо прошивку ESP_8266_v0.9.2.2 AT Firmware.bin звідси
    3. Відключаємо живлення плати, виведення GPIO0 з'єднуємо із загальним дротом, включаємо живлення.
    4. Запускаємо XTCOM_UTIL.exe, переходимо в Tools -> Config Device, вибираємо COM-порт до якого підключена плата, ставимо швидкість порту 57600, тиснемо Open, потім Connect, програма повинна сказати "Connect with target OK!", Закриваємо вікно налаштувань. Переходимо в меню API TEST, вибираємо (4) Flash Image Download, вказуємо шлях до файлу "ESP_8266_v0.9.2.2 AT Firmware.bin", адресу залишаємо 0x00000, тиснемо DownLoad. Повинне розпочатися завантаження прошивки, після закінчення буде видано повідомлення.
    5. Відключаємо живлення плати, виведення GPIO0 від'єднуємо від загального дроту, включаємо живлення, запускаємо термінал (УВАГА! Змінюємо швидкість порту на 9600), перевіряємо готовність плати командою AT та версію прошивки командою AT+GMR.

    Після оновлення до версії 0018000902 зміниться дефолтна швидкість COM-порту з 57600 на 9600, але цю швидкість у новій прошивці тепер можна задати командою AT+CIOBAUD. Дивимося AT+CIOBAUD=? доступні швидкості та ставимо командою AT+CIOBAUD=115200 швидкість 115200, у відповідь має видати ОК. Даємо команду на рестарт: AT+RST. Змінюємо швидкість порту у програмі-термінал на 115200.

    Приклад:
    AT OK AT+CIOBAUD=? +CIOBAUD:(9600-921600) OK AT+CIOBAUD=115200 BAUD->115200 OK

    Налаштування підключення до Wi-Fi

    Тепер спробуємо підключити нашу плату ESP-01 до точки доступу Wi-Fi.
    Виконуємо наступні команди:
    1. Встановлюємо режим роботи Wi-Fi командою: AT+CWMODE= Доступні такі режими: 1 – STA, 2 – AP, 3 – BOTH
    Приклад:
    AT+CWMODE=1 OK 2. Дивимось список точок доступу командою: AT+CWLAP
    приклад
    AT+CWLAP +CWLAP:(3,"WiFi-DOM.ru-0474",-85,"c8:d3:a3:30:17:40",8) +CWLAP:(4,"Intersvyaz_516C",-89 ,"2c:ab:25:ff:51:6c",10) +CWLAP:(4,"pletneva",-96,"f8:1a:67:67:2b:96",11) +CWLAP:( 4,"Test",-69,"64:70:02:4e:01:4e",13) OK У дужках вказується: SECURITY, SSID, RSSI, BSSID, CHANNEL
    SECURITY може приймати значення:
    0 - OPEN, 1 - WEP, 2 - WPA-PSK, 3 - WPA2-PSK, 4 - MIXED (WPA-WPA2-PSK)
    3. Підключаємось у нашій AP командою: AT+CWJAP="SSID","PASSWORD" Приклад:
    AT+CWJAP="Test","habrahabr" OK Підключення триває 2-5 секунд, після чого в разі успішного виконання з'явиться OK.
    3. Подивимося, яку IP адресу отримала наша плата командою: AT+CIFSR
    AT+CIFSR 192.168.1.104 OK Відключення від точки доступу робиться командою AT+CWQAP.
    Адреса отримана, можна рухатися далі.

    Плата ESP-01 може виступати як Soft-AP, для включення цього режиму виконуємо наступні команди:
    1. Відключаємось від точки доступу: AT+CWQAP.
    2. Змінюємо режим роботи Wi-Fi командою: AT+CWMODE=2
    3. Створюємо свою AP командою: AT+CWSAP="SSID", "PASSWORD", CHANNEL, SECURITY Приклад:
    AT+CWSAP="Test2","habrahabr",10,4 OK 4. Спробуємо підключитися до нашого AP з комп'ютера. Подивимося результат:


    Як видно на картинці швидкість тільки 54Мбіт/с і ще мене бентежать адреси DNS серверів, думаю вони явно китайські, поставити свої через AT-команди не можна.
    Адресу AP можна дізнатися командою: AT+CIFSR
    Приклад:
    AT+CIFSR 192.168.4.1 OK Список клієнтів нашої AP можна переглянути командою: AT+CWLIF
    Приклад:
    AT+CWLIF 192.168.4.101,f4:ec:38:8d:05:62 OK

    Налаштування режиму TCP-сервер

    На платі ESP-01 можна запустити TCP-сервер для прийому-надсилання даних або вона може виступати TCP-клієнтом для прийому-надсилання даних на сервер.
    Для запуску TCP-сервера виконаємо такі команди:
    1. Встановлюємо режим передачі AT+CIPMODE= mode = 0 - not data mode (сервер може надсилати дані клієнту та може приймати дані від клієнта)
    mode = 1 - data mode (сервер не може надсилати дані клієнту, але може приймати дані від клієнта)
    Приклад:
    AT+CIPMODE=0 OK 2. Встановлюємо можливість множинних з'єднань: AT+CIPMUX= mode 0 - single connection
    mode 1 - multiple connection
    Чи можна перевірити режим з'єднання командою AT+CIPMUX?
    Приклад:
    AT+CIPMUX=1 OK AT+CIPMUX? +CIPMUX:1 OK 3. Запускаємо сервер на порту 8888: AT+CIPSERVER= [,] mode 0 - to close server
    mode 1 - to open server
    Приклад:
    AT+CIPSERVER=1,8888 OK
    Тепер можна підключитися до ESP-01 і відправити-прийняти якісь дані. Для підключення будемо використовувати утиліту
    Запускаємо java -jar SocketTest.jar, на вкладці Client вводимо адресу та порт ESP-01, тиснемо Connect. Якщо підключення буде успішним, то в терміналі з'явиться повідомлення Link і SocketTest стане активним рядок Message і кнопка Send.
    Переглянути список активних підключень до ESP-01 можна командою AT+CIPSTATUS
    Приклад:
    AT+CIPSTATUS STATUS:3 +CIPSTATUS:0,"TCP","192.168.1.100",44667,1 OK Закрити активне з'єднання можна командою AT+CIPCLOSE= або всі з'єднання AT+CIPCLOSE без параметрів.
    Приклад:
    AT+CIPCLOSE=0 OK Unlink 4. Надсилаємо дані з ESP-01 на ПК
    ,
    Приклад:
    AT+CIPSEND=0,16 > Ping Habrahabr SEND OK 5. Надсилаємо тестове повідомлення з ПК:


    У терміналі з'являється рядок +IPD,0,16:Ping Habrahabr Повідомлення прийнято.
    Формат прийнятих даних такий:
    Для Single Connection (CIPMUX=0): +IPD, :Для Multiple Connection (CIPMUX=1): +IPD, ,:

    Налаштування режиму TCP-клієнта

    Тепер поміняємо ролі, ПК – сервер, ESP-01 – клієнт, пробуємо:
    1. Рестартуємо плату AT+RST
    2. Встановлюємо режим передачі AT+CIPMODE= mode = 0 - not data mode (клієнт може надсилати дані серверу та може приймати дані від сервера)
    mode = 1 - data mode (клієнт не може надсилати дані серверу, але може приймати дані від сервера)
    Приклад:
    AT+CIPMODE=0 OK 3. Режим з'єднань ставимо Multiple connection: AT+CIPMUX=1
    4. На ПК у SocketTest запускаємо сервер на порту 8888
    5. Запускаємо клієнта на ESP-01
    Для режиму Single connection (+CIPMUX=0) формат такий AT+CIPSTART= ,,Для режиму Multiple connection (+CIPMUX=1) формат такий AT+CIPSTART= ,,Можливі значення параметрів:
    id = 0-4
    type = TCP/UDP
    addr = IP адреса
    port = порт
    Приклад:
    AT+CIPMUX=1 OK AT+CIPSTART=0,"TCP","192.168.1.100",8888 OK Linked 6. Надсилаємо дані з ESP-01 на ПК
    Для режиму Single connection (+CIPMUX=0) надсилання відбувається так: AT+CIPSEND= Для режиму Multiple connection (+CIPMUX=1) надсилання відбувається так: AT+CIPSEND= ,Після виконання AT+CIPSEND потрібно ввести текст, завершення введення та надсилання здійснюється за Enter.
    Приклад:
    AT+CIPSEND=0,16 > Ping Habrahabr SEND OK
    Приклад відправлення та отримання даних:

    Корисна документація:
    Опис AT-команд (китайською)
    Специфікація на чіп ESP8266 (китайською)
    Специфікація на чіп ESP8266 (Англійською)

    Висновок:

    Як ми бачимо, плата успішно справляється з поставленими завданнями, а саме - підключення до Wi-Fi як клієнт, може виступати в ролі Soft-AP, на платі можна підняти TCP-сервер для прийому-відправлення даних, а можна бути TCP-клієнтом .
    У цій статті ми розглянули роботу з платою ESP-01 через RS232, як керуючий контролер виступав ПК, можна без проблем підключити плату Arduino або будь-який мікроконтролер з UART і виконувати відправлення даних через Wi-Fi мережу між контролерами або ПК.

    У наступній статті (як дозволить карма) я спробую розповісти про принципи написання власних прошивок для чіпа ESP8266, тим самим плата ESP-01 буде повністю автономною, їй буде не потрібний додатковий контролер для управління всіма параметрами. Спробуємо підключити до плати різні периферійні пристрої.

    Радий відповісти на запитання, хоча до кінця я ще не вивчив плату ESP-01.