สร้างบอร์ด CH32V003 ไซส์ Arduino Nano ชิป RISC-V ราคา 70 บาท!

ฮายยยยชาว Maker! ทุกคนรู้ดีว่าบอร์ดตระกูล Arduino นั้นคือไอเทมประจำตัวของพวกเรา 💙 แต่ถ้าเราบอกว่ามีชิปไมโครคอนโทรลเลอร์ที่ประมวลผลเร็วกว่า Arduino Uno แถมราคาค่าตัวตกอยู่ที่แค่ชิ้นละ 3-4 บาท (ประมาณ $0.10) ซื้อลูกอมยังแพงกว่า! คุณจะเชื่อไหมครับ?

ขอแนะนำให้รู้จักกับ CH32V003F4P6 ชิปสถาปัตยกรรม RISC-V 32-bit โคตรตึงจากค่าย WCH! และวันนี้เราจะพาไปดูโปรเจกต์ของคุณ Sainisagar ที่นำชิปตัวนี้มาออกแบบแผ่นวงจร (PCB) ใหม่ทั้งหมด ให้อยู่ในร่างของ Arduino Nano เพื่อให้เราสามารถเอาไปเสียบสายไฟบน Breadboard ทดลองโปรเจกต์ได้แบบฟินๆ ในงบที่ถูกแสนถูกครับ!

ภาพปก: หน้าตาบอร์ด CH32V003F4P6 ที่ถูกออกแบบใหม่ให้มีขนาดเท่ากับ Arduino Nano
💡 Globalbyte Trick: การวาดลายวงจรและสั่งทำ PCB ใช้เอง เป็นอีกขั้นของความสนุกสำหรับชาว Maker ครับ! แต่ถ้าเพื่อนๆ เพิ่งเริ่มต้น ยังไม่อยากสั่งผลิตบอร์ดเอง หรือไม่อยากรอนำเข้าของจากจีนนานๆ ทางร้าน Globalbyte ของเรามีบอร์ดไมโครคอนโทรลเลอร์เจ๋งๆ อย่าง Arduino, ESP32 รวมถึงอุปกรณ์อิเล็กทรอนิกส์และเซนเซอร์ต่างๆ ให้เลือกช้อปเพียบ! ส่งไวจากไทย แวะมาเตรียมของไปลุยโปรเจกต์กันได้เลยครับ!

CH32V003 คืออะไร? ทำไมถึงน่าสนใจ?

ต่างจากชิปตระกูล ARM Cortex-M ทั่วไป เจ้า CH32V003 ใช้สถาปัตยกรรมแบบเปิด QingKe RISC-V2A ครับ ความเจ๋งคือมันมาในแพ็กเกจ TSSOP-20 ที่มีขนาดเล็ก แต่ยังพอจะใช้หัวแร้งบัดกรีด้วยมือไหว (Hand-solderable) สเปกคร่าวๆ คือ:

  • ความเร็ว (Clock Speed): 48MHz (เร็วกว่า ATmega328P ใน Arduino Uno ซะอีก!)
  • หน่วยความจำ: 16KB Flash และ 2KB SRAM
  • การเชื่อมต่อ: I2C, SPI, USART, 10-bit ADC 8 ช่อง, Timers และ Op-amp ในตัว
  • การโปรแกรม: ใช้สายสัญญาณเส้นเดียวที่เรียกว่า SWIO (ขา PD1) ผ่านโปรแกรมเมอร์ WCH-LinkE

บนบอร์ดนี้ใส่อะไรมาให้บ้าง? (Components & Schematic)

เป้าหมายของโปรเจกต์นี้คือการทำบอร์ดแบบ Minimal, ราคาถูก และ Open-source ที่ใครๆ ก็ทำตามได้ เขาเลยใส่ชิ้นส่วนที่ทำให้ใช้งานง่ายขึ้นเหมือนซื้อ Arduino เลยครับ:

  • พอร์ต USB-C: สำหรับจ่ายไฟและสื่อสารผ่านชิปแปลงสัญญาณ CH340C (ไม่ต้องหาตัวแปลงมาต่อแยก)
  • LDO Regulator: ใช้เบอร์ HT7833 เพื่อแปลงไฟ 5V เป็น 3.3V ให้บอร์ดทำงานเสถียรๆ
  • ตัวเก็บประจุ (Capacitors) และ Crystal 24MHz: อัดแน่นมาให้ครบเพื่อความนิ่งของสัญญาณ
  • ไฟ LED: มีไฟแจ้งเตือนสถานะ TX, RX และไฟใช้งานทั่วไปอีก 2 ดวง
  • ขา Header: ดึงขา GPIO ทั้งหมดออกมาเป็นระยะพิตช์ 2.54mm (เท่ากันกับขาอุปกรณ์บ้านหม้อทั่วไป) เสียบลง Breadboard ได้ทันที
ผังวงจร (Schematic) ที่ออกแบบมาอย่างสมบูรณ์แบบ
ลายวงจร PCB 2 เลเยอร์ ที่ออกแบบใน EasyEDA สั่งผลิตกับ JLCPCB ในราคาโปรโมชั่นแค่ 70 กว่าบาท ($2)
การบัดกรีอุปกรณ์ SMD ขนาด 0402 ถือเป็นงานที่ท้าทายสุดๆ สำหรับสายบัดกรีมือ!
ใช้ตัวโปรแกรมเมอร์ WCH-LinkE ต่อผ่านขา 3V3, SWIO และ GND แค่ 3 เส้น
หน้าตาของโปรแกรม MounRiver Studio IDE สำหรับเขียนโค้ด
ทดสอบต่อใช้งานบอร์ดบน Breadboard

ซอฟต์แวร์และการเขียนโค้ด (Software Environment)

บอร์ดนี้เราจะไม่ใช้ Arduino IDE ในการเขียนนะครับ แต่จะใช้โปรแกรมฟรีที่ชื่อว่า MounRiver Studio (มีเบสมาจาก Eclipse) ซึ่งเขาตั้งค่า RISC-V GCC compiler มาให้พร้อมใช้งานแล้ว การเขียนโค้ดจะเป็นภาษา C ที่เรียกใช้ Peripheral library (คล้ายๆ ของ STM32) และอย่าลืมว่าต้องมีตัวเบิร์นโปรแกรม WCH-LinkE ด้วยนะ ซึ่งแยกขายในราคาประมาณ 170-180 บาท ($5) ครับ

Blink Test Code

ธรรมเนียมปฏิบัติเวลาทำบอร์ดเสร็จ คือต้องสั่งให้ไฟ LED กะพริบครับ! ถ้าไฟติดแปลว่า MCU รอด, คริสตัลรอด, และ Toolchain เซ็ตมาถูกต้อง ลองดูโครงสร้างโค้ดกัน:

#include "debug.h"

void GPIO_Config(void)
{
    GPIO_InitTypeDef GPIO_InitStructure = {0};
    /* Enable GPIOC clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
    
    /* PC3 as push-pull output */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_30MHz;
    GPIO_Init(GPIOC, &GPIO_InitStructure);
    
    /* LED OFF initially */
    GPIO_ResetBits(GPIOC, GPIO_Pin_3);
}

int main(void)
{
    SystemCoreClockUpdate();
    Delay_Init();
    GPIO_Config();
    
    while(1)
    {
        GPIO_SetBits(GPIOC, GPIO_Pin_3);   // LED ON
        Delay_Ms(500);
        GPIO_ResetBits(GPIOC, GPIO_Pin_3); // LED OFF
        Delay_Ms(500);
    }
}

จะเห็นว่าโครงสร้างมีการตั้งค่า (คล้าย void setup()) และมี while(1) (คล้าย void loop()) ใน Arduino ครับ โค้ดนี้จะสั่งให้ LED ขา PC3 กะพริบทุกๆ 500 มิลลิวินาที

⚠️ คำแนะนำเพิ่มเติม: หากคุณอยากสั่งแผ่นปริ้นท์และทำบอร์ดนี้ด้วยตัวเอง การบัดกรีอุปกรณ์ไซส์ 0402 ด้วยมือเป็นอะไรที่โหดหินมาก แนะนำให้ใช้ Solder paste และปืนเป่าลมร้อน (Hot air) จะดีที่สุดครับ หรือถ้าไม่อยากเหนื่อย ทาง JLCPCB ก็มีบริการ SMT assembly ช่วยประกอบชิ้นส่วนมาให้เสร็จสรรพเลยครับ!
💡 แวะอ่านเพิ่มเติม: โปรเจกต์นี้มีไฟล์ให้ดาวน์โหลดแบบ Open-Source ครบทุกอย่างเลยครับ ทั้ง ไฟล์ Gerber, BOM และ Pick and Place (CPL) หากเพื่อนๆ เข้าไป อ่านบทความต้นฉบับ แล้วรู้สึกว่าคำศัพท์เชิงอิเล็กทรอนิกส์บางจุดซับซ้อนไป สามารถก๊อปปี้ลิงก์ไปให้ NotebookLM ของ Google ช่วยสรุปอธิบายการทำงานของบอร์ดแบบภาษาชาวบ้านให้ฟังได้นะครับ จะช่วยให้ทำโปรเจกต์ได้ง่ายขึ้นเยอะเลย!

🚀 สนุกกับไอเดีย Maker สุดตึงไปกับ Globalbyte!

ไม่ว่าคุณจะเป็นสายออกแบบ PCB เอง หรือสายหาซื้อบอร์ดสำเร็จรูปในไทยไปลุยโปรเจกต์เลย ทักมาให้เราจัดของให้ได้นะครับ!

คำเตือน / ข้อมูลอ้างอิง: บทความนี้เป็นการสรุปและสกัดข้อมูลมาจากต้นฉบับภาษาอังกฤษ (Hackster.io) การออกแบบและสั่งผลิต PCB มีรายละเอียดเชิงเทคนิคและข้อควรระวังในการเดินสายกราวด์ (Ground plane) ขอแนะนำให้เพื่อนๆ ตรวจสอบคู่มือและไฟล์ออกแบบ (EasyEDA) จากผู้พัฒนาโดยตรงก่อนนำไปสั่งผลิตจริงนะครับ

ที่มาต้นฉบับ: Arduino Nano Sized CH32V003 Dev Board (Hackster.io)

 

แท็ก


Blog posts

เข้าสู่ระบบ

ลืมรหัสผ่านใช่ไหม?

ยังไม่มีบัญชีใช่ไหม?
สร้างบัญชี