เชื่อมต่อโลก AI กับ Telegram ผ่าน CircuitPython บน ESP32-S3

ปัจจุบัน Internet of Things (IoT) ได้เข้ามามีบทบาทมากขึ้น โดยเฉพาะในเรื่องของการควบคุมอุปกรณ์ระยะไกลและการสื่อสารผ่านแพลตฟอร์มยอดนิยมอย่าง Telegram ซึ่งเป็นเครื่องมือที่ดีสำหรับการแจ้งเตือนอัตโนมัติ หรือแม้แต่ควบคุมอุปกรณ์ต่าง ๆ

ในบทความนี้ ผมจะมาแชร์ประสบการณ์การใช้ CircuitPython เพื่อเชื่อมต่อ ESP32-S3 กับ Telegram และ AI รวมถึงการใช้ library requests ที่มีความเสถียรสูง และวิธีการสร้างโปรเจกต์ที่สามารถทดสอบได้ง่าย

CircuitPython คืออะไร? 🐍

CircuitPython เป็นภาษาการเขียนโปรแกรมสำหรับไมโครคอนโทรลเลอร์ที่พัฒนาโดย Adafruit ซึ่งถูกออกแบบมาให้ใช้งานง่ายและเหมาะสำหรับนักพัฒนาและนักเรียนที่ต้องการเรียนรู้การเขียนโค้ดสำหรับ Embedded Systems

ข้อดีของ CircuitPython

  • ✅ ใช้งานง่าย: ไม่ต้องติดตั้งซอฟต์แวร์เพิ่ม สามารถลากและวางไฟล์โค้ดลงไปที่บอร์ดได้เลย
  • ✅ มีไลบรารีให้ใช้งานเยอะ: มีไลบรารีสำเร็จรูปมากมาย ช่วยลดเวลาในการพัฒนา
  • ✅ รองรับหลายแพลตฟอร์ม: สามารถใช้ได้กับบอร์ดไมโครคอนโทรลเลอร์หลากหลาย เช่น ESP32, Raspberry Pi Pico, Adafruit Feather เป็นต้น
  • ✅ การดีบั๊กง่าย: สามารถรันโค้ดแบบ REPL (Read-Eval-Print Loop) ทำให้ตรวจสอบค่าได้แบบเรียลไทม์

การใช้ CircuitPython กับ ESP32-S3 เพื่อเชื่อมต่อ Telegram

1. เตรียมอุปกรณ์ที่ต้องใช้

  • ESP32-S3 (บอร์ดที่รองรับ CircuitPython)
  • Wi-Fi สำหรับเชื่อมต่ออินเทอร์เน็ต
  • บัญชี Telegram และ Telegram Bot API

2. ติดตั้ง CircuitPython บน ESP32-S3

ดาวน์โหลด CircuitPython firmware สำหรับ ESP32-S3 ได้จาก CircuitPython Downloads ใช้ ThonnyIDE เพื่อติดตั้ง CircuitPython ลงไปที่บอร์ด

หลังจากติดตั้งเสร็จ เมื่อเสียบ ESP32-S3 กับคอมพิวเตอร์ จะเห็นเป็นไดร์ฟ USB ที่สามารถคัดลอกโค้ดลงไปได้

3. เขียนโค้ด CircuitPython เพื่อเชื่อมต่อ Telegram

ก่อนอื่นให้ติดตั้งไลบรารี requests สำหรับการส่ง HTTP requests ไปยัง Telegram Bot API


import wifi
import socketpool
import ssl
import adafruit_requests
import board
import time

# กำหนดข้อมูล Wi-Fi และ Telegram Bot
WIFI_SSID = "ชื่อเครือข่าย"
WIFI_PASSWORD = "รหัสผ่าน"
BOT_TOKEN = "ใส่โทเค็นบอทจาก Telegram"
CHAT_ID = "ใส่ Chat ID ของคุณ"

# เชื่อมต่อ Wi-Fi
print("กำลังเชื่อมต่อ Wi-Fi...")
wifi.radio.connect(WIFI_SSID, WIFI_PASSWORD)
print("เชื่อมต่อสำเร็จ!")

# ตั้งค่าการสื่อสาร HTTP
pool = socketpool.SocketPool(wifi.radio)
requests = adafruit_requests.Session(pool, ssl.create_default_context())

# ฟังก์ชันส่งข้อความไปยัง Telegram
def send_telegram_message(message):
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage"
    payload = {"chat_id": CHAT_ID, "text": message}
    response = requests.post(url, json=payload)
    print(response.text)

# ทดสอบส่งข้อความ
send_telegram_message("Hello from ESP32-S3 using CircuitPython!")

ผลลัพธ์: ✅ เมื่อรันโค้ด ESP32-S3 จะเชื่อมต่อ Wi-Fi และส่งข้อความไปยัง Telegram

4. ควบคุมฮาร์ดแวร์ผ่าน Telegram

เราสามารถขยายฟังก์ชันเพื่อให้ Telegram รับคำสั่งจากผู้ใช้ และสั่งให้ ESP32-S3 ควบคุมรีเลย์, LED, มอเตอร์ หรืออุปกรณ์อื่น ๆ


import digitalio

# กำหนดขา LED (เช่น ขา D2)
led = digitalio.DigitalInOut(board.D2)
led.direction = digitalio.Direction.OUTPUT

def check_telegram():
    url = f"https://api.telegram.org/bot{BOT_TOKEN}/getUpdates"
    response = requests.get(url).json()
    
    for update in response["result"]:
        if "message" in update:
            text = update["message"]["text"]
            if text.lower() == "on":
                led.value = True
                send_telegram_message("LED เปิดแล้ว! 💡")
            elif text.lower() == "off":
                led.value = False
                send_telegram_message("LED ปิดแล้ว! 🔴")

# เช็คข้อความจาก Telegram ทุก 5 วินาที
while True:
    check_telegram()
    time.sleep(5)

ผลลัพธ์: ✅ ผู้ใช้สามารถส่งคำว่า "on" หรือ "off" ใน Telegram เพื่อควบคุม LED บน ESP32-S3 ได้ 🎉

ทดสอบใช้งาน Bot @Panmaneecnc_learn_bot

สรุป

CircuitPython เป็นทางเลือกที่ดีสำหรับผู้ที่ต้องการใช้งาน ESP32-S3 ในการเชื่อมต่อ Telegram และ AI

requests library มีความเสถียร และทำให้การส่งข้อมูลผ่าน HTTP API ทำได้ง่าย

✅ สามารถนำไปประยุกต์ใช้กับ IoT, ระบบแจ้งเตือน, หรือการควบคุมอุปกรณ์ระยะไกล

📢 ใครที่สนใจ ลองนำไปปรับใช้ดูได้เลย! 🚀