การใช้ Bluetooth module HC-05 สื่อสารระหว่าง RaspberryPI กับ Arduino ภาค 1

การสื่อสารระหว่าง Raspberry PI กับ Arduino แบบ Wireless มีด้วยกันหลายวิธี เช่น WiFi, Bluetooth, Cellular, RFM12[1] หรือแม้แต่ผ่านดาวเทียมซึ่งก็คือ GPS [2] แต่ละวิธีก็มีค่าใช้จ่ายแตกต่างกันไป  สำหรับ Bluetooth นั้นแม้จะมีประสิทธิภาพน้อยกว่าวิธีกอื่นแต่ก็เป็นทางเลือกที่ต้นทุนต่ำที่สุดด้วย และถ้าเราไม่ต้องการระยะห่างระหว่างอุปกรณ์มากมายอะไร การใช้ Bluetooth ก็มีเหตุผลดี






จากการค้นหาและอ่านบทความว่าด้วยเรื่องของการใช้ Bluetooth ระหว่าง Raspberry PI กับ Arduino นั้นจะเป็นการใช้งาน Bluetooth dongle ติดตั้งที่ Raspberry PI และทาง Arduino ก็จะเป็น HC-05 Bluetooth Module เสียหมด ซึ่งก็สามารถใช้งานได้ดี  แต่ในบทความนี้จะนำเสนอวิธีการใช้ HC-05 ทั้งส่วนของ Raspberry PI และ Arduino ครับ

ภาพ Bluetooth dongle จาก http://commons.wikimedia.org


ภาพ Hc-05 Bluetooth Module จาก http://wiki.iteadstudio.com/Serial_Port_Bluetooth_Module_%28Master/Slave%29_:_HC-05#31._Connect_Device



Slave ทั้งคู่ ก็เลยไม่คุยกัน

หลักของการสื่อสารผ่านเครือข่ายจะแบ่งอุปกรณ์ออกเป็นสองกลุ่มคือ Master กับ Slave โดยทิศทางการควบคุมจะออกจาก Master ไปยัง Slave และ HC-05 สามารถเป็นได้ทั้งสองสถานะคือ Slave Mode หรือ Master Mode แต่ต้องเป็นอย่างหนึ่งอย่างหนึ่งเท่านั้น สถานะที่ถูกตั้งไว้ตั้งแต่แรกคือ Slave Mode หากเราไม่ทำการเปลี่ยนสถานะให้ถูกต้องเสียก่อน เมื่อนำไปใช้งาน ทั้ง Raspberry PI และ Arduino ก็จะมี Bluetooth modem ที่เป็น Slave ทั้งคู่ การสื่อสารก็จะไม่เกิดขึ้นแน่นอน

สร้าง Master/Slave ด้วย AT-Command Set


AT Command Set[3] คือชุดคำสั่งสั้น ๆ ที่ใช้ในการควบคุม modem ( Bluetooth เป็น modem [4] แบบหนึ่ง) และการใช้ AT Command กับ HC-05 นั้นเราต้องใช้ Arduino ครับ

สร้าง Slave

ท่านอาจสงสัยว่า HC-05 มีสถานเป็น Slave อยู่แล้วจะสร้างทำไม เราต้องสร้าง Slave ให้ Master รู้จักครับ การที่ Master จะรู้จ้ก Slave ได้ ต้องใช้ MAC Address ของ Slave ขั้นตอนเป็นดังนี้

1. ต่อสาย jump wires ระหว่าง HC-05 เข้ากับ Arduino (รุ่นไหนก็ได้ ของผมใช้ Arduino Nano) ดังนี้


ArduinoHC-05
3.3 V-->VCC
D10-->RX
D11-->TX
D9-->Key
GRD-->GRD

2. ต่อ Arduino เข้ากับ PC แล้วใช้ code ตามนี้ กับ Arduino  ตอนที่ Flash โปรแกรมไปยัง Arduino ให้เอาสาย GRD หรือ vcc  ออกจาก HC-05 ก่อน  หลังจากเสร็จแล้วค่อยเสียบกลับเข้าไปตามเดิม

3. จาก Code เขาใช้ SoftwareSerial เป็นตัวติดต่อกับ Bluetooth แล้วใช้ Serial ในการแสดงผล และกำหนด pin 9 ของ Arduino เป็น High เพื่อให้ HC-05 เข้าสู่ AT-Command Mode  และใน mode นี้เองต้องกำหนดให้ baudrate ให้กับ SoftwareSerial เป็น 38400

4. ในเวลานี้เราจะสังเกตุเห็น LED ของ HC-05 กระพริบช้า ๆ (ประมาณ 2 วินาทีต่อครั้ง) เปิดหน้าต่าง Serial Monitor ขึ้นมา แล้วตั้ง ฺBaudrate เป็น 9600 และเลือก Both NL&CR

5. ลองพิมพ์คำสั่ง AT แล้วคลิ๊ก Send หรือกด Enter ท่านควรจะเห็นคำว่า OK ปรากฏขึ้น หากไม่มีอะไรเกิดขึ้น ให้ตรวจสอบการต่อสายต่าง ๆ ปิดหน้าต่าง Serial Monitor แล้วทำตามข้อ 4 อีกครับ

6. พิมพ์ AT+ADDR? เพื่อสอบถาม MAC Address ของ HC-05 ที่ท่านใช้ ท่านจะได้คำตอบคล้าย ๆ แบบนี้่ +ADDR:2013:11:72011 ให้จดตัวเลขไว้ (+ADDR ไม่เอา)

7. พิมพ์ AT+ROLE? เพื่อสอบถามสถานะปัจจุบัน ท่านควรจะได้คำตอบเป็น +ROLE:0 แสดงว่าเป็น Slave แต่หากได้ +ROLE:1 ก็แสดงว่าเป็น Master Mode ให้เปลี่ยนสถานะด้วยคำสั่ง AT+ROLE=0

8. ถอดสายที่ต่อระหว่าง Arduino กับ HC-05 ออก

สร้าง Master
1. ต่อสาย jump wire ระหว่าง Arduino กับ HC-05 อีกอันหนึ่งตามตารางข้างบน

2. พิมพ์คำสั่ง AT+ROLE=1 เพื่อให้ HC-05 ชิ้นนี้ทำหน้าที่เป็น Master

3. พิมพ์คำสั่ง AT+BIND=2013,11,72011 โดยเปลี่ยนตัวเลข MAC Address ให้ตรงกับของท่านเองที่บันทึกไว้ตามข้อ 6 ข้างบน เพื่อให้ HC-05 นี้ทำการ Bind กับ HC-05 ที่เราทำเป็น Slave ไว้ก่อนหน้านี้

4. ทดสอบด้วยพิมพ์คำสั่ง AT+ROLE? ควรจะได้คำตอบเป็น +ROLE:1  และพิมพ์คำสั่ง AT+BIND? ท่านควรจะได้คำตอบเป็น +BIND:2013:11:72011


5. ถอดสายที่ต่อระหว่าง Arduino กับ HC-05 ออก



 หลังจากนี้ไป HC-05 ทั้งสองจะทำการ Bind กันเอง โดยอัตโนมัติทันที่ที่ได้รับพลังงาน

สรุป

ในตอนนี้ผมกล่าวถึงการนำเอา Bluetooth Module  HC-05 สองชิ้นมาช่วยสร้างระบบสื่อสารระหว่าง Raspberry PI กับ Arduino โดยกำหนดให้ชิ้นหนึ่งเป็น Master ส่วนอีกชิ้นเป็น Slave ด้วย AT-Command และกำหนดให้ชิ้นที่เป็น Master จำ Mac Address ของ Slave ไว้ เพื่อให้ Bluetooth ทั้งสองชิ้นทำการ Bind กันโดยอัตโนมัติ เพักสักหน่อยแล้วค่อยมาต่อภาคสองกันเรื่องการนำไปใช้งานกัน





ความคิดเห็น