譯者 | 陳峻
審校 | 重樓
眾所周知,Raspberry Pi(樹(shù)莓派)硬件1~4已在物聯(lián)網(wǎng)世界中廣為人知,并得到了廣泛采用。而Raspberry Pi Pico 具有較小的物理尺寸,以及相對(duì)較高的處理能力和較低的能耗,因此它也在物聯(lián)網(wǎng)世界中占有特殊的地位,而且已經(jīng)作為微控制器(MCU),受到了開(kāi)發(fā)愛(ài)好者和物聯(lián)網(wǎng)專(zhuān)業(yè)人士的普遍喜愛(ài)。
一直以來(lái),Pico 得到了 Raspberry Pi 基金會(huì)的支持。該基金會(huì)是一家致力于教育事業(yè)的注冊(cè)慈善機(jī)構(gòu)。Raspberry Pi Pico不但價(jià)格非常便宜,而且只需幾分鐘的設(shè)置便可投入使用,因此使用者無(wú)需深厚的編程知識(shí),或需要到網(wǎng)上搜羅足夠的文檔,即可上手。下面,我將和您討論有關(guān) Raspberry Pi Pico 的編程功能、替代方案、以及資源。
Raspberry Pi Pico 系列和功能
Raspberry Pi Pico 不僅僅是一款微控制器,更是高性能的 MCU 板系列。典型的MCU板包括: Raspberry Pi Pico、Pico H、Pico W 以及 Pico WH。其中,Pico 和 Pico H 幾乎相同,唯一的主要區(qū)別只是 Pico H 帶有預(yù)焊接接頭(即,連接電線的地方),而 Pico 則沒(méi)有。因此,如果您想將電線連接到普通的 Pico上,則必須自行焊接接頭。
Pico W 和 Pico WH 都添加了板載 Wi-Fi 模塊,可以讓設(shè)備連接到互聯(lián)網(wǎng)上。Pico W 和 Pico WH 之間的唯一區(qū)別是, WH 具有預(yù)焊接的接頭。
總的說(shuō)來(lái),上述四個(gè)系列均具有以下特性:
- RP2040 MCU
- 雙核 Arm Cortex M0+ 處理器
- 時(shí)鐘速度高達(dá) 133 MHz
- 264 KB SRAM 和 2 MB 閃存
- 1 個(gè) USB 1.1 端口
- 低功耗或休眠模式
- 26 個(gè)通用輸入/輸出 (GPIO) 引腳
- 溫度感應(yīng)器
- 2 個(gè) SPI、2 個(gè) I2C、2 個(gè) UART、3 個(gè) ADC
- 8個(gè)可編程 I/O 狀態(tài)機(jī)
同時(shí),所有四種類(lèi)型的 Pico還具有板載的 LED,這對(duì)于您首次開(kāi)展物聯(lián)網(wǎng)項(xiàng)目來(lái)說(shuō)是非常重要的。當(dāng)然,如果您已經(jīng)有了一些物聯(lián)網(wǎng)和 MCU的經(jīng)驗(yàn),那么請(qǐng)?zhí)D(zhuǎn)到下一部分。
下面,讓我們從 MCU 開(kāi)始。大多數(shù) Raspberry Pi 設(shè)計(jì)都會(huì)交付出單板計(jì)算機(jī)(single board computers,SBC)。它們?cè)诔叽缟暇哂休^高的處理能力,并且可以執(zhí)行與臺(tái)式計(jì)算機(jī)相同的基本操作。通常,它們使用的是基于 Linux 操作系統(tǒng)的 RaspberryOS。相比之下,微控制器板則不具備運(yùn)行完整操作系統(tǒng)的能力。也就是說(shuō),在臺(tái)式機(jī)或筆記本電腦上,您可以打開(kāi)多個(gè)應(yīng)用程序,而 MCU 一次只能運(yùn)行一個(gè)應(yīng)用程序。
例如,對(duì)于一個(gè)標(biāo)準(zhǔn)的智能安全攝像頭而言,由于其唯一的功能就是傳輸視頻,因此它不需要擁有完整的操作系統(tǒng)。實(shí)際上,Raspberry Pi Pico 操作系統(tǒng)是一個(gè)實(shí)時(shí)操作系統(tǒng),它一次僅執(zhí)行一項(xiàng)操作。
就處理器而言,ARM 處理器以其高能效水平,在物聯(lián)網(wǎng)領(lǐng)域非常受歡迎。而Raspberry Pi Pico 使用的 M0+ 處理器,甚至比典型的 ARM 處理器更為高效。通常,133 MHz 的時(shí)鐘速度,對(duì)于處理器執(zhí)行指令的速度來(lái)說(shuō),并不算特別快。不過(guò),盡管如此,這個(gè)速度對(duì)于典型的物聯(lián)網(wǎng)應(yīng)用來(lái)說(shuō),已經(jīng)足夠了。作為參考,具有多個(gè)傳感器和功能的智能健身設(shè)備的絕對(duì)最大時(shí)鐘速度,可能達(dá)到約 300 MHz。
就設(shè)備規(guī)格而言,264 KB SRAM 上的數(shù)據(jù)只有在設(shè)備通電時(shí)才被保留。一旦設(shè)備失電、關(guān)閉或電池耗盡,那么內(nèi)存里的信息將不復(fù)存在。而2 MB 閃存里的數(shù)據(jù)即使在電源關(guān)閉后,仍會(huì)被保留在設(shè)備的存儲(chǔ)器中。換句話說(shuō),它實(shí)際充當(dāng)了設(shè)備的數(shù)據(jù)存儲(chǔ)庫(kù)。
Raspberry Pi Pico 還具有 26 個(gè) GPIO 引腳。此處的引腳是指一個(gè)個(gè)小孔,可方便您連接外部設(shè)備。例如,您可以按需使用其中一個(gè)引腳將額外的 LED 燈連接到該板上。
注意,SPI、I2C、UART 和 ADC 分別是不同類(lèi)型的輸入?yún)f(xié)議/格式。憑借著豐富的多樣性,您可以將 Pico 用于許多不同的項(xiàng)目和應(yīng)用程序。最終,利用作為輸入/輸出組件的可編程 I/O 狀態(tài)機(jī),您可以針對(duì)不同的功能和協(xié)議進(jìn)行編程。
Raspberry Pi Pico 的替代方案
雖然 Raspberry Pi Pico 已經(jīng)成為了物聯(lián)網(wǎng)項(xiàng)目的絕佳選擇,但并非唯一選擇。下面,我們來(lái)看看Raspberry Pi Pico 的其他替代方案:
Arduino Uno
與具有相似物理尺寸的 Arduino Uno 板相比,Raspberry Pi Pico 顯然具有更好的處理能力和更多的輸入選項(xiàng)。例如, Pico 的最大時(shí)鐘速度為 133 MHz,而 Arduino Uno 的最高時(shí)鐘速度僅為 16 MHz。同時(shí),它只有 32 KB RAM 和 16 KB 閃存。此外,Uno 比 Pico 具有更少的 I/O 引腳、更高的功耗、以及更高的價(jià)格。當(dāng)然,由于它能夠與 Arduino 的大型開(kāi)源工具、代碼庫(kù)和 Arduino 集成開(kāi)發(fā)環(huán)境(IDE)相兼容,因此Arduino Uno 仍然是一款倍受歡迎的替代方案。
Raspberry Pi Zero
作為一臺(tái)成熟的計(jì)算機(jī),Raspberry Pi Zero帶有板載微處理器(MPU)而不是 MCU。它可以同時(shí)運(yùn)行多個(gè)應(yīng)用程序,并且具有高時(shí)鐘速度、512 MB RAM 、 8 GB 閃存,以及 40 個(gè) I/O 引腳(Pico 只有 26 個(gè))。它也是現(xiàn)有的最小的 Raspberry Pi MPU。不過(guò),它的功耗比 Raspberry Pi Pico 要高得多,而且價(jià)格也貴得多,大約需要15 美元,而 Pico 的成本僅為 4 美元。
ESP32
Espressif的 ESP32 MCU 系列體積雖然很小,但是處理能力和速度都是 Pico 的兩倍左右。雖然該系列 MCU 的具體規(guī)格有所不同,但是與 Pico 相比,它們通常具有兩個(gè)額外的 I/O 引腳、以及2倍的閃存。巧合的是,它們的能耗、以及價(jià)格也都是Pico的2倍??梢?jiàn),Pico 可能更適合于一些初建項(xiàng)目的場(chǎng)合,而ESP32 更適合大型商業(yè)項(xiàng)目。
對(duì) Raspberry Pi Pico 進(jìn)行編程
讓我們從一個(gè)簡(jiǎn)單的入門(mén)項(xiàng)目開(kāi)始。正如軟件程序員在初次學(xué)習(xí)一門(mén)語(yǔ)言時(shí),首先要編寫(xiě)一個(gè)簡(jiǎn)單的程序,來(lái)打印“Hello World”那樣,硬件程序員也需要首先練習(xí)編寫(xiě)一個(gè)簡(jiǎn)單的程序,來(lái)讓LED燈閃爍。在本例中,我們將通過(guò)設(shè)置 Raspberry Pi Pico ,以按照設(shè)定的時(shí)間間隔,打開(kāi)和關(guān)閉LED燈。
值得注意的是,Raspberry Pi Pico 可響應(yīng)多種編碼語(yǔ)言,其中包括 C、C++ 和 MicroPython。此處的MicroPython 是傳統(tǒng) Python 的更輕量級(jí)、更簡(jiǎn)單的版本,也是 Raspberry Pi Pico 愛(ài)好者最常用的語(yǔ)言。因此,如果您已經(jīng)掌握了 Python的話,則可以輕松地在 Raspberry Pi Pico 上開(kāi)始使用 MicroPython。
硬件
對(duì)于這個(gè)簡(jiǎn)單的項(xiàng)目,您除了需要開(kāi)發(fā)板和 USB 線之外,無(wú)需其他任何東西。您可以使用計(jì)算機(jī)來(lái)提供電源,并對(duì)設(shè)備進(jìn)行編程。當(dāng)然,如果您想繼續(xù)將 Pico 用于其他項(xiàng)目的話,則需要將其連接到外部電源上,以便脫離計(jì)算機(jī)持續(xù)工作。
同時(shí),您可以在 Amazon 或其他網(wǎng)站上,獲取 Raspberry Pi Pico 的入門(mén)級(jí)套件。此類(lèi)套件通常會(huì)提供 Raspberry Pi Pico MCU 板、USB 電纜、面包板、一些 LED 和電阻器、以及各種教程資源。此處的面包板是一塊帶孔的塑料板。您可以將 Pico 插入其中,然后將其他電氣組件(包括電源)連接到該板上。
軟件
您需要在計(jì)算機(jī)上安裝相應(yīng)的軟件,才能對(duì)Raspberry Pi Pico 進(jìn)行編程。在大多數(shù)項(xiàng)目中,開(kāi)發(fā)者都會(huì)選用Thonny 集成開(kāi)發(fā)環(huán)境。您可以通過(guò)鏈接:https://thonny.org/來(lái)下載和安裝Thonny。同時(shí),您可以通過(guò)連接:https://micropython.org/download/rp2-pico/,來(lái)下載和安裝 MicroPython。
第 1 步:連接計(jì)算機(jī)
請(qǐng)將 USB 線連接到設(shè)備的 USB 端口。然后按下 Raspberry Pi Pico 板上的白色小按鈕(即,啟動(dòng)選擇按鈕)。按住該按鈕,將 USB 的另一端插入計(jì)算機(jī),然后松開(kāi)該按鈕。至此,在文件資源管理器中,您應(yīng)該能看到一個(gè)新的名為“RP1-RP2”的連接設(shè)備。
第 2 步:在 Pico 上安裝 MicroPython
在文件資源管理器中,請(qǐng)點(diǎn)開(kāi) RP1-RP2 設(shè)備,并將已下載好的 MicroPython 文件粘貼到此處。
第 3 步:為 Thonny 設(shè)置解釋器
打開(kāi)Thonny軟件。請(qǐng)?jiān)凇斑\(yùn)行”工具欄下單擊“選擇解釋器”,并在其下拉菜單的各個(gè)選項(xiàng)中選擇“MicroPython (Raspberry Pico)”,再單擊“確定”。
第 4 步:編寫(xiě)程序
請(qǐng)將如下代碼鍵入或粘貼到 Thonny 軟件的主窗口中:
Python
import machine
import utime
led = machine.Pin(25, machine.Pin.OUT)
while True:
led.value(1)
utime.sleep(1)
led.value(0)
utime.sleep(1)
這段代碼會(huì)讓 LED 燈亮起一秒鐘,然后熄滅一秒鐘,并無(wú)限循環(huán)下去,直到設(shè)備電源被拔掉。
第5步:運(yùn)行程序
接下來(lái),請(qǐng)點(diǎn)擊運(yùn)行按鈕(上面有播放符號(hào))。電腦屏幕的彈窗會(huì)詢(xún)問(wèn)您需要將文件保存到何處,以及文件名稱(chēng)。此時(shí),請(qǐng)單擊“Raspberry Pi Pico”即可。注意,在命名文件時(shí),請(qǐng)確保在末尾添加 .py,以便 MCU 將開(kāi)發(fā)語(yǔ)言識(shí)別為 MicroPython。例如,您可以將文件命名為 LED.py。當(dāng)然,如果您希望該文件在每次插入設(shè)備時(shí)都能自動(dòng)運(yùn)行的話,則請(qǐng)將其命名為 main.py。這將告知 Pico在啟動(dòng)時(shí)立即運(yùn)行本程序。請(qǐng)記得單擊“確定”。
至此,如果您能看到LED燈定期閃爍的話,那么恭喜您在 Raspberry Pi Pico 上已成功完成了第一個(gè)編程項(xiàng)目。
小結(jié)
綜上所述,Raspberry Pi Pico 是一種便宜且簡(jiǎn)單的選擇,適用于從學(xué)習(xí)編程,到原型設(shè)計(jì),再到從頭開(kāi)始開(kāi)始創(chuàng)建物聯(lián)網(wǎng)設(shè)備的整個(gè)過(guò)程。當(dāng)然,您也可以在各種靈活多變的場(chǎng)景中,通過(guò)編程讓其發(fā)揮更多、更豐富的功能。
譯者介紹
陳峻(Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專(zhuān)注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn)。
原文標(biāo)題:Getting Started With Raspberry Pi Pico Programming in IoT,作者:Carsten Rhod Gregersen