ESP01 и Arduino — путаница с последовательным портом

Я пытаюсь понять, что думать об устройствах ESP01 и подключении Arduino

Я приобрел один из USB-программаторы с Ebay для программирования ESP01 - это прекрасно работает, я вижу, как ESP работает (у меня он пингует сервер, отправляя данные обратно и далее)

Очевидно, что у ESP01 очень мало контактов GPIO, поэтому я заинтересован в подключении к Arduino, чтобы я мог объединить ввод-вывод Arduino с Wi-Fi на ESP, и здесь я немного застрял. Я предполагаю, что мне нужно подключить контакт RX на Uno к TX на ESP и TX на Uno к ESP RX, чтобы установить соединение, но я не понимаю, какой последовательный порт использовать на Уно.

В частности:

  • Являются ли контакты TX/RX на arduino тем же последовательным портом, что и разъем USB, т. е. если я намерен подключить arduino к компьютеру, чтобы общаться с ним через USB, не следует ли мне повторно используйте контакты TX/RX для связи с ESP

  • Если это так, следует ли мне искать Software Serial или что-то подобное и использовать другие контакты ввода-вывода на Arduino для подключения к ESP01

... Кроме того, если я все это заработаю, мне все еще нужен USB-программатор, или я могу программировать напрямую с Arduino?

, 👍0

Обсуждение

да и да. и вы можете использовать Arduino для загрузки в esp-01, но это не так просто. Рекомендую залить прошивку на esp-01 с помощью программатора и использовать соответствующую библиотеку в Arduino. например https://github.com/jandrassy/WiFiEspAT, @Juraj

Круто - спасибо, так что первое да, это то, что контакты RX / TX - это то же последовательное соединение, которое использует порт USB? (просто убедиться, что я полностью понимаю), @phatmanace

да. Atmega328p имеет только одно периферийное устройство UART для аппаратного последовательного порта., @Juraj

Жаль, что все новички подсаживаются на искусственную (и ложную) необходимость объединения ESP01 и Arduino в одном проекте. Новичку следует оставить сложности подключения одного устройства к другому на будущее и просто начать с версии ESP8266 с большим количеством GPIO, например ESP12., @mguima

@mguima, esp8266 был разработан для использования в качестве адаптера WiFi, а не в качестве отдельного MCU. Вы хотите написать скетчи для CC2541 на адаптере HC-11 BLE? это тоже MCU., @Juraj

@juraj, этот вопрос глупый и бессмысленный. **Я ничего не говорил о написании скетчей для CC2541 или HC11, равно как и для TMS1000.** Но большинство вещей, которые может захотеть сделать новичок, это простые вещи, такие как мигание светодиода или переключение реле. , **достаточно ESP8266**, и, ДА, в некритической среде ESP8266 можно использовать как автономный ЦП. Профессионал, которому **ДЕЙСТВИТЕЛЬНО** нужно использовать Arduino **и** ESP8266, наверняка не будет просить помощи здесь, в StackExchange. Но в большинстве случаев использование ESP8266 в качестве адаптера Wi-Fi для Arduino — просто ненужная и сложная реклама., @mguima

@juraj **НЕ ПРАВДА**, что _"esp8266 был разработан для использования в качестве адаптера WiFi, а не в качестве отдельного MCU"._ Кажется, вы сказали это только потому, что не согласны с тем, что я сказал. Можете ли вы указать источники этой информации? ESP8266 [datasheet](https://www.espressif.com/sites/default/files/documentation/0a-esp8266ex_datasheet_en.pdf) говорит: «Благодаря полным и автономным сетевым возможностям Wi-Fi ESP8266EX может работать как автономное приложение или как ведомое устройство для основного MCU»._ Если он должен был быть просто адаптером WiFi, зачем ему периферийные устройства и доступные GPIO?, @mguima

@mguima, не сказано, с какой целью он был разработан. Было бы очень странно тратить столько контактов для конфигурации загрузки на автономном MCU. Большинство документов посвящено интеграции с хост-MCU. Изначально не было опубликованного SDK., @Juraj


1 ответ


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

1

У Arduino UNO есть только один последовательный порт. Это контакты 0/1 (RX и TX), которые сопоставлены с объектом Serial.

Эти контакты и этот объект также используются для связи с ПК через соединение USB. Это означает, что вы не можете легко использовать их как для связи с ПК, так и для связи ESP8266. Это возможно, но это приводит к путанице.

Вот почему многие люди используют SoftwareSerial, потому что он может работать с любой комбинацией выводов на Arduino, которая вам нравится.

... Кроме того, если я все это заработаю, мне все еще нужен USB-программатор, или я могу программировать напрямую с Arduino?

Опять же, это возможно, но очень грязно. Возможно, вы могли бы передать вещи из Serial в экземпляр SoftwareSerial, но это ненадежно (SoftwareSerial в целом ненадежен для устойчивых передач данных), а использование Arduino в качестве простого интерфейса UART повлечет за собой изменение проводки на контакты 0/1, когда вы захотите запрограммировать.

Поэтому очень просто использовать USB-интерфейс для программирования. Либо так, либо настройте программирование OTA для ESP8266, чтобы вам даже не пришлось использовать провода.

,

Это здорово, спасибо за руководство., @phatmanace