在 Raspberry 的官方作業系統 Raspbian 中,內建了兩個版本的 Python,分別是 2.7 與 3.5。其中 2.x 系列,因為過於老舊,所以不會再有 2.8 的版本。然而,3.x 系列中的最新版本 3.6 並未正式收錄在內。這篇文章共分為兩個部分,在第一部分我將介紹如何在 Raspberry 中安裝 Python 3.6 的環境,並建立一個用來開發 GPIO 相關程式的虛擬環境。而第二部分則配置一個簡單的 LED 電路,並利用 Python 程式來控制其明滅。

我使用的板子為 Raspberry Pi 3 Model B,不過應該只要是 40 個 GPIO 接腳的型號,搭配使用 Raspbian 作業系統都可以正常執行。

安裝 Python 3.6 虛擬環境

  1. 因為我們要安裝的 Python 並非內建版本,所以無法透過圖形化套件管理工具加以安裝,必須在命令列視窗中進行。選取 Terminal 應用程式。
    Raspberry Pi Terminal 應用程式
  2. 為了方便起見,我們先切換成 root 的身分。
  3. 切換至暫存目錄
  4. 下載 miniconda 安裝程式
  5. 執行安裝程式

    在安裝過程中,我們選擇安裝至 /opt/miniconda3。
  6. 在安裝過程中,miniconda 會修改 .bashrc,將 /opt/miniconda3/bin 加入 PATH 此一環境變數,因此我們僅需重新載入環境變數。
  7. 設定 miniconda 動態資料庫
  8. 載入 miniconda 動態資料庫
  9. 加入 Raspberry 相關套件
  10. 安裝 Python 3.6
  11. 確認 Python 版本

    應可看到類似下列訊息
  12. 安裝 Python 虛擬環境套件
  13. 離開 root 身分
  14. 設定 PATH 環境變數
  15. 更新 PATH 環境變數設定值
  16. 初始虛擬環境相關設定
  17. 建立測試用的虛擬環境
  18. 在虛擬環境中安裝 GPIO Python 套件

LED 燈泡電路與程式範例

 

接線圖

LED 與 Raspberry Pi 3 Model B 接線圖

說明如下:

  1. LED 負極 (短) 接腳連結到 Raspberry Pi 上實體編號 6 的腳位,也就是接地。
  2. LED 正極 (長) 接腳連結到 Raspberry Pi 上實體編號 7 的腳位。
  3. 一般建議連結或卸除任何電子元件時應保持 Raspberry Pi 處於關機的狀態,並仔細確認接線無誤後再開機,以避免損壞電子元件或板子。
  4. 在這個簡單的範例中,我沒有使用麵包板以及限流電阻。一般而言,這並不是一個安全的接法,有可能導致 LED 燈泡、甚至是板子的燒毀。在此為了簡化說明,所以才採用此一接法,在接線與未來實際應用時請多加注意。

程式代碼

利用文字編輯器 (如 nano) 新增 Python 程式 led.py

內容如下

程式說明如下:

  1. 第 4 行定義 LED 燈泡正極所接之腳位編號。在接線中我們連結至實體編號 7 的腳位,但其 BCM 腳位編號為 4。
  2. 第 5 行設定使用 BCM 腳位編號方式。
    我們也可以透過指令 GPIO.setmode(GPIO.BOARD) 設定使用實體編號方式,但是一般建議盡量使用 BCM 的編號方式,所以我們遵守這樣的建議。
  3. 第 6 行將我們使用的腳位設定為輸出模式,這樣一來才可以透過輸出的電壓控制 LED 燈泡的明滅。
  4. 第 12 行透過指令 GPIO.output(GPIO_PIN, GPIO.HIGH) 將腳位設定為輸出高電壓,因此 LED 燈泡可獲得電流產生亮光。
  5. 第 15 行透過指令 GPIO.output(GPIO_PIN, GPIO.LOW) 將腳位設定為輸出低電壓,因此 LED 燈泡失去電流而無法發亮。
  6. 第 20 行指令的目的是當程式關閉後,程式中所使用到的腳位都會回到原始狀態,也就是變成輸入模式。如果不這樣做,LED 燈泡有可能在程式結束後一直亮著,徒增困擾。而在更糟的情況下,如果後續使用時接線上出了問題而造成短路,有可能會損壞設備,因此程式務必在結束前確實進行回復的動作。

程式完成後,輸入下列指令執行程式

順利的話,就可以看到 LED 燈泡以每兩秒一個循環的速度進行閃爍。

問題排除

  • 程式無法順利執行
    如果程式出現錯誤訊息而無法順利執行,請仔細檢查每一行指令。必要時,可以直接複製程式碼並貼進你的編輯器。
  • 程式順利執行,但是 LED 燈泡無法發亮
    發生的原因有可能是 LED 正極 (長) 接腳所連結之腳位與程式定義中之腳位不相符。以此範例為例,請確認 LED 正極 (長) 接腳確實連結到 Raspberry Pi 上實體編號 7 的腳位。
    還有一種可能的原因是 Raspberry Pi 無法驅動這個 LED 燈泡。如果你不確定是否為此原因,請另外尋找相容於 Raspberry Pi (或 Arduino) 的 LED 燈泡。
  • 程式順利執行,但是 LED 燈泡一直發亮
    發生的原因有可能是正負極接反了,請拆下 LED 燈泡再次確認正負極接腳是否正確連結。以此範例為例,請確認 LED 負極 (短) 接腳需連結到 Raspberry Pi 上實體編號 6 的腳位 (也就是接地),而正極 (長) 接腳則必須連結到 Raspberry Pi 上實體編號 7 的輸出腳位。

透過 LED 燈泡電路與範例程式,我們了解到如何利用 Python 與 GPIO 套件來控制 Raspberry Pi GPIO 的輸出。儘管此一範例相當簡單,但是對於一般單純的數位輸入元件,都可以利用類似的方式加以控制。至於如何與其他比較複雜的元件進行互動,請參考接下來的一系列文章。

如果對文章的內容有任何疑問或建議,歡迎與我聯絡。

Facebook 留言
Print Friendly, PDF & Email
Summary
在 Raspberry Pi 3 Model B 建立 Python 3.6 環境
Article Name
在 Raspberry Pi 3 Model B 建立 Python 3.6 環境
Description
這篇文章共分為兩個部分,在第一部分我將介紹如何在 Raspberry 中安裝 Python 3.6 的環境,並建立一個用來開發 GPIO 相關程式的虛擬環境。而第二部分則配置一個簡單的 LED 電路,並利用 Python 程式來控制其明滅。
Author
Publisher Name
Everlearn Studio
Publisher Logo