ตัวเลือกสำหรับการเขียนโปรแกรมไมโครคอนโทรลเลอร์ Atmel SAMD21

<rawat.s>
3 min readJan 27, 2020

--

‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍

จากบทความที่ได้นำเสนอไปในหัวข้อ “แนวทางการเรียนรู้: Embedded Systems — Microcontroller Programming” ลองมาดูกันว่า ถ้าเราเลือกชิปไมโครคอนโทรลเลอร์แล้ว Atmel SAMD21 (32-bit ARM Cortex-M0+, 48MHz, 256KB Flash, 32KB SRAM, 3.3V operating voltage) เป็นกรณีตัวอย่าง จะมีแนวทางเรียนรู้ต่อไปอย่างไรบ้าง

หน้าเว็บของบริษัท Atmel/Microchip แสดงข้อมูลเกี่ยวกับชิป ATSAMD21G18

คำถาม: มีภาษาคอมพิวเตอร์ใดบ้างที่เราสามารถเลือกใช้ได้ ?

‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍

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

  • C/C++: เราสามารถใช้ Atmel/Microchip AVR Studio 7 IDE (Windows) + GCC ARM toolchain และเขียนโค้ดแบบ Bare Metal Programming (โดยการเข้าถึงรีจิสเตอร์ภายในไมโครคอนโทรเลอร์ผ่านตัวแปรที่เป็นพอยน์เตอร์) หรือจะใช้ไลบรารีของ Advanced Software Framework (ASF) ในการเขียนโค้ดก็ได้ แต่ ASF เหมาะสำหรับการใช้ภาษา C เป็นหลัก
  • Arduino C/C++: เนื่องจากทาง Arduino ได้พัฒนาบอร์ดไมโครคอนโทรลเลอร์โดยเลือกใช้ SAMD21 เช่น บอร์ด Arduino ZERO หรือ Arduino MKR Series ดังนั้นจึงสามารถใช้ Arduino IDE และ Arduino API & Libraries ในการเขียนโค้ดได้ และหลายคนคงมีประสบการณ์ในการเขียนโค้ดด้วย Arduino มาบ้างแล้ว
  • Adafruit CircuitPython: เป็นภาษาที่อ้างอิง Python3 สำหรับไมโครคอนโทรลเลอร์ และพัฒนาเพิ่มเติมจาก MicroPython ในกรณีนี้อาจเหมาะสำหรับคนที่เคยเขียนโค้ด Python มาบ้างแล้ว
  • Adafruit Maker MakeCode / Microsoft Static TypeScript: สามารถเขียนโปรแกรมโดยการต่อบล็อก (Block-based Programming) ในลักษณะ Drap & Drop ตามรูปแบบของ Google Blockly หรือจะเขียนแบบ Text-based โดยใช้ภาษา Static TypeScript (STS) / PXT ที่พัฒนาโดยบริษัท Microsoft ก็ได้ (เหมือนกรณีของ BBC Micro:bit แตกต่างที่ชิปไมโครคอนโทรลเลอร์ แต่ใช้ ARM Cortex-M0+ เหมือนกัน ถ้าเคยใช้มาบ้างแล้ว ก็จะเรียนรู้ได้ไม่ยาก) และสามารถเขียนโค้ดบนหน้าเว็บ (Web-based Programming) ที่ให้บริการโดยบริษัท Adafruit ได้ ไม่ต้องติดตั้งโปรแกรมในคอมพิวเตอร์ของผู้ใช้
  • TinyGo: ใช้ภาษา Golang ในการเขียนโค้ดเพื่อแปลงให้เป็นโปรแกรมที่สามารถนำไปใช้กับไมโครคอนโทรลเลอร์ได้
  • อื่น ๆ

คำถาม: เลือกบอร์ดไมโครคอนโทรลเลอร์ SAMD21 แบบไหนดี ?

‍‍‍‍‍‍ ‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍

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

  • บอร์ด SAM D21 Xplained Pro Evaluation Kit: เป็นของบริษัท Atmel/Microchip และบนบอร์ดมีชิปรุ่น SAMD21J18A
  • บอร์ด Arduino ZERO: เป็นบอร์ดที่ใช้ชิป ATSAMD21G18 และมีขนาดบอร์ดเท่ากับ Arduino UNO (UNO Compatible) แต่ทำงานที่ระดับแรงลอจิก 3.3V บอร์ด ZERO มีวงจรที่เรียกว่า ATMEL embedded debugger (EDBG) เป็น Onboard Programmer & Debugger (Programming USB Port) รวมอยู่ด้วย ศึกษาเพิ่มเติมได้จากไฟล์ Schematic (.pdf)
  • บอร์ด Arduino MKR ZERO: เป็นบอร์ดที่ใช้ชิป ATSAMD21G18 เช่นกัน แต่เป็นบอร์ดที่มีขนาดเล็กกว่า Arduino UNO และเหมาะสำหรับการเสียบขาใช้งานและต่อวงจรบนเบรดบอร์ด นอกจากนั้นยังมีวงจรชาร์จแบตเตอรี่ Li-Po 3.7V single cell รวมอยู่ด้วย สามารถดาวน์โหลดไฟล์ Schematic (.pdf) ได้ด้วย
  • บอร์ด Arduino MKR Series: เหมือนบอร์ด MKR ZERO แต่มีการแบ่งเป็นบอร์ดประเภทต่าง ๆ เช่น จำแนกตามโมดูลสื่อสารที่มีอยู่บนบอร์ด (เหมาะสำหรับงานด้าน IoT) ได้แก่ MKR1000 Wi-Fi, MKR WiFi 1010, MKR GSM 1400, MKR WAN 1300 (LoRa), MKR WAN 1310 (LoRa), MKR NB 1500 (NB-IoT) และ MKR FOX 1200 (SigFox) เป็นต้น
  • บอร์ดของบริษัท Adafruit (USA) ซึ่งเป็น Open-Source Hardware (OSHW): Feather M0 Express, Feather M0 Basic Proto, Feather M0 RFM96 (LoRa, 433MHz), Adafruit Feather M0 with RFM95 (LoRa, 915 MHz), Feather M0 WiFi (ATWINC1500) และ ItsyBitsy M0 Express เป็นต้น บอร์ดทั้งหมดนี้ใช้ชิป ATSAMD21G18 เหมือนกัน และมี SPI Flash Chip (เช่น ขนาด 2MB) ใส่เพิ่มไว้บนบอร์ด ในกรณีที่ต้องการเขียนข้อมูลเป็น Data Logger หรือเป็น File System สำหรับ CircuitPython
  • บอร์ดของบริษัท Sparkfun (USA): SAMD21 Mini Breakout และ SAMD21 Dev Breakout ซึ่งใช้ชิป เหมือนกัน และเป็น Open-Source Hardware (OSHW)
  • บอร์ด RobotDyn SAMD21 M0: เป็นของบริษัท RobotDyn ในประเทศจีน บอร์ดมีขนาดประมาณ Arduino ZERO แต่ไม่มีวงจร Atmel EDBG อยู่บนบอร์ด มีไฟล์ Schematic (.pdf) และ Pinout (.pdf) ของบอร์ดให้ดาวน์โหลดด้วย
  • บอร์ด RobotDyn SAMD21 M0-Mini: เป็นเวอร์ชันที่มีขนาดเล็กกว่า RobotDyn SAMD21 M0 เหมาะสำหรับนำไปต่อวงจรบนเบรดบอร์ด มีไฟล์ Schematic (.pdf) และ Pinout (.pdf) ของบอร์ดให้ดาวน์โหลด
  • บอร์ด Wio Lite W600 Wireless Development Board (WiFi): มีชิป ATSAMD21G18 ที่ใช้งานร่วมกับโมดูลสื่อสารไร้สาย Wi-Fi (2.4GHz) บนบอร์ดเดียวกัน
  • บอร์ด Wio Lite MG126 Wireless Development Board (Bluetooth): มีชิป ATSAMD21G18 ที่ใช้งานร่วมกับโมดูลสื่อสารไร้สาย Bluetooth (MG126) บนบอร์ดเดียวกัน
  • บอร์ด Seeeduino Cortex-M0+(ATSAMD21G18): บอร์ดมีขนาดเท่ากับ Arduino UNO และใช้พอร์ต USB Type-C
  • บอร์ด Seeeduino XIAO SAMD21 Cortex M0+ (ATSAMD21G18): เป็นบอร์ดที่มีขนาดเล็กกว่าบอร์ดอื่น ๆ และใช้พอร์ต USB Type-C
  • บอร์ด Gravitech Chili (Basic & Plus): ออกแบบและผลิตในประเทศไทยโดยบริษัท Gravitech (Thailand) และทางบริษัทได้ออกแบบสำหรับ CAT LoRA Starter Kit (ATSAMD21+ AcSIP S767) ด้วยเช่นกัน
  • บอร์ด Omzlo CANZERO และ NoCAN Platform จากประเทศกรีซ ที่เน้นการเชื่อมระบบด้วย CAN Bus สำหรับนำไปใช้งานด้าน IoT ก็ใช้ชิป ATSAMD21 เป็นตัวประมวลผลหลักเช่นกัน

จากที่ได้สำรวจตามรายการที่ได้นำเสนอไปนั้น จะเห็นว่า มีบอร์ดที่ใช้ไมโครคอนโทรลเลอร์รุ่น ATSAMD21 ที่มีให้เลือกอยู่จำนวนมาก (มากกว่า 20 บอร์ด) และก็สามารถใช้ภาษาคอมพิวเตอร์อื่นได้อีกนอกเหนือจาก C/C++ สำหรับเขียนโปรแกรมไมโครคอนโทรลเลอร์ …

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

Creative Commons, Attribution-Non Commercial-Share Alike 4.0 International (CC BY-NC-SA 4.0)

--

--

<rawat.s>
<rawat.s>

Written by <rawat.s>

I'm Thai and working in Bangkok/Thailand.

No responses yet