Сетевой интерфейс для программируемого реле с поддержкой Telegram Bot и HomeKit / Хабр

Notice: Undefined index: HTTP_ACCEPT in /home/n/newavtjc/radiocopter.ru/public_html/wp-content/plugins/realbig-media/textEditing.php on line 823
Содержание
  1. Что дальше?
  2. Первая версия платы на основе esp32
  3. Analogwrite()
  4. Apple homekit
  5. Arduino mega server для esp32
  6. Библиотеки классов
  7. Веб сервер esp32 для управления несколькими реле
  8. Версии arduino ide
  9. Для кого предназначена платформа nanoframework?
  10. Добавление поддержки esp32 в arduino ide
  11. Дополнение. отладочная плата ttgo t-energy с модулем esp32-wrover-b
  12. Драйвера датчиков
  13. Еще несколько фото
  14. Загрузка среды nanoframework в микроконтроллер esp-wroom-32
  15. Запуск тестового примера со светодиодом и кнопкой на st nucleo64 f411re
  16. Использование событий, устройство — кнопка
  17. Мигаем встроенным светодиодом
  18. Настройка среды разработки
  19. Неочевидные моменты инсталляции esp32
  20. Отладка
  21. Перспективы
  22. Пишем hello world
  23. Поддержка устройств
  24. Подключение датчика bme280 к шине i2c
  25. Подключение нескольких ds18b20 к esp32
  26. Преимущества esp32
  27. Прочие достоинства
  28. Прочие примеры кода на esp32
  29. Скорость работы
  30. Собираем и заливаем на плату
  31. Создание первого приложения
  32. Спецификации
  33. Список для самостоятельной распайки
  34. Сравнение переносимости кода между проектами .net iot для linux и nanoframework
  35. Стабильность работы
  36. Установка расширения
  37. Характеристики esp32
  38. Цена вопроса
  39. Шаг 1 — подключение st nucleo64 f411re
  40. Шаг 1 — установка драйвера для моста cp2102 usb to uart
  41. Шаг 2 — обновление прошивки st-link
  42. Шаг 2 — установка утилиты nanofirmwareflasher
  43. Шаг 3 — прошивка st nucleo64 f411re
  44. Шаг 4 — выбор прошивки
  45. Шаг 5 — прошивка esp-wroom-32
  46. Энергонезависимая память
  47. Заключение
  48. Шаг 3 — вывод идентификационной информации для отладочной платы

Что дальше?

Одной из сильных сторон nanoFramework является отличная поддержка сетевых протоколов из коробки. Существует даже “упрощенная версия” ASP.NET, а именно

. Следующие шаги – создание Wi-Fi сканера, Web API, отправка данных в облако и работа с брокерами сообщений RabbitMQ. Кроме того, мы подключим ЖК-экран, чтобы обеспечить интерактивное взаимодействие с устройством.

Первая версия платы на основе esp32

Во второй версии добавлен usb порт, что позволяет загрузить прошивку без использования дополнительных проводов и преобразователей. Базовая реализация изначально задумывалась с возможностью обновления прошивки по воздуху через ОТА, а для экспериментов проще использовать microUSB.

Смотрите про коптеры:  Рейтинг роботов пылесосов сяоми

В обновленном варианте добавил ещё и кнопки сброса и загрузки при прошивке, а так же добавил поддержку модулей ESP32-WROVER с PSRAM, это позволит использовать больше памяти и расширит возможности.

Analogwrite()

Еще одна особенность, которая может озадачить начинающего пользователя, заключается в том, что ESP32 не содержит функции AnalogWrite(). На первый взгляд это кажется очень странным, но на самом деле эту функцию нужно было просто заменить на другую, более функциональную.

Давайте рассмотрим пример. Первоначально нам потребуется подключить соответствующую библиотеку. Тем не менее, ее нельзя назвать библиотекой в традиционном понимании, скорее это специализированный файл, описывающий необходимые функции. Дело в том, что не все функции присутствуют непосредственно в Arduino IDE, некоторые из них доступны в файлах, расположенных в разделе

...DocumentsArduinohardwareespressifesp32coresesp32

В данном случае нас интересует файл работы ШИМ и светодиодов, который мы подключаем следующей инструкцией:

#include "esp32-hal-ledc.h"

Далее нам нужно установить номер канала (0), частоту ШИМ (например, 50 Гц) и разрешение (8 бит).

ledcSetup(0, 50, 8);

Номера каналов могут быть установлены от 0 до 15, а разрешение – от 1 до 16 бит. При разрешении 8 бит диапазон данных, управляющих ШИМ, будет от 0 до 255.

Следующим шагом будет привязка нашего канала (0) к контакту GPIO, в данном случае к контакту 22:

ledcAttachPin(22, 0);

Не забудьте установить вывод 22 на выход, как всегда.

pinMode(22, OUTPUT);

Всё, теперь мы можем управлять, например, яркостью свечения светодиода, просто указывая номер канала и значение ШИМ (яркости) из диапазона от 0 до 255.

ledcWrite(0, 50);

Apple homekit

Следующим этапом был сервис Apple HomeKit и приложение дом, как раз для управления освещением и другими точечными нагрузками он подходит лучше всего, я начал с 16 каналов, по количеству бит в регистре модбас.

После выхода обзора по такому применению,

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

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

Для быстрого добавления платы в приложение Дом, на web страницу добавлен QR код, второй вариант ввести код настройки, индивидуальный для каждой платы. Постарался упростить и минимизировать все настройки для быстрого старта.

Так же протестировал mqtt, идея задания топиков взята из версии платы для esp8266. Проверил поддержку датчиков 1-wire ds18b20, для их подключения к плате предусмотрены посадочные места под разъем, и сигнальные линии с резисторами, такой-же использовался в плате prsd на esp8266.

4 пина,  два из которых 3.3v и gnd, позволяют задействовать 2 порта в качестве интерфейса 1-wire или i2c. I2C позволяет подключать всякую «экзотику», которую практически невозможно состыковать в базовой поставке прибора. Например, датчик влажности/давления с I2C или RFID ридер.

Для быстрого просмотра значений регистров используется протокол Modbus TCP, запустив Modbus Poll на ПК или Virtuino/Kascada и другие приложения на Android, можно быстро организовать доступ и управление устройством с помощью телефона или планшета.

Остальные настройки WEB интерфейса представлены ниже:

WEB настройки

Для смены прошивки платы, когда она уже установлена в устройство, предусмотрен режим обновления по воздуху (OTA), для этого достаточно выбрать bin файл, после загрузки прошивки устройство перезагрузится и запустится обновленная версия. Так же можно перезагрузить плату в ручном режиме через web кнопку.

Arduino mega server для esp32

Вот еще один пример экосистемы AMS, в которую входят такие продукты, как Arduino Mega, Due, 101, M0, AMS Home, ESP8266, Sonoff, ESP32, OLIMEX ESP32-EVB контроллеры. Поскольку ESP32 – быстрый и мощный процессор, в интерфейс Arduino Mega Server можно загружать много графики и скриптов без заметного замедления – страницы загружаются практически мгновенно.

Не обнаружено никаких сбоев или недостаточного поведения системы или модуля. В следующем журнале загрузки AMS можно узнать некоторые подробности о системе.

При нормальной работе встроенный датчик температуры измеряет температуру модуля в диапазоне от 50 до 55 градусов Цельсия. Потребление модуля во время работы составляет 130 мА.

Библиотеки классов

В связи с малыми аппаратными возможностями микроконтроллеров, в отличие от .NET IoT, у каждого класса библиотек есть соответствующий Nuget пакет. Все пакеты добавляются с помощью системы

Nuget

Как это принято в . NET Core. Давайте рассмотрим подробнее

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

Системное устройство.Устройство.Gpio

Совместимый с . NET IoT для Linux и с названием

Windows.Device.Gpio 

Совместимые с Windows IoT Core. Полный список библиотек в документации

Библиотеки .NET nanoFramework (xlsx, pdf)

Веб сервер esp32 для управления несколькими реле

Низковольтная часть имеет две гребенки с четырьмя и тремя контактами. Первая гребенка имеет VCC (питание) и GND (земля) для питания модуля и два входа (IN1 и IN2) для управления нижним и верхним реле соответственно.

Ваше реле будет иметь только один контакт IN, если у него только один канал. Если у вас четыре канала, у вас будет четыре контакта IN и так далее.

В активных реле сигнал, подаваемый на контакты IN, определяет, включено или выключено реле. Реле ноль – 2 В и ниже; реле один – выше 2 В, что соответствует следующим режимам работы:

Нормальная закрытая конфигурация

Сигнал ВЫСОКИЙ – ток протекает

НИЗКИЙ сигнал – ток не протекает

Нормально открытая конфигурация (НО):

Сигнал ВЫСОКИЙ – ток не течет

Сигнал НИЗКИЙ – ток протекает

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

Если ток должен протекать периодически (например, для включения лампы), используйте нормально разомкнутую конфигурацию.

Версии arduino ide

Часто утверждается, что ESP32 можно использовать только в последних версиях Arduino IDE, но это не так. ESP32 будет работать и в более старых версиях, например, дистрибутив Arduino Mega Server для ESP32 был разработан в версии 1.6.5 r2.

Для кого предназначена платформа nanoframework?

Сегодня на рынке представлено множество микроконтроллеров. Сегодня платформа Arduino, использующая программирование на языке C/C, является одной из самых известных. С точки зрения удобства, простоты использования и простоты nanoFramework превосходит платформу Arduino.

Несмотря на свой небольшой возраст, nanoFramework уже работает на многих микроконтроллерах, с отладкой кода и поддержкой точек останова в удобной IDE MS Visual Studio. nanoFramework просто идеально подходит для существующих . NET разработчиков, которые не хотят останавливаться на достигнутом и также заинтересованы в разработке IoT.

Разработчики nanoFramework уже знают и умеют все, что нужно знать для программирования этой архитектуры. Код и библиотеки переносятся практически один в один, однако следует учитывать небольшой объем оперативной памяти и низкую производительность процессора.

nanoFramework Visual Studio 2023
Отладка кода приложения на nanoFramework в Visual Studio 2023

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

Между тем, nanoFramework подойдет и тем, кто стремится к творческому самовыражению, хочет сделать свою жизнь интереснее, а также добавить в нее автоматизацию, роботов и искусственный интеллект. Начало работы с nanoFramework стоит дешевле, чем чашка кофе в Starbucks (если вы купите микроконтроллер ESP32).

С момента публикации первой части этой серии многое изменилось. Во-первых, команда разработчиков обновила логотип. Ладно, шучу. Он действительно обновился, благодаря добавлению новых функций и расширению поддержки многих микроконтроллеров.

nanoFramework logo
Логотипы nanoFramework

Платформа nanoFramework будет иметь возможность использовать микроконтроллеры.

Добавление поддержки esp32 в arduino ide

Далее несколько подробностей об установке поддержки ESP32 в IDE Arduino. На эту тему в интернете существует огромное количество инструкций. Стоит отметить, что все инструкции разделены на “старые” и “новые”, где упоминаются и Python, и GIT. Разумеется, вы должны следовать именно этим инструкциям.

Из всех инструкций лучшей является (странным образом) официальное руководство от производителя модуля.

Дополнение. отладочная плата ttgo t-energy с модулем esp32-wrover-b

Когда пост уже был закончен, пришла отладочная плата на базе модуля ESP32-WROVER-B. Полное название платы следующее

nanoFramework ESP32-WROVER-B ESP32-D0WD-V3
Идентификационная информация отладочной платы

На скриншоте видно название чипа ESP32-D0WD-V3 последней ревизии чипа ESP32. Утилита не распознает PSRAM, присутствующую в модуле 8 МБ.

Драйвера датчиков

Многие датчики, используемые для подключения к Arduino, также поддерживаются платформой, среди них: акселерометры, газоанализаторы, счетчики света, барометры, термометры, инфракрасные датчики, гироскопы, компасы, драйверы двигателей, модули NFC и т.д.

Для просмотра полного списка поддерживаемых датчиков посетите страницу документации Список и категории устройств. Устройства – nanoFramework. На GitHub представлены примеры nanoFramework. IoT. Устройство/устройства.

Еще несколько фото

Если будет интересно сообществу, сделаю видео об установке и сборке. Также скоро будет статья о 4х-релейном модуле. Если вы вдруг решите воспользоваться платой в личных целях, буду благодарен за небольшой донат. Плата на самом деле простая, но коммерческое использование оставляю за собой. Также есть у меня в наличии 3 платы, можно договориться и я сделаю сборку и конфиг.

Загрузка среды nanoframework в микроконтроллер esp-wroom-32

Чтобы иметь возможность выполнять . Для того чтобы запустить . NET код на микроконтроллере, необходимо прошить прошивку с помощью nanoFramework. Прошивка выполняется с помощью утилиты

. Установите драйверы микроконтроллера, утилиту и прошейте устройство.

Запуск тестового примера со светодиодом и кнопкой на st nucleo64 f411re

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

LD2 (зеленый светодиодный индикатор)

Ключ -.

Использование событий, устройство — кнопка

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

GPIO25

Отмеченные на доске как “

D25

“. Создайте новый проект

, и добавим Nuget-пакет:

nanoFramework ESP32 STM32
Отладочная плата ESP32 DevKit v1 с подключенной кнопкойФайл Program.cs

Мигаем встроенным светодиодом

На плате ESP32 DevKit v1 размещён встроенный светодиод, подключенный к контакту GPIO2. Запустим программу Blink, аналогичную как на Arduino. Для этого создадим новый проект

, и добавим Nuget-пакет:

. Исходный код взят из

Файл Program.cs.

public class Program
{ private static GpioController s_GpioController; public static void Main() { s_GpioController = new GpioController(); // ESP32 DevKit: 4 is a valid GPIO pin in, some boards // like Xiuxin ESP32 may require GPIO Pin 2 instead. GpioPin led = s_GpioController.OpenPin(2,PinMode.Output); led.Write(PinValue.Low); while (true) { led.Write(PinValue.High); Thread.Sleep(1000); led.Write(PinValue.Low); Thread.Sleep(1000); } }
}

В качестве примера приводим демонстрацию:

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

Настройка среды разработки

На оф. сайте вы можете найти ссылки на два SDK:

» ESP31_RTOS_SDK — SDK для ESP31B, построена на FreeRTOS.» Espressif IDF (IoT Development Framework) — Official development framework for ESP32.

Несмотря на то, что следует из описания на сайте, мы можем использовать ESP-IDF только для релизной версии. Инструкции предоставляются для Windows, Linux и Mac.

У меня 64-битный Ubuntu Linux. Сначала я скачал компилятор:

Неочевидные моменты инсталляции esp32

Поддержка E SP32 отсутствует в Arduino IDE, и пользователи жалуются, что у них ничего не работает. Причина изменения в том, что порядок системных каталогов немного отличается, так как драйверы ESP32 только разрабатываются. В качестве папки для размещения скетчей в настройках Arduino IDE необходимо указать папку

Отладка

Еще хорошие новости – ESP32 имеет интерфейс JTAG на ножках

IO12, IO13, IO14, IO15

. Я попробую использовать его для отладки программ. Это будет темой следующей статьи.

Что ж, нам остается только ждать появления ESP32 в магазинах, стабилизации SDK (надеемся, что изначально он будет гораздо стабильнее, чем ESP8266). Функция Bluetooth также пока недоступна. Скоро (очень скоро, по моей информации) должна появиться бета-поддержка для Arduino IDE и MicroPython, затем Espruino и что-то похожее на NodeMCU.

А вы что думаете?

Перспективы

Легко предсказать, что платы ESP32 со всевозможными форматами и функциональностью начнут расти как грибы после дождя. Вот одна из первых плат OLIMEX

Arduino Mega Server – очень интересная плата, для которой вскоре будет выпущен специальный дистрибутив Arduino Mega Server.

Пишем hello world

Espressif подготовил для нас темплейт проект, так что начать очень просто:

Поддержка устройств

Поддерживаются устройства двух категорий:

(Дополнительная ссылка

). В зависимости от устройства будут доступны все или только некоторые сборки (.NET Assemblies). При выборе обращайте внимание на поддерживаемые функции, такие как:  Gpio, Spi, I2c, Pwm, Adc, Dac, Serial, OneWire, CAN, Events, SWO, Networking, Large Heap и UI.

Очень просто и невероятно доступно начать работу с nanoFramework с помощью нашего модуля ESP-WROOM-32. Помимо того, что этот модуль входит в состав ESP32 DevKit v1, его стоимость не превышает $3,65. Модуль использует SoC-чип ESP32-D0WDQ6 от Espressif и включает 2-ядерный 32-битный процессор Tensilica Xtensa LX6 с 520 КБ SRAM и 448 КБ ROM.

nanoFramework ESP32 DevKit
Отладочная плата ESP32 DevKit v1

При выборе модуля может появиться обозначение модуля, отличное от ESP-WROOM-32, например ESP32-WROOM-32U или ESP32-WROOM-32D. Разница заключается в следующем:

Важно: Обычно на отладочной плате с модулем ESP-WROOM-32 размещаются две кнопки

. EN – перезагрузка, Boot – вручную перевести микроконтроллер в режим загрузки микропрограммы. При нажатии кнопки Boot контакт

GPIO0

В микроконтроллере обходится через

Иордания (массовая)

И в терминале появляется следующий текст

ets Jun 8 2023 00:22:57
rst:0x1 (POWERON_RESET),boot:0x7 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
waiting for download

Встроенные кнопки EN и Boot с помощью модуля ESP-WROOM-32

Некоторые пользователи модулей ESP-WROOM-32 испытывают трудности с переключением микроконтроллера в режим прошивки. Лучше приобретать модули ESP-WROOM-32 с кнопкой Boot.

В недавнем анонсе команда разработчиков nanoFramework описала следующую прошивку для устройств ESP32 как основанную на системе сборки ESP-IDF 4.3.1. Поддержка обеспечивается для всех микроконтроллеров серии ESP32, включая: ESP32_S2, ESP32_S3 и ESP32_C3 (RISC-V).

Теперь легко добавлять библиотеки и функции из ESP-IDF в nanoFramework с помощью новой системы сборки. Теперь можно запускать код на обоих ядрах двухъядерных чипов ESP32. MbedTLS из ESP-IDF был успешно перенесен без потери оптимизации или аппаратных блоков (криптографические вычисления, генерация случайных чисел и т.д.). ).

S TM32 – один из микроконтроллеров, которые поддерживаются сообществом, если у вас недостаточно выводов GPIO. ST Nucleo64 F411RE основан на SoC Cortex-M4@100 МГц с блоками 512 КБ ПЗУ и 128 КБ SRAM.

ST Nucleo64 F411RE
Плата ST Nucleo64 F411RE

Подключение датчика bme280 к шине i2c

Он измеряет атмосферное давление, температуру и влажность с помощью модуля BME280 от Bosch Sensortec. По сравнению с первыми датчиками (BMP085 и BMP180) он имеет лучшие характеристики и меньшие размеры. Этот датчик отличается от BMP280 тем, что к нему прилагается гигрометр, и его можно использовать для создания небольшой метеостанции на основе измерений относительной влажности.

Наполненность контакта:

Модуль работает по двухпроводному интерфейсу I2C, адрес по умолчанию

0x76

. Этот датчик уже использовался в проекте

Поэтому более подробно о характеристиках и шине I2C можно прочитать по указанной выше ссылке. Подключите датчик BME280 к отладочной плате ESP32 DevKit v1.

ESP32 DevKit BME280
Отладочная плата ESP32 DevKit v1 с датчиком BME280

Создадим новый проект

Добавить пакет Nuget для работы с I2C просто:

. Драйвер для работы с BME280 возьмем с каталога драйверов nanoFramework.IoT.Device —

. Удалите драйвер из /libs/ и переместите его в /libs/. Кроме того, команда разработчиков nanoFramework использует библиотеку

Файл Program.cs. Инициализация датчика BME280.

// when connecting to an ESP32 device, need to configure the I2C GPIOs
// used for the bus
Configuration.SetPinFunction(21, DeviceFunction.I2C1_DATA);
Configuration.SetPinFunction(22, DeviceFunction.I2C1_CLOCK);
// bus id on the MCU
const int busId = 1;
I2cConnectionSettings i2cSettings = new(busId, Bme280.SecondaryI2cAddress);
using I2cDevice i2cDevice = I2cDevice.Create(i2cSettings);
using Bme280 bme80 = new Bme280(i2cDevice)
{ // set higher sampling TemperatureSampling = Sampling.LowPower, PressureSampling = Sampling.UltraHighResolution, HumiditySampling = Sampling.Standard,
};
// set this to the current sea level pressure in the area for correct altitude readings
Pressure defaultSeaLevelPressure = WeatherHelper.MeanSeaLevel;

Давайте посмотрим пример файла Program.cs

. Считывание данных с датчика BME280.

// Perform a synchronous measurement
var readResult = bme80.Read();
// Note that if you already have the pressure value and the temperature, you could also calculate altitude by using
// var altValue = WeatherHelper.CalculateAltitude(preValue, defaultSeaLevelPressure, tempValue) which would be more performant.
bme80.TryReadAltitude(defaultSeaLevelPressure, out var altValue);
Debug.WriteLine($"Temperature: {readResult.Temperature.DegreesCelsius}u00B0C");
Debug.WriteLine($"Pressure: {readResult.Pressure.Hectopascals}hPa");
Debug.WriteLine($"Altitude: {altValue.Meters}m");
Debug.WriteLine($"Relative humidity: {readResult.Humidity.Percent}%");

Давайте рассмотрим один из примеров:

Давайте начнем работу над проектом:

nanoFramework BME280
Чтение данных с датчика BME280 на nanoFramework

Отображение данных будет осуществляться с помощью OLED-дисплея SSD1306 с разрешением 128×64 точки. К сожалению, все не так просто. Дисплей поставляется в двух вариантах, I2C и I2C/SPI. Мы приобрели второй вариант.

В версии I2C/SPI управление шиной I2C было уникально тем, что для инициализации требовался дополнительный контакт. В примере с Arduino логика инициализации была передана, но что-то пошло не так, поскольку инициализация не прошла. Подключайте SSD1306 только к шине I2C при использовании проектов nanoFramework (драйверы – SSD13xx & SSD1316)

Подключение нескольких ds18b20 к esp32

В первую очередь, включаются необходимые библиотеки:

Создаются необходимые экземпляры библиотек для датчика температуры. Датчик температуры подключается к линии ввода-вывода общего назначения GPIO 15.

Запуск библиотеки DallasTemperature для датчика DS18B20.

Далее, ввод адресов, которые мы узнали ранее, для каждого датчика температуры. В нашем случае получилось следующее:

Функция setup() инициализирует последовательную линию связи и запускает библиотеку DallasTemperature для датчика DS18B20.

В функции loop() производится запрос показаний температуры и в градусах Цельсия, и в градусах Фаренгейта и вывод показаний в окно последовательного COM-порта (Serial Monitor).
В первую очередь вам необходимо запросить показания температуры с помощью следующей строки кода:

Далее, вы можете запросить показание температуры, используя адреса датчиков:

  • sensors.getTempC(SENSOR_ADDRESS) — запрос показания температуры в градусах Цельсия;
  • sensors.getTempF(SENSOR_ADDRESS) — запрос показания температуры в градусах Фаренгейта.

Например, чтобы запросить показание температуры в градусах Цельсия от датчика 1, используйте следующее:

Где sensor1 — переменная, содержащая адрес первого датчика.

Этот код лишь простой набросок, признанный показать, как получить показания температуры от нескольких датчиков DS18B20, используя отладочную плату ESP32. Это программный код также подходит для ESP8266 и различных платформ Arduino.

У вас не получается что-то подключить или вылезают ошибки? Пишите в комментарии, мы постараемся вам помочь! Удачных компиляций и интересных проектов!

Преимущества esp32

Давайте сравним ESP32 с его предшественником, ESP8266. Я не буду затрагивать такие очевидные вещи, как скорость процессора и объем оперативной памяти, вместо этого я просто отмечу, что вам придется очень постараться, чтобы полностью загрузить ESP32 для задач DIY и домашней автоматизации.

Прочие достоинства

E SP32 – это высокотехнологичное устройство, и даже сухое перечисление его возможностей заняло бы не одну страницу, а описание его преимуществ и особенностей – целую книгу. Чтобы не перегружать статью, я приведу несколько примеров работы с кодом ESP32 в среде Arduino.

Прочие примеры кода на esp32

Помимо полноценной операционной системы, дистрибутив Arduino Mega Server, ссылку на который я даю в конце этой статьи, поставляется с проверенным и испытанным кодом для использования с модулем ESP32. Используйте его в качестве руководства для начала программирования ESP32.

Скорость работы

Пришло время немного поговорить о скорости работы сети, раз уж процессор такой мощный. Модуль ESP32 под управлением Arduino Mega Server показал рекордную сетевую производительность, что бы ни было причиной. Может быть, дело в мощном процессоре, может быть, в оптимизации сетевого стека.

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

С этим изменением Arduino Mega Server больше не будет иметь ограничений на использование графики и библиотек JavaScript, как по размеру, так и количеству.

Собираем и заливаем на плату

Настройка среды для создания проекта – это первый шаг:

cd ~/myapp
export PATH=/opt/Espressif/xtensa-esp32-elf/bin:$PATH
export IDF_PATH=/opt/Espressif/esp-idf

Включите питание, подключите плату и посмотрите, какой порт появится (в моем случае это был /dev/ttyUSB3). Запустите конфигуратор:

make menuconfig

Надо зайти в «Serial flasher config» и установить «Default serial port» на порт платы. Можно еще посмотреть другие настройки.

Вот и все, уберите его и уходите.

Компилируем:

make

Если все прошло успешно, вылейте его на доску следующим образом:

make flash

Подключаемся к плате используя Putty (screen, или другой эмулятор терминала). Передергиваем питание, и видим:

Начальная инициализация
ets Jun 8 2023 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
ets Jun 8 2023 00:22:57
rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0x00
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:QIO, clock div:2
load:0x3ffc0000,len:0
load:0x3ffc0000,len:2268
load:0x40078000,len:3788
load:0x40098000,len:532
entry 0x4009813c
**************************************
* hello espressif ESP32! *
* 2nd boot is running! *
* version (V0.1) *
**************************************
compile time 18:10:20 SPI Speed : 40MHz SPI Mode : QIO SPI Flash Size : 4MB
Partition Table:
## Label Usage Type ST Offset Length 0 factory factory app 00 00 00010000 00100000 1 rfdata RF data 01 01 00110000 00040000 2 wifidata WiFi data 01 02 00150000 00040000
End of partition table
Loading app partition at offset 00010000
section 0: paddr=0x00000020 vaddr=0x00000000 size=0x0ffe8 ( 65512)
section 1: paddr=0x00010010 vaddr=0x3f400010 size=0x086fc ( 34556) map
section 2: paddr=0x00018714 vaddr=0x3ffba950 size=0x01248 ( 4680) load
section 3: paddr=0x00019964 vaddr=0x40080000 size=0x00400 ( 1024) load
section 4: paddr=0x00019d6c vaddr=0x40080400 size=0x1326c ( 78444) load
section 5: paddr=0x0002cfe0 vaddr=0x00000000 size=0x03030 ( 12336)
section 6: paddr=0x00030018 vaddr=0x400d0018 size=0x2c540 (181568) map
start: 0x4008078c
Initializing heap allocator:
Region 19: 3FFBBB98 len 00024468 tag 0
Region 25: 3FFE8000 len 00018000 tag 1
Pro cpu up.
Pro cpu start user code
nvs_flash_init
misc_nvs_load g_misc_nvs=0x3ffbbd04
frc2_timer_task_hdl:3ffbc880, prio:22, stack:2048
tcpip_task_hdlxxx : 3ffbe62c, prio:20,stack:2048
phy_version: 80, Aug 26 2023, 13:04:06, 0
pp_task_hdl : 3ffc3360, prio:23, stack:8192
[213450] low
[1212827] high
[2212827] low
[3212828] high
[4212828] low

Если подключить светодиод к

IO18

Также мигает. Итак, наш код работает!

Создание первого приложения

Запустим Visual Studio 2023 Community Edition и откроем окно

Исследователь Энхеда

. Выполните команду

Возможности прибора

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

nanoFramework ESP-WROOM-32
Информация о возможностях ESP-WROOM-32

Полный список вывода команды Device Capabilities для ESP-WROOM-32

Информация о работе системы

Информация о сборке HAL: nanoFramework запускается на ESP32

Target: ESP32_WROOM_32_BLE

Platform: ESP32

Firmware build Info:
Date: Aug 25 2023
Type: MinSizeRel build with IDF v3.3.5
CLR Version: 1.7.0.618
Compiler: GNU ARM GCC v5.2.0

OEM Product codes (vendor, model, SKU): 0, 0, 0

Serial Numbers (module, system):
00000000000000000000000000000000
0000000000000000

Target capabilities:
Has nanoBooter: NO
IFU capable: NO
Has proprietary bootloader: YES

Сферы применения:

Сборки

Native Assemblies:
mscorlib v100.5.0.12, checksum 0x132BDB6F
nanoFramework.Runtime.Native v100.0.8.0, checksum 0x2307A8F3
nanoFramework.Hardware.Esp32 v100.0.7.2, checksum 0x1B75B894
nanoFramework.Hardware.Esp32.Rmt v100.0.3.0, checksum 0x9A53BB44
nanoFramework.Hardware.Esp32.Ble v100.0.0.0, checksum 0x1B75B894
nanoFramework.Devices.OneWire v100.0.3.4, checksum 0xA5C172BD
nanoFramework.Networking.Sntp v100.0.4.4, checksum 0xE2D9BDED
nanoFramework.ResourceManager v100.0.0.1, checksum 0xDCD7DF4D
nanoFramework.System.Collections v100.0.0.1, checksum 0x5A31313D
nanoFramework.System.Text v100.0.0.1, checksum 0x8E6EB73D
nanoFramework.Runtime.Events v100.0.8.0, checksum 0x0EAB00C9
EventSink v1.0.0.0, checksum 0xF32F4C3E
System.IO.FileSystem v1.0.0.0, checksum 0x3112D24C
System.Math v100.0.5.2, checksum 0xC9E0AB13
System.Net v100.1.3.4, checksum 0xC74796C2
Windows.Devices.Adc v100.1.3.3, checksum 0xCA03579A
System.Device.Dac v100.0.0.6, checksum 0x02B3E860
System.Device.Gpio v100.1.0.4, checksum 0xB6D0ACC1
Windows.Devices.Gpio v100.1.2.2, checksum 0xC41539BE
Windows.Devices.I2c v100.2.0.2, checksum 0x79EDBF71
System.Device.I2c v100.0.0.1, checksum 0xFA806D33
Windows.Devices.Pwm v100.1.3.3, checksum 0xBA2E2251
Windows.Devices.SerialCommunication v100.1.1.2, checksum 0x34BAF06E
System.IO.Ports v100.1.1.3, checksum 0x61B8380C
Windows.Devices.Spi v100.1.4.2, checksum 0x360239F1
System.Device.Spi v100.1.0.0, checksum 0x48031DC5
Windows.Devices.Wifi v100.0.6.2, checksum 0xA94A849E
Windows.Storage v100.0.2.0, checksum 0x954A4192

Карта областей памяти

Тип Размер начала

RAM 0x3ffe436c 0x00016800
FLASH 0x00000000 0x00400000

Карта сектора флэш-памяти

Регион Начальный блок Байты/Использование блока

0 0x00010000 1 0x180000 nanoCLR
1 0x00190000 1 0x230000 Deployment
2 0x003C0000 1 0x040000 Configuration

Карта использования ресурсов хранения

Первоначальный размер (КБ) Использование

0x003C0000 0x040000 (256kB) Configuration
0x00010000 0x180000 (1536kB) nanoCLR
0x00190000 0x230000 (2240kB) Deployment

Deployment Map
Empty

Из полученных данных наиболее важным является следующий список

Собрания коренных народов

. Ниже перечислены сборки, которые мы можем использовать в вашем проекте, все остальные библиотеки должны быть включены в исходный код. Также можно создать прошивку с собственными родными сборками на C, но процедура будет описана в следующей главе.

Создайте новое приложение, выберите тип проекта: Пустое приложение (nanoFramework)

nanoFramework Blank Application
Шаблон проекта Blank Application (nanoFramework)

Проект шаблона выведет отладочное сообщение на консоль.

nanoFramework Blank Application
Шаблонный проект nanoFramework

Реализация проекта по санитарии

debugging nanoFramework
Отладка проекта nanoFramework

В окне отладки отображается сообщение: “Привет от nanoFramework!

Отлично, первое приложение запущено! Далее запустим стандартную программу мигания светодиодов.

Спецификации

Если вам нужны полные технические характеристики ESP32, вы легко найдете их в Интернете: каждый рецензент считает своим долгом привести в начале обзора полную таблицу технических характеристик ESP32. Могу лишь сказать, что они впечатляют, и вы можете потратить несколько лет на изучение всех возможностей модуля и эксперименты с ним, если подойдете к делу серьезно и вдумчиво.

Оставим это профессионалам (или тем, кто считает себя профессионалом) и сосредоточимся на практической стороне дела, понятной и доступной простым смертным.

Список для самостоятельной распайки

Hilink 220v -> 5. – 1шт.Esp32 30 pin, на моей написано devkitv1 – 1 шт.Стойка PCHSS-6 – 2шт.Стойка PCHSN-20 – 2шт.Клеммник KF301-2P – 1шт.Клеммник XY301V-A-3P 5.08 мм синий – 6 шт.Болт m3 – 2 шт.Резистор smd 0805 10K – 6 шт.Конденсатор 0805 4.7 nf 50V – 6 шт.

Разъем 2.54 мм PBS-1×16 (PBS-16) – 2 шт.Все позиции я покупал в магазине Проконтакт, как выглядят разъемы можно посмотреть там.

Прототип проработал больше полугода и потом был заменен на фабричную плату.

Все не дойдут руки красиво убрать.

Сравнение переносимости кода между проектами .net iot для linux и nanoframework

Основой проекта послужил NanoFramework. После этого Microsoft прекратила разработку NET Micro Framework. Оригинал до сих пор доступен только через компанию GHI Electronics. Сохраняется преемственность старого кода с NET Micro Framework. Что касается разработчиков NanoFramework, то они взяли основную идею и структуру внутренней реализации и, отбросив прошлое, разработали платформу, совместимую с API в “больших” фреймворках . NET IoT. В результате был решен ряд проблем:

Стопроцентной переносимости не будет из-за малых ресурсов микроконтроллеров, но вычислительная мощность растет, поэтому в будущем совместимость, вероятно, будет только улучшаться.

В качестве примера тестирования совместимости, для проекта . NET IoT класс Button (nanoFramework). IoT. Было взято устройство, позволяющее подписываться на события одиночного и двойного нажатия, наряду с возможностью фильтрации разговоров о кнопках. /libs/Button/ содержит классы драйвера Button в проекте dotnet-iot-button-from-nanoframework.

dotnet iot button
Кнопка для проекта dotnet-iot-button-from-nanoframework

Кнопка подключена к GPIO38 на одноплатном компьютере Banana Pi BPI-M64, как в проекте Управление пинами GPIO из C#. Одноплатные компьютеры Banana Pi M64 (ARM64) и Cubietruck (ARM32) могут работать под управлением NET 5. Вот как должен выглядеть код в файле Program.cs:

Файл Program.cs.

//for Linux
const int GPIOCHIP = 1;
const int BUTTON_PIN = 38;
GpioController controller;
var drvGpio = new LibGpiodDriver(GPIOCHIP);
controller = new GpioController(PinNumberingScheme.Logical, drvGpio);
// Initialize a new button with the corresponding button pin
GpioButton button = new(buttonPin: BUTTON_PIN,controller);
Debug.WriteLine("Button is initialized, starting to read state");
....

Единственным отличием от nanoFramework, не считая других номеров выводов, является выбор драйвера для доступа к GPIO. Вы можете выбрать один из следующих драйверов для ОС: LibGpiodDriver, RaspberryPi3Driver и SysFsDriver. Затем из строки

GpioButton button = new(buttonPin: BUTTON_PIN,controller)

Все вызовы функций в исходном коде не отличаются от реализации для nanoFramework. Все работает идеально!

dotnet iot Visual Studio Code
Запуск проекта в Visual Studio Code с драйвером Button из nanoFramework в проекте .NET IoT для Linux

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

Стабильность работы

Сервер Arduino Mega Server для ESP8266 тестировался в течение нескольких месяцев и является абсолютно стабильным. У меня нет причин полагать, что модуль ESP32 может иметь проблемы со стабильностью. По крайней мере, за весь период производства дистрибутива AMS для ESP32 я не встретил ни одного сбоя или несанкционированного сброса модуля. Все проходит очень гладко и предсказуемо.

Установка расширения

Для создания приложений для nanoFramework необходимо установить Microsoft Visual Studio Community 2023 Version 16.11. NET платформы, Windows 10 (в Windows 7 панель Device Explorer отсутствует). Стандартно расширение устанавливается через меню:

Extensions -> Manage Extensions

. Название расширения :

Extension nanoFramework
Расширение nanoFramework для Microsoft Visual Studio

После установки расширения вы сможете получить доступ к Проводнику устройств (меню Вид -> Другие окна -> Проводник устройств). Это окно включает три опции: Ping Device, Device Capabilities, Erase App.

nanoFramework Device Explorer
Панель Device Explorer расширения nanoFramework

Держите:

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

CPU:

Xtensa Dual-Core 32-разрядный LX6, 160 МГц или 240 МГц (до 600 DMIPS).

Память :

520 KByte SRAM, 448 KByte ROM

Flash

на модуле: 1, 2, 4… 64 Мб

Беспроводные сети:Периферийные интерфейсы:Безопасность:

На картинке это выглядит так:

Более подробная (и практически полная) информация

. ESP32 будет (по крайней мере) доступен в нескольких формах:

» Модуль ESP-WROOM-32 ($5 ?)

Распиновка | Техническое описание

“Модуль AI-Thinker ESP3212, аналогичный ESP-12F ($6,9). ESP3212 не имеет ножек для карт памяти SD, в отличие от WROOM-32.

Библиотека Eagle | Библиотека KiCAD

Чип ESP32-D0WDQ6 ($2.8 ?) | Datasheet

Стоит отметить, что до выпуска ESP32, чип ESP31B (тестовая версия) был доступен в виде модуля ESP-WROOM-03 от Espressif и в Интернете его часто путают с ESP32.

Внимание. ESP32 относится к ESP31B, и это не одно и то же. До 09.2023 почти все ссылки на ESP32 относятся к ESP31B.

Цена вопроса

Начнем с цены. В настоящее время китайские интернет-магазины продают модуль ESP32 за 350 рублей, а версия платы с USB и обвязкой стоит 500 рублей. Для сравнения, модуль ESP8266 стоит 100 и 160 рублей. Поскольку разница более чем в три раза, несмотря на относительно низкие абсолютные значения, большинство людей могут позволить себе приобрести микроконтроллер за 350 – 500 рублей.

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

Шаг 1 — подключение st nucleo64 f411re

Перед подключением микроконтроллеров STM32 необходимо установить драйвер для отладчика/программатора ST-Link, для этого установите драйверы

И подключите устройство. После подключения устройство должно появиться в диспетчере устройств

ST-Link DebugDevice Manager STM32
Диспетчер устройств

Теперь вы можете запустить команду обнаружения устройства ST-Link:

nanoff --listjtag

Результат выполнения команды:

Device Manager STM32 ST-Link
Обнаруженные устройства ST-Link

Проверьте, есть ли карта в списке, и переходите к следующему шагу.

Шаг 1 — установка драйвера для моста cp2102 usb to uart

Если при подключении отладочной платы ESP32 DevKit v1 через USB вы видите, что

Диспетчер устройства

Микроконтроллер располагается в узле

Другое оборудование

В этом случае вам нужно установить драйвер.

Device Manager ESP32
Диспетчер устройств

Загрузите драйвер с официального сайта CP210x USB to UART Bridge VCP Drivers и установите его. После установки драйвера микроконтроллер становится доступен через порт COM3.

Device Manager ESP32
Диспетчер устройств

При попытке загрузить nanoFramework в микроконтроллер мы можем увидеть аналогичную ошибку, указывающую на то, что необходимо обновить прошивку ST-Link Debug.

update ST-Link Debug
Сообщение о необходимости обновления прошивки ST-Link Debug

Загружаем и запускаем STM32 ST-LINK utility. Выбираем в меню ST-LINK -> Firmware update.

update ST-Link Debug
STM32 ST-LINK utility

Нажмите Подключить устройство, затем Да >>>>.

update ST-Link Debug
STM32 ST-LINK utility

При успешной загрузке микропрограммы появится сообщение об успехе обновления.

update ST-Link Debug
STM32 ST-LINK utility

Чтобы получить помощь на этом этапе, вы можете посмотреть видеоурок ST Link Update – Web-обучение.

Шаг 2 — установка утилиты nanofirmwareflasher

Теперь установите программу

nanoFirmwareFlasher

Для этого запустите командную строку с правами администратора и выполните команду:

dotnet tool install -g nanoff

Для вызова справки выполнить команду:

nanoff --help

Эта команда используется для обновления утилиты:

dotnet tool update -g nanoff

Шаг 3 — прошивка st nucleo64 f411re

Чтобы прошить его, нужно выполнить команду:

nanoff --update --target ST_NUCLEO64_F411RE_NF --jtag

Где показатель

-цель .

Указывает идентификатор прошивки.

nanoFramework ST Nucleo64 F411RE
Прошивка ST Nucleo64 F411RE

Теперь запустим Visual Studio Community и выполним команду Device Capabilities.

nanoFramework ST Nucleo64 F411RE
Информация о возможностях ST Nucleo64 F411RE

Полный список вывода команды Device Capabilities для ST Nucleo64 F411RE

Системные данные

Информация о конструкции HAL: nanoCLR работает с ST_NUCLEO64_F411RE_NF.

Target: ST_NUCLEO64_F411RE_NF

Platform: STM32F4

Firmware build Info:
Date: Oct 22 2023
Type: MinSizeRel build with ChibiOS v21.6.0.6
CLR Version: 1.7.0.96
Compiler: GNU ARM GCC v9.3.1

OEM Product codes (vendor, model, SKU): 0, 0, 0

Serial Numbers (module, system):
00000000000000000000000000000000
0000000000000000

Target capabilities:
Has nanoBooter: YES
nanoBooter: v21845.21845.21845.21845
IFU capable: NO
Has proprietary bootloader: NO

Области применения:

Assemblies:
nanoframework_stm32_button, 1.0.0.0
mscorlib, 1.10.5.4
nanoFramework.Runtime.Events, 1.9.1.3
Windows.Devices.Gpio, 1.5.2.3

Native Assemblies:
mscorlib v100.5.0.12, checksum 0x132BDB6F
nanoFramework.Runtime.Native v100.0.8.0, checksum 0x2307A8F3
nanoFramework.Hardware.Stm32 v100.0.4.4, checksum 0x0874B6FE
nanoFramework.ResourceManager v100.0.0.1, checksum 0xDCD7DF4D
nanoFramework.System.Collections v100.0.0.1, checksum 0x5A31313D
nanoFramework.System.Text v100.0.0.1, checksum 0x8E6EB73D
nanoFramework.Runtime.Events v100.0.8.0, checksum 0x0EAB00C9
EventSink v1.0.0.0, checksum 0xF32F4C3E
System.Math v100.0.5.2, checksum 0xC9E0AB13
Windows.Devices.Adc v100.1.3.3, checksum 0xCA03579A
Windows.Devices.Gpio v100.1.2.2, checksum 0xC41539BE
Windows.Devices.I2c v100.2.0.2, checksum 0x79EDBF71
System.Device.I2c v100.0.0.1, checksum 0xFA806D33
Windows.Devices.SerialCommunication v100.1.1.2, checksum 0x34BAF06E
System.IO.Ports v100.1.2.0, checksum 0x564F2452
Windows.Devices.Spi v100.1.4.2, checksum 0x360239F1
System.Device.Spi v100.1.0.0, checksum 0x48031DC5

Memory Map

Тип Стартовый размер

RAM 0x20000000 0x00020000
FLASH 0x08000000 0x00080000

Карта секторов флэш-памяти

Регион Начало Регион Блоки Байт/Блоки Использование

0 0x08000000 1 0x004000 nanoBooter
1 0x08004000 3 0x004000 nanoCLR
2 0x08010000 1 0x010000 nanoCLR
3 0x08020000 1 0x020000 nanoCLR
4 0x08040000 2 0x020000 Deployment

Карта использования хранилища данных

Начальный размер (Кб) Использование

0x08000000 0x004000 (16kB) nanoBooter
0x08004000 0x03C000 (240kB) nanoCLR
0x08040000 0x040000 (256kB) Deployment

Deployment Map
Empty

Данные показывают, что наноКЛР работает при

v21.6.

Шаг 4 — выбор прошивки

Теперь переходим к самому сложному шагу. Для серии ESP32 существует несколько

Expressif производит SoC-чипы, которые впоследствии встраиваются в модули. Обратимся к описанию

На официальном сайте. На основе этих чипов созданы модули серии ESP32:

Чипы ESP32-D0WD и ESP32-D0WDQ6 по функциональности ничем не отличаются, различие заключается только в форм-факторе самого чипа.

Давайте сравним модули. Помимо ESP32-D0WD-V3 и ESP32-D0WD, существуют также модули ESP32-WROOM и ESP32-WROVER. Только PSRAM на ESP32-WROVER отличает его от ESP32-WROOM.

P CIe SRAM – это дополнительный чип оперативной памяти, впаянный поверх встроенной памяти. В описании платы указывается, 2 или 8 МБ. В модулях ESP-WROVER-KIT с LCD ILI9341 на SPI интерфейсе дополнительная оперативная память требуется для вывода с помощью WPF (поддерживается в модулях с LCD ILI9341 на SPI интерфейсе).

Доступная прошивка (целевая) nanoFramework:

  • ESP32_REV0 – (DEV) предназначен для всех плат ESP32 без поддержки PSRAM;
  • ESP32_REV3 – (DEV) предназначен для всех плат ESP32 с чипом ESP32 версии/ревизии 3 и без поддержки PSRAM;
  • ESP32_PSRAM_REV0 – (DEV) предназначен для всех плат ESP32 с поддержкой PSRAM;
  • ESP32_PSRAM_REV3 – (DEV) предназначен для всех плат ESP32 с чипом ESP32 версии/ревизии 3 и поддержкой PSRAM;
  • ESP32_WROOM_32 – предназначен для всех плат ESP32 с поддержкой PSRAM, но не поддерживает Bluetooth BLE из-за ограничений памяти в секции IRAM, вызванных патчами PSRAM;
  • ESP32_WROOM_32_BLE – подходит для всех плат ESP32, поддерживает Bluetooth BLE, но PSRAM отключен;
  • ESP32_WROOM_32_V3_BLE – подходит для всех плат ESP32 с чипом ESP32 v/V3, PSRAM и поддержкой Bluetooth BLE;
  • ESP32_PSRAM_REV3_ILI9341 – (указан в документации, но прошивка не найдена) подходит для всех плат ESP32 с чипом ESP32 v/V3 и поддержкой PSRAM, включает драйвер для ЖК-дисплея ILI9341;
  • ESP32_PSRAM_REVAM3_ILI9342 – (упоминается в документации, но прошивка не найдена) подходит для всех плат ESP32 с ESP32 v/version 3 и поддержкой PSRAM, включает драйвер для LCD ILI9342;
  • ESP_WROVER_KIT – специальный вариант для отладочной платы ESP WROVER KIT. Содержит функции пользовательского интерфейса, поддержку PSRAM и драйвер SPI для LCD ILI9341;
  • ESP32_PICO – подходит для всех плат ESP32 PICO без поддержки PSRAM, таких как ESP32-PICO-KIT и M5Stack ATOM;
  • ESP32_PICO_ST7735S – (указан в документации, но прошивка не найдена) подходит для плат ESP32 PICO, содержит драйвер для LCD ST7735S;
  • ESP32_PICO_ST7789V – (упоминается в документации, но прошивка не найдена) подходит для платы M5Stick C Plus, включает драйвер для LCD ST7789V;
  • ESP32_REV0_ILI9342 – (упоминается в документации, но прошивка не найдена) подходит для платы M5Stack, включает драйвер для ILI9342;
  • ESP32_LILYGO – специальный вариант для отладочной платы LilyGO ESP32, включает поддержку Ethernet PHY.

Перенесем из документации сводную таблицу основных прошивок с описанием опций:

Давайте посмотрим информацию о чипе для модуля ESP32 DevKit v1 (снимок экрана в шаге 2).

Исходя из полученной информации, подойдут прошивки: ESP32_REV0 и ESP32_WROOM_32_BLE. Из двух прошивок выбираем

ESP32_WROOM_32_BLE

, т. к. поддержка Bluetooth BLE будет не лишней.

Рекомендуется выбрать универсальные прошивки ESP32_REV0 и ESP32_PSRAM_REV0, если вы не знаете, какую прошивку выбрать.

Список образов прошивок доступен в репозитории: nanoframework-images. Список прошивок только для Espressif ESP32 Series. Это список прошивок, доступных на странице Nanoframework/nf-Interpreter на GitHub.

Шаг 5 — прошивка esp-wroom-32

Подключите отладочную плату к компьютеру и запустите следующую команду:

nanoff --update --target ESP32_WROOM_32_BLE --serialport COM3

В которой параметр

-цель

Означает идентификатор прошивки,

– последовательный порт.

Номер порта COM, здесь COM3.

Результат исполнения команды :

nanoFramework firmware ESP-WROOM-32
Прошивка ESP-WROOM-32

Если прошивка не загружается из репозитория, повторите операцию или загрузите ее снова со страницы ESP32_WROOM_32_BLE, и распакуйте ее, например, в c:nanofw. Архив будет содержать следующие файлы:

nanoFramework firmware ESP-WROOM-32
Распакованная прошивка для ESP-WROOM-32

Выполните следующую команду, чтобы использовать локальную прошивку:

nanoff --update --clrfile "C:nanofwnanoCLR.bin" --serialport COM3

В котором параметр

–clrfile

— путь к файлу nanoCLR.bin,

-Последовательный порт

Номер текущего COM-порта, который в этом случае равен 3.

Когда начнется процесс прошивки, не забудьте нажать кнопку “Boot”. Устройство готово к загрузке . NET программы!

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

Для Arduino Mega она обычно называется EEPROM. В ESP32 этой памяти нет, но в модуле есть ее аналог и соответствующая библиотека для работы с ней. Энергонезависимая память (NVS) – это термин, используемый для описания этой памяти.

Для нас это не имеет значения – вы можете считать значения сразу после выключения и включения контроллера.

Пример использования. Подключение библиотеки:

#include <Preferences.h>

Создание объекта prefs

Preferences prefs;

Инициализирует архив идентификатором типа “nvs”:

prefs.begin("nvs", false);

False относится к выбору режима чтения/записи, в данном случае и чтение, и запись. Байт сохраняется под именем “addr”:

prefs.putUChar("addr", 65);

Читаем сохранённый байт:

byte b = prefs.getUChar("addr", 0);

Любой другой тип данных также может быть сохранен и прочитан таким образом. Теперь удалите хранилище.

prefs.remove("nvs");

На самом деле, это даже проще, чем использование стандартной энергонезависимой EEPROM в контроллерах Arduino.

Заключение

Я не так много могу сказать о новом модуле ESP32 и о том, как он работает с платой Arduino. В целом, у меня осталось очень положительное впечатление; с ним очень приятно и интересно работать. Отсутствие библиотек поддержки датчиков и периферии немного испортило мне настроение, но это временно. Скоро все будет в порядке.

Шаг 3 — вывод идентификационной информации для отладочной платы

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

nanoff --platform esp32 --serialport COM3 --devicedetails

Где показатель

–platform

Указывает цель платформы,

-серийный порт

В этом случае COM3 – это номер COM-порта.

Результат исполнения приказа:

nanoFramework ESP32
Идентификационная информация отладочной платы

Очень важно, чтобы вы нажали кнопку BOOT на плате, когда появится фиолетовая строка “*** Hold down the BOOT/FLASH button in the ESP32 board ***”. В противном случае команда не будет выполнена.

Согласно выходным данным, плата оснащена чипом ESP32-D0WDQ6 с 4 МБ флэш-памяти, а также модулями Wi-Fi и Bluetooth.

Оцените статью
Радиокоптер.ру
Добавить комментарий