毕业设计 树莓派视觉远程监控遥控小车设计与实现 - 嵌入式 物联网
文章目錄
- 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 数据挖掘_挖掘新的垂直鼠