Oto mój sposób na połączenie się z urządzeniem Bluetooth HC-05 podłączonym do mojego arduino. Nie musi pisać pliku jak w odpowiedzi Briana, ale pomysł jest podobny. Przetestowałem to z ustawieniem prędkości 9600 bodów na urządzeniu HC-05.
Pierwszy krok: sparuj urządzenie i podaj kod PIN
Próbowałem skonfigurować z GUI parowanie, ale nie działało. Oto sposób postępowania z wiersza poleceń, który zadziałał dla mnie. Najpierw sparujmy urządzenie z linii poleceń. Biegać :
sudo bluetoothctl
Upewnij się, że urządzenie Bluetooth zostało uruchomione:
# power on
Teraz uruchamiamy agenta, który „zapamięta kod PIN” dla rfcomm
:
# agent on
Teraz włączamy tryb skanowania, aby znaleźć nasze urządzenie i móc je sparować:
# scan on
Po kilku sekundach powinien pojawić się adres MAC urządzenia. Oznaczymy to później. Następnie wystarczy sparować urządzenie w następujący sposób:
# pair <MAC>
Zostaniesz poproszony o wpisanie kodu PIN, domyślnie jest on 1234
na moim urządzeniu HC-05. Możesz zauważyć, że możliwe jest, że urządzenie połączysz, a następnie rozłączysz z takim komunikatem:
[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
ale to nie problem. Nie musisz się łączyć, więc możesz teraz wyjść bluetoothctl
, pisząc Ctrl + D
.
Podaj przydatny plik /dev/rfcomm0
Po pierwsze, upewnij się, że nie uruchomiłeś wcześniej żadnego polecenia rfcomm. Rzeczywiście, nawet jeśli zamkniesz Ctrl+C
program, nadal działa on w tle.
sudo killall rfcomm
Teraz możesz biegać
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
Zauważ, że jeśli spróbujesz pisać na wejściu rfcom, nic się nie stanie. Musisz użyć innego programu.
Trzeci i ostatni krok: napisz do /dev/rfcomm0
Plik można zapisać na kilka sposobów, ale należy pamiętać, że wszystkie sposoby postępowania wymagają rootowania. Opisuję tutaj kilka programów, które mogą to zrobić (abyś mógł wybrać w zależności od potrzeb lub na przykład tego, co jest zainstalowane w systemie). Jeśli zapomnisz uruchomić program jako root, możesz mieć błąd:
stty: /dev/rfcomm0: Device or resource busy
Pierwsza opcja: połącz za pomocą screen
Screen to bardzo potężne narzędzie. Możesz go zainstalować (zawsze jest to przydatne), używając:
sudo apt-get install screen
a następnie biegnij
sudo screen /dev/rfcomm0
Jeśli zapomnisz uruchomić go jako root, pojawi się błąd taki, jak Aleksander:
[screen is terminating]
Aby wyjść, wpisz „(CTRL + A) +: quit”
Druga opcja: połącz za pomocą minicom
Zainstaluj to
sudo apt-get install minicom
a następnie biegnij
sudo minicom -D /dev/rfcomm0
Jeśli zapomnisz uruchomić go jako root, wystąpi błąd podobny do tego
minicom: cannot open /dev/rfcomm0: Device or resource busy
Aby wyjść, wpisz „Ctrl + A X”.
Trzecia opcja: miniterm skryptu python
Pobierz ten skrypt i uruchom:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
Napisz bezpośrednio do pliku
Najpierw uruchom następujące polecenie (9600 to prędkość transmisji):
sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Teraz możesz pisać w tym pliku jak w klasycznym pliku:
sudo su -c "echo 'message' > /dev/rfcomm0"
i teoretycznie czytam z niego za pomocą
sudo tail -f /dev/rfcomm0
Ale nie wiem, czy czytanie nie działa, jeśli ktoś z was ma pomysł ...