行空板 usb 串口通讯 pyserial

2022-11-038450
AI 快速预览详细 收起
本文介绍了如何使用行空板和Arduino通过USB串口通讯,实现温湿度数据的实时显示。首先,将Arduino的DHT11温湿度传感器读取的数据通过串口发送到行空板。然后,行空板使用pyserial库接收并解析这些数据,并在屏幕上动态显示温度和湿度值。整个过程包括硬件连接、代码编写和调试步骤,适合电子制作爱好者和STEM教育场景。


硬件:行空板,转串口模块(购买链接: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, 下载次数: 4291

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(6)
花生编程
花生编程
赞赞赞赞赞!
花生编程
花生编程
厉害厉害
DFH15tZJVo8
DFH15tZJVo8
这个实例就是把arduino uno当成一个扩展版来使用
DFSyBM3-i4u
DFSyBM3-i4u
作者
可以直接用行空板采集I2C加速度传感器值,C:\Users\Ziyu.Yang\Documents\mindplus-py\environment\Lib\1.7.2-202206161900\site-packages
这个文档下面找pingpong库示例
DFSyBM3-i4u
DFSyBM3-i4u
作者
是利用arduino采集加速度传感器值,然后通过串口发送到行空板
glwz007
glwz007
请问这个例子是利用arduino采集加速度传感器值,然后通过串口发送到行空板吗?
能不能直接用行空板采集I2C加速度传感器值?
- 没有更多了 -