Arduino не запускает код без подключения к ПК через USB

У меня есть Arduino UNO и esp8266, подключенные к нему. Оба устройства имеют отдельные линии питания. Каждый подключен через USB-кабель, для Arduino USB используется как линия питания и стандартная линия загрузки прошивки, для esp8266 только как линия питания. Если я подключаю все к USB-портам компьютера, все работает нормально. Но если я подключу Arduino к отдельному зарядному устройству с USB-портом, код Arduino не запустится. Я вижу это по работе последовательного интерфейса, потому что код интенсивно использует его, и когда я включаю Arduino, линии RX и TX все время отключены, что, я думаю, указывает на то, что код не работает, а Arduino в режиме загрузки. , каким-то образом.

Я провел поиск по тем же проблемам, и ничего не помогло из их предложений. Пробовал тянуть линию RX к GND через резистор, чтобы убедиться, что на линии нет помех, добавил конденсаторы на линию питания, чтобы исключить пульсации на линии. Но ничего не помогло.

Arduino не запускает код независимо от esp8266. Я пробовал запускать Arduino отдельно, без каких-либо других подключений, но это не помогло. Все еще не работает.

, 👍1

Обсуждение

Диаграммы могли бы помочь («картинка стоит 1000 слов…»), но *кажется*, что все, что касается ESP8266, может быть удалено из вашего вопроса, потому что в конце вы говорите: «Я пытался запустить Arduino отдельно, без каких-либо другие подключения, но это не помогло. Все еще не работает." Вы не сказали точно, *как* вы знаете, что он не работает. В целом, я предлагаю упростить ваш тест и уточнить ваш вопрос; добавить схему/фото *минимального* нерабочего конфига; помните, что не все «зарядки» хорошего качества; эту тему лучше перенести на Arduino SE, так как там у них больше опыта работы с Arduino., @SamGibson


3 ответа


Лучший ответ:

1

Эта проблема возникла у меня, когда я впервые начал заниматься электроникой.

Источники питания, подключенные к сети переменного тока, обычно имеют внутри «изолирующий трансформатор». Это позволяет снизить напряжение переменного тока до более приемлемого напряжения переменного тока (которое затем выпрямляется до напряжения постоянного тока), а также защитить пользователя/оборудование/(ваш дом) в случае отказа источника питания (AC 230/ 110 В серьезно повредит вам!). Видите ли, выход трансформатора «изолирован» от линии переменного тока.

В связи с этим каждый источник питания, подключенный к сети переменного тока, имеет «изолированный/отдельный» уровень заземления и напряжения питания. Итак, если вы хотите запитать и использовать две или более печатных плат вместе с помощью отдельных источников питания, вам необходимо соединить все их (источники питания) GND вместе, чтобы у вас была «общая земля».

В вашем случае питание Arduino UNO и esp8266 от одного и того же компьютера работает, потому что компьютер питается от одного источника питания и что провода GND компьютера на линии USB являются «общими», то есть не изолированы.

Когда вы питаете Arduino от отдельного источника, Arduino и esp8266 имеют разный уровень GND, поэтому линии RX и TX между ними должны быть плавающими. Чтобы решить вашу проблему, подключите провод от порта GND Arduino (он находится рядом с контактами аналогового чтения) к контакту GND Esp8266 (конечно, где-нибудь подходящем).

,

1

Убедились ли вы, что заземление Arduino и esp8266 соединено вместе? Также, поскольку вы используете esp8266, вы должны подключить его к контактам rx и tx. Убедитесь, что вы удалили его при загрузке кода, а потом подключите.

,

Неспособность обеспечить общую основу почти наверняка является причиной. Подключение обоих устройств к одному и тому же ПК, скорее всего, соединит земли вместе через USB GND., @Dmitry Grigoryev

Этот ответ может применяться в некоторых случаях, но, похоже, он не соответствует последней части вопроса ОП: «Я пытался запустить Arduino отдельно, без каких-либо других подключений, но это не помогло. Все еще не работает». Таким образом, если Arduino с отдельным питанием без каких-либо других подключений не работает (непонятно, как OP решил, что ...), то отсутствие заземления *между* устройствами не может быть причиной, поскольку они не нужны, когда нет задействовано другое устройство :-), @SamGibson


0

Я полагаю, что это происходит из-за электрических помех между проводами. Если вы используете несколько длинных проводов (100 мм или больше), каждый провод, который вы прокладываете, действует как антенна, которая может либо передавать, либо принимать одиночные сигналы на/с других близких проводов. Если вы разделите свои провода или, что еще лучше, защитите свои провода данных друг от друга, ваши проблемы должны решиться.

Сигналы, исходящие от платы Arduino, очень слабы и легко подвержены помехам из окружающей среды, например двигателей, радиоволн, Wi-Fi или даже работающей микроволновой печи.

Либо экранируйте кабели передачи данных, сделайте их короче, либо добавьте схемы, которые могут передавать/принимать сигналы на большие расстояния, даже если они составляют всего 100 мм. При напряжении 3,3 В и очень малом токе не нужно много шума, чтобы зашумить сигналы данных.

Надеюсь, это поможет!

,