Используйте платформу Piranha Set ESP32 на модуле Espressif ESP32-S для создания устройств на базе интернета вещей. Например, плата станет отличным контролером умного дома, веб-сервером для отображения показаний датчиков или мозгом робота управляемого по Wi-Fi или Bluetooth.
Что такое Trema и Set?
При сборке DIY-устройств зачастую приходится ломать голову над подключением очередного модуля к контроллеру. На поиск распиновки, подбор габаритов и изучения интерфейса каждого модуля тратится много времени и часто отбивает желание воплотить идею в жизнь.
Мы решили помочь начинающим пользователям и придумали экосистему Trema, где каждый модуль выполнен в унифицированном форм-факторе и подключается к контроллеру через специальный шлейф. Проработана также программная часть — для работы с Trema-модулем не нужно изучать даташит и прорабатывать протокол, доступ ко всем нужным данным осуществляется через простые для понимая функции.
А если хочется избавиться от проводов полностью, встречайте экосистему Set, которая является дополнением функционала Trema-модулей. Подключение напомнит сборку конструктора — просто устанавливаете модули в соответствующие ячейки и устройство готово.
Подробности
Платформа для разработки Piranha Set ESP32 выполнена на модуле ESP32-S c чипом ESP32-D0WDQ6. Кристалл SoC ESP32-D0WDQ6 работает на тактовой частоте до 240 МГц с поддержкой беспроводных технологий Wi-Fi 802.11 b/g/n и Bluetooth v4.2 с BLE.
На плате расположено четыре посадочных места для подключения Trema-модулей среди которых вы найдете сенсоры, дисплеи, кнопки и прочие элементы.
Процесс напоминает сборку конструктора — просто устанавливаете модули в соответствующие ячейки. И самое важное никаких макетных плат, пайки и проводов. Всего пара минут и устройство готово.
Для надёжной фиксации, рекомендуем закреплять Trema-модули к Piranha Set ESP32 с помощью стоек и винтов.
Каждая из четырёх ячеек даёт доступ к разным контактам и интерфейсам.
- Всего контактов: 14
- Контакты ввода-вывода GPIO: 12
- Контакты ввода GPI: 2
- Контакты с ШИМ: 12 с разрядностью до 16 бит (по умолчанию 8 бит)
- Контакты с АЦП: 8 с разрядностью до 16 бит (по умолчанию 14 бит)
- Контакты с ЦАП: 2 с разрядностью 8 бит
- Возможность сконфигурировать интерфейсы: 3×UART, 3×SPI, 2×I²C и 2×I²S
На плате также распаяна электронная обвязка, которая даёт всем пинам ввода-вывода совместимость с 5 вольтовой логикой.
Все подробности по контактам и интерфейсам платформы читайте в текущей статье в разделе распиновка.
Подключение и настройка
- Подключите платформу Piranha Set ESP32 к компьютеру через кабель micro-USB. При успешном подключении должен загореться индикаторный светодиод PWR.
- Скачайте и установите среду программирования Arduino IDE.
- По умолчанию IDE настроена только на AVR-платы. Для работы с платформой Piranha Set ESP32 — добавьте в менеджере плат поддержку платформ ESP32 Arduino.
- Если при подключении контроллера Piranha Set ESP32 в Arduino IDE не появляется новый COM-порт, установите драйвер USB-UART преобразователя для Windows 7 или Windows 10.
- На этом настройка закончена, смело переходите к примерам работы.
Примеры работы
Маячок
Для начала сделаем привычный «Hello, world» в DIY-мире — соберем маячок.
Что понадобится
Схема устройства
Установите светодиод на Piranha Set ESP32 в ячейку к сигнальному пину 13.
Исходный код
Прошейте платформу Piranha Set ESP32 кодом ниже.
// GPIO пин, к которому подключен светодиод constexpr int PIN_LED = 13; void setup() { // Настраиваем пин со светодиодом в режим выхода pinMode(PIN_LED, OUTPUT); } void loop() { // Зажигаем светодиод digitalWrite(PIN_LED, HIGH); // Ждём 1000 мс delay(1000); // Гасим светодиод digitalWrite(PIN_LED, LOW); // Ждём 1000 мс delay(1000); }
Результат
После прошивки, светодиод начнёт мигать раз в секунду.
Интернет часы
Мигать светодиодом можно на любой ардуинке. Давайте соберём что то связано с IoT, например интернет часы.
Что понадобится
- 1× Piranha Set ESP32
- 1× Кабель USB (A — Micro USB)
- 1× Четырехразрядный LED-индикатор Flash-I²C (Trema-модуль)
Схема устройства
Установите LED-индикатор Flash-I²C на Piranha Set ESP32 в ячейку к сигнальным пинам I²C — SDA и SCL.
Исходный код
Прошейте платформу Piranha Set ESP32 кодом ниже.
// Подключаем библиотеки для Piranha ESP32 #include <WiFi.h> #include "time.h" #include "sntp.h" // Подключаем библиотеку для LED-индикатора Flash-I²C #include <iarduino_I2C_4LED.h> // Создаём объект для работы с LED-индикатором // Передаём I²C по умолчанию 0x09 iarduino_I2C_4LED display4LED(0x09); // Задаём точку доступа Wi-Fi сети и пароль const char* ssid = "your ssid"; const char* password = "your password"; // Задаём сервера для получения времени const char* ntpServer1 = "pool.ntp.org"; const char* ntpServer2 = "time.nist.gov"; // Устанавливаем временную зону TZ_Europe_Moscow // Найти вашу временную зону можно тут: // https://github.com/esp8266/Arduino/blob/master/cores/esp8266/TZ.h const char* time_zone = "MSK-3"; void setup() { // Открываем Serial-порт Serial.begin(9600); // Инициализируем четырехразрядный LED-индикатор display4LED.begin(); // Подключаемся к Wi-Fi сети Serial.printf("Connecting to %s ", ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } // Выдаём сообщение об успешном подключении Serial.println("\nСonnected"); // Устанавливаем временную зону configTzTime(time_zone, ntpServer1, ntpServer2); } void loop() { // Создаём объект для получения доступа к данным времени struct tm timeinfo; // Пытаемся обновить данные времени if(!getLocalTime(&timeinfo)){ Serial.println("No time available..."); return; } // Получаем текущее время в часах и минутах int hour = timeinfo.tm_hour; int minute = timeinfo.tm_min; // Выводим время на LED-индикатор display4LED.print(hour, minute, TIME); // Дублируем вывод времени в Serial-порт Serial.printf("Time now %d:%d\n", hour, minute); // Ждём 1 секунду delay(1000); }
Результат
После прошивки, ESP32 выйдет в сеть → запросит время у сервера по NTP → отразит его на четырехразрядном LED-индикаторе. Для отладки программы время также дублируется в консоль.
Беспроводной фонарик
А теперь попробуем связать две платы Piranha Set ESP32 между собой. Сделаем фонарик, которым можно управлять с любой точки планеты, где есть Wi-Fi. Для этого соберем два устройства: «Пульт» и «Лампа».
Для связки устройств по Wi-Fi воспользуемся облачным сервисом «ioControl», который сразу же умеет генерировать программный код для Arduino IDE. Для работы сервиса с Arduino IDE скачайте и установите библиотеку «iocontrol»
Что понадобится для устройства «Пульт»
Что понадобится для устройства «Лампа»
Сборка устройства «Пульт»
Установите кнопку на Piranha Set ESP32 «Пульт» в ячейку к сигнальному пину 13.
Сборка устройства «Лампа»
Установите светодиод на Piranha Set ESP32 «Лампа» в ячейку к сигнальному пину 13.
Исходный код для устройства «Пульт»
Прошейте Piranha Set ESP32 «Пульт» кодом ниже.
/* *Код для платы Piranha ESP32 Set с кнопкой */ // Библиотека для Piranha ESP32 #include <WiFi.h> // Библиотека для работы с сервисом iocontrol.ru #include <iocontrol.h> // GPIO пин, к которому подключена кнопка constexpr int PIN_BUTTON = 13; // Название панели на сайте iocontrol.ru const char* myPanelName = "ESP32_Set"; int status; // Название переменных как на сайте iocontrol.ru const char* VarName_button = "button"; // Задаём точку доступа Wi-Fi сети и пароль const char* ssid = "your ssid"; const char* password = "your password"; // Создаём объект клиента WiFiClient client; // Создаём объект iocontrol, передавая в конструктор название панели и клиента iocontrol mypanel(myPanelName, client); void setup() { // Настраиваем пин с кнопкой в режим входа pinMode(PIN_BUTTON, INPUT); // Открываем Serial-порт Serial.begin(9600); // Подключаемся к Wi-Fi сети WiFi.begin(ssid, password); // Ждём подключения while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } // Вызываем функцию первого запроса к сервису mypanel.begin(); } void loop() { // ************************ ЗАПИСЬ ************************ // Считываем текущее состояние с кнопки bool stateButton = digitalRead(PIN_BUTTON); // Записываем значение в переменную для отправки в сервис mypanel.write(VarName_button, stateButton); // Отправляем переменные из контроллера в сервис status = mypanel.writeUpdate(); // Если статус равен константе OK... if (status == OK) { // Выводим текст в последовательный порт Serial.println("------- Write OK -------"); } }
Исходный код для устройства «Лампа»
Прошейте Piranha Set ESP32 «Лампа» кодом ниже.
/* *Код для платы Piranha ESP32 Set со светодиодом */ // Библиотека для Piranha ESP32 #include <WiFi.h> // Библиотека для работы с сервисом iocontrol.ru #include <iocontrol.h> // GPIO пин, к которому подключен светодиод constexpr int PIN_LED = 13; // Название панели на сайте iocontrol.ru const char* myPanelName = "ESP32_Set"; int status; // Название переменных как на сайте iocontrol.ru const char* VarName_button = "button"; // Задаём точку доступа Wi-Fi сети и пароль const char* ssid = "your ssid"; const char* password = "your password"; // Создаём объект клиента WiFiClient client; // Создаём объект iocontrol, передавая в конструктор название панели и клиента iocontrol mypanel(myPanelName, client); void setup() { // Настраиваем пин со светодиодом в режим выхода pinMode(PIN_LED, OUTPUT); // Открываем Serial-порт Serial.begin(9600); // Подключаемся к Wi-Fi сети WiFi.begin(ssid, password); // Ждём подключения while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } // Вызываем функцию первого запроса к сервису mypanel.begin(); } void loop() { // ************************ ЧТЕНИЕ ************************ // Чтение значений переменных из сервиса status = mypanel.readUpdate(); // Если статус равен константе OK... if (status == OK) { // Выводим текст в последовательный порт Serial.println("------- Read OK -------"); // Записываем считанный из сервиса значения кнопки в переменную bool io_button = mypanel.readBool(VarName_button); Serial.println((String)"io_button = "+io_button); // Отравляем значение переменной с кнопки на светодиод digitalWrite(PIN_LED, io_button); } }
Результат
После прошивки устройств «Пульта» и «Лампы» подождите 10 секунд, пока они подсоединятся к Wi-Fi сети. При нажатой кнопке на устройстве «Пульт», светодиод на устройстве «Лампа» будет гореть. А при отпущенной кнопке на устройстве «Пульт», светодиод на устройстве «Лампа» будет не гореть.
Дополнительные расширения
На многих платах из линейки Set, есть фирменный одноименный Set-разъём, в виде двух отверстий для передачи напряжения и данных шины I²C. Такое решение позволяет надёжно и без проводов соединять между собой платы экосистемы Set в единое устройство. На плате Piranha Set ESP32 расположено четыре фирменных Set-разъёма.
На текущий момент доступны следующие расширения из линейки Set:
- Set Expander: плата расширения для добавления к Piranha Set ESP32 двух ячеек для установки Trema-модулей с коммуникацией по шине I²C. Каждый новый Set Expander добавляет две новых ячейки для I²C-модулей, платы с другим интерфейсом работать не будут.
- Set Connector: соединительный кирпичик для физической и электрической связи между собой двух плат экосистемы Set.
- Set Adapter (PLS с клеммником): переходник с экосистемы Set на контакты PLS и клеммник под винт.
Подключение расширений
Рассмотрим подключение платы расширения Set Expander к Piranha Set ESP32
Что понадобится
Порядок действий
- Расположите Piranha Set ESP32 и Set Expander, так что бы Set-разъёмы двух плат были напротив друг друга. Для верности движений используйте выступы и впадины на Piranha Set ESP32 и Set Expander.
- Установите два Set Connector’а на стыке между Piranha Set ESP32 и Set Expander, так что бы отверстия Set-разъёмов были сквозные. Если отверстия не совпадают — поверните Set Connector на 90 градусов по часовой или против часовой стрелке.
- Закрепите Set Connector к Piranha Set ESP32 и Set Expander с помощью винтов и гаек. В итоге получили крепкое и надёжное соединение — без проводов и изоленты.
Теперь можете смело использовать новые ячейки для установки Trema-модулей с интерфейсом I²C.
Помимо физического соединения винтами и гайками, вы можете также сделать спайку, для этого на каждой плате отведены специальные контактные площадки. Капля припоя и ваше устройство станет ещё более надёжным.
Примеры работы
Программная работа с Trema-модулями полностью идентична, вне зависимости от того на какой плате они установлены: на Piranha Set ESP32 или на Set Expander. Это происходит потому что, на Piranha Set ESP32 и на плате расширения Set Expander одна и та же шина I²C.
Для наглядности вспомним пример «Интернет часы» с использованием четырехразрядного LED-индикатора Flash-I²C.
Схема устройства
Просто вытащите модуль из ячейки Piranha Set ESP32 и установите его на плату расширения Set Expander.
Исходный код
Код менять не нужно, он остаётся прежним из примера «Интернет часы». Вуаля всё также работает.
Элементы платы
Модуль ESP32-S
Платформа для разработки Piranha Set ESP32 выполнена на модуле ESP32-S.
Под металлической крышкой модуля ESP32-S расположена система на кристалле SoC ESP32-D0WDQ6 с тактовой частотой до 240 МГц, Flash-память на 4 МБ и другая электронная обвязка. Также в кристалл ESP32-D0WDQ6 встроен датчик температуры, датчик Холла и контроллер сенсорного ввода. Поддерживаются беспроводные стандарты связи Wi-Fi 802.11 b/g/n (2,4 ГГц) и протокол Bluetooth v4.2 с BLE.
Преобразователь USB-UART CH340
Преобразователь USB-UART на чипе CH340 обеспечивает связь модуля ESP-12S с USB-портом компьютера. При подключении к ПК — Piranha Set ESP32 определяется как виртуальный COM-порт.
Если при подключении контроллера Piranha Set ESP32 в Arduino IDE не появляется новый COM-порт, установите драйвер USB-UART преобразователя для Windows 7 или Windows 10.
Индикаторные светодиоды
Имя | Цвет | Назначение |
---|---|---|
IO-2 | Синий | Индикатор питания платформы. |
PWR | Зелёный | Пользовательский светодиод на GPIO33 пине микроконтроллера. При задании высокого уровня светодиод загорается, при низком – гаснет. |
TX | Красный | Мигает при прошивки и отправление данных из Piranha Set ESP32 в USB. |
RX | Красный | Мигает при прошивки и получение данных из USB в Piranha Set ESP32. |
Кнопка RESET
Кнопка RESET служит для ручного сброса питания — аналог кнопки RESET обычного компьютера.
Кнопка BOOT
Кнопка BOOT служит для ручного перевода модуля в режим прошивки:
- Зажмите кнопку BOOT;
- Нажмите и отпустите кнопку RESET;
- Отпустите кнопку BOOT.
При прошивки платформы через Arduino IDE специальная схема на плате сбрасывает микроконтроллер автоматически и никаких манипуляций с кнопкой проделывать не нужно. Однако кнопка всё же будет полезна, если вы хотите специально перевести модуль в режим прошивки или когда автоматический сброс не работает.
Порт micro-USB
Разъём micro-USB предназначен для прошивки и питания платформы Piranha Set ESP32 по USB. Для коммуникации понадобится кабель Micro USB.
Клеммник питания
Клеммник питания предназначен для альтернативного подключения напряжения к платформе Piranha Set ESP32. Идеальный вариант, когда ваш источник имеет свободные провода на конце. Источник напряжения должен быть строго 5 вольт.
Преобразователь питания
Понижающий преобразователь питания AMS1117-3.3 с выходом 3,3 вольта, обеспечивает питание модуля ESP32-S. Максимальный выходной ток составляет 500 мА.
Распиновка
Пины питания
Имя | Описание |
---|---|
5V | Пин питания с напряжением 5 вольт. |
GND | Пин земли. |
Пины ввода-вывода
Все пины GPIO/GPI совместимы с 5 вольтовой логикой.
Категория | Количество пинов | Имена пинов | Описание |
---|---|---|---|
Пины ввода-вывода GPIO | 12 | GPIO13, GPIO15–GPIO19, GPIO21, GPIO22, GPIO25, GPIO26, GPIO32 и GPIO33. | Пины могут быть настроены на вход или на выход. Логический уровень выходной единицы — 3,3 В, нуля — 0 В. На вход можно подавать сигнал до 5 В. |
Пины ввода GPI | 2 | GPI34 и GPI36. | Пины могут быть настроены только на вход. На вход можно подавать сигнал до 5 В. |
ШИМ / PWM | 12 | GPIO13, GPIO15–GPIO19, GPIO21, GPIO22, GPIO25, GPIO26, GPIO32 и GPIO33. | Позволяет выводить аналоговое напряжение в виде ШИМ-сигнала из цифровых значений. Разрядность ШИМ по умолчанию установлена в 8 бит, но можно поднять до 16 бит. |
АЦП / ADC | 8 | GPIO13, GPIO15, GPIO25, GPIO26, GPIO32, GPIO33, GPI34 и GPI36. | Позволяет представить аналоговое напряжение в виде цифровом виде. Диапазон входного напряжения от 0 до 3,3 В. Можно подавать сигнал и до 5 В, однако микроконтроллер будет его воспринимать как 3,3 В. Разрядность АЦП по умолчанию установлена в 14 бит, но можно поднять до 16 бит. |
ЦАП / DAC | 2 | GPIO25 и GPIO26. | Позволяет выводить аналоговое напряжение в чистом виде. Разрядность ЦАП установлена в 8 бит и не меняется. |
Каждый пин ввода-вывода GPIO платформы можно сконфигурировать на аппаратные интерфейсы: 3×UART, 3×SPI, 2×I²C и 2×I²S.
Габаритный чертёж
Характеристики
- Модель: Piranha Set ESP32
- Интерфейс USB-UART: CH340
- Процессор: ESP32-S
- Стандарт Wi-Fi: 802.11 b/g/n
- Стандарт Bluetooth: BLE v4.2 BR/EDR
- Тактовая частота: 240 МГц
- Flash-память: 4 МБ
- SRAM-память: 520 КБ
- Входное напряжение питания: 5 В
- Напряжение логических уровней: 3,3 В с толератностью к 5 В
- Количество ячеек для Trema-модулей: 4
-
Контакты общего назначения:
- Всего контактов: 14
- Контакты ввода-вывода GPIO: 12
- Контакты ввода GPI: 2
- Контакты с ШИМ: 12 с разрядностью до 16 бит (по умолчанию 8 бит)
- Контакты с АЦП: 8 с разрядностью до 16 бит (по умолчанию 14 бит)
- Контакты с ЦАП: 2 с разрядностью 8 бит
- Возможность сконфигурировать интерфейсы: 3×UART, 3×SPI, 2×I²C и 2×I²S
Полезные товары
- Piranha Set ESP32 в магазине
- Set Expander в магазине
- Set Connector в магазине
- Set Adapter (PLS с клеммником) в магазине
Ресурсы
- Установка и настройка среды Arduino IDE
- Установка поддержки платформы Piranha Set ESP32 в Arduino IDE
- Установка драйвера USB для Windows 7
- Установка драйвера USB для Windows 10
- Облачный сервис «ioControl» для связки устройств по Wi-Fi
- Библиотека для Arduino «iocontrol» для связки устройств по Wi-Fi
Обсуждение