ESP8266不响应AT指令

时间:2018-06-20 13:11:46

标签: c++ esp8266 mbed nucleo

我有一个Nucleo F103RB和一个Sparkfun ESP8266

我想通过Nucleo向ESP8266发送AT指令。

我使用的接线:

TX  => D8
RX  => D2
GND => GND
3V3 => 3V3

我之所以使用Serial1的D8D2是因为D0D1引脚在默认情况下不可用,因为它们由STLink虚拟通信端口使用。我还尝试使用D10代替D8,并将RST放在3V3上,并将TXRX倒置

这是我在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模块不响应any AT command available to the factory firmware。无论esp.readable()返回false,esp.printf("AT+RST\r\n");均不执行任何操作。

该板是全新的,并且LED可以正常工作。

2 个答案:

答案 0 :(得分:0)

连接ESP模块like this-将CH_PD也设置为高电平。之后,您可以使用SerialPassthrough来验证模块是否正常工作(将两者的波特率都设置为115,200)。

还可以选择将模块的RESET引脚连接到数字引脚。有助于重置ESP模块(将其拉低,然后拉高以进行重置)。

答案 1 :(得分:0)

回答我自己的问题...

与您在mbed在内的一些文档中可能会在网上找到的相反,使用每字符直通字符将不起作用,因为该模块将逐个解释每个字符。使用puts代替putc解决了我的问题。