硬件:行空板,转串口模块(购买链接: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[0].split(':')
- humi_data = data[1].split(':')
- temp = float(temp_data[1]) if temp_data[0] == 'temp' else None
- humi = float(humi_data[1]) if humi_data[0] == 'humi' else None
- # 打印温度和湿度值
- print(f'温度值: {temp}, 湿度值: {humi}')
- #将温湿度的值更新到行空板屏幕上显示
- temp_txt.config(text="温度值"+str(temp))
- humi_txt.config(text="湿度值"+str(humi))
- time.sleep(1) # 等待1秒
-
-
-
-
复制代码
效果:

|
这个文档下面找pingpong库示例
能不能直接用行空板采集I2C加速度传感器值?