<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>https://cadrspace.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Necrotechnician</id>
		<title>CADR - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="https://cadrspace.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Necrotechnician"/>
		<link rel="alternate" type="text/html" href="https://cadrspace.ru/w/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Necrotechnician"/>
		<updated>2026-04-23T13:56:37Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.29.0</generator>

	<entry>
		<id>https://cadrspace.ru/w/index.php?title=ESP&amp;diff=843</id>
		<title>ESP</title>
		<link rel="alternate" type="text/html" href="https://cadrspace.ru/w/index.php?title=ESP&amp;diff=843"/>
				<updated>2019-04-10T18:52:44Z</updated>
		
		<summary type="html">&lt;p&gt;Necrotechnician: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Общая информация =&lt;br /&gt;
* [http://www.esploradores.com/wp-content/uploads/2018/04/A-Beginners-Guide-to-the-ESP8266-1.pdf A Beginner's Guide to the ESP8266]&lt;br /&gt;
&lt;br /&gt;
= ESP8266 =&lt;br /&gt;
Инструкция подготовлена Владимиром Слугиным на базе описания следующего видео: https://www.youtube.com/watch?v=64_9O9sKuqM&lt;br /&gt;
&lt;br /&gt;
== Настройка IDE ==&lt;br /&gt;
# Установить IDE (http://www.arduino.cc/en/Main/Software)&lt;br /&gt;
# Запустить Arduino IDE, далее Файл – Настройки – в поле Additional Boards Manager URLs вставить ссылку http://arduino.esp8266.com/package_es...&lt;br /&gt;
# Инструменты – Плата – Boards Manager&lt;br /&gt;
# В Boards Manager найти и установить (около 130 мб) ESP8266 by ESP8266 Community Forum&lt;br /&gt;
# В меню Инструменты выбрать Плата – Generic ESP8266. При необходимости установить: частота - 80MHz, скорость записи - 9600, Flash Size - 512K.&lt;br /&gt;
&lt;br /&gt;
== Схема подключения к компьютеру ==&lt;br /&gt;
использован USB-UART (UART - ESP8266):&lt;br /&gt;
* GND - GND&lt;br /&gt;
* RxD - TxD&lt;br /&gt;
* TxD - RxD&lt;br /&gt;
* 3.3v (!!) - Vcc + (через резистор 10-20К) CH_PD&lt;br /&gt;
&lt;br /&gt;
== Скетч для записи в esp8266 ==&lt;br /&gt;
# В Arduino IDE Файл – Образцы – ESP8266WebServer – HelloServer&lt;br /&gt;
# В файле указать ssid (название) точки доступа WiFi (const char* ssid = &amp;quot;....&amp;quot;;) и пароль (const char* password = &amp;quot;....&amp;quot;;)&lt;br /&gt;
&lt;br /&gt;
== Запись в esp8266 ==&lt;br /&gt;
# Соединить GND (UART) с gpio0 (esp)&lt;br /&gt;
# Подключить UART к компьютеру&lt;br /&gt;
# Разомкнуть GND и gpio0&lt;br /&gt;
# Нажать кнопку Вгрузить в Arduino IDE&lt;br /&gt;
# После завершения загрузки переподключить UART (вместе с esp)&lt;br /&gt;
&lt;br /&gt;
== Подключение к веб серверу esp8266 ==&lt;br /&gt;
# Подключится к точке доступа esp (у меня называется ESPap)&lt;br /&gt;
# Ввести ip адрес (192.168.4.1) в поисковой строке браузера&lt;br /&gt;
&lt;br /&gt;
= ESP-32S =&lt;br /&gt;
&lt;br /&gt;
== Описание ==&lt;br /&gt;
* Pinout: https://www.14core.com/wp-content/uploads/2017/04/ESP32-Pinout-DIagram.jpg&lt;br /&gt;
* Описание CPU: http://ip.cadence.com/uploads/533/Cadence_Tensillica_Xtensa_LX6_ds-pdf&lt;br /&gt;
&lt;br /&gt;
== Получение toolchain'а ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ cd /path/to/arduino/&lt;br /&gt;
$ mkdir -p hardware/espressif&lt;br /&gt;
$ cd hardware/espressif&lt;br /&gt;
$ git clone https://github.com/espressif/arduino-esp32.git esp32&lt;br /&gt;
$ cd esp32/tools/&lt;br /&gt;
$ python get.py&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Сборка проекта ==&lt;br /&gt;
Для сборки необходимо выполнить следующую команду:&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
./build.py /path/to/sketch/&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Собранный проект будет в подкаталоге в '/tmp'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== TypeError: unorderable types: PartitionDefinition PartitionDefinition ====&lt;br /&gt;
На данный момент (2017-06-28) для работы утилит из toolchain'а необходим Python 2:&lt;br /&gt;
  https://github.com/espressif/esp-idf-template/issues/3&lt;br /&gt;
&lt;br /&gt;
На Gentoo GNU/Linux проблема решается на переключение на нужную версию Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ eselect python list&lt;br /&gt;
Available Python interpreters:&lt;br /&gt;
  [1]   python2.7&lt;br /&gt;
  [2]   python3.3&lt;br /&gt;
  [3]   python3.4 *&lt;br /&gt;
$ eselect python set 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== warning: no return statement in function returning non-void ====&lt;br /&gt;
Проблема возникает при использовании библиотеки [https://github.com/squix78/esp8266-oled-ssd1306 esp8266-oled-ssd1306].&lt;br /&gt;
&lt;br /&gt;
===== Симптомы =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
In file included from /home/avp/sketchbook/libraries/ESP8266_Oled_Driver_for_SSD1306_display/SSD1306Wire.h:31:0,&lt;br /&gt;
                 from /home/avp/sketchbook/libraries/ESP8266_Oled_Driver_for_SSD1306_display/SSD1306.h:30,&lt;br /&gt;
                 from /tmp/arduino_8d8be8ad7edc7c39c779408e245d8629/SSD1306ClockDemo.ino:32:&lt;br /&gt;
/home/avp/sketchbook/libraries/ESP8266_Oled_Driver_for_SSD1306_display/OLEDDisplay.h: In member function 'virtual bool OLEDDisplay::connect()':&lt;br /&gt;
/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]&lt;br /&gt;
     virtual bool connect() {};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Решение =====&lt;br /&gt;
Поменять файл &amp;lt;code&amp;gt;platform.txt&amp;lt;/code&amp;gt; в каталоге с проектом, выключив сигнализацию ошибок для некоторых предупреждений:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
diff --git a/platform.txt b/platform.txt&lt;br /&gt;
index 3a8b30b..370b1df 100644&lt;br /&gt;
--- a/platform.txt&lt;br /&gt;
+++ b/platform.txt&lt;br /&gt;
@@ -27,7 +27,7 @@ compiler.c.cmd=xtensa-esp32-elf-gcc&lt;br /&gt;
 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&lt;br /&gt;
 &lt;br /&gt;
 compiler.cpp.cmd=xtensa-esp32-elf-g++&lt;br /&gt;
-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&lt;br /&gt;
+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&lt;br /&gt;
 &lt;br /&gt;
 compiler.S.cmd=xtensa-esp32-elf-gcc&lt;br /&gt;
 compiler.S.flags=-c -g3 -x assembler-with-cpp -MMD -mlongcalls&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Загрузка прошивки ==&lt;br /&gt;
Из Arduino IDE загрузку следует выполнять на скорости 115200.&lt;br /&gt;
&lt;br /&gt;
После загрузки нужно перезагрузить МК -- можно через кнопку, если таковая есть на плате.&lt;br /&gt;
&lt;br /&gt;
== Bluetooth ==&lt;br /&gt;
* [https://github.com/espressif/esp-idf/tree/master/examples/bluetooth Примеры программ]&lt;br /&gt;
* https://hackaday.io/project/28904-read-phone-notifications-using-esp&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Прошивка загрузилась, но не работает ===&lt;br /&gt;
В этом случае следует перезагрузить МК.&lt;br /&gt;
&lt;br /&gt;
=== Brownout detector was triggered ===&lt;br /&gt;
==== Симптомы ====&lt;br /&gt;
При работе с Bluetooth система выдаёт в последовательный порт следующее сообщение:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
ets Jun  8 2016 00:22:57&lt;br /&gt;
&lt;br /&gt;
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)&lt;br /&gt;
configsip: 0, SPIWP:0xee&lt;br /&gt;
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00&lt;br /&gt;
mode:DIO, clock div:1&lt;br /&gt;
load:0x3fff0018,len:4&lt;br /&gt;
load:0x3fff001c,len:956&lt;br /&gt;
load:0x40078000,len:0&lt;br /&gt;
load:0x40078000,len:13076&lt;br /&gt;
entry 0x40078ad0&lt;br /&gt;
Starting BLE wor0k!&lt;br /&gt;
&lt;br /&gt;
Brownout detector was triggered&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Причина ====&lt;br /&gt;
Использование BLE приводит к повышению энергопотребления.  Если источник питания не может обеспечить необходимое напряжение, то при падении напряжения до заданного минимума срабатывает &amp;quot;brownout detector&amp;quot; и микроконтроллер автоматически перезагружается.  Это сделано для того, чтобы МК не находился в промежуточном состоянии &amp;quot;вроде работает, а вроде и нет&amp;quot;, так как в этом случае возможны случайные сбои в его работе, которые могут привести к выходу МК из строя.&amp;lt;ref name=&amp;quot;brownout-detector&amp;quot;&amp;gt;https://electronics.stackexchange.com/questions/37561/what-is-a-brownout-condition&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Решение ====&lt;br /&gt;
Заменить USB-провод подключения на более качественный, или использовать более мощный БП для запитки МК.&lt;br /&gt;
&lt;br /&gt;
=== Watchdog reset ===&lt;br /&gt;
==== Симптомы ====&lt;br /&gt;
На монитор приходят сообщения, похожие на &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
Exception (0):&lt;br /&gt;
epc1=0x4021372a epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000&lt;br /&gt;
&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;stack&amp;gt;&amp;gt;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ctx: sys&lt;br /&gt;
sp: 3fffed10 end: 3fffffb0 offset: 01a0&lt;br /&gt;
3fffeeb0:  00000000 402132ac 0000004c 40100808  &lt;br /&gt;
3fffeec0:  9b0110ac e50110ac 3fffef30 402132ac  &lt;br /&gt;
3fffeed0:  3ffef15a 3ffef134 00000002 3ffed5b0  &lt;br /&gt;
3fffeee0:  3ffee434 000000f8 000000f8 401005b8  &lt;br /&gt;
3fffeef0:  3fffdc80 3ffeee5c 3ffef11c 3ffeeea4  &lt;br /&gt;
3fffef00:  00000608 3ffee84c 3ffef134 4020aa8c  &lt;br /&gt;
3fffef10:  3fffdc80 3ffeee5c 3ffef11c 4020a8a7  &lt;br /&gt;
3fffef20:  402298f6 3ffeee5c 3ffef11c 40229907  &lt;br /&gt;
3fffef30:  3ffef144 3ffef134 00000000 3fffdcb0  &lt;br /&gt;
3fffef40:  3ffedca8 00000000 3ffef11c 4022b573  &lt;br /&gt;
3fffef50:  40000f49 3fffdab0 3fffdab0 40000f49  &lt;br /&gt;
3fffef60:  40000e19 40001878 00000004 00000000  &lt;br /&gt;
3fffef70:  3fffff10 aa55aa55 00000000 401047dc  &lt;br /&gt;
3fffef80:  401047e2 00000004 00000000 00000000  &lt;br /&gt;
3fffef90:  4010000d 40102f8e 00040000 b302b935  &lt;br /&gt;
3fffefa0:  40100a94 3fffef3c 40100a41 3fffff68  &lt;br /&gt;
3fffefb0:  3fffffc0 00000000 00000000 feefeffe  &lt;br /&gt;
3fffefc0:  feefeffe feefeffe feefeffe feefeffe&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;stack&amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
&lt;br /&gt;
 ets Jan  8 2013,rst cause:4, boot mode:(3,6)&lt;br /&gt;
&lt;br /&gt;
wdt reset&lt;br /&gt;
load 0x4010f000, len 1384, room 16 &lt;br /&gt;
tail 8&lt;br /&gt;
chksum 0x2d&lt;br /&gt;
csum 0x2d&lt;br /&gt;
v951aeffa&lt;br /&gt;
~ld&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Причина ====&lt;br /&gt;
Сторожевой таймер может срабатывать из-за недостаточного уровня питания, либо реже - утечки памяти.&lt;br /&gt;
Команды в духе ESP.wdtDisable(); ESP.wdtFeed(); не помогут. Вочдог находится на какой-то внещней схеме.&amp;lt;ref name=&amp;quot;wstresetreasons&amp;quot;&amp;gt;https://github.com/esp8266/Arduino/issues/3535&amp;lt;/ref&amp;gt; yield(); автору тоже не помог.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Решение ====&lt;br /&gt;
&lt;br /&gt;
Можно попрыгать вокруг вашего устройства с бубном. По крайней мере, этот метод не применялся. А можете разобраться, как работает Arduino ESP8266/ESP32 Exception Stack Trace Decoder.&lt;br /&gt;
&lt;br /&gt;
= Общая информация =&lt;br /&gt;
== Подключение оборудования ==&lt;br /&gt;
* http://www.esp8266learning.com/wemos-oled-shield-example.php&lt;br /&gt;
* http://arduino-project.net/oled-l2c-arduino-uno/&lt;br /&gt;
&lt;br /&gt;
= ESP8285 + WiFi Repeater =&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
$ apt install esptool&lt;br /&gt;
$ cd $ESP_REPEATER_SOURCE_PATH/firmware&lt;br /&gt;
$ esptool --port /dev/ttyUSB0 write_flash -fs 1MB -fm dout 0x00000 0x00000.bin 0x02000 0x02000.bin&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
https://gustavovelascoh.wordpress.com/2017/11/07/how-to-set-a-wifi-repeater-using-an-esp8285/&lt;br /&gt;
&lt;br /&gt;
= Ссылки =&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Категория:База знаний]]&lt;/div&gt;</summary>
		<author><name>Necrotechnician</name></author>	</entry>

	</feed>