ESP01, подключенный к Arduino, не может считывать данные из UART при подключении от внешнего источника питания

У меня есть Arduino Uno, подключенный к модулю NodeMCU ESP01, обмениваясь через последовательные контакты. NodeMCU питается от штыря 3,3 В от Arduino. Моя идея состоит в том, что ESP01 получает сообщения MQTT, отправляет их в Arduino через последовательный порт и ждет ответа Arduino, а затем публикует сообщения MQTT.

Если я могу подключить Arduino с USB вашего компьютера, все будет хорошо.

Если я использую внешний источник питания 12V /1A, ESP01 может публиковать и получать «стандартные» сообщения MQTT (что означает, что он не отправляет сообщения в Arduino и не ожидает ответа). Он просто получает и напрямую отвечает (не участвует Ардуино).

Проблема возникает, если ESP необходимо запросить Arduino для получения результата.

Arduino может читать и писать (я вижу правильный текст в консоли) для последовательного порта, но NodeMCU ESP01 имеет проблемы с публикацией сообщений MQTT. Иногда он ничего не публикует (ESP, вероятно, не может прочитать, что Arduino отправляет по серийному номеру), иногда он публикует уничтоженные символы (случайный текст).

Похоже, что ток, необходимый модулю ESP, недостаточно высок, но для меня это не имеет смысла, поскольку внешний источник питания должен обеспечивать больше тока, чем USB. Любые идеи?

Это моя схема:

 введите описание изображения здесь>> </a> </p>

<p> <strong> Код: </STRONG> </p>

<p> В моем ESP01 у меня есть следующий MQTT <code>---- +: = 0 =: + ----</code> listener, если тема - это запрос для Arduino (тема подтверждается <code>---- +: = 1 =: + ----</code>), то тема отправляется UART в Arduino, который прослушивает определенные строки в <code>---- +: = 2 =: + ----</code>. Когда Arduino получает строку, она выполняет некоторую логику и записывает ответ обратно в ESP через UART (<code>---- +: = 3 =: + ----</code>). </p>

<p> После того, как ESP отправит сообщение в Arduino, он устанавливает прослушиватели для строк, которые заканчиваются символом%. Если получен ответ от Arduino, он публикует сообщение MQTT с результатом. </p>

<pre><code>---- +: = 4 = + ----</code></pre>

<p> Ответ от Arduino имеет следующий формат сообщения: </p>

<pre><code>---- +: = 5 = + ----</code></pre>

<p> Это решение работает, если Arduino подключен к USB-порту вашего настольного компьютера. Он не работает, если он питается от внешнего источника питания. Похоже, что ESP не умеет читать то, что Arduino написал UART с помощью <code>---- +: = 6 =: + ----</code>, если он питается от внешнего источника питания. </P >

<p> Я не знаю, почему, потому что источник питания должен иметь возможность передавать больше тока. </p>

<p> <strong> Edit: </STRONG> </p>

<p> Я использую следующий клон Arduino: <a href = ссылка eBay

Я попытался подключить ESP01 к выходному напряжению Arduino 5V с регулятором напряжения (5 В должно доставлять больше тока), и снова, если USB подключен, ESP без проблем считывает сообщения UART. Если Arduino питается от внешнего источника питания, ESP считывает поврежденные символы. Единственное отличие состоит в том, что эти поврежденные персонажи кажутся всегда одинаковыми. Так что, возможно, некоторые проблемы с кодированием (?) Или что-то в этом роде.

Пока это похоже на то, что значение низкого тока не является проблемой.

Изменить 2

Я удалил из своего кода onMessage из кода ESP /LUA, который я использовал для «debbuging». Он печатал для серийных сообщений для меня. Похоже, что он немного очистил трафик на последовательной линии.

Теперь я получаю большинство правильных символов времени, но первый символ отсутствует, поэтому вместо:

LOW% Я получаю OW%
HIGH% Я получаю IGH%
29,53% Я получаю 9,53%

И время от времени я получаю String =] quit%.

Возможно, какой-то входной буфер имеет проблему (?).

3 голоса | спросил n0hepe 20 +03002016-10-20T20:52:16+03:00312016bEurope/MoscowThu, 20 Oct 2016 20:52:16 +0300 2016, 20:52:16

2 ответа


0

Как отметил @gre_gor, Arduino UNO не может обеспечить более 50 мА

Тот факт, что он работает на большинстве USB-TTL, заключается в том, что они могут доставлять более 300 мА.

ответил martin 25 +03002016-10-25T20:35:16+03:00312016bEurope/MoscowTue, 25 Oct 2016 20:35:16 +0300 2016, 20:35:16
0

Можно ли просто проверить, когда вы подключаете 3,3 В ESP к источнику питания 12 В, он перестает работать? Есть ли горячий запах, когда вы это делаете? Вы используете что-либо, чтобы понизить напряжение до 3,3 В?

Вы также говорите, что подключаете ESP к питанию Arduino 5V. Обычно это тоже не очень хорошая идея.

Также вы связали землю с Arduino с блоком питания ESP /12V? Если два устройства не разделяют общую точку, то они не согласятся с тем, что 0В, и поэтому не смогут разговаривать друг с другом по серийному номеру. Просто запустите провод от Gnd на Arduino до Gnd на ESP, и они оживут.

ответил Code Gorilla 23 FebruaryEurope/MoscowbThu, 23 Feb 2017 16:03:50 +0300000000pmThu, 23 Feb 2017 16:03:50 +030017 2017, 16:03:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132