Arduino-Pico
แกน Raspberry Pi Pico Arduino สำหรับบอร์ด RP2040 และ RP2350 ทั้งหมด
นี่คือพอร์ตของ Arduino ไปยัง RP2040 (โปรเซสเซอร์ Raspberry Pi Pico) และ RP2350 (โปรเซสเซอร์ Raspberry Pi Pico 2) ใช้ Raspberry Pi Pico SDK เปลือยและชุดเครื่องมือ GCC 14.2/Newlib 4.3 แบบกำหนดเอง และรองรับคอร์ ARM และ RISC-V
เอกสารประกอบ
ดู https://arduino-pico.readthedocs.io/en/latest/ พร้อมด้วยตัวอย่างสำหรับข้อมูลการใช้งานโดยละเอียดเพิ่มเติม
มีส่วนร่วม
อ่านคู่มือการสนับสนุนสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการส่งคำขอดึงและการย้ายไลบรารีหรือภาพร่างไปยังแกนหลักนี้
บอร์ดที่รองรับ
- ราสเบอร์รี่ Pi Pico
- ราสเบอร์รี่ Pi Pico W
- ราสเบอร์รี่ Pi Pico2
- 0xCB เฮลิออส
- อดาฟรุ๊ต เฟเธอร์ RP2040
- Adafruit Feather RP2040 ราศีพิจิก
- อดาฟรุต อิตซี่บิทซี่ RP2040
- อดาฟรุ๊ต KB2040
- Adafruit Macropad RP2040
- อดาฟรุ๊ต เมโทร RP2040
- อดาฟรุต QTPy RP2040
- Adafruit STEMMA Friend RP2040
- Adafruit Trinkey RP2040 QT
- แอมเคน บันนี่
- อัมเคน เรเวลอป
- แอมเคน รีเวลอป พลัส
- แอมเคน Revelop eS
- Architeuthis Flux Jumperless
- Architeuthis Flux Jumperless V5
- เชื่อมต่อ Arduino นาโน RP2040
- ArtronShop RP2 นาโน
- ราสเบอร์รี่แท่งขนมปัง
- BridgeTek IDM2040-7A
- BridgeTek IDM2040-43A
- ตัวควบคุม Cytron IRIV IO
- Cytron Maker Pi RP2040
- ไซตรอน เมกเกอร์ นาโน RP2040
- Cytron Maker Uno RP2040
- ไซตรอน โมชั่น 2350 โปร
- ข้อมูลเสียง PicoADK v1
- ข้อมูลเสียง PicoADK v2 (RP2350)
- เดกซ์ ซุยโบ RP2040
- DeRuiLab FlyBoard2040 Core
- DFRobot ด้วง RP2040
- ElectronicCats นักล่าแมว NFC
- อีวีเอ็น อัลฟ่า
- เอ็กซ์ตรีมอิเล็กทรอนิกส์ RC2040
- GroundStudio หินอ่อน Pico
- Invector Labs ชาเลนเจอร์ RP2040 WiFi
- Invector Labs ชาเลนเจอร์ RP2040 WiFi/BLE
- Invector Labs ชาเลนเจอร์ RP2040 WiFi6/BLE
- Invector Labs ชาเลนเจอร์ NB RP2040 WiFi
- Invector Labs ชาเลนเจอร์ RP2040 LTE
- Invector Labs ชาเลนเจอร์ RP2040 LoRa
- Invector Labs ชาเลนเจอร์ RP2040 SubGHz
- Invector Labs ชาเลนเจอร์ RP2040 SD/RTC
- Invector Labs ชาเลนเจอร์ RP2040 UWB
- Invector Labs ชาเลนเจอร์ RP2350 BConnect
- Invector Labs Challenger RP2350 WiFi/BLE
- อินเวคเตอร์แล็บ RPICO32
- เมโลเปโร คุกกี้ RP2040
- เมโลเปโร เชค RP2040
- METE HOCA อัคนะ R1
- Neko Systems BL2040 มินิ
- โอลิเม็กซ์ RP2040-Pico30
- นิวซาน อาร์ชี
- nullbits Bit-C PRO
- ปิโมโรนี่ พีจีเอ2040
- พิโมโรนี พิโก พลัส 2
- ปิโมโรนี่ พิโค พลัส 2W
- ปิโมโรนี พลาสมา2040
- ปิโมโรนี ไทนี่2040
- พิโมโรนี่ ไทนี่2350
- พินโทรนิกซ์ พินแม็กซ์
- รักไร้สาย RAK11300
- เรดสคอร์ป RP2040-Eins
- Redscorp RP2040-ProMini
- ซี-พิโคร
- ตัวบ่งชี้เมล็ดพันธุ์ RP2040
- ดู XIAO RP2040
- ดู XIAO RP2350
- ซิลิกอนนิชั่น RP2040-ชิม
- แสตมป์ Solder Party RP2040
- แสตมป์ Solder Party RP2350
- Solder Party RP2350 แสตมป์ XL
- SparkFun ไมโครม็อด RP2040
- SparkFun Pro Micro RP2040
- สปาร์กฟัน โปรไมโคร RP2350
- SparkFun Thing พลัส RP2040
- SparkFun Thing Plus RP2350
- uPesy RP2040 DevKit
- VCC-GND YD-RP2040
- วิยาลาบ มิซู RP2040
- Waveshare RP2040 ซีโร่
- Waveshare RP2040 หนึ่ง
- เวฟแชร์ RP2040 พลัส
- เวฟแชร์ RP2040 จอแอลซีดี 0.96
- เวฟแชร์ RP2040 จอแอลซีดี 1.28
- เมทริกซ์ Waveshare RP2040
- Waveshare RP2040 PiZero
- WIZnet W5100S-EVB-พิโก
- WIZnet W5100S-EVB-Pico2
- WIZnet W5500-EVB-พิโก
- WIZnet W5500-EVB-Pico2
- WIZnet W55RP20-EVB-พิโก
- WIZnet WizFi360-EVB-พิโก
- ทั่วไป RP2040 (แฟลชที่กำหนดค่าได้, พิน I/O)
- ทั่วไป RP2350 (แฟลชที่กำหนดค่าได้, พิน I/O)
คุณสมบัติ
- Adafruit TinyUSB Arduino (เมาส์ USB, คีย์บอร์ด, แฟลชไดรฟ์, HID ทั่วไป, อนุกรม CDC, MIDI, WebUSB และอื่นๆ)
- Bluetooth บน PicoW (Classic และ BLE) พร้อมคีย์บอร์ด เมาส์ จอยสติ๊ก และ Virtual Serial
- โหมดหลัก Bluetooth Classic และ BLE HID (เชื่อมต่อกับแป้นพิมพ์ BT เมาส์หรือจอยสติ๊ก)
- การจำลอง Arduino USB Serial, คีย์บอร์ด, จอยสติ๊กและเมาส์ทั่วไป
- WiFi (Pico W, ESPHost ที่ใช้ ESP32, Atmel WINC1500)
- อีเธอร์เน็ต (แบบมีสาย WizNet W6100, WizNet W5500, WizNet W5100, ENC28J60)
- ไคลเอนต์ HTTP และเซิร์ฟเวอร์ (เว็บเซิร์ฟเวอร์)
- SSL/TLS/HTTPS
- การอัพเกรดแบบ Over-the-Air (OTA)
- ระบบไฟล์ (LittleFS และ SD/SDFS)
- รองรับมัลติคอร์ (setup1() และ loop1())
- รองรับ FreeRTOS SMP
- การโอเวอร์คล็อกและการโอเวอร์คล็อกจากเมนู
- digitalWrite/อ่าน, ShiftIn/Out, โทน, AnalogWrite(PWM)/อ่าน, อุณหภูมิ
- เสียงสเตอริโอแบบอะนาล็อกโดยใช้ DMA และ ADC ในตัว
- เสียงสเตอริโอแบบอะนาล็อกออกโดยใช้ฮาร์ดแวร์ PWM
- แหล่งกำเนิดเสียง Bluetooth A2DP (เอาต์พุต) และ sink (อินพุต) บน PicoW
- โหมดไดรฟ์ USB สำหรับเครื่องบันทึกข้อมูล (SingleFileDrive, FatFSUSB)
- อุปกรณ์ต่อพ่วง: SPI master/slave, Wire(I2C) master/slave, dual UART, EEPROM ที่จำลอง, อินพุต/เอาต์พุตเสียง I2S, เซอร์โว
- เอาต์พุต printf (เช่น debug) ผ่านอนุกรม USB
- การใช้ PSRAM globals และฮีปอย่างโปร่งใส (RP2350 เท่านั้น)
- รองรับ ARM หรือ RISC-V (Hazard3) สำหรับ RP2350
เครื่องสถานะ PIO RP2040 (SM) ใช้เพื่อสร้างการปราศจากการกระวนกระวายใจ:
- เซอร์โว
- โทนเสียง
- อินพุต I2S
- เอาต์พุต I2S
- ซอฟต์แวร์ UART (พอร์ตอนุกรม)
การติดตั้งผ่าน Arduino Boards Manager
หมายเหตุเฉพาะ Windows
โปรดอย่าใช้แอปพลิเคชัน Arduino จริงเวอร์ชัน Windows Store เนื่องจากมีปัญหาในการตรวจจับบอร์ด Pico ที่ต่ออยู่ ใช้ไฟล์ปฏิบัติการ "Windows ZIP" หรือ "Windows" ธรรมดา (EXE) ดาวน์โหลดได้โดยตรงจาก https://arduino.cc และอนุญาตให้ติดตั้งไดรเวอร์อุปกรณ์ตามที่แนะนำ มิฉะนั้นอาจตรวจไม่พบบอร์ด Pico นอกจากนี้ หากลองใช้ Arduino เบต้า 2.0 โปรดติดตั้งเวอร์ชัน 1.8 ล่วงหน้าเพื่อให้แน่ใจว่ามีไดรเวอร์อุปกรณ์ที่จำเป็นอยู่ (ดู #20 สำหรับรายละเอียดเพิ่มเติม)
หมายเหตุเฉพาะ Linux
การติดตั้ง Arduino โดยใช้ flatpak (มักใช้โดย "App Stores" ใน Linux รุ่นต่างๆ) หมายความว่ามีการจำกัดการเข้าถึงโฮสต์ ซึ่งอาจทำให้การอัปโหลดล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดดังต่อไปนี้:
Scanning for RP2040 devices
...
No drive to deploy.
หากคุณพบสิ่งนี้ คุณจะต้องติดตั้ง Arduino ในลักษณะอื่น หรือแทนที่คุณสมบัติแซนด์บ็อกซ์ flatpak โดยใช้คำสั่งต่อไปนี้ จากนั้นรีสตาร์ท Arduino
flatpak override --user --filesystem=host:ro cc.arduino.IDE2
การติดตั้ง
เปิด Arduino IDE แล้วไปที่ File->Preferences
ในกล่องโต้ตอบที่ปรากฏขึ้น ให้ป้อน URL ต่อไปนี้ในช่อง "URL ผู้จัดการบอร์ดเพิ่มเติม":
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json
กดตกลงเพื่อปิดกล่องโต้ตอบ
ไปที่เครื่องมือ -> บอร์ด -> ตัวจัดการบอร์ดใน IDE
พิมพ์ "pico" ในช่องค้นหาและเลือก "เพิ่ม":
การติดตั้งผ่าน GIT
ผู้ใช้ Windows: ก่อนที่จะติดตั้งผ่าน git
บน Windows โปรดอ่านและปฏิบัติตามคำแนะนำในลิงค์นี้ หากไม่ได้เปิดใช้งานเส้นทางแบบยาวของ Win32 และไม่ได้กำหนดค่า git
ให้ใช้งาน อาจมีข้อผิดพลาดเมื่อพยายามโคลนโมดูลย่อย
วิธีติดตั้งผ่าน GIT (สำหรับเวอร์ชันล่าสุดและยิ่งใหญ่ที่สุด):
mkdir -p ~/Arduino/hardware/pico
git clone https://github.com/earlephilhower/arduino-pico.git ~/Arduino/hardware/pico/rp2040
cd ~/Arduino/hardware/pico/rp2040
git submodule update --init
cd pico-sdk
git submodule update --init
cd ../tools
python3 ./get.py
กำลังอัปโหลดภาพร่าง
หากต้องการอัปโหลดภาพร่างแรก คุณจะต้องกดปุ่ม BOOTSEL ค้างไว้ขณะเสียบ Pico เข้ากับคอมพิวเตอร์ของคุณ จากนั้นกดปุ่มอัปโหลด จากนั้นร่างควรจะถูกถ่ายโอนและเริ่มทำงาน
หลังจากการอัปโหลดครั้งแรก สิ่งนี้ไม่จำเป็น เนื่องจากแกน arduino-pico
มีการรองรับการรีเซ็ตอัตโนมัติ เลือกพอร์ตอนุกรมที่เหมาะสมที่แสดงในเมนูเครื่องมือ Arduino->พอร์ต->พอร์ตอนุกรมหนึ่งครั้ง (การตั้งค่านี้จะติดอยู่และไม่จำเป็นต้องแตะเพื่ออัปโหลดหลายครั้ง) การเลือกนี้ทำให้เครื่องมือรีเซ็ตอัตโนมัติสามารถระบุอุปกรณ์ที่เหมาะสมในการรีเซ็ตได้ พวกเขากดปุ่มอัปโหลด และร่างของคุณควรอัปโหลดและเรียกใช้
ในบางกรณี Pico จะประสบปัญหาการแฮงค์อย่างหนักและพอร์ต USB จะไม่ตอบสนองต่อคำขอรีเซ็ตอัตโนมัติ หากสิ่งนี้เกิดขึ้น เพียงทำตามขั้นตอนเริ่มต้นโดยกดปุ่ม BOOTSEL ค้างไว้ขณะเสียบปลั๊ก Pico เพื่อเข้าสู่ ROM bootloader
การอัพโหลดอิมเมจระบบไฟล์
ระบบไฟล์แฟลชออนบอร์ดสำหรับ Pico, LittleFS ช่วยให้คุณสามารถอัปโหลดภาพระบบไฟล์จากไดเร็กทอรีสเก็ตช์เพื่อให้สเก็ตช์ของคุณใช้ ดาวน์โหลดปลั๊กอินที่จำเป็นจาก
- https://github.com/earlephilhower/arduino-pico-littlefs-plugin/releases
หากต้องการติดตั้งให้ทำตามคำแนะนำใน
- https://github.com/earlephilhower/arduino-pico-littlefs-plugin/blob/master/README.md
สำหรับข้อมูลการใช้งานโดยละเอียด โปรดตรวจสอบเอกสาร repo ESP8266 (ละเว้นหมายเหตุที่เกี่ยวข้องกับ SPIFFS) ที่
- https://arduino-pico.readthedocs.io/en/latest/fs.html
การอัปโหลดภาพร่างด้วย Picoprobe/Debugprobe
หากคุณสร้าง Raspberry Pi Picoprobe คุณสามารถใช้ OpenOCD เพื่อจัดการการอัพโหลดภาพร่างของคุณและสำหรับการดีบักด้วย GDB
ภายใต้ Windows ผู้ใช้ที่เป็นผู้ดูแลระบบภายในควรสามารถเข้าถึงพอร์ต Picoprobe ได้โดยอัตโนมัติ แต่ภายใต้ Linux udev
จะต้องได้รับแจ้งเกี่ยวกับอุปกรณ์และเพื่อให้ผู้ใช้ทั่วไปเข้าถึงได้
วิธีตั้งค่าการเข้าถึงระดับผู้ใช้ไปยัง Picoprobes บน Ubuntu (และระบบปฏิบัติการอื่น ๆ ที่ใช้ udev
):
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="0004", MODE="660", GROUP-"plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000a", MODE="660", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="2e8a", ATTRS{idProduct}=="000f", MODE="660", GROUP="plugdev"' | sudo tee -a /etc/udev/rules.d/98-PicoProbe.rules
sudo udevadm control --reload
sudo udevadm trigger -w -s usb
บรรทัดแรกสร้างไฟล์อุปกรณ์ใน /dev
ที่ตรงกับผู้จำหน่าย USB และ ID ผลิตภัณฑ์ของ Picoprobe และเปิดใช้งานสิทธิ์การอ่าน+เขียนทั่วโลก บรรทัดที่สองทำให้ udev
โหลดกฎใหม่นี้ บรรทัดที่สามขอให้เคอร์เนลสร้างเหตุการณ์ "การเปลี่ยนแปลงอุปกรณ์" ซึ่งจะทำให้กฎ udev
ใหม่ของเราทำงาน
หากไฟล์อุปกรณ์ไม่ปรากฏขึ้นด้วยเหตุผลบางประการ ให้ถอดปลั๊กและเสียบการเชื่อมต่อ USB ใหม่ด้วยตนเอง แล้วตรวจสอบอีกครั้ง เอาต์พุตจาก dmesg
สามารถเปิดเผยการวินิจฉัยที่เป็นประโยชน์ได้หากไม่มีไฟล์อุปกรณ์
เมื่อตั้งค่าการอนุญาต Picoprobe อย่างถูกต้องแล้ว ให้เลือกบอร์ด "Raspberry Pi Pico (Picoprobe)" ในเมนูเครื่องมือแล้วอัปโหลดตามปกติ
การดีบักด้วย Picoprobe, OpenOCD และ GDB
เครื่องมือที่ติดตั้งประกอบด้วยเวอร์ชันของ OpenOCD (ในไดเร็กทอรี pqt-openocd) และ GDB (ในไดเร็กทอรี pqt-gcc) สิ่งเหล่านี้อาจใช้เพื่อเรียกใช้ GDB ในหน้าต่างแบบโต้ตอบตามที่ระบุไว้ในคู่มือการเริ่มต้นใช้งาน Pico จากมูลนิธิ Raspberry Pi ใช้บรรทัดคำสั่ง ./system/openocd/bin/openocd -f ./lib/rp2040/picoprobe_cmsis_dap.tcl
หรือ ./system/openocd/bin/openocd -f ./lib/rp2350/picoprobe_cmsis_dap.tcl
จากไดเร็กทอรีการติดตั้ง git
.
ใบอนุญาตและเครดิต
- Arduino IDE และ ArduinoCore-API ได้รับการพัฒนาและดูแลโดยทีมงาน Arduino IDE ได้รับอนุญาตภายใต้ GPL
- Toolchain ที่ใช้ RP2040 GCC ได้รับอนุญาตภายใต้ GPL
- Pico-SDK ดำเนินการโดย Raspberry Pi (Trading) Ltd และได้รับอนุญาตภายใต้ใบอนุญาต BSD 3-Clause
- ไฟล์หลักของ Arduino-Pico ได้รับอนุญาตภายใต้ LGPL
- ไลบรารี LittleFS เขียนโดย ARM Limited และเผยแพร่ภายใต้ลิขสิทธิ์ BSD 3-clause
- UF2CONV.PY ดำเนินการโดย Microsoft Corporation และได้รับอนุญาตภายใต้ใบอนุญาต MIT
- รหัสเครือข่ายและระบบไฟล์ที่นำมาจาก ESP8266 Arduino Core และได้รับอนุญาตภายใต้ LGPL
- เซิร์ฟเวอร์ DHCP สำหรับโหมดโฮสต์ AP จากโครงการ Micropython ซึ่งเผยแพร่ภายใต้ใบอนุญาต MIT
- FreeRTOS เป็นลิขสิทธิ์ของ Amazon.com, Inc. หรือบริษัทในเครือ และเผยแพร่ภายใต้ใบอนุญาต MIT
- lwIP คือ (c) สถาบันวิทยาศาสตร์คอมพิวเตอร์แห่งสวีเดน และได้รับอนุญาตภายใต้ใบอนุญาต BSD
- ห้องสมุด BearSSL ที่เขียนโดย Thomas Pornin เผยแพร่ภายใต้ใบอนุญาต MIT
- UZLib เป็นลิขสิทธิ์ (c) 2003 Joergen Ibsen และเผยแพร่ภายใต้ใบอนุญาต zlib
- LEAmDNS เป็นผู้เขียนลิขสิทธิ์หลายรายและเผยแพร่ภายใต้ใบอนุญาต MIT
- http-parser เป็นลิขสิทธิ์ของ Joyent, Inc. และผู้มีส่วนร่วมใน Node อื่นๆ
- รหัสเว็บเซิร์ฟเวอร์ดัดแปลงจากเว็บเซิร์ฟเวอร์ ESP32 และเป็นลิขสิทธิ์ (c) 2015 Ivan Grokhotkov และอื่นๆ
- Xoshiro-cpp เป็นลิขสิทธิ์ (c) 2020 Ryo Suzuki และเผยแพร่ภายใต้ใบอนุญาต MIT
- รหัสระบบไฟล์ระดับต่ำ FatFS เป็นลิขสิทธิ์ (C) 2024, ChaN สงวนลิขสิทธิ์
- ตัวจัดการหน่วยความจำ TLSF สำหรับ PSRAM จาก Espressif fork ต้นฉบับโดย Matthew Conte เป็นลิขสิทธิ์ของ Matthew Conte และได้รับอนุญาตภายใต้ใบอนุญาต MIT
- ไลบรารี ESPHost เป็น LGPL ที่ได้รับอนุญาตจากผู้ดูแล
-เอิร์ล เอฟ. ฟิลฮาวเวอร์, III
[email protected]