毕业设计 树莓派视觉远程监控遥控小车设计与实现 - 嵌入式 物联网
文章目录
- 0 前言
- 1 简介
- 2 实现效果
- 3 树莓派视觉环境搭建
- 3.1 树莓派安装系统
- 3.2 设置静态网络
- 3.3 更换镜像源
- 3.4 安装中文输入法
- 3.5 电脑控制树莓派
- 3.6 OpenCV3.4.1安装
- 7.设置通用(UART)串口的方法
- 4 部分核心代码
- 5 最后
0 前言
🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是
🚩 树莓派视觉远程监控遥控小车设计与实现
🥇学长这里给一个题目综合评分(每项满分5分)
- 难度系数:4分
- 工作量:4分
- 创新点:3分
🧿 选题指导, 项目分享:
https://gitee.com/dancheng-senior/project-sharing-1/blob/master/%E6%AF%95%E8%AE%BE%E6%8C%87%E5%AF%BC/README.md
1 简介
基于树莓派的视觉小车,完成视觉识别和驱动代码
2 实现效果
3 树莓派视觉环境搭建
主要有以下步骤
- 树莓派安装系统
- 设置静态网络
- 更换镜像源
- 安装中文输入法
- 电脑控制树莓派
- OpenCV3.4.1安装
- 设置通用(UART)串口
3.1 树莓派安装系统
- 下载你所要的树莓派系统
RASPBIAN——>RASPBIAN STRETCH WITH DESKTOP
- 下载格式化磁盘软件,将你的磁盘格式化
-
完成安装并进行U盘格式化操作
-
将你树莓派的内存卡插在电脑上,打开软件
-
下载etcher,将系统导入到你的内存卡中
https://etcher.io/
选择好你下载的系统压缩包,你的树莓派内存卡,点击Flash!
etcher提示成功后,就可以将内存卡取下插入树莓派
- 树莓派Raspbian系统默认密码为raspberry,ubuntu mate默认密码为ubuntu
3.2 设置静态网络
树莓派自带无线网卡,开机后按照提示链接WiFi热点输入密码上网。我们可以在终端查看网络连接情况:
ifconfig
默认情况下树莓派的IP是DHCP动态配置的,为了下文使用VNC登录方便,通常做法是将IP改为静态地址。
- 打开/etc/dhcpcd.conf
sudo vi /etc/dhcpcd.conf
- 在末尾添加以下内容
static ip_address是树莓派的IP地址
static routers是路由器地址
/24表示为子网掩码255.255.255.0
114.114.114.114是国内的较快速的DNS服务器
8.8.8.8 是谷歌的DNS服务器
- 重启
3.3 更换镜像源
- 使用管理员权限(经由sudo),编辑/etc/apt/sources.list文件。参考命令行为:
用#注释掉原文件内容,用以下内容取代:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main contrib non-free rpi
- 编辑/etc/apt/sources.list.d/raspi.list文件
用#注释掉原文件内容,用以下内容取代:
deb http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
deb-src http://mirror.tuna.tsinghua.edu.cn/raspberrypi/ stretch main ui
- 更新文件
3.4 安装中文输入法
- 安装中文字体
- 安装中文输入法
安装好拼音输入法后,可以直接命令行输入scim激活,下次启动是会自动启动的。快捷键是Ctrl+空格。或者直接点击屏幕右上角的输入法图标选择。
- 配置中文操作系统
进行系统设置。选择Internationalisation Options–>Change
Locale–>zh_CN.UTF-8–>OK,然后重启系统,设置为中文操作系统。
3.5 电脑控制树莓派
SSH只能使用命令行控制树莓派,而VNC可远程登录树莓派图形界面系统。VNC包括服务端(VNC server)和客户端(VNC viewer)。
安装VNC官方参考文档:https://www.realvnc.com/en/connect/docs/raspberry-pi.html#raspberry-pi-setup
- 在树莓派上安装VNC server
- 打开VNC service服务
找到 Interfacing Options > VNC and select Yes.
设置完成后,树莓派启动时,VNC service将自动启动。
- 获取树莓派IP地址
- 电脑端安装VNC Viewer
下载地址:https://www.realvnc.com/en/connect/download/viewer/
安装后打开VNC Viewer
File ——> New connection
红色部分输入树莓派的IP地址,点击OK添加。
选择连接之后输入树莓派的登录用户名密码,初始用户名 pi,密码为进入树莓派系统时设置的密码(如果没有设置,树莓派初始密码为
raspberry)。确认之后即可进入树莓派的远程桌面!
3.6 OpenCV3.4.1安装
- 软件更新
- 安装构建OpenCV的相关工具:
- 安装常用图像工具包
- 安装视频I/O包
- 安装gtk2.0
- 优化函数包
- 编译OpenCV源代码
找到你下载的源码文件夹并打开,tar.gz解压后文件夹名应该是opencv-3.4.1(版本号可能会变化),git方式下载的文件夹名应该是opencv。之后我们新建一个名为release的文件夹用来存放cmake编译时产生的临时文件:
// 打开源码文件夹,这里以我修改文章时最新的3.4.1为例 cd opencv-3.4.1 // 新建release文件夹 mkdir release // 进入release文件夹 cd release设置cmake编译参数,安装目录默认为/usr/local ,注意参数名、等号和参数值之间不能有空格,但每行末尾“\”之前有空格,参数值最后是两个英文的点:
/** CMAKE_BUILD_TYPE是编译方式 * CMAKE_INSTALL_PREFIX是安装目录 * OPENCV_EXTRA_MODULES_PATH是加载额外模块 * INSTALL_PYTHON_EXAMPLES是安装官方python例程 * BUILD_EXAMPLES是编译例程(这两个可以不加,不加编译稍微快一点点,想要C语言的例程的话,在最后一行前加参数INSTALL_C_EXAMPLES=ON \) **/sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \-D CMAKE_INSTALL_PREFIX=/usr/local \-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.1/modules \-D INSTALL_PYTHON_EXAMPLES=ON \-D BUILD_EXAMPLES=ON ..- 开始正式编译
- 查看安装版本
- 测试安装:
7.设置通用(UART)串口的方法
- 首先查看有没有相关文件
查看是否存在README 和 pi3-miniuart-bt-overlay.dtb 或者是 pi3-miniuart-bt.dtb
(后面的缺了(overlay)但是在README中的解释是相同的)。如果没有的话,自行百度下载。
- 查看并修改串口映射关系
这里已经配置好了,因此会有ttyAMA0和ttyS0两个串口映射,最开始只有一个。下一步对文件进行修改。
sudo nano /boot/config.txt
在该文件最后一行加入代码
dtoverlay=pi3-miniuart-bt
保存文件。
sudo nano /boot/cmdline.txt
注释掉原来的内容,将以下内容添加进去
dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait
保存文件。
- 禁用串口的控制台功能
最后,我们依次执行以下命令完成所有配置并重启:
sudo apt-get update
sudo apt-get upgrade
sudo reboot
4 部分核心代码
def Motor_Init():global L_Motor, R_MotorL_Motor= GPIO.PWM(l_motor,100)R_Motor = GPIO.PWM(r_motor,100)L_Motor.start(0)R_Motor.start(0)def Direction_Init():GPIO.setup(left_back,GPIO.OUT)GPIO.setup(left_front,GPIO.OUT)GPIO.setup(l_motor,GPIO.OUT)GPIO.setup(right_front,GPIO.OUT)GPIO.setup(right_back,GPIO.OUT)GPIO.setup(r_motor,GPIO.OUT)def Servo_Init():global pwm_servopwm_servo=Adafruit_PCA9685.PCA9685()def Init():GPIO.setwarnings(False) GPIO.setmode(GPIO.BCM)Direction_Init()Servo_Init()Motor_Init()运动控制函数
def Front(speed):L_Motor.ChangeDutyCycle(speed)GPIO.output(left_front,1) #left_frontGPIO.output(left_back,0) #left_backR_Motor.ChangeDutyCycle(speed)GPIO.output(right_front,1) #right_frontGPIO.output(right_back,0) #right_backdef Back(speed):L_Motor.ChangeDutyCycle(speed)GPIO.output(left_front,0) #left_frontGPIO.output(left_back,1) #left_backR_Motor.ChangeDutyCycle(speed)GPIO.output(right_front,0) #right_frontGPIO.output(right_back,1) #right_backdef Left(speed):L_Motor.ChangeDutyCycle(speed)GPIO.output(left_front,0) #left_frontGPIO.output(left_back,1) #left_backR_Motor.ChangeDutyCycle(speed)GPIO.output(right_front,1) #right_frontGPIO.output(right_back,0) #right_backdef Right(speed):L_Motor.ChangeDutyCycle(speed)GPIO.output(left_front,1) #left_frontGPIO.output(left_back,0) #left_backR_Motor.ChangeDutyCycle(speed)GPIO.output(right_front,0) #right_frontGPIO.output(right_back,1) #right_backdef Stop():L_Motor.ChangeDutyCycle(0)GPIO.output(left_front,0) #left_frontGPIO.output(left_back,0) #left_backR_Motor.ChangeDutyCycle(0)GPIO.output(right_front,0) #right_frontGPIO.output(right_back,0) #right_back5 最后
总结
以上是生活随笔为你收集整理的毕业设计 树莓派视觉远程监控遥控小车设计与实现 - 嵌入式 物联网的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: 宝宝点点滴滴
- 下一篇: a-btest 数据挖掘_挖掘新的垂直鼠