樹莓派智能小車。
基於HJduino。樹莓派3B
注意:
- 一定要接好線
- 看教程
- 主板上ENA、ENB接上跳線帽
步驟:(參考視頻教程)
- 安裝底盤
- 模塊安裝及接線
- 安裝樹莓派系統
- …
快速操作指令:
- 攝像頭
- 打開攝像頭軟件位置
cd mjpg-streamer/mjpg-streamer-experimental - 打開攝像頭指令,複製到LX終端
./mjpg_streamer -i “./input_raspicam.so” -o “./output_http.so -w ./www”
- 打開攝像頭軟件位置
- 指令說明
xxx.c是要編譯的c文件,xxx是編譯出來的執行文件,運行編譯出來的程序是sudo ./xxx - WIFI程序hjduino.c
- 編譯指令
gcc hjduino.c -o hjduino -lwiringPi -lpthread - 運行命令
sudo -/hjduino 2000
- 編譯指令
- 循跡程序xj.c
- 編譯指令
gcc xj.c -o xj -lwiringPi -lpthread - 運行命令
sudo ./xj
- 編譯指令
- 紅外避障程序bz.c
- 編譯指令
gcc bz.c -o bz -lwiringPi -lpthread - 運行命令
sudo ./bz
- 編譯指令
- 測距程序cj.c
- 編譯指令
gcc cj.c -o cj -lwiringPi - 運行命令
sudo ./cj
- 編譯指令
- 超聲避障pwm csb.c
- 編譯指令
gcc csb.c -o csb -lwiringPi -lpthread - 運行命令
sudo ./csb
- 編譯指令
- 停車 .c
- 編譯指令
gcc stop.c -o stop -lwiringPi -lpthread - 運行命令
sudo ./stop
- 編譯指令
第三節,PC控制軟件安裝
- HJduino
第三節,手機控制軟件
- 小車控制軟件->HJduino-STM32
- 通過安裝包安裝後設置,
- 修改IP地址爲192.168.12.1
- 控制端口爲2000
- 視頻地址爲:http://192.168.12.1:8080/?action=stream
第三節,樹莓派功能講解
- GPIO,40pin,兩種編碼方式:WiringPI物理引腳編碼,PCM寄存器編號編碼。
第四節,樹莓派底板功能講解(HJduino定製的)
- 18450電池
- TTL和藍牙模塊串口通信,因此一次只能接一種。但是派上都自帶了,所以不用管地板上的這倆。。
- 各傳感器模塊接到底板上,再從底板接到主板(派)上。
第五節,樹莓派主板模塊接線
- 5V,2.5A供電
第六節,樹莓派系統安裝。
準備工作:
- 準備SD卡,8GB以上(8G即可),最好是高速卡(class4以上,建議用10);
- 下載樹莓派鏡像文件;
- Windows下安裝鏡像的工具:Win32DiskImager。
安裝步驟:
- 解壓系統鏡像壓縮文件,得到img鏡像文件;
- 將SD卡連接到電腦(讀卡器或卡託),格式化SD卡,用PanasonicSDFormatter_ha軟件;
- 解壓並打開Win32DiskImager工具,選擇小車系統的鏡像文件,選擇SD卡的盤符,寫入;
- 把寫好的卡裝入樹莓派;
注意事項:
- Linux的分區在Windows下看不到,可以用分區軟件看。所以安裝完系統,內存卡顯示剩餘容量幾十M是正常的;
- Ext3屬於Linux的文件系統;
- swap區是Linux的虛擬內存區,在物理內存不夠用的時候做緩存用。
第七節,樹莓派IO口簡介
- wiringPi 是一個簡單易用的函數庫,通過它可以擴展SPI和I2C等芯片。
- GPIO相關寄存器。
- 該樹莓派用的CPU是博通的BCM2835,看數據手冊。
- 注意外設寄存器的物理地址和外設虛擬地址的映射關係。(0x7E00 0000 -> 0x2000 0000)tip:GPIO外設的偏移地址是0x0020 0000。
- 幾個寄存器:GPFSELx9(IO口方向或複用寄存器,控制方向爲輸入或輸出),GPSETx(IO口輸出寄存器,邏輯高電平),GPCLRx(IO口輸出寄存器,邏輯低電平),GPLEVx(IO口輸入寄存器,負責輸入狀態)。
- IO口分析:
- 查看對應樹莓派版本。
- 打開/dev/mem/設備,用來直接操作內存地址。
- 設定wiringPi GPIO外設的操作模式。
第八節,系統啓動。
- 樹莓派開機。開機後自動打開熱點。熱點名稱pi3,密碼12345678。
- 打開putty(配置ssh,首次需要配置)。樹莓派IP地址192.168.12.1,端口號22。用戶名pi,密碼raspberry(不顯示),輸入tightvncserver。
- 重啓樹莓派。再次連接到其熱點。
- 電腦上所有程序>附件>遠程桌面連接。連接到IP地址192.168.12.1。用戶名pi,密碼raspberry。即可進入樹莓派遠程桌面。
第九節,電機驅動原理
- L298N電機驅動芯片
第十節,PC控制軟件安裝。(安裝完還不能控制)
- 連接小車wifi熱點。
- 軟件在資料包:小車控制軟件>PC控制軟件>HJduino,以管理員身份運行。如果運行不了,需要下載NET(Microsoft .NET Framework)。
- 設置地址。視頻地址http://192.168.12.1:8080/?action=snapshot,控制地址192.168.12.1,端口號2000,圖片地址。
- 指令設置。前進、後退等(指令前後都用ff起穩定作用)。
- 保存後重啓軟件。
第十一節,手機控制軟件安裝。
- HJduino-STM32.apk
- 只有舊版Android系統可以啓動,但是控制不了小車?
第十二節,攝像頭啓動
- 打開攝像頭軟件位置
cd mjpg-streamer/mjpg-streamer-experimental
- 打開攝像頭指令,複製到LX終端
./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"
- 樹莓派中打開瀏覽器,輸入
192.168.12.1:8080
可進入一個網頁(mjpg),裏面有靜態和動態攝像頭畫面。
第十三節,小車操作指令
- 先運行
$ sudo ./hjduino 2000
,就可以控制了。2000是端口號
第十四節,PC、手機控制小車
- 和上一個差不多
第十五節,代碼上傳及編譯方法
- FileZilla軟件ftp上傳。
- 端口Port:22
- 新的程序上傳進樹莓派小車後,要編譯,才能運行。
- 編譯指令:
gcc xxxx.c -o xxxx -lwiringPi -lwiringPiDev
- 可以用xshell軟件,也可以不用哈。可以用vim編輯器。可以用記事本編輯。可以用gvim73軟件。可以用visual studio軟件。
第十六節,wifi視頻小車控制源碼講解
- 樹莓派的GPIO控制,常見的庫函數有:
- python GPIO,好入門上手,但它還沒有支持SPI、I2C、1-wire等總線接口;
- wiringPi,用的C語言。
- BCM2835 C Library,用的C語言開發的。
- GPIO編號方式:[此處有圖]
- 物理引腳,從左到右,從上到下,左邊奇數,右邊偶數,1-40;
- BCM,側重CPU寄存器,根據BCM2835寄存器編號;
- wpi,側重實現邏輯,把擴展GPIO端口從0開始編號。
第十七節,黑線循跡原理
- 常用循跡法:
- 紅外對管循跡法
- 攝像頭循跡法,分爲模擬和數字
- 激光管道循跡法,適用於遠距離
- 本小車採用的紅外傳感器:白色是發射管,黑色是接收管。
!(紅外循跡傳感器)[] - 注意調節傳感器靈敏度時電池供電要穩定啊!
第十八節,循跡實驗
傳感器連接:
- 接口,選擇wpi編碼下(編程時用該編碼方式)的26(右)、27(左),對應物理接口(接線時用)32(右)、36(左)
- 兩個傳感器相距2.5-3cm,調好後擰緊螺絲嗷
- 接線:+、-接到底板上,信號線直接接到樹莓派的pin上。
- 調節靈敏度:主要調得白亮黑滅,向上擡起2-3cm滅。
編譯:
$ gcc xj.c -o xj -lwiringPi -lpthread
- gcc前面需要空格嗎?如果要,爲什麼?
運行:
$ sudo ./xj
第十九節,紅外避障原理
- 所用傳感器:HJ-IR2,不怕光。
- !(紅外避障傳感器)[]
第二十節,紅外避障實驗
傳感器連接:
- 接口,選擇wpi編碼下(編程時用該編碼方式)的10(右)、11(左),對應物理接口(接線時用)24(右)、26(左)
- 把線收拾好看嗷
- 注意接收頭低頭的話可能會干擾嗷
- 出廠時距離一般是10cm左右
代碼:
- 主函數中包含的哪些include頭文件在哪裏定義的?
- 倆INT控制一個電機,低高,前進;高低,後退。
第二十一節,超聲波原理
- 所用傳感器:HC-SR04
- 沒有溫度修正功能
- 工作電壓5V,靜態工作電流<2mA,感應角度<15°,探測距離2-400cm,精度0.3cm,盲區2cm。
- 接口:Vcc、Trig、Echo、Gnd
- 原理:
- IO觸發測距,至少給10us高電平信號;
- 模塊自動發送8個40kHz方波,自動檢測是否有信號返回;
- 有信號返回,輸出高電平;
- 由高電平持續時間即可得到距離:
!(超聲波測距原理)[]
第二十二節,超聲波實驗
- 設置的接口:在wpi編碼下是Trig 28,Echo 29,對應物理引腳38,40。
- 實驗過程中拍照、截圖、錄視頻記錄嗷。
關於QT:
- Qt是一個1991年由Qt Company開發的跨平臺C++圖形用戶界面應用程序開發框架。它既可以開發GUI程序,也可用於開發非GUI程序,比如控制檯工具和服務器。Qt是面向對象的框架,使用特殊的代碼生成擴展(稱爲元對象編譯器(Meta Object Compiler, moc))以及一些宏,Qt很容易擴展,並且允許真正地組件編程。2008年,Qt Company科技被諾基亞公司收購,Qt也因此成爲諾基亞旗下的編程語言工具。2012年,Qt被Digia收購。2014年4月,跨平臺集成開發環境Qt Creator 3.1.0正式發佈,實現了對於iOS的完全支持,新增WinRT、Beautifier等插件,廢棄了無Python接口的GDB調試支持,集成了基於Clang的C/C++代碼模塊,並對Android支持做出了調整,至此實現了全面支持iOS、Android、WP,它提供給應用程序開發者建立藝術級的圖形用戶界面所需的所有功能。基本上,Qt 同 X Window 上的 Motif,Openwin,GTK 等圖形界 面庫和 Windows 平臺上的 MFC,OWL,VCL,ATL 是同類型的東西。