Как сделать выводы 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), но без пайки проволоки.
@vzxc, 👍10
5 ответов
Tx = GPIO 1
Rx = GPIO 3
Должно работать, но будьте осторожны, потому что, если они сгорят, вы больше не сможете программировать или даже разговаривать с ESP.
Может быть, немного поздно, но это может помочь кому-то другому.
Контакты 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
Добавьте это в свой код в начале настройки 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
Одна вещь, которую я заметил, заключается в том, что если вы пытаетесь использовать контакты Tx/Rx для основной последовательной связи (1 и 3) в качестве GPIO, то вы не должны использовать какие-либо последовательные команды в своем коде, такие как Serial.begin.
У меня были мои цифровые считывания GPIO, которые случайным образом считывались высоко (у них был свой режим, установленный как INPUT_PULLUP), в то время как у меня был источник, вытягивающий их низко (я проверил, что вход действительно был вытянут низко, в то время как ESP8266 digitalRead считывал высоко)
Удаление всех последовательных команд (begin, print и println) исправило это для меня.
Для работы TX RX как GPIO Serial.begin() должен быть удален из кода.
Достаточно просто удалить Serial.begin (), сработало как заклинание. Спасибо!, @Hemant Yadav
- Проблема запуска нескольких прерываний на nodemcu 1.0 на одном импульсе восходящего фронта
- Где arduino IDE хранит последний выбор платы?
- Как работает процесс сборки в Arduino IDE для ESP8266
- Как читать и записывать EEPROM в ESP8266
- Как навсегда изменить скорость передачи данных ESP8266 (12e)?
- Как заставить 5-вольтовое реле работать с NodeMCU
- Как исправить: Invalid conversion from 'const char*' to 'char*' [-fpermissive]
- ESP8266 не подключается к Wi-Fi
Я не уверен, что понял ваш ответ - поэтому с вашим кодом arduino в вашем ответе он поменяет контакты tx , rx на другие, к которым невозможно получить доступ (кроме как без паяльной проволоки), чтобы ранее недоступные контакты, которые вы называете gpio 3 и gpio 1, можно было использовать как gpio 0 и gpio 2 в качестве входных или выходных контактов, @vzxc
Я имею в виду, что если вы хотите использовать вывод Tx в качестве ВЫВОДА / ВХОДА, объявите его и считайте его GPIO 1. То же самое относится и к контакту Rx., @Dat Ha
Значит, это будет работать так же, как видео, на которое я ссылался в вопросе?-кроме как без пайки, конечно. и это означало бы, что последовательные контакты tx и rx не могут использоваться для последовательной связи-и это нормально, @vzxc
верно, просто не забывайте быть ОСТОРОЖНЫМ, чтобы не закоротить эти 2 контакта, @Dat Ha