Raspberry Pi Pico筆記(1):初次安裝與撰寫MicroPython程式讓LED閃爍

2021年1月下旬,樹莓派基金會發表一片售價僅 4 美元的低成本、高性能的微控制板,名為 Raspberry Pi Pico,跟以往不同的是這個開發板不能安裝作業系統,只能透過程式開發環境,如 Thonny MicroPython IDE、Visual Studio Code、Eclipse等,將程式編譯後,上傳到 Pico 開發板。
在實作過很多個 Arduino 和 Raspberry Pi的文章後,對於這個開發板很感興趣,想買來測試一下這個新開發板的功能。找了一下銷售通路,因缺晶片沒有庫存,最快要等到 5 月底,於是上露X找了有現貨的賣家買了一片,就是下圖中的 Pico,尚未銲上接腳。
過去的樹莓派開發板(Pi1 - Pi4, Zero)都是可以插 SD 卡及搭配周邊輸出(HDMI),所需的耗電量較大,即是是 Pi Zero 也比一般的開發板(如STM32或Arduino)耗電許多,再加上 Linux 作業系統對單一引腳控制不易等問題,不適合用來作為微控制器。許多開發者僅將 Raspberry Pi 搭配微控制器,讓 Raspberry Pi負責較高階的運算、網路及資料儲存等功能,藉以收集前端微控制器送來的數位/類比控制的感測值。樹莓派基金會為了解決這個問題,推出自行設計的 RP2040 微控制器,藉以補足這項不足。樹莓派基金會也銷售 RP2040 給電子零組件供應商,供應商推出自行設計的開發板,如 SparkFun Pro Micro - RP2040Pimoroni Tiny 2040 及Adafruit Feather RP2040,其價格根據網站顯示也比樹莓派基金會推出的 Pico 貴很多。RP2040 這個 IC 的編號命名是有規則的,如下圖說明。

RP2040 在其內部記憶體中具備 MicroPython 接口和 USB 快閃記憶體格式(UF2)引導程序,這意味著Pico可以直接處理通過 IDE 上傳的 Python 代碼。有關Raspberry Pi Pico 規格如下:
  • 處理器: RP2040 Dual-core Arm Cortex-M0+(可達 133 MHz)
  • SRAM記憶體: 264KB on-chip
  • Flash: 2MB
  • GPIO: 26 multifunction GPIO pins(3.3V 準位) 包含 3 analogue inputs
  • I/O: UART x2; SPI x2; I2C x2; PWM x16
  • USB: USB 1.1 x1(controller and PHY with host and device support)
  • PIO: Programmable I/O (PIO) x8
  • 感測器: Temperature; RTC
  • 電源: 1.8–5.5V DC(microUSB)
  • 大小: 21 mm × 51 mm

看到這裡,你會發現 Raspberry Pi Pico 沒有藍芽跟 WiFi,其實這也是要跟 Pi Zero W有所區隔,如果需要這兩項功能的可以選擇 Zero,沒有需求的,選擇 Pico 就足夠了。Pi Pico有 40 支引腳,排針及功能圖如下:
開發板上的 IC 及零件,可參考下圖:
簡單瞭解 Pico 的規格後,接下來要繼續進行初次安裝。這裡的安裝以 Python 開發環境為例,如使用 C 語言進行開發,需在 C 語言開發環境進行設定。Pyhhon開發環境下的安裝的方法有兩種,一是直接下載檔案進行更新,二是透過 Thonny Micropython IDE更新。

[安裝方法一:上傳UF2檔]

UF2是由 Microsoft 為 PXT(Programming Experience Toolkit)開發的一種文件格式(也稱為 Microsoft MakeCode),特別適用於通過大容量存儲(Mass Storage Class,亦即可移除式的快閃儲存裝置)刷新微控制器,Pico就是使用這個格式來溝通,如何將 UF2 檔案上傳到 Pico?步驟如下:
(1) 到 RP2040 網站 下載 MicroPython UF2 檔案。如下圖紅色框處:

(2) 按住開發板 BOOTSEL 按鈕不要放開,然後將 Pico 插上 Micro USB,USB 另一端接在電腦,連接 Pico 後,鬆開 BOOTSEL 按鈕。
(3) 這時可以看到多個一個磁碟機(下圖左),它將作為稱為 RPI-RP2 的大容量存儲設備,大小有128MB(下圖右,128MB只是一個外觀,實際上不是存儲設備 RAM 或快閃記憶體)。還有兩個檔案:包含 UF2 引導程序和版本的字符串描述 Info_UF2.TXT 及 重新定導向有關 RP2040 網站的資訊:Index.htm。

(4) 將 MicroPython UF2 檔案按住拖放到 RPI-RP2 磁碟機內。這時 Pico 將會重新啟動。這樣就可以正常運行 MicroPython 了。


[安裝方法二:使用Micropython IDE:Thonny]

(1) 到 Thonny 官方網站 下載 Thonny Python IDE程式。

(2) 安裝 Thonny Python IDE程式
執行下載檔開始安裝:
接著按幾次「Next」後就安裝完成。啟動後,不會看到最上方的功能表,請按下圖紅框處,切換成「一般模式」,才能看到功能表,重新啟動 Thonny。
(3) 執行Thonny Python IDE程式,再按住開發板 BOOTSEL 按鈕不要放開,然後將 Pico 插上 Micro USB,USB 另一端接在電腦,連接 Pico 後,鬆開 BOOTSEL 按鈕。
(4) 選擇功能表「工具」→「選項」→「直譯器」,如下圖:選擇「MicroPython(Raspberry Pi Pico)」。
(5) 繼續按下「安裝或更新韌體」,出現以下視窗後按下「安裝」,這時會下載 UF2 檔案並進行安裝。
(6) 安裝完成會出現以下畫面,這時就可以開始使用 MicroPython 控制 Pico 了。
上述的兩個方法,將 UF2 上傳完成後,可以透過立即互動的方式來與開發板溝通,這個方法稱做(REPL,Read Evaluate Print Loop),亦即是以直譯的方式,透過 IDE編譯環境來直接控制開發板,這有個好處是,它能立刻對所下的指令立即做出回應。

[讓控制板LED閃爍]

第一次使用開發板,不能免俗的還是要來點亮 LED 燈,稍做變化一下改讓 LED 閃爍,可在Thonny 編輯視窗輸入以下程式。
from machine import Pin
import time

led = Pin(25, Pin.OUT)

while True:
  led.value(1)   # LED亮
  time.sleep(1)  # 等待1秒
  led.value(0)
  time.sleep(1)  # LED滅

按下綠色的圖示「執行目前程式」即可開始編譯並上傳結果。有關 Thonny 編譯環境圖示的意義,如下圖說明。
按下「執行目前程式」時,如果尚未存檔,會出現儲存程式的視窗,記得如果不是特殊用途,檔案名稱不要命名為 boot.py 或 main.py,稍後說明這兩個檔名的用途。

通常會將程式儲存在電腦的硬碟中,或是直接儲存在「Raspberry Pi Pico」的 Flash 記憶體中,可依個人的需求而定。

[開機自動執行程式]

不論是 Arduino、ESP32 還是 STM32 程式編譯完成後上傳開發板,下次開機就會自動執行。可是 Pico 的自動執行方式有點不同,需要在存檔時,選擇「Raspberry Pi Pico」,再將存檔的檔名命名為:main.py,這樣開機時才會自動執行預設的程式 main.py。

[結果]

安裝完成後,上傳第一個讓 LED 閃爍的程式,在整體的操作上比 STM32 簡單很多,相信會讓更多想要進入微控制器領域的朋友,容易上手。接下來幾篇將繼續瞭解 Pico 的控制方法。

[參考資料]

Post a Comment

較新的 較舊