กลับไปหน้ารวมไฟล์
getting-started-with-raspberry-pi-pico-92303a.md

เมื่อไม่กี่เดือนก่อน ผมได้มีโอกาสเป็นเจ้าของบอร์ด "Raspberry Pi Pico" เพื่อนำมาศึกษาและเตรียมพัฒนาโปรเจกต์ที่น่าสนใจ แต่ด้วยภารกิจที่รัดตัว บอร์ดนี้จึงถูกวางทิ้งไว้จนฝุ่นเริ่มเกาะ วันนี้ถึงเวลาอันสมควรแล้วที่ผมจะหยิบมันขึ้นมาปัดฝุ่น และจัดทำบทความสอนการใช้งานเบื้องต้น เพื่อให้ทุกคนได้เห็นศักยภาพของไมโครคอนโทรลเลอร์จิ๋วแต่แจ๋วตัวนี้ไปพร้อมๆ กัน

หัวข้อที่เราจะเรียนรู้ร่วมกัน

ในบทความนี้ ผมจะพาทุกท่านไปเจาะลึกในประเด็นสำคัญดังนี้:

  1. ทำความรู้จักกับ Raspberry Pi Pico: มันคืออะไร และทำหน้าที่อะไรในงานวิศวกรรมฝังตัว?
  2. ข้อมูลทางเทคนิค (Specifications): วิเคราะห์ขุมพลังภายในและสถาปัตยกรรมของบอร์ด
  3. การเขียนโปรแกรมควบคุม: เรียนรู้วิธีการเขียนโค้ดผ่าน 2 ภาษาหลัก:
    • การใช้ Arduino IDE (C/C++): การเตรียมสภาพแวดล้อม และการทดสอบ Blink Example
    • การใช้ Thonny IDE (MicroPython): การติดตั้ง Firmware และการเขียนโค้ดด้วย Python
  4. การเปรียบเทียบ: Raspberry Pi Pico ต่างจาก Arduino อย่างไร?
  5. วิเคราะห์ข้อดีและข้อจำกัด: เพื่อการเลือกใช้งานในโปรเจกต์จริงอย่างเหมาะสม

Raspberry Pi Pico คืออะไร?

Raspberry Pi Pico คือบอร์ดไมโครคอนโทรลเลอร์ (Microcontroller) ราคาประหยัดที่ออกแบบมาเพื่อควบคุมอุปกรณ์อิเล็กทรอนิกส์และเซนเซอร์ต่างๆ

จุดที่ต้องทำความเข้าใจคือ Pico ไม่ใช่คอมพิวเตอร์ขนาดเล็ก (Single Board Computer) เหมือนรุ่นพี่อย่าง Raspberry Pi 4 หรือ Zero ที่รันระบบปฏิบัติการ Linux แต่ตัวมันมีลักษณะการทำงานเหมือนกับบอร์ด Arduino ซึ่งหมายความว่ามันจะไม่มีภาระ (Overhead) จากระบบปฏิบัติการ ทำให้กินไฟต่ำมาก และทำงานแบบ Real-time ได้อย่างแม่นยำ

หัวใจสำคัญของบอร์ดนี้คือชิป RP2040 ซึ่งเป็นไมโครคอนโทรลเลอร์ตัวแรกที่ออกแบบโดยทีมงาน Raspberry Pi ในสหราชอาณาจักร โดยออกแบบมาให้มีขนาดเล็ก รองรับการใช้งานบน Breadboard และมีพิน GPIO ถึง 40 พิน ทำงานที่ระดับแรงดัน 3.3V

ในด้านการจ่ายพลังงาน บอร์ดสามารถรับไฟได้ผ่านพอร์ต Micro USB หรือผ่านพิน VSYS โดยรองรับแรงดันกว้างตั้งแต่ 1.8V ถึง 5.5V ทำให้มีความยืดหยุ่นสูงในการใช้พลังงานจากแบตเตอรี่ชนิดต่างๆ


เจาะลึกข้อมูลทางเทคนิค (Technical Specifications)

ความโดดเด่นของ Raspberry Pi Pico อยู่ที่ชิป RP2040 (System on Chip - SoC) ซึ่งมีสถาปัตยกรรมที่น่าสนใจดังนี้:

  • Processor: Dual-Core Arm Cortex M0+ ความเร็วสูงสุดถึง 133 MHz ซึ่งการมี 2 คอร์ช่วยให้เราสามารถแบ่งงานที่ซับซ้อน เช่น คอร์หนึ่งประมวลผลอัลกอริทึม อีกคอร์หนึ่งจัดการการรับส่งข้อมูล
  • Memory: มาพร้อมกับ SRAM ภายในตัว 264KB และ Flash Memory ภายนอกขนาด 2MB สำหรับเก็บโค้ดโปรแกรม
  • Analog-to-Digital Converter (ADC): มี ADC 12-bit จำนวน 3 ช่อง ซึ่งนี่คือจุดเด่นที่บอร์ด Raspberry Pi รุ่นใหญ่ไม่มี ช่วยให้รับค่าจากอุปกรณ์ Analog อย่าง Joystick หรือ LDR ได้โดยตรง
  • Programmable I/O (PIO): นี่คือฟีเจอร์ระดับเทพของ RP2040 ที่ช่วยให้วิศวกรสามารถสร้างอินเตอร์เฟซการสื่อสารขึ้นมาเองได้ (เช่น จำลองโปรโตคอลแปลกๆ) โดยไม่รบกวนการทำงานของ CPU หลัก
  • Internal Temperature Sensor: มีเซนเซอร์วัดอุณหภูมิภายในชิปมาให้พร้อมใช้งาน

อย่างไรก็ตาม ข้อควรระวังคือ Pico รุ่นมาตรฐานนี้ ไม่มี WiFi และ Bluetooth ในตัว (ยกเว้นรุ่น Pico W) ซึ่งหากต้องการเชื่อมต่อไร้สาย จะต้องใช้โมดูลเสริมภายนอก เช่น ESP32 หรือ ESP8266


การเชื่อมต่อพิน (Pinout Diagram)

การทำความเข้าใจตำแหน่งพินเป็นสิ่งสำคัญ เนื่องจากตัวบอร์ดไม่ได้พิมพ์ชื่อพินไว้ที่ด้านบน แต่จะอยู่ที่ด้านล่างของบอร์ดแทน


วิธีการเขียนโปรแกรมควบคุม Raspberry Pi Pico

บอร์ด Pico รองรับการเขียนโปรแกรมที่หลากหลาย ทั้งระดับ Low-level อย่าง C/C++ และระดับ High-level อย่าง MicroPython หรือ CircuitPython

1. การใช้งานร่วมกับ Arduino IDE

การใช้ Arduino IDE ช่วยให้เราเข้าถึงไลบรารีจำนวนมหาศาลที่มีอยู่ในระบบนิเวศของ Arduino ได้ทันที

ขั้นตอนการเตรียมความพร้อม:

  1. ไปที่เมนู Tools > Boards > Boards Manager ค้นหาคำว่า "Pico" และติดตั้งแพ็กเกจ "Arduino Mbed OS RP2040 Boards"
  2. การเข้าสู่โหมดโปรแกรม: กดปุ่ม "BOOTSEL" ค้างไว้ขณะเสียบสาย USB เข้ากับคอมพิวเตอร์ เมื่อคอมพิวเตอร์มองเห็นไดรฟ์ชื่อ RPI-RP2 จึงปล่อยปุ่ม
  3. เลือกพอร์ต COM ที่ปรากฏในเมนู Tools > Port

การทดสอบ (Blink Example): เปิดตัวอย่างจาก File > Examples > Basics > Blink แล้วกด Upload โค้ดจะถูกคอมไพล์และส่งไปยัง Pico

ผลลัพธ์:

เมื่อการอัปโหลดเสร็จสิ้น ไฟ LED บนบอร์ด (พิน 25) จะเริ่มกระพริบตามจังหวะที่กำหนด

2. การใช้งานร่วมกับ Thonny IDE (MicroPython)

MicroPython เหมาะอย่างยิ่งสำหรับการพัฒนาที่รวดเร็ว (Rapid Prototyping) เพราะไม่ต้องผ่านกระบวนการ Compile ที่ยาวนาน

การติดตั้ง MicroPython:

  1. ดาวน์โหลดไฟล์ UF2 จากเว็บไซต์อย่างเป็นทางการของ MicroPython
  2. กดปุ่ม BOOTSEL ค้างไว้ขณะเสียบสาย USB แล้วลากไฟล์ UF2 วางลงในไดรฟ์ RPI-RP2
  3. บอร์ดจะ Reboot ตัวเองและพร้อมทำงานในโหมด MicroPython

การเขียนโค้ดด้วย Thonny IDE: ติดตั้ง Thonny IDE และตั้งค่า Interpreter เป็น MicroPython (Raspberry Pi Pico)

วิเคราะห์ Logic ของโค้ดไฟกระพริบ: ป้อนโค้ดต่อไปนี้ใน Thonny:

from machine import Pin, Timer

led = Pin(25, Pin.OUT) # กำหนดให้พิน 25 (LED บนบอร์ด) เป็น Output
timer = Timer()        # สร้างออบเจกต์ Timer สำหรับจัดการเวลา

def blink(timer):      # ฟังก์ชัน callback ที่จะทำงานเมื่อ Timer ครบกำหนด
    led.toggle()       # สลับสถานะ LED (ถ้าเปิดให้ปิด ถ้าปิดให้เปิด)

# ตั้งค่า Timer ให้ทำงานแบบ Periodic (ซ้ำๆ) 
# ด้วยความถี่ 2.5 Hz (กระพริบประมาณ 2.5 ครั้งต่อวินาที)
timer.init(freq=2.5, mode=Timer.PERIODIC, callback=blink)

ในเชิงวิศวกรรม การใช้ Timer ร่วมกับ callback ดีกว่าการใช้ delay() หรือ sleep() เพราะมันเป็นการทำงานแบบ Non-blocking ทำให้ CPU ยังสามารถไปประมวลผลคำสั่งอื่นๆ ในลูปหลักได้โดยไม่ต้องหยุดรอการกระพริบไฟ

ผลลัพธ์:


ข้อแตกต่างระหว่าง Raspberry Pi Pico และ Arduino

  • ยุคสมัยและเทคโนโลยี: Arduino เริ่มต้นในปี 2005 และเป็นมาตรฐานมาอย่างยาวนาน ในขณะที่ Pico เปิดตัวในปี 2021 ด้วยเทคโนโลยีชิปที่ใหม่กว่าและมีประสิทธิภาพสูงกว่าในราคาที่ถูกลง
  • สถาปัตยกรรม: Arduino ส่วนใหญ่ (เช่น Uno) เป็นแบบ Single-core 8-bit แต่ Pico เป็น Dual-core 32-bit
  • ระดับแรงดัน: Arduino ทำงานที่ 5V เป็นส่วนใหญ่ แต่ Pico ทำงานที่ 3.3V ซึ่งเป็นมาตรฐานของเซนเซอร์สมัยใหม่
  • การเชื่อมต่อ: Pico ใช้ Micro-USB ในขณะที่บอร์ด Arduino รุ่นใหม่ๆ เริ่มขยับไปใช้ USB-C

สรุปข้อดีและข้อจำกัด

ข้อดี:

  • ประสิทธิภาพต่อราคา: สูงมาก (High performance, low cost)
  • Dual-Core: รองรับการประมวลผลขนาน
  • ประหยัดพลังงาน: เหมาะกับงานที่ใช้แบตเตอรี่หรือโซลาร์เซลล์
  • PIO: เปิดโอกาสให้สร้างอินเตอร์เฟซเฉพาะทางได้เอง
  • Boot รวดเร็ว: ไม่ต้องรอโหลด OS และปิดเครื่องได้ทันทีโดยไม่ต้องผ่านคำสั่ง Shutdown

ข้อจำกัด:

  • ไม่มี WiFi/Bluetooth ในรุ่นเริ่มต้น
  • ไม่มีชื่อพินกำกับที่ด้านบนบอร์ด ทำให้ไล่สายยากเล็กน้อย
  • ต้องบัดกรี Header เอง (ยกเว้นรุ่นที่มี H ต่อท้าย)
  • พิน GPIO ทนแรงดันได้สูงสุดแค่ 3.3V (ห้ามต่อไฟ 5V เข้าพิน GPIO โดยตรง)

หากคุณกำลังมองหาไมโครคอนโทรลเลอร์ตัวแรกที่จะเริ่มต้นศึกษา หรือต้องการอัปเกรดประสิทธิภาพจากบอร์ดเดิม Raspberry Pi Pico คือคำตอบที่คุ้มค่าที่สุดในนาทีนี้ครับ


ข้อมูลเพิ่มเติมและแหล่งอ้างอิง

ขอขอบคุณทุกท่านที่ติดตามอ่านบทความนี้ หวังว่าจะเป็นประโยชน์ต่อการเริ่มต้นใช้งานของคุณ หากชอบเนื้อหานี้ สามารถติดตามผมได้ที่ช่องทางต่างๆ ดังนี้ครับ:

เอกสารทางเทคนิค (Datasheets):

ซอฟต์แวร์และเครื่องมือ:

สนับสนุนผลงาน: BTC: 1M1PdxVxSTPLoMK91XnvEPksVuAa4J4dDp | ETH: 0x939aa4e13ecb4b46663c8017986abc0d204cde60

พบกันใหม่ในบทความหน้าครับ!

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

title: "Getting Started With Raspberry Pi Pico"
description: "Couple of months ago, I bought a \"Raspberry Pi Pico\" to get some hands-on experience of it and to create some amazing projects using it."
author: "tarantula3"
category: ""
tags:
  - "home automation"
  - "smart appliances"
  - "security"
  - "internet of things"
  - "monitoring"
  - "robots"
views: 3646
likes: 0
price: 2450
difficulty: "Easy"
components: []
tools: []
apps:
  - "1x Arduino IDE"
  - "1x Thonny Python IDE"
downloadableFiles: []
documentationLinks: []
passwordHash: "cdf8f4b60688159d44f6c73593826133eb9f4de02944c6342d7cda8e240ac6e1"
encryptedPayload: "U2FsdGVkX1+Oz1FoiFyXpbjV7pbipfLrK8lNIn6ZpBuJu7Dw9DXCVb7JjCiAm+6w+PLRSk70LEZN6gpRlR6GttOtYLMByc3zRQnu1ApYdOkAAq+D5C1Gpc1D0YcqZyuv"
seoDescription: "Learn how to get started with Raspberry Pi Pico to build amazing DIY electronics projects and gain hands-on experience."
videoLinks:
  - "https://www.youtube.com/embed/vO_2XWJDF70"
  - "https://www.youtube.com/embed/vO_2XWJDF70"
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/getting-started-with-raspberry-pi-pico-92303a_cover.jpg"
lang: "en"