快捷搜索: 王者荣耀 脱发

jetsonnano和stm32的串口通信

(此处为废话)最近一直在学python,还有吴老师的课程,一直都没有弄,怕nano落灰,于是乎今天下午搞了一下与stm32串口通信,因为博主还是对32比较熟悉,而且我觉得如果做一个东西的话(比如一个小车)还是用32控制比较方便,视觉处理交给nano(不管是cv也好或者神经网络,肯定吊打32)。

正题来了,首先是nano,博主是用py写的, 先在nano上查看启用的串口 ls -l /dev/ttyTHS* 这样的话正常应该会看到 然后我选择THS1,对应nano上面的物理引脚8 10。引脚图这里就不放了,网上很多。 然后以下是博主自己的调试程序

import serial as ser
import struct,time
a =z
c=a.encode(utf-8)
b=678
se = ser.Serial(/dev/ttyTHS1,115200,timeout=0.5)
def recv(serial):
    while True:
        data=serial.read(64)
        if data==:
            continue
        else:
            break
    return data
while True:
#    data=recv(se)
#    if data!=:
#        print(data)   这里是调试的串口接收,接受函数看自己需要定,这里只是方便博主调试
    se.write(str(b).encode(utf-8))
    se.write(a.encode(utf-8))
    time.sleep(1)

值得注意的是,如果想要发送字符串,也需要将字符串encode(‘utf-8’),如果是整形或者float可以像我上面那样,先变成字符串然后再encode

接收端就是正常的u8类型的了~~可以看到上面我发的是678 然后在线调试看到的也是保存起来的678哦~如果想要处理成别的类型,对照一下ascii,应该是直接-48就行了。记录完毕! 今天刚发现一个问题,如果串口打开失败的话,用这个命令给权限sudo chmod 777 /dev/ttyTHS0

2021.8.8更 调试无人机发现用python接收串口数据会有很大延迟,原因是在程序开始的时候就打开了串口并且持续收到了数据,在进入while循环前已经把消息队列占满。 解决方法:如果使用python进行串口收发,要记得在程序执行while True前一句话再开启串口,不然python会把收到的消息都放到消息队列,造成数据迟缓。

经验分享 程序员 微信小程序 职场和发展