ในบทสอนนี้ น้องจะได้เรียนรู้วิธีตั้งค่าและใช้ ESP32 เพื่อรับข้อความจาก Telegram แล้วแสดงผลบนจอ SH1106 แถมยังมีปุ่มกดกับออดบี๊ปๆ ให้เล่นด้วย งานนี้จัดไปวัยรุ่น!
Cellular Intercept: The ESP32 Telegram Beeper
ใช้ Bluetooth มันก็แค่รัศมี 30 ฟุต งานนี้ Beeper with Telegram Bot ขยับขยายวงการ IoT ไปทั่วโลกเลย! ด้วยการสั่งงานผ่าน Telegram Messenger Bot API ผ่าน Wi-Fi ที่เข้ารหัสไว้ น้องสามารถนั่งเล่นมือถืออยู่ที่โตเกียว พิมพ์ "sound the alarm" แล้วเจ้า ESP32 ที่วางอยู่โรงจอดรถในบราซิลจะตื่นตัวขึ้นมาและส่งเสียงไซเรน 120 เดซิเบลออกมาทันที! สุดยอดไปเลยมั้ยล่ะ
ของที่ต้องเตรียม
- ESP32 หนึ่งตัว
- จอแสดงผล SH1106 (128×64) แบบ I2C หนึ่งจอ
- ออด (Buzzer) หนึ่งตัว
- ปุ่มกด (Button) หนึ่งปุ่ม
- สายจั๊มเปอร์ให้ครบ
- ติดตั้ง Arduino IDE และไลบรารี่ที่จำเป็นแล้ว
ขั้นตอนที่ 1: ติดตั้งไลบรารี่ที่ต้องใช้
เปิด Arduino IDE ขึ้นมา แล้วตรวจสอบให้แน่ใจว่ามีไลบรารี่เหล่านี้ติดตั้งไว้แล้ว:
WiFi.hสำหรับเชื่อมต่อ Wi-FiWiFiClientSecure.hสำหรับการเชื่อมต่อที่ปลอดภัยUniversalTelegramBot.hสำหรับคุยกับบอท TelegramU8g2lib.hสำหรับจัดการจอ SH1106
น้องสามารถติดตั้งไลบรารี่เหล่านี้ได้ผ่าน Library Manager ใน Arduino IDE โดยค้นหาชื่อไลบรารี่ได้เลย
ขั้นตอนที่ 2: ต่อวงจรฮาร์ดแวร์
ต่ออุปกรณ์ต่างๆ ตามแผนภาพด้านล่างนี้ ระวังอย่าต่อผิดขั้วนะ ไม่งั้นอาจได้กลิ่นควันฟูๆ
- จอ SH1106:
- VCC -> 5V ของ ESP32
- GND -> GND ของ ESP32
- SCL -> GPIO 22 ของ ESP32
- SDA -> GPIO 21 ของ ESP32
- ออด (Buzzer):
- ขั้วบวก -> GPIO 12 ของ ESP32
- ขั้วลบ -> GND ของ ESP32
- ปุ่มกด (Button):
- ขาหนึ่ง -> GPIO 23 ของ ESP32
- อีกขาหนึ่ง -> GND ของ ESP32
ขั้นตอนที่ 3: ตั้งค่า Telegram Bot
ลงทะเบียน Token จาก BotFather
โปรเจกต์นี้เราไม่ต้องเขียน UI ให้วุ่นวาย แอพ Telegram นั่นแหละคือ UI ของเราแล้ว
- เปิดแอพ Telegram ในมือถือ แล้วคุยกับ "BotFather" ผู้ยิ่งใหญ่
- สร้างบอทใหม่ขึ้นมา (เช่น
@MakerBuzzerBot) - BotFather จะสร้าง API Token ความยาว 46 ตัวอักษรที่เป็นความลับสุดยอดออกมาให้ เช่น:
718919:AAEfH8T_f2yqX0wXG-5HqP_L-p3X... - ห้ามช็อตนะตัวนี้! ถ้า Token นี้หลุดไปให้คนอื่น เขาจะสามารถควบคุม ESP32 ของน้องได้แบบเบ็ดเสร็จ!
หลังจากได้ Token มาแล้ว:
- เปิดโค้ดขึ้นมา แล้วแทนที่
TOKEN_BOTด้วย Token ที่ได้มาจาก BotFather - แทนที่
ssidและpasswordด้วยชื่อและรหัส Wi-Fi ของน้อง
ขั้นตอนที่ 4: อัพโหลดโค้ดลง ESP32
- เชื่อม ESP32 เข้ากับคอมพิวเตอร์
- ในเมนู Tools -> Board ให้เลือกบอร์ดเป็น ESP32 Dev Module
- ในเมนู Tools -> Port ให้เลือกพอร์ตที่ถูกต้อง
- กดปุ่ม Upload เพื่ออัพโหลดโค้ดลง ESP32 รอจนอัพโหลดเสร็จ ไม่มี error
ขั้นตอนที่ 5: ทดสอบระบบ
- เมื่ออัพโหลดโค้ดเสร็จแล้ว ให้เปิด Serial Monitor ใน Arduino IDE เพื่อดูข้อความดีบัก
- บนจอ SH1106 ควรจะขึ้นข้อความว่า "Waiting for message!"
- ลองส่งข้อความไปหาบอท Telegram ที่น้องสร้างไว้ ข้อความควรจะปรากฏบนจอ และออดควรจะส่งเสียงดังขึ้นมา!
ถ้าทำได้ตามนี้หมด ก็ถือว่าสำเร็จแล้ววว! สู้งานนะน้อง
การดึงข้อมูล JSON Array (UniversalTelegramBot)
ESP32 มันไม่นั่งรอฟังเฉยๆ นะเว้ย มันจะขอข้อมูลแบบจัดหนักจัดเต็ม!
- ไลบรารี่
<UniversalTelegramBot.h>จะสั่งให้WiFiClientSecureของ ESP32 เชื่อมต่อไปยังapi.telegram.orgผ่านอุโมงค์ HTTPS ที่เข้ารหัส 100%! - เหมือนชีพจรเลย ทุกๆ 3 วินาที ESP32 จะรันคำสั่ง:
bot.getUpdates(bot_last_message_received + 1); - ตรรกะของ Payload: ถ้ามีใครส่งข้อความใน Telegram มา!
if (text == "/beep") {
bot.sendMessage(chat_id, "EXECUTING SIREN PROTCOL!", "");
tone(buzzerPin, 4000, 5000); // เปิดเสียงแหลม 4kHz แบบหูดับเป็นเวลา 5 วินาที!
}
else if (text == "/status") {
bot.sendMessage(chat_id, "The Buzzer Array is currently online and fully connected to Azure nodes.", "");
}
คลังอาวุธชิ้นส่วน IoT แบบ Webhook ระดับเทพ
- ไมโครคอนโทรลเลอร์ ESP32 Core (จำเป็นสุดๆ ตัว ESP8266 มันแทบจะประมวลผลใบรับรองการเข้ารหัส SSL/TLS ขนาดใหญ่ที่ API ของ Telegram กำหนดมาไม่ไหว บางทีแค่คำนวณเลขก็ล่มแล้ว!)
- ไลบรารี่ UniversalTelegramBot
- ออดเพียโซ บัสเซอร์, รีเลย์ตัวเบิ้ม, หรือไซเรน 12V 120dB ต่อกับมอสเฟตแบบจัดเต็ม!
- แอป Telegram ในมือถือ iPhone/Android ของคุณ
ชิ้นส่วนอิเล็กทรอนิกส์
Esp32 หนึ่งตัว

พินหัวเมีย

สายดูปอนต์ หัวผู้-เมีย

จอ OLED SH1106

เป็นจอแสดงผลโมดูล OLED ขาวดำแบบจุด ขนาด 128x64 พิกเซล ใช้อินเทอร์เฟซ I2C มีข้อดีหลายอย่างเมื่อเทียบกับจอ LCD เช่น ความสว่างสูง คอนทราสต์ดี มุมมองกว้าง และกินไฟน้อยมาก มันเข้ากันได้กับ Arduino, Raspberry Pi และไมโครคอนโทรลเลอร์อื่นๆ อย่าง PIC ทำงานกับระดับลอจิก 3.3V ถึง 5V และมีมุมมองมากกว่า 160 องศา ขนาดหน้าจอ 1.3 นิ้ว ใช้ไฟเลี้ยง 3.3V ถึง 5V เอาไปใช้กับนาฬิกาอัจฉริยะ, MP3, เทอร์โมมิเตอร์, เครื่องมือวัด และโปรเจกต์ DIY อื่นๆ ได้
คุณสมบัติ
อินเทอร์เฟซ: I2C (ระดับลอจิก 3.3V / 5V)
ความละเอียด: 128 x 64
มุมมอง: >160 องศา
สีแสดงผล: น้ำเงิน
ขนาดจอ: 1.3 นิ้ว
ไดรเวอร์ IC: SH1106
ไฟเลี้ยง: DC 3.3V5V
อุณหภูมิทำงาน: -2070’C
การใช้งาน: นาฬิกาอัจฉริยะ, MP3, เทอร์โมมิเตอร์, เครื่องมือวัด, โปรเจกต์ DIY ฯลฯ
โมดูลออด (Buzzer Module)

โมดูล KY-004

PCB

วงจร
