2748浏览
查看: 2748|回复: 6

[教程] 行空板 usb 串口通讯 pyserial

[复制链接]
本帖最后由 Forgotten 于 2023-7-10 17:35 编辑

硬件:行空板,转串口模块(购买链接:https://www.dfrobot.com.cn/goods-242.html),杜邦线若干,一个可以串口通讯的设备(此处用uno),i2C加速度传感器
转串口模块rx接uno的tx,tx接rx,gnd接gnd.
行空板 usb 串口通讯  pyserial图1

基础知识和操作步骤:


行空板教程:https://wiki.unihiker.com/
uno教程:https://wiki.dfrobot.com.cn/_SKU_DFR0216_DFRduino_UNO_R3
pyserial教程:https://blog.csdn.net/xuzhexing/article/details/91043579


代码:
1.uno代码(ArduinoC)
在附件,可下载


2.行空板代码(python)
行空板 usb 串口通讯  pyserial图2






案例2:arduino读取温湿度通过串口发送到行空板

如果arduino上设备供电需求不搞,对接线空间要求不高,也可以直接将arduino的USB线插到行空板的USBA口。

这里演示在arduino上插一个dht11温湿度串口,然后arduino读取dht11的温湿度数据,发送到串口,然后行空板使用pyserial接收。

Arduino板中的代码:

  1. /*!
  2. * MindPlus
  3. * uno
  4. *
  5. */
  6. #include <DFRobot_DHT.h>
  7. DFRobot_DHT dht11_5;
  8. // 主程序开始
  9. void setup() {
  10.         Serial.begin(9600);//串口波特率9600
  11.         dht11_5.begin(5, DHT11);
  12. }
  13. void loop() {
  14.     //串口打印数据
  15.     //为方便另外一边接收,将温度和湿度数据转换成了字符串,然后增加前缀和逗号分隔
  16.         Serial.println("temp:"+String(dht11_5.getTemperature())+","+"humi:"+String(dht11_5.getHumidity()));
  17.     //隔一段时间自动发送一次
  18.     delay(1000);
  19. }
复制代码


arduino上传完程序之后,打开串口监视器可以看到数据正常输出。

行空板 usb 串口通讯  pyserial图4

uno连接行空板可以使用如下两种方式,如果需要连接比较多传感器,则uno应该独立供电。两种方式的串口号可能不同,可以使用终端输入ls /dev/tty*查看所有设备,然后插上和拔下串口设备判断串口名

行空板 usb 串口通讯  pyserial图5

然后行空板运行如下代码:


  1. import serial
  2. import time
  3. from unihiker import GUI
  4. #第一个参数是串口号,行空板上的串口以/dev/ttyxxx开头,可以在终端输入ls /dev/tty*查看所有设备,然后插上和拔下串口设备判断串口名
  5. #第二个参数是波特率,要跟arduino那边相同
  6. ser=serial.Serial("/dev/ttyACM0",9600)
  7. #在行空板屏幕上显示两行字
  8. u_gui=GUI()
  9. temp_txt=u_gui.draw_text(text="温度",x=0,y=0,font_size=20, color="#0000FF")
  10. humi_txt=u_gui.draw_text(text="湿度",x=0,y=30,font_size=20, color="#0000FF")
  11. while True:
  12.     if ser.in_waiting > 0:
  13.         line = ser.readline().decode('utf-8').rstrip()  # 读取一行,解码为UTF-8格式,然后删除行尾的换行符
  14.         # 解析接收到的数据
  15.         data = line.split(',')
  16.         temp_data = data[0].split(':')
  17.         humi_data = data[1].split(':')
  18.         temp = float(temp_data[1]) if temp_data[0] == 'temp' else None
  19.         humi = float(humi_data[1]) if humi_data[0] == 'humi' else None
  20.         # 打印温度和湿度值
  21.         print(f'温度值: {temp}, 湿度值: {humi}')
  22.         #将温湿度的值更新到行空板屏幕上显示
  23.         temp_txt.config(text="温度值"+str(temp))
  24.         humi_txt.config(text="湿度值"+str(humi))
  25.         time.sleep(1)  # 等待1秒
  26.         
复制代码


效果:

行空板 usb 串口通讯  pyserial图3


33.ino

2.56 KB, 下载次数: 73

glwz007  初级技匠

发表于 2022-12-5 22:07:54

请问这个例子是利用arduino采集加速度传感器值,然后通过串口发送到行空板吗?
能不能直接用行空板采集I2C加速度传感器值?
回复

使用道具 举报

DFSyBM3-i4u  中级技师
 楼主|

发表于 2022-12-9 17:58:10

是利用arduino采集加速度传感器值,然后通过串口发送到行空板
回复

使用道具 举报

DFSyBM3-i4u  中级技师
 楼主|

发表于 2022-12-9 17:59:30

可以直接用行空板采集I2C加速度传感器值,C:\Users\Ziyu.Yang\Documents\mindplus-py\environment\Lib\1.7.2-202206161900\site-packages
这个文档下面找pingpong库示例
回复

使用道具 举报

QaQ  见习技师

发表于 2023-1-20 10:55:24

这个实例就是把arduino uno当成一个扩展版来使用
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-1-30 08:41:24

厉害厉害
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-1-30 08:43:44

赞赞赞赞赞!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail