อุปกรณ์โทรศัพท์ฉุกเฉินที่ใช้บอร์ด GeoLinker GL868 เพียงตัวเดียวก็สามารถเสียบซิมโทรเข้า-ออกได้เลย
สวัสดีชาว Maker สายหาทำทุกคนครับ! 🛠️ ปกติเวลาเราทำโปรเจกต์ IoT เราก็มักจะให้บอร์ดต่อ Wi-Fi หรือ Bluetooth ใช่ไหมครับ? แต่ถ้าเราอยากเอาโปรเจกต์ไปติดไว้กลางป่า กลางสวน หรืออยากทำปุ่มกดเรียกฉุกเฉินให้ผู้สูงอายุที่บ้าน (Elderly care) การใช้ Wi-Fi คงไม่ตอบโจทย์แน่ๆ
วันนี้เราเลยขอพามาป้ายยาโปรเจกต์ปั่นๆ แต่ใช้งานได้จริง นั่นคือการสร้าง "โทรศัพท์ฉุกเฉิน" (GSM Calling Device) ที่สามารถเสียบซิมการ์ด, กดปุ่มเพื่อโทรออกเบอร์ที่ตั้งไว้ และ "รับสายอัตโนมัติ (Auto-answer)" ได้เมื่อมีคนโทรเข้า! โดยพระเอกของเรางานนี้คือบอร์ด GeoLinker GL868 ครับ!
ความเจ๋งของบอร์ด GeoLinker GL868 🧠
เหตุผลที่โปรเจกต์นี้โคตรจะ Beginner-friendly เพราะเราไม่ต้องมานั่งปวดหัวต่อสายไฟโยงไปมาระหว่างบอร์ด ESP32 กับโมดูลโทรศัพท์ (GSM Module) ให้วุ่นวายครับ บอร์ด GeoLinker GL868 เขาจับเอาชิป ESP32-S3 มารวมร่างกับโมดูล SIM868 (2G GSM/GPRS + GPS) ไว้บนแผ่น PCB แผ่นเดียวกันเรียบร้อยแล้ว!
แถมบนบอร์ดยังมีวงจรจัดการแบตเตอรี่ (Battery management) ในตัว แค่เสียบแบต Li-ion 3.7V ผ่านหัวต่อ JST ก็พร้อมลุย เหมาะมากๆ กับการนำไปทำระบบกันขโมย, เครื่องติดตามรถ (Asset tracking), หรือระบบแจ้งเตือนในโรงงานอุตสาหกรรมครับ
💡 Maker's Tip: การคุยกันระหว่างชิป ESP32 กับโมดูล SIM868 จะใช้ชุดคำสั่งที่เรียกว่า "AT Commands" ผ่าน Serial ครับ เช่น สั่ง ATD+เบอร์โทร; เพื่อโทรออก หรือส่ง ATA เพื่อรับสายอัตโนมัติ
หากเพื่อนๆ ดูแล้วคันไม้คันมืออยากประกอบกล่องโทรศัพท์แบบนี้บ้าง แวะมาช้อป บอร์ดพัฒนา ESP32, ลำโพงตัวจิ๋ว, ไมค์โครโฟน และปุ่มกดต่างๆ ได้ที่ Globalbyte Shop เลยครับ! อ้อ... แล้วถ้าอยากได้กล่องใส่สวยๆ แบบในรูป ทางเรามี บริการรับปริ้นท์ 3D (3D Printing Service) ไว้บริการด้วยนะ ทัก LINE OA มาปรึกษากันได้เลยครับ!
หลักการทำงาน (Step-by-Step) ⚙️
การทำงานของเครื่องนี้ไม่ได้ซับซ้อนเลยครับ เรามาดูผังง่ายๆ กัน:
-
การโทรออก (Outgoing Call): เมื่อเรากดปุ่มที่ต่อไว้กับขา GPIO 4 ตัว ESP32 จะเช็กเงื่อนไข แล้วส่งคำสั่ง AT Command ไปบอกให้ซิมโทรออกไปยังเบอร์ที่ตั้งไว้ พร้อมตั้งค่าไมค์และลำโพงให้พร้อมคุย
-
การรับสาย (Incoming Call): เมื่อมีคนโทรเข้ามา โมดูล SIM868 จะส่งข้อความคำว่า "RING" แจ้ง ESP32 รัวๆ จากนั้น ESP32 จะส่งคำสั่ง
ATA กลับไปเพื่อ "กดรับสายอัตโนมัติ" ทำให้คนปลายสายพูดออกลำโพงของเราได้ทันที!
⚠️ ข้อควรรู้เรื่องระบบซิม 2G
โมดูล SIM868 รองรับคลื่นสัญญาณโทรศัพท์แบบ 2G เท่านั้นนะครับ (ไม่รองรับ 4G/LTE) ดังนั้นก่อนทำโปรเจกต์นี้ ต้องเช็กก่อนว่าซิมการ์ดและเครือข่ายมือถือในพื้นที่ของคุณยังเปิดให้บริการคลื่น 2G สำหรับอุปกรณ์ IoT อยู่หรือไม่ครับ!
ผังวงจรการต่อสาย (Circuit Diagram) 🔌
การต่อสายง่ายมาก! แค่ต่อลำโพงเข้า SP+/SP-, ไมค์เข้า M+/M- และปุ่มกดเข้า GPIO 4 เท่านั้น
ประกอบลงกล่อง 3D Print สวยงาม 📦
จับยัดลงกล่อง 3D Print ซ่อนสายและแบตเตอรี่ Li-ion 3.7V ไว้ด้านในอย่างเรียบร้อย
วิดีโอสาธิตการทำงานจริง 🎬
ตัวอย่างโค้ด: การรับสายอัตโนมัติ (Auto-Answer) 💻
เมื่อมีข้อความ "RING" เข้ามาทาง Serial2 (โมดูล SIM) บอร์ด ESP32 จะสั่งตอบกลับไปว่า "ATA" เพื่อรับสายครับ:
while (Serial2.available()) {
String response = Serial2.readStringUntil('\n');
response.trim();
// ตรวจจับคนโทรเข้า (Incoming Call Detection)
if (response.indexOf("RING") >= 0) {
Serial2.println("ATA"); // สั่งรับสายอัตโนมัติ
callActive = true;
audioConfigured = false;
}
}
ตัวอย่างโค้ด: การตั้งค่าระดับเสียงและไมโครโฟน 🔊
นี่คือตัวอย่างคำสั่ง AT Commands ที่ใช้ตั้งค่าความดังลำโพงและเกน (Gain) ของไมค์ครับ:
Serial2.println("AT+CHFA=1"); // เลือก Audio Channel 1
delay(100);
Serial2.println("AT+CLVL=90"); // ตั้งความดังลำโพงที่ 90
delay(100);
Serial2.println("AT+CMIC=0,12"); // เพิ่ม Gain ไมค์
delay(100);
Serial2.println("AT+FMMUTE=0"); // Unmute เสียง
delay(100);
Serial2.println("AT+SIDET=1"); // เปิด Sidetone ให้ได้ยินเสียงตัวเอง
📚 แหล่งข้อมูลอ้างอิงและดาวน์โหลดโค้ด:
*คำเตือนและข้อแนะนำ: เนื้อหาบทความนี้สรุปและแปลมาจากโปรเจกต์ของ
Circuit Digest โค้ดโปรแกรมในบทความเป็นเพียงส่วนหนึ่งของโครงสร้างหลัก ผู้เริ่มต้นควรศึกษาโค้ดฉบับเต็มและการลงไลบรารี GeoLinker จากลิงก์อ้างอิง และโปรดตรวจสอบสถานะการให้บริการสัญญาณ 2G ในเครือข่ายมือถือของคุณก่อนสั่งซื้อหรือพัฒนาโปรเจกต์ครับ