📃
micropython
  • Programming with MicroPython
  • MicroPython for BBC Micro:bit
    • BBC Micro:bit Overview
    • Micro:bit Code Examples
  • MicroPython for STM32
    • MicroPython Firmware Flashing for STM32
    • STM32 Code Examples
  • MicroPython for ESP32
    • WebREPL
    • ESP32 Code Examples
    • How To Blink LEDs with ESP32
    • ESP32 Programming with M5Stack Core
    • ESP32 with Dual-Channel DAC Output
    • ESP32 Networking
  • Arduino C/C++ versus MicroPython
  • Building MicroPython Firmware
  • MicroPython Benchmarking
  • MicroPython for RP2040 Pico
    • RPi Pico RP2040 Code Examples
    • PIO Programming
    • PIO Signaling and Measurement
  • CircuitPython
    • CircuitPython with Piper Make
    • CircuitPython for SAMD21
    • SAMD21 Code Examples
    • CircuitPython for STM32
    • STM32 Code Examples
    • CircuitPython for Pico RP2040
  • List of PDF Files
Powered by GitBook
On this page
  • Adafruit CircuitPython
  • Device Simulator for CircuitPython
  • ความแตกต่างระหว่าง CircuitPython และ MicroPython
  • กล่าวสรุป

Was this helpful?

CircuitPython

แนะนำการใช้งาน CircuitPython ซึ่งมีพื้นฐานในการพัฒนาแยกออกมาจาก MicroPython โดยบริษัท Adafruit Industries (USA)

PreviousPIO Signaling and MeasurementNextCircuitPython with Piper Make

Last updated 4 years ago

Was this helpful?

Adafruit CircuitPython

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

Device Simulator for CircuitPython

ความแตกต่างระหว่าง CircuitPython และ MicroPython

แม้ว่า 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 ()

https://circuitpython.org/downloads
CircuitPython Library Bundle
https://github.com/adafruit/Adafruit_CircuitPython_Bundle/releases/
adafruit-circuitpython-bundle-6.x-mpy-20201231.zip
https://circuitpython.readthedocs.io/en/latest/shared-bindings/support_matrix.html
https://circuitpython.readthedocs.io/en/latest/shared-bindings/index.html
https://circuitpython.readthedocs.io/en/latest/docs/
Microsoft Garage Project
Device Simulator Express
Code Repository
Microsoft Visual Studio (VS) Code
Circuit Playground Express
Adafruit CLUE
digitalio
analogio
pwmio
busio
CC BY-SA 4.0
https://circuitpython.org/
Source: https://circuitpython.readthedocs.io/en/latest/README.html
รูปภาพ: ตัวอย่างรายชื่อไฟล์ .mpy สำหรับไลบรารีของ CircuitPython
รูปภาพ: Device Simulator Express สำหรับบอร์ด Circuit Playboard Express
ปภาพ: Device Simulator Express สำหรับบอร์ด Adafruit CLUE