天天看點

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

引言:相信許多人都有個創造機器人的夢想,但以前個人打造一款機器人屬于異想天開。這不僅僅是因為硬體零部件的昂貴,主要還在于中控系統的複雜性。不過樹莓派這類開源微電腦的誕生,你的極客夢依托樹莓派就能夠實作。
如果你也曾幻想從無到有地親手打造出自己的第一台機器人,那麼樹莓派這個硬體平台就是你上手的不二之選。
本文選自《樹莓派機器人藍圖權威寶典》。
           

在正式開始前

  1.本文使用的是樹莓派 B2

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  2.你已經對樹莓派已有了相當的了解,并已 SD卡上燒制了 Raspbian/Wheezy系統

  3.系統安裝在記憶體卡中,記憶體卡的容量需要至少在 8GB以上

對樹莓派進行配置和控制遙控小車

  你将要制作的第一個項目采用的是一種簡易的遙控小車,如下圖所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  這是一種Xmods 遙控車,在Radio Shack1 有售,在零售店或網上商店也可以買到。當然你也可以使用其他類型的遙控小車。采用這種小車的優點在于它的驅動和轉向很容易控制。

  下圖顯示的是這種小車中間的控制部分。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  你需要直接控制小車的兩處連接配接:一處是驅動電機,另一處是轉向單元。這種小車的驅動單元位于車尾處。正常情況下,你會看到兩根驅動直流電機的導線。接頭位于車尾,看起來像下圖一樣。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  在車的主要部分,可以看到有個接頭,接頭有兩根導線,用來控制小車的速度,如圖1-5所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  拆除這個插頭和這些導線;你将用樹莓派和一個電機控制器來為小車的驅動系統提供所需電壓。導線上電壓的高低将決定電機旋轉的快慢;電壓的正負極變化将決定電機的轉向。樹莓派需要提供一個±6V 的電壓信号,用來控制小車速度和行駛方向。

  你還需要取代小車前方轉向單元的控制信号,這有一點點困難。圖1-6 是位于車頭的連接配接插頭。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  控制子產品的五針連接配接,如下圖所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  關鍵是了解如何用導線來控制轉向。方法是打開這個單元,其内部結構如下圖所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  從上圖可以看出來,藍色、黃色導線( 圖中圓圈處) 連接配接到直流電機,橙色、褐色、紅色導線(圖中矩形處)連接配接到另一個控制電路。電機會驅動車輪正轉或反轉,電壓的極性決定旋轉的方向,電壓的高低決定了車輪轉動的快慢。橙色、褐色和紅色導線需特别注意,要探明它們的作用有點困難,可以使用電壓表和示波器來了解它們的工作原理。橙色和褐色的導線比較直覺,它們分别是接3.5V 和接地GND。紅色導線是一條控制線,采用PWM(Pulse Width Modulation)技術,輸出信号為頻率330HZ、占空比為10% 的方波信号。它是一個使能控制信号。沒有這個信号,轉向單元就不能被激活。

  一旦你明白了原有小車系統中的控制信号是如何工作的,就可以通過樹莓派輸出這些信号來控制小車。要達到這個目的,樹莓派需提供3.3V 的直流信号,一個接地GND 信号,一個330Hz、3.3V 的PWM 信号,以及驅動轉向單元的±6V 電壓。你可以将小車中已有的導線和一些自己買來的導線焊在一起,然後用熱縮管包好,進而與小車中原有的插頭連接配接在一起(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  你還需要連接配接小車的後輪部分以便驅動小車的兩個後輪。下圖是連接配接好後看到的樣子。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  另外,你還需要把小車的電池連接配接到樹莓派上,讓樹莓派采用小車的電池電源,下圖是重新修改連接配接後的示意圖。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  要控制小車,你需要提供小車所需的每個控制信号。±6V的電壓信号不能直接取自樹莓派。你需要某種電機控制器提供信号來控制小車後輪的驅動和轉向單元。提供這些信号最簡單的方法是使用電機擴充闆,這是種外加的硬體,可以裝在樹莓派上,并能根據電壓和電流為小車的轉向和驅動提供動力。可通過網上購買RaspiRobot V2 擴充闆來滿足需求,如下圖所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  欲了解擴充闆的詳情,可以通路http://www.monkmakes.com/?page_id=6983。這塊擴充闆将提供驅動和轉向信号給你的遙控小車。你還需要一個附加的信号,就是用于激活轉向單元的PWM 信号。下面是把樹莓派和這塊擴充闆相連接配接的步驟:

1.将電池電源接頭和擴充闆的電源接頭連接配接在一起,如下圖所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

2.接着,連接配接後輪驅動信号到擴充闆上的電機1 号接口,如下圖所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

3.連接配接前輪驅動接頭到擴充闆上的電機2 号接口,如下圖所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

4.連接配接3.3V 和GND 引腳樹莓派的GPIO(General Purpose Input/Output)接口。下圖是這些接口的布置圖。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

5.你需要使用Pin1 3.3V 接口連接配接3.3V 信号,Pin9 GND 接口連接配接接地GND 信号。你還需要連接配接其中的一個GPIO接口,通過320Hz 的頻率、占空比10% 的PWM 信号去激活單元。下圖所示為連接配接Pin12 GPIO18 接口。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  到此,硬體連接配接已完成。

  硬體已準備好,現在你可以通過樹莓派實作所有的功能。首先,安裝與擴充闆所相關的庫檔案,這可在http://www.monkmakes.com/?page_id=698 中找到。執行下述步驟:

1.運作指令wget https://github.com/simonmonk/raspirobotboard2/raw/master/python/dist/rrb2-1.1.tar.gz—該指令可擷取所需的庫檔案。

2.然後運作 tar –zf rrb2-1.1.tar.gz—該指令将檔案解壓縮。

3.鍵入cd rrb2-1.1—改變目錄到檔案所在位置。

4.鍵入sudo python setup.py install—安裝庫檔案。

  你需要編寫一些Python 代碼,用來控制驅動電機和轉向電機。這些代碼看起來和下面的差不多(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  這些代碼詳細說明如下。

  • import RPi.GPIO as GPIO :導入RPi.GPIO 類庫,這個類庫允許你向車頭的轉向單元發送一個PWM 信号。
  • import time :導入time 類庫, 允許使用time.sleep(number_of_milliseconds)

    方法,該方法會産生一個固定的延時。

  • from rrb2 import * :導入rrb2 類庫,rrb2 類庫使你能控制兩個直流電機。這個rrb2 就是你剛剛從GitHub

    下載下傳的庫檔案。

  • pwmPin = 18:這将設定PWM接口為GPIO Pin18引腳,它是樹莓派上的實體接口Pin12。
  • dc = 10 :設定PWM信号中的占空比為10%。
  • GPIO.setmode(GPIO.BCM) :設定RPi.GPIO 的定義模式為BCM 模式,允許你制定PWM 信号的實體接口。
  • GPIO.setup(pwmPin, GPIO.OUT) :設定PWM接口為輸出,因而你能驅動轉向單元的控制電路。
  • pwm = GPIO.PWM(pwmPin, 320) :在正确的接口上初始化PWM 信号,并設定PWM 信号為320Hz。
  • rr = RRB2() :執行個體化電機控制器的一個執行個體。
  • pwm.start(dc) :開始PWM信号。
  • rr.set_led(1) :點亮電機控制闆上的 LED1。
  • rr.set_motors(1, 1, 1, 1) :設定兩個電機同時移動進而使小車向前行駛。這個指令允許你設定電機正轉或反轉,以及設定指定的速度。第一個參數是1 号電機的速度,它的範圍是從0到1 ;第二個參數是1 号電機的方向,1 是正轉,0 是反轉;第三個參數是2 号電機轉速,範圍也是從0到1;第四個參數是設定2号電機的反轉和正轉,取值1 或0。
  • print(“Loop, press CTRL C to exit”) :訓示使用者如何停止運作程式。
  • while 1 : 保持循環,直到“Ctrl+C”組合鍵被按下。
  • time.sleep(0.075) :讓程式等待0.075 秒。
  • pwm.stop() :停止PWM信号。
  • GPIO.cleanup() :清除GPIO 指令并準備關閉。

當你鍵入sudo python xmod.py運作這個程式後,控制闆上的LED1 會亮起來,這時候,後輪應該向前旋轉,并且轉向單元也開始運作。這些行為可以确認全部連接配接都是正确的。為了讓項目更加有趣,你可以通過添加代碼實作更多的動态控制。下面是Python 代碼的第一部分(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  在開始下一步前,可将Python 代碼複制到一個新檔案,并把該檔案命名為xmodControl.py。在這段代碼中,你需要一些額外的引用聲明4,用于直接擷取鍵盤的輸入,而無須敲擊Enter鍵。這會讓實時互動更加及時。getch() 函數接收實際按鍵的狀态。

  其餘代碼看起來和之前的程式差不多,該程式的第二部分如下所示(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  代碼的第二部分是一個while 循環,用來不斷獲得輸入指令并轉換為你的遙控小車的指令:前進、後退、向左轉、向右轉。這個程式相當簡單,也許你會想要加入更多的指令,進而提供更多的方式控制速度和方向。

遠端通路遙控小車

  雖然你現在可以控制小車了,但若想要擺脫那些連接配接線的束縛,實作對小車的遠端控制,則還需要添加無線區域網路裝置到樹莓派中。下面我們來學習如何實作這個功能。實作該功能的第一步是安裝無線區域網路裝置。雖然有幾種可選的方案來實作,但是我們建議你采用效果較好、參考資料齊全的一種,詳情可通路https://learn.adafruit.com/setting-upa-raspberry-pi-as-a-wifi-access-point/overview 來擷取。

  你現在已能夠通過無線接入點連接配接樹莓派。 一旦你已建立了無線連接配接,就可以通過VNC連接配接登入,通過這種方式你還可以給自己的小車增加一個USB 攝像頭,這樣會讓控制更加容易。

  為達此目的,首先下載下傳一個能支援VNC連接配接的應用程式。vncserver 程式完全可以滿足你的需求。

  你可以在樹莓派終端視窗中鍵入sudo apt-get install tightvncserver 指令,将程式安裝在樹莓派上。

TightVNC Server 是一個允許你遠端檢視完整圖形化桌面的應用程式。當你安裝了該程式後,就可以通過下述指令進行操作:

  1. 在樹莓派的終端視窗中鍵入vncserver 指令啟動伺服器。

  2. 根據提示你需要輸入密碼并确認,然後系統會詢問你是否需要一個隻供浏覽的密碼。

記住你輸入的密碼,使用VNC Viewer 遠端登入時要用到這個密碼。

  3. 在你的遠端計算機上要有一個VNC Viewer( 連接配接浏覽器),Windows 的使用者可選擇一個名為RealVNC 的軟體, 它可以在http://www.realvnc.com/download/viewer/ 下載下傳。當運作該軟體時,你會看到如下界面(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  4. 輸入VNC 伺服器位址,也就是你樹莓派的IP 位址,然後單擊Connect(連接配接)。你會看到一個未加密連接配接的提示警告,選擇Continue(繼續),接着你會看到如下的彈出對話框(見下圖。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  5. 輸入你在樹莓派上啟動VNC 服務時所輸入的密碼,然後你就能看到樹莓派的圖形界面了,看起來類似于下面的螢幕截圖(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  現在你可以通路系統的所有功能。然而,由于傳遞的是圖形資料,是以這些功能的響應速度比較慢。為了避免你在每次啟動樹莓派時都輸入vncserver 指令,可以使用http://www.havetheknowhow.com/Configure-the-server/Run-VNC-on-boot.html 中提供的指令。

  VNC 伺服器也可在Linux 上使用。你可以用一個被稱為Remote Desktop Viewer(遠端桌面浏覽器)的軟體遠端檢視樹莓派的圖形化使用者界面(GUI)。如果你還沒有安裝這個軟體,則可以根據你使用的Linux 系統版本,通過軟體應用更新程式進行安裝。一旦你安裝了這個軟體,執行以下的步驟:

  1.運作軟體,你可以看到下面的界面(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  2.确認VNC 伺服器正在樹莓派上運作,最簡單的方法就是使用SSH 登入,然後在提示下運作vncserver。現在在Remote Desktop Viewer 界面中單擊Connect,接着會出現一個視窗,在Protocol 選項下,選擇VNC,然後你會看到如下的螢幕截圖(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  3. 現在輸入主機IP 位址,确認你在結尾處包括了a:1,然後單擊Connect。還需要輸入VNC 伺服器密碼,這個密碼是你在樹莓派上第一次運作vncserver 指令時輸入的密碼,如下圖所示。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  這時候就可以看到樹莓派的圖形界面了。現在,你需要檢視連接配接到小車的USB 網絡攝像頭拍攝的畫面。這個相當容易,隻需要插入USB 網絡攝像頭,然後下載下傳一個視訊播放器軟體。推薦你使用luvcview。如需要安裝,鍵入sudo apt-get install luvcview 指令即可。

  所有工具都準備好後,你現在可以運作vncview 了,這将生成一個luvcview 視窗,通過這個視窗就可以看到攝像頭捕獲的畫面,并且通過執行你之前編寫的xcmodControl.py 代碼遠端控制小車。螢幕看起來像下面這樣(見下圖)。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  接下來,你還可以創造許多附加功能到你的樹莓派小車上,比如說加入操作杆控制或者更多的自主要制。

零部件

  ★ 本文使用的零部件清單如下。

  (1)Pixhark 飛控,本書中使用樹莓派3 作為替代方案。

  (2)電機4 個。

  (3)軸距在450mm 的四軸飛行支架。

  (4)直徑是10 英寸,螺距為4.7 的螺旋槳。

  (5)沉金F450 機架。

  (6)方達11.1V 控電。

  (7)兩個5 号無人機搖桿電池。

  (8)MPU6050 子產品。

  ★ 掃描下方二維碼購買上述零部件。

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  本文選自《樹莓派機器人藍圖權威寶典》。

                       

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車

  想及時獲得更多精彩文章,可在微信中搜尋“博文視點”或者掃描下方二維碼并關注。

                         

打造機器人:為遙控小車加一個樹莓派對樹莓派進行配置和控制遙控小車遠端通路遙控小車