Урок 3. ESP32 и ESP8266 с выводом статуса на веб-страницу и на OLED дисплей.
Хотите добавить информативности, и сделать более интересными свои проекты с ESP32? Или, может быть, вы хотите отобразить IP-адрес вашего ESP32, не прибегая к выводу информации в последовательный монитор порта? OLED-дисплеи (органические светодиоды) могут идеально подойти! Они сверхлегкие, достаточно тонкие, теоретически гибкие, и дают более яркое и четкое изображение.
Для изучения данного урока рекомендую посмотреть предыдущий урок про ESP32 и ESP8266:
- Веб-сервер ESP32 (ESP8266) в среде Arduino IDE
Базовый код, основного примера, будем использоваться из вышеуказанного урока.
Также, в данном уроке, расскажу поверхностно про OLED дисплей, и его возможности. Больше информации в моих уроках по подключению OLED дисплея к Arduino:
- Дисплей SSD1306 подключаем к Arduino. Выводим текст, рисуем фигуры.
Устранение неполадок ESP8266 — NodeMCU Flasher
Где скачать флешер NodeMCU?
Перейдите в репозиторий GitHub флешера NodeMCU и загрузите флешер для вашей версии Windows, нажав кнопку «Raw»:
Какие настройки следует использовать с флешером NodeMCU?
Флешер NodeMCU уже поставляется с правильными настройками по умолчанию.
Настройки по умолчанию:
После нажатия кнопки «Flash» ничего не происходит, прошивальщик NodeMCU не запускает процесс перепрошивки
Если вы нажали кнопку «Flash» и ничего не происходит . Это может быть одно из двух:
- ESP не находится в режиме прошивки (перепроверьте, подключен ли GPIO 0 к GND при включении питания)
- программатор FTDI не может подать достаточный ток на ESP
Проблема 1 — Как заставить ESP перейти в режим прошивки:
- Закройте окно флешера NodeMCU
- Отключите питание от вашего ESP8266
- Подключите ESP следующим образом (дважды проверьте, что GPIO 0 подключен к GND)
- Подайте питание на ESP8266 и откройте флешер NodeMCU Нажмите кнопку «Flash»
Если он все еще сообщает «Ожидание MAC», попробуйте следующее:
- Подключите провод от вашего reset ESP8266 к GND
- Отсоедините этот провод от GND и присоединитесь к VCC
Повторите шаги несколько раз, пока ESP не перезагрузится, и, скорее всего, флешер NodeMCU сможет обнаружить ESP и начать процесс перепрошивки.
Проблема 2. Если FTDI не может обеспечить достаточный ток, возможно, придется купить новый программатор FTDI или подключить ESP8266 к внешнему источнику питания.
Флешер NodeMCU зависает или останавливается на определенном проценте
- Отключите питание от ESP + FTDI: Закройте окно флешера NodeMCU
- Подключите ESP + FTDI к компьютеру снова
- Откройте флешер NodeMCU и попробуйте скорость передачи 19200 бод
Если этот процесс завершится неудачно, повторите ту же процедуру для следующих скоростей передачи (38400, 57600, 74880 и 115200).
Ппо крайней мере 5 человек столкнулись с той же проблемой, и этот способ решил ее.
Как должен выглядеть NodeMCU после успешной прошивки?
У него должна быть зеленая стрелка внизу слева.
Разблокировка программатора FTDI на ПК с Windows
Если у вас новый программатор FTDI то сначала необходимо установить драйверы FTDI в Windows, посетите официальный веб-сайт для получения официальных драйверов: http://www.ftdichip.com/Drivers/VCP.htm.
В качестве альтернативы можете связаться с продавцом, который продал программатор FTDI.
Если возникли проблемы с установкой драйверов FTDI в Windows 7/8 / 8.1 / 10, вполне вероятно, что FTDI заблокирован.
Загрузка прошивки Grbl_Esp32 в отладочную плату esp32 devkit v1.
ESP32 devkit v1 использую как пример. Вы можете использовать другую отладочную плату.
Для загрузки кода подключаем ESP32 к компьютеру и в Arduino IDE выбираем следующие параметры: Плата «ESP32 Dev Module», «Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)», и порт, к которому подключена плата ESP32.
Нажимаем кнопку загрузить.
При компиляции скетча вам выдаст предупреждение «ПРЕДУПРЕЖДЕНИЕ: библиотека arduino_484469 должна запускаться на архитектурах (avr) и может быть несовместима с вашей платой на архитектуре (esp32)». Это компилятор ругается на библиотеку «TMCStepper».
Когда вы увидите вот такую надпись «Connecting. _____. __», необходимо нажать на кнопку «Boot» на плате ESP32, и удерживать ее, пока не начнется загрузка.
По завершению загрузки вы увидите надпись «Загрузка завершена».
Поздравляю, прошивка прошла успешно, и пришло время проверить, что у нас получилось, и приступить к дальнейшим настройкам.
Первый запуск ЧПУ станка на ESP32 по Wi-Fi.
Первичная настройка прошивки сделана, загрузка прошла успешно. Как же нам посмотреть что получилось? Для этого открываем Wi-Fi подключение, и найдем сеть с именем «GRBL_ESP32»,- это ESP32 создала точку доступа. Подключаемся к данной сети.
Пароль для подключения, по умолчанию, «12345678», который можно будет изменить через веб-интерфейс устройства.
После того, как мы подключились к нашему устройству, автоматически открывается сайт «http://www.msftconnecttest.com/redirect » в браузере. На данной странице вы сможете произвести первичные настройки станка, а также установить веб-интерфейс для управления станком прямо из браузера, чем мы и займемся.
В разделе «Flash Filesystem» выбираем файлы веб-интерфейса, которые мы скачали вместе с прошивкой, они располагаются в папке «Grbl_Esp32-mainGrbl_Esp32srcdata»
После того, как файлы выбраны, нажимаем на кнопку «Go to ESP3D interface». После установки вы увидите интерфейс управления станком.
Теперь мы можем посмотреть, что собой представляет веб-интерфейс управления ЧПУ станком на ESP32. Первое, что нужно сделать, это поменять язык интерфейса на Русский.Можно сделать это в 2-х пунктах меню. 1. На момент установки мной, данный метод не работал, но я все же его опишу. Заходим в пункт меню «Setup», открывается окно настройки станка.
Выполняем настройки в 4-х пунктах меню, после чего первичные настройки будут выполнены. Но в моем случае, кроме первого пункта меню, и последнего, ничего не отображалось, и при этом, все изменения не сохранялись. Поэтому я воспользовался вторым способом настройки.
2. Переходим в пункт меню «Preferences», и в выпадающем меню выбираем русский язык. Не забываем нажать кнопку «сохранить», и интерфейс будет на Русском языке, но не все пункты. Перевод сделан не полностью. Но это не страшно.
Затем заходим в этот же пункт меню, сейчас он называется «Настройки», и можно поставить вот эти 2 галочки. Первая выведет в основном окне интерфейса возможность снять блокировку с панели управления, и мы сможем перемещать оси станка. Вторая галочка добавит в основное меню раздел «Камера», в нем можно настроить IP камеру, которая установлена на станке и следит за процессом работы.
Основные функции веб-интерфейса управления ESP32 ЧПУ.
Раздел «Команды» — аналог консоли любой управляющей программы, тут выводятся команды и положение станка в данный момент. Вывод можно настроить. Отключить подробный режим и настроить время вывода информации о положении осей.
Раздел «Управление» позволяет перемещать оси станка и показывает текущие координаты. А также позволяет создавать макросы. Макросы — это быстрые команды, по аналогии пользовательских кнопок в программе LaserGRBL, которые мы рассматривали в статье: «Установка grbl 1.1 на Arduino uno. Основы работы в программе LaserGRBL».
Раздел «GRBL», в нем можно управлять скоростью вращения шпинделя, включать и отключать шпиндель и охлаждение.
Раздел «Файлы на SD-карте» говорит сам за себя. Тут будут отображаться файлы, которые хранятся на карте памяти. Но так как она не подключена, тут пока ничего нет.
Пункты меню GRBL и ESP3D.
Если мы перейдем на вкладку меню «GRBL», тут мы увидим настройки станка, аналогичные настройкам, которые мы рассматривали в предыдущей статье «Установка grbl 1.1 на Arduino uno. Основы работы в программе LaserGRBL». Правда тут настроек больше, так как данная прошивка позволяет управлять вплоть до шести осями ЧПУ станка.
На вкладке меню «ESP3D» мы можем настраивать подключение к ESP32. Можно изменить точку доступа на режим станции. Что это такое и чем они отличаются, я рассказывал в уроке: «Веб-сервер ESP32 (ESP8266) в среде Arduino IDE»
Также на вкладке «Настройки ESP3D» можно перезагрузить устройство, обновить прошивку, обновить веб-интерфейс и посмотреть состояние устройства.
Вывод.
Не смотря на то, что прошивка еще не совсем доработана, и встречаются недочеты, является достаточно перспективной и позволяет расширить представление о самодельном ЧПУ станке.
В следующей статье подключим шаговые двигатели, и проверим, как работает управление осями через веб-интерфейс.
Понравился проект Установка и настройка GRBL ESP32.? Не забудь поделиться с друзьями в соц. сетях.
А также подписаться на наш канал на YouTube, вступить в группу Вконтакте, в группу на Facebook.
Какую плату выбрать?
Когда неофит от IoT полезет в интернет, одним из первых модулей, которые он найдет, будет ESP8266. И действительно, он обладает массой достоинств: дешевый, много различных плат на его основе, позволяющих использовать его как самостоятельное устройство и подключать к сложным Arduino-based проектам. Но ESP8266, выпущенный в 2014 году, довольно быстро перестал удовлетворять запросы пользователей, и в 2015 году компания-разработчик Espressif выпускает новый микроконтроллер — ESP32.
Различия между ESP8266 и ESP32
Точно так же, как и в случае с ESP8266, разработчики создали довольно много плат, базирующихся на новом микроконтроллере. В данной статье все примеры тестировались и проверялись на плате MH-ET LIVE ESP32 DevKit. Плата для обзора была любезно предоставлена интернет-магазином Amperkot.
Pinoutmap платы
Настройка официальной среды разработки ESP-IDF (Espressif IoT Development Framework)
Среду ESP-IDF можно установить на Windows. Для этого нужно:
- Скачать с официального сайта среду разработки;
- Распаковать архив, поместить его на диск C;
- Затем появится каталог msys32, в который нужно перейти и запустить программу mingw32.exe;
- Появится окно терминала, где нужно создать каталог с именем esp;
- Нужно перейти в созданный каталог;
- Подключить необходимые библиотеки с помощью команды git clone –recursive https://github.com/espressif/esp-idf.git;
- Затем устанавливаются пакеты Python командой python -m pip install –user -r $IDF_PATH/requirements.txt.
После этого можно начинать работу. В каталоге esp-idfexamples есть различные примеры скетчей для работы с модулем.
Память и ЦПУ
- Двухядерный 32-битный микропроцессор Xtensa LX6 160-240МГц
- ОЗУ — 520Кб
- ПЗУ — 448Кб
- Дополнительно RTC таймер с 16Кб ОЗУ
- Внешняя флэш память 4-16Мб
- Питание 2.2 — 3.6В
- WiFi 802.11n 2.4Гц с максимальной скоростью 150Мбит/сек
- WPA)/WPA2/WPA2-Enterprise/Wi-Fi Protected Setup (WPS
- Bluetooth v4.2 BR/EDR and BLE
Установка драйвера для CP2102 в Windows
1. Подключаем ESP32 к ПК с помощью USB-кабеля.
2. Скачиваем архив с драйвером. Ниже приводятся ссылки на драйверы для ОС Windows и MacOS.
3. Распаковываем архив.
4. Запускаем файл CP210xVCPInstaller_x64.exe для 64-битной или CP210xVCPInstaller_x86.exe для 32-битной версии Windows.
Нажмимаем «Далее» в окне приветствия инсталлятора.
Соглашаемся с лицензией.
Нажимаем «Готово» в окне сообщения об успешной установке.
Установка драйвера закончена.
Характеристики ESP32
ESP32 поддерживает весь стек протоколов стандартов Wi-Fi 802.11n и BT4.2, обеспечивая данный функционал через интерфейсы SPI/SDIO или I²C/UART.
Чип Espressif ESP 32 может работать в качестве центрального процессора (поддержка Open CPU) и как подчинённое устройство (slave device), управляемое микроконтроллером.
Отличительные особенности:
CPU: Xtensa Dual-Core 32-bit LX6, 160 MHz или 240 MHz (до 600 DMIPS)
Memory: 520 KByte SRAM, 448 KByte ROM
Flash на модуле: 1, 2, 4… 64 Мб
Wireless:
- Wi-Fi: 802.11b/g/n/e/i, до 150 Mbps c HT40
- Bluetooth: v4.2 BR/EDR и BLE
Peripheral interfaces:
- 12-bit SAR ADC до 18 каналов
- 2 × 8-bit DAC
- 10 × touch сенсоров
- Temperature сенсор
- 4 × SPI
- 2 × I²S
- 2 × I²C
- 3 × UART
- 1 host (SD/eMMC/SDIO)
- 1 slave (SDIO/SPI)
- Ethernet MAC с поддержкой DMA и IEEE 1588
- CAN 2.0
- IR (TX/RX)
- Motor PWM
- LED PWM до 16 каналов
- Hall sensor
- Ultra low power analog pre-amplifier
Security:
- IEEE 802.11 безопасность WFA, WPA/WPA2 и WAPI
- Secure boot
- Flash encryption
- 1024-bit OTP, включая до 768-bit под задачу
- Cryptographic движок: AES, SHA-2, RSA, ECC, RNG
Распновка чипа ESP32:
(Скачать в PDF)
в ESP32 есть JTAG интерфейс на ножках IO12, IO13, IO14, IO15.
ESP32 также доступен в виде модуля:
Распиновка модуля WROOM32:
Модуль WROOM-32 может поставляться со специальной отладочной платой:
Эта плата позволяет быстро программировать модуль благодаря встроенному адаптеру USB-TTL. На ней также расположены кнопки программирования и сброса, а также регулятор напряжения для питания микроконтроллера ESP32 напряжением 3.3 В. Также плата дает удобный доступ к выводам модуля, шаг между которыми довольно узок, чтобы без проблем работать с ними. Шаг же между выводами платы составляет 2.54 мм, что является стандартом для DIP-корпусов, с которыми удобно работать обычному радиолюбителю без специальных инструментов.
Распиновка отладочной платы ESP32:
Итак, первая программа, которую мы собираемся обсудить, — это мигание светодиода. Весь код для мигания светодиода написан в Arduino IDE.
В комплект разработчика ESP32 встроен светодиод, который подключен к общему выводу ввода/вывода 2. Еще одна вещь, которую нам нужно проверить перед написанием своего кода, — это убедиться, что встроенный светодиод в плате разработки ESP32 поддерживается Arduino IDE.
Если он распознается Arduino IDE, тогда мы можем писать свой код, в противном случае вам нужно сделать его распознаваемым Arduino IDE, используя следующий фрагмент кода
К каждой плате ESP32 подключен внутренний светодиод, но они подключены к разным входным/выходным контактам общего назначения. В нашем случае внутренний синий светодиод подключен к входному выходу общего назначения. Итак, давайте напишем код.
Программный поток каждого кода, который мы пишем в Arduino IDE, заключается в том, что сначала мы инициализируем переменные. Переменные могут быть локальными или глобальными. Мы не будем вдаваться в подробности этих локальных и глобальных переменных.
После инициализации переменных вызывается функция настройки setup(), которая используется для присвоения значений инициализированным переменным, а затем вызывается функция основного цикла loop(). Функция setup() вызывается только один раз, в то время как loop() выполняется непрерывно.
Если мы хотим снова вызвать функцию настройки setup(), мы должны повторно запустить нашу программу или перезапустить плату разработки, либо с помощью кнопки на плате, либо путем отключения и повторного подключения нашей платы.
Итак, если мы посмотрим на наш код, помня о перечисленных выше пунктах, то видим что мы сначала инициализировали наш встроенный светодиод на входном/выходном контакте общего назначения 2. После инициализации мы объявляем этот вывод как выход. Затем переходим в основной рабочий цикл, который будет выполняться бесконечно, пока мы не отключим нашу плату или не остановим выполнение этой программы.
В loop() мы сначала включаем светодиод с помощью функции DigitalWrite, установив HIGH. Затем мы ждем 1 секунду. Далее выключаем светодиод, назначив DigitalWrite значение LOW и снова ждем 1 секунду. После этого цикл повторяется сначала.