โปรเจกต์ Phone Call Indicator และ Panic Switch
เครื่องแสดงสถานะสายเรียกเข้าผ่าน Bluetooth และ Android พร้อม Panic Switch สำหรับโทรหาหมายเลขที่ตั้งค่าไว้
เครื่องแสดงสถานะสายเรียกเข้าผ่าน Bluetooth และ Android พร้อม Panic Switch สำหรับโทรหาหมายเลขที่ตั้งค่าไว้
▶ กดเพื่อดูวิดีโอสาธิตโปรเจกต์
คุณพ่อของผมซึ่งมีอายุมากแล้วมีปัญหาในการใช้งานสมาร์ทโฟน นอกจากนี้ท่านยังมีความบกพร่องทางการได้ยินอย่างมาก ทำให้ไม่สามารถทราบได้ว่าโทรศัพท์กำลังดังอยู่หรือไม่ ผมจึงรู้สึกว่าหากมีตัวบ่งชี้สัญญาณเสียงและภาพเมื่อมีสายเรียกเข้าก็น่าจะช่วยท่านได้ ในขณะที่กำลังทำโปรเจกต์นี้ ผมได้ปรับปรุงแนวคิดเริ่มต้นให้ครอบคลุมถึงการโทรหรือส่งข้อความไปยังหมายเลขที่ตั้งค่าไว้ล่วงหน้าโดยใช้สวิตช์ตัวเดียวกัน ซึ่งสามารถใช้เป็น panic switch ได้หากจำเป็น
ในตอนแรกผมเริ่มด้วย Arduino Pro Mini, HC05 Bluetooth Module ฯลฯ โดยใช้ breadboard พร้อมกับ LED และสวิตช์ ต่อมาผมตัดสินใจย้ายทุกอย่างไปยัง PCB ที่ผมออกแบบและสร้างขึ้นเองตั้งแต่ต้นจนจบ และยังได้สร้างกล่องอะคริลิก (acrylic enclosure) ขึ้นมาด้วย
เนื่องจากผมทำทุกอย่างด้วยตัวเอง ทั้ง PCB, enclosure ฯลฯ ผมคิดว่ามันน่าจะเป็นคู่มือที่ดีสำหรับผู้ที่ต้องการลองทำโปรเจกต์ตั้งแต่ต้นจนจบ ซึ่งจะช่วยประหยัดแรงในการหาอุปกรณ์ที่เหมาะสม และบางทีพวกเขาอาจจะพบวิธีที่ดีกว่าในการทำสิ่งต่างๆ ซึ่งเป็นเรื่องที่น่ายินดีเสมอ
ผมจะแบ่งโปรเจกต์นี้ออกเป็นขั้นตอนย่อยๆ ซึ่งจะทำให้อ่านเข้าใจง่ายและทำตามได้ดังนี้:
จริงๆ แล้วหลักการพื้นฐานนั้นค่อนข้างง่าย โดยจะมีการสร้างช่องทางการสื่อสาร (serial communication) ระหว่างอุปกรณ์ Android (โทรศัพท์) และ Bluetooth Module (ซึ่งเชื่อมต่อกับ Arduino) ผ่านทางแอป Android เมื่อโทรศัพท์ Android ได้รับสายเรียกเข้า ข้อความเฉพาะจะถูกส่งไปยังอุปกรณ์ BT ซึ่งจะถูกอ่านโดย Arduino จากนั้น Arduino จะถูกโปรแกรมให้ทำตามขั้นตอนที่กำหนดตามข้อความที่ได้รับ ในกรณีนี้คือการส่งเสียง Buzzer นอกจากนี้ยังมีสวิตช์รีเซ็ตแบบแมนนวลเพื่อกลับสู่สถานะปกติ
ในการทำงานย้อนกลับ (โหมด panic switch) - เมื่อกดสวิตช์ Arduino จะส่งชุดตัวอักษรที่กำหนดไปยังแอป Android เมื่อแอปได้รับชุดข้อมูลนั้นก็จะทำการโทรไปยังหมายเลขที่กำหนดไว้ซึ่งบันทึกอยู่ในแอป
มีบทความที่ยอดเยี่ยมเกี่ยวกับการสื่อสารระหว่าง Android - Arduino โดย Brian Wirsing ซึ่งสามารถดูได้ที่นี่ ผมได้นำโค้ดที่แนะนำมาใช้ประโยชน์อย่างมาก นอกจากนี้ยังมีชุดบทเรียนวิดีโออื่นๆ ที่เน้นเรื่องการสื่อสาร Bluetooth ระหว่าง Android กับ Android ซึ่งเป็นบทเรียน 4 ตอนบน YouTube ลิงก์สำหรับตอนแรกอยู่ที่นี่
สิ่งสำคัญคือต้องเข้าใจแนวคิดของ Threads และ Handlers ใน Android โดยพื้นฐานแล้ว กิจกรรมที่เกี่ยวข้องกับโค้ดทั้งหมดที่อาจทำให้หน้าจอผู้ใช้งาน (User Interface) ค้าง จะต้องถูกนำไปไว้ใน Thread แยกต่างหากเพื่อให้ทำงานในพื้นหลัง (Background) ส่วน Handler จะถูกใช้เพื่อส่งข้อความระหว่าง Thread ต่างๆ และโต้ตอบกับส่วน User Interface หลัก
เพื่อให้ HC-05 สื่อสารกับโทรศัพท์ Android ได้ จำเป็นต้องจับคู่ (Pair) ทั้งสองเครื่องเข้าด้วยกัน และควรให้ HC-05 เป็นอุปกรณ์เดียวที่ถูกจับคู่ไว้ หากโทรศัพท์ของคุณมีการจับคู่กับอุปกรณ์อื่นหลายตัว ให้ยกเลิกการจับคู่อุปกรณ์อื่นทั้งหมดก่อน
การสื่อสารระหว่างอุปกรณ์สองเครื่องประกอบด้วย:
ในโปรเจกต์นี้ เส้นทางการสื่อสารจะถูกตั้งค่าระหว่าง Android และอุปกรณ์ Bluetooth (Module HC-05) นอกจากนี้ยังมี Serial Interface ระหว่าง HC-05 และ Arduino ดังนั้นโดยสรุปแล้ว การส่งข้อมูลจาก Android จะถูกรับโดย Arduino ผ่านทาง HC-05
สำหรับขั้นตอนที่ Android จะสื่อสารกับ HC-05 มีดังนี้:
บรรทัดที่ 83 ของ MainActivity.java ตรวจสอบว่ามี Adapter หรือไม่:
btAdapter = BluetoothAdapter.getDefaultAdapter();
บรรทัดที่ 191 และ 192 ของ MainActivity.java จะคืนค่า BTDevice:
btDevice = (BluetoothDevice) (btAdapter.getBondedDevices().toArray())[0];
btAdapter.getRemoteDevice(String.valueOf(btDevice));
private final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
public void run() {
try {
mmSocket = btDevice.createInsecureRfcommSocketToServiceRecord(MY_UUID);
mmSocket.connect();
} catch (IOException e) {
cont = false;
Message message = Message.obtain();
message.what = SOCKET_NOT_CONNECTED;
handler.sendMessage(message);
e.printStackTrace();
}
if ((mmSocket != null) && (cont)) {
Message message = Message.obtain();
message.what = SOCKET_OPENED;
handler.sendMessage(message);
socket = mmSocket;
}
}
}
สนับสนุนเพื่อรับ Source Code หรือแอปพลิเคชันสำหรับโปรเจกต์นี้
ประเมินราคาอัตโนมัติ + Reference Code
กรอกข้อมูลให้ครบ ระบบจะสร้างรหัสอ้างอิงและประเมินราคา/ระยะเวลาคร่าว ๆ จากรายละเอียดงาน แล้วให้กด Add LINE พร้อมพิมพ์รหัสนี้เพื่อคุยต่อ
ส่งข้อมูลเรียบร้อย
ขั้นตอนต่อไป: กดปุ่มด้านล่าง ระบบจะคัดลอกข้อความพร้อม Reference Code ให้ แล้วพาไปหน้า LINE ทันที เอาข้อความนั้นส่งใน LINE เพื่อให้ทีมงานดึงข้อมูลจากฟอร์มนี้มาต่อได้เลย
Reference Code
รีวิวจากคนใช้งานจริง
ถ้าเคยสั่งงาน เคยอ่านหน้านี้แล้วได้ประโยชน์ หรือมีข้อเสนอแนะ ฝากรีวิวไว้ได้เลย
ยังไม่มีรีวิวบนหน้านี้ ถ้าเคยใช้งานหรือมีข้อเสนอแนะ เขียนเป็นคนแรกได้เลย