นี่คือวิธีในการเชื่อมต่อกับอุปกรณ์บลูทู ธ HC-05 ที่ต่อกับ Arduino ของฉัน ไม่จำเป็นต้องเขียนไฟล์เหมือนในคำตอบของ Brian แต่ความคิดนั้นคล้ายกัน ฉันทดสอบด้วยการตั้งค่าอัตราบอด 9600 บนอุปกรณ์ HC-05
ขั้นตอนแรก: จับคู่อุปกรณ์และระบุ PIN
ฉันพยายามตั้งค่าจากการจับคู่ GUI แต่มันไม่ทำงาน นี่คือวิธีที่บรรทัดคำสั่งเพื่อดำเนินการที่ได้ผลสำหรับฉัน ก่อนอื่นให้เราจับคู่อุปกรณ์จากบรรทัดคำสั่ง วิ่ง :
sudo bluetoothctl
ตรวจสอบให้แน่ใจว่าอุปกรณ์บลูทู ธ เริ่มทำงานแล้ว:
# power on
ตอนนี้เราเริ่มตัวแทนที่จะ "จดจำพิน" สำหรับrfcomm
:
# agent on
ตอนนี้เราเปิดใช้งานโหมดสแกนเพื่อค้นหาอุปกรณ์ของเราและสามารถจับคู่ได้:
# scan on
หลังจากนั้นไม่กี่วินาที MAC ของอุปกรณ์ของคุณจะปรากฏขึ้น เราจะแสดงว่าเป็นหลังจาก จากนั้นคุณต้องจับคู่อุปกรณ์ดังนี้:
# pair <MAC>
คุณจะถูกขอให้พิมพ์ PIN โดยค่าเริ่มต้นจะ1234
อยู่ในอุปกรณ์ HC-05 ของฉัน คุณสามารถทราบว่าเป็นไปได้ว่าอุปกรณ์ของคุณเชื่อมต่อจากนั้นตัดการเชื่อมต่อด้วยข้อความเช่นนั้น:
[CHG] Device 20:16:10:24:29:77 UUIDs: 00001101-0000-1000-8000-00805f9b34fb
[CHG] Device 20:16:10:24:29:77 ServicesResolved: yes
[CHG] Device 20:16:10:24:29:77 Paired: yes
Pairing successful
[CHG] Device 20:16:10:24:29:77 ServicesResolved: no
[CHG] Device 20:16:10:24:29:77 Connected: no
แต่มันไม่ใช่ปัญหา คุณไม่จำเป็นต้องเชื่อมต่อดังนั้นตอนนี้คุณสามารถออกจากพิมพ์bluetoothctl
Ctrl + D
ระบุไฟล์ที่ใช้งานได้ /dev/rfcomm0
ประการแรกต้องแน่ใจว่าคุณไม่ได้ใช้คำสั่ง rfcomm ใด ๆ มาก่อน แน่นอนแม้ว่าคุณจะปิดด้วยCtrl+C
โปรแกรมก็ยังคงทำงานในพื้นหลัง
sudo killall rfcomm
ตอนนี้คุณสามารถเรียกใช้
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
โปรดทราบว่าหากคุณพยายามเขียนอินพุตของ rfcom ไม่มีอะไรเกิดขึ้น คุณต้องใช้โปรแกรมอื่น
ขั้นตอนที่สามและครั้งสุดท้าย: เขียนลงใน /dev/rfcomm0
มีหลายวิธีในการเขียนไฟล์ แต่โปรดทราบว่าวิธีทั้งหมดในการดำเนินการเกี่ยวข้องกับรูท ฉันอธิบายที่นี่หลายโปรแกรมที่สามารถทำได้ (เพื่อให้คุณสามารถเลือกขึ้นอยู่กับความต้องการของคุณหรือสิ่งที่ติดตั้งบนระบบของคุณเช่น) หากคุณลืมรันโปรแกรมในฐานะ root คุณอาจมีข้อผิดพลาด:
stty: /dev/rfcomm0: Device or resource busy
ตัวเลือกแรก: เชื่อมต่อโดยใช้ screen
หน้าจอเป็นเครื่องมือที่มีประสิทธิภาพมาก คุณสามารถติดตั้งได้ (มันจะเป็นประโยชน์ตลอดไปอีกต่อไป) โดยใช้:
sudo apt-get install screen
จากนั้นเรียกใช้
sudo screen /dev/rfcomm0
หากคุณลืมที่จะรันมันในฐานะ root คุณจะได้รับข้อผิดพลาดเหมือนที่ Aleksander ได้รับ:
[screen is terminating]
หากต้องการออกจากระบบให้พิมพ์ "(CTRL + A) +: quit"
ตัวเลือกที่สอง: เชื่อมต่อโดยใช้ minicom
ติดตั้ง
sudo apt-get install minicom
จากนั้นเรียกใช้
sudo minicom -D /dev/rfcomm0
หากคุณลืมรันเป็นรูทคุณจะพบข้อผิดพลาด
minicom: cannot open /dev/rfcomm0: Device or resource busy
หากต้องการออกจากระบบให้พิมพ์ "Ctrl + A X"
ตัวเลือกที่สาม: สคริปต์ python miniterm
ดาวน์โหลดสคริปต์นี้และเรียกใช้:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
เขียนลงในไฟล์โดยตรง
เรียกใช้คำสั่งต่อไปนี้ก่อน (9600 เป็นอัตรา baud):
sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
ตอนนี้คุณสามารถเขียนในไฟล์นี้เหมือนในไฟล์คลาสสิค:
sudo su -c "echo 'message' > /dev/rfcomm0"
และในทางทฤษฎีอ่านจากการใช้
sudo tail -f /dev/rfcomm0
แต่ฉันไม่ทราบว่าการอ่านไม่ได้ผลหากคุณมีความคิด ...