- การผสานรวมไลบรารี UniversalTelegramBot เพื่อลดความซับซ้อนในการสื่อสารผ่าน HTTPS กับ Telegram API
- การควบคุมขา GPIO จากระยะไกลเพื่อสั่งงานอุปกรณ์ต่างๆ เช่น LED และอ่านสถานะของสวิตช์
- การนำระบบรักษาความปลอดภัยมาใช้โดยการตรวจสอบความถูกต้องของรหัสแชทและการใช้ใบรับรอง SSL

คุณเคยคิดที่จะควบคุมอุปกรณ์บ้านอัจฉริยะจากโซฟาที่บ้านโดยใช้โทรศัพท์มือถือของคุณหรือไม่? การติดตั้งระบบควบคุม ESP32 ผ่าน Telegramเป็นหนึ่งในวิธีที่ง่ายและทรงพลังที่สุดในการเข้าสู่โลกของระบบบ้านอัจฉริยะโดยไม่ต้องทำให้ชีวิตยุ่งยากด้วยเซิร์ฟเวอร์ภายนอกราคาแพงหรือการตั้งค่าที่ซับซ้อน
เคล็ดลับอยู่ที่การเปลี่ยนบอร์ดของคุณให้เป็นเซิร์ฟเวอร์ขนาดเล็กที่รับฟังคำสั่งจากบอท คุณไม่จำเป็นต้องเป็นอัจฉริยะด้านการเขียนโปรแกรม เพราะด้วยไลบรารีเพียงไม่กี่ตัวและความอดทนเพียงเล็กน้อย คุณก็สามารถทำให้บอร์ดของคุณเปิดไฟหรือแจ้งเตือนสถานะของเซ็นเซอร์แบบเรียลไทม์ได้ทั้งหมดผ่านข้อความ SMS
วัสดุที่คุณต้องการ
เริ่มต้นได้เลย คุณไม่จำเป็นต้องใช้เงินมากมาย สิ่งสำคัญที่สุดคือต้องมีบอร์ด ESP32ไม่ว่าจะเป็นรุ่นเก่าหรือรุ่นล่าสุดก็ได้ เพราะใช้งานร่วมกันได้หมด นอกจากส่วนประมวลผลหลักของโปรเจ็กต์แล้ว คุณยังต้องมีส่วนประกอบพื้นฐานบางอย่างสำหรับการทดสอบด้วย:
- ใช้ไดโอดเปล่งแสง (LED) เพื่อตรวจสอบว่าทุกอย่างทำงานได้ปกติ
- ใช้ตัวต้านทานขนาด 220 โอห์ม เพื่อป้องกันไม่ให้ LED ไหม้
- ปุ่มกดหรือสวิตช์สำหรับอ่านสถานะทางกายภาพ
- การเชื่อมต่อสายเคเบิลและแผงวงจรทดลอง (breadboard) จะช่วยให้คุณไม่ต้องบัดกรีอะไรเลยในตอนเริ่มต้น
การประกอบวงจรไฟฟ้า
ก่อนที่จะแก้ไขโค้ด คุณต้องเตรียมฮาร์ดแวร์ก่อน สำหรับตัวอย่างนี้ เราจะเชื่อมต่อ LED กับขา GPIO 33และสวิตช์กับขาGPIO 14สิ่งสำคัญคือต้องจำไว้ว่าคุณสามารถเปลี่ยนขาเหล่านี้ได้ตามต้องการ แต่คุณจะต้องสะท้อนการเปลี่ยนแปลงนั้นในค่าคงที่ของโปรแกรมในภายหลังด้วย
LED เชื่อมต่อกับตัวต้านทานที่เหมาะสมเพื่อป้องกัน ในขณะที่ปุ่มกดได้รับการออกแบบภายในเพื่อหลีกเลี่ยงการเดินสายไฟเพิ่มเติม เมื่อคุณประกอบวงจรบนแผงวงจรทดลองเสร็จแล้ว คุณสามารถดำเนินการต่อในส่วนของซอฟต์แวร์ ซึ่งเป็นส่วนที่การทำงานทั้งหมดเกิดขึ้น
การตั้งค่าบอทใน Telegram
เพื่อให้ ESP32 สามารถรู้ได้ว่าควรฟังคำสั่งจากใคร เราต้องสร้างตัวตนของบอทภายในแอปพลิเคชัน Telegram ก่อน กระบวนการนี้มีความสำคัญอย่างยิ่ง เพราะจะให้ข้อมูลสำคัญสองส่วน ได้แก่โทเค็นของบอท (สตริงยาวๆ ของตัวเลขและตัวอักษร) และรหัสผู้ใช้ ส่วนตัวของคุณ หากไม่มีข้อมูลสำคัญสองส่วนนี้ อุปกรณ์จะไม่สามารถตรวจสอบตัวตนหรือระบุได้ว่าใครได้รับอนุญาตให้สั่งการได้
หากเมื่อใดก็ตามที่คุณรู้สึกว่าการสนทนาเริ่มวุ่นวาย โปรดจำไว้ว่าคุณสามารถล้างประวัติการสนทนา ได้ จากเมนูมุมบนขวามือ การทำเช่นนั้นจะรีสตาร์ทบอทและกลับไปยังปุ่มหน้าหลักพร้อมคำสั่งต่างๆ ที่ใช้งานได้ ทำให้คุณสามารถเริ่มต้นใหม่ได้
การเตรียมสภาพแวดล้อมการพัฒนา
เพื่อให้โค้ดทำงานได้ เราต้องติดตั้งเครื่องมือที่จะช่วยให้ชีวิตเราง่ายขึ้น นั่นคือ ไลบรารี UniversalTelegramBotแทนที่จะเขียนโค้ดหลายร้อยบรรทัดเพื่อจัดการกับ Telegram API ไลบรารีนี้จะทำทุกอย่างให้เราเกือบทั้งหมด
ในการติดตั้ง ให้ไปที่ตัวจัดการไลบรารีของ Arduino IDE พิมพ์ชื่อไลบรารี แล้วคลิกติดตั้ง นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณได้ ติดตั้งไลบรารี WiFi และ WiFiClientSecure แล้ว เนื่องจากไลบรารีเหล่านี้จะช่วยให้ ESP32 สามารถเชื่อมต่ออินเทอร์เน็ตและใช้โปรโตคอล HTTPS สำหรับการสื่อสารที่ปลอดภัยได้
การวิเคราะห์รหัสควบคุม
โปรแกรมจะเริ่มต้นด้วยการกำหนดข้อมูลประจำตัวเครือข่าย WiFi ของคุณและคีย์ของบอท สิ่งสำคัญคือคุณต้องแทนที่ค่าตัวอย่างด้วยค่าของคุณเอง ชื่อ SSID และรหัสผ่านรวมถึงโทเค็นและรหัสแชทด้วย สำหรับการโต้ตอบ เรากำหนดตัวแปรที่เรียกว่า info ซึ่งประกอบด้วยรายการคำสั่งที่บอทจะรู้จัก เช่น /led_on หรือ /sw_state
การจัดการข้อความและคำสั่ง
หัวใจหลักของระบบคือฟังก์ชันที่ตรวจสอบข้อความใหม่ ESP32 ใช้เมธอดนี้ getUpdates สำหรับ ตรวจสอบคิวข้อความ จาก Telegram เพื่อป้องกันไม่ให้คนแปลกหน้าควบคุมบ้านของคุณ โค้ดนี้มีตัวกรองที่ตรวจสอบว่า ID ของผู้ส่งตรงกับของคุณทุกประการ CHAT_ID ที่กำหนดไว้ล่วงหน้า.
เมื่อผู้ใช้ได้รับการยืนยันตัวตนแล้ว บอทจะวิเคราะห์ข้อความที่ได้รับ: หากตรวจพบ... /led_onมันส่งสัญญาณดิจิทัลไปยังขา 33 เพื่อเปิดไฟ หากได้รับสัญญาณ /led_offปิดใช้งาน นอกจากนี้ยังมีตัวเลือกในการ /led_toggleซึ่งมีประโยชน์มากเพราะ พลิกกลับสถานะปัจจุบัน ของไฟ LED โดยที่คุณไม่ต้องรู้ว่าก่อนหน้านี้มันเปิดหรือปิดอยู่
การอ่านค่าเซ็นเซอร์และการดำเนินการเสร็จสิ้น
นอกจากการออกคำสั่งแล้ว บอทยังสามารถให้ข้อมูลได้อีกด้วย โดยใช้คำสั่ง /sw_stateESP32 อ่านสถานะของขา 14 เนื่องจากเราได้กำหนดค่าขาไว้ดังนี้ อินพุต_พูลอัพอุปกรณ์จะตรวจจับว่าปุ่มถูกกดหรือไม่ และจะส่งข้อความตอบกลับมาเพื่อยืนยัน
ในระหว่างกระบวนการบูต อุปกรณ์จะเชื่อมต่อกับ Wi-Fi ในลักษณะล็อกไว้ ซึ่งหมายความว่าอุปกรณ์จะไม่ทำอะไรเลยจนกว่าการเชื่อมต่อจะเสถียรเพื่อเพิ่มความปลอดภัยยิ่งขึ้น ระบบจะใช้ใบรับรองหลักของ Telegram เพื่อให้มั่นใจว่าการรับส่งข้อมูลได้รับการเข้ารหัส ส่วนลูปหลักจะตรวจสอบข้อความซ้ำทุกวินาทีเพื่อให้ระบบมีความคล่องตัวและตอบสนองได้ดี
ด้วยระบบนี้ เราได้ผสานรวมฮาร์ดแวร์และซอฟต์แวร์เข้าด้วยกันอย่างประสบความสำเร็จเพื่อสร้างสะพานเชื่อมการสื่อสารไร้สาย เราได้ตั้งค่าบอท จัดการความปลอดภัยโดยใช้รหัสประจำตัวและใบรับรอง และตั้งโปรแกรมการตอบสนองของพิน GPIO เพื่อโต้ตอบกับโลกทางกายภาพจากทุกที่ที่มีการเชื่อมต่ออินเทอร์เน็ต
คำถามที่พบบ่อย
ต้องใช้ไลบรารีใดในการเชื่อมต่อ ESP32 กับ Telegram?
ควรใช้ไลบรารี UniversalTelegramBot ซึ่งช่วยลดความซับซ้อนในการโต้ตอบกับ Telegram API และอำนวยความสะดวกในการส่งและรับข้อความ
ฉันจะมั่นใจได้อย่างไรว่ามีเพียงฉันเท่านั้นที่สามารถควบคุมบอทได้?
โค้ดนี้ใช้ตัวกรองที่เปรียบเทียบ ID แชทของข้อความที่ได้รับกับ CHAT_ID ที่กำหนดไว้ล่วงหน้า โดยไม่สนใจคำสั่งใดๆ ที่มาจากผู้ใช้รายอื่น
จำเป็นต้องใช้ HTTPS ในการสื่อสารกับบอทหรือไม่?
ใช่แล้ว Telegram ต้องการการเชื่อมต่อที่ปลอดภัย ดังนั้นจึงใช้ WiFiClientSecure และต้องกำหนดค่าใบรับรองรูทของ Telegram บน ESP32 ด้วย
คำสั่ง /led_toggle ในโค้ดมีจุดประสงค์อะไร?
คำสั่งนี้ใช้สำหรับกลับสถานะปัจจุบันของ LED โดยจะเปิด LED หากปิดอยู่ หรือปิด LED หากเปิดอยู่
เหตุใดจึงใช้ INPUT_PULLUP สำหรับสวิตช์?
ใช้เพื่อกระตุ้นความต้านทานภายในของแผงวงจร จึงไม่จำเป็นต้องเพิ่มความต้านทานทางกายภาพภายนอกเข้าไปในวงจรปุ่มกด
ฉันจะหาโทเค็นบอทและรหัสผู้ใช้ได้จากที่ไหน?
โทเค็นได้มาจากการสร้างบอทผ่าน BotFather บน Telegram และรหัสผู้ใช้สามารถรับได้จากบอทที่เชี่ยวชาญในการรับข้อมูลประจำตัวโปรไฟล์



