Wi-fi модули esp8266 и avr микроконтроллер

Модуль Wi-Fi ESP8266 (ESP-01): подключение, распиновка, прошивка в IDE

Модуль ESP-01 с чипом ESP8266 предназначен для связи устройства с беспроводными сетями по WiFi.

Видеообзор

Общие сведения

ESP-01 — плата-модуль WiFi на базе популярного чипсета ESP8266EX . На борту платы находится микросхема Flash-памяти объёмом 2 МБ, чип ESP8266EX, кварцевый резонатор, два индикаторных светодиода и миниатюрная антенна из дорожки на верхнем слое печатной платы в виде змейки. Flash-память необходима для хранения программного обеспечения. При каждом включении питания, ПО автоматически загружается в чип ESP8266EX.

По умолчанию модуль настроен на работу через «AT-команды». Управляющая плата посылает команды — Wi-Fi модуль выполняет соответствующую операцию.

Но внутри чипа ESP8266 прячется целый микроконтроллер, который является самодостаточным устройством. Прошивать модуль можно на разных языках программирования. Но обо всё по порядку.

Работа с AT командами

Подключение и настройка

В стандартной прошивке Wi-Fi модуль общается с управляющей платой через «AT-команды» по протоколу UART.

На всех платах Iskra и Arduino присутствует хотя бы один аппаратный UART — HardwareSerial. Если же по каким то причинам он занят другим устройством, можно воспользоваться программным UART — SoftwareSerial.

HardwareSerial

На управляющей плате Iskra JS и платах Arduino с микроконтроллером ATmega32U4 / ATSAMD21G18 данные по USB и общение через пины 0 и 1 осуществляется через два раздельных UART . Это даёт возможность подключить Wi-Fi модуль к аппаратному UART на пинах 0 и 1 .

Список поддерживаемых плат:

Для примера подключим модуль Wi-Fi к платформе Iskra Neo.

Прошейте управляющую платформу кодом ниже.

Код прошивки

SoftwareSerial

Некоторые платы Arduino, например Uno, прошиваются через пины 0 и 1 . Это означает невозможность использовать одновременно прошивку/отладку по USB и общение с Wi-Fi модулем. Решение проблемы — программный UART . Подключите пины TX и RX ESP-модуля к другим контактам управляющей платы и используйте библиотеку SoftwareSerial.

Для примера подключим управляющие пины Wi-Fi модуля TX и RX — на 8 и 9 контакты управляющей платы. Прошейте управляющую платформу кодом ниже.

Код прошивки

HardwareSerial Mega

На платах форм-фактора Arduino Mega 2560 аппаратный UART, который отвечает за передачу данных через пины 1 и 0 , отвечает также за передачу по USB. Это означает невозможность использовать одновременно UART для коммуникации с Wi-Fi модулем и отладки по USB.

Но на платах такого форм-фактора есть ещё дополнительно три аппаратных UART:

Список поддерживаемых плат:

Подключите Wi-Fi модуль к объекту Serial1 на пины 18 и 19 на примере платы Mega 2560 Прошейте управляющую платформу кодом ниже.

Код прошивки

Примеры работы

Рассмотрим несколько примеров по работе с «AT-командами»

Тестовая команда «AT»

Откройте монитор порта. Настройте скорость соединения — 9600 бод. Конец строки — NL & CR . Введите команду AT и нажмите «Отправить». Это — базовая команда для проверки работы Wi-Fi модуля. В ответ получим «OK»: Если ответа нет или появляются непонятные символы — проверьте правильность подключения и настройки скорости обмена данными.

Настройка режима работы

Wi-Fi модуль умеет работать в трёх режимах:

Переведём чип в смешанный режим командой:

После установки модуль должен ответить «OK»:

В отличии от аппаратного UART (HardwareSerial), за работу программного UART (SoftwareSerial) отвечает микроконтроллер, который назначает другие пины в режим работы RX и TX , соответственно и данные которые приходят от Wi-Fi модуля обрабатывает сам микроконтроллер во время программы. По умолчанию скорость общения Troyka Wi-Fi равна 115200 , что значительно выше чем позволяет библиотека SoftwareSerial. В итоге часть информации которая приходит с Wi-Fi модуля будет утеряна. Если вы используете плату с HardwareSerial подключением модуля можете пропустить пункт настройки скорости и сразу перейти к дальнейшей работе с модулем.

AT установка скорости общения

Для корректной работы с большими объемами необходимо понизить скорость соединения модуля и микроконтроллера. Для этого используйте «AT-команду»:

После проделанной операции, измените скорость программного UART в скетче программы и прошейте плату.

По итогу программный UART успеет обработать каждый пришедший байт с Wi-Fi модуля.

AT сканирование WI-FI сетей

Откройте Serial-порт и отправьте на модуль «AT-команду» для сканирования всех доступных Wi-Fi сетей:

При наличии доступных WI-FI сетей в ответ получим сообщение:

Для продолжение работы используйте перечень «AT-команд»

Wi-Fi модуль как самостоятельный контроллер

ESP-01 (ESP8266) — очень умный модуль. Внутри чипа прячется целый микроконтроллер, который можно программировать на языке C++ через Arduino IDE и JavaScript через Espruino Web IDE .

Настройка железа

Ввиду отсутствия у платформы ESP-01 собственного USB-порта, понижающего преобразователя и отсутствия толерантности к 5 вольтам, подключите её к компьютеру, используя один из перечисленных способов:

Схема через Arduino Uno

Для сборки программатора понадобится:

Необходимо каждый раз выполнять перед прошивкой модуля.

Схема через USB-Serial адаптер

Для сборки программатора понадобится:

Необходимо каждый раз выполнять перед прошивкой модуля.

Программирование на C++

После выполненных действий модуль ESP-01 готов к программированию через Arduino IDE.

Подробности о функциях и методах работы ESP-01 (ESP8266) на языке C++ читайте на ESP8266 Arduino Cores.

Программирование на JavaScript

После выполненных действий модуль ESP-01 готов к программированию через Espruino Web IDE.

Подробнее о функциях и методах работы ESP8266 на языке JavaScript читайте на Espruino.

Восстановление стандартной АТ-прошивки

После программирования платформы в режиме самостоятельного контроллера может понадобиться восстановить на модуле стандартную AT-прошивку. Для этого необходимо воспользоваться утилитой Flash Download Tool.

Элементы платы

Чип ESP8266EX

Чип ESP8266 — выполнен по технологии SoC (англ. System-on-a-Chip — система на кристалле). В основе кристалла входит процессор семейства Xtensa — 32-х битный Tensilica L106 с частой 80 МГц с ультранизким энергопотреблением, радиочастотный трансивер с физическим уровнем WiFi IEEE 802.11 b/g/ и блоки памяти SRAM. Мощности процессорного ядра хватает для работы сложных пользовательских приложений и цифровой сигнальной обработки.

Программное приложение пользователя должно храниться на внешней микросхеме Flash-памяти и загружаться в ESP8266EX через один из доступных интерфейсов (SPI, UART, SDIO и др.) каждый раз в момент включения питания системы.

Чип ESP8266 не содержит в себе Flash-память и многих других компонентов для пользовательского старта. Микросхема является основой на базе которой выпускаются модули с необходимой периферией, например ESP-01.

Светодиодная индикация

Имя светодиода Назначение
LED Индикаторный светодиод подключённый к цифровому пину 1
POWER Индикатор питание на модуле

Распиновка

Пины питания

Пины ввода/вывода

В отличии от большинства плат Arduino, родным напряжением платформы ESP-01 является 3,3 В, а не 5 В. Выходы для логической единицы выдают 3,3 В, а в режиме входа ожидают принимать не более 3,3 В. Большее напряжение может повредить модуль!

Будьте внимательны при подключении периферии: убедитесь, что она может корректно функционировать в этом диапазоне напряжений.

Знакомство с недорогим и функциональным микроконтроллером ESP8266: прошивка и пример использования

ESP8266 — китайский микроконтроллер (далее МК) от производителя Espressif с поддержкой WiFi-интерфейса. Управлять всем этим можно не только с браузера, но и из приложений на Android/iOS/Desktop. Если МК будет применяться там, куда не достаёт WiFi-сеть, то ESP8266 может работать в режиме точки доступа.

Примечание В этой статье не будут рассмотрены практические примеры применения ESP8266. Речь пойдёт об основных преимуществах и возможностях этого МК.

Содержание:

Микроконтроллер ESP8266 работает с внешней flash-памятью по интерфейсу SPI. Её объём варьируется от 512 Кбайт до 4 Мбайт. При желании и умении микросхему памяти можно будет перепаять на версию до 32 Мбайт.

Разновидности МК серии ESP и их плат

Существует около полутора десятка версий МК серии ESP и огромное количество плат с ними. Рассмотрим самые популярные из них.

Микроконтроллеры ESP8266

ESP-01

  • Имеет 8 разведённых контактов (VCC, GND, UTXD, URXD, CH_PD, GPIO0, GPIO2, GPIO6) и PCB-антенну (печатный проводник на самой плате).
  • Из разведённых выводов тут присутствуют только 3 GPIO, но не стоит видеть в этом одни минусы. Если нужно будет управлять одним реле или получать данные с датчика температуры, вам не понадобятся все выводы МК, достаточно будет лишь пары. К тому же, существуют платы и шилды с возможностью простой коммутации именно к этой версии МК. Например такая:

ESP-03

  • Здесь появляется керамическая антенна. Она считается немного эффективней своего печатного собрата.
  • Также на плате разведены все доступные выводы GPIO. В этой статье описана разница между типами антенн для микроконтроллеров ESP8266.

ESP-07

  • В этой версии в глаза сразу бросается металлический экран (который перед этим появляется на ESP-06).
  • На борту керамическая антенна и разъём для внешней антенны.

ESP-12

Разные варианты микроконтроллера ESP-12. Источник

В свою очередь, существует несколько вариантов этой версии: ESP-12S, ESP-12F, ESP-12E. Вторая и третья версии имеют на торце дополнительно 6 разведённых контактов.

Платы

WeMos D1 mini

Плата WeMos D1 mini. Источник

  • Имеет распайку девяти GPIO-контактов.
  • На плате имеется небезызвестный мост CH34x (такие часто ставят на клоны Arduino).
  • Установлен МК с 4 Мбайт flash-памяти.
  • Недостаток для некоторых — придётся самому паять контакты на плату (идут в комплекте).
  • Конструкционно совместима с различными выпускаемыми шилдами реле/датчиками.

NodeMCU v0.9/v1

Плата NodeMCU v0.9. Источник

Первое поколение плат серии NodeMCU. На ней распаяны все 11 GPIO-портов. Некоторые из них обладают дополнительными функциями (UART, I2C, SPI, PWM, ADC). Хотя на плате впаяны контакты, она занимает всю ширину беспаечной макетной платы, что затрудняет работу на ней. МК имеет 4 Мбайт flash-памяти. Также имеется мост CH340.

NodeMCU v3

Плата NodeMCU v3. Источник

Финальная версия платы этой серии. Существует и v2 «Amica», которая меньше по габаритам. v3 носит название «LoLin» и отличается от предыдущей версии только размерами и незначительными деталями (например дополнительной распайкой шины питания). Кроме традиционного моста CH340/CH341 на платы ставят чип CP2102, так что внимательней с выбором драйвера на них.

Характеристики

Все эти (и не только эти) платы выполнены на чипсете микроконтроллера ESP8266EX, а следовательно, характеристики у них одинаковые:

  • Протоколы: 802.11 b/g/n/e/i.
  • Диапазон частот: 2.4 ГГц – 2.5 ГГц.
  • Процессорное ядро: Tensilica L106 32 разряда.
  • Диапазон напряжений питания: 2.5 В – 3.6 В.
  • Среднее потребление тока: 80 мA.
  • Режимы WiFi: Station/SoftAP/SoftAP+Station.
  • Безопасность: WPA/WPA2.
  • Шифрование: WEP/TKIP/AES.
  • Обновление прошивки: через UART, по радиоканалу (OTA — Other The Air).
  • Сетевые протоколы: IPv4, TCP/UDP/HTTP/FTP.
  • Поддержка WiFi Direct (P2P), P2P Discovery, P2P GO (Group Owner) mode, GC (Group Client) mode, P2P Power Management.
  • Встроенные аппаратные ускорители: CCMP (CBC-MAC, режим счётчика), TKIP (MIC, RC4), WAPI (SMS4), WEP (RC4), CRC.
  • Поддержка LUA-скриптов.

Как работать с микроконтроллером ESP8266?

Есть два способа работы с ним:

  • управление через AT-команды и автономная работа со своей прошивкой. В первом случае ESP8266 работает только в паре с другими МК, во втором — может работать независимо (хотя никто не запрещает присоединить её к другому МК).
  • «Из коробки» МК поставляется с прошивкой для работы через AT-команды. Для этого ESP8266 подключается к любому другому МК по UART-интерфейсу. Для демонстрации работы AT-команд ESP8266 можно подключить к компьютеру через USB-UART переходник и запустить монитор последовательного порта (например из Arduino IDE). Про то, как работать с этими командами, можно прочитать в этой статье.

Прошивка

В большинстве случаев намного удобней прошивать МК и работать с ним со своей прошивкой. Однако тут тоже есть свои нюансы. Вот 3 варианта событий:

  • У вас «голый» ESP8266, например ESP-01. Вам потребуется USB-UART переходник, который нужно подключить к МК. Этот переходник обязательно должен быть на 3-вольтовой логике, т. к. иначе можно легко отправить ваш МК в кибер-Вальхаллу. Про процесс подключения можно прочитать здесь.
  • Второй случай идентичен первому, кроме того, что вместо переходника можно использовать любую плату Arduino. Достаточно специальным образом подключить ESP8266 к UART-контактам Arduino, а её саму «отключить», замкнув контакт аппаратного сброса (RESET) на землю. Естественно, питать ESP8266 нужно будет от шины питания 3.3 В. В этом случае в качестве переходника USB-UART будет выступать мост (чаще всего CH340) на самой плате Arduino. Этот процесс также описан в статье выше.
  • Лучший вариант — это плата с USB-UART мостом на борту (как NodeMCU, WeMos и прочие). В этом случае ничего дополнительного делать не нужно — просто подключайте плату через USB.

В чём прошивается?

Например NodeMCU Flasher (которая подходит не только для плат NodeMCU) или ESPTool (необходим Python).

Однако в этой статье работа с МК и процесс прошивки будут рассмотрены в Arduino IDE.

Изначально среда Arduino IDE не предназначена для работы с МК серии ESP. Чтобы это исправить, идём в Файл → Настройки и в поле Дополнительные ссылки для Менеджера плат вставляем эту ссылку:

Потом открываем Инструменты → Плата → Менеджер плат и в открывшемся списке в самом низу находим плату «esp8266 by ESP8266 Community» (если с этим возникли трудности — используем поиск вверху окна). Устанавливаем последнюю версию платы (около 150 Мбайт).

29–30 июля, Онлайн, Беcплатно

После установки в списке плат появится немалое количество плат. Если не нашли свою плату или не знаете её названия — выбирайте Generic ESP8266 Module. Теперь можно выбрать свой МК в списке COM-портов.

У ESP8266 две скорости передачи: основная — её вы указываете при инициализации последовательного порта, и скорость, на которой передаётся отладочная информация. Она передаётся сразу после подачи питания на МК. Обычно это скорости 115200 бод и 74800 бод 0 соответственно.

Основы

Если вы не владеете базовыми знаниями работы с платформой Arduino, наверстать упущенное можно в нашей статье про основы использования Arduino.

После скачивания платы ESP8266 с помощью менеджера, в примерах появится большое количество скетчей. Рассмотрим один из них (Файл → Примеры → ESP8266WebServer → HelloServer):

Что делает этот скетч? МК подключается к вашей WiFi-сети и запускает сервер. В монитор последовательного порта выведется локальный IP-адрес (к примеру, 192.168.0.105 ). Вбиваем этот IP в адресную строку браузера, после чего в нём должна отобразиться строка «Привет от ESP8266!». Таким же образом можно проверить адрес /inline .

Ознакомиться с API МК можно в их официальном репозитории.

Распределение памяти

Внешняя память распределена на следующие разделы:

  • скетчи (память для прошивки);
  • файловая система SPIFFS;
  • OTA-Update (прошивка, переданная «по воздуху»);
  • EEPROM (да-да, её у МК тоже нет, поэтому она имитируется на flash-памяти);
  • конфигурация WiFi.

Файловая система SPIFFS

Один из плюсов внешней flash-памяти — файловая система. В неё можно с лёгкостью записать файлы (веб-странички, медиа-файлы и прочее) на микроконтроллеры ESP8266. На аппаратном уровне это можно было бы реализовать подключив к МК модуль SD-карт. Однако это решение требует свободных портов.

Размер файловой системы (от 32 Кбайт до 15 Мбайт) зависит от самого объема flash-памяти и от конфигурации, выставленной в Инстурменты → Flash size. Например, конфигурация 4M (2M SPIFFS) предназначена для МК с общим объёмом flash-памяти 4 Мбайт, 2 Мбайт из которых будут выделены под файловую систему.

SPIFFS не работает с папками — она содержит только список файлов. Соответственно, если загрузить в неё папку style, в которой будет файл header.css, то в файловую систему систему запишется файл с именем /style/header.css. Об этом стоит помнить, потому что длина файлового имени не должна превышать 31 символ (читается 32, но символ с кодом 0 отведён под завершение строки).

Для загрузки файлов потребуется инструмент ESP8266FS, интегрирующийся в Arduino IDE. Инструкция по установке:

  1. Качаем инструмент по ссылке выше.
  2. В папке Arduino IDE создайте папку tools (если её там ещё нет).
  3. В папку tools распакуйте скачанный архив. Должно быть так:
    …/Arduino/tools/ESP8266FS/tool/esp8266fs.jar.
  4. После запуска среды в папке скетча (Скетч → Показать папку скетча) нужно создать папку data. Её содержимое будет загружаться в файловую систему.
  5. После кликаем в Инструменты → ESP8266 Sketch Data Upload, чтобы загрузить данные в файловую систему. После загрузки в панели статуса высветится «SPIFFS Image Uploaded». Перед процессом загрузки в файловую систему обратите внимание: если открыт монитор последовательного порта — закрываем его.

Как работать с SPIFFS и файлами в ней, можно узнать в этой статье.

Энергонезависимая память EEPROM

Работа с внешней памятью немного отличается от стандартной.

  • Перед считыванием или записью данных нужно инициализировать EEPROM, указав при этом выделяемую под неё память (от 4 до 4096 байт) функцией EEPROM.begin(size) .
  • Привычная функция EEPROM.write(addr, value) записывает данные не на саму энергонезависимую память, а в оперативную.
  • Чтобы внесённые данные записались в память, нужна функция EEPROM.commit() (или же EEPROM.end() , чтобы заодно очистить данные из оперативной памяти).
  • Метод EEPROM.read(addr) возвращает байт из памяти по адресу.

Прошивка «по воздуху» OTA-Update

Для этого вам потребуется установленный Python.

После этого достаточно в метод loop() добавить строку: ArduinoOTA.handle() .

Прошиваем МК по проводу. В случае успешной загрузки в списке портов появится новый хост с именем «esp8266-xxxxxx», где esp8266 — указанное выше имя хоста, а xxxxxx — локальный IP-адрес МК. Выбираем его.

Теперь микроконтроллер ESP8266 можно прошивать «по воздуху».

Wi-fi модули esp8266 и avr микроконтроллер

Предлагаю сегодня познакомиться с новинкой радиолюбительской техники — WiFi модулем ESP8266. Он представляет собой что-то наподобие уже давно всем знакомого NRF24L01, но по размерам чуть меньше и немного другой функционал. WiFi модуль имеет как свои неоспоримые достоинства, так и некоторые недостатки, последнее как раз скорее всего отчасти связано с тем, что это новинка и разработчики весьма странным способом подошли к этому — информация распространяется очень туго (документация дает лишь общие представления о модулях, не раскрывая их полный функционал). Ну что же, будем ждать снисхождения компании предоставившей «железо».

Особо стоит отметить стоимость модуля: на текущий момент она составляет 3-4$ (например на AliExpress)


Справа NRF, слева ESP модуль.

Что конкретнее представляет собой эти WiFi модули? На плате расположена сама микросхема WiFi, помимо того в этом же корпусе имеется микроконтроллер 8051, который можно программировать, обходясь без отдельного микроконтроллера, но об этом в другой раз, далее на плате расположена микросхема EEPROM памяти, необходимая для сохранения настроек, также на плате модуля имеется вся минимально необходимая обвязка — кварцевый резонатор, конденсаторы, бонусом индикация светодиодами напряжения питания и передачи (приема) информации. Модуль реализует интерфейс только UART, хотя возможности микросхемы WiFi позволяют использовать и другие интерфейсы. Печатным проводником на плате сделана антенна WiFi необходимой конфигурации. Самая большая деталь — это разъем 4 х 2 штырька.

Распиновка WiFi модуля ESP8266:

Для подключения в схему этого модуль нужно подключить питание на VCC и GND, на TX и RX соответствующие вывода UART принимающего устройства (помните, что RX соединяется с TX, а TX с RX) и CH_PD (типа чип энэбл, без него все горит, но ничего не работает) на плюс питания.

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

  • напряжение питания 3,3 В (причем сам то модуль терпит 5 В, но выводы ввода — вывода откажутся работать скорее всего)
  • ток до 215 мА в режиме передачи
  • ток до 62 мА во время приема
  • 802.11 b/g/n протокол
  • +20.5dBm мощность в режиме 802.11b
  • SDIO (два вывода присутствуют на плате модуля, но ими особо нельзя пользоваться кроме как для служебных операций)
  • режимы сохранения энергии и сна для экономии энергии
  • встроенный микроконтроллер
  • управление по средством AT-команд
  • температура функционирования от -40 до +125 градусов Цельсия
  • максимальная дистанция связи 100 метров

Как было указано, модулем можно управлять посредством AT-команд, однако их полный список не известен, самое необходимое представлено ниже:

Перезагрузка модуля, после введения команды выдаст лог перезагрузки в конце и ответ ready

Для одного соединения (+CIPMUX=0):
AT+CIPSTART=,,
Для мульти соединения (+CIPMUX=1):
AT+CIPSTART=.

Установить режим передачи:

= 0 — not data mode (сервер может отправлять данные клиенту и может принимать данные от клиента)
= 1 — data mode (сервер не может отправлять данные клиенту, но может принимать данные от клиента)

Для одного соединения (+CIPMUX=0):
AT+CIPSEND=
Для мульти соединения (+CIPMUX=1):
AT+CIPSTART=,

Для одного соединения (+CIPMUX=0):
AT+CIPCLOSE
Для мульти соединения (+CIPMUX=1):
AT+CIPCLOSE=

Поднять порт. — режим скрытности (0 — скрыт, 1 — открыт), — порт

Данные принимаются с преамбулой +IPD, после которой следует информация о принятых данных, а потом сама информация

Для одного соединения (+CIPMUX=0): +IPD,:

Для мульти соединения (+CIPMUX=1): +IPD.

Пример: +IPD,0,1:x — принят 1 байт информации

Как вводятся команды:

  • Выполнение команды: .
  • Просмотреть статус по команде: ?
  • Выполнить команду с заданием параметров: =

При покупке модуля можно проверить версию прошивки модуля через команду AT+GMR. Версию прошивки можно обновить при помощи отдельного софта или при версии прошивки от 0.92 это можно делать только при помощи команды AT+CIUPDATE. При этом модуль нужно соединить с роутером для доступа к интернету. Прошивка и программа для прошивки модуля до версии 0,92 будет предоставлена в конце статьи. Для прошивки через софт необходимо вывод GPIO0 подсоединить к плюсу питания. Это включит режим обновления модуля. Далее выбрать файл прошивки модуля в программе и соединиться с модулем WiFi, обновление прошивки пойдет автоматически после соединения. После обновления последующие обновления прошивки возможны будут только через интернет.

Теперь, зная организацию команд модуля WiFi, на его основе можно организовать передачу информации по средством беспроводной связи, в чем, я считаю, их основное назначение. Для этого мы будем использовать микроконтроллер AVR Atmega8 в качестве устройства, которое управляется через беспроводной модуль. Схема устройства:

Суть схемы будет заключаться в следующем. Термодатчиком DS18B20 измеряется температура, обрабатывается микроконтроллером и передается по WiFi сети с небольшим промежутком по времени. При этом контроллер следит за получаемыми данными по WiFi, при получении символа ‘а’ загорится светодиод LED1, при получении символа ‘b’ светодиод потухнет. Схема больше демонстративная, чем полезная, хотя ее можно использовать для удаленного контроля температуры, например, на улице, необходимо только написать софт для компьютера или телефона. Модуль ESP8266 требует питания напряжением 3,3 вольта, поэтому вся схема запитывается от стабилизатора AMS1117 на 3,3 вольта. Микроконтроллер тактируется от внешнего кварцевого генератора на 16 МГц с обвязкой конденсаторами на 18 пФ. Резистор R1 подтягивает ножку микроконтроллера reset к плюсу питания для исключения самопроизвольного перазапуска микроконтроллера при наличии каких-либо помех. Резистор R2 выполняет функцию ограничения тока через светодиод, чтобы не сгорел ни он, ни вывод МК. Эту цепочку можно заменить, например, на цепь реле и использовать схему для дистанционного управления. Резистор R3 необходим для работы термометра по шине 1-Wire. Схему нужно питать от достаточно мощного источника, так как пиковое потребления WiFi модуля может доходить до 300 мА. В этом, наверное, и кроется главный недостаток модуля — большое потребление. Такая схема от батареек долго может не проработать. При подаче питания на схему во время ее инициализации светодиод должен 5 раз моргнуть, что будет свидетельствовать об успешном открытии порта и предыдущих операциях (после включения схемы по нажатию кнопки ресет светодиод может моргать по 2 раза — это нормально).

Более подробно работу схемы можно посмотреть в исходном коде прошивки микроконтроллера на языке Си, который будет представлена ниже.

Схема собиралась и отлаживалась на макетной плате, термометр DS18B20 используется в формате «зонда» с металлическим колпачком:

Для «общения» с такой схемой можно использовать как стандартный WiFi контроллер компьютера, так и построить схему приемопередатчика при помощи USB-UART преобразователя и еще одного модуля ESP8266:

К слову о переходниках и терминалах, эти модули достаточно капризны к ним, хорошо работают с преобразователем на CP2303 и отказываются адекватно работать с преобразователями, построенными на микроконтроллерах (самодельных), терминал лучше всего подходит Termite (там в настройках есть автоматическое добавление символа возвращения каретки, без чего также адекватно модуль не будет работать с терминалом). А вот просто при подключении к микроконтроллеру модули работают без нареканий.

Итак, для обмена информацией с микроконтроллером по WiFi будем использовать второй модуль, подключенный к компьютеру и терминал Termite. Перед началом работы со схемой каждый модуль нужно подключить через USB-UART и проделать несколько операций — настроить режим работы, создать точку подключения и подключиться к точке, к которой в последующем будем подключаться для обмена информацией, AT командой узнать IP адрес модулей WiFi (необходимо будет для подключения модулей друг к другу и обмена информацией). Все эти настройки сохранятся и будут автоматически применяться при каждом включении модуля. Таким образом можно сэкономить немного памяти микроконтроллера на командах подготовки модуля к работе.

Модули работают в совмещенном режиме, то есть могут быть как клиентом, так и точкой доступа. Если по настройкам модуль уже работает в этом режиме (AT+CWMODE=3), то при повторной попытке настроить в этот же режим модуль выдаст ответ «no change». Чтобы настройки вступили в силу нужно перезапустить модуль или ввести команду AT+RST.

После аналогичных настроек второго модуля в списке доступных точек появится наша точка под названием «ATmega»:

В нашем случае схема WiFi будет такой — модуль с микроконтроллером будет подключаться к домашнему роутеру (фактически микроконтроллер в таком случае может выходить в интернет, если это прописать), далее поднимать порт и действовать по алгоритму. На другой стороне модуль также подключим к роутеру и соединимся с микроконтроллером через TCP (как показано на скриншоте, для этого нужно настроить режим передачи и количество соединений командами AT+CIPMODE и AT+CIPMUX соответственно и ввести команду на соединение с сервером AT+CIPSTART). Все! Если подключиться к точке доступа (WiFi точка только, к серверу нужно переподключаться каждый раз, ровно также каждый раз сервер нужно поднимать на другом конце каждый раз при включении питания) и перезапустить модуль, то надобности самостоятельно еще раз присоединяться нет, это тоже сохраняется в памяти и автоматически подключается при доступности при включении модуля. Удобно, однако.

Теперь данные о температуре автоматически должны пойти на компьютер, а по командам с компьютера можно управлять светодиодом. Для удобства можно написать софт под Windows и мониторить температуру по WiFi.

Командой AT+CIPSEND мы отправляем данные, при приеме данных появится сообщение «+IPD. » после двоеточия идет наша полезная (передаваемая) информация, которую нужно использовать.

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

Это один из вариантов передачи информации между модулями WiFi, можно их подключать также без роутера напрямую друг к другу, а можно к модулю подключаться через стандартный WIFi компьютера и работать уже через него.

Функционал задействован самый очевидный этих модулей, кто знает, что там еще разработчики приготовили для нас!

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

В заключении хочется отметить, что это действительно революция интернет вещей! При цене модуля в несколько зеленых единиц, мы имеем полноценный Wi-Fi модуль с огромными возможностями (которые пока что ограничивают разработчики сего чуда), область применения просто не ограничена — везде, где позволит фантазия, а учитывая тот факт, что в этом модуле уже присутствует микроконтроллер, отпадает надобность в использовании внешнего микроконтроллера, однако который нужно как-то программировать. Так что, друзья, вот такое дело — даем Wi-Fi каждой розетке!

К статье прилагается прошивка для микроконтроллера, исходный код в программе AVRStudio4, документация на микросхему модуля Wi-Fi, программа для обновления прошивки модуля и прошивка модуля версии 0,92 (архив разбит на 3 части, потому что общий размер его слишком велик, чтобы приложить к статье), а также видео, демонстрирующее работу схемы (на видео управляемая плата, соединенная по WiFi с управляющим модулем, управляемая плата периодически передает информацию о температуре, при погружении термометра в воду на видео видно, что температура начинает падать, далее если передать символ «а» от управляющего модуля, на управляемой плате загорится светодиод, а если символ «b», то он потухнет).

На этом, кажется, все. Не забывайте писать свои замечания и пожелания, при наличии внимания к этой теме будем развивать идеи для новых.

ESP8266 Урок 1 Первое знакомство с контроллером ESP8266

Наконец-то, по многочисленным просьбам мы начинаем знакомство, а впоследствии, как я думаю, и полноценную работу по программированию микроконтроллера ESP8266.

Данный контроллер является собственностью китайского производителя Espressif, и основную свою популярность среди программистов он снискал благодаря наличию беспроводного интерфейса Wi-Fi. Также немаловажным фактором является его очень низкая стоимость и также наличие на сегодняшний момент многочисленной документации, а также программного обеспечения, позволяющего самостоятельно писать для него программы на различных языках. О сфере использования данного контроллера в различных устройствах я вообще даже боюсь и говорить. Она очень многообразна: интернет вещей, сбор информации с различных датчиков и приборов, передача на другие устройства, где нет возможности протянуть к ним провода и т.д.

Поставляется данный контроллер в основном в виде различных модулей, многообразие которых не может не удивлять.

Вот это лишь некоторая часть из них

У меня также имеется в наличии ряд таких модулей, так как мне также небезразлично развитие данных технологий, ну и, повлияли также и ваши многочисленные просьбы.

Также я много думал о том, с чего начать рубрику по данному контроллеру. Вообще, честно говоря, хотелось приступить сразу к написанию программ и их прошивке в модуль. Но, так как в данных модулях сразу имеется определённое прошитое ПО, позволяющее уже с ним работать по интерфейсу UART посредством AT-команд, и, так как просьб по работе с AT-командами данного контроллера было тоже немалое количество, то начнём мы именно с них. А дальше уже покажет обстановка.

Прежде чем приступить к практической работе с модулем, мы познакомимся поначалу с контроллером, а затем уже будем знакомиться с модулями, а вернее с самым простым из них – ESP-01.

Практически во всех модулях, построенных на контроллере ESP8266 имеется в наличии внешняя микросхема FLASH-памяти, так как у контроллера, к сожалению, внутренней FLASH-памяти на борту нет. Но зато в этом есть и плюсы, позволяющие установить данную память различного размера.

Поначалу с архитектурой контроллера ESP8266 мы познакомимся очень кратко, так как сразу со всеми его многочисленными регистрами памяти мы работать не будем, и поэтому если мы их изучим сразу, то когда уже приступим к их использованию на практике, мы всё непременно забудем.

Основные технические характеристики контроллера ESP8266 (а точнее ESP8266EX), касающиеся передачи данных по Wi-FI:

  1. поддержка протокола 802.11 b/g/n,
  2. поддержка 802.11n (2.4 GHz), до 72.2 Mbps,
  3. дефрагментация,
  4. 2 виртуальных передатчика Wi-Fi,
  5. поддержка шифрования WPA/WPA2 WEP/TKIP/AES,
  6. выходная мощность +20 дБм в режиме 802.11b,
  7. WiFi режим – STA (станция), программная точка доступа, программная точка доступа + STA (станция).

Это лишь некоторые самые интересные характеристики по передаче данных.

Также приведу некоторые остальные характеристики:

  1. встроенный MCU 32-бит с низким энергопотреблением,
  2. встроенные блоки ФАПЧ и управления мощностью,
  3. встроенный стек протоколов TCP/IP с поддержкой протоколов передачи данных IPv4, TCP/UDP/HTTP
  4. интерфейсы SDIO 2.0, SPI, HSPI UART, I2C, I2S, IRDA, PWM, GPIO,
  5. поддержка различных режимов пониженного энергопотребления,
  6. диапазон рабочих температур –40°C

125°C,

  • загрузка (а также и выгрузка) ПО по интерфейсу UART,
  • питание 2.5V

    3.6V (стабильная работа контроллера, как подтвердила практика, наблюдается при стабилизированном напряжении 3.3V).

    Токи потребления контроллером в активном режиме при определённых режимах и скоростях передачи данных

    А это токи потребления контроллером в различных режимах пониженного энергопотребления, а также что остаётся в данных режимах в работе

    Находится микроконтроллер ESP8266 в 32-пинном QFN корпусе.

    Вот основное назначение ножек (возможен REMAP)

    А вот это блок-схема

    То, что там нарисован FLASH вовсе не свидетельствует о его наличии, поэтому он него идёт соединительная линия к интерфейсам, подчёркивающая его подключение через внешний интерфейс.

    Также об этом свидетельствует и вот этот пункт, в котором обозначены параметры подключаемого внешнего FLASH

    Оперативной памяти в контроллере около 50 килобайт.

    Процессор в контроллер ESP8266 встроен Xtensa L106 от компании Tensilica. Работает он на частоте до 80 мегагерц, возможен также негарантированный разгон до 160 МГц.

    Вообщем, это пока всё, что я хотел сказать вам о контроллере ESP8266. В дальнейших уроках мы уже начнём знакомство с отдельными модулями, научимся управлять их работой сначала с помощью команд AT, а затем уже напишем свои прошивки, позволяющие работать с модулем самостоятельно и более гибко, а также впоследствии мы обязательно подключим данный контроллер к другому контроллеру общего назначения, в частности к STM32, к которому мы с вами уже так привыкли, что позволит ещё более профессионально организовать процессы передачи данных между устройствами без использования проводов.

    Всем спасибо за внимание!

    Различные модули ЕSP8266 можно приобрести здесь Модули ЕSP8266

    Смотреть ВИДЕОУРОК (нажмите на картинку)

    Передача Email с использованием микроконтроллера AVR ATmega16 и ESP8266

    ATmega16 (семейство AVR) является дешевым 8 битным микроконтроллером и имеет достаточно большое число интерфейсов ввода-вывода общего назначения. Он поддерживает все часто используемые в настоящее время протоколы связи такие как UART, USART, SPI и I2C. Он достаточно широко применяется в робототехнике, автомобилестроении и автоматизированных производствах из-за своей простоты и универсальности.

    Но, к сожалению, ATmega16 не поддерживает никакие беспроводные протоколы связи, такие как, например, Wi-Fi и Bluetooth. Это обстоятельство существенно ограничивает его применение в такой сфере как интернет вещей (IoT), которая считается очень перспективной в современных реалиях. Чтобы преодолеть это ограничение к микроконтроллеру ATmega16 необходимо подключить устройство, которое поддерживало бы беспроводные протоколы связи. Таких устройств сейчас существует много, но одним из наиболее широко используемых является ESP8266.

    В этой статье мы рассмотрим подключение микроконтроллера AVR ATmega16 к устройству управления многосторонней связью (NodeMCU) ESP8266 чтобы при помощи беспроводной связи, обеспечиваемой данным устройством, получить доступ в интернет. ESP8266 представляет собой WiFi модуль с поддержкой различных протоколов связи и множеством доступных библиотек.

    Мы рассмотрим передачу email (электронной почты) с использованием ESP8266 и микроконтроллера ATmega16. ATmega16 будет давать команды ESP8266, которое будет пересылать email выбранному корреспонденту. ATmega16 и ESP8266 будут взаимодействовать через универсальный асинхронный приемопередатчик (UART), хотя можно использовать и другие доступные ATmega16 протоколы связи, такие как SPI и I2C.

    Некоторые особенности поставленной задачи

    Необходимо помнить о том, что микроконтроллер ATmega16 работает от напряжения 5В, а микросхема ESP8266 – от напряжения 3.3В. То есть логические уровни между этими двумя устройствами отличаются, что может вызвать «недопонимание» между ними и даже потерю данных если необходимые логические уровни не будут поддерживаться.

    Но, тем не менее, если внимательно изучить технические характеристики (datasheet) микросхемы ESP8266, можно обнаружить что она терпимо (толерантно) относится к напряжению до 6В на своих контактах, поэтому ESP8266 сможет «понимать» логический уровень напряжения 5В. Также в даташите на ATmega16 указано, что уровень напряжения больший 2В он воспринимает как логическую единицу и, поскольку, ESP8266 оперирует напряжением 3.3В, то сигнал такого уровня будет восприниматься микроконтроллером как логическая «1». Поэтому взаимосвязь между этими устройствами можно организовать без переключения логических уровней напряжения.

    Необходимые компоненты

    1. Микроконтроллер ATmega16 (купить на AliExpress).
    2. Программатор AVR-ISP (купить на AliExpress), USBASP (купить на AliExpress) или другой подобный.
    3. Устройство управления многосторонней связью (NodeMCU) ESP8266 (купить на AliExpress).
    4. Кварцевый генератор на 16 МГц (купить на AliExpress).
    5. Конденсатор 100 нФ (2 шт.) (купить на AliExpress).
    6. Конденсатор 22 пФ (2 шт.) (купить на AliExpress).
    7. Светодиод (купить на AliExpress).
    8. Кнопка.
    9. Макетная плата.
    10. Соединительные провода.
    11. Источник питания с напряжением 5 Вольт.

    Схема подключения ESP8266 к микроконтроллеру ATmega16

    Схема устройства приведена на следующем рисунке.

    Конфигурирование SMTP2GO сервера для передачи Email

    Перед тем как начать программировать микроконтроллер нам нужно сконфигурировать SMTP сервер чтобы осуществлять передачу Email (электронной почты) при помощи ESP8266. Для выполнения этой задачи можно использовать сайт smtp2go.com.

    Для начала нам будет необходимо имя пользователя и пароль для SMTP. Для их получения выполните следующие шаги:

    Шаг 1: Кликните на “Try SMTP2GO Free” чтобы зарегистрировать бесплатный аккаунт.

    Шаг 2. Откроется окно, в котором вы должны будете ввести имя, email и пароль.

    Шаг 3. После заполнения всех этих полей и нажатия кнопки «sign up» вам на указанную электронную почту придет запрос на активацию вашего аккаунта. Кликните на полученную ссылку для активации вашего аккаунта и затем войдите на smtp2go.com используя ваш email и пароль.

    Шаг 4. После того как вы войдете на сайт со своими учетными данными сразу же после этого вам будет предоставлен ваш SMTP Username (имя пользователя) и ваш SMTP Password (пароль). Запомните или запишите где-нибудь эти данные. После этого нажмите на ‘finish’.

    Шаг 5. Затем в левом меню кликните сначала на “Settings”, а потом на “Users”. В этих разделах вы можете посмотреть информацию про ваш SMTP Server и номер порта (PORT number). К примеру, как показано на следующем рисунке.

    После этого необходимо декодировать имя пользователя (Email) и пароль из формата ASCII в формат base64. Для этой цели можно использовать сайт BASE64ENCODE. Конвертированные имя пользователя и пароль сохраните чтобы можно было ими пользоваться в дальнейшем.

    После выполнения всех этих действий можно приступить к программированию микроконтроллера ATmega16 и модуля беспроводной связи ESP8266.

    Программирование микроконтроллера AVR ATmega16 и ESP8266

    Необходимы будут две программы: одна для ATmega16, который будет действовать как передатчик команд, и вторая для ESP8266, который будет работать как приемник команд. Обе программы приведены в конце данной статьи. Для загрузки программы в ATmega16 можно использовать программатор USBasp, а для загрузки программы в модуль ESP8266 — Arduino IDE.

    Также к микроконтроллеру ATmega16 подключим одну кнопку – при ее нажатии микроконтроллер передает команды в ESP8266, а ESP8266 в соответствии с ними осуществляет передачу электронной почты. Светодиод будет показывать статус (состояние) процесса передачи данных.

    Исходный код программы для ATmega16 с пояснениями

    Начнем с задания тактовой частоты микроконтроллера и подключения всех необходимых библиотек. Все используемые библиотеки находятся в Atmel Studio Package.

    Wi-Fi модули ESP8266 и AVR микроконтроллер

    Предлагаю сегодня познакомиться с новинкой радиолюбительской техники — WiFi модулем ESP8266. Он представляет собой что-то наподобие уже давно всем знакомого NRF24L01, но по размерам чуть меньше и немного другой функционал. WiFi модуль имеет как свои неоспоримые достоинства, так и некоторые недостатки, последнее как раз скорее всего отчасти связано с тем, что это новинка и разработчики весьма странным способом подошли к этому — информация распространяется очень туго (документация дает лишь общие представления о модулях, не раскрывая их полный функционал). Ну что же, будем ждать снисхождения компании предоставившей «железо».

    Особо стоит отметить стоимость модуля: на текущий момент она составляет 3-4$ (например на AliExpress)


    Справа NRF, слева ESP модуль.

    Что конкретнее представляет собой эти WiFi модули? На плате расположена сама микросхема WiFi, помимо того в этом же корпусе имеется микроконтроллер 8051, который можно программировать, обходясь без отдельного микроконтроллера, но об этом в другой раз, далее на плате расположена микросхема EEPROM памяти, необходимая для сохранения настроек, также на плате модуля имеется вся минимально необходимая обвязка — кварцевый резонатор, конденсаторы, бонусом индикация светодиодами напряжения питания и передачи (приема) информации. Модуль реализует интерфейс только UART, хотя возможности микросхемы WiFi позволяют использовать и другие интерфейсы. Печатным проводником на плате сделана антенна WiFi необходимой конфигурации. Самая большая деталь — это разъем 4 х 2 штырька.

    Распиновка WiFi модуля ESP8266:

    Для подключения в схему этого модуль нужно подключить питание на VCC и GND, на TX и RX соответствующие вывода UART принимающего устройства (помните, что RX соединяется с TX, а TX с RX) и CH_PD (типа чип энэбл, без него все горит, но ничего не работает) на плюс питания.

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

    • напряжение питания 3,3 В (причем сам то модуль терпит 5 В, но выводы ввода — вывода откажутся работать скорее всего)
    • ток до 215 мА в режиме передачи
    • ток до 62 мА во время приема
    • 802.11 b/g/n протокол
    • +20.5dBm мощность в режиме 802.11b
    • SDIO (два вывода присутствуют на плате модуля, но ими особо нельзя пользоваться кроме как для служебных операций)
    • режимы сохранения энергии и сна для экономии энергии
    • встроенный микроконтроллер
    • управление по средством AT-команд
    • температура функционирования от -40 до +125 градусов Цельсия
    • максимальная дистанция связи 100 метров

    Как было указано, модулем можно управлять посредством AT-команд, однако их полный список не известен, самое необходимое представлено ниже:

    Перезагрузка модуля, после введения команды выдаст лог перезагрузки в конце и ответ ready

    Для одного соединения (+CIPMUX=0):
    AT+CIPSTART= , ,
    Для мульти соединения (+CIPMUX=1):
    AT+CIPSTART= , , ,

    Установить режим передачи:

    = 0 — not data mode (сервер может отправлять данные клиенту и может принимать данные от клиента)
    = 1 — data mode (сервер не может отправлять данные клиенту, но может принимать данные от клиента)

    Для одного соединения (+CIPMUX=0):
    AT+CIPSEND=
    Для мульти соединения (+CIPMUX=1):
    AT+CIPSTART= ,

    Для одного соединения (+CIPMUX=0):
    AT+CIPCLOSE
    Для мульти соединения (+CIPMUX=1):
    AT+CIPCLOSE=

    Поднять порт. — режим скрытности (0 — скрыт, 1 — открыт), — порт

    Данные принимаются с преамбулой +IPD, после которой следует информация о принятых данных, а потом сама информация

    Для одного соединения (+CIPMUX=0): +IPD, :

    Для мульти соединения (+CIPMUX=1): +IPD, , :

    Пример: +IPD,0,1:x — принят 1 байт информации

    Как вводятся команды:

    • Выполнение команды: .
    • Просмотреть статус по команде: ?
    • Выполнить команду с заданием параметров: =

    При покупке модуля можно проверить версию прошивки модуля через команду AT+GMR. Версию прошивки можно обновить при помощи отдельного софта или при версии прошивки от 0.92 это можно делать только при помощи команды AT+CIUPDATE. При этом модуль нужно соединить с роутером для доступа к интернету. Прошивка и программа для прошивки модуля до версии 0,92 будет предоставлена в конце статьи. Для прошивки через софт необходимо вывод GPIO0 подсоединить к плюсу питания. Это включит режим обновления модуля. Далее выбрать файл прошивки модуля в программе и соединиться с модулем WiFi, обновление прошивки пойдет автоматически после соединения. После обновления последующие обновления прошивки возможны будут только через интернет.

    Теперь, зная организацию команд модуля WiFi, на его основе можно организовать передачу информации по средством беспроводной связи, в чем, я считаю, их основное назначение. Для этого мы будем использовать микроконтроллер AVR Atmega8 в качестве устройства, которое управляется через беспроводной модуль. Схема устройства:

    Суть схемы будет заключаться в следующем. Термодатчиком DS18B20 измеряется температура, обрабатывается микроконтроллером и передается по WiFi сети с небольшим промежутком по времени. При этом контроллер следит за получаемыми данными по WiFi, при получении символа ‘а’ загорится светодиод LED1, при получении символа ‘b’ светодиод потухнет. Схема больше демонстративная, чем полезная, хотя ее можно использовать для удаленного контроля температуры, например, на улице, необходимо только написать софт для компьютера или телефона. Модуль ESP8266 требует питания напряжением 3,3 вольта, поэтому вся схема запитывается от стабилизатора AMS1117 на 3,3 вольта. Микроконтроллер тактируется от внешнего кварцевого генератора на 16 МГц с обвязкой конденсаторами на 18 пФ. Резистор R1 подтягивает ножку микроконтроллера reset к плюсу питания для исключения самопроизвольного перазапуска микроконтроллера при наличии каких-либо помех. Резистор R2 выполняет функцию ограничения тока через светодиод, чтобы не сгорел ни он, ни вывод МК. Эту цепочку можно заменить, например, на цепь реле и использовать схему для дистанционного управления. Резистор R3 необходим для работы термометра по шине 1-Wire. Схему нужно питать от достаточно мощного источника, так как пиковое потребления WiFi модуля может доходить до 300 мА. В этом, наверное, и кроется главный недостаток модуля — большое потребление. Такая схема от батареек долго может не проработать. При подаче питания на схему во время ее инициализации светодиод должен 5 раз моргнуть, что будет свидетельствовать об успешном открытии порта и предыдущих операциях (после включения схемы по нажатию кнопки ресет светодиод может моргать по 2 раза — это нормально).

    Более подробно работу схемы можно посмотреть в исходном коде прошивки микроконтроллера на языке Си, который будет представлена ниже.

    Схема собиралась и отлаживалась на макетной плате, термометр DS18B20 используется в формате «зонда» с металлическим колпачком:

    Для «общения» с такой схемой можно использовать как стандартный WiFi контроллер компьютера, так и построить схему приемопередатчика при помощи USB-UART преобразователя и еще одного модуля ESP8266:

    К слову о переходниках и терминалах, эти модули достаточно капризны к ним, хорошо работают с преобразователем на CP2303 и отказываются адекватно работать с преобразователями, построенными на микроконтроллерах (самодельных), терминал лучше всего подходит Termite (там в настройках есть автоматическое добавление символа возвращения каретки, без чего также адекватно модуль не будет работать с терминалом). А вот просто при подключении к микроконтроллеру модули работают без нареканий.

    Итак, для обмена информацией с микроконтроллером по WiFi будем использовать второй модуль, подключенный к компьютеру и терминал Termite. Перед началом работы со схемой каждый модуль нужно подключить через USB-UART и проделать несколько операций — настроить режим работы, создать точку подключения и подключиться к точке, к которой в последующем будем подключаться для обмена информацией, AT командой узнать IP адрес модулей WiFi (необходимо будет для подключения модулей друг к другу и обмена информацией). Все эти настройки сохранятся и будут автоматически применяться при каждом включении модуля. Таким образом можно сэкономить немного памяти микроконтроллера на командах подготовки модуля к работе.

    Модули работают в совмещенном режиме, то есть могут быть как клиентом, так и точкой доступа. Если по настройкам модуль уже работает в этом режиме (AT+CWMODE=3), то при повторной попытке настроить в этот же режим модуль выдаст ответ «no change». Чтобы настройки вступили в силу нужно перезапустить модуль или ввести команду AT+RST.

    После аналогичных настроек второго модуля в списке доступных точек появится наша точка под названием «ATmega»:

    В нашем случае схема WiFi будет такой — модуль с микроконтроллером будет подключаться к домашнему роутеру (фактически микроконтроллер в таком случае может выходить в интернет, если это прописать), далее поднимать порт и действовать по алгоритму. На другой стороне модуль также подключим к роутеру и соединимся с микроконтроллером через TCP (как показано на скриншоте, для этого нужно настроить режим передачи и количество соединений командами AT+CIPMODE и AT+CIPMUX соответственно и ввести команду на соединение с сервером AT+CIPSTART). Все! Если подключиться к точке доступа (WiFi точка только, к серверу нужно переподключаться каждый раз, ровно также каждый раз сервер нужно поднимать на другом конце каждый раз при включении питания) и перезапустить модуль, то надобности самостоятельно еще раз присоединяться нет, это тоже сохраняется в памяти и автоматически подключается при доступности при включении модуля. Удобно, однако.

    Теперь данные о температуре автоматически должны пойти на компьютер, а по командам с компьютера можно управлять светодиодом. Для удобства можно написать софт под Windows и мониторить температуру по WiFi.

    Командой AT+CIPSEND мы отправляем данные, при приеме данных появится сообщение «+IPD, , :» после двоеточия идет наша полезная (передаваемая) информация, которую нужно использовать.

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

    Это один из вариантов передачи информации между модулями WiFi, можно их подключать также без роутера напрямую друг к другу, а можно к модулю подключаться через стандартный WIFi компьютера и работать уже через него.

    Функционал задействован самый очевидный этих модулей, кто знает, что там еще разработчики приготовили для нас!

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

    В заключении хочется отметить, что это действительно революция интернет вещей! При цене модуля в несколько зеленых единиц, мы имеем полноценный Wi-Fi модуль с огромными возможностями (которые пока что ограничивают разработчики сего чуда), область применения просто не ограничена — везде, где позволит фантазия, а учитывая тот факт, что в этом модуле уже присутствует микроконтроллер, отпадает надобность в использовании внешнего микроконтроллера, однако который нужно как-то программировать. Так что, друзья, вот такое дело — даем Wi-Fi каждой розетке!

    К статье прилагается прошивка для микроконтроллера, исходный код в программе AVRStudio4, документация на микросхему модуля Wi-Fi, программа для обновления прошивки модуля и прошивка модуля версии 0,92 (архив разбит на 3 части, потому что общий размер его слишком велик, чтобы приложить к статье), а также видео, демонстрирующее работу схемы (на видео управляемая плата, соединенная по WiFi с управляющим модулем, управляемая плата периодически передает информацию о температуре, при погружении термометра в воду на видео видно, что температура начинает падать, далее если передать символ «а» от управляющего модуля, на управляемой плате загорится светодиод, а если символ «b», то он потухнет).

    На этом, кажется, все. Не забывайте писать свои замечания и пожелания, при наличии внимания к этой теме будем развивать идеи для новых.