ปัจจุบันภาษา Python นับป็นภาษาที่ใช้งานได้อย่างหลากหลาย ไม่ยกว้นแม้แต่ทำโครงการเกี่ยวกับ Internet of Things หรือ IoT โดยในที่นี้ขอแนะนำทูลที่พัฒนาจากภาษา Python ที่นิยมในปัจบัน
1. MicroPython (www.micropython.org)
MicroPython เป็นทูลสร้างโครงการ IoT ที่พัฒนามาจากภาษา Python ที่ได้รับการปรับแต่งให้ทำงานได้บนไมโครคอนโทรลเลอร์และอุปกรณ์ที่มีทรัพยากรจำกัด เช่น หน่วยความจำและความเร็วของโปรเซสเซอร์ต่ำกว่าอุปกรณ์คอมพิวเตอร์ทั่วไป ซึ่ง MicroPython ถูกออกแบบมาเพื่อการพัฒนาโปรแกรมบนฮาร์ดแวร์ขนาดเล็ก เช่น Arduino, ESP8266, ESP32, Raspberry Pi Pico และบอร์ดไมโครคอนโทรลเลอร์อื่นๆ
คุณสมบัติของ MicroPython
-
ขนาดเล็กและเบา
- MicroPython มีขนาดเล็กและใช้ทรัพยากรระบบน้อยเมื่อเทียบกับ Python มาตรฐาน (CPython)
- สามารถรันบนอุปกรณ์ที่มี RAM ขนาดต่ำเพียงไม่กี่สิบกิโลไบต์
-
รองรับการเขียนโปรแกรมในรูปแบบ Python
- ใช้โครงสร้างภาษา Python เวอร์ชัน 3 ทำให้นักพัฒนาที่คุ้นเคยกับ Python สามารถเริ่มใช้งานได้ง่าย
-
เข้าถึงฮาร์ดแวร์ได้โดยตรง
- MicroPython มีไลบรารีที่ช่วยให้นักพัฒนาสามารถควบคุมพอร์ต I/O, UART, I2C, SPI และส่วนต่างๆ ของฮาร์ดแวร์ได้ง่าย
-
REPL (Read-Eval-Print Loop)
- สามารถทดลองรันคำสั่ง Python ได้แบบโต้ตอบผ่าน Serial Console
-
สนับสนุนการทำงานบนบอร์ดไมโครคอนโทรลเลอร์ยอดนิยม
- เช่น ESP8266, ESP32, STM32, Teensy และ Raspberry Pi Pico
การประยุกต์ใช้งาน MicroPython
MicroPython มักถูกใช้งานใน
- IoT (Internet of Things): เช่น การควบคุมอุปกรณ์บ้านอัจฉริยะ
- ระบบอัตโนมัติ: เช่น ระบบเปิด-ปิดไฟด้วยเซนเซอร์
- การทดลองทางวิทยาศาสตร์: เช่น การเก็บข้อมูลจากเซนเซอร์ต่างๆ
- การศึกษา: ใช้สอนการเขียนโปรแกรมในระดับพื้นฐานไปจนถึงการพัฒนาฮาร์ดแวร์
ตัวอย่างโค้ดใน MicroPython
-ตัวอย่างโค้ดสำหรับเปิด-ปิด LED บนบอร์ดไมโครคอนโทรลเลอร์
python |
ข้อดีของ MicroPython
- เหมาะสำหรับผู้ที่ต้องการพัฒนาโปรแกรมบนฮาร์ดแวร์แบบง่ายๆ โดยใช้ภาษา Python
- ช่วยลดเวลาในการพัฒนาซอฟต์แวร์บนไมโครคอนโทรลเลอร์
- ชุมชนผู้ใช้งานและเอกสารประกอบหลากหลาย
ข้อจำกัดของ MicroPython
- ประสิทธิภาพไม่สูงเท่ากับการเขียนโปรแกรมด้วยภาษา C/C++
- รองรับการทำงานบนฮาร์ดแวร์บางประเภทเท่านั้น (ขึ้นอยู่กับการสนับสนุนจาก MicroPython Firmware)
2. CircuitPython (www.circuitpython.org)
CircuitPython เป็นเวอร์ชันของภาษา Python ที่ได้รับการปรับปรุงมาจาก MicroPython โดยบริษัท Adafruit Industries เพื่อให้นักพัฒนาใช้งานได้ง่ายยิ่งขึ้น โดยเฉพาะกับโปรเจกต์ที่เกี่ยวข้องกับการพัฒนาอุปกรณ์ฮาร์ดแวร์ เช่น การใช้งานบอร์ดไมโครคอนโทรลเลอร์และเซ็นเซอร์ต่างๆ
คุณสมบัติของ CircuitPython
-
ใช้งานง่าย
- CircuitPython ถูกออกแบบมาให้เหมาะสำหรับผู้เริ่มต้น โดยลดความซับซ้อนและปรับปรุงการใช้งานให้ง่ายยิ่งกว่า MicroPython
-
การเชื่อมต่อกับคอมพิวเตอร์แบบ USB Drive
- เมื่อเสียบบอร์ดที่รองรับ CircuitPython กับคอมพิวเตอร์ มันจะปรากฏเป็นไดรฟ์ USB (เช่น ไดรฟ์แฟลช) คุณสามารถลากและวางไฟล์
.py
ลงไปได้โดยตรง
- เมื่อเสียบบอร์ดที่รองรับ CircuitPython กับคอมพิวเตอร์ มันจะปรากฏเป็นไดรฟ์ USB (เช่น ไดรฟ์แฟลช) คุณสามารถลากและวางไฟล์
-
รองรับ Python 3.x
- CircuitPython ใช้โครงสร้างภาษา Python 3.x ทำให้นักพัฒนาที่คุ้นเคยกับ Python มาตรฐานสามารถเริ่มต้นได้ทันที
-
ไลบรารีพร้อมใช้งาน
- มีไลบรารีและเอกสารประกอบที่หลากหลายและใช้งานง่าย โดยเฉพาะไลบรารีที่ช่วยในการควบคุมเซ็นเซอร์และโมดูลอิเล็กทรอนิกส์ต่างๆ เช่น LED, มอเตอร์ และเซ็นเซอร์อุณหภูมิ
-
REPL (Read-Eval-Print Loop)
- มีการสนับสนุน REPL ผ่าน Serial Console เหมือนกับ MicroPython สำหรับการทดลองรันคำสั่งแบบโต้ตอบ
-
การสนับสนุนจากชุมชน Adafruit
- มีเอกสาร ตัวอย่างโค้ด และฟอรัมที่ช่วยให้นักพัฒนาสามารถเรียนรู้และแก้ไขปัญหาได้ง่าย
ข้อแตกต่างระหว่าง CircuitPython กับ MicroPython
คุณสมบัติ | CircuitPython | MicroPython |
---|---|---|
การพัฒนา | โดย Adafruit | โครงการโอเพ่นซอร์สแยกต่างหาก |
การใช้งาน USB Drive | รองรับเสมอ | อาจต้องตั้งค่าเพิ่มเติม |
ฮาร์ดแวร์ที่รองรับ | สนับสนุนบอร์ดของ Adafruit เป็นหลัก | รองรับฮาร์ดแวร์หลายยี่ห้อ |
การเรียนรู้ | ออกแบบมาเพื่อให้ผู้เริ่มต้นใช้งานง่าย | ต้องการความเข้าใจทางเทคนิคมากกว่า |
ความยืดหยุ่น | ใช้งานง่ายแต่ปรับแต่งได้จำกัด | ยืดหยุ่นและปรับแต่งได้มากกว่า |
ตัวอย่างโค้ดใน CircuitPython
ตัวอย่างด้านล่างคือการกระพริบไฟ LED บนบอร์ด
import board led = digitalio.DigitalInOut(board.D13) # กำหนดขา D13 ให้ควบคุม LED while True: |
การประยุกต์ใช้งาน CircuitPython
- การทดลองฮาร์ดแวร์
- ควบคุม LED, มอเตอร์, หรือเซ็นเซอร์อย่างง่าย
- การพัฒนาระบบ IoT
- ใช้งานร่วมกับ Wi-Fi หรือ Bluetooth เพื่อสร้างอุปกรณ์ IoT
- การเรียนการสอน
- เหมาะสำหรับการสอนเขียนโปรแกรมพื้นฐานหรือสอนการใช้งานไมโครคอนโทรลเลอร์
ข้อดีของ CircuitPython
- เหมาะสำหรับผู้เริ่มต้นมากกว่า MicroPython
- เอกสารประกอบและไลบรารีครบถ้วน สนับสนุนโดย Adafruit
- ง่ายต่อการจัดการไฟล์และแก้ไขโปรแกรม
ข้อจำกัดของ CircuitPython
- รองรับเฉพาะบอร์ดบางรุ่น เช่น บอร์ดจาก Adafruit และบอร์ดที่มีทรัพยากรมากพอ
- อาจไม่เหมาะสำหรับงานที่ต้องการประสิทธิภาพสูง