ด้วยความนิยมและไม่มีค่าใช้จ่ายในการใช้งาน คนส่วนใหญ่จึงเลือกส่งการแจ้งเตือนทางไลน์ การส่งการแจ้งเตือนทางไลน์ไม่เสียค่าใช้จ่าย ในขณะเดียวกันก็มีข้อเสีย คือ จำเป็นจะต้องทำขั้นตอนเชื่อมต่อกับผู้ที่จะรับข้อความก่อนถึงจะส่งการแจ้งเตือนได้ แต่สำหรับ SMS เพียงมีเบอร์โทรศัพท์ก็สามารถส่งการแจ้งเตือนได้ ไม่ต้องเพิ่มเพื่อนก่อน และข้อดีอีกข้อที่สำคัญ คือ SMS ไม่จำเป็นต้องใช้อินเตอร์เน็ต แม้ปิดการใช้อินเตอร์เน็ตในโทรศัพท์มือถือ ก็สามารถรับการแจ้งเตือนได้
การส่ง SMS ในระบบสมองกลฝังตัวในอดีต มักจะเลือกใช้โมดูล GSM หรือโมดูล 3G มาใช้ส่ง SMS ซึ่งมีข้อเสียที่จำเป็นจะต้องซื้อโมดูลเหล่านี้มาเพิ่ม รวมทั้งมีความยุ่งยากในการจัดการซิม และต้องเสียค่าใช้จ่ายค่อนข้างสูงเมื่อส่ง SMS ข้ามเครือข่าย ดังนั้นสำหรับ ESP32 ที่สามารถเชื่อมต่ออินเตอร์เน็ตได้ การส่ง SMS ผ่านอินเตอร์เน็ตจึงเป็นทางเลือกที่ดีกว่า
การส่ง SMS ผ่านอินเตอร์เน็ต จะใช้การส่งข้อมูลไปยัง SMS Gateway ซึ่งเป็นเว็บไซต์ให้บริการส่ง SMS ผ่านอินเตอร์เน็ต ซึ่งบริการหลายอย่างใช้ปัจจุบันก็เลือกใช้ SMS Gateway เช่น เว็บไซต์ธนาคารส่ง OTP มาให้กรอกลงหน้าเว็บก่อนโอนเงิน , เว็บขายสินค้าออนไลน์ส่ง SMS แจ้งสถานะการส่งสินค้าของลูกค้า เป็นต้น
การใช้ SMS Gateway สามารถควบคุมค่าใช้จ่ายได้ โดยค่าใช้จ่ายในการส่ง SMS 1 ครั้ง จะขึ้นอยู่กับการซื้อจำนวนข้อความที่ส่งได้ในแต่ละครั้ง เช่น หากซื้อ 1,666 ข้อความ จะตกข้อความละ 0.6 บาท แต่หากซื้อจำนวนมากขึ้น เป็น 25,000 ข้อความ จะตกข้อความละ 0.4 บาท ทั้งนี้ยิ่งซื้อข้อความมาก จะมีราคาต่อข้อความถูกลง ซึ่งราคาแต่ละผู้ใช้บริการ SMS Gateway จะแตกต่างกัน ผู้ใช้สามารถเลือก SMS Gateway ได้ตามความสมัครใจ
รูปที่ 1 ตัวอย่างราคาค่าส่ง SMS จากเว็บ ThaiBulksms.com
สำหรับบทความนี้จะเลือกใช้ SMS Gateway ที่ชื่อ ThaiBulksms.com เป็นตัวอย่าง สำหรับผู้ใช้ใหม่จะทดลองส่ง SMS ได้ 20 ข้อความ หากใช้จนครบแล้ว จำเป็นต้องซื้อข้อความเพิ่ม
ในขั้นตอนนี้คือขั้นตอนการสมัครสมาชิกกับ SMS Gateway และซื้อข้อความจาก SMS Gateway
เข้าไปที่ https://frontend.thaibulksms.com/ แล้วกดปุ่ม SIGN UP แล้วสมัครสมาชิกไปตามขั้นตอน
หลังจากสมัครสมาชิกตามขั้นตอนแล้ว ขั้นตอนต่อมาคือทดสอบส่ง SMS ให้เข้าไปที่ https://frontend.thaibulksms.com/ อีกครั้ง แล้วกดปุ่ม LOGIN
กรอกชื่อผู้ใช้และรหัสผ่านที่ได้สมัครสมาชิกไว้ แล้วกดปุ่ม login
เมื่อเข้าสู่ระบบแล้ว ระบบจะพามาหน้าสรุปข้อมูล ซึ่งจะแสดงเครดิต (เครดิต = จำนวน SMS ที่ส่งได้) ที่เหลืออยู่
ให้กดที่เมนู ส่งข้อความ แล้วเลือก ส่งข้อความ
ระบบจะพามาหน้าทดสอบส่งข้อความ ให้ทดลองเลือกชื่อผู้ส่ง กรอกเบอร์โทรศัพท์ผู้รับ กรอกข้อความที่ส่งการส่ง เลือกเวลาที่ส่งข้อความ แล้วกดปุ่มส่งข้อความ
ระบบจะสรุปข้อมูลเครดิตที่ใช้ ให้กดปุ่มยืนยันเพื่อส่งข้อความ
หากส่งข้อความสำเร็จ ระบบจะพามาหน้าสรุปการส่งข้อความ
ที่โทรศัพท์มือถือ จะมีข้อความส่งมาแล้ว
การเขียนโปรแกรมใน ESP32 จะเป็นการเรียกใช้ API ที่ ThaiBulksms.com เตรียมไว้ให้ โดย API ที่ ThaiBulksms.com เตรียมไว้ให้ จะมีส่วนของการทดสอบส่งข้อความ (ไม่หักเครดิต) และส่วนส่งข้อความจริง (หักเครดิต)
ให้ก๊อบโค้ดโปรแกรมต่อไปนี้ไปวางในโปรแกรม ArduinoIDE
บรรทัดที่ 5 และบรรทัดที่ 6 ให้กำหนดชื่อ WiFi และรหัสผ่าน WiFi แล้วอัพโหลดโปรแกรมลงบอร์ด ESP32
เปิด Serial Monitor ขึ้นมา รอเชื่อมต่อ WiFi เสร็จ แล้วบอร์ดจะส่งข้อมูลไปยัง ThaiBulksms.com แล้ว ThaiBulksms.com ตอบข้อความผลการส่งข้อความกลับมา โดยผลการส่งให้สังเกตจากตัวเลขภายใต้ <Status> และ </Status> หากเป็นเลข 1 จะถือว่าส่งสำเร็จ
ให้แก้ไข THAIBULKSMS_USERNAME และ THAIBULKSMS_PASSWORD ในบรรทัดที่ 10 และ 11 เป็นชื่อผู้ใช้และรหัสผ่านที่สมัครไว้กับ ThaiBulksms.com และเพิ่มเครื่องหมายทับ (/) 2 เครื่องหมาย ไว้หน้า #define THAIBULKSMS_TEST ในบรรทัดที่ 9 เพื่อปิดการทดสอบส่ง SMS
บรรทัดที่ 34 ในฟังก์ชัน sendSMS() ให้แก้ไขเบอร์ที่จะส่ง SMS และข้อความ ที่จะส่ง
จากนั้นอัพโหลดโปรแกรมลงบอร์ด ESP32 อีกครั้ง
เปิด Serial Monitor ขึ้นมา ค่า Status จะต้องเป็น 1 เหมือนเดิม
แล้ว SMS จะส่งมายังโทรศัพท์มือถือ ตามข้อความและเบอร์ที่กำหนด
ข้อควรระวัง
หลังจากเพิ่มเครื่องหมายทับ (/) 2 เครื่องหมาย ไว้หน้า #define THAIBULKSMS_TEST ในบรรทัดที่ 9 เพื่อปิดการทดสอบส่ง SMS แล้ว หากใส่ชื่อผู้ใช้และรหัสผ่านที่สมัครไว้กับ ThaiBulksms.com ผิด แล้วส่งข้อมูลไปยัง ThaiBulksms.com เกิน 5 ครั้ง ทาง ThaiBulksms.com จะบล็อกหมายเลข IP ทำให้ไม่สามารถส่ง SMS ผ่าน ThaiBulksms.com ได้ 1 วัน
จากโค้ดโปรแกรมที่ได้ทดสอบส่ง SMS ฟังก์ชัน sendSMS() ใช้ในการส่ง SMS ไปยังหมายเลขที่กำหนด และข้อความที่กำหนด มีรายละเอียดการใช้งานดังนี้
รูปแบบฟังก์ชัน
void sendSMS(String phoneNumber, String message) ;
พารามิเตอร์
การตอบกลับ
ไม่มี