# Raspberry Pi pico [參考來源](https://www.raspberrypi.com/documentation/microcontrollers/raspberry-pi-pico.html#raspberry-pi-pico) ## 軟體 * [Thonny](https://thonny.org/)(使用micropython) * 支援更新pico韌體 * [Arduino Lab for micropython](https://labs.arduino.cc/en/labs/micropython) (使用micropython) * [Viusual Studio Code](https://code.visualstudio.com/) * [Arduino IDE](https://www.arduino.cc/en/software) (使用C) ## 硬體 * pico * [Download Fritzing Part for Raspberry Pi Pico](https://datasheets.raspberrypi.com/pico/Pico-R3-Fritzing.fzpz) * [Download the Pinout Diagram ](https://datasheets.raspberrypi.com/pico/Pico-R3-A4-Pinout.pdf) * pico w  * [Download Fritzing Part for Rapsberry Pi Pico W](https://datasheets.raspberrypi.com/picow/PicoW-Fritzing.fzpz) * [Download the Pinout Diagram (PDF)](https://datasheets.raspberrypi.com/picow/PicoW-A4-Pinout.pdf) * Resetting Flash memory(重置) * [下載重置用檔案UF2](https://datasheets.raspberrypi.com/soft/flash_nuke.uf2) * 按住BOOTSEL按鈕後,再插入micro usb線,即可啟動為Mass Storage模式,將上述UF2檔案拖曳進該儲存空間後,pico即自動重置 ## Micropython([https://micropython.org/](https://micropython.org/)) * [micro python for rpi pico語法](https://docs.micropython.org/en/latest/rp2/quickref.html) * 恢復支援micropython,下載下列檔案後,如上述按住BOOTSEL按鈕後,再插入micro usb線,即啟動Mass Storage模式,再將下列韌體拖曳進去後即可 * [rp2-pico micropython firmware](https://micropython.org/download/rp2-pico/) * [rp2-pico w micropython firmware](https://micropython.org/download/rp2-pico-w/) # 第一次使用rpi-pico 接上usb時,預設為Mass Storage模式  --- # **Micro python** # 使用Thonny編輯: 使用右下角更新韌體或連線rpi pico w    # Blink ## 使用內建LED(WL_GPIO0) [參考來源3.4節](https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf) ``` import machine import time led=machine.Pin("LED",machine.Pin.OUT) #使用板子上內建的LED(WL_GPIO0) while True: led.off() time.sleep(1) led.on() time.sleep(1) ``` ## 使用arduino IDE  ## 使用GPIO14,外接LED ``` from machine import Pin import time led=Pin(14,Pin.OUT) #使用gpio 14 while True: led.value(1) time.sleep(1) led.value(0) time.sleep(1) ``` ## PWM(使用GPIO14) ``` import time from machine import Pin, PWM pwm=PWM(Pin(14)) #建立pwm於GPIO14 pwm.freq(1000) #設定pwm頻率 duty=0 direction=1 for _ in range(8 *256): #fade in fade out 4次 ; _ in range為不使用變數寫法,如同 for i in range(8*256),這裡需設定一變數i duty+=direction if duty >255: duty=255 direction=-1 elif duty < 0: duty=0 direction=1 pwm.duty_u16(duty * duty) time.sleep(0.001) # fade速度 ``` ## 連接WiFi [參考來源1](https://datasheets.raspberrypi.com/picow/connecting-to-the-internet-with-pico-w.pdf) [參考來源2](https://docs.micropython.org/en/latest/library/network.WLAN.html) ``` import network import time ssid='DAP3690-24' # Wifi SSID 名稱 password='' # Wifi 密碼 wlan=network.WLAN(network.STA_IF) #設定enable station interface and connect to WiFi access point wlan.active(True) wlan.connect(ssid,password) max_wait=10 # wait for connect or fail while max_wait > 0 : if wlan.status() < 0 or wlan.status() >= 3: break max_wait -= 1 print('Wait for connection...') time.sleep(1) if wlan.status() !=3 : #Handle onnection error raise RuntimeError('Network connect failed!') else: print('Connected!') status=wlan.ifconfig() print('IP Address=' + status[0]) print('Netmask=' + status[1]) print('Gateway=' + status[2]) print('DNS=' + status[3]) ``` # **===========** --- # **C/C++** # 使用arduino IDE作為編輯器時: * 設定環境 * 於Preferences Additional boards manager URL填https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json   1. 開啟arduino IDE  2. 選擇開發版(這裡使用pico W)  3. 選擇連接埠(第一次顯示UF2 Board)  4. 按下upload  5. 完成韌體變更後,即可看到com port出現,之後即可使用arduino IDE編撰。 6. 需要回復為micro python編譯環境,則再使用上面Restting flash memory方式,利用flash_nuke.uf2重置,再更新micro python韌體即可。 # pico連線WiFi(與ESP32-s寫法一樣) ``` #include <WiFi.h> char ssid[] = " "; //wifi SSID char passwd[] = " "; //wifi passwd void setup() { Serial.begin(115200); WifiConnecte(); //Wifi開始連線 } void loop() { } void WifiConnecte() { int connect_count=0; //宣告嘗試連線次數=0 WiFi.begin(ssid,passwd); Serial.print("等待連線"); while (WiFi.status() != WL_CONNECTED) { delay(200); Serial.print(".."); //等待連線中 delay(100); if(connect_count++ >= 10) { watchdog_reboot(0,0,10); //如果嘗試連線次數累加至10次,則重新開機 } } Serial.println("Wifi連線成功"); Serial.print("IP Address:"); Serial.println(WiFi.localIP()); } ``` # 使用DHT11 DHT11資料pin接至gpio15 使用 dht sensor for Adafruit ``` #include "DHT.h" #define DHTPIN 15 // 將DHT11 DATA連接的引腳 #define DHTTYPE DHT11 // DHT 11 DHT dht(DHTPIN, DHTTYPE); void setup() { Serial.begin(9600); dht.begin(); } void loop() { delay(2000); float humidity = dht.readHumidity(); float temperature = dht.readTemperature(); if (isnan(humidity) || isnan(temperature)) { Serial.println("無法從DHT11感測器讀取數據!"); return; } Serial.print("溫度: "); Serial.print(temperature); Serial.print(" *C\t濕度: "); Serial.print(humidity); Serial.println(" %"); } ```
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.