เชื่อมต่อโลก 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, ระบบแจ้งเตือน, หรือการควบคุมอุปกรณ์ระยะไกล
📢 ใครที่สนใจ ลองนำไปปรับใช้ดูได้เลย! 🚀