171212 开发板-Arduino连接蓝牙调试

来源:互联网 发布:好用的护手霜 知乎 编辑:程序博客网 时间:2024/04/29 23:23

1625-5 王子昂 总结《2017年12月12日》 【连续第438天总结】
A. Arduino调试及mataplotlib绘图
B.
今天终于赶出空去继续跟加勉做本创了
首先复现时又出现了跟去年一样的问题–蓝牙连不上,Arduino数据从串口读出来不对
想找去年的源码未果,于是又好好整理了一番

蓝牙确认为2.1版本,手机和电脑上大都为4.0或以上了,于是链接不成功。官方推荐的蓝牙连接器为2.1+4.0双模,因此可以正常使用。于是购置了同样2.1版本的蓝牙,搜索并连接成功。

然后发现数据读取出来的总是乱码。老司机加勉提出arduino只有一个串口,因此在向串口输出(PC端)和从串口读入(蓝牙)的时候可能会造成冲突。

于是使用软串口链接,这种方式将软件端口模拟为串口,来收发蓝牙的消息,从而避免了串口公用的矛盾

通过例程确认蓝牙波特率57600,硬串口打印的波特率则为9600
但是数据校验总是失败,说明读取数据的时候还是有问题

最后发现了另一个可用的例程,认为区别主要在于Serial.read()之前要进行Serial.aviable()来确认

读到可用数据后进行可视化处理
加勉的Qt炸了,于是我通过python来读取串口消息并可视化

用到pyserial和matplotlib两个库
参照例程进行了数据即时输出的处理,主要是plt.pause()方法

import serialimport matplotlib.pyplot as pltser = serial.Serial('COM4', 9600)i = 0x = range(10000)v = []t = 0obsX = 0obsY = 200plt.close()  # clf() # 清图  cla() # 清坐标轴 close() # 关窗口fig = plt.figure()ax = fig.add_subplot(1, 1, 1)ax.axis("equal")  # 设置图像显示的时候XY轴比例plt.grid(True)  # 添加网格plt.ion()  # interactive mode onprint('开始')try:    while(1):        value = ser.read()[0]        x = [t, obsX]        y = [value, obsY]        ax.plot(x, y, c='b')  # 折线图        plt.pause(0.001)        t += 1        obsX = t        obsY = valueexcept Exception as err:    print(err)

最后赶着去FIT大会,于是先行溜啦
对加勉表示抱歉/w\

C. 明日计划
FIT大会学习

原创粉丝点击