|
本帖最后由 dapeng97 于 2022-8-17 11:35 编辑
2022年8月17日更新:
之前的程序没有问题,经过测试,激光测距模块上的rx跟tx标反了。
同时我外接的分压线路电阻过大,导致模块rx、tx引脚的电流过小检测失败。
目前直接去掉分压电路,并正确连接rx、tx后,接收到模块返回的信号了。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
各位大大好,
目前手里一块Arduino UNO和一个激光测距模块,模块通过串口接收形如“FA 06 04 FC”的16进制命令来工作。
目前通过使用USB-TTL的串口模块连接激光测距模块,然后在串口工具上输入命令,是可以正常通信和工作的,如图所示。图1是该模块,供电使用的3.3v。图2是该模块的一部分通信协议。图3是使用串口工具通信的情况,可以看到发出了“FA 04 01 80 81”的指令后,正常收到了模块返回的“FA 04 81 81”的操作成功回复。
图1 图2 图3 然后我就使用Arduino的软串口跟模块进行通信,并将模块的返回值通过串口监视器输出到屏幕上。测试程序代码如下:
- #include <SoftwareSerial.h>
- SoftwareSerial mySerial(2, 3); // 设置软串口2-RX 3-TX
- unsigned char ADD[5] = {0xFA, 0x04, 0x01, 0x80, 0x81};
- byte data[5] = {0};
- void setup()
- {
- Serial.begin(9600);
- mySerial.begin(9600);
- mySerial.listen();
- }
- void loop()
- {
- mySerial.write(ADD, 5);
- delay(100);
- if(mySerial.available()>0)
- {
- mySerial.readBytes(data,5);
- for(int i=0;i<5;i++)
- {
- Serial.print(data[i]);
- }
- }
- delay(1000);
- }
复制代码
代码正常上传至Arduino中,但是串口监视器中却没有任何显示,如图4。
图4 然后我写了个简单的测试查看Arduino是否正常输出指令,用串口工具监视Serial.write(ADD, 5)传输出来的数据,可以从串口工具中看到命令确实正常输出,也是模块需要的格式。如图5。
图5
所以目前就很疑惑,到底哪里出了问题导致工作错误。
|
|