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?
@phatmanace, 👍0
Обсуждение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
- Последовательная связь между несколькими устройствами (или ардуино)
- I2C связь между Arduino Uno и Nodemcu32-s (ESP32)
- SIM800L не отвечает на AT-команды
- Как импортировать данные с SD-карты на Arduino на компьютер, используя последовательный/COM-порт Arduino?
- Проблема последовательной связи с общей землей SIM800L
- ESP отправить строку в Arduino
- Альтернатива LCD-дисплеям UART/I2C?
- Arduino UARTS Автоматическая адресация ведомых устройств
да и да. и вы можете использовать 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