【DigiKey创意大赛】树莓派图传遥控小车作品提交
[复制链接]
作品名称:树莓派图传遥控小车
作者:lb8820265
一、作品简介
DIY的树莓派图传遥控小车,主要用到的模块包括:树莓派4B、PicoW、树莓派CSI接口摄像头、MPS MEZS91202A电源模块、TB6612NFG电机驱动。树莓派获取摄像头数据然后通过RTSP推流,电脑接收视频数据,手机上位机连接PicoW控制小车运动和摄像头云台运动。该小车可作为高级玩具和视频监控机器人。
二、系统框图(图文结合)
系统硬件连接框图如下图所示。
各模块之间通过洞洞板连接,洞洞板如下图所示。
硬件连接原理图如下图所示。
小车的硬件主要以树莓派4B和PicoW为中心。3S锂电池通过两个MPS电源模块分别给树莓派4B和PicoW供电,树莓派4B连接CSI树莓派摄像头,PicoW连接了包括包括舵机云台,编码器,电机驱动模块。电机驱动模块接受3S电池供电,MPS电源模块供电,和PicoW控制,然后连接直流电机。直流电机转速信息被编码器获取,然后反馈给PicoW,这样就可以进行稳定的速度控制,树莓派4B、PicoW、电脑、手机都连接在同一个无线路由器上。
小车软件主要包括三个部分,PicoW软件,手机上位机软件,树莓派4B软件。PicoW软件主要包括:UDP网络通信,PWM电机控制,PWM舵机控制,电机驱动模块控制,GMR编码器数据获取,手机通信协议制定,速度控制算法等。手机上位机软件是在Android系统上编写,主要包括:UDP网络通信,摇杆控件,通信协议制定。树莓派4B内部运行Ubuntu Mate 20.04操作系统,主要是功能是获取CSI接口的摄像头数据,然后通过RTSP协议将视频数据推流到无线路由器,然后电脑端通过VLC软件获取推流并展现出来。
四、各部分功能说明(图文结合)
(各部分实现的功能说明及讲解,以图文结合的展示)
对手机Android程序、PicoW程序和树莓派4B程序各功能进行详细说明。
3.1 PicoW UDP网络通信
UDP初始化程序如下图所示。
UDP通信程序回调如下图所示,在回调函数中接收手机端发送过来的数据进行解析,并将速度和距离数据发送回手机
3.2 PicoW PWM功能模块、电机与舵机控制
PWM使用电机和舵机两个地方,PWM初始化程序如下图所示。
舵机PWM控制程序如下图所示。
电机PWM控制程序如下图所示。
3.3 PicoW 编码器数据获取
编码器用来获取电机速度,编码器初始化代码如下。
数据获取代码如下。
3.4 PicoW 定时器
定时器用来定时的控制小车与舵机,控制闪烁LED灯,定时为50ms,定时器初始化代码如下。
定时器回调函数如下图所示。
3.5 PicoW控制LED
PicoW的LED灯是通过无线通信芯片来控制的,要控制LED先要初始化通信芯片,在前面已经介绍了,LED的控制不能在中断函数中进行,只能在main主函数中进行,在定时器中将标志位至1,在while中不断的查询,然后翻转LED灯,代码如下。
3.6 手机Android定时器与控制逻辑
由于手机端Android程序过于庞大,这里介绍其核心代码,在手机定时器中不断的发送控制数据,定时器函数与代码如下。
3.7 树莓派4B摄像头视频推流
获取摄像头数据并RTSP推流的核心代码如下图所示。
raspivid -o - -t 0 |cvlc -vvv stream:///dev/stdin --sout '#rtp{sdp=rtsp://:8090/}' :demux=h264
3.8 电脑端获取视频推流数据
电脑端主要通过VLC软件获取数据,在网络媒体中输入树莓派的IP地址,IP需要查询,不同用户不一样,让后再加上8090端口号,例如我的URL地址为:rtsp://192.168.31.159:8090/,然后点击播放即可。
四、作品源码
Android手机端源代码:https://download.eeworld.com.cn/detail/lb8820265/630787
PicoW端源代码:https://download.eeworld.com.cn/detail/lb8820265/630786
五、作品功能演示视频
演示视频链接:https://training.eeworld.com.cn/video/38973
六、项目总结
该项目主要使用了在DigiKey购买的PicoW和树莓派4B,项目复杂难度大,涉及到的需要编程的设备有4个,涉及到的硬件设备多达十余个。项目趣味性高,可以用于监控机器人,未来还可以进行自动行驶,可扩展性强。
七、其他
项目Android手机端部分界面照片如下。
小车多角度照如下。
全家福照片如下。
|