КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Piranha Set ESP32: руководство по использованию

Исходники изображение:

Используйте платформу 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.

Piranha Set ESP32 Info 1

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

Piranha Set ESP32 Info 2

Процесс напоминает сборку конструктора — просто устанавливаете модули в соответствующие ячейки. И самое важное никаких макетных плат, пайки и проводов. Всего пара минут и устройство готово.

Для надёжной фиксации, рекомендуем закреплять 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 вольтовой логикой.

Все подробности по контактам и интерфейсам платформы читайте в текущей статье в разделе распиновка.

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

  1. Подключите платформу Piranha Set ESP32 к компьютеру через кабель micro-USB. При успешном подключении должен загореться индикаторный светодиод PWR.
  2. Piranha Set ESP32 Wiring 1
  3. Скачайте и установите среду программирования Arduino IDE.
  4. По умолчанию IDE настроена только на AVR-платы. Для работы с платформой Piranha Set ESP32 — добавьте в менеджере плат поддержку платформ ESP32 Arduino.
  5. Если при подключении контроллера Piranha Set ESP32 в Arduino IDE не появляется новый COM-порт, установите драйвер USB-UART преобразователя для Windows 7 или Windows 10.
  6. На этом настройка закончена, смело переходите к примерам работы.

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

Маячок

Для начала сделаем привычный «Hello, world» в DIY-мире — соберем маячок.

Что понадобится

Схема устройства

Установите светодиод на Piranha Set ESP32 в ячейку к сигнальному пину 13.

Piranha Set ESP32 Example 1

Исходный код

Прошейте платформу 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);
}

Результат

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

Piranha Set ESP32 Example 2

Интернет часы

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

Что понадобится

Схема устройства

Установите LED-индикатор Flash-I²C на Piranha Set ESP32 в ячейку к сигнальным пинам I²C — SDA и SCL.

Piranha Set ESP32 Example 1

Исходный код

Прошейте платформу 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 Example 2

Беспроводной фонарик

А теперь попробуем связать две платы Piranha Set ESP32 между собой. Сделаем фонарик, которым можно управлять с любой точки планеты, где есть Wi-Fi. Для этого соберем два устройства: «Пульт» и «Лампа».

Для связки устройств по Wi-Fi воспользуемся облачным сервисом «ioControl», который сразу же умеет генерировать программный код для Arduino IDE. Для работы сервиса с Arduino IDE скачайте и установите библиотеку «iocontrol»

Что понадобится для устройства «Пульт»

Что понадобится для устройства «Лампа»

Сборка устройства «Пульт»

Установите кнопку на Piranha Set ESP32 «Пульт» в ячейку к сигнальному пину 13.

Piranha Set ESP32 Example 5

Сборка устройства «Лампа»

Установите светодиод на Piranha Set ESP32 «Лампа» в ячейку к сигнальному пину 13.

Piranha Set ESP32 Example 6

Исходный код для устройства «Пульт»

Прошейте 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 сети. При нажатой кнопке на устройстве «Пульт», светодиод на устройстве «Лампа» будет гореть. А при отпущенной кнопке на устройстве «Пульт», светодиод на устройстве «Лампа» будет не гореть.

Piranha Set ESP32 Example 7

Дополнительные расширения

На многих платах из линейки Set, есть фирменный одноименный Set-разъём, в виде двух отверстий для передачи напряжения и данных шины I²C. Такое решение позволяет надёжно и без проводов соединять между собой платы экосистемы Set в единое устройство. На плате Piranha Set ESP32 расположено четыре фирменных Set-разъёма.

Piranha Set ESP32 Info 3

На текущий момент доступны следующие расширения из линейки 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

Что понадобится

Порядок действий

  1. Расположите Piranha Set ESP32 и Set Expander, так что бы Set-разъёмы двух плат были напротив друг друга. Для верности движений используйте выступы и впадины на Piranha Set ESP32 и Set Expander.
  2. Piranha Set ESP32 Wiring 2
  3. Установите два Set Connector’а на стыке между Piranha Set ESP32 и Set Expander, так что бы отверстия Set-разъёмов были сквозные. Если отверстия не совпадают — поверните Set Connector на 90 градусов по часовой или против часовой стрелке.
  4. Piranha Set ESP32 Wiring 3
  5. Закрепите Set Connector к Piranha Set ESP32 и Set Expander с помощью винтов и гаек. В итоге получили крепкое и надёжное соединение — без проводов и изоленты.
  6. Piranha Set ESP32 Wiring 4

Теперь можете смело использовать новые ячейки для установки Trema-модулей с интерфейсом I²C.

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

Piranha Set ESP32 Wiring 5

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

Программная работа с Trema-модулями полностью идентична, вне зависимости от того на какой плате они установлены: на Piranha Set ESP32 или на Set Expander. Это происходит потому что, на Piranha Set ESP32 и на плате расширения Set Expander одна и та же шина I²C.

Для наглядности вспомним пример «Интернет часы» с использованием четырехразрядного LED-индикатора Flash-I²C.

Схема устройства

Просто вытащите модуль из ячейки Piranha Set ESP32 и установите его на плату расширения Set Expander.

Piranha Set ESP32 Example 8

Исходный код

Код менять не нужно, он остаётся прежним из примера «Интернет часы». Вуаля всё также работает.

Piranha Set ESP32 Example 9

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

Piranha Set ESP32 Annotation

Модуль ESP32-S

Платформа для разработки Piranha Set ESP32 выполнена на модуле ESP32-S.

Piranha Set ESP32 Annotation 1

Под металлической крышкой модуля 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 служит для ручного перевода модуля в режим прошивки:

  1. Зажмите кнопку BOOT;
  2. Нажмите и отпустите кнопку RESET;
  3. Отпустите кнопку 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 мА.

Распиновка

Piranha Set ESP32 Pinout

Пины питания

Имя Описание
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 Dimensions

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

  • Модель: 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

Полезные товары

Ресурсы

Документация




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями