Подключение NodeMCU для Serial1
Я пытаюсь получить данные телеметрии для отправки Serial1 на плате NodeMCU. Я читал, что TX (по умолчанию) сопоставлен с выводом D4.
В конечном счете, появится Raspberry, который будет прослушивать эти сообщения, но у меня его пока нет. Поэтому, чтобы быстро проверить это, я подключил осциллограф с последовательным декодированием к D4, а GND зонда - к GND на NodeMCU. Проблема в том, что я не получаю никаких указаний на активность из D4, когда я запускаю следующий код:
Serial1.begin(9600);
Serial1.printf("some text");
Правильно ли я подключаю датчик? Я пропустил еще одну последовательную команду в скетче?
Когда я перехожу к RPi, должен ли я объединить обе платы вместе, а затем записать TX (D4) в RX на RPi?
@cardinalPilot, 👍5
Обсуждение2 ответа
Лучший ответ:
Вы можете выполнить Serial.swap() в setup(), чтобы заменить Serial на вывод RX / TX. Затем Serial отображается на D7 как RX, а D8 - как TX (и вы можете подключить туда какой-нибудь последовательный модуль).
Мост с перемычкой провода D4 pin с выводом TX. вывод Serial1 будет передан через USB-чип на последовательный монитор, и вы увидите отпечатки на Serial1.
Это не приведет к нарушению режима мигания, поскольку загрузчик по-прежнему будет прослушивать стандартные последовательные контакты.
Этот код работал у меня как ведомый Modbus
Требуется эта библиотека <ModbusRtu.h>
#include <ModbusRtu.h>
unsigned long TIME = 0;
unsigned long LASTTIME = 0;
unsigned long INTERVAL = 5000;
int i = 0;
// массив данных для общего доступа к сети Modbus
uint16_t au16data[16] = {
3, 1415, 9265, 4, 2, 7182, 28182, 8, 0, 0, 0, 0, 0, 0, 1, 11 };
/**
* Modbus object declaration
* u8id : node id = 0 for master, = 1..247 for slave
* port : serial port
* u8txenpin : 0 for RS-232 and USB-FTDI
* or any pin number > 1 for RS-485
*/
Modbus slave(1,Serial,0); // это slave @1 и RS-232 или USB-FTDI
void setup() {
Serial.swap();
Serial.begin( 19200 ); // скорость передачи 19200
Serial1.begin( 19200 );
slave.start();
}
void loop() {
if ((millis() - TIME) > INTERVAL) {
i++;
if(i == 16){
i = 0;
for (int ii = 0; ii < 16; ii++)
{
au16data[ii] = 0;
}
}
au16data[i] = 1;
TIME = millis();
}
slave.poll( au16data, 16 );
}
Я не уверен, как это отвечает на вопрос., @StarCat
Поскольку вышеупомянутый тип проводки я сделал, но не могу найти правильную библиотеку кода, после некоторых исследований я нашел подходящую библиотеку. Поэтому я делюсь этой платформой, чтобы помочь другим. Спасибо!, @KATHEESKUMAR
- NodeMCU второй HARDWARE последовательный TX в качестве порта отладки
- Отправка данных из Arduino Mega в nodeMCU с использованием последовательного порта (данные нескольких датчиков) и загрузка в firebase
- Отправка данных из одного узла NodeMCU в другой узел NodeMCU с использованием последовательной связи
- Не удалось загрузить код в NodeMCU
- Последовательный порт Ubuntu Кратко отображается на arduino IDE
- Arduino Pro micro Serial communication проблема с узлом MCU
- Последовательный ввод NodeMCU V3 приводит к фатальному исключению 9 (LoadStoreAlignmentCause)
- Почему echo "R"> /dev/ttyUSB0 не работает, но на том же ПК работает последовательный монитор в Arduino IDE?
https://community.blynk.cc/t/how-to-use-2-serial-ports-or-more-in-nodemcu/20282/2 . один из ответов настаивает на том, что NodeMCU не должен быть подключен к компьютеру, чтобы иметь возможность использовать serial1, @Tirdad Sadri Nejad