Home

Awesome

Pi TurtleCar

使用Android App遙控Raspberry Pi製作的車子,還可以接收從Webcam傳送的影像。

示範影片:

需求

硬體(MQTT版)

硬體(藍牙、燈光加強版)

軟體(MQTT版)

軟體(藍牙版)

開發環境

線路圖

L293D,直流馬達控制晶片

HC-05,藍牙模組

大燈、方向燈與後方煞車、倒車燈

安裝Webcam串流模組 - mjpg-streamer

  1. 為Raspberry Pi安裝與設定好RASPBIAN作業系統。並確認下列項目:

    • 可以連線到網際網路。
    • 使用ifconfig指令查詢Raspberry Pi的IP位址。
  2. 登入Raspberry Pi以後,執行下列的指令:

     sudo apt-get install subversion
     sudo apt-get install libjpeg8-dev
     sudo apt-get install imagemagick
     
    
  3. 執行下列的指令建立工作資料夾:

     cd ~
     mkdir webcamwork
     cd webcamwork
    
  4. 執行下載模組的指令:

     svn co https://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer
    
  5. 執行下列的指令製作模組:

     cd mjpg-streamer/mjpg-streamer
     make
     
    
  6. 連接Webcam到Raspberry Pi的USB,執行下列的指令檢查Webcam:

     lsusb
    

安裝MQTT broker - Mosquitto

  1. 為Raspberry Pi安裝與設定好RASPBIAN作業系統。並確認下列項目:

    • 可以連線到網際網路。
    • 使用ifconfig指令查詢Raspberry Pi的IP位址。
  2. 在工作電腦使用SSH連線到Raspberry Pi。

  3. 執行下列的指令安裝Mosquitto(MQTT Broker Server):

     sudo apt-get install mosquitto
    
  4. 執行下列的指令準備修改Raspberry Pi設定檔:

     sudo nano /etc/hosts
    
  5. 參考下列的內容修改Raspberry Pi的IP位址:

     [Raspberry Pi的IP位址]		RaspberryPi
    
  6. 依序按下「Ctrl+X」、「Enter」與「Y」,儲存檔案與結束nano。

  7. 執行下列的指令重新啟動Raspberry Pi:

     sudo reboot
    
  8. Raspberry Pi重新啟動以後,Mosquitto就會開始提供MQTT Broker服務。

應用程式專案與開發環境

在「apps」目錄下 MQTT 版的應用程式原始程式碼:

在「apps」目錄下 藍牙 版的應用程式原始程式碼:

建立Java遠端開發環境:

遠端開發環境安裝與設定請參考http://www.codedata.com.tw/java/java-embedded-5-dev-env-remote-javase/

建立Android開發環境:

Android開發環境安裝與設定請參考http://www.codedata.com.tw/mobile/android-tutorial-the-1st-class-2-android-sdk/

準備上場

MQTT版

  1. 登入Raspberry Pi以後,執行下列的指令啟動「mjpg-streamer」:

     cd ~/webcamwork/mjpg-streamer
     ./mjpg_streamer -i "./input_uvc.so -y  -r QVGA -f 15" -o "./output_http.so -w ./www"
    
  2. 在個人電腦開啟瀏覽器,輸入下列的網址測試「mjpg-streamer」:

     http://Raspberry Pi的IP位址:8080
    
  3. 啟動Raspberry Pi的「TurtleCarPi」應用程式:

     cd 應用程式的位置
     sudo java -jar TurtleCarPi.jar
    
  4. 啟動Android App TurtleCarMobilePi ,選擇右上角的連線圖示:

  5. 在「MQTT broker IP」與「Webcam IP」輸入Raspberry Pi的IP位址,選擇連線按鈕:

  6. 連線成功後,上方顯示Webcam的即時畫面,下方可以控制車子前進、後退、左轉與右轉:

藍牙版

在Raspberry Pi連接HC-05藍牙模組,必須執行下列的設定:

  1. 登入Raspberry Pi以後,執行下列的指令,備份原始的設定檔:

     sudo cp /boot/cmdline.txt /boot/cmdline_backup.txt
    
  2. 執行下列的指令,準備修改設定檔:

     sudo nano /boot/cmdline.txt
    
  3. 把檔案修改為下面的內容後存檔:

     dwc_otg.lpm_enable=0 rpitestmode=1 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 rootwait
    
  4. 執行下列的指令,準備修改設定檔:

     sudo nano /etc/inittab
    
  5. 找到下面的內容,再這一行的最前面加入「#」:

     #T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100
    
  6. 執行下面關機的指令:

     sudo poweroff
    
  7. 依照上面的線路圖為Raspberry Pi連接HC-05藍牙模組。

啟動與使用應用程式:

  1. 登入Raspberry Pi以後,執行下列的指令啟動「mjpg-streamer」:

     cd ~/webcamwork/mjpg-streamer
     ./mjpg_streamer -i "./input_uvc.so -y  -r QVGA -f 15" -o "./output_http.so -w ./www"
    
  2. 在個人電腦開啟瀏覽器,輸入下列的網址測試「mjpg-streamer」:

     http://Raspberry Pi的IP位址:8080
    
  3. 啟動Raspberry Pi的「TurtleCarPiBlue」應用程式:

     cd 應用程式的位置
     sudo java -jar TurtleCarPiBlue.jar
    
  4. 啟動Android App TurtleCarMobilePiBT ,選擇右上角的藍牙連線圖示:

  5. 選擇「Scan」掃描Raspberry Pi的HC-05藍牙模組,配對以後選擇連線:

  6. 連線成功後,上方顯示Webcam的即時畫面,下方左側可以控制車子前進、後退、左轉與右轉,下方右側可以開啟與關閉大燈:

後記:

同時在這個專案提供MQTT與藍牙兩個版本,讓大家可以學習更多不同的應用。車子的部份,市面上很容易找到整組的套件。我用一個塑膠盒的底部當底盤,把零件固定在上面。輪子跟齒輪組買現成的套件。車殼是在文具行買的塑膠瓦楞板,30X50公分的規格就夠用了。附上車殼的尺寸圖片: