การสื่อสารระหว่าง 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 ครับ
AT Command Set[3] คือชุดคำสั่งสั้น ๆ ที่ใช้ในการควบคุม modem ( Bluetooth เป็น modem [4] แบบหนึ่ง) และการใช้ AT Command กับ HC-05 นั้นเราต้องใช้ Arduino ครับ
1. ต่อสาย jump wires ระหว่าง HC-05 เข้ากับ Arduino (รุ่นไหนก็ได้ ของผมใช้ Arduino Nano) ดังนี้
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 ระหว่าง 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) ดังนี้
Arduino | HC-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 กันเอง โดยอัตโนมัติทันที่ที่ได้รับพลังงาน
ความคิดเห็น
แสดงความคิดเห็น