Как сделать выводы Tx и Rx на ESP-8266-01 в выводах GPIO?

При программировании ESP-01 с помощью Arduino IDE, как я могу сделать Tx и Rx в универсальные контакты ввода/вывода надежно? Я думаю, что есть команда поменять Tx и Tx с другими контактами. Я попробовал serial.swap (), но это не сработало. Так как же сделать с Arduino IDE или это вообще возможно?. Я использую ESP-01, что означает, что после ответа на этот вопрос будет четыре контакта GPIO.

Я хочу добиться того же, что и в видео , Как добавить больше GPIO к ESP8266 (ESP-01), но без пайки проволоки.

, 👍10


5 ответов


5

Tx = GPIO 1

Rx = GPIO 3

Должно работать, но будьте осторожны, потому что, если они сгорят, вы больше не сможете программировать или даже разговаривать с ESP.

,

Я не уверен, что понял ваш ответ - поэтому с вашим кодом arduino в вашем ответе он поменяет контакты tx , rx на другие, к которым невозможно получить доступ (кроме как без паяльной проволоки), чтобы ранее недоступные контакты, которые вы называете gpio 3 и gpio 1, можно было использовать как gpio 0 и gpio 2 в качестве входных или выходных контактов, @vzxc

Я имею в виду, что если вы хотите использовать вывод Tx в качестве ВЫВОДА / ВХОДА, объявите его и считайте его GPIO 1. То же самое относится и к контакту Rx., @Dat Ha

Значит, это будет работать так же, как видео, на которое я ссылался в вопросе?-кроме как без пайки, конечно. и это означало бы, что последовательные контакты tx и rx не могут использоваться для последовательной связи-и это нормально, @vzxc

верно, просто не забывайте быть ОСТОРОЖНЫМ, чтобы не закоротить эти 2 контакта, @Dat Ha


1

Может быть, немного поздно, но это может помочь кому-то другому.

Контакты ESP-01 GPIO (1 и 3)

,

Не просто устанавливайте ссылку на внешнюю страницу, особенно когда ответ где - то зарыт в ней. (Внешние страницы меняются и исчезают.) Вместо этого напишите здесь ответ, который непосредственно отвечает на вопрос, используя информацию с этой страницы (и все еще ссылаясь на нее с упоминанием о том, что именно там вы получили информацию)., @cjs

Довольно длинная и интересная статья, здесь трудно подвести итог... Я ухожу из [mirror](https://web.archive.org/web/20190418071504/http://www.forward.com.au/pfod/ESP8266/GPIOpins/ESP8266_01_pin_magic.html) на случай, если оригинал исчезнет., @brasofilo


20

Добавьте это в свой код в начале настройки set void():

//********** ИЗМЕНИТЬ ФУНКЦИЮ ВЫВОДА НА GPIO **********
//GPIO 1 (TX) замените pin на GPIO.
pinMode(1, FUNCTION_3); 
//GPIO 3 (RX) замените pin на GPIO.
pinMode(3, FUNCTION_3); 
//**************************************************

Вы больше не сможете использовать последовательный монитор, так как TX теперь будет выводом GPIO и не будет передавать последовательные данные. Вы все еще можете прошить свое устройство, так как при загрузке устройства в режиме флэш-памяти оно преобразует GPIO1 и GPIO3 обратно в TX/RX. Как только вы перезагрузитесь в обычный режим работы, GPIO1 и GPIO3 снова станут выводами GPIO.

Чтобы изменить GPIO1 и GPIO3 обратно на TX/RX для обычного последовательного монитора, добавьте это в свой код в начале set void setup():

//********** ИЗМЕНИТЬ ФУНКЦИЮ PIN НА TX/RX **********
//GPIO 1 (TX) замените pin на TX.
pinMode(1, FUNCTION_0); 
//GPIO 3 (RX) замените pin на RX.
pinMode(3, FUNCTION_0); 
//***************************************************

Если я правильно понимаю ESP-01, контакты НЕ МОГУТ быть одновременно выводами TX/RX и GPIO одновременно.

,

Для получения дополнительной информации о функциях контакта см. https://www.esp8266.com/wiki/doku.php?id=esp8266_gpio_pin_allocations, @kleptog

И не забудьте "pinMode(1/3, OUTPUT/INPUT)", @LaborEtArs


1

Одна вещь, которую я заметил, заключается в том, что если вы пытаетесь использовать контакты Tx/Rx для основной последовательной связи (1 и 3) в качестве GPIO, то вы не должны использовать какие-либо последовательные команды в своем коде, такие как Serial.begin.

У меня были мои цифровые считывания GPIO, которые случайным образом считывались высоко (у них был свой режим, установленный как INPUT_PULLUP), в то время как у меня был источник, вытягивающий их низко (я проверил, что вход действительно был вытянут низко, в то время как ESP8266 digitalRead считывал высоко)

Удаление всех последовательных команд (begin, print и println) исправило это для меня.

,

3

Для работы TX RX как GPIO Serial.begin() должен быть удален из кода.

,

Достаточно просто удалить Serial.begin (), сработало как заклинание. Спасибо!, @Hemant Yadav