DFSyBM3-i4u 发表于 2022-11-3 11:13:34

行空板 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.


基础知识和操作步骤:


行空板教程: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)







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

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

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

Arduino板中的代码:

/*!
* MindPlus
* uno
*
*/
#include <DFRobot_DHT.h>

DFRobot_DHT dht11_5;


// 主程序开始
void setup() {
      Serial.begin(9600);//串口波特率9600
      dht11_5.begin(5, DHT11);
}
void loop() {
    //串口打印数据
    //为方便另外一边接收,将温度和湿度数据转换成了字符串,然后增加前缀和逗号分隔
      Serial.println("temp:"+String(dht11_5.getTemperature())+","+"humi:"+String(dht11_5.getHumidity()));
    //隔一段时间自动发送一次
    delay(1000);
}


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



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



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


import serial
import time
from unihiker import GUI

#第一个参数是串口号,行空板上的串口以/dev/ttyxxx开头,可以在终端输入ls /dev/tty*查看所有设备,然后插上和拔下串口设备判断串口名
#第二个参数是波特率,要跟arduino那边相同
ser=serial.Serial("/dev/ttyACM0",9600)

#在行空板屏幕上显示两行字
u_gui=GUI()
temp_txt=u_gui.draw_text(text="温度",x=0,y=0,font_size=20, color="#0000FF")
humi_txt=u_gui.draw_text(text="湿度",x=0,y=30,font_size=20, color="#0000FF")

while True:
    if ser.in_waiting > 0:
      line = ser.readline().decode('utf-8').rstrip()# 读取一行,解码为UTF-8格式,然后删除行尾的换行符
      # 解析接收到的数据
      data = line.split(',')
      temp_data = data.split(':')
      humi_data = data.split(':')
      temp = float(temp_data) if temp_data == 'temp' else None
      humi = float(humi_data) if humi_data == 'humi' else None
      # 打印温度和湿度值
      print(f'温度值: {temp}, 湿度值: {humi}')
      #将温湿度的值更新到行空板屏幕上显示
      temp_txt.config(text="温度值"+str(temp))
      humi_txt.config(text="湿度值"+str(humi))
      time.sleep(1)# 等待1秒



      

效果:




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

赞赞赞赞赞!
页: [1]
查看完整版本: 行空板 usb 串口通讯 pyserial