Đây là cách của tôi để tiến hành kết nối với thiết bị bluetooth HC-05 được cắm trên arduino của tôi. Không cần phải viết một tệp như trong câu trả lời của Brian, nhưng ý tưởng thì tương tự. Tôi đã thử nghiệm nó với thiết lập tốc độ baud 9600 trên thiết bị HC-05.
Bước đầu tiên: ghép nối thiết bị và cung cấp mã PIN
Tôi đã cố gắng thiết lập từ GUI ghép nối, nhưng nó không hoạt động. Đây là cách dòng lệnh để tiến hành làm việc cho tôi. Đầu tiên, chúng ta hãy ghép nối thiết bị từ dòng lệnh. Chạy :
sudo bluetoothctl
Hãy chắc chắn rằng thiết bị bluetooth đã được khởi động:
# power on
Bây giờ chúng ta bắt đầu tác nhân sẽ "nhớ pin" cho rfcomm
:
# agent on
Bây giờ chúng tôi kích hoạt chế độ quét để tìm thiết bị của mình và có thể ghép nối thiết bị:
# scan on
Sau vài giây, MAC của thiết bị của bạn sẽ xuất hiện. Chúng tôi sẽ biểu thị nó như sau. Sau đó, bạn chỉ cần ghép thiết bị như thế này:
# pair <MAC>
Theo mặc định, bạn sẽ được yêu cầu nhập mã PIN, 1234
trên thiết bị HC-05 của tôi. Bạn có thể lưu ý rằng có thể thiết bị của bạn kết nối rồi ngắt kết nối với một tin nhắn như thế:
[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
Nhưng nó không phải là một vấn đề. Bạn không cần kết nối, vì vậy bây giờ bạn có thể thoát bluetoothctl
bằng cách nhập Ctrl + D
.
Cung cấp một tập tin có thể sử dụng /dev/rfcomm0
Đầu tiên, hãy chắc chắn rằng bạn không chạy bất kỳ lệnh rfcomm nào trước đó. Thật vậy, ngay cả khi bạn đóng với Ctrl+C
chương trình, nó vẫn chạy trong nền.
sudo killall rfcomm
Bây giờ, bạn có thể chạy
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
Lưu ý rằng nếu bạn cố gắng ghi vào đầu vào của rfcom, không có gì xảy ra. Bạn cần sử dụng một chương trình khác.
Bước thứ ba và cuối cùng: viết vào /dev/rfcomm0
Có một số cách để viết trên tệp, nhưng lưu ý rằng tất cả các cách để tiến hành liên quan đến root. Tôi mô tả ở đây một số chương trình có thể làm điều đó (để bạn có thể chọn tùy thuộc vào nhu cầu của bạn hoặc vào những gì được cài đặt trên hệ thống của bạn chẳng hạn). Nếu bạn quên chạy chương trình với quyền root, bạn có thể gặp lỗi:
stty: /dev/rfcomm0: Device or resource busy
Tùy chọn đầu tiên: kết nối bằng screen
Màn hình là một công cụ rất mạnh mẽ. Bạn có thể cài đặt nó (nó luôn hữu dụng nữa) bằng cách sử dụng:
sudo apt-get install screen
và sau đó chạy
sudo screen /dev/rfcomm0
Nếu bạn quên chạy nó dưới quyền root, bạn sẽ gặp lỗi như Aleksander mắc phải:
[screen is terminating]
Để thoát khỏi nó, nhập "(CTRL + A) +: thoát"
Tùy chọn thứ hai: kết nối bằng minicom
Cài đặt nó
sudo apt-get install minicom
và sau đó chạy
sudo minicom -D /dev/rfcomm0
Nếu bạn quên chạy nó dưới quyền root, bạn sẽ gặp lỗi như
minicom: cannot open /dev/rfcomm0: Device or resource busy
Để thoát khỏi nó, gõ "Ctrl + A X".
Tùy chọn thứ ba: tập lệnh python miniterm
Tải xuống tập lệnh này và chạy:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
Viết trực tiếp vào tập tin
Đầu tiên chạy lệnh sau (9600 là tốc độ 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
Bây giờ bạn có thể viết trong tệp này như trong một tệp cổ điển:
sudo su -c "echo 'message' > /dev/rfcomm0"
và trên lý thuyết đọc từ nó bằng cách sử dụng
sudo tail -f /dev/rfcomm0
Nhưng tôi không biết đọc không hoạt động, nếu bất kỳ ai trong số bạn có ý tưởng ...