ESP — различия между версиями
Avp (обсуждение | вклад) |
Avp (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
+ | = Общая информация = | ||
+ | * [http://www.esploradores.com/wp-content/uploads/2018/04/A-Beginners-Guide-to-the-ESP8266-1.pdf http://www.esploradores.com/wp-content/uploads/2018/04/A-Beginners-Guide-to-the-ESP8266-1.pdf] | ||
+ | |||
= ESP8266 = | = ESP8266 = | ||
Инструкция подготовлена Владимиром Слугиным на базе описания следующего видео: https://www.youtube.com/watch?v=64_9O9sKuqM | Инструкция подготовлена Владимиром Слугиным на базе описания следующего видео: https://www.youtube.com/watch?v=64_9O9sKuqM |
Версия 10:57, 20 марта 2019
Содержание
Общая информация
ESP8266
Инструкция подготовлена Владимиром Слугиным на базе описания следующего видео: https://www.youtube.com/watch?v=64_9O9sKuqM
Настройка IDE
- Установить IDE (http://www.arduino.cc/en/Main/Software)
- Запустить Arduino IDE, далее Файл – Настройки – в поле Additional Boards Manager URLs вставить ссылку http://arduino.esp8266.com/package_es...
- Инструменты – Плата – Boards Manager
- В Boards Manager найти и установить (около 130 мб) ESP8266 by ESP8266 Community Forum
- В меню Инструменты выбрать Плата – Generic ESP8266. При необходимости установить: частота - 80MHz, скорость записи - 9600, Flash Size - 512K.
Схема подключения к компьютеру
использован USB-UART (UART - ESP8266):
- GND - GND
- RxD - TxD
- TxD - RxD
- 3.3v (!!) - Vcc + (через резистор 10-20К) CH_PD
Скетч для записи в esp8266
- В Arduino IDE Файл – Образцы – ESP8266WebServer – HelloServer
- В файле указать ssid (название) точки доступа WiFi (const char* ssid = "....";) и пароль (const char* password = "....";)
Запись в esp8266
- Соединить GND (UART) с gpio0 (esp)
- Подключить UART к компьютеру
- Разомкнуть GND и gpio0
- Нажать кнопку Вгрузить в Arduino IDE
- После завершения загрузки переподключить UART (вместе с esp)
Подключение к веб серверу esp8266
- Подключится к точке доступа esp (у меня называется ESPap)
- Ввести ip адрес (192.168.4.1) в поисковой строке браузера
ESP-32S
Описание
- Pinout: https://www.14core.com/wp-content/uploads/2017/04/ESP32-Pinout-DIagram.jpg
- Описание CPU: http://ip.cadence.com/uploads/533/Cadence_Tensillica_Xtensa_LX6_ds-pdf
Получение toolchain'а
$ cd /path/to/arduino/ $ mkdir -p hardware/espressif $ cd hardware/espressif $ git clone https://github.com/espressif/arduino-esp32.git esp32 $ cd esp32/tools/ $ python get.py
Сборка проекта
Для сборки необходимо выполнить следующую команду:
./build.py /path/to/sketch/
Собранный проект будет в подкаталоге в '/tmp'.
Troubleshooting
TypeError: unorderable types: PartitionDefinition PartitionDefinition
На данный момент (2017-06-28) для работы утилит из toolchain'а необходим Python 2:
https://github.com/espressif/esp-idf-template/issues/3
На Gentoo GNU/Linux проблема решается на переключение на нужную версию Python:
$ eselect python list Available Python interpreters: [1] python2.7 [2] python3.3 [3] python3.4 * $ eselect python set 1
warning: no return statement in function returning non-void
Проблема возникает при использовании библиотеки esp8266-oled-ssd1306.
Симптомы
In file included from /home/avp/sketchbook/libraries/ESP8266_Oled_Driver_for_SSD1306_display/SSD1306Wire.h:31:0, from /home/avp/sketchbook/libraries/ESP8266_Oled_Driver_for_SSD1306_display/SSD1306.h:30, from /tmp/arduino_8d8be8ad7edc7c39c779408e245d8629/SSD1306ClockDemo.ino:32: /home/avp/sketchbook/libraries/ESP8266_Oled_Driver_for_SSD1306_display/OLEDDisplay.h: In member function 'virtual bool OLEDDisplay::connect()': /home/avp/sketchbook/libraries/ESP8266_Oled_Driver_for_SSD1306_display/OLEDDisplay.h:253:29: warning: no return statement in function returning non-void [-Wreturn-type] virtual bool connect() {};
Решение
Поменять файл platform.txt
в каталоге с проектом, выключив сигнализацию ошибок для некоторых предупреждений:
diff --git a/platform.txt b/platform.txt index 3a8b30b..370b1df 100644 --- a/platform.txt +++ b/platform.txt @@ -27,7 +27,7 @@ compiler.c.cmd=xtensa-esp32-elf-gcc compiler.c.flags=-std=gnu99 -Os -g3 -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -Wpointer-arith {compiler.warning_flags} -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -Wno-old-style-declaration -MMD -c compiler.cpp.cmd=xtensa-esp32-elf-g++ -compiler.cpp.flags=-std=gnu++11 -fno-exceptions -fno-rtti -Os -g3 -Wpointer-arith -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib {compiler.warning_flags} -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -fno-rtti -MMD -c +compiler.cpp.flags=-std=gnu++11 -fno-exceptions -fno-rtti -Os -g3 -Wpointer-arith -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib {compiler.warning_flags} -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -fno-rtti -MMD -Wno-error=return-type -Wno-error=switch -Wno-error=maybe-uninitialized -c compiler.S.cmd=xtensa-esp32-elf-gcc compiler.S.flags=-c -g3 -x assembler-with-cpp -MMD -mlongcalls
Загрузка прошивки
Из Arduino IDE загрузку следует выполнять на скорости 115200.
После загрузки нужно перезагрузить МК -- можно через кнопку, если таковая есть на плате.
Bluetooth
Troubleshooting
Прошивка загрузилась, но не работает
В этом случае следует перезагрузить МК.
Brownout detector was triggered
Симптомы
При работе с Bluetooth система выдаёт в последовательный порт следующее сообщение:
ets Jun 8 2016 00:22:57
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:956
load:0x40078000,len:0
load:0x40078000,len:13076
entry 0x40078ad0
Starting BLE wor0k!
Brownout detector was triggered
Причина
Использование BLE приводит к повышению энергопотребления. Если источник питания не может обеспечить необходимое напряжение, то при падении напряжения до заданного минимума срабатывает "brownout detector" и микроконтроллер автоматически перезагружается. Это сделано для того, чтобы МК не находился в промежуточном состоянии "вроде работает, а вроде и нет", так как в этом случае возможны случайные сбои в его работе, которые могут привести к выходу МК из строя.[1]
Решение
Заменить USB-провод подключения на более качественный, или использовать более мощный БП для запитки МК.
Общая информация
Подключение оборудования
- http://www.esp8266learning.com/wemos-oled-shield-example.php
- http://arduino-project.net/oled-l2c-arduino-uno/
ESP8285 + WiFi Repeater
$ apt install esptool
$ cd $ESP_REPEATER_SOURCE_PATH/firmware
$ esptool --port /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x00000 0x00000.bin 0x02000 0x02000.bin
https://gustavovelascoh.wordpress.com/2017/11/07/how-to-set-a-wifi-repeater-using-an-esp8285/