📱 Tutorial ล่าสุด

ส่งข้อมูล ESP32 ไปยัง Telegram Bot ด้วย TelegramSerial

เรียนรู้วิธีใช้ TelegramSerial library ส่งข้อมูลจาก ESP32 ไปยัง Telegram Bot ผ่าน WiFi แบบ Real-time ไม่ต้องเขียนโค้ดซับซ้อน แทนที่ Serial.println ด้วย tg.println ง่ายๆ เพียงแค่นั้น!

📅 7 มีนาคม 2026 ⏱️ 10 นาที 🎯 ระดับ: มือใหม่ - ปานกลาง 📚 ประเภท: Tutorial

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)

  1. เปิด Telegram และค้นหา @BotFather

    BotFather เป็น bot อย่างเป็นทางการของ Telegram สำหรับสร้างและจัดการ bot

  2. ส่งคำสั่ง /newbot

    BotFather จะถามชื่อ bot ของคุณ:

    Alright, a new bot. How are we

    going to call it? Please choose a

    name for your bot.

  3. ตั้งชื่อ Bot (เช่น "My ESP32 Bot")

    ชื่อนี้จะแสดงในรายการ bot และสามารถเป็นภาษาไทยได้

  4. ตั้ง Username (เช่น my_esp32_bot)

    Username ต้อง:

    • ลงท้ายด้วย bot
    • เป็นตัวพิมพ์เล็กและ underscore เท่านั้น
    • ไม่ซ้ำกับ bot อื่น
  5. 📝 จด Token ไว้!

    BotFather จะส่ง Token กลับมา:

    123456789:ABCdefGHIjklMNOpqrsTUVwxyz

    ⚠️ Token นี้เป็นความลับ อย่าแชร์ให้ใคร!

  6. หา Chat ID ของคุณ

    เพื่อให้ bot ส่งข้อความหาคุณได้:

    1. เปิด bot ของคุณแล้วส่ง /start
    2. เปิดเบราว์เซอร์ไปที่: https://api.telegram.org/bot<TOKEN>/getUpdates
    3. มองหา "chat":{"id":123456789}

🔌 ขั้นตอนที่ 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 (แนะนำ)

  1. เปิด Arduino IDE แล้วไปที่ Sketch → Include Library → Manage Libraries
  2. ค้นหา TelegramSerial
  3. คลิก Install

วิธีที่ 2: ผ่าน GitHub

  1. ไปที่ GitHub repository ของ TelegramSerial
  2. ดาวน์โหลดไฟล์ ZIP หรือ clone repository
  3. ใน 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: การทดสอบ

ขั้นตอนการทดสอบ

  1. อัปโหลดโค้ดไปยัง ESP32

    • กดปุ่ม Upload ใน Arduino IDE
    • รอจนกว่าจะขึ้น "Done uploading"
    • เปิด Serial Monitor (Ctrl+Shift+M)
    • ตั้ง baud rate เป็น 115200
  2. ดูผลใน Serial Monitor

    คุณควรเห็น:

    === ESP32 Telegram Serial Tutorial ===

    Connecting to WiFi.....

    ✅ WiFi Connected!

    📡 IP Address: 192.168.1.100

    🤖 Initializing TelegramSerial...

    📤 Sending test message...

    ✅ TelegramSerial initialized!

  3. เช็ค 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 เพื่อประหยัดแบตเตอรี่

📚 บทความที่เกี่ยวข้อง