ทูลพัฒนาโครงการ IOT ด้วยภาษา Python

ปัจจุบันภาษา Python นับป็นภาษาที่ใช้งานได้อย่างหลากหลาย ไม่ยกว้นแม้แต่ทำโครงการเกี่ยวกับ Internet of Things หรือ IoT โดยในที่นี้ขอแนะนำทูลที่พัฒนาจากภาษา Python ที่นิยมในปัจบัน 

1. MicroPython (www.micropython.org)
MicroPython เป็นทูลสร้างโครงการ IoT ที่พัฒนามาจากภาษา Python ที่ได้รับการปรับแต่งให้ทำงานได้บนไมโครคอนโทรลเลอร์และอุปกรณ์ที่มีทรัพยากรจำกัด เช่น หน่วยความจำและความเร็วของโปรเซสเซอร์ต่ำกว่าอุปกรณ์คอมพิวเตอร์ทั่วไป ซึ่ง MicroPython ถูกออกแบบมาเพื่อการพัฒนาโปรแกรมบนฮาร์ดแวร์ขนาดเล็ก เช่น Arduino, ESP8266, ESP32, Raspberry Pi Pico และบอร์ดไมโครคอนโทรลเลอร์อื่นๆ

คุณสมบัติของ MicroPython

  1. ขนาดเล็กและเบา

    • MicroPython มีขนาดเล็กและใช้ทรัพยากรระบบน้อยเมื่อเทียบกับ Python มาตรฐาน (CPython)
    • สามารถรันบนอุปกรณ์ที่มี RAM  ขนาดต่ำเพียงไม่กี่สิบกิโลไบต์
  2. รองรับการเขียนโปรแกรมในรูปแบบ Python

    • ใช้โครงสร้างภาษา Python เวอร์ชัน 3 ทำให้นักพัฒนาที่คุ้นเคยกับ Python สามารถเริ่มใช้งานได้ง่าย
  3. เข้าถึงฮาร์ดแวร์ได้โดยตรง

    • MicroPython มีไลบรารีที่ช่วยให้นักพัฒนาสามารถควบคุมพอร์ต I/O, UART, I2C, SPI และส่วนต่างๆ ของฮาร์ดแวร์ได้ง่าย
  4. REPL (Read-Eval-Print Loop)

    • สามารถทดลองรันคำสั่ง Python ได้แบบโต้ตอบผ่าน Serial Console
  5. สนับสนุนการทำงานบนบอร์ดไมโครคอนโทรลเลอร์ยอดนิยม

    • เช่น ESP8266, ESP32, STM32, Teensy และ Raspberry Pi Pico

การประยุกต์ใช้งาน MicroPython

MicroPython มักถูกใช้งานใน

  • IoT (Internet of Things): เช่น การควบคุมอุปกรณ์บ้านอัจฉริยะ
  • ระบบอัตโนมัติ: เช่น ระบบเปิด-ปิดไฟด้วยเซนเซอร์
  • การทดลองทางวิทยาศาสตร์: เช่น การเก็บข้อมูลจากเซนเซอร์ต่างๆ
  • การศึกษา: ใช้สอนการเขียนโปรแกรมในระดับพื้นฐานไปจนถึงการพัฒนาฮาร์ดแวร์

ตัวอย่างโค้ดใน MicroPython

-ตัวอย่างโค้ดสำหรับเปิด-ปิด LED บนบอร์ดไมโครคอนโทรลเลอร์

python

 

from machine import Pin
from time import sleep

led = Pin(2, Pin.OUT) # กำหนดให้ขา GPIO 2 เป็นขา Output (ต่อ LED)

while True:
led.on() # เปิด LED
sleep(1) # หน่วงเวลา 1 วินาที
led.off() # ปิด LED
sleep(1) # หน่วงเวลา 1 วินาที

ข้อดีของ MicroPython

  • เหมาะสำหรับผู้ที่ต้องการพัฒนาโปรแกรมบนฮาร์ดแวร์แบบง่ายๆ โดยใช้ภาษา Python
  • ช่วยลดเวลาในการพัฒนาซอฟต์แวร์บนไมโครคอนโทรลเลอร์
  • ชุมชนผู้ใช้งานและเอกสารประกอบหลากหลาย

ข้อจำกัดของ MicroPython

  • ประสิทธิภาพไม่สูงเท่ากับการเขียนโปรแกรมด้วยภาษา C/C++
  • รองรับการทำงานบนฮาร์ดแวร์บางประเภทเท่านั้น (ขึ้นอยู่กับการสนับสนุนจาก MicroPython Firmware)

2. CircuitPython (www.circuitpython.org)
CircuitPython เป็นเวอร์ชันของภาษา Python ที่ได้รับการปรับปรุงมาจาก MicroPython โดยบริษัท Adafruit Industries เพื่อให้นักพัฒนาใช้งานได้ง่ายยิ่งขึ้น โดยเฉพาะกับโปรเจกต์ที่เกี่ยวข้องกับการพัฒนาอุปกรณ์ฮาร์ดแวร์ เช่น การใช้งานบอร์ดไมโครคอนโทรลเลอร์และเซ็นเซอร์ต่างๆ

คุณสมบัติของ CircuitPython

  1. ใช้งานง่าย

    • CircuitPython ถูกออกแบบมาให้เหมาะสำหรับผู้เริ่มต้น โดยลดความซับซ้อนและปรับปรุงการใช้งานให้ง่ายยิ่งกว่า MicroPython
  2. การเชื่อมต่อกับคอมพิวเตอร์แบบ USB Drive

    • เมื่อเสียบบอร์ดที่รองรับ CircuitPython กับคอมพิวเตอร์ มันจะปรากฏเป็นไดรฟ์ USB (เช่น ไดรฟ์แฟลช) คุณสามารถลากและวางไฟล์ .py ลงไปได้โดยตรง
  3. รองรับ Python 3.x

    • CircuitPython ใช้โครงสร้างภาษา Python 3.x ทำให้นักพัฒนาที่คุ้นเคยกับ Python มาตรฐานสามารถเริ่มต้นได้ทันที
  4. ไลบรารีพร้อมใช้งาน

    • มีไลบรารีและเอกสารประกอบที่หลากหลายและใช้งานง่าย โดยเฉพาะไลบรารีที่ช่วยในการควบคุมเซ็นเซอร์และโมดูลอิเล็กทรอนิกส์ต่างๆ เช่น LED, มอเตอร์ และเซ็นเซอร์อุณหภูมิ
  5. REPL (Read-Eval-Print Loop)

    • มีการสนับสนุน REPL ผ่าน Serial Console เหมือนกับ MicroPython สำหรับการทดลองรันคำสั่งแบบโต้ตอบ
  6. การสนับสนุนจากชุมชน Adafruit

    • มีเอกสาร ตัวอย่างโค้ด และฟอรัมที่ช่วยให้นักพัฒนาสามารถเรียนรู้และแก้ไขปัญหาได้ง่าย

ข้อแตกต่างระหว่าง CircuitPython กับ MicroPython

คุณสมบัติ CircuitPython MicroPython
การพัฒนา โดย Adafruit โครงการโอเพ่นซอร์สแยกต่างหาก
การใช้งาน USB Drive รองรับเสมอ อาจต้องตั้งค่าเพิ่มเติม
ฮาร์ดแวร์ที่รองรับ สนับสนุนบอร์ดของ Adafruit เป็นหลัก รองรับฮาร์ดแวร์หลายยี่ห้อ
การเรียนรู้ ออกแบบมาเพื่อให้ผู้เริ่มต้นใช้งานง่าย ต้องการความเข้าใจทางเทคนิคมากกว่า
ความยืดหยุ่น ใช้งานง่ายแต่ปรับแต่งได้จำกัด ยืดหยุ่นและปรับแต่งได้มากกว่า

ตัวอย่างโค้ดใน CircuitPython

ตัวอย่างด้านล่างคือการกระพริบไฟ LED บนบอร์ด

import board
import digitalio
import time

led = digitalio.DigitalInOut(board.D13) # กำหนดขา D13 ให้ควบคุม LED
led.direction = digitalio.Direction.OUTPUT

while True:
led.value = True # เปิด LED
time.sleep(1) # รอ 1 วินาที
led.value = False # ปิด LED
time.sleep(1) # รอ 1 วินาที

การประยุกต์ใช้งาน CircuitPython

  1. การทดลองฮาร์ดแวร์
    • ควบคุม LED, มอเตอร์, หรือเซ็นเซอร์อย่างง่าย
  2. การพัฒนาระบบ IoT
    • ใช้งานร่วมกับ Wi-Fi หรือ Bluetooth เพื่อสร้างอุปกรณ์ IoT
  3. การเรียนการสอน
    • เหมาะสำหรับการสอนเขียนโปรแกรมพื้นฐานหรือสอนการใช้งานไมโครคอนโทรลเลอร์

ข้อดีของ CircuitPython

  • เหมาะสำหรับผู้เริ่มต้นมากกว่า MicroPython
  • เอกสารประกอบและไลบรารีครบถ้วน สนับสนุนโดย Adafruit
  • ง่ายต่อการจัดการไฟล์และแก้ไขโปรแกรม

ข้อจำกัดของ CircuitPython

  • รองรับเฉพาะบอร์ดบางรุ่น เช่น บอร์ดจาก Adafruit และบอร์ดที่มีทรัพยากรมากพอ
  • อาจไม่เหมาะสำหรับงานที่ต้องการประสิทธิภาพสูง