у меня есть Nucleo F103RB и Sparkfun ESP8266.
Я хотел посылать AT-команды на ESP8266 через Nucleo.
Проводка, которую я использовал:
TX => D8
RX => D2
GND => GND
3V3 => 3V3
я использовал D8
а также D2
Serial1 потому что D0
а также D1
контакты по умолчанию недоступны, так как они используются виртуальным коммуникационным портом STLink. Я тоже пробовал D10
вместо D8
а также положить RST
на 3V3
и инвертирование TX
а также RX
Вот код, который я имею на mbed:
#include "mbed.h"
Serial pc (D1, D0);
Serial esp(D8, D2);
int main()
{
pc.baud(115200);
esp.baud(115200);
wait(0.1);
pc.printf("start\r\n");
esp.printf("AT+RST\r\n");
while(true) {
if(pc.readable()) {
char c = pc.getc();
pc.putc(c); //local echo
esp.putc(c);
}
if(esp.readable()) {
pc.printf("reading esp");
char c = esp.getc();
pc.putc(c);
}
}
}
я использовал Serial
вместо RawSerial
так как RawSerial
не работал для меня вообще, я не уверен, почему.
Модуль ESP8266 не отвечает на любая команда AT доступна для заводской прошивки. esp.readable()
возвращает false независимо от того, что и esp.printf("AT+RST\r\n");
ничего не делает
Плата новая и светодиоды работают нормально.
Проводной модуль ESP как это — так что CH_PD тоже высоко. После вы можете использовать SerialPassthrough чтобы проверить, работает ли модуль (установите скорость передачи в 115 200 на обоих).
При желании также подключите вывод RESET модуля к цифровому выводу. Полезно для сброса модуля ESP (потяните низко, затем потяните высоко для сброса).
Отвечая на мой собственный вопрос …
В отличие от того, что вы можете найти в Интернете в нескольких документах, в том числе в mbed, использование сквозных символов не будет работать, поскольку модуль будет интерпретировать каждый символ один за другим. С помощью puts
вместо putc
решил мою проблему.