Работает: Проверил на Ubuntu 18.04 Desktop от 18.07.2018

Как подключить ESP-WROOM-32 к среде разработки Arduino Ide на домашней системе Ubuntu 18.04 Desktop amd64. Откуда такая задумка? – А дело в том, что меня заинтересовала идея построить пусть и не полный «Умный дом», но хоть какую-то его часть. А вместе с этим мое свободное время стало обрастать различными датчиками, платами, проведенными тестами. И поэтому в виду обширных задумок, натолкнулся на видео где правда описывалось, как через плату ESP8266 и датчик температуры отправлять получаемую информацию на центральный сервис. А центральным сервисом у меня выступает проект MajorDoMo развернутый на Raspberry Pi 3 Model B (Raspbian Jessie), но вскоре будет перенесен на железо на базе HP MicroServer Gen8, а отдельные миникомпьютеры будут слать ему всю информацию. Пока во всяком случае я так вижу его работу. Наработки и вид работы строиться на том, как я уяснил на текущий момент всю работу. И вот одна из задач, разобрать как подключить плату ESP-WROOM-32 в среду разработки Arduino IDE установленную на рабочей системе Ubuntu Bionic Desktop.

Первым делом обновляю установленную среду разработки Arduino IDE до самого актуального состояния действуя по заметке.

После подключаю плату ESP-WROOM-32 через кабель: MicroUSBUSB к ноутбуку, и для ознакомления смотрю информацию по обнаруженной плате системой Ubuntu Bionic:

ekzorchik@navy:~$ dmesg -T

[Вт. нояб. 7 15:58:09 2017] usb 5-5: new full-speed USB device number 2 using ohci-pci

[Вт июл 24 21:18:23 2018] wlp3s0: Connection to AP e4:8d:8c:21:b8:60 lost

[Вт июл 24 21:18:25 2018] usb 6-1: new full-speed USB device number 2 using xhci_hcd

[Вт июл 24 21:18:26 2018] usb 6-1: New USB device found, idVendor=10c4, idProduct=ea60

[Вт июл 24 21:18:26 2018] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3

[Вт июл 24 21:18:26 2018] usb 6-1: Product: CP2102 USB to UART Bridge Controller

[Вт июл 24 21:18:26 2018] usb 6-1: Manufacturer: Silicon Labs

[Вт июл 24 21:18:26 2018] usb 6-1: SerialNumber: 0001

[Вт июл 24 21:18:26 2018] usbcore: registered new interface driver usbserial_generic

[Вт июл 24 21:18:26 2018] usbserial: USB Serial support registered for generic

[Вт июл 24 21:18:26 2018] usbcore: registered new interface driver cp210x

[Вт июл 24 21:18:26 2018] usbserial: USB Serial support registered for cp210x

[Вт июл 24 21:18:26 2018] cp210x 6-1:1.0: cp210x converter detected

[Вт июл 24 21:18:26 2018] usb 6-1: cp210x converter now attached to ttyUSB0

Теперь устанавливаю драйвер для работы с платой ESP32:

ekzorchik@navy:~$ lsusb | grep Cygnal

Bus 006 Device 002: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP210x UART Bridge / myAVR mySmartUSB light

ekzorchik@navy:~$ wget https://www.silabs.com/documents/login/software/Linux-3-x-x-VCP-Driver-Source.zip

ссылка изменилась на

ekzorchik@navy:~$ wget https://www.silabs.com/documents/login/software/Linux_3.x.x_4.x.x_VCP_Driver_Source.zip

ekzorchik@navy:~$ unzip Linux_3.x.x_4.x.x_VCP_Driver_Source.zip

ekzorchik@navy:~$ mv Linux_3.x.x_4.x.x_VCP_Driver_Source vcp

ekzorchik@navy:~$ rm Linux_3.x.x_4.x.x_VCP_Driver_Source.tar.gz

ekzorchik@navy:~$ modinfo cp210x

filename: /lib/modules/4.4.0-93-generic/kernel/drivers/usb/serial/cp210x.ko

license: GPL

description: Silicon Labs CP210x RS232 serial adaptor driver

srcversion: 18D1A23E61DB09F3A2B4A23

ekzorchik@navy:~$ cd vcp/

ekzorchik@navy:~/vcp$ make

ekzorchik@navy:~/vcp$ sudo cp cp210x.ko /lib/modules/"$(uname -r)"/kernel/drivers/usb/serial/

ekzorchik@navy:~/vcp$ sudo modprobe usbserial

ekzorchik@navy:~/vcp$ sudo modprobe cp210x

ekzorchik@navy:~/vcp$ cd ~

ekzorchik@navy:~$ lsmod | grep cp210x

cp210x 24576 0

usbserial 53248 1 cp210x

Затем обновляю утилиту pip и настраиваю работу подключения к плате ESP32:

ekzorchik@navy:~$ sudo usermod -a -G dialout $USER

ekzorchik@navy:~$ sudo apt-get install git -y

ekzorchik@navy:~$ wget https://bootstrap.pypa.io/get-pip.py

ekzorchik@navy:~$ sudo python get-pip.py

ekzorchik@navy:~$ sudo pip install pyserial

ekzorchik@navy:~$ mkdir -p ~/Arduino/hardware/espressif

ekzorchik@navy:~$ cd ~/Arduino/hardware/espressif

ekzorchik@navy:~/Arduino/hardware/espressif$ git clone https://github.com/espressif/arduino-esp32.git esp32

ekzorchik@navy:~/Arduino/hardware/espressif$ cd esp32/tools/

ekzorchik@navy:~/arduino-nightly/hardware/espressif/esp32/tools$ python get.py

navy: Linux, Info: Linux-4.15.0-24-generic-x86_64-with-Ubuntu-18.04-bionic

Platform: x86_64-pc-linux-gnu

Downloading xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz

Done

Extracting xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz

Downloading esptool-2.3.1-linux.tar.gz

Done

Extracting esptool-2.3.1-linux.tar.gz

Downloading mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz

Done

Extracting mkspiffs-0.2.3-arduino-esp32-linux64.tar.gz

Renaming mkspiffs-0.2.3-arduino-esp32-linux64 to mkspiffs

Done

ekzorchik@navy:~/Arduino/hardware/espressif/esp32/tools$ cd ~

Закрываю открытую среду разработки Arduino IDE если она была запущена в текущий момент.

Затем запускаю ее: (установленная версия 1.8.5 Hourly Build)

Win + в поиске набираю Arduino — Файл — Настройки и в поле

«Дополнительные ссылки для Менеджера плат:» указываю нижеследующий путь: /home/ekzorchik/Arduino/hardware/espressif/esp32/package.json

Содержимое json файла:

ekzorchik@navy:~$ cat /home/ekzorchik/arduino-nightly/hardware/espressif/esp32/package.json

{

"name": "framework-arduinoespressif32",

"description": "Arduino Wiring-based Framework (ESP32 Core)",

"version": "0.0.0",

"url": "https://github.com/espressif/arduino-esp32"

Затем закрываю приложение Arduino IDE и открываю заново.

После открываю Инструменты (Tools) — Плата: Arduino UNO — и выбираю ESP32 Dev Module

Затем скорость соединения:

  • Инструменты (Tools)Upload Speed: 115200
  • Порт (Port)/dev/ttyUSB0

Теперь открываю пример:

Файл — Примеры (Примеры для ESP32 Dev Module) — WiFi — WiFi Scan

Затем на самой плате:

Чтобы ESP32 перешел в режим загрузки кода, зажмите кнопку BOOT и нажмите на кнопку RST. Это перезагрузит ESP32.

А после пример WiFi Scan загружаю в плату.

Загружаю скетч в плату ESP-WROOM-32

Загружаю скетч в плату ESP-WROOM-32

Нажимаю кнопку RST и запускаю «Монитор порта» (115200бод) и наблюдаю в консоли как работает тестовый пример:

Скетч отработал и плата видит Wi-Fi точки доступа

Как видно скрипт успешно отработал и нашел в радиусе его действия две WiFi сети. Работает.

Что в этой заметке, я разобрал как подключить данную плату ESP32 к Arduino UNO R3 и как загрузить на нее тестовый пример.

Чтобы удалить скетч из памяти платы нужно:

void setup(){};

void loop(){};

Загрузить а после когда будет приглашение в консоли

Leaving…

Hard resetting нажать на плате кнопку RSP

Но может не все так гладко сложиться, к примеру повторяя шаги этой заметки на рабочем компьютере (Ubuntu Trusty Desktop рабочее окружение Gnome Classic) столкнулся, то при загрузке примера в консоль вывалились ошибки:

Ошибка при открытии последовательного порта '/dev/ttyUSB0'. Прочитайте документацию на http://playground.arduino.cc/Linux/All#Permission

no protocol: /home/ekzorchik/arduino-nightly/hardware/espressif/esp32/package.json

Неверная библиотека найдена в /home/ekzorchik/arduino-nightly/hardware/espressif/esp32/libraries/BLE: /home/ekzorchik/arduino-nightly/hardware/espressif/esp32/libraries/BLE

из указанного документа в ошибке проверяю:

ekzorchik@navy:~$ cat /etc/group | grep dialout

dialout:x:20:ekzorchik

ekzorchik@navy:~$ sudo nano /etc/udev/rules.d/99-esp32.rules

SUBnavyS=="usb", ATTRS{idProduct}=="10c4", ATTRS{idVendor}=="ea60", SYMLINK+="ttyUSB%n"

ekzorchik@navy:~$ sudo udevadm control --reload-rules

ekzorchik@navy:~$ sudo chmod 666 /dev/ttyUSB0

Вытаскиваю USB кабель и снова подключаю.

Приложения — Программирование — Arduino IDE — Инструменты — Управление библиотеками — отфильтровываю по esp32 и выделяю найденную библиотеку: ESP32 BLE Arduino by Neil Kolban, версия самая последняя (0.4.2) и нажимаю «Установка»

Перезапускаю среду Arduino IDE, затем открываю Монитор порта и в консоль должна без какого-либо примера загружаться информация, у меня это:

Проблемы с загрузкой скетча в плату

А это значит, что не до конца загрузился скетч, следует проделать все заново и все будет хорошо.

ekzorchik@navy:~$ cd ~/Arduino/hardware/espressif

ekzorchik@navy:~/Arduino/hardware/espressif$ git clone --recursive esp32 https://github.com/espressif/arduino-esp32.git

ekzorchik@navy:~$ sudo apt-add-repository ppa:webupd8team/java

ekzorchik@navy:~$ sudo apt-get update

ekzorchik@navy:~$ sudo apt-get install oracle-java8-installer -y

ekzorchik@navy:~$ sudo update-java-alternatives -s java-8-oracle

ekzorchik@navy:~:~$

java -version

java version "1.8.0_151"

Java(TM) SE Runtime Environment (build 1.8.0_151-b12)

Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)

Пока на этом у меня все. Заметка работает. С уважением автор блога Олло Александр aka ekzorchik.

От ekzorchik

Всем хорошего дня, меня зовут Александр. Я под ником - ekzorchik, являюсь автором всех написанных, разобранных заметок. Большинство вещей с которыми мне приходиться разбираться, как на работе, так и дома выложены на моем блоге в виде пошаговых инструкции. По сути блог - это шпаргалка онлайн. Каждая новая работа где мне случалось работать вносила новые знания и нюансы работы и соответственно я расписываю как сделать/решить ту или иную задачу. Это очень помогает. Когда сам разбираешь задачу, стараешься ее приподнести в виде структурированной заметки чтобы было все наглядно и просто, то процесс усвоения идет в гору. Также прошу на https://win.ekzorchik.ru https://lin.ekzorchik.ru https://net.ekzorchik.ru https://voip.ekzorchik.ru https;//home.ekzorchik.ru