2 คะแนน โดย GN⁺ 2024-06-12 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • RP2040 ของ Raspberry Pi เป็นไมโครคอนโทรลเลอร์สำหรับใส่ในอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค มีราคาถูกและหาสต็อกจำนวนมากได้ง่าย จึงลดภาระในการตัดสินใจเลือกชิ้นส่วนช่วงเริ่มพัฒนา
  • Raspberry Pi เลือกโฟกัสที่ ชิ้นส่วนเดียว แทนการแตกเป็นหลายรุ่นย่อย ทำให้การปรับสเปกอย่างละเอียดลดลง แต่ได้ผลลัพธ์คือคำถาม ตัวอย่าง ไลบรารี และเครื่องมือต่าง ๆ มารวมอยู่ที่จุดเดียว
  • ราคาประมาณ 70 เซนต์ อาจไม่เหมาะกับการไล่ลดต้นทุนชิ้นส่วนในงานผลิตจำนวนมาก แต่สำหรับโปรเจกต์อย่าง Late Mate การลดต้นทุนการพัฒนาอาจให้ประโยชน์มากกว่า
  • สเปกที่มีสองคอร์, GPIO 30 ขา, USB, UART/SPI/I2C/PWM, RAM ภายในมากขึ้น และไม่มีแฟลชในตัว เป็นการ ประนีประนอมที่เพียงพอและยืดหยุ่น
  • การมี PIO และบูตโหลดเดอร์แบบอ่านอย่างเดียว รวมถึงการออกแบบที่หลีกเลี่ยงการป้องกันเฟิร์มแวร์เกินจำเป็น ทำให้ RP2040 ดูเป็นชิ้นส่วนที่ใช้งานได้จริงและเหมาะกับงานเฉพาะทาง

ระบบนิเวศที่เกิดจากกลยุทธ์ชิ้นส่วนเดียว

  • RP2040 คือ ไมโครคอนโทรลเลอร์ ที่ Raspberry Pi พัฒนาขึ้น ซึ่งต่างจากบอร์ด Raspberry Pi ที่เป็นที่รู้จักกันมากกว่า เพราะมันถูกออกแบบมาให้ฝังในอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค
  • บน Mouser มีสต็อกพร้อมส่งทันทีในระดับหลายหมื่นชิ้น และมีราคาประมาณ 70 เซนต์
  • ผู้ผลิตไมโครคอนโทรลเลอร์ทั่วไปมักมีสินค้าจำนวนมากที่คล้ายกันแต่ต่างกันเล็กน้อย
    • เนื่องจากผลิตภัณฑ์จริงมีต้นทุนการผลิต ในการผลิตจำนวนมาก การประหยัดต้นทุนต่อชิ้นเพียง 1 เซนต์ก็ส่งผลต่อกำไรได้
    • จึงเกิดแรงจูงใจให้เลือกไมโครคอนโทรลเลอร์ที่มี สเปกพอดีกับงาน มากที่สุด
  • สำหรับ RP2040 นั้น Raspberry Pi เลือกโฟกัสแทบทั้งหมดไปที่ ชิ้นส่วนเดียว
    • ตัวเลือกและพื้นที่ให้ปรับสเปกอย่างละเอียดจึงลดลง
    • แต่ในทางกลับกัน คำถามบน StackExchange บทความบล็อก ประสบการณ์ GitHub issue ไลบรารี และเครื่องมือต่าง ๆ จะสะสมอยู่บนชิ้นส่วนเดียวกัน
  • โปรเจกต์อย่าง Late Mate สามารถประหยัดต้นทุนด้านการพัฒนาได้มากกว่าต้นทุนชิ้นส่วน จึงทำให้กลยุทธ์ชิ้นส่วนเดียวเป็นจุดประนีประนอมที่ดี
  • การรองรับ Rust ทำได้ดี เช่น ตัวอย่างของ Embassy และยังมีตัวอย่างเฟิร์มแวร์สำหรับคีย์บอร์ด โดรน และหุ่นยนต์ฟุตบอล

ฮาร์ดแวร์ที่เพียงพอและความยืดหยุ่นของ PIO

  • การออกแบบของ RP2040 ไม่ได้มุ่งไปที่ “สเปกสูงสุด” แต่ใกล้เคียงกับการประนีประนอมแบบใช้งานทั่วไปที่ เพียงพอและยืดหยุ่น
    • มีสองคอร์ที่ใช้งานได้ดี โดยคอร์ที่สองสามารถใช้เมื่อจำเป็น
    • GPIO มี 30 ขา ซึ่งอยู่ในระดับเฉลี่ย
    • ไม่มีแฟลชบนชิป และเลือกใช้งบประมาณกับ RAM ภายในซึ่งเชื่อมต่อจากภายนอกได้ยากกว่า
    • ADC อยู่ในระดับใช้งานได้ดี และมีอุปกรณ์ต่อพ่วงมาตรฐานอย่าง USB และ UART/SPI/I2C/PWM
  • ฟีเจอร์ที่ไม่ค่อยดั้งเดิมนักคือ PIO
    • PIO ย่อมาจาก Programmable Input/Output โดยมีลักษณะคล้ายโปรเซสเซอร์ย่อยขนาดเล็กสองตัวที่สามารถจัดการ IO ความเร็วสูงด้วยจังหวะเวลาที่แม่นยำ โดยไม่ใช้เวลาของ CPU
    • ใช้สำหรับทำโปรโตคอลสื่อสารอย่าง DShot ESC
    • Pico-PIO-USB สร้าง USB stack แบบสมบูรณ์บน PIO ทำให้ RP2040 มี USB controller ตัวที่สอง
    • เมื่อใช้ร่วมกับ DMA ก็สามารถทำให้ ไดรเวอร์จอแสดงผล ถ่ายงานการสื่อสารกับจอและทัชทั้งหมดออกจาก CPU ได้

บูตโหลดเดอร์ที่ช่วยเลี่ยงอาการ brick และจุดประนีประนอมด้านความปลอดภัย

  • RP2040 มีโครงสร้างที่ ทำให้ brick ไม่ได้
    • มีบูตโหลดเดอร์แบบอ่านอย่างเดียวอยู่ในตัว
    • สามารถอัปเดตได้ด้วยการเมานต์เป็น USB mass storage แล้วคัดลอกเฟิร์มแวร์ลงไปใน “อุปกรณ์เก็บข้อมูล”
    • โปรโตคอล USB แบบเรียบง่ายของมันถูกใช้ใน picotool
  • เนื่องจากการปกป้องเฟิร์มแวร์จากผู้โจมตีที่มุ่งเป้าโดยเฉพาะนั้นแทบเป็นไปไม่ได้ และความพยายามดังกล่าวยังเพิ่มความซับซ้อนรวมถึงต้นทุนด้านประสบการณ์นักพัฒนา จึงหลีกเลี่ยงการ แสดงบทบาทด้านความปลอดภัย ที่เกินจำเป็น
  • ตัวเลือกเหล่านี้อาจมองได้ว่าเป็นผลจากการสร้างสมดุลอย่างใช้งานได้จริง โดยคำนึงถึงช่องทางเฉพาะที่ RP2040 ในฐานะชิ้นส่วนซิลิคอนขนาดเล็กเข้าไปอยู่

1 ความคิดเห็น

 
GN⁺ 2024-06-12
ความคิดเห็นบน Hacker News
  • พระเอกตัวจริงของ RP2040 คือ PIO ซึ่งมอบความสามารถที่ชิปคู่แข่งอย่าง ESP32 ทำตามได้ยาก
    เลยถูกนำไปใช้กันในสายแฮ็กคอนโซลหลายที่ด้วย อย่างไรก็ตาม สำหรับงานที่ใช้แบตเตอรี่ก็อยากให้ใน V2 การกินไฟของโหมด deep sleep ต่ำลงกว่านี้

    • เรื่องอย่างอายุแบตเตอรี่น่าจะดีขึ้นได้เมื่อมีประสบการณ์สะสมมากขึ้น ผมเคยคุยเรื่อง RP2040 กับคนสายซิลิคอนมา เขาบอกว่านี่เป็นลักษณะที่ค่อนข้างพบได้ทั่วไปของ ดีไซน์รุ่นแรก
      ดิจิทัลลอจิกที่ตรวจสอบได้บน FPGA มักจะโอเค แต่ส่วนอนาล็อกจะจูนละเอียดได้ยากกว่ามาก เลยออกมาเป็นการใช้พลังงานที่ไม่ดี, ADC คุณภาพไม่ค่อยดี, และไม่มี DAC ภายในหรือ op-amp อะไรทำนองนั้น ชิปไร้สายของ Pico W ก็ใกล้เคียงกับฝั่งนี้เหมือนกัน จึงไม่ได้รวมทุกอย่างไว้ในตัวแบบ ESP32 แต่ใช้ชิ้นส่วนสำเร็จรูปแยกต่างหาก
    • ส่วนที่น่าหงุดหงิดที่สุดของ PIO คือมี แค่ 2 ตัว เท่านั้น แต่ละตัวจะมี 4 ยูนิตย่อยก็จริง แต่มีพื้นที่คำสั่งแค่ 32 คำสั่ง และไม่มีอินพุตสัญญาณนาฬิกาภายนอก
      มันยอดเยี่ยมมากสำหรับการทำอุปกรณ์ต่อพ่วงพื้นฐานสุด ๆ แต่ผมก็เคยหลายครั้งที่เริ่มทำอะไรซับซ้อนขึ้นอีกนิดแล้วพบว่ามันช้าเกินไปและพื้นที่ไม่พอ ถ้าเพิ่มความสามารถขึ้นอีกหน่อยก็น่าจะใช้แทน FPGA สำหรับงานเล็ก ๆ น้อย ๆ ได้ค่อนข้างง่าย
    • สำหรับผม ความเสถียรของซัพพลาย คือหัวใจสำคัญ IC ตัวเดียว, อายุผลิตภัณฑ์ยาว, และมีสต็อกตลอด หลังจากเจอความโกลาหลของปี 2021/2022 มาแล้ว ก็ไม่คิดจะยอมแลกสิ่งพวกนี้อีกเพื่อประหยัดไม่กี่เซนต์
    • ในงานหุ่นยนต์ก็เหมือนกัน PIO 8 ตัว เพียงพอสำหรับอ่านและบันทึกตัวเข้ารหัสแบบ quadrature 4 ตัว โดยแทบไม่มีต้นทุนจาก interrupt เลย ทำให้สร้างตัวควบคุมแบบ closed-loop ที่ประสิทธิภาพดีได้ แม้อยู่ในสภาพแวดล้อมที่ช้าอย่าง Micropython
    • การเอา ESP32 มาเทียบกับ RP2040 ก็ออกแนวเทียบแอปเปิลกับส้ม
      ถ้าต้องการ I/O เยอะ ๆ ปกติก็จะไม่มอง ESP32 อยู่แล้ว จุดแข็งของ ESP32 คือราคาถูกและมี WiFi ในตัว ถึงจะมีไมโครคอนโทรลเลอร์ตัวเลือกอื่นที่ได้เปรียบกว่า RP2040 อยู่เยอะ แต่ส่วนใหญ่ก็ไม่ได้ทำมาเพื่อสายงานอดิเรก
  • ช่วงหลายปีที่ผ่านมาเราใช้ RP2040 กับ electronic badge[1] ของงานประชุมด้านความปลอดภัย RVASec และประสบการณ์ในการเขียนซอฟต์แวร์ก็ค่อนข้างดี
    GitHub repository ของ badge ปีนี้อยู่ที่นี่ มี badge simulator แบบซอฟต์แวร์ล้วนให้ลองเล่นได้ระดับหนึ่งแม้ไม่มีฮาร์ดแวร์ แต่ฟีเจอร์ multiplayer ที่อาศัยการสื่อสารอินฟราเรดระหว่าง badge อาจจะสนุกน้อยลง: https://github.com/HackRVA/badge2024

    [1] วิดีโอ badge ปี 2023: https://www.youtube.com/watch?v=KWZriUMNpLc
    [2] https://rvasec.com/

    • สงสัยว่าทำไมถึงทำแบบคัสตอมและไม่ใช้ผลิตภัณฑ์ของ NXP
  • คำพูดที่ว่า “เป็นไมโครคอนโทรลเลอร์ตัวเดียวกัน และมีสองรุ่นที่เป็นแค่ revision แก้บั๊ก” นั้นไม่ค่อยถูกต้อง
    จริง ๆ แล้วมันคือ ไมโครคอนโทรลเลอร์ตัวเดียวกันทุกประการ และมีเพียงตัวเลือกด้านแพ็กเกจสองแบบ แบบหนึ่งเป็นรีล 7 นิ้วจำนวน 500 ชิ้น และอีกแบบเป็นรีล 13 นิ้วจำนวน 3400 ชิ้น ดูได้จาก “Ordering code” ใน datasheet: https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.p...

    • ถึงอย่างนั้นก็มี revision แก้บั๊กอยู่หลายครั้ง RP2040-B0 เป็นต้นฉบับ, -B1 มีการปรับปรุง ROM code บางส่วน, และ -B2 มีการเปลี่ยนแปลง ROM เพิ่มเติมพร้อมกับแก้บั๊กซิลิคอนของเวอร์ชันแรกด้วย
      ถ้าใช้ SDK ทางการก็แทบไม่ต้องกังวลมากว่าเป็นเวอร์ชันไหน เพราะไลบรารีมาตรฐานระดับสูงจะตรวจจับ hardware revision ตอนรันและเปิดหรือปิดวิธีเลี่ยงปัญหาที่จำเป็นให้เอง
  • RP2040 เรียกได้ว่าเป็นตัวที่ชุบชีวิตตลาดเฉพาะทางอย่างคอนโทรลเลอร์คัสตอมขึ้นมาใหม่แทบจะด้วยตัวเอง
    ด้วยเฟิร์มแวร์เกมแพดโอเพนซอร์ส gp2040[1] ผู้คนจึงสามารถซื้อไฟต์สติกและคอนโทรลเลอร์แบบ leverless ที่คุณภาพใช้ได้ในราคาถูกกว่าของบริษัทอย่าง Victrix หรือ Razer มาก และเพราะเป็นโอเพนซอร์ส ชุมชนงานอดิเรกด้านคอนโทรลเลอร์ก็ยังทำบอร์ด RP2040 สำหรับโปรเจกต์และไอเดียคอนโทรลเลอร์แปลก ๆ กันสารพัดแบบ

    [1] https://gp2040-ce.info

    • ก็สงสัยเหมือนกันว่าส่วนไหนบ้างที่เห็นผลได้โดยตรงว่าเป็นเพราะ RP2040 QMK0 เองก็ใช้ codebase ที่ค่อนข้างใกล้เคียงกันทางเทคนิคสำหรับคีย์บอร์ด DIY มานานมากแล้ว
      มองผ่าน ๆ แล้ว GP2040 ดูไม่ได้มีอะไรที่ไมโครคอนโทรลเลอร์สมัยใหม่ตัวอื่นพอสมควรจะทำไม่ได้ แน่นอนว่า RP2040 เป็นตัวเร่งให้ GP2040 ถูกนำไปใช้อย่างแพร่หลาย แต่ก็รู้สึกว่าบน Pro Micro ก็น่าจะเกิดอะไรคล้าย ๆ กันได้

    • ต้องไม่ลืม PhobGCC ด้วย ผมเป็นหัวหน้านักพัฒนา และยังมีสายต่อยอดที่เจาะจงกับ GameCube น้อยลงอย่าง ProGCC V3, GC Ultimate, และ Phizard ด้วย

    • คำว่า “ด้วยตัวเอง” ดูจะลดทอนคุณค่าของสิ่งที่มีมาก่อนหน้าอย่างบอร์ด Brook เช่น Zero-Pi[1] ไปหน่อย จึงไม่น่าจะตรงตามประวัติศาสตร์ทั้งหมดนัก

      [1] https://www.brookaccessory.com/detail/53169470/

  • ถ้าคุณทำงานอดิเรกด้านอิเล็กทรอนิกส์ แต่ไม่อยากประกอบหรือออกแบบบอร์ดแบบ surface-mount เอง ก็มี บอร์ด RP2040 ราคาถูกและเข้าถึงง่าย อยู่มากมาย
    ผมเคยใช้ Raspberry Pi Pico($5) ซึ่งเป็นบอร์ดดี ๆ ที่มี I/O เยอะ และถ้าจ่ายเพิ่มอีกหน่อยก็มีรุ่น W ที่มี WiFi ด้วย

    ถ้ารับได้ที่ I/O ลดลงเล็กน้อย ก็สั่ง RP-2040 Zero ได้ ผมซื้อมา 6 ตัวจาก AliExpress ในราคาราว $12 มีขา I/O แค่ 23 ขา แต่มีปุ่มรีเซ็ต, USB-C และมีขนาดเล็กมาก (1.5cm x 2.5cm)

ข้อดีของบอร์ดพวกนี้คือใช้เครื่องมือพัฒนามาตรฐานของ Raspberry Pi, Micropython และ C++ ได้ดีตามเดิม และอัปโหลดเฟิร์มแวร์ผ่าน USB ได้สะดวก

  • อยากแนะนำ pico ice ด้วย ป้ายราคา $30 ส่วนใหญ่เป็นเพราะมี UP5K ติดมาด้วย แต่สำหรับโปรเจ็กต์ embedded ที่ต้องการการทำงานระดับต่ำกว่าไมโครวินาที มันเป็นตัวเลือกที่ค่อนข้างประหยัดและใช้เครื่องมือโอเพนซอร์สได้

  • แนะนำอย่างยิ่งให้ลองมองหาบอร์ดพัฒนาทางเลือกที่ใช้ RP2040 จากหลาย ๆ ที่ Pi Pico ทางการจริง ๆ แล้วกลับไม่น่าประทับใจเท่าไร และบอร์ดทางเลือกแทบทุกตัวดีกว่าในบางด้าน
    ไม่มีปุ่มรีเซ็ต, ฟอร์มแฟกเตอร์ใหญ่, มีแฟลชแค่ 2Mbit, แถมยังเป็น micro USB อีก ในปี 2024 มันดูไม่ค่อยโอเคเท่าไร จุดเด่นแทบจะมีแค่ว่าหาซื้อได้ทั่วไป

  • ผมชอบบอร์ด RP2040 ขนาดเล็ก ๆ เคยทำโปรเจ็กต์เล็ก ๆ อยู่ไม่กี่ชิ้นบนพื้นฐาน adafruit QT Py
    ถ้ามีรุ่นไร้สายก็คงดี ถ้าใช้ ESP32 QT ก็มีอยู่ แต่ฝั่ง RP2040 เท่าที่ผมเห็นเหมือนจะยังไม่มี

  • ถ้าไม่ได้ติดข้อจำกัดเรื่องพื้นที่มากจริง ๆ ผมไม่ค่อยเห็นข้อดีของ 2040 Zero เท่าไร ฟีเจอร์น้อยกว่าแต่แพงกว่า Pico ก็เล็กพออยู่แล้ว
    ถึงอย่างนั้น Pico ก็มีความเข้ากันได้ของขาที่ดีมาก ฝั่ง ESP แม้จะดูเหมือนมีขา I/O เยอะ แต่พอหักขาที่ต่อกับแฟลชภายในหรือบูตโหลดเดอร์ออกแล้ว โชคดีก็แค่พอใช้ ทำไมถึงต้องเอาขาแบบนั้นโผล่ออกมาข้างนอกด้วยก็ไม่รู้ ESP32-CAM มีขาข้อมูล 10 ขา แต่ที่ใช้ทั่วไปได้จริงมีแค่ 4 ขา

  • เหตุผลที่ย้ายจาก ESP32 ไป RP2040 คือมันเป็น อุปกรณ์ที่เสถียรกว่าและมีเอกสารดีกว่า
    ตอนนี้ความกังวลเดียวของผมเกี่ยวกับ RP2040 คือ ESP32 หลายรุ่นมี SPIRAM แต่บอร์ด RP2040 ที่มี SPIRAM หายากพอสมควร พูดตามตรง สภาพแวดล้อมการพัฒนา C ของ RP2040 ดีมากจนใช้หน่วยความจำได้คุ้มอยู่แล้ว แต่ถ้าจะทำโปรเจ็กต์ MicroPython ขนาดใหญ่ SPIRAM เป็นทรัพยากรที่มีค่ามาก นอกเหนือจากนั้น ทุกอย่างของ RP2040 ยอดเยี่ยมมาก

    • เดิมทีในบทความมีส่วนเรื่องการรองรับ Rust แต่สุดท้ายตัดออกไป ถ้าคุณเปิดรับ Rust อยู่ Rust แบบอะซิงก์ในงาน embedded ใช้งานดีมากจริง ๆ
      Dario Nieuwenhuis ซึ่งเป็นหนึ่งในบุคคลสำคัญของ Embassy เคยบรรยายภาพรวมได้ยอดเยี่ยมที่ RustNL: https://www.youtube.com/watch?v=H7NtzyP9q8E
    • ไม่เห็นด้วยอย่างมาก ผมทำงานกับ ecosystem ของ Espressif มาหลายเดือนแล้ว และมันเป็นแพลตฟอร์มไมโครคอนโทรลเลอร์ที่มีเอกสารดีที่สุดเท่าที่มีอยู่ตอนนี้
    • RP2040 มี พอร์ต QSPI แค่พอร์ตเดียว
      JLC ประกอบบอร์ด RP2040 ให้ได้ในราคาไม่ถึง $3 ต่อชิ้นถ้าสั่ง 5 ชิ้น
    • สงสัยว่าใช้ esp-idf หรือใช้ Arduino library
  • การเปรียบเทียบนี้เหมือนเอาแอปเปิลไปเทียบกับลูกพีช RP2040 เป็นแค่ชิป แต่ฝั่ง ESP32 มีตัวเลือกมากมายที่พ่วงอุปกรณ์ต่อพ่วงตามต้องการมาให้แล้ว
    มีให้เลือกทั้งเสาอากาศ WiFi/Bluetooth, ตัวควบคุมแบตเตอรี่ลิเธียมไอออน, Ethernet, คอนเน็กเตอร์สำหรับจอหรือกล้อง เป็นต้น

    ตัวเลือก CPU ก็หลากหลาย และถ้าจะให้ทำงานด้วยถ่านกระดุม การมีคอร์ที่สองหรือ WiFi ที่ไม่จำเป็นกินไฟก็สร้างความต่างได้

    ในสาย C6 ทาง Espressif ยังเปลี่ยน ISA อีกครั้ง โดยไปจาก 8266 ผ่าน ESP32 แล้วต่อไปเป็น ISA แบบ RISC-V

    สรุปแล้วเหมือนกำลังเอา SoC รุ่นแรกไปเทียบกับตระกูล SBC ที่มีอายุ 10 ปี

    • ดูเหมือนจะสับสนระหว่าง ESP32 devkit กับตัว ESP32 เอง สิ่งที่มีเสาอากาศ, ตัวควบคุมแบตเตอรี่ หรือคอนเน็กเตอร์ต่าง ๆ ติดมานั้นคือ devkit หรืออย่างน้อยก็เป็นโมดูล ตัว ESP32 เองเป็น IC ขนาดเล็กแบบเดียวกับ RP2040
      น่าจะหมายถึง devkit แบบนี้: https://docs.espressif.com/projects/esp-idf/en/latest/esp32s...

      ตัวบอร์ดนี้เองก็อิงกับโมดูลอย่าง ESP32-S3-WROOM-1 และโมดูลนั้นก็คือการเอา IC ESP32-S3 มารวมกับองค์ประกอบอำนวยความสะดวกอย่างเสาอากาศ WiFi หรือคอนเน็กเตอร์ต่าง ๆ

      ฝั่งที่เทียบกันได้ของ RP2040 คือ Raspberry Pi Pico ซึ่งก็มีส่วนเสริมเล็ก ๆ อย่างรุ่นที่มี WiFi เช่นกัน และก็มีผลิตภัณฑ์ที่แพ็กมากับอุปกรณ์ต่อพ่วงอื่นด้วย

      ทั้ง RP2040 และ ESP32 series ไม่ใช่ SBC และทั้งคู่ก็ไม่ได้อยู่ในสายสืบทอดของ SBC เลย Raspberry Pi SBC ทั้งหมดใช้ Broadcom ส่วน RP2040 เป็น IC ที่ Raspberry Pi พัฒนาขึ้นใหม่ และเท่าที่ผมรู้ก็ไม่มี IP ที่ไลเซนส์มาจาก Broadcom ด้วย

    • ในทางเทคนิคก็ถูก แต่ประเด็นสำคัญใกล้เคียงกับเรื่องการใช้งานมากกว่า RP2040 เป็นสิ่งที่มีเอกลักษณ์จริง ๆ และจู่ ๆ ก็กลายเป็นตัวเลือกที่ยอดเยี่ยมสำหรับหลายโปรเจ็กต์ ไม่ใช่แค่งานอดิเรกหรือการศึกษา แต่รวมถึง อุปกรณ์ embedded ระดับมืออาชีพ ด้วย
      ถ้ามองความสามารถต่อราคา เวอร์ชันชิปเดี่ยวตัวเดียวครอบคลุมงานได้กว้างมาก สำหรับผมนี่แหละคือความหมายของความก้าวหน้าทางเทคโนโลยี

    • ปลอดภัยกว่าถ้าจะมองว่าทั้งสองฝั่งกำลังพูดถึงตัวชิปเอง ทั้งคู่จะต่อกับที่ชาร์จแบตเตอรี่, กล้อง หรือเครื่องปฏิกรณ์นิวเคลียร์ก็ได้ แต่ อุปกรณ์ต่อพ่วง พวกนั้นไม่เกี่ยวกับการเปรียบเทียบนี้เลย

    • สงสัยว่ามีตัวเลือกนอกจีนที่พอเทียบกับ ESP ได้ในแง่ การรวมโมดูล WiFi หรือไม่ ราคาแพงกว่าก็ไม่เป็นไร

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

    แต่อีกด้านหนึ่ง ถ้ามองในเชิงมืออาชีพ มันก็ยังขาด ๆ อยู่พอสมควร อุปกรณ์ต่อพ่วงโอเค แต่พอลงรายละเอียดก็ชนข้อจำกัดได้ง่าย อินเทอร์เฟซ XIP นั้นยอดเยี่ยม แต่ไม่รองรับการเขียน จึงไม่สามารถต่อชิป FRAM เพื่อขยายหน่วยความจำได้ อินเทอร์เฟซ PIO น่าทึ่งมาก แต่พอพยายามจะทำอินเทอร์เฟซที่ซับซ้อนขึ้น ข้อจำกัดที่มีคำสั่งแค่ 2x32 ก็ค่อนข้างใหญ่ Timer/Counter อยู่ไหน? ไม่มี capacitive touch เหรอ? อะนาล็อกมีแค่สี่ขาเหรอ? ไม่มีอินพุตที่ทน 5V เหรอ? ทำไมไม่มีอินพุตสัญญาณนาฬิกาความเร็วสูงสำหรับโมดูล PIO? ทำไมถึงรันบูตโหลดเดอร์ด้วย internal ring oscillator ไม่ได้? และก็อยากให้มี USB-C PHY ด้วย

    อีกอย่างที่ทำให้แปลกใจคือ ประสิทธิภาพ ESD แย่มาก Atmega หรือ STM32 โดนไฟฟ้าสถิตบ้างเป็นครั้งคราวก็ยังพอทนได้ และการป้องกัน ESD ของพอร์ตที่เปิดออกสู่ภายนอกมักเป็นแค่ของเสริมที่มีก็ดี RP2040 นี่ถ้าไม่เพิ่มการป้องกันภายนอกให้ทุกขา แทบจะได้เห็นบางขาตายระหว่างการใช้งานปกติแน่นอน

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

  • ผมสงสัยว่า USB-C PHY หมายถึงอะไรกันแน่ USB-C เป็นคอนเน็กเตอร์ และบนมันสามารถรัน USB 1.1/2.0/3.0/3.1 ได้ ในทางปฏิบัติ RP2040 แทบจะไม่สามารถรองรับแม้แต่ USB 2.0 PHY ได้อย่างเหมาะสม

  • ต่อให้เป็นนักพัฒนาสายงานอดิเรก สุดท้ายก็จะไปทำโปรเจ็กต์ที่ซับซ้อนขึ้น และจะชนเข้ากับ ข้อจำกัด แบบนี้พอดี

  • ผมอยากรู้ว่า FRAM มีประโยชน์มากที่สุดกับแอปพลิเคชันแบบไหน เทคโนโลยีนี้ดูเจ๋งมากจริง ๆ แต่ราคาสูงเกินไป เลยยากจะเข้าใจว่าควรใช้มันเมื่อไรแทนการจับคู่ SRAM หรือ PSRAM กับ NAND

  • มาโคร Synopsys DesignWare SSI ภายใน RP2040 ดูเหมือนในความเป็นจริงน่าจะใช้กับ PSRAM หรือ FRAM ที่อ่าน/เขียนได้ เพียงแต่จากเอกสารย่อใน datasheet ของ RP2040 อย่างเดียว ดูเหมือนข้อมูลจะไม่พอสำหรับตั้งค่าแบบนั้น

  • เดิมที Raspberry Pi เริ่มมาจากองค์กรไม่แสวงหากำไรเพื่อการศึกษา

  • RP2040 ค่อนข้างเจ๋ง และจนถึงตอนนี้ผมใช้มันไปแล้วกับโปรเจ็กต์ประมาณครึ่งโหล
    แต่แนวทางแบบ “ตัวเดียวจบทุกอย่าง” ไม่ค่อยเหมาะกับผม ผมชอบใช้ไมโครคอนโทรลเลอร์ที่เล็กที่สุดซึ่งยังทำงานที่ต้องการได้มากกว่า

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

    แต่ถึงอย่างนั้น ถ้าของราคา 20 เซ็นต์ทำแบบเดียวกันได้ ก็อดคิดไม่ได้ว่าทำไมต้องใช้ไมโครคอนโทรลเลอร์ราคา $1

    • เอกสารออนไลน์ที่ใหญ่กว่ามาก โค้ดตัวอย่าง และชุมชนนักพัฒนาสายงานอดิเรกที่มีประสบการณ์ซึ่งช่วยตอบคำถามได้ มีคุณค่ามากกว่าความต่าง 80 เซ็นต์ มาก
      การใช้คอนโทรลเลอร์ที่ทรงพลังน้อยกว่าเพื่อให้แบตเตอรี่อยู่ได้นานขึ้น เป็นเหตุผลที่ดีมากพออยู่แล้ว ของถูกในทางทฤษฎีก็ดี แต่ในโปรเจ็กต์แบบทำครั้งเดียว แทบไม่มีความหมายจริง ๆ ผมจำไม่ได้ด้วยซ้ำว่าครั้งสุดท้ายที่เลือกซื้อของที่ต่างกันไม่กี่สิบเซ็นต์คือเมื่อไร มันไม่ใช่ความต่างที่รู้สึกได้จริง
  • ผมชอบ RP2040 แต่ขออธิบายว่าทำไมผมถึงย้ายออกจากมันในโปรเจ็กต์ปัจจุบัน
    อย่างแรก ประเด็นถกเถียงเกี่ยวกับ PlatformIO ทำให้ผมรู้สึกแย่มาก ผมอยากอยู่ข้างนักพัฒนาที่ได้รับผลกระทบจากความสับสนเรื่องเครื่องมือ

    อย่างที่สอง ESP32-S3 ระดับบนสุดมาในรูปแบบโมดูล และจริง ๆ แล้วแทบแค่ใส่ decoupling capacitor ไม่กี่ตัวก็วางลงบน PCB ได้เลย ส่วน RP2040 ต้องจัดวางชิ้นส่วนราวสิบกว่าตัวอย่างระมัดระวังรวมถึงคริสตัล โมดูลไม่เพียงลดความซับซ้อนในการนำไปใช้ได้มาก แต่ยังลดโอกาสที่วิศวกรแต่ละคนจะทำพลาดโง่ ๆ เรื่องการจัดวางชิ้นส่วนผ่านการทำให้เป็นมาตรฐาน

    อย่างที่สาม ESP32-S3 มีขา GPIO 14 ขาที่ตั้งค่าเป็น capacitive touch ได้ แต่ RP2040 ไม่มี โปรเจ็กต์ส่วนใหญ่ที่ใช้ RP2040 ร่วมกับ capacitive touch พึ่งพา MPR121 ซึ่ง IC ตัวนี้เลิกผลิตแล้ว และมีแนวโน้มจะทำให้เกิดการออกแบบใหม่แบบเร่งด่วนจำนวนมากในอีกไม่กี่เดือนข้างหน้า

    สักวันหนึ่ง RP2040 ก็น่าจะออกเวอร์ชันที่แรงกว่านี้หรือเบากว่านี้ รวมถึงเวอร์ชันแบบโมดูลด้วย คงไม่ถึงขั้นกลายเป็นสถานการณ์แบบ STM หรือ PIC แต่ตระกูลผลิตภัณฑ์ ESP32 เอง ถ้าคุ้นเคยแล้วก็ไม่ได้ดูแปลกขนาดนั้น

    • ดูเหมือน Espressif ก็เจอสถานการณ์คล้ายกับ Pi ในเรื่อง PlatformIO [1] จากมุมมองคนนอก ดูเหมือนว่า PlatformIO พยายามเรียกค่าใช้จ่ายรายปีจำนวนมากจาก RPi และ Espressif หลังจากมีการเพิ่มการรองรับในช่วงแรกและชุมชนบางส่วนเริ่มใช้งานแล้ว
      เป็นสถานการณ์ที่แปลก แต่ดูเหมือนว่า PlatformIO รองรับหลายแพลตฟอร์ม ยอมรับการมีส่วนร่วมจากชุมชน และสร้างสถานะที่ครองตลาดขึ้นมา ก่อนจะพยายามดึงมูลค่าโดยตรงจากผู้ผลิตภายหลัง แถมยังบล็อก PR จากชุมชนที่เพิ่มบอร์ด revision ใหม่หรือแก้บั๊กด้วย ดูรายละเอียดได้ที่ [2]

      [1] https://github.com/platformio/platform-espressif32/issues/12...

      [2] https://github.com/platformio/platform-raspberrypi/pull/36

    • เพื่อความเป็นธรรม ต้องบอกว่า RP2040 ถูกออกแบบมาให้วางชิ้นส่วนพวกนั้นได้ง่ายมาก มี layout ที่สมเหตุสมผลอยู่แทบจะแบบเดียว และเข้าถึงทุกพินที่ต้องการได้ง่าย
      เมื่อรวมกับเอกสารที่ยอดเยี่ยม มันแทบจะเป็นดีไซน์แบบ drop-in หลายชิ้นส่วนที่ใส่ครั้งเดียวแล้วไม่ต้องคิดถึงอีก ตอนแรกมันดูน่ากลัวนิดหน่อย แต่พอลงมือจริงกลับสนุกมาก

    • ผมใช้ RP2040 มาตั้งแต่เปิดตัวและไม่เคยใช้ PlatformIO เลย เลยสงสัยว่าคุณใช้มันแบบไหน และอะไรที่ทำให้มันแย่ขนาดนั้น
      การพัฒนาแบบโลคัลด้วย cmake และ pico sdk หรือ micropython ดูง่ายมากอยู่แล้ว ผมเลยไม่ค่อยเข้าใจว่าทำไมต้องเอา PlatformIO เข้ามาปนด้วย

    • ผมไม่ค่อยคิดว่าการทำสิ่งนี้เป็นโมดูลจะสร้างคุณค่าแบบมีนัยสำคัญได้ ทุกคนต้องการ form factor ที่ต่างกันเล็กน้อย และการออกแบบวงจรรอบข้างก็ง่ายมากจนโมดูลยากจะสร้างผลลัพธ์ที่ชัดเจน
      เรื่อง touch ก็เป็นฟังก์ชันเฉพาะทางแบบ niche และที่ไม่ใส่มากลับดีกว่า ฟังก์ชันนั้นควรใช้ IC อื่นต่างหาก และที่คนยังยึดติดกับชิ้นส่วนที่เลิกผลิตเพราะขี้เกียจ ไม่ใช่ปัญหาของ RPi ไม่งั้นก็ทำด้วยซอฟต์แวร์ได้

      ในประเด็นนี้ผมเห็นด้วยกับบทความต้นฉบับ และคิดว่ามูลนิธิกำหนดนิยามผลิตภัณฑ์ได้ดีมากจริง ๆ

    • ผมใส่ชิปอย่าง Atmel, STM, TI, Ambiq, Nordic ลงในงานออกแบบมาหลายสิบปีแล้ว และมันไม่ใช่ว่าจะไม่มีวิธีแก้ปัญหาแบบนั้น เด็กฝึกงานที่นั่งห่างจากผมไป 2 หลา ก็กำลังง่วนกับการวางชิ้นส่วนรอบ STM ให้ถูกต้องบน PCB แผ่นแรกของเขาอยู่ สำหรับคนที่เคยทำเรื่องแบบนี้มาบ้าง มันไม่ใช่ปัญหาที่ยากอะไร
      อย่างไรเสีย ชิ้นส่วนสิบกว่าตัวนั้นก็คือวงจร oscillator/crystal, reset holdup, ไฟเลี้ยง 3.3V และ decoupling capacitor จำนวนมาก การจูนเสาอากาศอาจยากจริง แต่ถ้าใช้ chip antenna ได้ มันก็ไม่ได้ยากขนาดนั้น

      ทุกอย่างมันเป็นมาตรฐานมากเสียจนตอนผมดู schematic ของ adafruit RP2040 Feather ผมกลับแปลกใจที่หลายส่วนดูเหมือนยกมาจาก Feather รุ่นก่อน ๆ แทบตรงตัว ความต่างระหว่าง RP2040 Feather กับ nRF52840 Feather คือมีแค่ตัวไมโครคอนโทรลเลอร์เอง วงจร timing สำหรับ RP2040 อีกทั้งหมด 5 ชิ้นส่วน และวงจรเสาอากาศสำหรับบอร์ด Nordic

      โมดูลสะดวกมากสำหรับขายในตลาดงานอดิเรก แต่ถ้าจะขายผลิตภัณฑ์จริง คุณก็ยังต้องผ่านกระบวนการรับรอง RF อยู่ดี ค่าใช้จ่ายอาจลดลงได้ แต่ต้องชั่งเองว่าต้นทุนล่วงหน้าที่สูงกว่าของการใช้โมดูล จะคุ้มกับค่ารับรองที่ต่ำลงหรือไม่ ถึงอย่างนั้น สิ่งที่ประหยัดได้จริง ๆ สุดท้ายก็มักมีแค่ขั้นตอนจูนเสาอากาศ และโดยทั่วไปนี่แก้ด้วยการปรับ BOM มากกว่าการแก้ลายวงจรครั้งใหญ่

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

IC แบบ capacitive touch ก็ไม่ได้มีแค่ตัวเดียวที่ Adafruit จัดจำหน่ายเท่านั้น ที่ Mouser มีชิ้นส่วนที่ยังไม่เลิกผลิตอยู่ 199 รายการ หากต้องการคงฟังก์ชันนี้ไว้ Adafruit ก็แค่เลือกมาสักตัวจากในนั้น ตัวที่ถูกที่สุดเป็นแพ็กเกจ TSOT จึงน่าจะสะดวกต่อการผลิตพอสมควร ถ้าผมไม่ได้เหนื่อยเกินไปจากการออกแบบและเขียนโปรแกรมของพวกนี้ที่ทำงาน บางทีคืนนี้กลับบ้านไปก็อาจลองทำสักตัวได้ ใช้เวลาประมาณหนึ่งชั่วโมงก็น่าจะออกแบบบอร์ดได้แล้ว ส่วนไดรเวอร์ I2C น่าจะใช้เวลาเพิ่มอีกไม่กี่ชั่วโมง