1. 程式人生 > 實用技巧 >樹莓派小車——輪子轉起來

樹莓派小車——輪子轉起來

  最近復活了躺在月餅盒子裡吃灰已久的樹莓派,買了個L298N電機驅動器、買了個車架子,準備搞個小車玩玩;
  通過樹莓派讓小車輪子轉起來也比較簡單簡要概述起來分為下面二步:

1. 樹莓派發送資料給電機驅動器
2. 電機驅動器驅動電機轉動從而帶動輪子轉動

  讓小車動起來就是這麼簡單,方法步驟有了,下面就看看具體如何讓樹莓派發資料給電機驅動器,如何讓電機驅動器帶動輪子轉動,在具體介紹之前先看看L298N電機驅動器的實物圖;

樹莓派發資料到驅動器

  樹莓派想要將資料傳送到電機驅動器,它必須要先與驅動器建立連線,而驅動器這種又不支援USB連線;樹莓派提供了GPIO(通用輸入輸出)引腳用於連線第三方裝置,GPIO是一種低功耗的介面。電機驅動器本身也是通過GPIO來接收資料的。

  從上圖可以看到一共有40個引腳,並且標註了每個引腳的作用,每個引腳還有具體的編號1-40,但從上面也可以看出並不是40個都是GPIO引腳,引腳分為下面幾類:

  1. GPIO引腳 28個
  2. 2個5V引腳,2個3.3V引腳
  3. 8個接地引腳

  圖中可以看到每個引腳(Pin)都有一個編號從1到40,這個是物理編號,每個GPIO後面也跟著一個數字這是它的BCM編號。每個GPIO有一個物理編號一個邏輯編號(BCM編號);
  其實通常樹莓派有三種編碼方式:BOARD編碼、BCM編碼、wiringPi 編碼;BOARD編碼也就是上面所說的物理編號,wiringPi編碼這裡就不是了其實也就是它定義的一排數字;

圖中物理編號40的GPIO引腳對應的邏輯編號為21。

驅動器介面介紹

  L298N電機驅動器總共有這麼10類介面,這裡非專業的簡單介紹各個介面的用途,上圖對介面進行了編號。

編號1、9介面用於控制左右兩邊電機(電機輸出)
編號2 介面 12V輸入
編號3 介面接地(負極)
編號4 5V輸入,如10 接上跳帽可使4變為5V輸出口
編號7 左邊電機輸入(靠近9的兩個引腳)
編號6 右邊電機輸入(靠近1的兩個引腳)
編號8 左邊電機使能
編號5 右邊電機使能

  簡單瞭解了樹莓派與電機驅動器的介面後,就可以將樹莓派與驅動器進行接線連線起來了;

  上面可以看到驅動器左邊電機兩個輸入引腳,右邊電機兩個輸入引腳,上面也介紹了樹莓派通過GPIO與其他外設通訊,所以要讓輪子動起來需要:

左邊電機輸入兩個引腳(編號7)連線樹莓派兩個GPIO引腳
右邊電機輸入兩個引腳(編號6)連線樹莓派兩個GPIO引腳

驅動器驅動電機

  通過上面與樹莓派連線後,驅動器收到了訊號,但還需要將訊號輸出給電機才能夠讓輪子轉動起來;

左邊電機輸出(編號9)連線電機
右邊電機輸出(編號1)連線電機

  不區分正負極,但需要注意要保持如一個輸出接兩個電機要保證兩個電機與驅動器接線位置是一直的,不然就會導致一個電機正向轉動、另一個反向轉動;

  樹莓派、驅動器、電機的傳輸線接好還需要接的是驅動器、樹莓派的電源線;

  樹莓派USB介面供電
  驅動器外接電源正極接12V口(編號2),負極接節點線口(編號3)
  驅動器接電線(編號3)與樹莓派接地引腳連線

通過程式碼讓輪子轉動

import RPi.GPIO as gpio
import time

#gpio編碼模式 物理模式
gpio.setmode(gpio.BOARD)

#引腳35,37 設為輸出
gpio.setup(35, gpio.OUT)
gpio.setup(37, gpio.OUT)

#高電平
gpio.output(35, True)
#低電平
gpio.output(37, False)

time.sleep(10)
gpio.cleanup()  # 清理引腳


執行上面程式碼可以看到輪子動起來了;

參考資料:
https://www.raspberrypi.org/documentation/usage/gpio/

文章首發地址:Solinx