Пример чтения текстовой переменной на ESP32 (ESP8266)
Подключите ESP32 (ESP8266) к ПК. Мы рекомендуем использовать Piranha ESP32, так как в ней есть встроенный USB-UART конвертер и мы тестировали библиотеку с использованием этой платы.

Скетч Arduino
Если Вы никогда не работали в среде разработки Arduino, по этой ссылке можно узнать как её установить и настроить.
Для работы в среде Arduino с платами ESP32 и ESP8266 необходимо установить их поддержку
Установка поддержки плат ESP32
Для работы с ESP32 необходимо настроить поддержку плат ESP32. Выберите пункт меню Файл -> Настройки (или на клавиатуре нажмите ctrl+, ). В поле ввода «Дополнительные ссылки для Менеджера плат» вставьте ссылку https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json . Далее необходимо выбрать пункт меню Инструменты -> Плата: -> Менеджер плат . Откроется окно Менеджера плат. В поле поиска наберите ESP32 и установите последнюю версию плат. Подробнее об установке плат можно узнать по ссылке.
Установка поддержки плат ESP8266
Выберите пункт меню Файл -> Настройки (или на клавиатуре нажмите ctrl+, ). В поле ввода «Дополнительные ссылки для Менеджера плат» вставьте ссылку https://arduino.esp8266.com/stable/package_esp8266com_index.json . Далее необходимо выбрать пункт меню Инструменты -> Плата: -> Менеджер плат . Откроется окно Менеджера плат. В поле поиска наберите ESP8266 и установите последнюю версию плат. Подробнее об установке плат можно узнать по ссылке.
Установка библиотеки
Для работы с библиотекой её необходимо установить в Arduino IDE. Для установки скачайте библиотеку и в Arduino IDE в меню выберите Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку и выберите скачанный .zip файл библиотеки. Подробнее об установке библиотек можно узнать по этой ссылке.
Работа с протоколом HTTPS
Для простоты и быстрого начала работы с сервисом скетч ниже использует протокол HTTP, который передаёт данные не шифруя. Если Вам необходимо передавать критические данные, такие как пароли или коды запуска фейерверков, или Вы просто не хотите, чтобы ваш интернет провайдер знал показания Ваших датчиков, воспользуйтесь статьёй по настойке ESP32 и ESP8266 на работу через HTTPS. (Примечание: через HTTPS могут работать только платы ESP, для плат Arduino AVR работа через HTTPS на данный момент не реализована).
В скетче ниже необходимо заменить «название_панели» на название Вашей панели и «название_переменной» на название переменной, которую мы создали ранее (например «myString» )
#include #include // Если ESP8266, вместо WiFi.h: // #include // Название панели на сайте iocontrol.ru const char* myPanelName = "название_панели"; // Название переменной с типом int на сайте iocontrol.ru const char* myVarName = "название_переменной"; const char* ssid = "ssid_точки_доступа_WiFi"; const char* password = "пароль_точки_доступа_WiFi"; // Создаём объект клиента класса WiFiClient WiFiClient client; // Создаём объект iocontrol, передавая в конструктор название панели и клиента iocontrol mypanel(myPanelName, client); // Если панель использует ключ // iocontrol mypanel(myPanelName, key, client); void setup() < Serial.begin(115200); WiFi.begin(ssid, password); // Ждём подключения while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print("."); >Serial.println(); // Вызываем функцию первого запроса к сервису mypanel.begin(); > void loop() < // Обновляем переменные в памяти и записываем // статус запроса в переменную int status = mypanel.readUpdate(); // Если статус равен константе OK. if (status == OK) < // Записываем значение в переменную String myString = mypanel.readString(myVarName); // Выводим значение в монитор последовательного порта Serial.println(myString); >>
Выберите последовательный порт к которому подключена отладочная плата нажав в меню Инструменты -> Порт -> %НОМЕР ПОРТА% , затем нажмите на кнопку загрузка или на клавиатуре ctrl+u .
Откройте монитор последовательного порта нажав левой кнопкой мыши на пункт меню Инструменты -> Монитор порта или сочетанием клавиш CTRL+SHIFT+M . В монитор последовательного порта будет выводиться значение переменной Вашей панели.
Пример записи текстовой переменной из ESP32 (ESP8266) на сайт
Подключите ESP32 (ESP8266) к ПК. Мы рекомендуем использовать Piranha ESP32, так как в ней есть встроенный USB-UART конвертер и мы тестировали библиотеку с использованием этой платы.

Скетч Arduino
Если Вы никогда не работали в среде разработки Arduino, по этой ссылке можно узнать как её установить и настроить.
Для работы в среде Arduino с платами ESP32 и ESP8266 необходимо установить их поддержку
Установка поддержки плат ESP32
Для работы с ESP32 необходимо настроить поддержку плат ESP32. Выберите пункт меню Файл -> Настройки (или на клавиатуре нажмите ctrl+, ). В поле ввода «Дополнительные ссылки для Менеджера плат» вставьте ссылку https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json . Далее необходимо выбрать пункт меню Инструменты -> Плата: -> Менеджер плат . Откроется окно Менеджера плат. В поле поиска наберите ESP32 и установите последнюю версию плат. Подробнее об установке плат можно узнать по ссылке.
Установка поддержки плат ESP8266
Выберите пункт меню Файл -> Настройки (или на клавиатуре нажмите ctrl+, ). В поле ввода «Дополнительные ссылки для Менеджера плат» вставьте ссылку https://arduino.esp8266.com/stable/package_esp8266com_index.json . Далее необходимо выбрать пункт меню Инструменты -> Плата: -> Менеджер плат . Откроется окно Менеджера плат. В поле поиска наберите ESP8266 и установите последнюю версию плат. Подробнее об установке плат можно узнать по ссылке.
Установка библиотеки
Для работы с библиотекой iocontrol её необходимо установить в Arduino IDE. Для установки скачайте библиотеку и в Arduino IDE в меню выберите Скетч -> Подключить библиотеку -> Добавить .ZIP библиотеку и выберите скачанный .zip файл библиотеки. Подробнее об установке библиотек можно узнать по этой ссылке.
Работа с протоколом HTTPS
Для простоты и быстрого начала работы с сервисом скетч ниже использует протокол HTTP, который передаёт данные не шифруя. Если Вам необходимо передавать критические данные, такие как пароли или коды запуска фейерверков, или Вы просто не хотите, чтобы ваш интернет провайдер знал показания Ваших датчиков, воспользуйтесь статьёй по настойке ESP32 и ESP8266 на работу через HTTPS. (Примечание: через HTTPS могут работать только платы ESP, для плат Arduino AVR работа через HTTPS на данный момент не реализована).
В скетче ниже необходимо заменить «название_панели» на название Вашей панели и «название_переменной» на название переменной, которую мы создали ранее (например «myString» )
#include #include // Если ESP8266, вместо WiFi.h: // #include // Название панели на сайте iocontrol.ru const char* myPanelName = "название_панели"; // Название текстовой переменной на сайте iocontrol.ru const char* myVarName = "название_переменной"; // Если панель использует ключ // const char* key = "ключ"; const char* ssid = "ssid_точки_доступа_WiFi"; const char* password = "пароль_точки_доступа_WiFi"; // Переменная, значение которой необходимо записать String myString = "this_is_a_test"; // Создаём объект клиента класса EthernetClient WiFiClient client; // Создаём объект iocontrol, передавая в конструктор название панели и клиента iocontrol mypanel(myPanelName, client); // Если панель использует ключ // iocontrol mypanel(myPanelName, key, client); void setup() < Serial.begin(115200); WiFi.begin(ssid, password); // Ждём подключения while (WiFi.status() != WL_CONNECTED) < delay(500); Serial.print("."); >Serial.println(); // Вызываем функцию первого запроса к сервису mypanel.begin(); > void loop() < // Записываем состояние переменной mypanel.write(myVarName, myString); // Обновляем переменные на сайте int status = mypanel.writeUpdate(); // Если статус равен константе OK. if (status == OK) < // Выводим текст в последовательный порт Serial.println("Updated"); >>
Теперь скетч, загруженный в микроконтроллер, будет менять переменную на сайте.
Распиновка ESP32-CAM AI-Thinker. Назначение GPIO.
ESP32-CAM — это отладочная плата с чипом ESP32-S, камерой OV2640, слотом для карт microSD и несколькими GPIO для подключения периферийных устройств. В этом руководстве мы рассмотрим GPIO ESP32-CAM и способы использования контактов платы.
Распиновка ESP32-CAM AI-Thinker.
На рисунке ниже показана распиновка ESP32-CAM AI-Thinker.

На следующем рисунке показана принципиальная схема ESP32-CAM.

Вы можете скачать принципиальную схему в PDF-формате внизу статьи, в разделе «файлы для скачивания».
Контакты питания
ESP32-CAM имеет три GND пина (окрашены серым цветом) и два контакта питания (окрашены в красный цвет): 3,3 В и 5 В .
Вы можете подключить питание ESP32-CAM к 3,3 В или 5 В. Тем не менее, возникают ошибки в работе, при подключении питания ESP32-CAM к 3.3V, поэтому советую подключать ESP32-CAM к 5V pin питания.
Вывод питания
Также на шелкографии есть обозначение VCC (окрашен желтым прямоугольником). Вы не должны использовать этот вывод для питания ESP32-CAM. Это вывод предназначен для подключения внешних потребителей. Он может выводить 5 В или 3,3 В.
В нашем случае ESP32-CAM выдает 3,3 В независимо от того, питается он от 5 В или 3,3 В. Рядом с выводом VCC есть две контактные площадки. Одна обозначена как 3,3 В, а другая — как 5 В.

Если присмотреться, у вас должна быть перемычка на контактных площадках 3,3 В. Если вы хотите, чтобы на выводе VCC было выходное напряжение 5 В, вам необходимо распаять это соединение и запаять контактные площадки 5 В.
Последовательный интерфейс.
GPIO 1 и GPIO 3 — это последовательный интерфейс (контакты TX и RX). Поскольку ESP32-CAM не имеет встроенного программатора, вам необходимо использовать эти контакты для загрузки кода и связи с платой.

Чтобы загрузить код в ESP32-CAM, можно использовать USB-to-UART TTL конвертер на PL2303HX. Как пользоваться USB-to-UART TTL конвертером рассказываю в статье: USB-to-UART PL2303HX. Установка драйверов на Linux, Windows, Mac OS.

Для загрузки кода подключим PL2303HX к ESP32-CAM по схеме.
Вы можете использовать GPIO 1 и GPIO 3 для подключения других периферийных устройств, датчиков, сенсоров и модулей, после загрузки кода. Однако вы не сможете открыть Serial Monitor и посмотреть, все ли в порядке с вашей настройкой.
GPIO 0
GPIO 0 определяет, находится ли ESP32 в режиме прошивки или нет. Этот GPIO имеет внутреннее подключение к подтягивающему резистору 10 кОм.
Когда GPIO 0 подключен к GND, ESP32 переходит в режим прошивки, и вы можете загружать код на плату.
После загрузки кода, для того чтобы ESP32 работала «нормально», вам просто нужно отключить GPIO 0 от GND.
Подключение карты MicroSD
Следующие контакты используются для взаимодействия с картой памяти microSD, когда она установлена в соответствующий разъем на плате.
| MicroSD card | ESP32 |
| CLK | GPIO 14 |
| CMD | GPIO 15 |
| DATA0 | GPIO 2 |
| DATA1 / flashlight | GPIO 4 |
| DATA2 | GPIO 12 |
| DATA3 | GPIO 13 |
Если вы не используете карту microSD, вы можете использовать эти контакты как обычные входы / выходы. Вы можете посмотреть руководство по распиновке ESP32, чтобы увидеть особенности этих контактов.
Все эти GPIO являются RTC и поддерживают ADC: GPIO 2, 4, 12, 13, 14 и 15.
Фонарик (GPIO 4)
ESP32-CAM имеет очень яркий встроенный светодиод, который может работать как вспышка при съемке.

Фонарик — этот светодиод внутренне подключен к GPIO 4 .
Этот GPIO также подключен к слоту для карты microSD, поэтому у вас могут возникнуть проблемы при попытке использовать оба устройства одновременно — фонарик загорится при использовании карты microSD.
Примечание: один из наших читателей поделился, что у вас не будет этой проблемы, если вы инициализируете карту microSD следующим образом, потому что карта microSD не будет использовать эту линию данных. *
SD_MMC.begin("/sdcard", true)
* после проверки было обнаружено, что это работает, и что светодиод не дает такого эффекта вспышки. Однако светодиод продолжает гореть с низкой яркостью – возможно при проверке был упущен какой-то момент.
GPIO 33 — встроенный красный светодиод
Рядом с кнопкой RST есть встроенный красный светодиод. Этот светодиод внутренне подключен к GPIO 33 . Вы можете использовать этот светодиод, чтобы указать, что что-то происходит. Например, если Wi-Fi подключен, светодиод горит красным или наоборот.

Этот светодиод работает с перевернутой логикой, поэтому вы отправляете LOW сигнал на включение и HIGH сигнал, чтобы выключить его.
Вы можете поэкспериментировать, загрузив следующий фрагмент кода, и посмотреть, светится ли этот светодиод.
void setup() < pinMode(33, OUTPUT); >void loop()
Подключения камеры
Соединения между камерой и ESP32-CAM AI-Thinker показаны в следующей таблице.
| OV2640 CAMERA | ESP32 | Variable name in code |
| D0 | GPIO 5 | Y2_GPIO_NUM |
| D1 | GPIO 18 | Y3_GPIO_NUM |
| D2 | GPIO 19 | Y4_GPIO_NUM |
| D3 | GPIO 21 | Y5_GPIO_NUM |
| D4 | GPIO 36 | Y6_GPIO_NUM |
| D5 | GPIO 39 | Y7_GPIO_NUM |
| D6 | GPIO 34 | Y8_GPIO_NUM |
| D7 | GPIO 35 | Y9_GPIO_NUM |
| XCLK | GPIO 0 | XCLK_GPIO_NUM |
| PCLK | GPIO 22 | PCLK_GPIO_NUM |
| VSYNC | GPIO 25 | VSYNC_GPIO_NUM |
| HREF | GPIO 23 | HREF_GPIO_NUM |
| SDA | GPIO 26 | SIOD_GPIO_NUM |
| SCL | GPIO 27 | SIOC_GPIO_NUM |
| POWER PIN | GPIO 32 | PWDN_GPIO_NUM |
Итак, определение контактов для ESP32-CAM AI-Thinker в среде Arduino IDE должно быть следующим:
#define PWDN_GPIO_NUM 32 #define RESET_GPIO_NUM -1 #define XCLK_GPIO_NUM 0 #define SIOD_GPIO_NUM 26 #define SIOC_GPIO_NUM 27 #define Y9_GPIO_NUM 35 #define Y8_GPIO_NUM 34 #define Y7_GPIO_NUM 39 #define Y6_GPIO_NUM 36 #define Y5_GPIO_NUM 21 #define Y4_GPIO_NUM 19 #define Y3_GPIO_NUM 18 #define Y2_GPIO_NUM 5 #define VSYNC_GPIO_NUM 25 #define HREF_GPIO_NUM 23 #define PCLK_GPIO_NUM 22
Заключение
Надеюсь, что вы нашли это руководство для GPIO ESP32-CAM полезным. Если у вас есть какие-либо советы или дополнительная информация о GPIO ESP32-CAM, напишите комментарий ниже.
Смотрите мои проекты с использованием ESP32-CAM:
- Wi-Fi машинка с камерой на ESP32-CAM.
- ESP32-CAM сохраняем фотографии на флешку при движении
- ESP32-CAM ov2640, потоковое видео в среде Arduino IDE.
Понравилась статья Распиновка ESP32-CAM AI-Thinker. Назначение GPIO? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Спасибо за внимание!
Технологии начинаются с простого!
Esp32 встроенный usb uart переходник как воспользоваться

В 2020 году компания Espressif представила три новых чипа: ESP32-S2, ESP32-S3 и ESP32-S3.
Если S3 это новый топовый контроллер ESP32, а C3 представляет новую архитектуру RISC-V, то S2 — это явный «CELERON» в мире ESP — с низкой ценой и обрезанным функционалом.
ESP32-S2 построен на одноядерном микропроцессоре Xtensa LX7 нового поколения, имеет интегрированную поддержку USB и некоторые дополнительные интерфейсы (камера, жидкокристаллический дисплей). Зато он кроме одного ядра лишился поддержки Bluetooth, Ethernet и некоторых других (видимо мало востребованных по мнению производителя) функций.
На рынке сейчас доступны собственно микросхемы ESP32-S2, несколько SOC модулей и отладочных плат. Из производителей, кроме Espressif отметилась известная компания AI-Thinker, которая выпустила модуль со странным название ESP-12K (видимо как замену ESP8266 ESP12-E и ESP12-S) и E103-W07 от EBYTE.
ESP-12K есть в двух трудноразличимых вариантах вариантах. ESP-12K(00) — полный аналог ESP32-S2-WROOM и ESP12K(08) — аналог ESP32-S2-WROVER с установленными 8Мб PSRAM. Все модули имеют полностью совместимые корпуса и распиновку, что позволяет распаивать их на одни и те же печатные платы.

Для экспериментов я на всякий случай заказал одну готовую плату от AI-Thinker, ,

модуль AI-Thinker ESP-12K (что скромно затерялся у продавца среди ESP8266 плат)

и ESP32-S2-WROOM от Espressif.
E103-W07 мне во время не попался, может быть при следующей закупке посмотрю ни эти модули.
Что интересно, но на всех отладочных платах ESP32-S2 установлена микросхема USB/UART CH340 или что-то подобное на UART0б что при наличии аппаратного USB наводит на размышления.
На данный момент занимаюсь шлюзом LoRa/WiFi и под это дело вместе с другими платками заказал и для ESP32-S2. Заодно решил проверить подключение по USB напрямую к ESP.
Схема обвязки ESP32-S2 минимальна. USB разъем с защитной сборкой диодов, две кнопки на EN и GPIO0 и стабилизатор на 3.3В

У меня на плате живет еще RFM95 модуль с PCB антенной от TI DN024 и три светодиода. Ширину платы определила PCB антенна

Итак, приступаю к тестированию. Подключаю через внешний переходник USB-UART

Распаковываю архив и буду работать с полным файлом прошивки combibde.bin. Для загрузки я буду использовать esptool.py от Arduino core for ESP32, который установлен у меня на компьютере. Перевожу ESP в режим загрузчика, для этого жму кнопку BOOT(GPIO) и RESET(EN).
Ввожу c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 chip_id и получаю информацию о чипе

Ввожу c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 flash_id

Ну и наконец набираю команду прошивки загрузчика: c:\Users\Alexey\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.0\tools\esptool.py -p COM5 write_flash 0x0 combined.bin

Нажимаю RESET и о чудо, в системе появляется USB диск на котором лежит файл с прошивкой, а после нажатия BOOT/RESET в системе появляется новый ком порт

Теперь можно попробовать залить скетч через USB. В последней версии Arduino core for ESP32 включена поддержка чипов S2 и C3. Выбираю плату ESP32S2 Dev Module И вижу интересные пункты меню в настройке платы:

USB CDC (Communications Device Class)- включает виртуальный COM-порт, в который можно производить загрузку без нажатия BOOT/RESET, а также обмениваться информацией через интерфейс Serial в скетче. При этом в системе появляется последовательно два порта, один для прошивки (какой появлялся при нажатии BOOT/RESET), второй для ввода/вывода Serial интерфейса при работе. Данный режим похож на работу с платой Arduino Leonardo на Atmega32U4.
USB Firmware MSC (Mass Storage Class) — создает в системе USB диск, через который мы получаем прямой доступ к прошивке файла. То есть для загрузки прошивки мне достаточно скомпилировать файл (Экспорт бинарного файла в Arduino IDE), переименовать этот файл в FIRMWARE.BIN и переписать его на этот USB диск
USB DFU (Device Firmware Update) — загрузка прошивки через DFU утилиты. Этот метод загрузки широко практикуется в микропроцессорах STM32
Работа через USB порт имеет некоторые особенности. После каждой перезагрузки контроллера в системе передергиваются USB устройства и если в этот момент устройства заняты (открыт COM порт или USB диск), до система без зазрения совести создает последовательный порт с новым номером или диск с новой буквой
Ну и нужно учитывать, что сам загрузчик находится в Flash и может быть затерт, и для его восстановления опять потребуются манипуляции с esptool
А что у нас с ESP32-S в мире LINUX? Подключаю свою плату с ESP32-S2 по USB к своему старенькому нетбуку с Debian 10, на котором крутится у меня «умный дом» и вижу два устройства /dev/ttyACM0 и /dev/sdb соответствующие ком порту и USB-диску

Осталось проверить, насколько богат внутренний мир USB ESP32-S2. В новой версии ESP32 core for Arduino IDE есть целый каталог примеров USB, которые работают только с ESP32-S2
В этих примерах, как создавать эмулятор USB-мыши, USB-клавиатуры, джойстика, записывать своего вендора в USB-устройствах, создавать доступ к USB Serial порту и USB MSC диску. В общем, получается этакий мега-леонардо с WiFi
В довершении проверяю работоспособность своей платы: модуль RFM95 завелся на библиотеке LoRa от сандипа.
В общем первое знакомство с ESP32-S2 прошло вполне успешно. В целом, чип мне понравился, каких то особых глюков я не нашел и думаю, что в дальнейшем буду его использовать там где нужна невысокая цена и работа с USB.
Планирую в ближайшее время провести тестирование ACD 13бит, и прочих фич нового чипа ESP. «Но это уже другая история» (C)