Getting Started with the Raspberry Pi Pico Microcontroller and Arduino IDE [EP1]

บอร์ดควบคุม Raspberry Pi Pico คือบอร์ดพัฒนาที่ใช้ไมโครคอนโทรลเลอร์มาออกแบบ โดย Raspberry Pi (ชิป RP2040 หรือ RP2350) ต่างจากบอร์ด Raspberry Pi รุ่นทั่วไปตรงที่ Pico ไม่ได้รันระบบปฏิบัติการ Linux และไม่รองรับสื่อบันทึกข้อมูลภายนอก (เช่น MicroSD Card) แต่จะทำงานโดยการเขียน/แฟลชไฟล์ไบนารี (Binary) ลงในหน่วยความจำ Flash บนบอร์ดโดยตรง สามารถเขียนโปรแกรมสั่งงานได้ด้วยภาษา MicroPython, C และ C++
เจนเนอเรชันและรุ่นย่อย (Generations & Variants) ในตระกูล Raspberry Pi Pico แบ่งออกเป็น 2 เจนเนอเรชันหลัก คือ
- Raspberry Pi Pico (Pico 1) ใช้ชิปไมโครคอนโทรลเลอร์ RP2040
- Raspberry Pi Pico 2 ใช้ชิปไมโครคอนโทรลเลอร์ RP2350
สำหรับในแต่ละเจนเนอเรชันจะมีรุ่นย่อยอีก 4 รูปแบบ โดยมีความแตกต่างหลักๆ ในเรื่อง การเชื่อมต่อไร้สาย และการบัดกรีขา Pin Header

| ชื่อรุ่น | เชื่อมต่อไร้สาย (Wi-Fi/Bluetooth) | ขา Pin Header บัดกรีสำเร็จ |
| Raspberry Pi Pico / Pico 2 | ✗ | ✗ (ขอบหยักสำหรับบัดกรีลงบอร์ด) |
| Raspberry Pi Pico H / Pico 2 H | ✗ | ✓ (บัดกรีขามาจากโรงงาน) |
| Raspberry Pi Pico W / Pico 2 W | ✓ | ✗ |
| Raspberry Pi Pico WH / Pico 2 WH | ✓ | ✓ (บัดกรีขามาจากโรงงาน) |
รหัส H หมายถึงรุ่นที่เพิ่มขาเสียบ (Header Pins) บัดกรีมาให้พร้อมใช้งานทันที
คุณสมบัติหลักทางเทคนิค (Key Features)
1. รายละเอียดของชิปไมโครคอนโทรลเลอร์ RP2040
- หน่วยประมวลผล Dual-core ARM Cortex-M0+ ปรับความถี่นาฬิกาได้สูงสุด 133 MHz
- หน่วยความจำภายใน (SRAM) ขนาด 264 KB
- ระบบเชื่อมต่อ USB USB 1.1 Controller และ PHY ในตัว (รองรับทั้งโหมด Device และ Host)
- การประหยัดพลังงาน รองรับโหมด Low-power แบบ Sleep และ Dormant
- ระบบเวลา วงจรนาฬิกา (Clock) และตัวจับเวลา (Timer) ความแม่นยำสูง
- การคำนวณทางคณิตศาสตร์ มี Accelerated Floating-point Libraries ในตัว ช่วยเร่งความเร็วการคำนวณทศนิยม
- เซนเซอร์ มีเซนเซอร์วัดอุณหภูมิ (Temperature Sensor) ภายในตัวชิป
- Programmable I/O (PIO) มี State Machine สำหรับ PIO จำนวน 8 ชุด สามารถเขียนโปรแกรมควบคุมขาทรานซีฟเวอร์ความเร็วสูงได้เองอย่างอิสระ (ช่วยจำลองโปรโตคอลฮาร์ดแวร์ เช่น VGA หรือการอ่านการ์ด SD โดยไม่ดึงภาระ CPU)
2. คุณสมบัติบนตัวบอร์ด (Board Features)
- การลงโปรแกรม รองรับการลงโปรแกรมแบบ Drag-and-Drop ผ่านโหมด Mass Storage เมื่อต่อเข้ากับ USB
- หน่วยความจำ Flash ภายนอกชิป ติดตั้ง Flash Memory ขนาด 2 MB บนบอร์ด
- ขาใช้งาน GPIO มีขา GPIO มัลติฟังก์ชันรวม 26 ขา
- พอร์ต Debug มีขั้วต่ออินเทอร์เฟซ Serial Wire Debug (SWD)
3. อินเทอร์เฟซอุปกรณ์ต่อพ่วง (Peripheral Interfaces)
- SPI จำนวน 2 ช่อง
- I2C จำนวน 2 ช่อง
- UART จำนวน 2 ช่อง
- ADC (Analog-to-Digital Converter) 3 ขา (ความละเอียด 12-bit)
- PWM (Pulse Width Modulation) 16 ช่องสัญญาณ

ในส่วน Raspberry Pi ได้จัดทำเอกสารและแจกจ่ายไฟล์ออกแบบฮาร์ดแวร์แบบ Open-source (เปิดเผยต่อสาธารณะโดยไม่มีข้อจำกัด) เพื่อให้นักพัฒนานำไปใช้งาน คัดลอก หรือดัดแปลงได้อย่างอิสระคือ
เอกสารทางเทคนิค (Datasheets & Manuals)
- RP2040 Datasheet คู่มือและสเปกอย่างละเอียดของชิป RP2040
- Raspberry Pi Pico Datasheet คู่มือทางเทคนิคและวงจรของบอร์ด Pico (RP2040)
- Hardware design with RP2040 คู่มือคำแนะนำการนำชิป RP2040 ไปออกแบบบอร์ด PCB และสร้างผลิตภัณฑ์เอง
- Getting started with Raspberry Pi Pico-series microcontrollers คู่มือเริ่มต้นพัฒนาโปรแกรมด้วยภาษา C/C++ บนตระกูล Pico
ไฟล์สำหรับการออกแบบฮาร์ดแวร์ (Hardware Design Files)
- Design files (Cadence Allegro) ไฟล์ออกแบบแผงวงจร PCB สำหรับใช้ศึกษาหรือนำไปสั่งผลิตบอร์ดซ้ำ
- STEP file ไฟล์โมเดล CAD 3 มิติ สำหรับนำไปใช้ออกแบบเคส โครงสร้าง หรือชิ้นส่วนทางกลศาสตร์
- Fritzing parts ไฟล์โมเดลชิ้นส่วนสำหรับใช้ในโปรแกรมวาดวงจร Fritzing (มีแยกไฟล์สำหรับรุ่น Pico และ Pico H)
โปรแกรมพัฒนาร่วมกับบอร์ดไมโครคอนโทรลลเอร์ Raspberry Pi Pico จะใช้งานได้ 2 แบบคือ ภาษาไพธอน (Python) และภาษาซี (C/C++) ซึ่งภาษาไพธอนจะใช้ MicroPython โดยการนำภาษาโปรแกรม Python 3 มาใช้งานอย่างเต็มรูปแบบ โดยสามารถทำงานได้โดยตรงบนฮาร์ดแวร์แบบฝังตัว (embedded hardware) โดยเฉพาะ Raspberry Pi Pico ผู้ใช้สามารถใช้งานอินเทอร์เฟซแบบโต้ตอบ (REPL) เพื่อสั่งการและรันคำสั่งได้ทันทีผ่านการเชื่อมต่อ USB Serial อีกทั้งยังมีระบบจัดการไฟล์ (filesystem) มาให้ในตัว นอกจากนี้ MicroPython เวอร์ชันสำหรับ Pico ยังมาพร้อมกับโมดูลที่ช่วยให้สามารถเข้าถึงและควบคุมฮาร์ดแวร์ที่จำเพาะต่อตัวชิปได้อีกด้วย


นอกจากนี้ Raspberry Pi Pico สามารถใช้งานร่วมกับ Arduino IDE ได้อย่างสมบูรณ์แบบ ทั้งนี้ผู้ที่เคยพัฒนาบอร์ดควบคุมในกลุ่ม Arduino สามารถติดตั้งไลบารี่ (Library) ก็สามารถใช้งานได้ทันที โดยชิปประมวลผล RP2040 (หรือ RP2350 ในรุ่นใหม่) รองรับภาษา C/C++ และคำสั่งมาตรฐานของ Arduino ทั้งหมด สำหรับในการใช้งานครั้งแรกจะต้องอัปโหลดโค้ดผ่าน โหมด BOOTSEL เพื่อให้คอมพิวเตอร์มองเห็นบอร์ดก่อนด้วยการกดสวิตช์ BOOTSEL ดังรูปที่ 5 ก่อน จากนั้นเสียบบอร์ด Raspberry Pi Pico เข้ากับคอมพิวเตอร์

เสร็จแล้วให้เปิดโปรแกรม Arduino IDE ขึ้น จากนั้นไปที่เมนู Tools > Board > Boards Manager ดังแสดงในรูปที่ 6 ในกาารติดตั้งบอร์ดสำหรับ Raspberry Pi Pico



ในรูปที่ 6 ถึงรูปที่ 8 แสดงขั้นตอนการติดตั้งบอร์ดสำหรับ Raspberry Pi Pico, การค้นหาบอร์ด Raspberry Pi Pico และการเลือกใช้งานบอร์ด Raspberry Pi Pico หลังติดตั้งเสร็จ สำหรับโปรแกรม Arduino IDE ซึ่งจะมีขั้นตอนและลักษณะในการติดตั้งเหมือนกับบอร์ดทั่วไป
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(LED_BUILTIN, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(LED_BUILTIN, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(LED_BUILTIN, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

ในรูปที่ 9 เป็นการเลือกพอร์ต COM สำหรับบอร์ด Raspberry Pi Pico โดยไปที่เมนู Tools > Port > Raspberry Pi Pico ให้เลือก COMx (Raspberry Pi Pico) เสร็จแล้วให้ทดลองใช้โปรแกรมไฟกระพริบ (Blink แสดงข้างบน) ให้กับบอร์ดสำหรับเป็นการทดสอบการทำงานเบื้องต้น โดยเมื่อโปรแกรมแล้วจะเห็นแอลอีดีบนบอร์ดกระพริบนั้นเอง
สำหรับบทความการเริ่มต้นใช้งานบอร์ดไมโครคอนโทรลเลอร์ Raspberry Pi Pico นี้ เป็นเนื้อหาแนะนำให้รู้จักบอร์ดไมโครคอนโทรลเลอร์อีกแบบหนึ่งและการใช้งานร่วมกับโปรแกรม Arduino IDE ซึ่งจะนำไปเรียนรู้ฟังก์ชั่นต่างๆ เกี่ยวกับบอร์ดไมโครคอนโทรลเลอร์นี้เพิ่มเติมในตอนต่อไปครับ.
Reference
- https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html
- https://randomnerdtutorials.com/
- https://github.com/micropython/micropython/wiki
- https://pip-assets.raspberrypi.com/categories/610-raspberry-pi-pico/documents/RP-008355-DS-1-raspberry-pi-pico-python-sdk.pdf
- https://projecthub.arduino.cc/angadiameya007/getting-started-with-raspberry-pi-pico-in-arduino-ide-5e13ee
- https://th.cytron.io/p-edu-project-and-innovation-kits-for-pico-w
- https://wokwi.com/pi-pico
- https://thonny.org/
- https://microcontrollerslab.com/raspberry-pi-pico-pinout-features-programming-peripherals/