樹莓派驅動的無人駕駛開發記錄--驅動電機
樹莓派雖然是一款微型計算機,同時作為一塊開發板,其身上的I/O口就是證明,那麼就可以對其介面進行定義來實現我們想要的功能。首先來認識一下樹莓派引腳:如下圖放置樹莓派,下面的一排的引腳號是1、3、5、7等奇數號引腳,上面的是偶數號引腳。
在使用python對樹莓派進行程式設計的時候,其引腳宣告方式有三種
1,基於引腳的物理位置進行編號;
2,C語言GPIO庫wiringPi約定的編號方式;
3,Python語言GPIO庫RPi.GPIO約定的編號方式。
或者可以這樣理解:
控制GPIO口有很多方式,比如
》》shell直接控制
》》raspberry-gpio-python庫(Python語言)
》》wiringPi庫(C語言)
》》BCM2835 C Library(C語言)
而要用python語言來控制樹莓派,得首先安裝python支援環境
sudo apt-get install python-dev
然後安裝RPi.GPIO庫,以引入RPi.GPIO模組
sudo pip3 install RPi.GPIO
注意這裡的pip3,是由於python有2.0版本和3.0版本區別,所以其中pip安裝方式的命令也有所不同,這裡我們選擇python3.0版本的開發程式設計環境。
在 RPi.GPIO 中,同時支援樹莓派上的兩種 GPIO 引腳編號。
第一種編號是BOARD編號,這和樹莓派電路板上的物理引腳編號相對應。使用這種編號的好處是,你的硬體將是一直可以使用的,不用擔心樹莓派的版本問題。因此,在電路板升級後,你不需要重寫聯結器或程式碼。第二種編號是BCM規則,是更底層的工作方式,它和Broadcom的片上系統中通道編號相對應。在使用一個引腳時,你需要查詢通道號和物理引腳編號之間的對應規則。對於不同的樹莓派版本,編寫的指令碼檔案也可能是無法通用的。
你可以使用下列程式碼(強制的)指定一種編號規則:
GPIO.setmode(GPIO.BOARD)
# or
#GPIO.setmode(GPIO.BCM)
首先用樹莓派作為硬體開發板,來體驗一下類似Arduino的功能效果--點亮一個LED燈。這裡我們使用python語言。
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
led = 7
GPIO.setup(led,GPIO.OUT)
while True:
GPIO.output(led,True)
time.sleep(1)
GPIO.output(led,False)
time.sleep(1)
通過LED瞭解了python控制驅動硬體的基本方式。那麼控制驅動電機也是類比著arduino來像這個樣子進行程式設計的。在開始之前再複習一下電機驅動模組的一些知識。
使用該模組,可以設計一個雙輪差速驅動的車型。
該電機模組與樹莓派的連線是通過4個IO口連線控制的,可以任意選著樹莓派的GPIO引腳進行連線。
兩路使能引腳如果保持跳帽一直短接在5v電壓上保持高電平,那麼只需要控制樹莓派GPIO口輸出高低電平就能夠控制電機正反轉。想要再控制電機轉速的話,就是把兩個使能端也連線到主控的GPIO引腳。即如上表,對於IN1和IN2的高低電壓(在程式設計程式碼中用1和0表示)用於控制電機A;IN2和IN3用於控制電機B;而ENA和ENB稱為調速端,由PWM訊號空佔比來設定電機轉動速度。例如我們可以對ENA每隔1ms(1毫秒等於1000微秒)傳送一個訊號,而在這個訊號中高電壓持續時間與低電壓持續時間的比例就是電機A當前速度與全速比:
這裡我們選著樹莓派11,12,13,15號引腳,並且先不考慮調速。那麼程式如下:
#引入gpio的模組
import RPi.GPIO as GPIO
import time
#設定GPIO模式
GPIO.setmode(GPIO.BOARD)
#設定in1到in4介面
IN1 = 11
IN2 = 12
IN3 = 13
IN4 = 15
#初始化介面
GPIO.setup(IN1,GPIO.OUT)
GPIO.setup(IN2,GPIO.OUT)
GPIO.setup(IN3,GPIO.OUT)
GPIO.setup(IN4,GPIO.OUT)
#電機正轉
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
time.sleep(2)
GPIO.cleanup()
電機轉動起來之後,那麼反轉也是類似的,兩個電機配合實現前進、後退、左轉、右轉
進行一下函式封裝之後:
#引入gpio的模組
import RPi.GPIO as GPIO
import time
#設定GPIO模式
GPIO.setmode(GPIO.BOARD)
#設定in1到in4介面
IN1 = 11
IN2 = 12
IN3 = 13
IN4 = 15
#初始化介面
def init():
GPIO.setup(IN1,GPIO.OUT)
GPIO.setup(IN2,GPIO.OUT)
GPIO.setup(IN3,GPIO.OUT)
GPIO.setup(IN4,GPIO.OUT)
#前進的程式碼
def car_forward(sleep_time):
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
#後退
def car_backward(sleep_time):
GPIO.output(IN1,GPIO.LOW)
GPIO.output(IN2,GPIO.HIGH)
GPIO.output(IN3,GPIO.LOW)
GPIO.output(IN4,GPIO.HIGH)
time.sleep(sleep_time)
GPIO.cleanup()
#左轉
def car_turnleft(sleep_time):
GPIO.output(IN1,False)
GPIO.output(IN2,False)
GPIO.output(IN3,GPIO.HIGH)
GPIO.output(IN4,GPIO.LOW)
time.sleep(sleep_time)
GPIO.cleanup()
#右轉
def car_turnright(sleep_time):
GPIO.output(IN1,GPIO.HIGH)
GPIO.output(IN2,GPIO.LOW)
GPIO.output(IN3,False)
GPIO.output(IN4,False)
time.sleep(sleep_time)
GPIO.cleanup()
#以上封裝好的函式,通過呼叫函式執行
init()#呼叫初始化方法初始化介面
car_forward(10)#前進10s
car_backward(10)後退10s
接下來試一下PWM調速:
相關文章
- 樹莓派 - L298N模組 驅動直流電機樹莓派
- 樹莓派4B-PCA9685驅動舵機樹莓派PCA
- 樹莓派開發筆記(十三):入手研華工控樹莓派UNO-220套件(二):安裝rtc等驅動樹莓派筆記套件
- HX711壓力感測器+樹莓派python驅動程式樹莓派Python
- 【.NET 與樹莓派】LED 數碼管驅動模組——TM1638樹莓派
- 樹莓派上利用Tensorflow實現小車的自動駕駛樹莓派自動駕駛
- 樹莓派使用入門:如何啟動一個新的樹莓派樹莓派
- 樹莓派 4 開箱記樹莓派
- 暴力風扇無刷電機驅動方案
- 助力自動駕駛企業完成向資料驅動的端到端開發流程轉型自動駕駛
- 驅動開發:配置Visual Studio驅動開發環境開發環境
- 樹莓派 Django 前端開發樹莓派Django前端
- 樹莓派筆記樹莓派筆記
- 驅動開發:探索DRIVER_OBJECT驅動物件Object物件
- 樹莓派4B折騰記錄樹莓派
- ZooX首發雙向電動無人車,會成為自動駕駛出行的主流嗎?自動駕駛
- 自動駕駛汽車的未來,“鋰電池先驅”:需要更強勁的電池自動駕駛
- Linux驅動開發筆記(一):helloworld驅動原始碼編寫、makefile編寫以及驅動編譯Linux筆記原始碼編譯
- 「玩轉樹莓派」樹莓派 3B+ 配置無線WiFi樹莓派WiFi
- 樹莓派搭建git伺服器 | 樹莓派小無相系列樹莓派Git伺服器
- 步進電機Linux驅動Linux
- 樹莓派開發—基礎配置樹莓派
- 電腦印表機驅動在哪個位置?window電腦印表機驅動位置介紹
- 樹莓派是什麼 樹莓派能做什麼 樹莓派的功能用途樹莓派
- 【樹莓派】Python開發工控機急停設計樹莓派Python
- 自動駕駛系列(七)——聊聊人機互動中的DMS駕駛員監控系統自動駕駛
- Linux驅動開發筆記(四):裝置驅動介紹、熟悉雜項裝置驅動和ubuntu開發雜項裝置DemoLinux筆記Ubuntu
- 驅動開發入門
- 樹莓派鼓搗記 - 初探(從安裝到開機)樹莓派
- 電腦怎麼安裝印表機驅動程式 電腦印表機安裝驅動教程
- 趁Uber無人駕駛發展受挫,老對手Lyft要推出自動駕駛車輛自動駕駛
- 蘇州第二條自動駕駛公交車線路面向市民全面開放,雲端計算驅動自動駕駛資料工廠自動駕駛
- PHP 和樹莓派開發一個比特幣 / 以太坊交易機器人PHP樹莓派比特幣機器人
- 談“測試驅動的開發”
- 基於WDF的驅動開發
- 樹莓派使用入門:如何更新樹莓派樹莓派
- 【Spring註解驅動開發】聊聊Spring註解驅動開發那些事兒!Spring
- 波士頓動力新版人形機器人Atlas問世,純電驅動機器人