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

При подключении MAX485 не идет upload

Warlib

New member
На ESP8266 на D7/D8 подключены Rx/Tx конвертера в RS485. При аплоаде скетча в Arduino IDE постоянно возникает ошибка:
Arduino: 1.8.8 (Windows 10), Board: "WeMos D1 R1, 160 MHz, Flash, Enabled, 4M (1M SPIFFS), v2 Lower Memory, Disabled, None, Only Sketch, 921600"

warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

Стоит выдернуть любой из Rx/Tx - upload проходит нормально. На этих пинах библиотекой SoftwareSerial эмулируется серийный порт.

Ровно такая-же история была при подключении MAX485 чипа напрямую на Tx/Rxна Arduino Uno. На Mega проходило нормально.
 

CodeNameHawk

Moderator
Команда форума
При аплоаде скетча в Arduino IDE постоянно возникает ошибка:
А как вы заставляете есп принимать скетч на не стандартные выводы? Покажите схему соединения.

Я бы понял обновление со скетча, запустили скетч, переназначили выводы под Rx Tx и вперед.
Но и тогда SoftwareSerial по идее не потянет на 921600.

Стоит выдернуть любой из Rx/Tx - upload проходит нормально.
Это вообще из области фантастики, отключили вывод, а через него все передается.
 

CodeNameHawk

Moderator
Команда форума
D7 -GPIO13, D8- GPIO15. это не RX/TX
Из скетча, переназначив выводы, наверное можно будет работать, но почему он пробует грузить через них скетч и у него
Стоит выдернуть любой из Rx/Tx - upload проходит нормально.
непонятно.
 

CodeNameHawk

Moderator
Команда форума
Я понял, чего хотел ТС.
Вопрос должен быть почему перестает шиться есп, если использовать выводы D7 -GPIO13, D8- GPIO15.
И простой ответ GPIO15 служебная нога, для загрузки скетча на ней должен быть выставлен определенный уровень, что и как на главной странице этого сайта.
 

Сергей_Ф

Moderator
Команда форума
Ребята, грузит ТС нормально по rx\tx. Просто когда на D8 высокий уровень у него прошивка не идёт.
 

CodeNameHawk

Moderator
Команда форума
Сергей_Ф, вы не поверите,но я тоже об этом сказал
Я понял, чего хотел ТС.
Вопрос должен быть почему перестает шиться есп, если использовать выводы D7 -GPIO13, D8- GPIO15.
И простой ответ GPIO15 служебная нога, для загрузки скетча на ней должен быть выставлен определенный уровень, что и как на главной странице этого сайта.
вот только зачем все по два раза повторяете не пойму :)
 

Warlib

New member
А как вы заставляете есп принимать скетч на не стандартные выводы? Покажите схему соединения.

Я бы понял обновление со скетча, запустили скетч, переназначили выводы под Rx Tx и вперед.
Но и тогда SoftwareSerial по идее не потянет на 921600.


Это вообще из области фантастики, отключили вывод, а через него все передается.
Видимо, неточно объяснил. На выводы D7/D8 перепрограммированные SoftwareSerial в последовательный порт, подключается конвертер XY-485 он-же XY-017 - RS485 интерфейс. Сам sketch льется чер стандартный hardware Serial порт ESP8266. Собственно при заливке скетча выдергивается один из пинов Rx/Tx именно конвертера RS485.
 

Warlib

New member
Сергей_Ф, вы не поверите,но я тоже об этом сказал

вот только зачем все по два раза повторяете не пойму :)
Спасибо. Перенес с 15 на 5 (D1) ошибка иногда появляетсяи upload, номогает reset на Wemos D1 mini. После upload идет нормально.
Сначала перенес на 16 (D0) аплоад проходил, но Rx не работал.
 
Последнее редактирование:

nikolz

Well-known member
Спасибо. Перенес с 15 на 16 (D0) аплоадидет теперь нормально.
для использования RX/TX можно поставить тумблер(кнопку) на TX пин CH340.
Ножку микросхемы приподнять и установить кнопку. Кнопку нажимать при программировании.
 
Последнее редактирование:

Warlib

New member
для использования RX/TX можно поставить тумблер(кнопку) на TX пин CH340.
Ножку микросхемы приподнять и установить кнопку. Кнопку нажимать при программировании.
Мне нужно не один десяток таких устройств. И желательно в дальнейшем с возможностью обновления прошивки по OTA.
Мне проще поставить плату I2C в serial, чтобы получить Hardware serial в этом случае.
 

nikolz

Well-known member
Мне нужно не один десяток таких устройств. И желательно в дальнейшем с возможностью обновления прошивки по OTA.
Мне проще поставить плату I2C в serial, чтобы получить Hardware serial в этом случае.
передача данных по OTA не зависит от CH340.
Зачем лишний чип.
можно сделать так
ножку CH340 приподнять и на нее поставит штырь Подключаете этот штырь к TX штырю платы и получаете обычный режим .
можно ножку не поднимать а убрать резистор и вместо него включить штырь или перемычку.
Когда работаете с RS485 этот штырь никуда не подключается.
Все просто и минимум затрат.
Но выбор за Вами.
 
Последнее редактирование:

nikolz

Well-known member
еще проще сделать это на ESP12. Резисторы SMD ставите на обратную сторону и все компактно. Но для программирования по UART придется использовать адаптер.
Я для реальных устройств делаю на ESP12, а для разработки использую mini D1 или ESP12+адаптер на CH340.
 

Warlib

New member
Ещё вопрос, в документации Reference — ESP8266 Arduino Core 2.5.0-beta3 documentation вроде как указано, что GPIO15 и GPIO5 имеют pullup резисторы.
Но такое ощущение, что на GPIO15 его нет, поскольку ранее после заливки скетча RXD светодиод на плате 485 интерфеса промаргивал только при передаче данных.
После переноса на GPIO5 он постояно горит, как будто пин постоянно в HIGH. digitalWrite(RX_PIN, LOW) ни к чему не приводит.
В принципе, без разницы, передача данных нормально идет, хотя стали появлятся сообщения об ошибке вида "Invalid Slave ID", на GPIO15 такого не было. Хотелось бы понять почему так и можно ли опустить уровень на GPIO5.
 
Последнее редактирование:

Warlib

New member
еще проще сделать это на ESP12. Резисторы SMD ставите на обратную сторону и все компактно. Но для программирования по UART придется использовать адаптер.
Я для реальных устройств делаю на ESP12, а для разработки использую mini D1 или ESP12+адаптер на CH340.
Спасибо. Хороший вариант, я тоже об этом подумал. И чип дешевле, себестоимость устройства снизится.
 

nikolz

Well-known member
Ещё вопрос, в документации Reference — ESP8266 Arduino Core 2.5.0-beta3 documentation вроде как указано, что GPIO15 и GPIO5 имеют pullup резисторы.
Но такое ощущение, что на GPIO15 его нет, поскольку ранее после заливки скетча RXD светодиод на плате 485 интерфеса промаргивал только при передаче данных.
После переноса на GPIO5 он постояно горит, как будто пин постоянно в HIGH. digitalWrite(RX_PIN, LOW) ни к чему не приводит.
В принципе, без разницы, передача данных нормально идет, хотя стали появлятся сообщения об ошибке вида "Invalid Slave ID", на GPIO15 такого не было. Хотелось бы понять почему так и можно ли опустить уровень на GPIO5.
возможно Вы пин оставляете в состоянии High Сбросьте его в Low.
 

Сергей_Ф

Moderator
Команда форума
После переноса на GPIO5 он постояно горит, как будто пин постоянно в HIGH.
Gpio15 притянут к земле резистором в 10-15кОм. Возможно это играло положительную роль в том случае. Попробуйте сделать тут также, только обязательно отключите внутренний резистор подтяжки.
Вполне возможно что и на gpio15 всё заработало нормально, после подключения еще одного резистора на 2-10 кОм к земле.
 
Сверху Снизу