我从亚马逊购买了通用 8 针 ESP8266。它加载了一些“AT”命令固件,其作用类似于调制解调器。我将该模块连接到 FTDI1232,这是一个 USB 连接的 UART,其作用类似于串行端口。
USB ID 如下:
Bus 002 Device 010: ID 0403:6001 Future Technology Devices International, Ltd FT232 Serial (UART) IC
它看起来就像/dev/ttyUSB0
在我的系统中一样。我在我的Ubuntu 14.04机器上安装了CuteCom,选择了115200的速度,无奇偶校验,8位字符和1个停止位。我能够使用 CuteCom 正常通信以发送和接收数据。
不过,我对这个默认固件并没有太多用处。我下载了最新版本的 Arduino IDE,然后通过额外的核心包添加了 ESP8266 支持。
为了对该设备进行编程,我根据此图连接了 ESP8266。
这基本上是我已有的电路,但我必须添加 RTS 和 DTR 线路来完成这个。
我创建了一个非常简单的草图,如下所示
void setup(){
Serial.begin(115200); // 8 bit char, no parity, 1 stop bit
while(!Serial){};
}
void loop(){
int v = Serial.read();
if(-1 != v){
Serial.write((uint8_t)v);
}else{
delay(10)
}
}
这是一个基本的“回声”类型草图,应该写回写入设备的所有内容。
上传草图后,我可以使用“工具”->“串行监视器”与草图进行交互。我又创建了几个,其中一个可以转换发送的数据,然后将其回显。他们都工作。
此时 CuteCom 根本不起作用。经过一番查找原因,我最终查看了java代码中串行监视器的实现。我发现的是这一行
!BaseNoGui.getBoardPreferences().getBoolean("serial.disableRTS"),
!BaseNoGui.getBoardPreferences().getBoolean("serial.disableDTR"));
看起来基本上每个“板”(此处让 SDK 与 ESP8266 对话的代码的术语)定义了是否应启用 RTS 和 DTR。然后,代码调用 jccs 库来启用或禁用 RTS 和 CTS。
此时,我断开了 ESP8266 上连接到 RTS 和 CTS 的线路。我能够再次使用 CuteCom 与我上传的新草图进行对话。但是,我不想每次从 Arduino IDE 编程时都必须断开并重新连接线路。
显然,无需断开设备连接就可以与设备对话,因为 Arduino IDE 中的“串行监视器”工作得很好。
如何在 Ubuntu 14.04 中获得一个串行终端模拟器,让我忽略 RTS 和 DTR?我还接受将端口置于此模式的命令,以便它可以与socat
或类似的一起使用。
这可能无关紧要,但这是实际设备的照片
答案1
picocom -b 115200 --lower-rts --lower-dtr /dev/ttyUSB0
我的 ESP-C3-32S-Kit 遇到这个问题,打开设备创建重置,但我们可以在正常启动模式下使用串行。