Работает: Проверил на 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 через кабель: MicroUSB — USB к ноутбуку, и для ознакомления смотрю информацию по обнаруженной плате системой 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 загружаю в плату.
Нажимаю кнопку RST и запускаю «Монитор порта» (115200бод) и наблюдаю в консоли как работает тестовый пример:
Как видно скрипт успешно отработал и нашел в радиусе его действия две 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.