CircuitPython
แนะนำการใช้งาน CircuitPython ซึ่งมีพื้นฐานในการพัฒนาแยกออกมาจาก MicroPython โดยบริษัท Adafruit Industries (USA)
Last updated
Was this helpful?
แนะนำการใช้งาน CircuitPython ซึ่งมีพื้นฐานในการพัฒนาแยกออกมาจาก MicroPython โดยบริษัท Adafruit Industries (USA)
Last updated
Was this helpful?
CircuitPython () ได้พัฒนาแยกมาจาก MicroPython ซึ่งเป็น “Open Source Implementation of Python 3" สำหรับบอร์ดไมโครคอนโทรลเลอร์ โดยมีบริษัท Adafruit เป็นผู้พัฒนาซอฟต์แวร์ เริ่มจากเวอร์ชัน 1.0 ในอดีต มาถึงเวอร์ชัน 6.0 ในปัจจุบัน (ขณะที่เขียนบทความนี้) และการที่ทางบริษัทได้ลงทุนพัฒนาและใช้ภาษา CircuitPython นั้น ก็ต้องการทำให้การเขียนโค้ดสำหรับไมโครคอนโทรลเลอร์และระบบสมองกลฝังตัวง่ายขึ้นโดยใช้ภาษาไพธอน (เมื่อเปรียบเทียบกับการเขียนด้วยภาษา C/C++ เป็นต้น)
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)
แล้วนำมาแตกไฟล์ จะพบว่า มีไฟล์ .mpy ซึ่งเป็นไลบรารีของ CircuitPython ให้ใช้หลายไฟล์ สามารถเลือกไฟล์ .mpy ที่ต้องการใช้ แล้วนำไปใส่ลงในไดเรกทอรี /lib
ภายใน CircuitPython Drive
แม้ว่า CircuitPython มีพื้นฐานในการพัฒนามาจาก MicroPython แต่ก็มีหลายประเด็นในการใช้งานที่แตกต่างกัน เช่น
ใช้ได้กับบอร์ดไมโครคอนโทรลเลอร์ที่มี Native USB เท่านั้น
ไม่รองรับการเขียนโค้ดแบบ Concurrency เช่น Multi-threading และไม่รองรับการใช้งานอินเทอร์รัพท์ (Interrupts)
ไม่รองรับ module aliasing เช่น uos
กับ os
หรือ utime
กับ time
ไม่มีไลบรารีสำหรับใช้งาน Hardware Timer
แม้ว่าจะใช้ภาษาไพธอนเหมือนกัน แต่ชุดคำสั่งต่าง ๆ ในส่วนของ API มีความแตกต่างกันค่อนข้างมาก
โดยความคิดเห็นของผู้เขียน จุดเด่นของ CircuitPython คือ มีไลบรารีให้ใช้งานสำหรับโมดูลฮาร์ดแวร์ต่าง ๆ เช่น โมดูลเซ็นเซอร์หลากหลายชนิด เป็นต้น ได้รับการพัฒนาและดูแลโดยบริษัท Adafruit มีการจัดทำเอกสารออนไลน์แนะนำการใช้งาน ซึ่งอาจเหมาะสำหรับผู้เริ่มต้น (Beginners)
อย่างไรก็ตาม MicroPython น่าจะเป็นตัวเลือกที่เหมาะสมกว่า CircuitPython สำหรับการเรียนรู้และเขียนโปรแกรมฮาร์ดแวร์ในเชิงลึก โดยใช้ภาษาไพธอน เช่น หลักการทำงานของอินเทอร์รัพท์ การใช้วงจร Timer ในไมโครคอนโทรลเลอร์
บริษัท Adafruit ได้พัฒนาบอร์ดไมโครคอนโทรลเลอร์หลายรูปแบบที่นำมาใช้ได้กับ CircuitPython (ดูรายการบอร์ดต่าง ๆ ที่สามารถนำมาใช้ได้จากเว็บนี้ ) โดยเน้นใช้งานกับไมโครคอนโทรลเลอร์ 32 บิต ตระกูล มีตัวอย่างดังนี้
นอกจากการเขียนโค้ดด้วย Python 3 ได้สำหรับไมโครคอนโทรลเลอร์แล้ว จุดเด่นของ CircuitPython ก็คงเป็นเรื่อง ความหลากหลายของไลบรารี ดูตัวอย่าง แยกตามเวอร์ชัน เช่น v5.x และ v6.x เป็นต้น ดาวน์โหลดไฟล์ .zip ได้จากเว็บ และคำสั่งต่าง ๆ ที่ทางบริษัท Adafruit ได้พัฒนามาเพื่อสนับสนุนการใช้งาน CircuitPython
ในขณะที่เขียนบทความนี้ ได้ลองดาวน์โหลดไฟล์ CircuitPython Library Bundle (.zip) เช่น
ไลบรารีเหล่านี้อาจไม่สามารถใช้ได้กับทุกบอร์ดไมโครคอนโทรลเลอร์ที่ใช้ได้กับ CircuitPython และเราสามารถดูได้ว่า มีไลบรารีหรือโมดูลใดบ้างที่ใช้ได้สำหรับบอร์ดแต่ละประเภท จากตารางในหน้าเว็บนี้
รายการ Core Modules ที่มาพร้อม CircuitPython Firmware แล้ว ไม่ต้องติดตั้งไฟล์ .mpy เพิ่มจาก CircuitPython Library Bundle สามารถดูได้จาก
เอกสารออนไลน์ เช่น การใช้งานคำสั่งของไลบรารีสำหรับ CircuitPython สามารถศึกษาได้จาก
หนึ่งในโครงการของ และด้วยความร่วมมือกับบริษัท Adafuit ได้เปิดตัว () ในปีค.ศ. 2019 ซอฟต์แวร์ดังกล่าวเป็น Extension สำหรับ
ผู้ใช้สามารถเขียนโค้ดภาษา MicroPython สำหรับบอร์ด Micro:bit และภาษา CircuitPython สำหรับบอร์ดของบริษัท Adafruit ได้ (เช่น บอร์ด และ ) นอกจากนั้นยังสามารถจำลองการทำงานของโค้ดเสมือนจริงได้ (ยกเว้นอุปกรณ์บางอย่างที่มีอยู่บนบอร์ดจริง) ซึ่งถือว่ามีประโยชน์ในกรณีที่ยังไม่มีบอร์ดหรืออุปกรณ์จริงในการทดสอบการทำงานของโค้ด
ไม่มีไลบรารีหรือโมดูล อย่างเช่น machine
ซึ่งเกี่ยวข้องกับการใช้งานวงจรต่าง ๆ ภายในไมโครคอนโทรลเลอร์ และเป็นโมดูลที่สำคัญของ MicroPython แต่ CircuitPython ก็มีโมดูลอื่นให้ใช้แทน เช่น , , เป็นต้น
เผยแพร่ภายใต้ลิขสิทธิ์ Attribution-ShareAlike 4.0 International ()