A. 樹莓派 3 + L298N模塊 驅動直流電機
單片機或樹莓派一般使用 L298n 模塊來驅動電機 。L298N的實物圖如下。
12V power:L298n 的電源正極,盡管標的 12V,但你可以使用 7V ~ 35V 的電源。
GND: L298n 的電源地,樹莓派的 GND 引腳也要接到這里,即 L298N 和 樹莓派需要共地。
5V power: L298n 輸出的 5v 電源,是用來給單片機或樹莓派供電的。如果你的樹莓派是單獨供電,那麼這個引腳懸空。
Output 的兩個引腳接直流電機的兩腳,而板上有 Output A 和 Output B,分別驅動電機 A 和電機 B。
A Enable : 電裂仔機 A 使能,接 GPIO 口 。可以用PWM 來調速。
Logic Input : 接 4 個 GPIO 口塵氏。 上面兩個腳 Input1 、Input2 (靠近 A Enable )控制電機 A ; 下面兩個腳 Input3、Input4 (靠近 B Enable)控制電機 B。
B Enable : 電機 B 使能,接 GPIO 口。 可以用 PWM 來調速。
總結一下就是 A Enable 、Input1、Input2 控制電機 A 的運行,B Enable、Input3、Input4 控制電機 B 的運行。
如何控制的呢? 下面是對電機 A 進行控制的真值表,電機 B 同理。
驅動一派源散下試試吧!
下面是控制電機 A 的電路圖:
把 L289N 的直流電源接好,然後把樹莓派的 GND 與 L298N 的 GND 連在一起,因為共地後 L298N 才能識別樹莓派發送的 IN1、IN2 到底是高電平還是低電平。
樹莓派的 2、3、4 腳分別連到 A Enable、IN1 、IN2 。(把 Enable 上的短接帽拿掉)
由控製表可知給 2 腳高電平,3 腳高電平,4 腳低電平,電機就會正轉。
編寫程序:
前面提到過 A Enable 和 B Enable 可以用 pwm 控制來調速,下面是相應程序。
接線不變!這個程序可以讓電機 A 以不同的速度正轉。
在樹莓派中運行程序後,可以看到電機的轉速會隨著占空比的改變而變化。
程序源碼在: github
B. 《樹莓派Python編程指南》epub下載在線閱讀,求百度網盤雲資源
《樹莓派Python編程指南》(Alex Bradbury)電子書網盤下載免費在線閱讀
資源鏈接:
鏈接:
書名:樹莓派Python編程指南
作者:Alex Bradbury
譯者:王文峰
豆瓣評分:7.1
出版社:機械工業出版社
出版年份:2015-1-16
頁數:221
內容簡介:本書由樹莓派基金會資深軟體開發工程師親筆撰寫,是學習在樹莓派上編程的必備手冊。即使你沒有任何編程經驗,也可以暢游樹莓派的世界。本書覆蓋了初學編程者和第一次做Python開發所需的基礎知識,書中首先對Python編程做了基本介紹,並給出了通用的Python代碼,然後逐步介紹了:
·配置並開始Python編程
·使用變數、循環和函數
·學習3口圖形編程
·使用PyGame
·編程「我的世界」游戲
·編寫Python腳本
·理解感測器和GPIO
本書深入淺出地介紹每條命令,並輔以生動的例子和源代碼,可以幫助你學習Python編程所需的各種知識和技能,是開啟Python編程之旅的必備指南。
作者簡介:Alex Bradbury樹莓派基金會資深軟體開發工程師,對樹莓派的發展做出了卓越貢獻。他精通Python、C/C++等多種編程語言,尤其對Python語言有獨到見解。目前他在申請劍橋大學的多核架構編譯技術博士學位。
Ben Everard資深科技工作者,擁有豐富軟體開發經驗,創建並掌管linux之音(www.linuxvoice.com),在該網站的電子雜志和播客上可以找到他的沉思錄。之前,他曾做過Linux Format的技術編輯和NoPC的區域經理。在此期間,他負責監管坦尚尼亞的校園計算機測試和部署工作。
C. 【原創】樹莓派3B開發Go語言(四)-自寫庫實現pwm輸出
在前一小節中介紹了點亮第一個LED燈,這里我們准備進階嘗試下,輸出第一段PWM波形。(PWM也就是脈寬調制,一譽宴種可調占空比的技術,得到的效果就是:如果用示波器測量引腳會發現有方波輸出,而且高電平、低電平的時間是可調的。)
這里爪爪熊准備寫成一個golang的庫,並開源到github上,後續更新將直接更新到github中,如果你有興趣可以和我聯系。 github.com/dpawsbear/bear_rpi_go
我在很多的教程中都看到說樹莓派的PWM(硬體)只有一個GPIO能夠輸出,就是 GPIO1 。這可是不小的打擊,因為我想使用至少四個 PWM ,還是不死心,想通過硬體手冊上找尋蛛絲馬跡,看看究竟怎麼回事。
手冊上找尋東西稍等下講述,這里先提供一種方法測試 樹莓派3B 的 PWM 方法:用指令控制硬體PWM。
這里通過指令的方式掌握了基本的pwm設置技巧,決定去翻一下手冊看看到底PWM怎麼回事,這里因為沒有 BCM2837 的手冊,根據之前文章引用官網所說, BCM2835 和 BCM2837 應該是一樣的。這里我們直接翻閱 BCM2835 的手冊,直接找到 PWM 章節。找到了如下圖:
圖中可以看到在博通的命名規則中 GPIO 12、13、18、19、40、41、45、52、53 均可以作為PWM輸出。但是只有兩路PWM0 PWM1。根據我之前所學知識,不出意外應該是PWM0 和 PWM1可以輸出不一樣的占空比,但是頻率應該是一樣的。因為沒有示波器,暫時不好測試。先找到下面對應圖:
根據以上兩個圖對比可以發現如下規律:
對照上面的表可以看出從 BCM2837 中印出來的能夠使用在PWM上的就這幾個了。
為了驗證個人猜想是否正確,這里先直接使用指令的模式,模擬配置下是否能夠正常輸出。
通過上面一系列指令模擬發現,(GPIO1、GPIO26)、(GPIO23、GPIO24)是綁定在一起的,調節任意一個,另外一個也會發生變化。也即是PWM0、PWM1雖然輸出了兩路,可以理解成孫宴兩路其實都是連在一個輸出口上。這里由於沒有則虛銀示波器或者邏輯分析儀這類設備(僅有一個LED燈),所以測試很簡陋,下一步是使用示波器這類東西對頻率以及信號穩定性進行下測試。
小節:樹莓派具有四路硬體輸出PWM能力,但是四路中只能輸出兩個獨立(占空比獨立)的PWM,同時四路輸出的頻率均是恆定的。
上面大概了解清楚了樹莓派3B的PWM結構,接下來就是探究如何使用Go語言進行設置。
因為拿到了手冊,這里我想直接操作寄存器的方式進行設置,也是順便學習下Go語言處理寄存器的過程。首先需要拿到pwm 系列寄存器的基地址,但是翻了一圈手冊,發現只有偏移,沒有找到基地址。
經過了一段時間的努力後,決定寫一個 樹莓派3B golang包開源放在github上,只需要寫相關程序進行調用就可以了,以下是相關demo(pwm)(在GPIO.12 上輸出PWM波,放上LED燈會有呼吸燈的效果,具體多少頻率還沒有進行測試)
以下是demo(pwm) 源碼
D. 如何編譯armlinux的go
Golang也就是Go語言,現在已經發行到1.4.1版本了,語言特性優越性和背後Google強大靠山什麼的就不多說了。Golang的官方提供了多個平台上的二進制安裝包,遺憾的是並非沒有發布ARM平台的二進制安裝包。ARM平台沒辦法直接從官網下載二進制安裝包來安裝,好在Golang是支持多平台並且開源的語言,因此可以通過直接在ARM平台上編譯源代碼來安裝。整個過程主要包括編譯工具配置、獲取Golang源代碼、設置Golang編譯環境變數、編譯、配置Golang行環境變數等步驟。
註:本文選用樹莓派做測試,因為樹莓派是基於ARM平台的。
1、編譯工具配置
據說下個版本的golang編譯工具要使用golang自己來寫,但目前還是使用C編譯工具的。因此,首先要配置好C編譯工具:
1.1在Ubuntu或Debian平台上可以使用sudoapt-getinstallgcclibc6-dev命令安裝,樹莓派的RaspBian系統是基於Debian修改的,所以可以使用這種方法安裝。
1.2在RedHat或CentOS6平台上可以使用sudoyuminstallgcclibc-devel命令安裝。
安裝完成後可以輸入gcc--version命令驗證是否成功安裝。
2、獲取golang源代碼
2.1直接從官網下載源代碼壓縮包。
golang官網提供golang的源代碼壓縮包,可以直接下載,最新的1.4.1版本源代碼鏈接:/golang/go1.4.1.src.tar.gz
2.2使用git工具獲取。
golang使用git版本管理工具,也可以使用git獲取golang源代碼。推薦使用這個方法,因為以後可以隨時獲取最新的golang源代碼。
2.2.1首先確認ARM平台上已經安裝了git工具,可以使用git--version命令確認。一般linux平台都安裝了git,沒有的話可以自行安裝,不同平台的安裝方法可以參考:download/linux
2.2.2克隆遠程golang的git倉庫到本地
在終端cd到你想要安裝golang的目錄,確保該目錄下沒有名為go的目錄。然後以下命令獲取代碼倉庫:
gitclone/go
大陸地區可能會獲取失敗,在不翻牆的情況下我試了幾次都沒成功,原因大家都懂的。好在google已經將golang也託管到github上面,所以也可以通過下面命令獲取:
gitclone/golang/go.git
視網路情況,下載可能需要不少時間。我2M的帶寬花了將近兩個小時才下載完,雖然整個項目不過幾十兆==
下載完成後,可以看到目錄下多了一個go目錄,裡面即為golang的源代碼,在終端上執行cdgo命令進入該目錄。
執行下面命令檢出go1.4.1版本的源代碼,因為現在汪敏指已經有新的代碼提交上去了,最新的代碼可能不是最穩定的:
gitcheckoutgo1.4.1
至此,最新1.4.1發行版的源代碼獲取完畢
3、設置golang的編譯環境變數
主要有GOROOT、GOOS、GOARCH、GOARM四個環境變數需要設置,先解釋四個環境變數的意義。
3.1GOROOT
主要代表golang樹結構目錄的路徑,也就是上面git檢出的go目錄。一般可以不用設置這個環境變數,因為編譯的時候默認會以go目錄下src子目錄中的all.bash腳本困配運行時的父目錄作為GOROOT的值。為了保險起見,可以直接設拿芹置為go目錄的路徑。
3.2GOOS和GOARCH
分別代表編譯的目標系統和平台,可選值如下:
GOOSGOARCH
darwin386
darwinamd64
dragonfly386
dragonflyamd64
freebsd386
freebsdamd64
freebsdarm
linux386
linuxamd64
linuxarm
netbsd386
netbsdamd64
netbsdarm
openbsd386
openbsdamd64
plan9386
plan9amd64
solarisamd64
windows386
windowsamd64
需要注意的是這兩個值代表的是目標系統和平台,而不是編譯源代碼的系統和平台。樹莓派的RaspBian是linux系統,所以這些GOOS設置為linux,GOARCH設置為arm。
3.3GOARM
表示使用的浮點運算協處理器版本號,只對arm平台有用,可選值有5,6,7。如果是在目標平台上編譯源代碼,這個值可以不設置,它會自動判斷需要使用哪一個版本。
總結下來,在樹莓派上設置golang的編譯環境變數,可編輯$HOME/.bashrc文件,在末尾添加下面內容:
exportGOROOT=你的go目錄路徑
exportGOOS=linux
exportGOARCH=arm
編輯完後保存,執行source~/.bashrc命令讓修改生效。
4、編譯源代碼
環境變數配置完成自後就可以開始編譯源代碼。在go目錄下的src子目錄中,主要有all.bash和make.bash兩個腳本(另外還有兩個all.bat和make.bat腳本適用於window平台)。編譯實際上就是執行其中一個腳本,兩者的區別在於all.bash在編譯完成後還會執行一些測試套件。如果希望只編譯不測試,可以運行make.bash腳本。使用cd命令進入go下src目錄,執行./all.bash或者./make.bash命令即可開始編譯。由於硬體情況不同,編譯耗費的時間不同。在我的B型樹莓派編譯過程花費了將近半個小時,編譯完成後執行的測試套件又花費了差不多一個小時,總共花費了一個半小時左右。
5、配置golang運行環境變數
編譯完成後,go目錄下會生成bin目錄,裡面就是go的運行腳本。為了以後使用方法,可以將這個bin路徑添加到PATH環境變數中。同樣編輯~/.bashrc文件,因為前面設置過GOROOT環境變數指向go目錄了,所以只需要在末尾加上
exportPATH=$PATH:$GOROOT/bin
保存後同樣執行source~/.bashrc命令讓環境變數生效。
至此,golang源代碼編譯安裝成功。執行goversion應該就能看到當前golang的版本信息,表示編譯安裝成功。