Цена:
TTGO Wemos Модуль беспроводной передачи WiFi/BT/BLE 4.2 на чипе ESP-WROOM-32 ESP32 с OLED-экраном 0.96 дюйма
Основополагающей идеей развития микроконтроллеров на сегодняшний день остаётся минимизация размеров кристаллов микросхем с одновременным увеличением содержащихся в единой структуре интегрированных компонентов. Добившись значительного успеха с чипами ESP8266, компания Espressif Systems не остановилась на достигнутом. Продолжив движение в ногу со временем и сотворив маленькое чудо, она выпустила на рынок совершенно новое, мощное и гибкое решение, связывающее в себе не только популярные стандарты беспроводной передачи информации WiFi и Bluetooth, встречающиеся повсеместно практически в любых современных электронных устройствах, но и по-настоящему обширные инновационные возможности, расширяющие спектр использования микроконтроллера ESP32 в разнообразных проектах с низким энергопотреблением, разрабатываемых как многочисленными любителями-энтузиастами, так и профессиональными специалистами.
Контроллеры с ядром ESP32 могут быть задействованы в различных и по-своему уникальных приложениях: связующие устройства для концептуальных вычислительных сетей Интернет вещей (IoT), включающие инструменты по сбору и хранению данных или объединению всевозможных датчиков, устройства аудио или видео стриминга, дополнительные надстройки к полноценным электронным продуктам, элементы механизмов распознавания речи или изображений. А также находят применение в домашней автоматике, управляющей освещением, силовыми розетками или дверными замками. ESP32 может участвовать при разработке схем координирования и взаимодействия индустриального оборудования или систем мониторинга за электронными метками (маяками), образовательной, промышленной и сервисной робототехнике, в детских игрушках, в любых компактных портативных умных устройствах.
Технические характеристики
Автономное питание, заряд батареи, индикация
Платформа WeMos TTGO ESP-WROOM-32 включает в себе совокупность аппаратных средств, сочетающих первоочередной набор оборудования, необходимого для создания практически готового полноценного и независимого IoT-устройства, работающего от стационарного или от автономного источника питания в виде перезаряжаемого литиевого аккумулятора цилиндрической формы и типового размера 18650.
Среди неисчерпаемого многообразия элементов автономного питания, подходящих для микроконтроллерных платформ в роли внешнего источника с постоянным напряжением, наиболее распространены перезаряжаемые литий-полимерные батареи (Li-Pol). От физических размеров по длине, ширине и высоте таких аккумуляторов прямо зависит максимальный объём накапливаемой электроэнергии. Даже при одинаковой ёмкости, длины сторон могут значительно отличаться у разных производителей. Учитывая, что Wemos относится к малогабаритным платформам, крупные батареи не всегда удобны в сочетании с конструкцией Wemos-проекта, под них приходится приспосабливать отдельный механизм крепления или изготавливать дополнительный корпус. Модуль изначально нацелен на использование универсальных аккумуляторных батарей цилиндрической формы с неизменными физическими параметрами и различной энергоёмкостью. Сейчас такие аккумуляторы плавным темпом набирают популярность в современных бытовых приборах (встречаются в шуруповёртах, электронных парогенераторных сигаретах, фонариках, радиоприёмниках и так далее). На тыльной стороне платы присутствует отсек под единственный элемент типоразмера 18650, надёжно удерживающий батарею от непредвиденного выпадения.
Кроме чипа ESP-WROOM-32 и всей минимальной элементной обвязки, схема платы предусмотрительно располагает контроллером TP5400. Он занимается отслеживанием и корректировкой уровня напряжения элемента питания. Внедрение механизма резервного (аварийного) питания от внешнего источника обозначено главной причиной - постоянная и стабильная дееспособность устройства на чипе ESP32 в условии возможного кратковременного или продолжительного перебоя в работе основного источника постоянного напряжения, приводящего к неблагоприятным, а порой и нежелательным последствиям.
В режимах автономного или аварийного питания, чип TP5400 отслеживает текущее напряжение батареи. Заряженная литиевая аккумуляторная батарея выдаёт на своих контактах 3.9 вольта. В активных режимах платформы Wemos TTGO ESP-WROOM-32, напряжение элемента питания плавно снижается, причём чем больше нагрузка на плату, тем быстрее происходит разряд. Если его значение достигает отметки 2.9 вольта, передача энергии в схему платы прекращается до тех пор, пока не будет произведена повторная подзарядка. Микросхема TP5400 генерирует невысокий ток заряда 500 мА с напряжением 4.2 вольта, достаточных для заряда одного литиевого аккумулятора с номинальной ёмкостью 2200-3000 мА. Подзаряд батареи может выполняться не только в выключенном состоянии, но и непосредственно в режиме работы микроконтроллера.
Будьте предельно внимательны и осторожны при соблюдении полярности во время установки аккумуляторной батареи 18650 в отсек держателя. Защиты от переполюсовки в схеме модуля нет, контроллер заряда TP5400 моментально выходит из строя.
В модуль Wemos TTGO ESP-WROOM-32 18650 встроены светодиодные индикаторы заряда, отображающие текущее состояние аккумулятора. Диод с маркировкой LD3 сообщает о том, что аккумулятор находится в режиме подзаряда. Расположенный рядом LD2 сигнализирует о полном заряде батареи.
Обзор платы разработчика WiFi + Bluetooth BT/BLE TTGO ESP32 Wemos, расположение элементов на плате
Первое включение, порт USB
Всё необходимое для быстрого начала работы с модулем Wemos TTGO ESP32 уже присутствует на самой плате. Общение между компьютером и платформой TTGO реализовано на чипе преобразователя интерфейсов Silabs CP2102, установленного в плату и связывающего между собой основной контроллер ESP-WROOM-32 и встроенный порт USB. Всё, что требуется от пользователя, это соединить ПК и плату обычным проводом с разъёмами USB A - микроUSB B. Если устройства с подобной микросхемой CP2102 ранее не подключались, операционная система Windows попросит установить соответствующий драйвер.
В первую очередь, порт USB предназначен для управления модулем. Он позволяет вносить в контроллер ESP32 свои приложения или загружать фирменное программное обеспечение (прошивку). В ином случае, USB-порт используется только для питания платы.
Домен питания реального времени RTC, режимы энергосбережения ESP32
Микросхема ESP32 подготовлена разработчиками из Espressif Systems к нескольким рабочим режимам, зависящим от особенностей конструируемого изделия и способов его энергоснабжения. Обладая надёжным внешним источником постоянного стабильного напряжения, контроллер может свободно функционировать в полноценном активном режиме. С другой стороны, автономное или аварийное питание от аккумуляторной батареи, заставляет задумываться о максимальном и эффективном энергосбережении, напрямую связанным с продолжительностью работы платформы Wemos TTGO. Для подобных целей, в кристалле ESP32 размещён сопроцессор с ультранизким энергопотреблением (ULP-сопроцессор) и предусмотрены следующие режимы:
Распиновка Wemos TTGO, цоколёвка выводов ESP-WROOM-32 ESP32
Приём и передача цифровых данных между контроллером и периферией, подключенной к контактам общего назначения платы (GPIO), построена на 3.3-вольтовой логике. Входящее/исходящее напряжение цифрового вывода, находящееся в диапазоне +2.64...+3.6 вольт, принято называть высокоуровневым сигналом или логической единицей. Напряжение в интервале -0.3...+0.33 вольт - низкоуровневым сигналом или логическим нулём. Многие выводы ESP-WROOM-32 имеют встроенные управляемые резисторы, устанавливающие уровень логического сигнала контакта на плюс (подтягивание) или на минус (стягивание). Большинство контактов платы могут быть смультиплексированы с различными интерфейсами (UART, I2C, I2S, PWM, HSPI, VSPI, служебный канал EMAC, и другими). Рекомендуемый ток отдельного вывода GPIO составляет 6 миллиампер, предельный ток - 12 миллиампер.
Следует избегать превышения значений максимального тока более 12 миллиампер и напряжения более 3.3 вольта на контактах GPIO, способного повредить микроконтроллер ESP32.
Специальные функции и интерфейсы
* SPI флеш-память 4 Мбайт контроллера ESP-WROOM-32 аппаратно привязана к 6 контактам GPIO6-GPIO11. Выводы поддерживают внешнюю флеш-память размером до 16 Мбайт. Рекомендуется не использовать эти контакты для прочих целей или переназначать их на другие функции.
Программирование в среде Arduino IDE
Прежде чем начинать писать и прошивать скетчи в платформу ESP32, следует добавить её совместимость со средой Ардуино ИДЕ. Для этого необходимо выполнить все шаги, описанные в главе "Добавление платформы ESP32 в Arduino IDE".
По умолчанию, подача питания контроллеру ESP-WROOM-32 запускает режим исполнения программного кода, ранее записанного во внутреннюю память. Прошивка нового скетча выполняется переводом контроллера ESP32 в режим программирования, путём нажатия и удерживания кнопки Boot с последующим перезапуском контроллера. Либо замыканием контактов GPIO0, GND и перезапуском контроллера. Не следует отпускать кнопку или размыкать контакты, пока весь процесс прошивки не завершится.
Выполняя программирование модуля, внутренний алгоритм редактора Arduino IDE прошивает одновременно с каждым новым скетчем собственное ПО для ESP32, таким образом удаляя из соответствующей области памяти предыдущие версии прошивок.
Следующий простой пример заставляет мигать программируемый светодиод, совмещённый с выводом GPIO16.
void setup() {
// Инициализируем контакт LED_BUILTIN (GPIO16) в режим вывода
pinMode(LED_BUILTIN, OUTPUT);
}
void loop() {
// Зажигаем светодиод низкоуровневым сигналом LOW
digitalWrite(LED_BUILTIN, LOW);
// Ждём секунду
delay(1000);
// Выключаем светодиод высоким уровнем напряжения HIGH
digitalWrite(LED_BUILTIN, HIGH);
delay(1000);
}
Некоторые цифровые контакты GPIO в чипе ESP32 предназначены только для получения данных от периферии. Пример скетча, наблюдающего за состоянием вывода GPIO36 и передающего значения в последовательный порт.
// Определяем контакт
int INPUTpin = 36;
// Задаем переменную для хранения уровня сигнала, 0 - низкий, 1 - высокий
int VAL = 0;
// Подготовка
void setup() {
// Инициализируем контакт на ввод данных
pinMode(INPUTpin, INPUT);
// Открываем последовательный порт на скорости 115200 бит/сек
Serial.begin(115200);
}
// Основной цикл
void loop() {
// Считываем значение на входе контакта GPIO
VAL = digitalRead(INPUTpin);
// Выводим информацию в последовательный порт
Serial.println(VAL);
// Ждем секунду
delay(1000);
}
Датчик Холла, определение магнитного поля
Микросхема ESP32 содержит в себе встроенный резисторный датчик на основе эффекта Холла. Когда контроллер находится непосредственно в магнитном поле, датчик генерирует невысокое напряжение, изменяемое от силы поля или его полярности. Напряжение проходит через усилитель сигнала и измеряется аналого-цифровым преобразователем АЦП1. Пример считывания:
int val = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
// Считываем значения измерений
val = hallRead();
// Выводим результат в последовательный порт
Serial.print("Сенсор = ");
Serial.println(val);
delay(500);
}
Величина числового значения при измерении силы поля напрямую зависит от расстояния между ESP-WROOM32 и источником магнитного поля. Чем ближе их обоюдное расположение, тем выше будет значение. Изменение полярности приводит к перемене положительных значений на отрицательные и наоборот. Результат хорошо виден на картинке. При поднесении магнита одной из сторон, значения изменялось с положительного на отрицательное.
Управление платой Wemos TTGO через WiFi-сервер и Bluetooth-соедиение
Примеры демонстрируют способы беспроводного подключения, при помощи которых возможно управление над встроенным светодиодом контакта GPIO16.
В первом примере создаётся простой веб-сервер. После подключения к заданной точке WiFi, в последовательный порт выводится IP-адрес, присвоенный TTGO, и программа ожидает входящей команды. На любом смартфоне, планшете или ПК, подключенным к той же WiFi-сети, выполняется переход на веб-страницу с полученным IP-адресом (например, 192.168.0.104), отображающую текстовые команды включения и отключения светодиода.
Принцип управления основан на считывании определённой команды, передаваемой вслед за IP-адресом, во время каждого нового клиентского обращения к серверу. Если команда не задана при обращении, она автоматически подставляется в конец строки нажатием соответствующей текстовой команды в окне веб-страницы, после чего связь с клиентом разрывается.
ESP32_SimpleWiFiServerLedBlink.ino
Во втором примере показан метод соединения по Bluetooth. Скетч определяет MAC-адрес ESP32 и выводит его значение в последовательный порт, ожидая команду от клиента. Сопряжение с внешним Bluetooth-устройством выполняется вручную (например, в настройках Bluetooth-соединения смартфона или планшета). Управление свечением светодиода задаётся цифровой командой "1" или "0", отправленной из приложения Bluetooth Terminal (загружаемого из Google Play).
ESP32_SimpleBluetoothLedBlink.ino
Внутренняя память ESP-WROOM-32, файловые системы SPIFFS и FATFS
Плата TTGO WROOM-32 оснащена микросхемой SPI-памяти 4 Мегабайт (32 Мегабита). Память нужна для хранения фирменного ПО (прошивки) и исполняемого кода. Распределение памяти на разделы напрямую зависит от размера программного приложения, количества подключаемых библиотек, необходимости создания файловой системы или области OTA (обновление по воздуху). По желанию пользователя, величина каждого из разделов может быть изменена, но их суммарный размер не должен превышать общего доступного пространства физической памяти.
Среда программирования Arduino IDE (1.8.10) с предустановленной библиотекой ESP32 (v1.0.4) не предлагает каких-либо схем разделов. Конечно, это может показаться очень странным, ведь многие платы из списка поддерживаемых построены на однотипной микросхеме беспроводной связи ESP32. Возможно, поддержка Wemos TTGO ESP-WROOM-32 появиться в будущих релизах. Тем не менее, можно поступить несколько иначе, и указать в настройках редактора совместимость с платой ESP Dev Module, содержащую свой перечень предустановок распределения памяти (Partition Scheme).
Файловая система SPIFFS размещается в отдельно создаваемом разделе и даёт пользователю возможность хранить в своей энергонезависимой области различные данные: текстовые файлы с данными скетча, файлы различных настроек, графические файлы и готовые веб-страницы для веб-сервера, и так далее. В целом, файловая система SPIFFS очень похожа на аналогичные системы, реализуемые в ПК. С её помощью совершаются разнообразные действия над любым из файлов: создание, открытие для считывания или записи, удаление и переименовывание.
Переносить данные в файловую систему можно прямо из среды разработки Arduino IDE, предварительно установив дополнение "Загрузчик данных скетча для ESP32". Образ файловой системы формируется загрузчиком Ардуино ИДЕ как единое целое, исключая возможность последующей частичной записи или удаления.
Есть одна важная вещь, которую следует учитывать в SPIFFS — она не поддерживает каталоги. Таким образом, если создаётся файл с путём "/dir/test.txt", SPIFFS фактически создаст файл с таким же именем, вместо файла с именем "test.txt" внутри папки "/ dir". Пример использования базовых функций системы SPIFFS. В архиве содержаться файлы, используемые в тексте программы примера, и должны быть включены в образ SPIFFS.
В сравнении с файловой системой SPIFFS, зарекомендовавшей себя ещё в предыдущем поколении ESP8266, поддержка новой системы FATFS добавлена в ядро Arduino IDE сравнительно недавно. В целом, они очень похожи друг на друга с той лишь разницей, что FATFS/FFAT действительно быстрее работает с операциями над файлами. Скорость новой системы точно пригодится в проектах со светодиодными панелями или матрицами при анимации изображений, в которых SPIFFS намного медленнее считывает данные или ищет нужную информацию в памяти из большого количества файлов, приводя к заметным задержкам.
Экран OLED 0.96 дюйма в модуле TTGO Wemos ESP-WROOM32
Дисплей с драйвером SSD1306 позволяет дополнить проектируемые приложения наглядной информативностью, выводя на экран текстовые или графические данные, отображающие заранее предопределённые события. Например, показывает значения температуры и влажности, если модуль наблюдает за окружающей средой, высвечивает текущее время в приложении с часами, сообщает о срабатывании сигнализации в охранных устройствах или указывает название транслируемой Web-радиостанции в интернет-приёмниках. По желанию пользователя, дисплей сможет изображать совершенно разнообразные предупреждения в виде специальных символов, смайликов, сочетания линий, кружочков, квадратиков и треугольничков. Благодаря множеству существующих ардуино-совместимых библиотек, поддерживающим драйвер SSD1306, ко всему перечисленному могут быть добавлены эффекты ориентации или прокрутки текста, назначены уникальные шрифты. Экран обменивается данными с ESP-WROOM-32 по интерфейсу I2C, его соответствующие выводы запараллелены с контактами GPIO5 (SDA) и GPIO4 (SCL) контроллера.
Диагональ видимой области OLED-экрана составляет всего 0.96 дюйма или 2.44 сантиметра с разрешением 128х64 точки. Вся информация на столь маленьком экране отчётливо видна и легко воспринимается человеческим глазом на небольшом расстоянии. Каждая точка дисплея - это отдельный управляемый органический светодиод с повышенной контрастностью, которому не требуется дополнительная подсветка.
В качестве примера, использована библиотека ThingPulse OLED SSD1306 (ESP8266/ESP32/Mbed-OS). Раннюю версию этой библиотеки (ESP8266 and ESP32 Oled Driver for SSD1306 display) можно подключить из среды Ардуино ИДЕ через "Менеджер библиотек".
// Подключаем библиотеки
#include "Wire.h"
#include "SSD1306Wire.h"
#include "images.h"
// Инициализируем дисплей по I2C-протоколу
// ADDRESS, SDA, SCL
SSD1306Wire display(0x3c, 5, 4);
// Продолжительность демонстрации примера
#define DEMO_DURATION 3000
typedef void (*Demo)(void);
int demoMode = 0;
int counter = 1;
void setup() {
// Инициализация дисплея
display.init();
// Ориентация экрана и тип шрифта
display.flipScreenVertically();
display.setFont(ArialMT_Plain_10);
}
// Демонстрация разноразмерных шрифтов
void drawFontFaceDemo() {
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.setFont(ArialMT_Plain_10);
display.drawString(0, 0, "Hello world");
display.setFont(ArialMT_Plain_16);
display.drawString(0, 10, "Hello world");
display.setFont(ArialMT_Plain_24);
display.drawString(0, 26, "Hello world");
}
// Демонстрация длинного сообщения
void drawTextFlowDemo() {
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawStringMaxWidth(0, 0, 128,
"Code for demonstration of WemosTTGO" );
}
// Демонстрация положения сообщения
void drawTextAlignmentDemo() {
display.setFont(ArialMT_Plain_10);
display.setTextAlignment(TEXT_ALIGN_LEFT);
display.drawString(0, 10, "Left aligned (0,10)");
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 22, "Center aligned (64,22)");
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(128, 33, "Right aligned (128,33)");
}
// Демонстрация графических форм
void drawRectDemo() {
for (int i = 0; i < 10; i++) {
display.setPixel(i, i);
display.setPixel(10 - i, i);
}
display.drawRect(12, 12, 20, 20);
display.fillRect(14, 14, 17, 17);
display.drawHorizontalLine(0, 40, 20);
display.drawVerticalLine(40, 0, 20);
}
// Демонстрация окружностей
void drawCircleDemo() {
for (int i=1; i < 8; i++) {
display.setColor(WHITE);
display.drawCircle(32, 32, i*3);
if (i % 2 == 0) {
display.setColor(BLACK);
}
display.fillCircle(96, 32, 32 - i* 3);
}
}
// Демонстрация полосы загрузки
void drawProgressBarDemo() {
int progress = (counter / 5) % 100;
display.drawProgressBar(0, 32, 120, 10, progress);
display.setTextAlignment(TEXT_ALIGN_CENTER);
display.drawString(64, 15, String(progress) + "%");
}
// Демонстрация графического изображения WiFi в формате XBM
void drawImageDemo() {
display.drawXbm(34, 14, WiFi_Logo_width, WiFi_Logo_height, WiFi_Logo_bits);
}
// Порядок воспроизевдения демонстраций
Demo demos[] = {drawFontFaceDemo, drawTextFlowDemo, drawTextAlignmentDemo, drawRectDemo, drawCircleDemo, drawProgressBarDemo, drawImageDemo};
int demoLength = (sizeof(demos) / sizeof(Demo));
long timeSinceLastModeSwitch = 0;
void loop() {
display.clear();
demos[demoMode]();
display.setTextAlignment(TEXT_ALIGN_RIGHT);
display.drawString(10, 128, String(millis()));
display.display();
if (millis() - timeSinceLastModeSwitch > DEMO_DURATION) {
demoMode = (demoMode + 1) % demoLength;
timeSinceLastModeSwitch = millis();
}
counter++;
delay(10);
}
Обновление прошивки Wemos TTGO на ПО с интерпретатором AT команд
Коллектив компании Espressif Systems, для своих чипов ESP32 и их разновидностей, выпускает прошивки со встроенным интерпретатором AT-команд, основанные на открытых программных наборах разработки ПО (SDK) ESP-IDF. Пользователь имеет возможность компилировать собственные кастомные прошивки, добавляя или исключая поддержку необходимых в проекте функций. В подобных прошивках, способ управления процессором WROOM-32 значительно отличается. В коде прошивки заложен перечень предопределённых заскриптованных команд, выполняющие различные действия с настройками контроллера ESP-WROOMR-32. АТ команды позволяют устанавливать и разрывать WiFi- или Bluetooth BLE-соединения, отправлять и получать данные, работать c файловой системой (в оригинальной прошивке функция отключена) или менять параметры шины UART. Любая АТ команда передаётся в TTGO ESP-WROOM-32 через периферийный последовательный интерфейс UART (GPIO16, GPIO17) от ведущего устройства и всегда начинается с аббревиатуры АТ. Главная шина UART0 контроллера ESP32 задействована исключительно для программирования процессора. Перечень поддерживаемых АТ команд опубликован в разделе "Техническая информация".
Все актуальные архивы прошивок для ESP-WROOM-32 с интерпретатором АТ команд размещены в свободном доступе на страничке официального сайта производителя. В состав прошивки входят несколько бинарных файлов (.bin), назначение которых понятны по названию. Адреса размещения областей в памяти для каждой составляющей части (раздела) записаны в текстовом файле download.config. Разработчик контроллера ESP32 предлагает обновлять ПО с помощью готовой универсальной программы Flash Download Tools.
Перед записью новой версии ПО, крайне рекомендовано удаление всей ранее хранящейся информации и таблицы размещения разделов из флеш-памяти WROOM-32 (кнопка ERASE). Эта процедура помогает избежать возможных последующих ошибок запуска контроллера ESP32. И очистка памяти, и обновление ПО, подразумевают предварительный перевод контроллера ESP32 в режим программирования.
В среде разработки приложений Arduino IDE, чтобы получить доступ к АТ командам, необходимо подключить к USB-порту ПК дополнительный преобразователь USB-в-TTL, правильно соединить контакты RX, TX, и выводы GND обоих плат. После чего изменить в настройках редактора COM-порт совместимой платы на присвоенный адапетру USB-TTL и открыть на скорости 115200 бод монитор последовательного порта. Работоспособность прошивки проверяется отправкой простой команды "АТ", возвращающей в окно ответ "ОК".
Добавление платформы ESP32 в среду разработки Ардуино ИДЕ
Изначально, в среде разработчика Ардуино отсутствует поддержка ESP32. Добавление платформы ESP32 выполняется за несколько простых шагов. Перед установкой дополнения, рекомендуется обновить редактор Arduino IDE до последней версии.
https://dl.espressif.com/dl/package_esp32_index.json
Техническая информация
Полезные ссылки
г. Москва, Пятницкое ш. д. 18, пав. 566
zakaz@compacttool.ru
8-495-752-55-22
Информация представленная на данном информационном ресурсе преследует исключительно рекламные цели и не является договором-офертой !
© Все права защищены 2015 - 2024г https://compacttool.ru