Модуль esp32: продолжение esp8266, новый модуль, новые функции

Wi-Fi модуль ESP-32

Обзор беспроводного Wi-Fi модуля ESP-32

WiFi модули ESP8266 за время своего существования стали поистине народными и получили широкое распространение в любительской разработке устройств Интернета вещей. Но жизнь не стоит на месте и компания-разработчик Espressif выпускает новый микроконтроллер – ESP32. ESP32 получил значительный прирост в производительности, по сравнению c ESP8266. Вычислительная мощность возросла в четыре раза. У ESP32 есть два ядра, каждый из которых работает на частоте 160 МГц (ESP8266 имеет 1 ядро, работающее на частоте 80 МГц). Контроллер имеет 520 Кб оперативной памяти, 448 Кб flash-памяти. Поддерживает не только Wi-Fi (802.11n с максимальной скоростью 150 Мбит в секунду), но и Bluetooth 4.2 BR/EDR и Low Energy.

Основным недостатком плат ESP8266 было очень малое количество контактов, в ESP32 этот недостаток устранен, выводов гораздо больше и они многофункциональные, блок ввода-вывода имеет специальный мультиплексор, который позволяет назначать различные функции на один вывод микроконтроллера. Значительно увеличено количество аналоговых входов (18 АЦП (12-бит) и 2 ЦАП (8-бит)), поддержка PWM на всех контактах, 10 портов в режиме сенсорных кнопок. ESP32 имеет три UART, два I2C, четыре SPI, два I2S. Также имеется инфракрасный контроллер (прием-передача), шина CAN 2.0. Еще есть датчик температуры и датчик Холла. Для шифрования при передаче данных по WiFi в ESP32 имеются криптографические модули AES и SHA.

Рисунок 1. Блок-схема периферии ESP32

Для удобной работы с микроконтроллером ESP32 был выпущен модуль WROOM-32 (рис. 2, 3), и теперь появилось множество отладочных плат на этом модуле, например FireBeetle от DFRobot (см. рис. 4, 5).

Рисунок 2,3. Модуль ESP-WROOM32

Рисунок 4,5. Отладочная плата FireBeetle от DFRobot на ESP-WROOM32

Установка программного обеспечения

Изначально модули ESP32, как и ESP8266, поставляется с прошивкой, позволяющей работать с этим микроконтроллером с помощью AT-команд. Но данный метод нас не устраивает. Будем программировать нашу плату в Arduino IDE. Для этого скачиваем ESP32 CORE для Arduino IDE с сайта https://github.com/espressif/arduino-esp32 (zip-архив) и распаковываем его в папку C:Program FilesArduinohardwareespressif. Заходим в Arduino IDE и видим, что в панели инструментов появились платы ESP32 (рис. 6).

Рисунок 6. Плата ESP32 в списке плат в Arduino IDE

Но в списке портов платы нет. Необходимо установить драйвер. Заходим по ссылке https://git.oschina.net/dfrobot/FireBeetle-ESP32/raw/master/FireBeetle-ESP32.inf и копируем содержимое страницы в файл FireBeetle-ESP32.inf. Затем в Диспетчере устройств (Прочие устройства) правой кнопкой выбираем плату FireBeetle-ESP32 и нажимаем Обновить драйверы à Выполнить поиск драйверов на этом компьютере и указываем папку, где сохранен файл FireBeetle-ESP32.inf. Подтверждаем установку и плата FireBeetle-ESP32 появляется в списке COM-портов (рис. 7).

Рисунок 7. Плата FireBeetle-ESP32 в Диспетчере устройств (драйвер установлен).

Теперь и в Arduino IDE появляется данный порт. Плата готова к загрузке скетчей.

И список библиотек, поддерживаемых на данный момент (рис. 8).

Рисунок 8. Список библиотек для ESP32 в Arduino IDE

Пример использования wifi модуля ESP8266

Попробуем подключить плату ESP32 к WiFi точке доступа. Загружаем на плату скетч из листинга 1.

Но компиляция не проходит (см. рис. 9). Не находит xtensa-esp32elf.

Рисунок 9. Ошибка компиляции скетча для ESP32

Заходим в папку FilesArduinohardwareespressifesp32tools и запускаем файл get.exe(рис. 10).

Рисунок 10. Загрузка и установка xtensa-esp32-elf

Теперь компиляция и загрузка скетча на плату проходит успешно (рис. 11).

Рисунок 11. Компиляция и загрузка скетча на плату ESP32

Открываем монитор последовательного порта и видим, что подключение платы ESP32 к сети WiFi успешно (рис. 12).

Рисунок 12. Работа скетча подключения платы ESP32 к WiFi

JavaScript для умного дома. Arduino устарел, да здравствует ESP32!

Содержание статьи

Какую плату выбрать?

Когда неофит от IoT полезет в интернет, одним из первых модулей, которые он найдет, будет ESP8266. И действительно, он обладает массой достоинств: дешевый, много различных плат на его основе, позволяющих использовать его как самостоятельное устройство и подключать к сложным Arduino-based проектам. Но ESP8266, выпущенный в 2014 году, довольно быстро перестал удовлетворять запросы пользователей, и в 2015 году компания-разработчик Espressif выпускает новый микроконтроллер — ESP32.

Различия между ESP8266 и ESP32

Точно так же, как и в случае с ESP8266, разработчики создали довольно много плат, базирующихся на новом микроконтроллере. В данной статье все примеры тестировались и проверялись на плате MH-ET LIVE ESP32 DevKit. Плата для обзора была любезно предоставлена интернет-магазином Amperkot.

Начинаем программирование

Как и у любой платы, основанной на ESP32, у MH-ET LIVE ESP32 DevKit есть достаточно большой набор языков программирования. Во-первых, это Arduino C, во-вторых, Lua, а в-третьих и в-четвертых — MicroPython и Espruino. Про Espruino — сборку JS для программирования микроконтроллеров — уже рассказывалось в ][, но в той статье разбиралась работа только на плате Espruino Pico, заточенной под Espruino.

К сожалению, портирование Espruino на ESP32 еще не до конца завершено. Часть возможностей, например обновление по воздуху и Bluetooth, недоступна. Но так как Espruino — open source проект, любой может добавить свою функциональность.

Установка

Скачиваем на официальном сайте свежую сборку Espruino. А если не доверяешь готовым сборкам, то можно собрать прошивку самостоятельно:

Несмотря на то что мы будем программировать на JS, для установки все равно нужен Python, а конкретно esptool.py . Повторяя свою предыдущую статью, скажу, что для его установки, при условии, что Python уже установлен, достаточно набрать в консоли/терминале: pip install esptool .

Запускаем процесс прошивки, не забыв изменить порт, указанный в данном примере, на свой, а также при необходимости указать другое имя прошивки. Здесь она называется espruino_esp32.bin .

Процесс прошивки

Разработчики Espruino создали свою IDE, Espruino Web IDE . Эта программа распространяется через Chrome Web Store, также существуют нативные приложения для Windows (32 и 64).

Перед первым запуском нужно залезть в настройки, вкладка COMMUNICATIONS, и убедиться, что скорость общения выставлена на 115200, а также изменить поле Save on Send с No на Yes, иначе все программы после перезапуска слетят.

Теперь достаточно запустить IDE, подключиться к плате и набрать в консоли 1+2 : если ты получил 3 , значит, все настроено правильно и можно начинать полноценную работу.

Hello world

Во всех языках программирования, предназначенных или модифицированных для программирования микроконтроллеров, самая простая программа — так называемый Blink , мигание встроенным светодиодом. Но это как-то скучно. Поэтому нашей первой программой станет программа для управления светодиодом с помощью веб-страницы. И действительно, JS — это же язык веба.

Можно заметить, что синтаксис практически ничем не отличается от обычного 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 и так далее.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Модуль esp32: продолжение esp8266, новый модуль, новые функции

ESP8266 стал воистину «народным» в мире дешевых интернет вещей. Встречайте ему достойную замену ESP32.
Краткое описание, программирование в Ardiono IDE, примеры читайте в этом обзоре

Память и ЦПУ

  • Двухядерный 32-битный микропроцессор Xtensa LX6 160-240МГц
  • ОЗУ — 520Кб
  • ПЗУ — 448Кб
  • Дополнительно RTC таймер с 16Кб ОЗУ
  • Внешняя флэш память 4-16Мб
  • Питание 2.2 — 3.6В

WiFi и Bluetooth

  • WiFi 802.11n 2.4Гц с максимальной скоростью 150Мбит/сек
  • WPA)/WPA2/WPA2-Enterprise/Wi-Fi Protected Setup (WPS
  • Bluetooth v4.2 BR/EDR and BLE

Периферия

  • 12- битная АЦП на 18 портах
  • 8-битная ЦАП на 2 портах
  • 10-портов в режиме сенсорных кнопок
  • Встроенный температурный датчик
  • 4 x SPI
  • 2 x IS1
  • 2 x I2C
  • 3 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 channels
  • Hall sensor
  • Ultra-low-noise analog pre-amplifier

Защита

  • 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
  • Cryptographic hardware acceleration:
    – AES
    – HASH (SHA-2) library
    – RSA
    – ECC
    – Random Number Generator (RNG)

Энергопотребление

  • Максимальный ток при передаче WiFi — 160-260мА
  • Потребление без включенного WiFi и Bluetooth — 20мА
  • LightSleep — 0.8мА
  • DeepSleep — до 10мкА
  • Режим гибернизации с активным RTC — 5мкА

Назначение выводов отладочной платы можно посмотреть здесь

Все для программирование есть у производителя, в его разделе на GITHUB
Там же есть ESP32 CORE для Arduino IDE
Установка под Windows очень проста:
— Устанавливаем Arduino IDE (если еще не установлена)
— Скачиваем архив с последней версий Core ESP32
— Распаковываем архив в папку:
C:/Users/[YOUR_USER_NAME]/Documents/Arduino/hardware/espressif/esp32

После это в Board Manadger появляется поддержка ESP32

Инструкции по установке в LINUX и MAC OS лежат на страничке проекта

Подключаем отладочную плату с ESP32 к USB и, если установлен драйвер на CP2102, то видим отладочный COM порт в системе. Если нет, ставим драйвер, как например это описано здесь

Запустив монитор порта на 115200 видим загрузку системы

Библиотек портировано еще очень мало

В каталогах example лежат примеры. Давайте займемся программированием.

Начало работы с esp32: новый модуль после esp8266

Уже полюбивший всем модуль esp8266 давно получил продолжение в виде модуля esp32.

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

В данной картинке разработчики прописали те параметры, которые изменились из перехода от esp8266 к esp32.

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

Первое, что мы должны сделать — это зайти на github и найти инструкцию по скачивании ПО для esp32, чтобы мы могли через arduino ide программировать нашу плату. Переходим по ссылке:

На этой странице будет две нужные нам ссылки под разные ОС. У меня windows 10, поэтому я вам расскажу подробно о скачивании на эту ОС.

В данном окне приведена полная инструкция по скачиванию, где вы можете самостоятельно скачать себе все необходимое.
Если у вас уже скачена arduino ide, то нажимаем на вторую ссылку на скачивание git. На странице будет предложена скачать программу для 32 или 64 битовой системы. Выберите нужную вам ссылку.

Открывается установочник, в которым вы можете выбрать нужные вам параметры.

Я выбрал такие параметры.

  1. Устанавливаем в папку Arduino.
  2. В выборе компонентов убрал интеграцию с w. explorer.
  3. Дальше оставил все стандартные параметры, которые предлагались пользователю.

После скачивания открываем появившейся приложение Git GUI

Выбираем “Clone Existing Repository”

Появятся два слота, куда необходимо записать следующие:

У меня вышла такая ссылка – D:/Arduino/hardware/espressif/esp32

И нажимаем на кнопку “Clone”.

После скачивания, нужно будет зайти в папку esp32, которая появилась в итоге скачивания. Это вы должны зайти в папку скетчей для Ардуино и пойти по ссылкам (папкам) /hardware/espressif/esp32, которые мы обозначали при клонировании репозитория. Заходим в папку “Tools” и включаем установочник get.exe. Он скачает необходимую библиотеку для работы с esp32.

Дальше уже можем открывать arduino ide и смотреть менеджер плат, там должно появится большое ответвление в выборе нескольких видов отладочных и обычных микроконтроллеров esp32. Выберите нужный вариант платы. Часто встречаемся ESP32 dev module или NodeMCU – 32s. Проверьте, что компьютер видит плату как микроконтроллер, на некоторые виды esp необходимо вручную искать драйвера.

Для проверки работоспособности платы и то, что вы все правильно сделали, можно открыть папку с примерами (доступные в начале примеры скетчей) и найти wifi scan. Если скетч загрузился, то теперь вы можете успешно работать с esp32.

Также этот скетч может послужить проверкой работы wi-fi модуля на плате, и если настроить сериал порт в arduino ide на скорость 115200 бод, то можем увидеть ближайшие wifi точки от модуля.

Также, еще скажу, что в конце сайта (когда вы выбрали свою ос и скачивали git) есть пример обновления ПО для esp32. Библиотека часто обновляется и там описывается как обновить ваши данные.

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

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

Источники:

http://xakep.ru/2018/05/04/esp32/

http://samopal.pro/esp32-1/

http://arduinoplus.ru/nachalo-raboti-esp32/

http://www.tvc.ru/news/show/id/72249

Ссылка на основную публикацию