CircuitPython
แนะนำการใช้งาน CircuitPython ซึ่งมีพื้นฐานในการพัฒนาแยกออกมาจาก MicroPython โดยบริษัท Adafruit Industries (USA)
Last updated
แนะนำการใช้งาน CircuitPython ซึ่งมีพื้นฐานในการพัฒนาแยกออกมาจาก MicroPython โดยบริษัท Adafruit Industries (USA)
Last updated
CircuitPython (https://circuitpython.org/) ได้พัฒนาแยกมาจาก MicroPython ซึ่งเป็น “Open Source Implementation of Python 3" สำหรับบอร์ดไมโครคอนโทรลเลอร์ โดยมีบริษัท Adafruit เป็นผู้พัฒนาซอฟต์แวร์ เริ่มจากเวอร์ชัน 1.0 ในอดีต มาถึงเวอร์ชัน 6.0 ในปัจจุบัน (ขณะที่เขียนบทความนี้) และการที่ทางบริษัทได้ลงทุนพัฒนาและใช้ภาษา CircuitPython นั้น ก็ต้องการทำให้การเขียนโค้ดสำหรับไมโครคอนโทรลเลอร์และระบบสมองกลฝังตัวง่ายขึ้นโดยใช้ภาษาไพธอน (เมื่อเปรียบเทียบกับการเขียนด้วยภาษา C/C++ เป็นต้น)
บริษัท Adafruit ได้พัฒนาบอร์ดไมโครคอนโทรลเลอร์หลายรูปแบบที่นำมาใช้ได้กับ CircuitPython (ดูรายการบอร์ดต่าง ๆ ที่สามารถนำมาใช้ได้จากเว็บนี้ https://circuitpython.org/downloads) โดยเน้นใช้งานกับไมโครคอนโทรลเลอร์ 32 บิต ตระกูล มีตัวอย่างดังนี้
ATMEL SAMD21 (Arm Cortex-M0+) / SAMD51 (Arm Cortex-M4F)
Nordic Semiconductor nRF52840 (Arm Cortex-M4F)
STMicroelectronics STM32F4 (Arm Cortex-M4F), STM32F7/H7 (Arm Cortex-M7)
NXP iMXRT1062 (Arm Cortex-M7)
Espressif ESP32-S2 (ESP32 Series 2)
มีข้อสังเกตว่า บอร์ด ESP8266 ก็เคยใช้ได้กับ CircuitPython ในเวอร์ชันแรก แต่ถูกยกเลิกหรือตัดออกไปในช่วงเวลาต่อมา และทางบริษัทได้เจาะจงใช้ชิปไมโครคอนโทรลเลอร์ที่เชื่อมต่อหรือรองรับการใช้งาน USB ได้โดยตรง (ไม่ได้เชื่อมต่อผ่านวงจรภายนอกที่ทำหน้าที่เป็น USB-to-Serial)
นอกจากการเขียนโค้ดด้วย Python 3 ได้สำหรับไมโครคอนโทรลเลอร์แล้ว จุดเด่นของ CircuitPython ก็คงเป็นเรื่อง ความหลากหลายของไลบรารี ดูตัวอย่าง CircuitPython Library Bundle แยกตามเวอร์ชัน เช่น v5.x และ v6.x เป็นต้น ดาวน์โหลดไฟล์ .zip ได้จากเว็บ https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/ และคำสั่งต่าง ๆ ที่ทางบริษัท Adafruit ได้พัฒนามาเพื่อสนับสนุนการใช้งาน CircuitPython
ในขณะที่เขียนบทความนี้ ได้ลองดาวน์โหลดไฟล์ CircuitPython Library Bundle (.zip) เช่น
adafruit-circuitpython-bundle-6.x-mpy-20201231.zip
แล้วนำมาแตกไฟล์ จะพบว่า มีไฟล์ .mpy ซึ่งเป็นไลบรารีของ CircuitPython ให้ใช้หลายไฟล์ สามารถเลือกไฟล์ .mpy ที่ต้องการใช้ แล้วนำไปใส่ลงในไดเรกทอรี /lib
ภายใน CircuitPython Drive
ไลบรารีเหล่านี้อาจไม่สามารถใช้ได้กับทุกบอร์ดไมโครคอนโทรลเลอร์ที่ใช้ได้กับ CircuitPython และเราสามารถดูได้ว่า มีไลบรารีหรือโมดูลใดบ้างที่ใช้ได้สำหรับบอร์ดแต่ละประเภท จากตารางในหน้าเว็บนี้ https://circuitpython.readthedocs.io/en/latest/shared-bindings/support_matrix.html
รายการ Core Modules ที่มาพร้อม CircuitPython Firmware แล้ว ไม่ต้องติดตั้งไฟล์ .mpy เพิ่มจาก CircuitPython Library Bundle สามารถดูได้จาก https://circuitpython.readthedocs.io/en/latest/shared-bindings/index.html
เอกสารออนไลน์ เช่น การใช้งานคำสั่งของไลบรารีสำหรับ CircuitPython สามารถศึกษาได้จาก https://circuitpython.readthedocs.io/en/latest/docs/
หนึ่งในโครงการของ Microsoft Garage Project และด้วยความร่วมมือกับบริษัท Adafuit ได้เปิดตัว Device Simulator Express (Code Repository) ในปีค.ศ. 2019 ซอฟต์แวร์ดังกล่าวเป็น Extension สำหรับ Microsoft Visual Studio (VS) Code
ผู้ใช้สามารถเขียนโค้ดภาษา MicroPython สำหรับบอร์ด Micro:bit และภาษา CircuitPython สำหรับบอร์ดของบริษัท Adafruit ได้ (เช่น บอร์ด Circuit Playground Express และ Adafruit CLUE) นอกจากนั้นยังสามารถจำลองการทำงานของโค้ดเสมือนจริงได้ (ยกเว้นอุปกรณ์บางอย่างที่มีอยู่บนบอร์ดจริง) ซึ่งถือว่ามีประโยชน์ในกรณีที่ยังไม่มีบอร์ดหรืออุปกรณ์จริงในการทดสอบการทำงานของโค้ด
แม้ว่า CircuitPython มีพื้นฐานในการพัฒนามาจาก MicroPython แต่ก็มีหลายประเด็นในการใช้งานที่แตกต่างกัน เช่น
ใช้ได้กับบอร์ดไมโครคอนโทรลเลอร์ที่มี Native USB เท่านั้น
ไม่รองรับการเขียนโค้ดแบบ Concurrency เช่น Multi-threading และไม่รองรับการใช้งานอินเทอร์รัพท์ (Interrupts)
ไม่รองรับ module aliasing เช่น uos
กับ os
หรือ utime
กับ time
ไม่มีไลบรารีสำหรับใช้งาน Hardware Timer
แม้ว่าจะใช้ภาษาไพธอนเหมือนกัน แต่ชุดคำสั่งต่าง ๆ ในส่วนของ API มีความแตกต่างกันค่อนข้างมาก
โดยความคิดเห็นของผู้เขียน จุดเด่นของ CircuitPython คือ มีไลบรารีให้ใช้งานสำหรับโมดูลฮาร์ดแวร์ต่าง ๆ เช่น โมดูลเซ็นเซอร์หลากหลายชนิด เป็นต้น ได้รับการพัฒนาและดูแลโดยบริษัท Adafruit มีการจัดทำเอกสารออนไลน์แนะนำการใช้งาน ซึ่งอาจเหมาะสำหรับผู้เริ่มต้น (Beginners)
อย่างไรก็ตาม MicroPython น่าจะเป็นตัวเลือกที่เหมาะสมกว่า CircuitPython สำหรับการเรียนรู้และเขียนโปรแกรมฮาร์ดแวร์ในเชิงลึก โดยใช้ภาษาไพธอน เช่น หลักการทำงานของอินเทอร์รัพท์ การใช้วงจร Timer ในไมโครคอนโทรลเลอร์
เผยแพร่ภายใต้ลิขสิทธิ์ Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)