【開箱文】Raspberry Pi Pico 進階套件教學全攻略

文章推薦指數: 80 %
投票人數:10人

Raspberry Pi Pico進階套件內含Grove Shield for Pi Pico擴展板,可與Raspberry Pi Pico搭配使用,並且搭配十幾款的MIT Grove接頭模組,省去連接跳線 ... CIRCUSPi首頁»技術文章»RaspberryPi系列»Raspberry-Pi-Pico-module 一、介紹 RaspberryPiPico進階套件為iCShopxCIRCUSPi專為RaspberryPiPico使用者搭配推出的套件組,內含GroveShieldforPiPico擴展板,可與RaspberryPiPico搭配使用,並且搭配十幾款的MITGrove接頭模組,省去連接跳線及麵包板的困擾,透過學習結合各種感測器讓您能夠更快速的了解Pico並做出許多有趣的應用。

二、RaspberryPiPico進階套件 RaspberryPiPico進階套件使用盒裝的方式方便使用者使用與收納,下圖為RaspberryPiPico進階套件盒裝的外觀。

RaspberryPiPico進階套件組外觀RaspberryPiPico進階套件內容物如下圖表所示。

RaspberryPiPico進階套件內容物 名稱數量名稱數量RaspberryPiPico1CircusSHT3x溫溼度感測器模組1GroveShieldforPiPico1Circus人體紅外線偵測模組1L9110風扇模組1Circus震動感測模組1CircusLED指示燈10mm模組(紅)1Circus可調電阻模組1CircusLED指示燈10mm模組(綠)1Circus輕觸按鍵模組1CircusLED指示燈10mm模組(黃)1Circus紅外線發射模組1CircusLED指示燈10mm模組(藍)1Circus無源蜂鳴器模組1SG909G伺服馬達1CircusPixel全彩LEDx4模組(晶片)1Grove對Grove連接線(20cm)15Circus1.3吋OLED顯示螢幕1Grove對排母連接線(20cm)1Circus1對2擴充板模組1Circus光感測模組1 RaspberryPiPico腳位圖如下:GroveShieldforPiPico圖表如下:1類比埠A0,A1,A22數位埠D16,D18,D203UARTUART0,UART14I2CI2C0,I2C15電源切換開關可選3.3v/5v電源6SPISPI0 三、軟體安裝 (一)軟體下載 開發環境我們使用Thonny,Thonny是一個小巧好用的PythonIDE,內建Python3.7等多個直譯器,所以不需要額外安裝Python,對於初學者來說會非常方便。

Thonny支援三大作業系統(Windows、MAC、Linux)。

到Thonny官網並依照自己的作業系統下載相對應版本的Thonny。

下載相對應的Thonny版本開啟Thonny程式編輯器,起始畫面如下圖所示。

(二)環境設定 Thonny預設會使用Python3作為直譯器,而我們需要將他更改為使用MicroPython(RaspberryPiPico)來執行我們的程式。

選擇「工具>>選項>>直譯器」,修改直譯器為MicroPython(RaspberryPiPico),如下圖所示。

首次使用MicroPython語言開發Pico需要先將MicroPython韌體燒錄至Pico內,選擇「工具>>選項>>直譯器」,選擇右下角「安裝或更新韌體」,在未連接電源的狀態下按住Pico上的BOOTSEL按鍵,接著將Pico與電腦連接,系統成功安裝驅動後將會看到如下圖所示。

點選「安裝」後即可將MicroPython韌體燒錄至,如下圖所示。

燒錄完成四、套件模組實作範例程式 在開始撰寫程式之前,我們先來了解一下基本硬體,下圖是Pico插上擴展板的樣子,上面標註了每個Grove接孔的編號,在後面的程式範例都會依照這個編號接上指定的模組,各位可以參照下圖連接各項模組。

接下來將逐一講解各個感測器該如何使用,並帶大家將模組與程式整合在一起,完成一個小型實作。

本篇教學文章所使用的範例程式都可以到Github下載參考喔! (一)LED模組(紅、綠、黃、藍)實作 我們要使用紅、黃、綠LED燈實作一個簡易紅綠燈範例。

首先將PiPico插上Grove擴展板,並將GroveD16、D18、D20接上紅黃綠LED模組,開啟範例「example/led.py」並執行。

程式碼解說: Line1~2:引入相關模組,Pin模組用以操作IO腳位,sleep_ms模組用以延遲系統。

Line4~6:建立三個Pin物件用以控制三顆LED燈,分別對應腳位16、18、20(紅、黃、綠),並將IO狀態設為輸出。

Line8~17:在無窮迴圈內模擬紅綠燈過程,使用Pin物件的on方法將IO訊號拉高以點亮LED燈,off方法拉低訊號關閉LED燈,使用sleep_ms方法延遲系統運行,參數單位為毫秒。

(二)按鍵模組實作 我們要使用Circus輕觸按鍵模組控制LED燈亮滅。

將LED接在擴展板D18,開關接在擴展板D20,開啟範例「example/button.py」並執行。

程式碼解說: Line1:引入相關模組,Pin模組用以操作IO腳位。

Line3:建立一個Pin物件,並設為輸出,用以控制LED燈。

Line4:建立一個Pin物件,並設為輸入,用以讀取按鈕電位狀態。

Line6~10:持續檢查按鈕狀態並控制LED燈,使用Pin物件的value方法取得IO訊號狀態(高或低電位),使用on、off方法控制IO訊號高低。

(三)可調電阻模組實作 讀取Circus可調電阻模組數值,並控制LED燈亮度。

將可調電阻模組接在擴展板A0,LED燈接在擴展板D20,開啟範例「example/adc.py」並執行。

程式碼解說: Line1~2:引入相關模組,ADC模組用以讀取ADC數值,PWM模組用以產生PWM訊號。

Line4:建立一個ADC物件讀取可調電阻模組數值,使用IO26(A0)腳位,Pico能使用的ADC腳位為GPIO26~28(A0~A2)。

Line6:建立一個PWM物件控制LED燈亮度,使用IO20腳位。

Line7:設定PWM物件頻率為1KHz,表示多久在LED的開和關之間切換一次電位。

(T=1/F)Line9~11:每0.1秒讀取一次ADC數值並控制LED燈,使用ADC物件的read_u16讀取可調電阻數值,使用PWM物件duty_u16方法控制PWM工作週期(LED燈亮度),轉動可調電阻模組旋鈕,觀察LED燈亮度變化。

(四)無源蜂鳴器模組實作 使用蜂鳴器發出「逼逼」聲。

將蜂鳴器模組接到擴展板D20,開啟範例「example/buzzer.py」並執行。

程式碼解說: Line1~2:引入相關模組Line4:建立一個PWM物件控制蜂鳴器,使用IO20腳位。

Line6:設定PWM物件頻率為1KHz。

(T=1/F)Line9:設定PWM物件工作週期(0~65025)為50%。

Line11:使用PWM物件的deinit取消初始化並停止PWM輸出。

(五)人體紅外線偵測模組實作 使用人體紅外線偵測模組偵測人體移動,並將結果顯示在互動環境視窗。

將人體紅外線偵測模組接到擴展板D20,開啟範例「example/pir.py」並執行。

程式碼解說: Line1~2:引入相關模組Line4:建立一個Pin物件,並設為輸入,用以讀取人體紅外線感測模組電位狀態。

Line6~8:每0.1秒讀取一次人體紅外線感測模組電位,並顯示在互動環境視窗內(0表示已偵測到人體移動,1表示無),在感測器前方移動身體並觀察狀態。

(六)震動感測模組實作 使用震動感測模組感測震動狀態,並將結果顯示在互動環境視窗。

將震動感測模組接到擴展板D20,開啟範例「example/shake_sw.py」並執行。

程式碼解說: Line1~2:引入相關模組Line4:建立一個Pin物件,並設為輸入,用以讀取震動感測模組電位狀態。

Line6~8:每0.1秒讀取一次震動感測模組電位,並顯示在互動環境視窗內(0表示無震動,1表示有震動),嘗試撥動感測器觀察數值狀態。

(七)光感測模組實作 使用光感測模組感測光源,並將結果顯示在互動環境視窗。

將光感測模組接到擴展板A0,開啟範例「example/light.py」並執行。

程式碼解說: Line1~2:引入相關模組。

Line4:建立一個ADC物件讀取光感測模組數值,使用IO26(A0)腳位。

Line6~8:每0.1秒讀取一次光感測器ADC數值顯示在互動環境視窗上,使用ADC物件的read_u16讀取光感測器數值,嘗試遮擋光源並觀察數值變化。

(八)溫溼度感測器模組實作 使用SHT3x溫溼度感測器模組感測溫溼度,並將結果顯示在互動環境視窗。

將SHT3x溫溼度感測器模組接到擴展板I2C1。

開啟「libs/sht31.py」驅動程式,並另存到Pico內。

選擇「另存新檔」,如下圖所示:選擇另存新檔選擇存入RaspberryPiPico,如下圖所示:點選右上角「選單」>>新增目錄>>輸入「lib」>>點選「確認」,如下圖所示:進入lib目錄,輸入檔案名稱為「sht31.py」,點選「確認」,如下圖所示:開啟範例「example/SHT31.py」,並執行。

程式碼解說: Line1~2:引入相關模組,I2C模組提供I2C功能,SHT31模組提供sht31模組相關驅動程式。

Line4:建立一個I2C物件驅動sht31模組,使用ch1的I2C,SCLpin為7,SDApin為6,I2CClock頻率為400KHz。

Line5:建立一個SHT31物件用以讀取溫溼度資料,傳入I2C物件並設定SHT31I2C位置為0x44。

Line7~9:持續讀取溫溼度數值並顯示在互動環境視窗上,使用SHT31物件的get_temp_humi方法讀取溫溼度數值,tuple0為溫度,tuple1為濕度。

(九)全彩LED模組實作 使用Pixel全彩LEDx4模組循環顯示多種顏色。

將Pixel全彩LEDx4模組接到擴展板D20,開啟「libs/ws2812b.py」驅動程式,並另存到Pico內(作法同「(八)溫溼度感測器模組實作」)。

開啟範例「example/ws2812b_rainbow.py」,並執行。

程式碼解說: Line1~2:引入相關模組,ws2812b模組提供ws2812b模組相關驅動程式。

Line4:設定RGBLED燈數量。

Line5:建立一個ws2812b物件用以控制RGBLED燈,參數傳入LED燈數,statemachine編號,輸出腳位。

Line7~13:建立7種顏色,參數順序為R>>G>>B。

Line14:將7種顏色組成tuple(元組)。

Line16~21:依顏色順序每0.1秒點亮一顆LED燈,點滿四顆後更換顏色,重複循環,使用ws2812b物件的set_pixel方法控制LED燈顏色,參數1為要控制的LED燈編號(由0開始),參數2~4分別為RGB三色;使用ws2812b物件的show方法點亮LED。

(十)OLED顯示螢幕實作 使用OLED顯示螢幕顯示溫溼度資料。

將OLED顯示螢幕接到擴展板I2C0,SHT31溫溼度模組接到擴展板I2C1。

開啟「libs/ssd1306.py」驅動程式,並另存到Pico內(作法同「(八)溫溼度感測器模組」)。

開啟範例「example/oled_sht31.py」,並執行。

程式碼解說: Line1~3:引入相關模組,ssd1306模組提供OLED模組相關驅動程式。

Line5~6:定義OLED顯示器寬、高。

Line8:建立OLED用的I2C,編號為0,I2CClock為400KHz。

Line9:建立OLED物件,傳入寬、高及I2C物件。

Line14~26:將讀取到的溫濕度資料顯示在OLED上,使用SSD1306物件的fill方法清除整個OLED文字,使用text方法顯示文字,傳入參數為要顯示的文字,列,行。

(十一)伺服馬達實作 使用可調電阻模組控制9G伺服馬達旋轉角度。

將可調電阻模組接到擴展板A0,9G伺服馬達接到擴展板D20,開啟範例「example/servo.py」,並執行。

程式碼解說: Line1:引入相關模組。

Line3:建立ADC物件,使用IO26(A0)。

Line5~6:建立PWM物件,設定工作頻率為50Hz。

Line8~9:建立數值範圍轉換方法,它能將數值轉換到指定範圍。

Line11~13:將讀取到的ADC數值從0~65535轉換成1638~8191,並使用PWM物件的duty_u16方法傳入工作週期以控制servo。

補充說明:此servo型號為SG90,脈沖頻率(PulseFrequency)為50Hz,即一個工作週期為20ms。

角度0度為500us,180度為2500us,轉換為工作週期為2.5%~12.5%,對應PWM物件的duty_u16方法傳入數值範圍為16bit(0~65535),其範圍為1638~8191。

(十二)風扇模組實作 L9110風扇模組可以正轉與反轉,使用可調電阻模組能控制轉速,使用輕觸按鍵模組控制方向。

將可調電阻模組接到擴展板A0,L9110風扇模組接到擴展板D20,輕觸按鍵模組接到擴展板D18。

開啟範例「example/fan.py」,並執行。

程式碼解說: Line1:引入相關模組。

Line3:建立ADC物件作為可調電阻輸入,使用IO26(A0)。

Line5:建立Pin物件作為開關輸入,使用IO18。

Line7~10:建立兩個PWM物件用以控制風扇轉速,A為正轉B為反轉,設定工作頻率為1KHz。

Line12:建立按鈕狀態變數。

Line14~17:檢查按鈕是否被按下一次,並修改state變數狀態,此狀態會決定風扇轉動方向。

Line18~23:依照state變數控制風扇轉動方向,依照可變電阻數值控制風扇轉速。

五、結語 本篇為大家開箱RaspberryPiPico進階套件,並與大家分享套件中基礎的操作,透過文章中的說明能夠了解並熟悉每個模組如何運作及其原理,之後再與大家分享如何使用套件中的模組整合實作出更多有趣的應用,喜歡我們文章的夥伴們,請多多支持與分享喔! 現在就一起Pico吧! 【開箱文】RaspberryPi400介紹與Ubuntu系統安裝 樹莓派RaspberryPi系列文章 circus模組系列文章 關注iCShop LINE@icshop 訂閱iCChannel 追蹤CIRCUSPi RaspberryPi400是一款將4GBRAMRaspberryPi4開發板整合至迷你鍵盤的產品。

這項新設計讓使用者省去將單板電腦設定成一台個人電腦的大部分程序。

只需藉由幾條連接線、一台顯示器和滑鼠,就能夠立即擁有可撰寫程式、瀏覽網站並且享受4K媒體串流的基本桌上型電腦。

在上一篇文章,我們瞭解PiPico搭配Grove擴展板以及各種感測器模組,如何使用及運作,但因為缺少網路相關模組所以無法將蒐集到的資料上傳雲端,這次我們將會使用NBIoT模組AM7020來充當網路模組的角色,將蒐集到的資料上傳雲端,完成一個簡易的雲端溫溼度監測站。

本篇要帶大家一起來開箱樹莓派RaspberryPi4B專屬的散熱外殼「ARGONONE鋁合金外殼」,文章中會介紹這個商品的內容物、規格、組裝步驟與散熱溫度實測。

本文介紹關於Logyun連雲新增「MQTT訂閱多個Topic」、「LINENotify」、「IFTTT」三項功能,並且針對不同的主控板與語言所展示的教學範例,希望透過這次新增加的功能,可以幫助到更多想要快速搭建IoT應用的使用者。

●教學教具●●技術文章● 文章導航 Previouspost Arduino聲音及警報器專案-無源蜂鳴器模組(附範例程式) Backtopostlist Nextpost 運用Pixetto視覺感測器製作辨色LED燈(ArduinoUNO) Search



請為這篇文章評分?