📑 เนื้อหาในบทความ
TelegramSerial คืออะไร?
TelegramSerial เป็น library ที่เขียนขึ้นสำหรับ ESP32 ทำให้คุณสามารถส่งข้อมูลจาก ESP32 ไปยัง Telegram Bot ได้โดยตรงผ่าน WiFi โดยใช้คำสั่งเดียวกับ Serial แต่เปลี่ยนจาก Serial เป็น tg เท่านั้น!
ทำไมต้องใช้ TelegramSerial?
ในอดีต ถ้าคุณอยากส่งข้อมูลจาก ESP32 ไปยัง Telegram คุณต้อง:
- วิธีเดิม: เขียนโค้ด HTTP request ซับซ้อน ใช้ WiFiClientSecure, จัดการ certificate, และเขียนโค้ด parse JSON
- วิธีใหม่ (TelegramSerial): เพียงแค่
tg.println("Hello Telegram");
💡 จุดเด่นของ TelegramSerial
TelegramSerial ถูกประกาศเมื่อต้นเดือน มีนาคม 2026 โดยทีมนักพัฒนาจาก Adafruit ซึ่งเป็นการปฏิวัติวิธีการส่งข้อมูลจากไมโครคอนโทรลเลอร์ไปยัง messaging platform
✨ คุณสมบัติและข้อดี
🎯 ใช้งานง่าย
API เหมือนกับ Serial.println 100% เขียนโค้ดเหมือนเดิม เพียงเปลี่ยนจาก Serial เป็น tg
⚡ ติดตั้งง่าย
ไม่ต้อง handle complex HTTP requests library จัดการทุกอย่างให้อัตโนมัติ
📱 Real-time Notifications
รับแจ้งเตือนทันทีบนมือถือ เหมาะสำหรับโปรเจกต์ IoT monitoring
💾 ประหยัด Memory
เบาเครื่องกว่าการใช้ HTTPS library เหมาะกับโปรเจกต์ขนาดเล็ก
🔒 ปลอดภัย
ใช้ Telegram Bot API ที่เข้ารหัสแบบ end-to-end ปลอดภัยและเชื่อถือได้
🎨 รองรับ Markdown
ส่งข้อความแบบ formatted text, bold, italic, links ได้อย่างง่ายดาย
📋 ข้อกำหนดเบื้องต้น
Hardware ที่ต้องใช้
ESP32 Board
(ESP32 DevKit, NodeMCU, ฯลฯ)
USB Cable
สำหรับอัปโหลดโค้ดและจ่ายไฟ
Software ที่ต้องใช้
Arduino IDE 2.x
หรือ PlatformIO
Telegram App
บนมือถือ (iOS/Android)
WiFi Connection
2.4GHz (ESP32 ไม่รองรับ 5GHz)
🤖 ขั้นตอนที่ 1: สร้าง Telegram Bot
💡 เกร็ดความรู้: Telegram Bot คือบัญชีพิเศษที่ทำงานอัตโนมัติ สามารถรับและส่งข้อความได้ แต่ไม่สามารถเริ่มสนทนากับผู้ใช้ได้เอง ผู้ใช้ต้องเริ่มสนทนาก่อน (send /start)
เปิด Telegram และค้นหา
@BotFatherBotFather เป็น bot อย่างเป็นทางการของ Telegram สำหรับสร้างและจัดการ bot
ส่งคำสั่ง
/newbotBotFather จะถามชื่อ bot ของคุณ:
Alright, a new bot. How are we
going to call it? Please choose a
name for your bot.
ตั้งชื่อ Bot (เช่น "My ESP32 Bot")
ชื่อนี้จะแสดงในรายการ bot และสามารถเป็นภาษาไทยได้
ตั้ง Username (เช่น
my_esp32_bot)Username ต้อง:
- ลงท้ายด้วย
bot - เป็นตัวพิมพ์เล็กและ underscore เท่านั้น
- ไม่ซ้ำกับ bot อื่น
- ลงท้ายด้วย
📝 จด Token ไว้!
BotFather จะส่ง Token กลับมา:
123456789:ABCdefGHIjklMNOpqrsTUVwxyz
⚠️ Token นี้เป็นความลับ อย่าแชร์ให้ใคร!
หา Chat ID ของคุณ
เพื่อให้ bot ส่งข้อความหาคุณได้:
- เปิด bot ของคุณแล้วส่ง
/start - เปิดเบราว์เซอร์ไปที่:
https://api.telegram.org/bot<TOKEN>/getUpdates - มองหา
"chat":{"id":123456789}
- เปิด bot ของคุณแล้วส่ง
🔌 ขั้นตอนที่ 2: ต่อวงจร Hardware
สำหรับโปรเจกต์นี้ เราจะเริ่มต้นด้วย ESP32 เพียงอย่างเดียว (ไม่ต้องต่อเซ็นเซอร์เพิ่ม) เพื่อทดสอบการส่งข้อความไปยัง Telegram
✅ ขั้นตอนง่ายๆ: เสียบ USB cable เข้ากับ ESP32 แล้วเชื่อมต่อกับคอมพิวเตอร์ นั่นแหละ! ESP32 จะได้รับไฟและพร้อมใช้งาน
📌 หมายเหตุสำคัญ
- • ตรวจสอบว่า Arduino IDE รู้จัก COM port ของ ESP32 (ไปที่ Tools → Port)
- • ถ้าใช้ ESP32 รุ่นที่มีปัญหา USB อาจต้องกดปุ่ม BOOT ขณะอัปโหลด
- • ตรวจสอบว่าเลือก Board ถูกต้อง (Tools → Board → ESP32 Arduino → ESP32 Dev Module)
📦 ขั้นตอนที่ 3: ติดตั้ง TelegramSerial Library
วิธีที่ 1: ผ่าน Arduino IDE Library Manager (แนะนำ)
- เปิด Arduino IDE แล้วไปที่
Sketch → Include Library → Manage Libraries - ค้นหา
TelegramSerial - คลิก Install
วิธีที่ 2: ผ่าน GitHub
- ไปที่ GitHub repository ของ TelegramSerial
- ดาวน์โหลดไฟล์ ZIP หรือ clone repository
- ใน Arduino IDE: ไปที่
Sketch → Include Library → Add .ZIP Library
💻 ขั้นตอนที่ 4: เขียนโค้ดตัวอย่าง
นี่คือโค้ดตัวอย่างแบบเต็มสำหรับส่งข้อความไปยัง Telegram Bot ด้วย TelegramSerial:
/*
* ESP32 Telegram Serial Tutorial
* ส่งข้อมูลไปยัง Telegram Bot ด้วย TelegramSerial Library
*
* Hardware: ESP32 Board
* Library: TelegramSerial
* Author: CynoIoT
* Date: March 2026
*/
#include <WiFi.h>
#include <TelegramSerial.h>
// ===== WiFi Credentials =====
const char* ssid = "YOUR_WIFI_SSID"; // ชื่อ WiFi ของคุณ
const char* password = "YOUR_WIFI_PASSWORD"; // รหัส WiFi ของคุณ
// ===== Telegram Bot Credentials =====
const char* botToken = "YOUR_BOT_TOKEN"; // Token จาก BotFather
const char* chatId = "YOUR_CHAT_ID"; // Chat ID ของคุณ
// ===== สร้าง TelegramSerial Object =====
// tg เป็น object ที่เราจะใช้แทน Serial
TelegramSerial tg(botToken, chatId);
// ===== Variables =====
unsigned long lastTime = 0;
const long interval = 10000; // ส่งข้อความทุก 10 วินาที
void setup() {
// เริ่มต้น Serial (สำหรับ Debug ใน Serial Monitor)
Serial.begin(115200);
// แสดงข้อความเริ่มต้น
Serial.println("\n\n=== ESP32 Telegram Serial Tutorial ===");
Serial.println("Starting...\n");
// เชื่อมต่อ WiFi
Serial.print("Connecting to WiFi...");
WiFi.begin(ssid, password);
// รอจนกว่าจะเชื่อมต่อสำเร็จ
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
// เชื่อมต่อสำเร็จ!
Serial.println("\n✅ WiFi Connected!");
Serial.print("📡 IP Address: ");
Serial.println(WiFi.localIP());
// เริ่มต้น TelegramSerial
Serial.println("\n🤖 Initializing TelegramSerial...");
tg.begin();
// ทดสอบส่งข้อความแรก
Serial.println("📤 Sending test message...");
tg.println("🚀 Hello from ESP32!");
// ส่งข้อความแบบมีหลายบรรทัด
tg.println("\n📊 System Status:");
tg.printf("Board: ESP32\n");
tg.printf("WiFi: %s\n", ssid);
tg.printf("IP: %s\n", WiFi.localIP().toString().c_str());
tg.printf("Uptime: %lu ms\n", millis());
Serial.println("✅ TelegramSerial initialized!");
Serial.println("⏰ Waiting 10 seconds before first message...\n");
}
void loop() {
// อ่านเวลาปัจจุบัน
unsigned long currentTime = millis();
// ตรวจสอบว่าถึงเวลาส่งข้อความหรือยัง
if (currentTime - lastTime >= interval) {
// บันทึกเวลาล่าสุด
lastTime = currentTime;
// ===== ส่งข้อมูลต่างๆ ไปยัง Telegram =====
// 1. ข้อความธรรมดา
tg.println("\n📸 Sensor Reading:");
// 2. ข้อความแบบ formatted (printf)
tg.printf("Time: %lu ms\n", currentTime);
// 3. จำลองค่าเซ็นเซอร์
float temperature = random(200, 350) / 10.0; // 20.0 - 35.0 °C
float humidity = random(400, 800) / 10.0; // 40.0 - 80.0 %
tg.printf("Temperature: %.1f °C\n", temperature);
tg.printf("Humidity: %.1f %%\n", humidity);
// 4. ส่งข้อความแบบมี emojis
tg.println("\n🌡️ อุณหภูมิปกติดีครับ 👍");
// 5. แสดงผลใน Serial Monitor (สำหรับ Debug)
Serial.println("📤 Message sent to Telegram!");
Serial.printf("Temp: %.1f°C, Hum: %.1f%%\n", temperature, humidity);
}
// ใส่ delay เล็กน้อยเพื่อไม่ให้ CPU ทำงานหนักเกินไป
delay(100);
}⚠️ อย่าลืมแก้ไขค่าเหล่านี้!
- •
ssid→ ชื่อ WiFi ของคุณ - •
password→ รหัส WiFi ของคุณ - •
botToken→ Token จาก BotFather - •
chatId→ Chat ID ของคุณ
🧪 ขั้นตอนที่ 5: การทดสอบ
ขั้นตอนการทดสอบ
อัปโหลดโค้ดไปยัง ESP32
- กดปุ่ม Upload ใน Arduino IDE
- รอจนกว่าจะขึ้น "Done uploading"
- เปิด Serial Monitor (Ctrl+Shift+M)
- ตั้ง baud rate เป็น 115200
ดูผลใน Serial Monitor
คุณควรเห็น:
=== ESP32 Telegram Serial Tutorial ===
Connecting to WiFi.....
✅ WiFi Connected!
📡 IP Address: 192.168.1.100
🤖 Initializing TelegramSerial...
📤 Sending test message...
✅ TelegramSerial initialized!
เช็ค Telegram Bot
เปิด Telegram และไปที่ bot ของคุณ:
🎉 ถ้าทุกอย่างถูกต้อง คุณจะได้รับข้อความจาก bot ภายใน 5-10 วินาที!
🚀 เทคนิคขั้นสูง
📊 ส่งค่าเซ็นเซอร์แบบ Real-time
ใช้สำหรับโปรเจกต์ Smart Home, Plant Monitoring, ฯลฯ
tg.printf("🌡️ %.1f°C | 💧 %.1f%%",
temp, hum);
⚠️ แจ้งเตือนเหตุฉุกเฉิน
ใช้สำหรับแจ้งเตือนอุณหภูมิสูง, ไฟไหม้, ฯลฯ
if (temp > 50.0) {
tg.println("🔥 อุณหภูมิสูงเกินไป!");
}
📈 ส่งข้อมูลแบบ JSON
เหมาะกับการเก็บ log หรือส่งข้อมูลหลายค่า
tg.println("{\"temp\":25.5,
\"hum\":60.2}");
🔋 ตรวจสอบแบตเตอรี่
ใช้กับโปรเจกต์ battery-powered
tg.printf("🔋 Battery: %.1fV",
getBatteryVoltage());
💡 Project Ideas
🏠 Smart Home Alert
แจ้งเตือนเมื่อมีคนเปิดประตู
🌱 Plant Monitor
แจ้งเตือนเมื่อดินแห้ง
🌡️ Temperature Alert
แจ้งเตือนเมื่อร้อน/เย็นเกินไป
⚡ Power Monitor
แจ้งใช้ไฟเกิน quota
🔧 การแก้ปัญหาที่พบบ่อย
ปัญหา ESP32 เชื่อมต่อ WiFi ไม่ได้
✅ วิธีแก้ไข:
- ตรวจสอบว่า SSID และ Password ถูกต้อง
- ตรวจสอบว่า router เปิด 2.4GHz (ESP32 ไม่รองรับ 5GHz)
- ลองเปลี่ยน WiFi channel เป็น 1, 6, หรือ 11
- เพิ่ม
WiFi.setSleep(false);ใน setup()
ปัญหา ไม่ได้รับข้อความใน Telegram
✅ วิธีแก้ไข:
- ตรวจสอบว่า Token และ Chat ID ถูกต้อง
- แน่ใจว่าได้ส่ง
/startให้ bot แล้ว - เปิด Serial Monitor ดูว่ามี error หรือไม่
- ลอง restart bot (ไปที่ BotFather → /restart)
ปัญหา ข้อความถูกตัดไม่ครบ
✅ วิธีแก้ไข:
- Telegram จำกัดข้อความ 4096 ตัวอักษร
- แบ่งข้อความเป็นหลายส่วน:
tg.println("Part 1: ...");
delay(1000);
tg.println("Part 2: ...");
ปัญหา Upload โค้ดไม่ได้
✅ วิธีแก้ไข:
- กดปุ่ม BOOT ค้างระหว่างอัปโหลด
- เปลี่ยน USB cable (บางสายใช้แต่ไฟ)
- ลองเปลี่ยน COM port
- ติดตั้ง USB Driver ของ ESP32 (CP2102/CH340)
สรุป
ในบทความนี้ คุณได้เรียนรู้:
- TelegramSerial library คืออะไรและทำไมมันปฏิวัติวงการ IoT
- วิธีสร้าง Telegram Bot และรับ Token พร้อม Chat ID
- วิธีติดตั้งและใช้งาน TelegramSerial บน ESP32
- โค้ดตัวอย่าง พร้อมคำอธิบายภาษาไทยที่เข้าใจง่าย
- เทคนิคขั้นสูง และการแก้ปัญหาที่พบบ่อย
🎯 สิ่งที่คุณสามารถทำต่อได้:
- • เชื่อมต่อเซ็นเซอร์จริง (DHT22, BME280, ฯลฯ)
- • สร้างระบบแจ้งเตือน Smart Home
- • ส่งข้อมูลไปยัง CynoIoT Platform ควบคู่กัน
- • ใช้ Deep Sleep เพื่อประหยัดแบตเตอรี่