JavaScript для умного дома. Arduino устарел, да здравствует ESP32! – «Хакер»
Содержание статьи
Интерес к интернету вещей растет с каждым днем, свои курсы по технологии IoT запустили и Cisco, и Samsung. Но большинство этих курсов базируются на собственном железе компаний, довольно дорогом, в то время как практически все то же самое можно сделать на гораздо более дешевом железе самостоятельно, получив при этом массу удовольствия и полезных навыков.
Когда неофит от IoT полезет в интернет, одним из первых модулей, которые он найдет, будет ESP8266.
И действительно, он обладает массой достоинств: дешевый, много различных плат на его основе, позволяющих использовать его как самостоятельное устройство и подключать к сложным Arduino-based проектам.
Но ESP8266, выпущенный в 2014 году, довольно быстро перестал удовлетворять запросы пользователей, и в 2015 году компания-разработчик Espressif выпускает новый микроконтроллер — ESP32.
Различия между ESP8266 и ESP32
Точно так же, как и в случае с ESP8266, разработчики создали довольно много плат, базирующихся на новом микроконтроллере. В данной статье все примеры тестировались и проверялись на плате MH-ET LIVE ESP32 DevKit. Плата для обзора была любезно предоставлена интернет-магазином Amperkot.
Pinoutmap платы Загрузка …
Как и у любой платы, основанной на ESP32, у MH-ET LIVE ESP32 DevKit есть достаточно большой набор языков программирования.
Во-первых, это Arduino C, во-вторых, Lua, а в-третьих и в-четвертых — MicroPython и Espruino.
Про Espruino — сборку JS для программирования микроконтроллеров — уже рассказывалось в ][, но в той статье разбиралась работа только на плате Espruino Pico, заточенной под Espruino.
-
Скачиваем на официальном сайте свежую сборку Espruino. А если не доверяешь готовым сборкам, то можно собрать прошивку самостоятельно:
# Get the Espruino source code
git clone https://github.com/espruino/Espruino.git
cd Espruino
# Download and set up the toolchain ('source' is important here)
source scripts/provision.sh ESP32
# Clean and rebuild
make clean && BOARD=ESP32 make -
Несмотря на то что мы будем программировать на JS, для установки все равно нужен Python, а конкретно esptool.py. Повторяя свою предыдущую статью, скажу, что для его установки, при условии, что Python уже установлен, достаточно набрать в консоли/терминале: pip install esptool.
- В терминале перейти в папку с прошивкой. Кроме самого файла Espruino, здесь лежат файлы bootloader.bin и partitions_espruino.bin. Это необходимые компоненты, но в некоторых сборках их может не быть, тогда их придется скачать отсюда.
-
Запускаем процесс прошивки, не забыв изменить порт, указанный в данном примере, на свой, а также при необходимости указать другое имя прошивки. Здесь она называется espruino_esp32.bin.
esptool.py –chip esp32 –port /dev/ttyUSB0 –baud 921600 –after hard_reset write_flash -z –flash_mode dio –flash_freq 40m –flash_size detect 0x1000 bootloader.bin 0x8000 partitions_espruino.bin 0x10000 espruino_esp32.bin
Процесс прошивки
Разработчики Espruino создали свою IDE, Espruino Web IDE. Эта программа распространяется через Chrome Web Store, также существуют нативные приложения для Windows (32 и 64).
Espruino Web IDE
Перед первым запуском нужно залезть в настройки, вкладка COMMUNICATIONS, и убедиться, что скорость общения выставлена на 115200, а также изменить поле Save on Send с No на Yes, иначе все программы после перезапуска слетят.
Теперь достаточно запустить IDE, подключиться к плате и набрать в консоли 1+2: если ты получил 3, значит, все настроено правильно и можно начинать полноценную работу.
Загрузка …
Во всех языках программирования, предназначенных или модифицированных для программирования микроконтроллеров, самая простая программа — так называемый Blink, мигание встроенным светодиодом. Но это как-то скучно. Поэтому нашей первой программой станет программа для управления светодиодом с помощью веб-страницы. И действительно, JS — это же язык веба.
var wifi = require(“Wifi”); wifi.startAP('EspruinoAP', { password: '0123456789', authMode: 'wpa2' },function() { console.log(`AP started`);
}); function onPageRequest(req, res) { var a = url.parse(req.url, true); if (a.pathname==”/”) { res.writeHead(200, {'Content-Type': 'text/html'}); res.end(”
Hello, ][aker!
“); } else if (a.pathname==”/on”) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(“Enable”); digitalWrite(D2, false); } else if (a.pathname==”/off”) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end(“Disable”); D2.write(true); } else { res.
writeHead(404, {'Content-Type': 'text/plain'}); res.end(“404: Page “+a.pathname+” not found”); }
}
require(“http”).createServer(onPageRequest).listen(80);
Можно заметить, что синтаксис практически ничем не отличается от обычного JS. Давай разбираться, что же происходит в этой программе.
- var wifi = require(“Wifi”) — для начала мы подгрузили необходимый нам модуль для работы с Wi-Fi. Логично будет задаться вопросом: а откуда мы его взяли? Допустим, есть встроенные в прошивку модули. А если нам нужно загрузить с какого-нибудь внешнего сайта? Функция require поддерживает синтаксис вида require(“https://github.com/espruino/EspruinoDocs/blob/master/devices/PCD8544.js”);, а WebIDE для поиска модулей онлайн, по умолчанию используется https://www.espruino.com/modules.
- Следующий блок кода отвечает за поднятие точки доступа с именем EspruinoAP и паролем 0123456789. В случае успешного запуска в консоль выводится соответствующее сообщение.
- Функция onPageRequest — собственно сам веб-сервер. В этой функции разбирается адрес и проверяется, что нужно сделать, в зависимости от запроса:
- если загружается первая страница — /, то вернуть 200-й заголовок и сообщение типа text/html «Hello, ][aker!», в обрамлении HTML-тегов;
- если загружается страница включения — /on, то вернуть 200-й заголовок и сообщение Enable, а также включить светодиод. Заметим, что используется привычная Arduin’щикам функция digitalWrite(pin, value);
- небольшое отличие в случае страницы выключения — /off, для выключения светодиода используется не функция digitalWrite(pin, value), а метод write(value);
- во всех остальных случаях возвращаем ошибку «404 — Page Not Found».
- А последняя строка собственно поднимает сервер, с внутренней функцией onPageRequest, на 80-м порте.
Важно заметить, что мы можем возвращать различный контент: обычный текст, HTML, XML и так далее.
Источник: https://xakep.ru/2018/05/04/esp32/
ESP32: обзор и характеристики платы под софт arduino ide и nodemcu
Друзья всем привет наконец-то китайцы из Espressif Systems перестали нас с вами мурыжить и наконец-то выпустили в свободную продажу свои новейшие wi-fi микро контролеры ESP 32, в начале лета они анонсировали скорый их выход, но несколько раз откладывали выпуск и сегодня наконец-то я получил несколько штук и сейчас вам их покажу.
Приобретались они не на интернет площадках каких то зарубежных, а у Российского дистрибьютера Espressif Systems.
И так вот что я заказал, вот это содержимое пакета обошлось мне где то в две тысячи четыреста с чем то там рублей, это 36,9$, восемь из которых это доставка.
Вот такие вот модули, стоят по пять с половиной долларов и ещё одну отладочную плату я заказал с таким же модулем это DevKItC так называемый.
Вот так он выглядит он стоит 12,4$, вот и вот эта плата и вот эти модули производства и разработки Espressif Systems, то есть ещё куча аналогов на самом деле они примерно так же выглядят, но официальные дистрибьюторы продают официальные платы. Вот так они выглядят, так что ещё, давайте откроем один из врумов, врум 32 и давайте сравним например с ESP 14 размером, ну где на пару мм он выше и шире на пару мм, давайте попробуем поднять экран.
Итак, давайте более внимательно просмотрим плату, обратите внимание что микросхема промаркирована как ESP 32 — DOWVDQ6 392016, видимо 39 неделя 2016 года P6W255, вот так промаркирована микросхема, так… где-то у меня были ESP-14, вот как выглядит ESP-8266 в сравнии с ESP-32, как видите, она стала чуть крупнее.
Дальше, флешка у нас 25Q32, т.е 32 мегабайта, 4 мегабайта — объём этой флешки, так же здесь стоит кварцевый резонатор на 40 мегагерц, вот… ну и в общем-то всё. Давайте посмотрим с задней стороны как выглядит плата, как видим, ножек выведено гораздо больше чем у ESP-8266. Кроме того, здесь должен присутствовать JTAG-интерефейс поэтому очень интересно будет попробовать внутрисхемную отладку.
Кроме того, процессор заявляется как 2-х ядерный это для меня один из самых интересных моментов в ESP-32. Теперь давайте рассмотрим отладочную плату DevKItC. Так… ну здесь у нас SiLabs’овский CP2102 USB-UART мостик, линейный стабилизатор.. в общем-то.. диод.. Кнопка BOOT и кнопка обозначенная как EN.
Посмотреть параметры и купить плату можно тут
Пока не знаю за что это всё отвечает, надо пользоваться чтобы понять. С обратной стороны есть маркировка ESP32_Core_board_V2, в остальном ничего интересного нет.. microUSB-разъём. Эту плату я заказал потому что очень удобно в таком виде отлаживаться, а вот эти платы уже можно будет встраивать в какие-то конечные устройства.
Да, кстати отладочная плата в сравнении с nodeMCU, как видите, она чуть компактнее, а по количеству выводов — больше, так же она уже. Вот… я думаю здесь больше ничего интересного мы не увидим, давайте попробуем подключить, посмотрим, что-нибудь она высылает вообще в UART при включении или нет.
Итак, прежде чем начнём, хочу показать вам перечень плат которые на данный момент существуют, я его нашёл на сайте esp32.net.
Вот смотри … есть модульные платы, так называемые, это платы примерно вот такого форм-фактора ,как мой WROOM-32 их производят как минимум 2 производителя, это официальные платы Espressif ESP-WROOM-32, как у меня и также Ai-Thinker производит платы ESP32S они называются, они пришли на смену их же платам ESP-3212, вот эти ESP-3212 летом на али экспрессе китайцы активно пытались в парить, но у них их видимо то ли не было в наличии в итоге, то ли им не разрешили продавать… короче такую плату мне не выслали.
И также есть отладочные платы типа вот как вот эта их вообще производит куча производителей, вот тут такой список, и у меня плата от Espressif, она называется ESP32-DevKItC. Как видите, на adafruit она 15 долларов стоит, в магазине olimex — 17 евро. Получается, что я у дистрибьютора за 12,5 долларов купил.
Посмотреть параметры и купить плату можно тут
После подключения платы к USB, определяется она, конечно же, как COM-порт, вот он появился, SiliconLabs SP210x и давайте откроем COM-порт, например, с помощью putty. Я уже поэкспериментировал, 115200 здесь скорость и, по-моему, COM8, вот… куча сразу отладочного вывода.
Теперь давайте посмотрим, что она пишет, сброс по включению питания, т.е. причина сброса, какие-то секции в памяти, во флешке видимо. Дальше… приветствие, Second boot is running версия 0.1, интересно что это значит всё.
Время компиляции некое, флешка подключена по SPI на 40 МГц, 4Мбайт — объём флешки, но это мы с вами уже знаем. Это у нас ещё какие-то области, как я понимаю, разметка флешки здесь перечисляется, так… ещё какая-то разметка. Инициализация менеджера кучи, менеджера динамической памяти, 2 региона.
Дальше стартуют задачи в операционке реального времени, какой-то таймер, tcp task, видимо версия сетевых дров, инициализация UART’а, версия библиотеки WiFi, SSC версия какая-то, redy. Так… ну и точкой доступа они видимо, выключается и стартует DHCP-сервер.
Вот… всё что происходит после запуска, после старта ESP-32, дальше тут можно вводить какие-то AT-команды, я пока не занимался чтением документации пока не знаю какие можно отправлять, но я уверен, что тут всё, что перечислено в документации — должно работать.
Мне же интересна больше не AT-прошивка, не прошивка для AT-команд, а сборка своей прошивки и также существующие на данный момент кастомные прошивки типа nodeMCU, ещё каких-то вариантов, ну ладно в общем я буду изучать, сегодня такое вводное видео было, я надеюсь вам понравилось то, что сегодня показал. Как модуль выглядит внутри, какие платы, где можно их приобрести. Вот… на этом у меня сегодня всё, я благодарю вас за просмотр ролика до конца, желаю.
Читать также Особенности мультиметра UNI-T UT181A
Я не буду здесь подробно останавливаться на спецификациях ESP32, вы без труда найдёте их в Интернет: каждый обзорщик считает своим долгом привести простыню спецификаций в начале обзора ESP32. Скажу только, что они впечатляют и если подходить к делу серьёзно и вдумчиво, то можно потратить не один год на изучение всех возможностей модуля и эксперименты с ним.
Оставим это профессионалам (или тем, кто считает себя таковым) и сосредоточимся на практической стороне вопроса, понятной и доступной простому смертному.
Посмотреть параметры и купить плату можно тут
Цена
Начнём с цены. На данный момент модуль ESP32 в китайских интернет-магазинах стоит 350 рублей и 500 в варианте платы с обвязкой и USB интерфейсом. Это против 100 и 160 рублей для модуля ESP8266, соответственно.
Как видим, разница в три с лишним раза, хотя абсолютные значения невелики, каждый, при желании, может позволить себе потратить 350 — 500 рублей на микроконтроллер.
Для сравнения, Arduino Mega 2560 в том же Китае стоит 600 рублей, а в России около 1000 (плюс ещё стоимость Ethernet Shield).
Осталось только выяснить, стоит ли платить в три раза больше, чем за ESP8266 и что мы за это получим. (Забегая вперёд скажу, что на мой взгляд, безусловно стоит.)
Поддержка в Arduino IDE
Для того, чтобы что-то сделать с модулем, нужно сначала иметь его поддержку в Arduino IDE.
На данный момент поддержка ESP32 в Arduino IDE находится хоть и на начальном, но вполне приличном и работоспособном уровне.
Те, кто боится встретить тут непреодолимые трудности, может не беспокоиться — основные функции работают нормально и вы, скорее всего, не заметите никакой разницы по сравнению с работой на других контроллерах.
Несколько хуже дела обстоят с драйверами устройств, но это, безусловно, временное явление. Модуль настолько популярен, что поддержка любой периферии неизбежно появится в ближайшее время.
Теперь немного практической информации об инсталляции поддержки ESP32 в Arduino IDE. Интернет полон инструкциями на эту тему, вы их также можете в изобилии найти в нём. Замечу только, что все инструкции делятся на «старые», там, где упоминается Python и «новые», где упоминается GIT. Вам, естественно, нужно руководствоваться новыми.
Читать также Обзор портативной колонки Musky DY25
Из множества инструкций лучшей можно назвать (как это ни странно) официальную инструкцию от производителя модуля. Которой я и рекомендую пользоваться. Единственное замечание: GIT использовать необязательно, можно просто скачать дистрибутив и распаковать его в нужную директорию.
Посмотреть параметры и купить плату можно тут
Многие пользователи жалуются, что у них ничего не работает и не появляется поддержка ESP32 в Arduino IDE. Тут дело вот в чём: поскольку драйвера ESP32 только разрабатываются, то несколько изменён порядок расположения системных директорий. В качестве папки для расположения скетчей в настройках Arduino IDE должна быть указана папка
C:UsersUserDocumentsArduino
(с теми же поправками на диск и имя пользователя), а файлы дистрибутива должны располагаться внутри этой папки так, как рекомендует производитель. Если не будет учтён этот момент, то поддержка ESP32 в Arduino IDE не появится и ничего работать не будет.
Версии Arduino IDE
Часто приходится слышать, что поддержка ESP32 есть только в последних версиях Arduino IDE, это не так — ESP32 прекрасно работает в более ранних версиях, например, дистрибутив Arduino Mega Server для ESP32 разрабатывался в версии 1.6.5 r2.
Преимущества ESP32
Теперь поговорим о преимуществах ESP32 перед его предшественником, ESP8266. На таких очевидных вещах как мощность процессора и объём оперативной памяти я останавливаться не буду, скажу только, что нужно сильно постараться, чтобы загрузить ESP32 полностью на задачах DIY и домашней автоматизации.
Посмотреть параметры и купить плату можно тут
Пины
Ахиллесовой пятой его предшественника, модуля ESP8266, было (и есть) экстремально малое количество выводов. После работы с такими контроллерами как Arduino Mega и Arduino Due с их десятками цифровых и аналоговых пинов, работа с ESP8266 вызывает недоумение: счёт GPIO идёт буквально на единицы и это сильно ограничивает применение этого модуля в реальных проектах.
ESP32 если не полностью, то в значительной степени лишён этого недостатка. Количество доступных выводов значительно увеличено, появилось также множество аналоговых входов. Полностью свободными и доступными для использования можно назвать 13 выводов
GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33
Источник: http://bazaroved.ru/obzor-platy-esp32/
ESP32 Wi-Fi модуль. Подключение
Всем привет.
Сегодня я хотел-бы рассказать про ESP32. ESP-WROOM32 это Wi-Fi и Bluetooth модуль на одной плате, который внешне похож на старый ESP8266, но отличается тем что он более мощный и у него имеется больше количество портов ввода вывода, а также пониженным энергопотреблением.
Перед вами модуль ESP32 на отладочной плате:
Подключенный ESP32
Подключение.
Подключается ESP32 к компьютеру через обычный Android USB шнур (которым заряжается телефон). После того как вы подключили W-Fi модуль, у вас появится сеть, которая будет называться как-то так, цифры могут отличаться:
ESP_B3FFA6
Найденная сеть esp_b3ffa6
При подключении модуля к компьютеру оборудование может быть не опознано, т.е. может не установится драйвер, тогда переходим по ссылке на GitHub: Windows — https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/windows.md Mac — https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/mac.
md Debian / Ubuntu Linux — https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/debian_ubuntu.md У меня компьютер c Windows, поэтому я рассказываю именно о Windows. Эти ссылки — это инструкции по установке, правда на английском. Кому интересно почитайте.
Первый пункт этой инструкции – скачать новейшую версию Arduino:
Переходим на сайт Arduino — https://www.arduino.cc/en/Main/Software и нажимаем Windows installer (или другое под вашу операционную систему).
Страница скачивания установщика Arduino IDE
Скачиваем необходимое.
Скачиваем и благодарим
Возвращаемся на GitHub. Вторым пунктом идет скачивание и установка Git с сайта https://git-scm.com/download, снова выбираем необходимую операционную систему.
Страница скачивания установщика Git
После скачивания файла, запускаем его с Правами администратора (Правой кнопкой мыши по файлу – Запуск от имени администратора). Далее установка:
На первой странице жмем далее, по-ихнему Next
На следующей оставляем все по умолчанию, опять далее
Ставим первую галочку (по желанию) — это добавление на рабочий стол иконок.
Ставим первую галочку (по желанию) — это добавление на рабочий стол иконок.
Опять Next.
Страница 4: Next
Далее в выпадающем окне выбираем текстовый редактор который у вас будет использоваться для редактирования текстовых файлов, у меня Notepad++, поэтому я выбираю USE Notepad++ as Git’s default editor жмем Next.
Выбор текстового редактора Notepad++
Если у вас нету Notepad++, то скачать его можно тут:
https://notepad-plus-plus.org/download/v7.5.8.html
Скачивание Notepad++
Далее, в остальных окошках везде: Next.
Здесь Install.
Страница с кнопкой Install
После окончания установки убираем галочку с нижней и нажимаем Finish.
Окончание установки
Видим один ярлык Git Bash, но сейчас он нам не нужен. Заходим в папку, в которую установился Git. Скорее всего это C:Program FilesGit
Заходим там в папку cmd и открываем git-gui
Программа Git Gui
Выбираем Clone Existing Repository (Клонировать Существующий Репозиторий). В Source Location нужно вставить ссылку https://github.com/espressif/arduino-esp32.git, перед тем как делать это, обязательно переведите раскладку клавиатуры на английский язык. А в Target Directory вставляем путь (C:/Users/Ваш_пользователь/Documents/Arduino/hardware/espressif/esp32
У меня путь выглядит так C:/Users/Max/Documents/Arduino/hardware/espressif/esp32
В Source Location нужно вставить ссылку
Жмем Clone и ждем окончания работы программы.
Скачивание файлов с GitHub
Окно Git Gui (esp32)
Когда появится окно Git Gui (esp32) открываем путь, который вы вписывали в Target Directory и переходим в папку tools (Получается вот так C:UsersMaxDocumentsArduinohardwareespressifesp32 ools), там запускаем файл get.exe, ждем пока скачаются и установятся необходимые файлы.
Get.exe скачивает файлы
После того как get.exe закончит свою работу, подключаем наш ESP32 к компьютеру, теперь драйвера должны корректно установиться. В диспетчере устройств у меня появится Silicon Labs CP210x USB to UART Bridge.
Запускаем Arduino. Во вкладке Инструменты – Плата выбираем ESP32 Dev Module.
Выбор платы ESP32
Дальше в тех же Инструментах выставляем скорость — Upload Speed 115 200.
Выбор скорости
Далее выбираем Файл – Примеры – WiFi – WiFiScan и нажимая на модуле ESP32 кнопку BOOT, далее нажимаем загрузить скетч.
Выбор примера WiFiScan
Готово. Теперь если открыть монитор порта и поставить вместо 9600 -> 115 200, у покажутся все сети, которые есть вокруг.
Изменение скорости
Найденные сети
Всем спасибо за внимание.
Источник: http://arduinokit.ru/electronics/esp32-wi-fi-modul-podklyuchenie.html
NodeMCU 32S — отладочная плата на базе ESP-32
NodeMCU – альтернативная прошивка-интерпретатор языка Lua, написанная в далёком 2014 для ESP8266. С релизом ESP32 команда разработчиков начала работу над новой версией интерпретатора, который поддерживал-бы все возможности обновлённой платформы.
Альфа-релиз NodeMCU-32 Development board уже состоялся, поэтому его уже можно опробовать на модулях, в основе которых лежит ESP32. Вместе с прошивкой параллельно разрабатывалась официальная отладочная плата для прошивки, которая имеет аналогичное название – NodeMCU 32S.
На плате уже установлено всё необходимое для запуска нового модуля в проект, а именно:
- micro-USB разъём для питания и связи модуля с ПК
- преобразователь интерфейсов USB-UARTна основе CP2102, который создаёт на ПК виртуальный COM-порт с логическими уровнями TTL для облегчённой связи с ESP32 (связь, аналогичная связи ПК с Arduino)
- линейный стабилизатор напряжения AMS1117-3.3V, который обеспечивает ESP32 оптимальным напряжением питания, понижая входное напряжение (с пина Vin) или 5В с USB в приемлемые 3.3B
- пару кнопок для управления и два светодиода – пользовательский и светодиод индикации активности передачи по последовательному порту
- однорядные разъёма типа «папа», на которых разведены все пины модуля ESP-32S
- сам Wi-Fi модуль на основе ESP32 – ESP32S
На модуль, стоящий на плате, уже установлена самая свежая на момент выпуска прошивка NodeMCU, поэтому можно начать работать, просто подключив плату к компьютеру, установив драйвера (которые можно скачать на официальном сайте Silabs) и открыв ваш любимый терминал последовательного порта. Можно использовать специально разработанные программы типа ESPLorer, облегчающие доступ к основным функциям прошивки и позволяющие удобно организовывать рабочие файлы.
ESP32 имеет действительно много отличий от своего «младшего брата», ESP32 –старший брат получил ещё одно ядро, и теперь тактовая частота обеих ядер может достигать 240МГц с производительностью до 600 миллионов итераций в секунду (MIPS, millions iterations per second); также новая система-на-чипе получила Bluetooth самой новой спецификации 4.
2 с возможностью перехода в режим сверхнизкого потребления BLE, обновлённый криптографический движок, возможность шифрования содержимого внешней Flash-памяти с помощью пяти различных алгоритмов, встроенную ППЗУ и ОЗУ на почти полмегабайта.
Из сверхбюджетного модуля для домашних применений серия ESP начинает превращаться в полноценное устройство с практически неограниченными возможностями для творчества!
Development board предполагает возможность питания от внешнего источника нестабилизированного питания с напряжением от 5 до 12В через вход Vin. Обратите внимание – при превышении напряжения питания возможно повреждение стабилизатора, работа платы не гарантируется!
Источник: https://Voltiq.ru/shop/nodemcu-32s/
Описание микроконтроллера ESP32
Микроконтроллер ESP32, вышедший на рынок WiFi осенью 2015 года, представляет собой выдающееся устройство, и не только благодаря своей низкой цене.
Espressif ESP32 — высокоинтегрированный, совмещённый (Wi-Fi + Bluetooth) чип, выполненный для решений, требующих минимальных показателей энергопотребления.
ESP32 разработан для носимой электроники и приложений интернета вещей, выполнен в супер-миниатюрном корпусе 6 х 6 мм, требующий для интеграции около 10-ти внешних компонентов. Он обладает хорошим функционалом и многообещающими возможностями.
Совмещение в одном чипе WiFi и Bluetooth, двух процессорных ядер и богатого набора периферии может сделать ESP32 лидером в своем сегменте. ESP32 обещает снова совершить революцию в мире IoT, как в свое время совершил его младший брат ESP8266.
ESP32 получил значительный прирост в производительности по сравнению со своим предшественником ESP8266. Вычислительная мощность возросла в четыре раза. У ESP32 есть два ядра, каждый из которых работает на частоте 160 МГц. Второе ядро сделает жизнь разработчика проще.
Так, например, одно ядро может взять на себя задачи реального времени по работе с графикой или управлению двигателями, а второе может обрабатывать коммуникационные протоколы и в целом отвечать за связь.
Благодаря этому вам меньше придется думать о распределении времени между задачами.
Характеристики ESP32
ESP32 поддерживает весь стек протоколов стандартов Wi-Fi 802.11n и BT4.2, обеспечивая данный функционал через интерфейсы SPI/SDIO или I²C/UART.
Чип Espressif ESP 32 может работать в качестве центрального процессора (поддержка Open CPU) и как подчинённое устройство (slave device), управляемое микроконтроллером.
Отличительные особенности:
CPU: Xtensa Dual-Core 32-bit LX6, 160 MHz или 240 MHz (до 600 DMIPS) Memory: 520 KByte SRAM, 448 KByte ROM
Flash на модуле: 1, 2, 4… 64 Мб
Wireless:
- Wi-Fi: 802.11b/g/n/e/i, до 150 Mbps c HT40
- Bluetooth: v4.2 BR/EDR и BLE
Peripheral interfaces:
- 12-bit SAR ADC до 18 каналов
- 2 × 8-bit DAC
- 10 × touch сенсоров
- Temperature сенсор
- 4 × SPI
- 2 × I²S
- 2 × I²C
- 3 × UART
- 1 host (SD/eMMC/SDIO)
- 1 slave (SDIO/SPI)
- Ethernet MAC с поддержкой DMA и IEEE 1588
- CAN 2.0
- IR (TX/RX)
- Motor PWM
- LED PWM до 16 каналов
- Hall sensor
- Ultra low power analog pre-amplifier
Security:
- IEEE 802.11 безопасность WFA, WPA/WPA2 и WAPI
- Secure boot
- Flash encryption
- 1024-bit OTP, включая до 768-bit под задачу
- Cryptographic движок: AES, SHA-2, RSA, ECC, RNG
Распновка чипа ESP32:
(Скачать в PDF)
в ESP32 есть JTAG интерфейс на ножках IO12, IO13, IO14, IO15.
Даташит ESP32
ESP32 также доступен в виде модуля:
» Модуль ESP-WROOM-32
Распиновка модуля WROOM32:
Модуль WROOM-32 может поставляться со специальной отладочной платой:
Эта плата позволяет быстро программировать модуль благодаря встроенному адаптеру USB-TTL. На ней также расположены кнопки программирования и сброса, а также регулятор напряжения для питания микроконтроллера ESP32 напряжением 3.3 В.
Также плата дает удобный доступ к выводам модуля, шаг между которыми довольно узок, чтобы без проблем работать с ними. Шаг же между выводами платы составляет 2.
54 мм, что является стандартом для DIP-корпусов, с которыми удобно работать обычному радиолюбителю без специальных инструментов.
Распиновка отладочной платы ESP32:
Средства разработки ESP32
Программные средства разработки (программный комплект разработчика, SDK) состоят из:
- Компилятора. Компилятор для Xtensa LX106 входит в пакет компиляторов GNU Compiler Collection. Поскольку компилятор имеет открытые исходные тексты, то в разных SDK могут содержаться разные сборки этого компилятора, немного отличающиеся поддерживаемыми опциями.
- Библиотек для работы с периферией контроллера, стеков протоколов WiFi, TCP/IP.
- Средств загрузки исполняемого файла в память программ микроконтроллера.
- Опциональной IDE.
Espressif свободно распространяет свой комплект разработчика. В этот комплект входит компилятор GCC, библиотеки Espressif и загрузочная утилита XTCOM. Библиотеки поставляются в виде скомпилированных библиотек, без исходных текстов. Espressif поддерживает две версии SDK: одна на основе RTOS, другая на основе обратных вызовов (callback).[2]
Помимо официальной SDK существует ряд проектов альтернативных SDK. Эти SDK используют библиотеки Espressif или предлагают собственный эквивалент библиотек Espressif, полученный методами реверсинжиниринга.
- «esp-open-sdk». Улучшенная версия SDK от Expressif. Содержит GCC компилятор и некоторые библиотеки Expressif. Только Линукс. По-русски немного здесь.
- «Unofficial Development Kit» Михаила Григорьева. В комплект входит Windows-инсталлятор, компилятор GCC собственной сборки с интеграцией с графической IDE Eclipse, актуальные комплекты библиотек и документации Espressif, некоторые утилиты. Имеется русскоязычный форум.
- «Arduino IDE for ESP8266» — дополнение к IDE Arduino, позволяющее программировать ESP8266 так же легко как любые другие модули Ардуино. При этом доступен сетевой функционал ESP8266. Компилятор GCC, загрузчик прошивки ESPTool. Подробное русскоязычное описание процесса установки и доступного API здесь, пример работы здесь.
- «GNU toolchain for esp8266». Имеет возможность интеграции в Visual Studio.
- «ESP8266 GCC Toolchain» Макса Филиппова.
- «Sming»[6] — проект добавления Arduino совместимых библиотек поверх стандартных библиотек Espressif, но без препроцессора Ардуино (то есть программирование идет на чистом Си).
На оффсайте сейчас можно найти ссылки на два SDK:
» ESP31_RTOS_SDK — SDK для ESP31B, построена на FreeRTOS.
» Espressif IDF (IoT Development Framework) — Official development framework for ESP32.
Хоть это и не очевидно с описания на сайте, но для релизной версии нам подходит только ESP-IDF. Есть инструкции по установке для linux, windows, macos.
В итоге можно сказать, что микроконтроллер ESP32 получился отличным для своего сегмента рынка. В таком дешевом устройстве столько функционала не умещал, наверное, еще никто. Но на данный момент ESP32 пока еще слишком молод и не оброс тем уровнем поддержки, который характерен сегодня для ESP8266. Документации, примеров и поддерживаемых сред не так уж и много.
Источник: http://micpic.ru/home/proekty-na-esp32/194-opisanie-mikrokontrollera-esp32.html
ESP8266 продолжение. Модуль ESP-12
В прошлой части я мучал модуль ESP-01 с AT-прошивкой. С тех пор прошло много времени, я успел заказать и получить более развитые модули ESP-12-E, о которых и пойдет речь в этот раз. Будем прошивать NodeMCU, подключать SD-карту, дисплей на SSD1306, энкодер (rotary encoder) и FM-модуль RDA5807.
После соединения всех этих модулей между собой в правильном порядке проводочками и правильного расположения бесчисленного количества байтиков во флеше ESP-12 должно получиться радио.
NodeMCU, стоит отметить, занятная штука! После прошивки в терминале доступно что-то типа командной строки языка Lua, где можно выполнять отдельные команды или целые скрипты, не компилируя каждый раз код и не перепрошивая модуль! От гавеного usb-ttl адаптера такой модуль уже не смог прошиться, один вечер я его уговаривал разными программами – безрезультатно. Общение идет, MAC выдается, но потом все помирает, прошивка даже не начинает заливаться. На следующий день я догадался измерить напругу на модуле, меньше 2В! Конечно нихрена не прошьется, нужно 3.3В. Адаптер в качестве питальника тут совсем не годится. Запитал модуль от 2 батареек AAA и наконец прошил NodeMCU.
Использовал хорошую статью http://www.benlo.com/esp8266/esp8266QuickStart.html
По-моему самая годная схема подключения приведена в этой статье.
Тут предусмотрено и использование режима сна (GPIO16 к ресету через 470R), и перемычка прошивки (Burn), и все нужные “подтяжки” – reset, gpio2, gpio0, gpio15, ch_pd (enable).
Да уж, целая гора ног должна быть подтянута для старта железяки, я по незнанию боялся, что эти ноги не удастся использовать, однако напрасно – gpio 0, 2 и 15 доступны в приложении.
GPIO0 управляет режимом загрузки. Подтяжка к земле – режим программирования, заливки прошивки. Подтяжка к питанию – нормальная загрузка модуля GPIO2 – должно быть притянуто к питанию всегда. низкий уровень инициирует специальные режимы загрузки GPIO15 – должно быть притянуто к земле всегда. высокий уровень инициирует специальные режимы загрузки GPIO16 должно быть замкнуто с пином RESET, если планируется использовать спящий режим. иначе модуль из спячки не выйдет никогда. Вообще по вышеуказанной статье все намного лучше расписано.
И вот еще интересная страничка http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family#esp-12-e_q
Специальные режимы загрузки кратко описаны тут https://github.com/esp8266/esp8266-wiki/wiki/Boot-Process, есть даже загрузка с SD карты, во как.. Может быть для этого и выведены с торца модуля пины CS0, MISO, MOSI, SCLK?
Свободных GPIO – 9 ног: GPIO 0/2/4/5/12/13/14/15/16. Последний (GPIO16) ограничен в функционале. GPIO9 и 10 хоть и выведены, однако вообще не работают в модуле версии ESP-12-E (они только на ESP-12D, на али я такой не нашел, что интересно). Более того, попытка их использовать ведет к зависанию и ребуту по watchdog. Есть ADC – можно контроль разряда батареи сделать или опрос клавы, но только что-то одно. Т.е. модуль измеряет либо внутреннее напряжение vdd33, либо внешнее, подаваемое на ногу ADC. Выведены пины SPI, однако забудьте о них – в версии ESP-12-E они точно не пашут. Подключение SD карты делается через несколько GPIO и софтовый SPI, об этом позже.
Ну и UART. Из железных возможностей это все. Остальное реализуется через GPIO, и, надо сказать, эти ноги очень быстро заканчиваются.
Прошивал я программой ESP8266Flasher, в данном случае вариант первый – использовать прошивку NodeMCU, которая уже содержится в программе. Она не особо свежая, однако для “пощупать” и быстрого старта вполне годится.
В качестве bin-файла указывается INTERNAL://NODEMCU, см. скрин.
Способ второй, которым обычно и пользуюсь – пройти на сайт https://nodemcu-build.com/ и собрать себе бинарник со всеми нужными модулями.
Через какое-то время (минуты 2-3) на почту придет ссылка для скачивания.
Способ третий, хардкорный. Скачать исходники из репозитория https://github.com/nodemcu/nodemcu-firmware и безжалостно собрать их.
К великой радости поклонников NodeMCU прошивка оная обновила мажорную версию на 1 и уже обросла множеством вкусных модулей, в частности, наконец-то, поддержка SD-карт и файловой системы FatFS (я пробовал карту с FAT32 – работает)! Этого-то мне и не хватало для счастья, погнал на https://nodemcu-build.com/ собирать себе бинарник прошивки.
Собрал один, другой, третий – ни один не пашет, модуль после прошивки бесконечно ребутается и выдает rf_cal[0] !=0x05,is 0xFF
Нашел заметку, где описана эта проблема http://nodemcu.readthedocs.io/en/latest/en/flash/#sdk-init-data, нашел в инете пустой bin-файл на blank_1MB.bin (8MBit), залил его, потом снова прошивку, но даже это не помогло. т.е.
после записи пустого бинарника выдалось esp_main.c, как положено, но после накатывания прошивки – опять та же фигня с ребутами.
upd: так ведь модуль у меня 32Мбит, наверное надо было 4 раза его заливать с разными offset, теперь уже проверять лень
В итоге я в очередной раз выбрал заливку собранного бинарника, но добавил еще заливку esp_init_data_default.bin в соответствии с рекомендацией. Адрес (оффсет) поначалу вписал 0xfc000 (т.к.
чип при старте выдавал инфо 512+512кб), но в последний момент отчего-то решил сменить на 0x3fc000 (вариант для 32Мбитного флеша), и прокатило! Запускаю LuaLoader и вижу приветственное сообщение на скорости 115200
Chip info выдает
NodeMCU version (1.5.4), chipid, flashid, flash size (4096!), flash mode, flash speed
Connect them all
Карта соответствия I/O индексов пинам GPIOx тут.
0 * | GPIO16 | 7 | GPIO13 |
1 | GPIO5 | 8 | GPIO15 |
2 | GPIO4 | 9 | GPIO3 |
3 | GPIO0 | 10 | GPIO1 |
4 | GPIO2 | 11 | GPIO9 |
5 | GPIO14 | 12 | GPIO10 |
6 | GPIO12 |
* D0(GPIO16) can only be used as gpio read/write. No support for open-drain/interrupt/pwm/i2c/ow.
Первым делом втыкаем FM-модуль RDA5807 и OLED дисплей на SSD1306. Оба через интерфейс I2C. Я выбрал ноги GPIO4 и GPIO5. Требуется модуль i2c, а для дисплея еще u8g. Чтобы включить радио нужно выполнить такой скрипт
Разумеется стоит оформить запись регистров в виде функций
Для вывода чего-нибудь на дисплей простейший скрипт такой
Более подробно о работе с FM-модулем и дисплеем – в следующей статье.
Далее подключаем SD-карту. У меня был специальный китайский модуль для SD, см.фото. Требуется модуль spi.
- CK, CLK, SCLK to pin5 / GPIO14
- DO, DAT0, MISO to pin 6 / GPIO12
- DI, CMD, MOSI to pin 7 / GPIO13
- CS, DAT3, SS to pin 8 / GPIO15 recommended
- VCC, VDD to 3V3 supply
- VSS, GND to common ground
Подключил, причем GPIO15 так и остался подтянут к земле через 1к2 (надо 10к, да, но их не было), загрузил ESP-12 – все ок. GPIO 12, 13, 14, 15 теперь заняты.
Далее для проверки карты выполнил следующееи получил заветный список файлов на карте!
Пробуем записать тестовый текстовый файл
чтобы вернуться на внутреннюю память ESP выполняем file.chdir(“/FLASH”)
а еще можно не меняя папки
file.open(“/FLASH/file.txt”) или file.open(“/SD0/somefile.txt”)
И последнее – подключаем энкодер. Требуется модуль rotary. У нас осталось 3 свободных ноги – GPIO16, 0 и 2.
Но засада в том, что GPIO16 не годится ни на что, кроме как вручную выставить на этой ноге уровень или прочитать его. С этой ногой не работает ни один интерфейс, и прерывания тоже не работают. Так что, выходит, событие “нажатие на энкодер” не удастся подключить. Стартовый скрипт – простейший. Заняли оставшиеся 2 GPIO – 2 и 0.
Да уж, после AVR Assembler тут все слишком легко, подключаешь – и все сразу работает, даже неинтересно. Правда с энкодером загвоздка вышла. При старте ESP он-таки влияет на пины GPIO0/2 и модуль не грузится как надо. Эту проблему я решил перестановкой – повесил I2C на пины GPIO0+2, а энкодер – на GPIO4+5, все нормально запускается и работает.
Теперь можно все это запрограммировывать.
Питание от литиевой батареи 3.7В формата 18650. Только что загруженная NodeMcu dev ветка – 3.12В, 77мА Дисплей OLED 128×64 при выводе изображения добавил еще 8мА. Проект ESP8266_MP3_DECODER: динамик 1Вт 8Ом подключен напрямую к ноге ESP-12E, измеряю ток мультиметром в разрыве питания – 131мА. Напряжение до тестера – 3.58В, после – 2.7В, вот уж не думал, что он такое влияние вносит! Напругу при включенном тестере измерял осциллографом.
Источник: http://blog.sci-smart.ru/2016/11/esp8266-esp-12.html
ESP32-Developement-Kit С плата разработчика ESP32 ESP-WROOM-32 Wi-Fi Bluetooth модуль ESP8266 модуль esp-32
ESP-WROOM-32 — новый миниатюрный высокопроизводительный совмещённый Wi-Fi + BT + BLE модуль от компании Espressif, разработанный для широкого спектра применений, начиная от маломощных сетевых датчиков до самых сложных приложений, например, таких как кодирование голоса, потоковая передача музыки и MP3 кодирование.
ESP-WROOM-32 выполнен на базе популярного двуяхдерного чипсета esp32, с регулируемой частотой от 80 МГц до 240 МГц, возможностью индивидуального управления и питания.
Wi-Fi-модуль разработан для носимой электроники и приложений интернета вещей, выполнен в миниатюрном корпусе 25,5 мм x 18 мм, имеет на борту Flash память, кварц 40 МГц и PCB антенну, обеспечивающую превосходные RF характеристики.
ESP-WROOM-32 имеет богатую периферию, включающую в себя такие интерфейсы как UART, SPI, I²C, I²S, разъем для SD карты, инфракрасный порт, интерфейс для подключения емкостной сенсорной панели.
Одной из особенностью модуля является сверхнизкое потребление и гибкий выбор «спящих» режимов, позволяющих получить цифры до 20мкА (deep sleep mode).
ESP-WROOM-32 поддерживает весь стек протоколов стандартов WiFi 802.11n и BT4.2, обеспечивая данный функционал через интерфейсы SPI/SDIO или I²C/UART.
Компания Espressif планирует предоставлять для модуля SDK (поддержка Open CPU), также модуль можно использовать как подчинённое устройство (slave device), управляемое микроконтроллером.
Технические характеристики
Wi-Fi | Стандарты | FCC/CE/IC/TELEC/KCC/SRRC/NCC |
Протоколы | 802.11 b/g/n/d/e/i/k/r (802.11n до 150 Мбит/с) | |
A-MPDU и A-MSDU aggregation и 0.4 s guard interval support | ||
Частотный диапазон, ГГц | 2.4 ~ 2.5 | |
Bluetooth | Протоколы | Bluetooth v4.2 BR/EDR и BLE specification |
Радио | NZIF receiver with -98 dBm sensitivity Class-1, class-2 и class-3 transmitterAFH | |
Аудио | CVSD и SBC | |
Аппаратные средства | Интерфейсы | SD, UART, SPI, SDIO, I²C, LED PWM, Motor PWM, I²S, I²C, IR |
GPIO, capacitive touch sensor, ADC, DAC, LNA pre-amplier | ||
Датчики «на борту» | Hall sensor, температурный датчик | |
On-board clock | 26 МГц crystal, 32 кГц crystal | |
Питание, В | 2.2 ~ 3.6 | |
Рабочий ток, мА | средний 80 | |
Диапазон рабочих температур | -40°C ~ 85°C * | |
Программное обеспечение | Режимы Wi-Fi | Station/softAP/SoftAP+station/P2P |
Защита | WPA/WPA2/WPA2-Enterprise/WPS | |
Шифрование | AES/RSA/ECC/SHA | |
Обновление ПО | UART Download / OTA (по сети) / download and write firmware via host | |
Software development | Supports Cloud Server Development / SDK for custom firmware development | |
Сетевые протоколы | IPv4, IPv6, SSL, TCP/UDP/HTTP/FTP/MQTT | |
Пользовательские настройки | AT instruction set, cloud server, Android/iOS App |
https://espressif.com/en/content/esp32-devkitc-getting-started-guide
- 89,10 грн -10% 99,00 грн
- 99,00 грн
- 15,00 грн
- 105,30 грн -10% 117,00 грн
- 99,00 грн
- 99,75 грн -5% 105,00 грн
- 53,00 грн
- 75,00 грн
- 36,00 грн
- 32,00 грн
- 19,00 грн
- 89,10 грн -10% 99,00 грн
- 65,25 грн
- 163,40 грн -5% 172,00 грн
- 115,20 грн -10% 128,00 грн
- 169,00 грн
- 24,75 грн
- 52,50 грн
- 129,00 грн
- 105,30 грн -10% 117,00 грн
- 139,00 грн
- 157,00 грн
- 157,50 грн -10% 175,00 грн
- 185,00 грн
- 168,50 грн
- 175,00 грн
- 89,00 грн
- 81,00 грн
Источник: http://ardu.net/ru/bez-provodov/630-esp32-developement-kit-s-plata-razrabotchika-esp32-esp-wroom-32-wi-fi-bluetooth-modul-esp8266-modul-.html
Персональный сайт Пьяных А.В
Сегодня я буду рассматривать возможность управления 4 реле из приложения мобильного устройства с ОС Android по сети WiFi. В статье я рассмотрю три решения. 1. С помощью готовых библиотек aRest. Для первых двух решений будет создано приложение в сервисе MIT App Inventor 2, работающее в ОС Android. Третье решение предусматривает использование готового приложения поставляемого сервисом Blynk. |
Начнем сначала.
Чип ESP8266
Чип ESP8266 разработан специально для «интернета вещей». Существует два варианта использования этого чипа. Первый – в качестве моста UART-WIFI для подключения к микроконтроллеру и управления АТ-командами. Второй вариант – чип сам исполняет роль управляющего контроллера. По моим оценкам в среде любителей электроники чип чаще используется как управляющий контроллер.
Возможности чипа:
- Поддержка 802.11 b/g/n
- Встроенный 32-bit MCU с низким энергопотреблением
- Встроенный 10-bit ADC
- Встроенный стек TCP/IP
- Встроенный усилитель ВЧ сигнала
- Поддержка разнесения антенн
- WiFi 2.4 GHz, поддержка WPA/WPA2
- Поддержка STA/AP/STA+AP режимов
- SDIO 2.0, (H) SPI, UART, I2C, I2S, IR Remote Control, PWM, GPIO
- STBC, 1×1 MIMO, 2×1 MIMO
- A-MPDU & A-MSDU aggregation & 0.4s guard interval
- Выходная мощность +20 dBm в 802.11b режиме
Чип является высокоинтегрированным решением для работы с WiFi. Внутри чипа удалось разместить все, что нужно. Типовая минимально необходимая для работы обвязка микросхемы состоит всего из семи элементов.
Фотографии для сравнения количества компонентов аналогичных решений.
По одним данным всей этой прелестью управляет 32-разрядное процессорное ядро Xtensa LX106, по другим данным – Tensilica’s L106 Diamond. Под микроскопом выглядит чип как целый город из связанных элементов.
Одной из самых важных характеристик является энергопотребление. У ESP8266 оно просто поражает:
- 215mA в режиме непрерывной передачи.
- 1mA в режиме поддержания связи с точкой доступа
- 10uA в режиме глубокого сна с работающими часами реального времени
- 0,5uA в режиме Power OFF
Время необходимое на пробуждение и начало передачи пакета менее 2ms. Например, при измерении температуры каждые 100 секунд и подключении к точке доступа и передаче накопленных данных каждые 300 секунд (все остальное время чип спит) средний ток составит около 1mA. Это более трех месяцев работы от трех пальчиковых аккумуляторов емкостью 2600мА/ч.
О модулях ESP
В настоящее время наиболее популярными модулями на чипах ESP8266 являются ESP-01, ESP-02, ESP-03, ESP-04, ESP-05, ESP-06, ESP-07, ESP-08, ESP-09, ESP-10, ESP-11, ESP-12, ESP-12E. Они отличаются количеством разведенных пинов, наличием разъема для подключения внешней антенны, размерами.
Сейчас уже можно найти в продаже старшего брата ESP8266 – это модуль ESP-32. На Aliexpress пока всего у двух продавцов есть эти модули. Цена около 250 рублей против 110 рублей за ESP-12E. В новом модуле будет еще больше плюшек.
Основные возможности ESP-32. (нажмите для просмотра)
Wi-Fi – 802.11 b/g/n/e/i – 802.11 n (2.4 GHz), up to 150 Mbps – 802.11 i security features: pre-authentication and TSN – 802.11 e: Multiple queue management to fully utilize QoS traffic prioritization – Wi-Fi Protected Access (WPA)/WPA2 – Wi-Fi Protected Setup (WPS) – UMA compliant and certified – Antenna diversity nd seection – A-MPDU and A-MSDU aggregation – WMM power s ve U-APSD – Fragmentation and defragmentation – Wi-Fi Direct (P2P), P2P Discovery, P2P Group Owner mode and P2P Power Management – Infrastructure BSS Station mode/ Soft AP mode – Automatic beacon monitoring / scanning – SSL stacks with hardware accelerators Bluetooth – CMOS single-chip fully-integrated radio and baseband – Bluetooth Piconet and Scatternet – Bluetooth 4.2 (BR/EDR/BLE) – Adaptive Frequency Hopping(AFH) – SMP – Class-1, class-2 and class-3 transmitter without exter al power amplifier – +10 dBm tra smitting power – NZIF receiver with -90 dBm sensitivity – Up-to 4 Mbps high speed UART HCI – SDIO / SPI HCI – CVSD and SBC – Low power consumption – Minimum external component CPU and Memory – Xtensa® Dual-Core 32-bit LX6 micr pr cess rs, up to 400MIPS – 128 KB ROM – QSPI Flash/SRAM, up to 4 x 16 MB – Power supply: 2.5V to 3.6V – 416 KB SRAM Clocks and Timers – 2 MHz to 40 MHz crystal oscillator – Internal 8 MHz oscillator with calibration – External 32 kHz oscillator for RTC with calibration – Internal RC oscillator with calibration – Two timer groups including 3 x 64-bit timers and 1 x watchdog in each group – RTC timer with sub-second accuracy – RTC watchdog Advanced Peripheral Interfaces – 12-bit SAR ADC up to 16 channels – 2 x 10-bit D/A converters – 10 x touch sensors – Temperature sensor (-40 +125°C) – 4 x SPI – 2 x I2S – 2 x I2C – 2 x UART – 1 host (SD/eMMC/SDIO) – 1 slave (SDIO/SPI) – Ethernet MAC interface with dedicated DMA and IEEE 1588 support – CAN 2.0 – IR (TX/RX) – Motor PWM – LED PWM up to 16 channes Security – IEEE 802.11 standard security features all supported, including WFA, WPA/ WPA2 and WAPI – Secure boot – Flash encryption – 1024-bit OTP, up to 768-bit for customers – Cryptographc hardware acceleration: – AES 128/192/256 – HASH (SHA-2) library – RSA
– Radom Number Generator
Особенно интересна заявленная поддержка CAN-шины. Скоро управлять системами автомобиля и проводить диагностику можно будет по WiFi прямо с мобильного устройства.
Но вернемся к ESP-12E. На базе этого модуля построена платформа NodeMCU.
О платформе NodeMCU
Платформа использует возможности ESP-12 модуля, собственного микроконтроллера не имеет. Китайцы производят много клонов с разными конвертерами интерфейсов, и сами платформы имеют разные размеры.
По умолчанию в платформу загружена прошивка NodeMCU с поддержкой интерпретатора скриптового языка LUA. Скрипты задают поведение платы.
Я пишу и заливаю программы с помощью Arduino IDE. Для работы с платформой необходимо установить библиотеки. С библиотеками идет большое количество примеров программ.
Установка библиотек в среду Arduino IDE для работы с NodeMCU.
Для установки библиотек необходимо зайти в настройки Arduino IDE и в поле «Additional board» ввести адрес http://arduino.esp8266.com/package_esp8266com_index.json
Далее «Инструменты» – «Плата» – «Boards Manager».
Пролистываете список вниз и находите ESP8266 by ESP8266 Community, и устанавливаете библиотеки.
Закройте «Boards Manager». Идите в «Инструменты» и выберите плату NodeMCU в соответствии с вашей версией.
Чтобы понять какой модуль у вас установлен и какую версию выбрать, посмотрите на модуль. Если контакты на нем расположены с трех сторон – это ESP-12E, если только с двух – это ESP-12.
Далее выбираете частоту модуля, размер памяти и порт, к которому подключена NodeMCU
Назначение выводов платформы NodeMCU
Функции, поддерживаемые библиотеками для Arduino IDE.
Полное описание можно почитать здесь https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_ru причем на русском языке. Я расскажу об основных функциях.
Управление GPIO осуществляется так же, как и у Arduino. pinMode, digitalRead, digitalWrite, analogWrite функционируют как обычно. analogRead(A0) читает значение АЦП с аналогового входа А0 соответственно. analogWrite включает программный ШИМ. Частота ШИМ порядка 1кГц.
Диапазон ШИМ от 0 до 1023, у Arduino, как мы помним, до 255. Прерывания также поддерживаются на любом GPIO, кроме GPIO16. Функции millis() и micros() возвращают миллисекунды и микросекунды, прошедшие со старта модуля. Функция delay() у NodeMCU работает по-другому нежели у Arduino.
Здесь применение delay приветствуется и в больших программах даже необходимо. Когда модуль поддерживает WiFi соединение, ему приходится выполнять множество фоновых задач, кроме вашего скетча.
WiFi и TCP/IP функции библиотек SDK имеют возможность обработать все события в очереди после завершения каждого цикла вашей функции loop() или во время выполнения delay(…). Если в вашем коде есть фрагменты, которые выполняются более 50 миллисекунд, то необходимо использовать delay(…
) для сохранения нормальной работоспособности стека WiFi. А вот delayMicroseconds() блокирует выполнение других задач и не рекомендуется для задержек более 20 миллисекунд. Serial использует аппаратный UART0, работающий на PIO1(TX) и GPIO3(RX).
Программа для управления четырьмя реле с мобильного приложения
После того, как библиотеки установлены, к платформе подключаем блок из 4 реле к пинам D1, D2, D3, D4, что соответствует GPIO 5, 4, 0, 2 соответственно. Затем подключаем питание к платформе и к блоку реле. У имеющегося у меня блока реле есть одна особенность. Для включения реле необходимо подтянуть пин к земле. То есть логический 0 включает реле, а 1 выключает.
Я рассмотрю три варианта программы управления блоком реле.
Первая программа использует популярную библиотеку aRest https://github.com/marcoschwartz/aREST
Это API handler библиотека, позволяет управлять GPIO через http-запросы вида http://192.168.0.10/digital/6/1 ее возможности: устанавливать GPIO в Digital или Analog (ШИМ), устанавливать 0 или 1 на пин в режиме Digital, возвращать переменные и читать состояние пинов.
Программу я откомпилировал и загрузил из примеров, идущих вместе с библиотекой. С точки зрения использования – проще некуда.
В Setup’е устанавливается соединение с точкой доступа, о чем сообщается через COM порт. А loop выглядит вот так:
void loop() {
WiFiClient client = server.available();
if (!client) {
return;
}
while(!client.available()){
delay(1);
}
rest.handle(client);
}
Все. Что там происходит не понятно. Работает, но фактически мы не программируем ничего. Просто запускаем программу, все остальное делает библиотека. Но интереснее научиться работать с GPIO «руками». Да, кстати, программа у меня зависала через неопределенное время.
Иногда через 40 минут, иногда через 5-6 часов. Приходя домой после 8 часового рабочего дня, я всегда обнаруживал, что программа не работает. При этом роутер показывает, что клиент WiFi подключен и ему выдан IP адрес. Интерес у меня к библиотеке быстро пропал.
На зависания aRest’а на русскоязычных форумах жалоб не встречал. Я уж грешил на NodeMCU или на нестабильное питание, но дальнейшие эксперименты доказали, что в моем случае виновата была программа. Скорее всего, у меня частный случай.
Я не утверждаю, что библиотека не рабочая.
С aRest’ом разобрались.
Вторая программа написана самостоятельно, использует всего одну подключаемую библиотеку #include . Программа проста и наглядно показывает, как управлять пинами через веб-запросы.
Данная программа умеет управлять только логическими состояниями на выводах D1-D4 и выводить информацию о времени работы программы в качестве тестового запроса. Если есть необходимость, можно дописать программу для остальных GPIO, «научить» ее выдавать ШИМ и т.д.
К выводу D4 подключен синий светодиод, находящийся на модуле ESP-12E. После мучений с зависаниями aRest’а я временно отсоединил реле 4 от D4 и в своей программе дописал пару строк для мигания этим светодиодом. Пришел домой после работы смотрю – мигает, значит, работает. Проверил с мобильного – точно работает.
Программа отработала 8 дней без зависаний, отработала бы и дольше, но NodeMCU у меня один, поэтому я продолжил его изучение и выполнение программы пришлось остановить.
Код программы.
После компиляции и загрузки программы в монитор последовательного порта программа сообщит о состоянии подключения и IP адрес, который платформа получит от точки доступа.
Для управления блоком реле для этих двух программ было создано приложение на мобильный с ОС Android. Приложение очень простое, создавалось в App Inventor 2. Процесс создания приложения я опишу позже. Сначала третий вариант решения управления реле.
Третий вариант комплексный. Прошивка платформы и программа для Android от одного разработчика. Я использовал сервис Blynk. Он представляет собой облачный сервис для создания графических пультов управления и подходит для широкого спектра микрокомпьютеров и микроконтроллеров.
Для создания собственного проекта с управлением через Blynk нужно совсем немного: установить приложение (доступны версии для iOS и Android) или воспользоваться веб-формой. Тут потребуется регистрация в один шаг — ввод e-mail и пароля. Дело в том, что Blynk — облачное решение, и без регистрации контроль над железкой может получить любой пользователь.
Желающие могут установить сервер локально. В таком случае доступ в интернет не нужен.
Опишу сам процесс. Он состоит из двух частей.
Первая часть.
Источник: http://zlitos.com/publ/ehlektronika/arduino_i_t_p/nodemcu_upravlenie_4_rele_iz_prilozhenija_android_po_wifi/12-1-0-27
Adblockdetector