กลับไปหน้ารวมไฟล์
getting-started-with-raspberry-pi-pico-in-arduino-ide-5e13ee.md

Introduction

เจ้า Raspberry Pi Pico กับ Pico W (ที่ใช้ไมโครคอนโทรลเลอร์ RP2040) นี่แหละน้อง เป็นบอร์ดพัฒนาเทพๆ ราคาเบาๆ ที่รองรับภาษาโปรแกรมหลายตัว ทั้ง MicroPython, CircuitPython และ C/C++ เลยทีเดียว

ในบทเรียนนี้ พี่จะพาน้องไปเซ็ตอัพเจ้า Raspberry Pi Pico/Pico W ให้ใช้กับ Arduino IDE ได้ โดยใช้ไลบรารีจากบุคคลที่สาม (third-party library) รับรองว่าเขียนโค้ดสไตล์ Arduino ลงบอร์ดพวกนี้ได้ชิลๆ

แล้วเราจะเอาไลบรารีนี้มาทดสอบด้วยตัวอย่างง่ายๆ คือให้ไฟ LED บนบอร์ดกระพริบ (Blink) ให้ดูเป็นตัวอย่าง

การเซ็ตอัพนี้ใช้ได้กับ Raspberry Pi Pico 2 และ Pico 2 W (RP2350) ด้วยนะ ตัวใหม่ล่าสุด!

Project Overview

"Pico-Core" นี่มันคือการเปลี่ยนเกมเลยนะเว้ยในวงการ Arduino Raspberry Pi RP2040 นำเสนอฟีเจอร์ทางสถาปัตยกรรมที่แต่ก่อนมีแต่ในไมโครโพรเซสเซอร์ระดับสูง โปรเจกต์นี้จะพาเราไปรู้จักกับการย้ายมาสู่แพลตฟอร์ม Pico โดยเจาะลึกไปที่ Symmetric Multiprocessing (SMP) และเครื่องยนต์สุดล้ำ Programmable I/O (PIO) ด้วยการใช้ Earle Philhower core ที่ถูกปรับแต่งมาแล้ว พวกเราชาวนักพัฒนาก็จะได้ใช้ประสิทธิภาพของ C++ แบบเต็มที่ ในขณะที่ยังใช้ Arduino API แบบที่คุ้นเคยกันอยู่

Steps

Step 1: เตรียม Arduino IDE ให้พร้อม:

ก่อนอื่น ตรวจสอบให้แน่ใจว่าน้องติดตั้ง Arduino IDE เวอร์ชันล่าสุดไว้แล้วนะ

เปิด Arduino IDE ขึ้นมา แล้วไปที่ File > Preferences

ในช่อง "Additional Boards Manager URLs" ให้ใส่ URL นี้ลงไป:

https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Step 2: ติดตั้ง Board Support สำหรับ Raspberry Pi Pico:

ไปที่ Tools > Board > Boards Manager ในหน้าต่าง Boards Manager ให้ค้นหาคำว่า "Raspberry Pi Pico" แล้วติดตั้งแพ็กเกจ "Raspberry Pi Pico/RP2040/RP2350" โดย Earle Philhower

แพ็กเกจนี้รองรับบอร์ดหลายรุ่นเลย ทั้ง Raspberry Pi Pico, Pico W, Pico 2 และ Pico 2 W ทำให้โปรแกรมมันใน Arduino IDE ง่ายมากๆ

ลงลึกกันแบบช่างๆ

  • RP2040 Dual-Core Forensics (สืบสวนกันในระดับแกน):
    • Symmetric Multiprocessing (SMP): ต่างจาก Arduino ทั่วไปที่เราคุ้นเคย Pico ของเรามี ARM Cortex-M0+ อยู่สองแกนแยกกันเลย! โปรเจคนี้จะโชว์ให้เห็นว่าเราจะรันโค้ดบน setup1() กับ loop1() พร้อมๆ กับลูปหลักได้ยังไง เรื่องนี้สำคัญมากถ้าจะเอาไว้ปลดงานหนักๆ ที่กินเวลา (เช่น ส่งข้อมูลผ่าน WiFi หรือเขียนข้อมูลลง SD Card) ไปให้ Core 1 รับผิดชอบ ในขณะที่ Core 0 ยังคงดึงข้อมูลจากเซนเซอร์แบบเรียลไทม์ได้อยู่
    • Inter-Core Communication (FIFO): การส่งข้อมูลระหว่างแกนจะจัดการผ่านฮาร์ดแวร์ FIFO โดยตรง เฟิร์มแวร์ของเราใช้บัฟเฟอร์แบบ "Push/Pull" นี้เพื่อส่งตัวแปรระหว่างสองแกนได้แบบชัวร์ๆ ไม่มีปัญหาเรื่อง race-condition แน่นอน
  • PIO (Programmable I/O) State Machines:
    • Hardware-Accelerated Bit-Banging: Pico ของเรามี PIO state machine อยู่ 8 ตัว เป็นเหมือนโปรเซสเซอร์ย่อยๆ ที่รันโค้ดคล้ายแอสเซมบลีเพื่อจัดการกับโปรโตคอลที่ต้องการความแม่นยำระดับไซเคิล (เช่น ควบคุม LED strip เป็นพันดวง หรือสร้างสัญญาณ VGA) โดยที่ CPU หลักไม่ต้องทำงานเลยสักนิด!
    • Forensic Protocol Offloading: โปรเจคนี้ชี้ให้เห็นว่า PIO คือกุญแจสำคัญในการสร้าง "Deterministic IO" หรือการทำงานของ I/O ที่เวลาถูกควบคุมโดยนาฬิกาฮาร์ดแวร์โดยเฉพาะ แทนที่จะเป็นลูปซอฟต์แวร์
  • UF2 Bootloader & Mass-Storage Logic:
    • The Drag-and-Drop Forensics: RP2040 มีบูตโหลดเดอร์ที่ฝังอยู่ใน ROM ซึ่งรองรับ UF2 (USB Flashing Format) เมื่อกดปุ่ม BOOTSEL ค้างไว้แล้วเสียบ USB Pico จะปรากฏเป็นอุปกรณ์เก็บข้อมูล USB ให้ลากไฟล์ลงไปได้เลย เทคนิคนี้ทำให้เราไม่ต้องพึ่งโปรแกรมเมอร์แบบ JTAG/SWD อีกต่อไป ช่วยให้อัปเดตเฟิร์มแวร์ .uf2 ในสนามได้เร็วปรี๊ด

ขั้นตอนที่ 3: เชื่อมต่อ Pico/Pico W เข้ากับคอมพิวเตอร์

Raspberry Pi Pico/Pico W รองรับการอัปโหลดโค้ดสองวิธี: Serial และ UF2

วิธี Serial โดยทั่วไปจะง่ายและสะดวกกว่า เพราะไม่ต้องกดปุ่ม "BOOTSEL" ทุกครั้ง

เชื่อมต่อผ่าน Serial (วิธีง่ายๆ)

แค่เสียบ Pico/Pico W ของคุณเข้ากับคอมด้วยสาย USB ใน Arduino IDE ให้ไปที่ Tools > Port แล้วเลือกพอร์ต COM ที่ถูกต้อง

เลือกบอร์ด Pico ที่ต้องการใช้ให้ถูกต้อง

เชื่อมต่อผ่าน UF2

ถ้าจำเป็น คุณสามารถเข้าสู่โหมด USB mass storage ได้โดยกดปุ่ม "BOOTSEL" ค้างไว้ขณะเสียบสาย USB การทำนี้จะเปิดตัวเลือกการอัปโหลดแบบ UF2 ใน Arduino IDE บอร์ดจะปรากฏเป็น "UF2 Board" ภายใต้ Tools > Port > UF2conv เลือกตัวเลือกนี้เพื่อเชื่อมต่อกับ Pico/Pico W ในโหมด UF2

ขั้นตอนที่ 4: อัปโหลดโค้ดลง Pico/Pico W

ในการอัปโหลดโค้ดของคุณ สามารถใช้วิธีไหนก็ได้:

วิธี Serial: ตรวจสอบให้แน่ใจว่าเลือกพอร์ต COM ถูกต้องแล้วคลิก Upload ใน Arduino IDE โค้ดจะถูกอัปโหลดโดยตรงโดยไม่ต้องเข้าสู่โหมด USB mass storage ทำให้เป็นตัวเลือกที่เร็วกว่า

วิธี UF2: ถ้าใช้โหมด UF2 ให้เลือก "UF2 Board" เป็นพอร์ตแล้วอัปโหลด หลังอัปโหลดเสร็จ บอร์ดจะตัดการเชื่อมต่อและเชื่อมต่อใหม่บนพอร์ต COM อัตโนมัติ ทำให้สามารถสื่อสารผ่าน Serial Monitor ด้วยอัตราบอดเรตที่กำหนดได้

ไม่ว่าจะใช้วิธีไหน Pico/Pico W จะทำงานเหมือน Arduino ทั่วไปและอนุญาตให้สื่อสารแบบ Serial หลังอัปโหลดโค้ดเสร็จ

วิศวกรรมและการลงมือทำ

  • เลือก Core Driver ยังไงดี:

    • เราใช้ Earle Philhower Arduino Core ซึ่งสร้างบน Raspberry Pi C++ SDK ตัวนี้จัดว่าดีกว่าตัวทางการ (Mbed) เพราะมันซัพพอร์ต PIO ได้ล้ำกว่า โอเวอร์คล็อกแรงได้สูงสุด 250MHz+ และยังมีระบบไฟล์ (LittleFS) ให้ใช้ครบเครื่อง
  • WiFi Telemetry (สำหรับ Pico W):

    • สำหรับรุ่น Pico W เนี่ย ตัว core นี้จะช่วยเชื่อม CYW43439 ไวร์เลสชิปเข้ากับ Arduino WiFi library ให้เรา มันจะโชว์ให้เห็นวิธีรัน TCP/IP stack บน Core 1 แบบไม่หยุด ขณะที่ลอจิกควบคุมหุ่นยนต์ของเรายังคงทำงานต่อบน Core 0 ได้ปกติ ไม่มีสะดุด
  • เตรียมตัวสู่ RP2350 (Pico 2):

    • โปรเจคนี้ยังมีไกด์ล่วงหน้าให้เล่นกับ Hazard3 RISC-V cores ที่จะมาใน RP2350 ด้วย รับรองว่าตั้งค่าและลอจิกจะยังคงสม่ำเสมอ เวลาเราเปลี่ยนไปใช้ซิลิคอนรุ่นใหม่ของ Raspberry Pi จะได้ไม่ต้องมานั่งงงใหม่

ตัวอย่างโปรเจค: กระพริบ LED บนบอร์ด

ตอนนี้บอร์ดเราพร้อมแล้ว มาเขียนโปรแกรมกระพริบ LED ง่ายๆ บนบอร์ดกันดีกว่า

เปิด File > Examples > 01.Basics > Blink มันจะเปิดสเก็ตช์ใหม่สำหรับโปรแกรมกระพริบ LED ให้

อัปโหลดโค้ดลงบอร์ดโดยคลิกปุ่ม "Upload" ไฟ LED บนบอร์ดควรจะเริ่มกระพริบแล้วล่ะ

อัปโหลดโค้ดกระพริบไฟ

ข้อดีของ Arduino IDE เมื่อเทียบกับ MicroPython/CircuitPython:

**คุ้นเคยสำหรับชาว Arduino:** ถ้าน้องเคยเล่น Arduino มาก่อน การใช้ Arduino IDE จะรู้สึกเหมือนบ้านตัวเอง เพราะใช้ไลบรารีและฟังก์ชันมาตรฐานเดียวกัน

**มีไลบรารีให้เลือกใช้เยอะกว่า:** Arduino มีไลบรารีให้เลือกใช้เพียบ สามารถนำมาประกอบในโปรเจคได้ง่าย ทำให้มีความยืดหยุ่นและขยายได้มากกว่าเมื่อเทียบกับระบบของ Python

**ความเร็วและประสิทธิภาพ:** C/C++ (ที่ใช้ใน Arduino) มักจะทำงานได้เร็วกว่าภาษาที่ต้อง interpreter อย่าง MicroPython อยู่แล้ว จัดไปวัยรุ่น!

สรุป

Pico-Core คือรากฐานของ การออกแบบระบบสมองกลฝังตัว ในทศวรรษหน้า ด้วยการเชี่ยวชาญ การประมวลผลแบบ Dual-Core และ การเจาะลึก PIO State Machine นักพัฒนาสามารถสร้างแอปพลิเคชันสมรรถนะสูงที่ไม่ยึดติดโปรโตคอลได้ ซึ่งล้ำหน้ากว่าความสามารถของไมโครคอนโทรลเลอร์ 8-bit แบบดั้งเดิมมาก

สรุปสั้นๆ:

น้องตั้งค่า Raspberry Pi Pico/Pico W ด้วย Arduino IDE สำเร็จแล้ว และก็ทำโปรแกรมกระพริบไฟง่ายๆ ผ่านไปได้ด้วยดี สู้งานนะน้อง!

Arduino IDE ให้สภาพแวดล้อมที่ใช้ง่ายสำหรับคนที่คุ้นเคยกับ Arduino อยู่แล้ว พร้อมทั้งมีไลบรารีให้เลือกใช้มากมายและชุมชนที่ใหญ่โต

ถ้าอยากลองทำอะไรลึกๆ ขึ้นอีก ลองไปดูโปรเจคอื่นๆ ที่เกี่ยวข้องได้เลย และอย่าลืมกดติดตามเพื่ออัปเดตบทสอนและโปรเจคขั้นสูงใหม่ๆ ด้วยล่ะ!


วิวัฒนาการซิลิคอน: เชี่ยวชาญอนาคตแบบ Dual-Core ผ่านการวิเคราะห์ RP2040

ข้อมูล Frontmatter ดั้งเดิม

apps:
  - "Earle Philhower's RP2040 Arduino Core"
  - "Serial Monitor (Dual-Core Debugging)"
author: "angadiameya007"
category: "Lab Stuff"
components:
  - "1x Raspberry Pi Pico / Pico W (RP2040 Silicon)"
  - "1x Micro-USB or USB-C Data Cable"
  - "1x Secondary RP2040 (for inter-core debugging)"
description: "An advanced architectural guide to the Raspberry Pi Pico and Pico W, exploring dual-core symmetric multiprocessing (SMP), PIO state machine forensics, and the Mbed OS core bridge within the Arduino environment."
difficulty: "Easy"
documentationLinks: []
downloadableFiles:
  - "https://github.com/earlephilhower/arduino-pico/"
encryptedPayload: "U2FsdGVkX19tVK0oSGXxk/NqUlKDflGNK1zmW0fJsYmeaxZVtU3p56PBfIFxu5vjjMsmoB7uFmlwYpc0/GK8UA=="
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/getting-started-with-raspberry-pi-pico-in-arduino-ide-5e13ee_cover.jpg"
lang: "en"
likes: 1
passwordHash: "ab822bb035ea5285eeaa8b71a3b72c24f68837aa226407b23fb0621b3b489c60"
price: 99
seoDescription: "Step-by-step guide to setting up and programming Raspberry Pi Pico and Pico W using the Arduino IDE for beginners."
tags:
  - "rp2040-architecture"
  - "dual-core-processing"
  - "pio-state-machines"
  - "uf2-bootloader"
  - "raspberry-pi-pico"
  - "embedded-computing"
title: "เริ่มต้นเล่น Raspberry Pi Pico กับ Arduino IDE ง่ายนิดเดียว!"
tools:
  - "Arduino IDE 2.3+ (Core Driver Node)"
videoLinks: []
views: 14745