เริ่มต้นใช้งาน Raspberry Pi Pico 2 ฉบับมือใหม่

คู่มือการเริ่มต้นใช้งาน Raspberry Pi Pico 2 พร้อมชิพ RP2350 ใหม่ล่าสุด พร้อมตัวอย่างโค้ด MicroPython และ C/C++ อัปเกรดจากรุ่นแรกด้วยประสิทธิภาพที่เหนือกว่าและฟีเจอร์ใหม่มากมาย

11 มีนาคม 2026 18 นาที มือใหม่

Pico 2 คืออะไร?

Raspberry Pi Pico 2 คือไมโครคอนโทรลเลอร์บอร์ดรุ่นที่สองจาก Raspberry Pi Foundation ที่มาพร้อมกับชิพ RP2350 ใหม่ล่าสุด ซึ่งเป็นการอัปเกรดครั้งใหญ่จากรุ่นแรก (RP2040) โดยมุ่งเน้นประสิทธิภาพที่ดีขึ้นและฟีเจอร์ใหม่ๆ ที่ตอบโจทย์การทำโปรเจกต์ IoT และ Embedded Systems ที่ซับซ้อนมากขึ้น

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

ความแตกต่างระหว่าง Pico 1 และ Pico 2

ฟีเจอร์ Pico 1 (RP2040) Pico 2 (RP2350)
ชิพ RP2040 RP2350
ความเร็ว CPU 133 MHz (Dual-core) 150 MHz (Dual-core)
SRAM 264 KB 520 KB
Flash บนบอร์ด 2MB - 16MB 4MB (Standard)
GPIO Pins 26 พอร์ต (GP0-GP28) 26 พอร์ต (GP0-GP28)
การรองรับ PIO 2 State Machines 4 State Machines
ราคาโดยประมาณ ~฿150 ~฿200-250

คุณสมบัติของ RP2350

1. ประสิทธิภาพดีขึ้น

  • CPU เร็วขึ้น: 150 MHz เปรียบเทียบกับ 133 MHz ให้ประสิทธิภาพดีขึ้นประมาณ 13%
  • หน่วยความจำมากขึ้น: 520 KB SRAM ให้พื้นที่มากขึ้นสำหรับตัวแปรและ buffer
  • DMA channels: 12 channels เพิ่มขึ้นจาก 12 channels ใน RP2040

2. PIO ที่เหนือกว่า

PIO (Programmable I/O) บน RP2350 มาพร้อมกับ 4 State Machines เพิ่มขึ้นจาก 2 ใน RP2040 ทำให้สามารถจัดการ protocol ที่ซับซ้อนได้มากขึ้น เช่น:

  • วิดีโอ output ที่ความละเอียดสูงขึ้น
  • Motor control ที่ซับซ้อน
  • Custom protocols หลายตัวพร้อมกัน

3. การเชื่อมต่อที่หลากหลาย

  • 26 GPIO pins: รองรับ Digital I/O, ADC, PWM, I2C, SPI, UART
  • 4 ADC channels: ความละเอียด 12-bit (0-3.3V)
  • On-board LED: ใช้ GP25 เหมือนเดิม

4. รองรับภาษาโปรแกรมมิ่งหลากหลาย

  • MicroPython
  • CircuitPython
  • C/C++ SDK
  • Rust
  • Arduino (พัฒนาอยู่)

อุปกรณ์ที่ต้องใช้

อุปกรณ์หลัก

  • Raspberry Pi Pico 2 - ฿200-250
  • Micro USB Cable - ฿50-100
  • คอมพิวเตอร์/แล็ปท็อป - สำหรับเขียนโค้ด

อุปกรณ์เสริม (แนะนำ)

  • Breadboard - ฿30-50
  • Jumper wires - ฿40-60
  • LED 5mm - ฿5-10/ชิ้น
  • Resistors 330Ω - ฿5-10/ชิ้น
  • Sensors (DHT11, DHT22, etc.) - ฿40-150

หมายเหตุ: หากคุณมี Pico รุ่นแรก (RP2040) อยู่แล้ว คุณสามารถใช้บทความ เริ่มต้นใช้งาน RP2040 แทนได้ ซึ่งยังคงใช้งานได้ดีและราคาถูกกว่า

การติดตั้ง MicroPython

ขั้นตอนที่ 1: ดาวน์โหลด MicroPython UF2

เข้าไปที่เว็บไซต์ Raspberry Pi Documentation และดาวน์โหลดไฟล์ UF2 สำหรับ Pico 2:

  • ไฟล์ชื่อ: micropython-rp2350.uf2
  • เวอร์ชันล่าสุด: MicroPython v1.24.0 หรือใหม่กว่า

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

  1. กดปุ่ม BOOTSEL ค้างไว้บนบอร์ด Pico 2
  2. เสียบสาย Micro USB จาก Pico 2 เข้ากับคอมพิวเตอร์
  3. ปล่อยปุ่ม BOOTSEL เมื่อเห็นไดรฟ์ชื่อ RPI-RP2 ปรากฏบนคอมพิวเตอร์

ขั้นตอนที่ 3: ถอดถอย MicroPython UF2

  1. ลากไฟล์ micropython-rp2350.uf2 ไปยังไดรฟ์ RPI-RP2
  2. Pico 2 จะรีสตาร์ทและไดรฟ์จะหายไป
  3. MicroPython พร้อมใช้งานแล้ว!

เคล็ดลับ: ไดรฟ์ RPI-RP2 จะปรากฏเฉพาะเมื่อคุณกด BOOTSEL ขณะเสียบสาย USB เท่านั้น หลังจากถอดถอยไฟล์ UF2 แล้ว บอร์ดจะรีสตาร์ทเข้าสู่โหมดปกติ

การใช้งาน GPIO

GPIO (General Purpose Input/Output) คือพอร์ตที่ใช้สำหรับเชื่อมต่อกับอุปกรณ์ภายนอก เช่น LED, sensors, motors, etc.

GPIO Pinout ของ Pico 2

  • GP0-GP22: ใช้งานได้ทั้ง Input/Output
  • GP23-GP28: เชื่อมต่อกับ Flash/ADC
  • GP25: LED บนบอร์ด
  • GP26-29: ADC channels 0-3

ตัวอย่าง: อ่านค่าจาก Digital Sensor

# ตัวอย่างการอ่านค่าจาก Motion Sensor (PIR)
# เชื่อมต่อ PIR OUT pin กับ GP16

import machine
import time

# ตั้งค่า GP16 เป็น Input (สำหรับรับสัญญาณจาก PIR)
pir = machine.Pin(16, machine.Pin.IN)

# ตั้งค่า LED บนบอร์ด
led = machine.Pin("LED", machine.Pin.OUT)

print("เริ่มต้นตรวจจับการเคลื่อนไหว...")

while True:
    if pir.value() == 1:  # ตรวจจับการเคลื่อนไหว
        led.value(1)      # เปิด LED
        print("ตรวจพบการเคลื่อนไหว!")
    else:
        led.value(0)      # ปิด LED

    time.sleep(0.1)  # ตรวจสอบทุกๆ 0.1 วินาที

ตัวอย่าง: ใช้งาน PWM (Pulse Width Modulation)

PWM ใช้สำหรับควบคุมความสว่างของ LED หรือความเร็วมอเตอร์

# ตัวอย่างการควบคุมความสว่าง LED ด้วย PWM
# เชื่อมต่อ LED กับ GP15 ผ่านตัวต้านทาน 330Ω

import machine
import time

# ตั้งค่า PWM ที่ GP15
led_pwm = machine.PWM(machine.Pin(15))
led_pwm.freq(1000)  # ความถี่ 1000 Hz

# เริ่มต้นด้วย LED ปิด
duty_cycle = 0

while True:
    # เพิ่มความสว่างจนถึงสูงสุด
    for duty_cycle in range(0, 65535, 100):
        led_pwm.duty_u16(duty_cycle)
        time.sleep(0.01)

    # ลดความสว่างจนถึงต่ำสุด
    for duty_cycle in range(65535, 0, -100):
        led_pwm.duty_u16(duty_cycle)
        time.sleep(0.01)

ตัวอย่าง: อ่านค่า Analog Sensor

Pico 2 มี ADC 4 channels (GP26, GP27, GP28, GP29)

# ตัวอย่างการอ่านค่า Potentiometer (ตัวต้านทานปรับค่าได้)
# เชื่อมต่อ Potentiometer:
# - ขาด้านหนึ่ง -> 3V3 (3.3V)
# - ขาตรงกลาง -> GP26 (ADC0)
# - อีกขาหนึ่ง -> GND

import machine
import time

# ตั้งค่า ADC ที่ GP26 (ADC0)
adc = machine.ADC(26)

# อ่านค่าและแสดงผล
while True:
    # อ่านค่า ADC (0-65535, 16-bit)
    adc_value = adc.read_u16()

    # แปลงเป็นแรงดันไฟฟ้า (0-3.3V)
    voltage = (adc_value / 65535) * 3.3

    # แสดงผล
    print(f"ADC Value: {adc_value}, Voltage: {voltage:.2f}V")

    time.sleep(0.5)  # อ่านทุกๆ 0.5 วินาที

การเชื่อมต่อ CynoIoT

คุณสามารถเชื่อมต่อ Pico 2 กับ CynoIoT Platform เพื่อส่งข้อมูล sensor ไปยัง cloud และตรวจสอบผ่าน dashboard

หมายเหตุ: Pico 2 ไม่มี WiFi/Bluetooth ในตัว หากต้องการเชื่อมต่ออินเทอร์เน็ต คุณต้องใช้โมดูลเพิ่มเติม เช่น ESP8266, ESP32 หรือ Ethernet module

ตัวอย่าง: ส่งข้อมูลผ่าน UART ไปยัง ESP8266

# ตัวอย่างการส่งข้อมูล sensor ผ่าน UART
# เชื่อมต่อ Pico 2 UART0 (GP0=TX, GP1=RX) กับ ESP8266

import machine
import time
import json

# ตั้งค่า UART0 (สำหรับสื่อสารกับ ESP8266)
uart = machine.UART(0, baudrate=115200, tx=machine.Pin(0), rx=machine.Pin(1))

# ตั้งค่า ADC สำหรับอ่านค่า sensor
adc = machine.ADC(26)

while True:
    # อ่านค่า sensor (เช่น อุณหภูมิ)
    adc_value = adc.read_u16()
    voltage = (adc_value / 65535) * 3.3

    # สร้าง JSON payload
    data = {
        "sensor": "temperature",
        "value": voltage,
        "unit": "V",
        "timestamp": time.ticks_ms()
    }

    # แปลงเป็น JSON string และส่งผ่าน UART
    json_str = json.dumps(data)
    uart.write(json_str + '\n')

    print(f"ส่งข้อมูล: {json_str}")

    time.sleep(5)  # ส่งทุกๆ 5 วินาที

ขั้นตอนการเชื่อมต่อ CynoIoT

  1. สมัครสมาชิกที่ cynoiot.com
  2. สร้าง Device ใหม่ใน Dashboard
  3. รับ MQTT credentials (broker, port, username, password)
  4. ใช้ ESP8266/ESP32 เชื่อมต่อกับ CynoIoT MQTT broker
  5. ส่งข้อมูลจาก Pico 2 ไปยัง ESP8266/ESP32 ผ่าน UART
  6. ดูข้อมูลใน Dashboard ได้เลย!

โปรเจกต์ตัวอย่าง

โปรเจกต์ 1: Weather Station วัดอุณหภูมิและความชื้น

ใช้ Pico 2 ต่อกับเซ็นเซอร์ DHT22 เพื่อวัดอุณหภูมิและความชื้น และแสดงผลบน Serial Monitor

# Weather Station ด้วย DHT22
# เชื่อมต่อ DHT22:
# - VCC -> 3V3
# - DATA -> GP16
# - GND -> GND

import machine
import time

# DHT22 sensor library (ติดตั้งด้วย Thonny: Tools > Manage Packages > dht)
from dht import DHT22

# ตั้งค่า DHT22 ที่ GP16
dht = DHT22(machine.Pin(16))

while True:
    try:
        dht.measure()  # อ่านค่าจาก sensor
        temp = dht.temperature()  # อุณหภูมิ (°C)
        hum = dht.humidity()      # ความชื้น (%)

        print(f"อุณหภูมิ: {temp:.1f}°C | ความชื้น: {hum:.1f}%")

    except OSError as e:
        print(f"Error: {e}")

    time.sleep(2)  # อ่านทุกๆ 2 วินาที

โปรเจกต์ 2: Smart Plant Monitoring

ตรวจสอบความชื้นในดินและแจ้งเตือนเมื่อแห้งเกินไป

# Smart Plant Monitoring
# เชื่อมต่อ Soil Moisture Sensor:
# - VCC -> 3V3
# - SIGNAL -> GP26 (ADC0)
# - GND -> GND

import machine
import time

# ตั้งค่า ADC สำหรับ soil moisture sensor
soil_sensor = machine.ADC(26)
led = machine.Pin("LED", machine.Pin.OUT)

# ตั้งค่า threshold (ปรับค่าได้ตาม sensor)
DRY_THRESHOLD = 40000  # ค่าที่ต่ำกว่านี้ถือว่าดินแห้ง

print("เริ่มต้นตรวจสอบความชื้นในดิน...")

while True:
    # อ่านค่า soil moisture (0-65535)
    # ค่าสูง = ชื้น, ค่าต่ำ = แห้ง
    moisture = soil_sensor.read_u16()

    # แสดงผล
    print(f"ความชื้นในดิน: {moisture}")

    # ตรวจสอบว่าดินแห้งหรือไม่
    if moisture < DRY_THRESHOLD:
        print("⚠️ ดินแห้ง! ต้องรดน้ำ")
        led.value(1)  # เปิด LED เตือน
    else:
        print("✅ ดินชื้นดี")
        led.value(0)  # ปิด LED

    time.sleep(1)

โปรเจกต์ 3: OLED Display

แสดงข้อมูลบนจอ OLED 1306 (128x64)

# OLED Display ด้วย SSD1306
# เชื่อมต่อ OLED I2C:
# - VCC -> 3V3
# - GND -> GND
# - SCL -> GP5
# - SDA -> GP4

import machine
import time
from machine import Pin, I2C

# ตั้งค่า I2C
i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=400000)

# สแกนหา address ของ OLED
devices = i2c.scan()
if devices:
    print(f"พบ OLED ที่ address: {hex(devices[0])}")
else:
    print("ไม่พบ OLED!")

# ใช้งาน SSD1306 (ติดตั้ง library ก่อน)
from ssd1306 import SSD1306_I2C

oled = SSD1306_I2C(128, 64, i2c)

# แสดงข้อความ
oled.fill(0)  # เคลียร์จอ
oled.text("Hello, Pico 2!", 0, 0)
oled.text("CynoIoT", 0, 16)
oled.show()

ข้อควรระวังและการแก้ปัญหา

ปัญหาที่พบบ่อยและวิธีแก้ไข

1. Pico 2 ไม่ปรากฏใน Thonny

สาเหตุ: ไม่ได้กดปุ่ม BOOTSEL ขณะเสียบสาย USB
วิธีแก้: ถอดสาย USB แล้วเสียบใหม่โดยกด BOOTSEL ค้างไว้

2. MicroPython ไม่ทำงาน

สาเหตุ: ไม่ได้ถอดถอยไฟล์ UF2 หรือใช้ไฟล์ผิดเวอร์ชัน
วิธีแก้: ลองถอดถอยไฟล์ micropython-rp2350.uf2 ใหม่

3. โค้ดไม่รันหลังจากถอดปลั๊ก

สาเหตุ: ไม่ได้บันทึกเป็น main.py
วิธีแก้: บันทึกไฟล์เป็นชื่อ main.py เพื่อให้รันอัตโนมัติเมื่อบอร์ดเปิด

4. Sensor ให้ค่าผิดปกติ

สาเหตุ: เชื่อมต่อผิดพอร์ตหรือใช้แรงดันไฟผิด
วิธีแก้: ตรวจสอบ wiring diagram และแรงดันไฟ (3V3 หรือ 5V)

ข้อควรระวังในการใช้งาน

  • แรงดันไฟฟ้า: GPIO รับได้เฉพาะ 0-3.3V ห้ามต่อ 5V โดยตรง (อาจทำให้บอร์ดเสียหาย)
  • กระแสไฟ: แต่ละ GPIO รับได้สูงสุด 16mA รวมทั้งบอร์ดไม่เกิน 300mA
  • อุณหภูมิ: หลีกเลี่ยงการทำงานในอุณหภูมิสูงเกิน 60°C
  • Static electricity: ระวังไฟฟ้าสถิต หลีกเลี่ยงการแตะขา GPIO โดยตรง

สรุป

ในบทความนี้ เราได้เรียนรู้:

  • ✅ ความแตกต่างระหว่าง Pico 1 และ Pico 2
  • ✅ คุณสมบัติใหม่ๆ ของชิพ RP2350
  • ✅ การติดตั้ง MicroPython บน Pico 2
  • ✅ การเขียนโค้ดพื้นฐาน (Blink LED, GPIO, PWM, ADC)
  • ✅ การเชื่อมต่อกับ CynoIoT Platform
  • ✅ โปรเจกต์ตัวอย่าง (Weather Station, Plant Monitoring, OLED)

Raspberry Pi Pico 2 เป็นการอัปเกรดที่น่าประทับใจจากรุ่นแรก ด้วยหน่วยความจำที่มากขึ้นและ PIO ที่เหนือกว่า ทำให้เหมาะสำหรับโปรเจกต์ IoT และ Embedded Systems ที่ซับซ้อนขึ้น

ถัดไปคืออะไร?