• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Общие вопросы по Arduino IDE для ESP8266

AltSoftLLC

New member
@AltSoftLLC Я использую esptool на маке.
Какой usb-serial вы используете? Если FTDI, драйверы системные, или с сайта FTDI? У меня, помнится, были проблемы с эппловским драйвером FTDI...
Использую переходник PL2303. Драйвера с сайта.
Самое интересное, что под виртуальной виндой на этой же машине я успешно шью с помощью ESP8266Flasher.
 

pvvx

Активный участник сообщества
А где взять правильный?
Самому исправить. Частично правили в теме UDK. Но в последних версиях UDK, начиная с 2.0.4 опять с ошибками сборка...
Меньше ошибок в FLASH_DOWNLOAD_TOOLS_v1.2_150512, странслированной с ворованного и исправленного esptool.py... Коннект у вас esptool.py может терять из-за тормозов драйверов. У ESP2866 авто-настройка на скорость передачи в самом начале и, если в этот момент кривые провода и прочие бяки, то настраивается криво и дальше рвется из-за ошибок от неверно выбранной скорости...
Возможно, если драйвера не совсем кривые на маке, то поварьируйте скорсотью соединения, указываемую esptool.py. Рабочие пределы авто-настройки ESP8266 на скорость от 19200 Baud до 1 MBaud. Шаг любой.
При низкой скорости старые версии esptool.py вылетали по таймауту - это никто так окончательно и не исправил...
 
Последнее редактирование:

igrr

Moderator
Команда форума
В esptool-ck, который идёт в комплекте с Arduino, ошибка с размером стирания исправлена еще в предыдущей версии.
Исправленный esptool.py можно найти в комментариях к пулл-реквесту про esptool на нашем гитхабе.
С pl2303 попробую в понедельник — кажется на работе есть такой.
 

Romans

New member
Не пинайте, если где-то было, но не нашел. Для уменьшения электропотребления нужно отключить WiFi, то есть, как я понял нужно включить Modem-Sleep mode. Как это сделать в среде Ардуино?
 

Romans

New member
Не пинайте, если где-то было, но не нашел. Для уменьшения электропотребления нужно отключить WiFi, то есть, как я понял нужно включить Modem-Sleep mode. Как это сделать в среде Ардуино?
enum sleep_type {
NONE_SLEEP_T = 0,
LIGHT_SLEEP_T,
MODEM_SLEEP_T
};
extern "C" bool wifi_set_sleep_type(enum sleep_type type);
bool i;
void setup(void)
{
i= wifi_set_sleep_type(MODEM_SLEEP_T);
.
.
.
Всё компилится, грузится, работает, но разницы в потреблении не заметил. WiFi не использую.
 
Последнее редактирование:

AltSoftLLC

New member
Скрестил ESP8266 с читалкой RFID меток. Все отлично работает, но периодически падает со следующими сообщениями:
ets Jan 8 2013,rst cause:4, boot mode:(3,7)

wdt reset
load 0x40100000, len 28780, room 16
tail 12
chksum 0xe5
ho 0 tail 12 room 4
load 0x3ffe8000, len 1548, room 12
tail 0
chksum 0x06
load 0x3ffe8610, len 3744, room 8
tail 8
chksum 0x42
csum 0x42
rl

Переполнения кучи нет. Показывает Heap size: 27712 на момент падения.
Причем если упало, то дальше зацикливается, пока не передернешь питание.
Подскажите куда копать?
 

igrr

Moderator
Команда форума
Посмотрите, нет ли в скетче циклов, которые потенциально могут занимать больше секунды. Если есть, вставьте туда yield();. Если нет, выложите код куда-нибудь, я посмотрю.
 

igrr

Moderator
Команда форума
Между вызовами delay(), если они есть. Если нет — всего на функцию loop().
 

Romans

New member
Если есть, вставьте туда yield();.
Эту информацию очень желательно поместить на главную страницу, в описание Arduino IDE.
Сутки бился, не мог понять, почему рабочий алгоритм не работает. После yield(); всё заработало, как надо.
 

igrr

Moderator
Команда форума
Romans, так вроде написано: https://github.com/esp8266/Arduino/blob/esp8266/README.md#timing-and-delays

Если можете расширить/дополнить/переформулировать — welcome.

AltSoftLLC, пока не нашёл, в чем может быть проблема. Удалив из вашего кода библиотеку RFID, запустил, падение не поймал. С питанием модуля все в порядке?
 

pvvx

Активный участник сообщества
Эту информацию очень желательно поместить на главную страницу, в описание Arduino IDE.
Сутки бился, не мог понять, почему рабочий алгоритм не работает. После yield(); всё заработало, как надо.
Это связано с неверным использованием WDT в пакете Arduino IDE.
Нет такой функции void ets_wdt_enable(void), а есть void ets_wdt_enable(int mode, uint32_t a, uint32_t b) и это функции из ROM-BIOS и не совместимы с SDK > v0.9.0.
Т.е. ошибка не ваша, а портировщиков Arduino на ESP8266.
 

igrr

Moderator
Команда форума
pvvx, спасибо!
Кстати, эта функция у нас нигде не вызывается (надеюсь).
 

pvvx

Активный участник сообщества
Кстати, эта функция у нас нигде не вызывается (надеюсь).
Более подробно тут
В SDK >= 1.1.0 WDT работает с таймером. Таймер засылки/проверки "подтверждения" заряжается на 1600 ms, но управление в переменной и может походу изменятся другими процедурами в либе pp_xxxxxx.... Строиться запрос post(), а в task() подтверждение. +Таймер проверяет эту цепь...
В ROM-BIOS тоже есть режимы работы WDT с таймером и с "окном" для подтверждения...
Механизм в разных SDK разный и точно описывать долго, да сами процедуры обслуживания WDT в SDK кривые.... Меняйте на свои - исходники загрузки и запуска SDK уже разобраны.
 
Последнее редактирование:

igrr

Moderator
Команда форума
исходники загрузки и запуска SDK уже разобраны.
pvvx, я смотрел ваш мега-архив, очень много ценной информации. Но к сожалению пока он выложен без внятной лицензии, использовать что-либо из него (кроме общих идей) в реальном проекте невозможно. Если бы вы сопроводили архив файликом какой-нибудь ни к чему не обязывающей лицензии, жить стало бы легче :)

В ROM-BIOS тоже есть режимы работы WDT с таймером и с "окном" для подтверждения
А известно, как задать период таймера?
 

pvvx

Активный участник сообщества
pvvx, я смотрел ваш мега-архив, очень много ценной информации. Но к сожалению пока он выложен без внятной лицензии, использовать что-либо из него (кроме общих идей) в реальном проекте невозможно. Если бы вы сопроводили архив файликом какой-нибудь ни к чему не обязывающей лицензии, жить стало бы легче :)
Там лежит лицензия на русском языке :)
А в общем нет никакой лицензии - всё дано для любого использования, полностью на усмотрение скопировавшего, с любыми изменениями, вплоть до присвоения авторства и т.д.
Но главное пожелание - как можно реже использовать упоминания обо мне в коде и где либо :)
И т.к. такой лицензии в мире я не нашел, то привести и приложить её к файлам не могу. :)
И связанно это с 30 летним опытом в данных делах. Мне своих собственных работ хватает, а поддерживать и осуществлять хоть какие диалоги по свершенным проектам за это время я не могу - я их уже все не помню... :)
А известно, как задать период таймера?
Посмотрю позже.
 
Последнее редактирование:
Сверху Снизу