Hier ist meine Möglichkeit, eine Verbindung zu einem HC-05-Bluetooth-Gerät herzustellen, das an mein Arduino angeschlossen ist. Es muss keine Datei wie in Brians Antwort geschrieben werden, aber die Idee ist ähnlich. Ich habe es mit einem Baud 9600 Rate Setup auf dem HC-05 Gerät getestet.
Erster Schritt: Koppeln Sie das Gerät und geben Sie die PIN ein
Ich habe versucht, das Pairing über die GUI einzurichten, aber es hat nicht funktioniert. Hier ist die Befehlszeilenmethode, die für mich funktioniert hat. Lassen Sie uns zuerst das Gerät über die Befehlszeile koppeln. Lauf :
sudo bluetoothctl
Stellen Sie sicher, dass das Bluetooth-Gerät gestartet ist:
# power on
Wir starten jetzt den Agenten, der sich "an den Pin erinnert" für rfcomm
:
# agent on
Jetzt aktivieren wir den Scan-Modus, um unser Gerät zu finden und es zu koppeln:
# scan on
Nach einigen Sekunden sollte der MAC Ihres Geräts angezeigt werden. Wir werden es als nachher bezeichnen. Dann müssen Sie das Gerät nur noch wie folgt koppeln:
# pair <MAC>
Sie werden aufgefordert, eine PIN einzugeben. Diese befindet sich standardmäßig 1234
auf meinem HC-05-Gerät. Sie können feststellen, dass es möglich ist, dass Ihr Gerät eine Verbindung herstellt und die Verbindung mit einer Meldung wie der folgenden trennt:
[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
aber es ist kein Problem. Sie müssen keine Verbindung herstellen, können also jetzt bluetoothctl
durch Eingabe beenden Ctrl + D
.
Stellen Sie eine verwendbare Datei bereit /dev/rfcomm0
Stellen Sie zunächst sicher, dass Sie zuvor keinen Befehl rfcomm ausgeführt haben. Selbst wenn Sie mit Ctrl+C
dem Programm schließen, wird es im Hintergrund ausgeführt.
sudo killall rfcomm
Jetzt kannst du rennen
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
Beachten Sie, dass beim Versuch, auf die Eingabe von rfcom zu schreiben, nichts passiert ist. Sie müssen ein anderes Programm verwenden.
Dritter und letzter Schritt: Schreiben Sie in die /dev/rfcomm0
Es gibt verschiedene Möglichkeiten, in die Datei zu schreiben. Beachten Sie jedoch, dass alle Vorgehensweisen root beinhalten. Ich beschreibe hier mehrere Programme, die dies können (so dass Sie je nach Bedarf oder Installation auf Ihrem System auswählen können). Wenn Sie vergessen, das Programm als root auszuführen, liegt möglicherweise ein Fehler vor:
stty: /dev/rfcomm0: Device or resource busy
Erste Option: Verbinden mit screen
Bildschirm ist ein sehr leistungsfähiges Werkzeug. Sie können es installieren (es ist immer noch nützlich), indem Sie Folgendes verwenden:
sudo apt-get install screen
und dann laufen
sudo screen /dev/rfcomm0
Wenn Sie vergessen, es als root auszuführen, erhalten Sie eine Fehlermeldung wie bei Aleksander:
[screen is terminating]
Geben Sie zum Beenden "(STRG + A) +: Beenden" ein.
Zweite Option: Verbinden mit minicom
Es installieren
sudo apt-get install minicom
und dann laufen
sudo minicom -D /dev/rfcomm0
Wenn Sie vergessen, es als root auszuführen, wird ein Fehler wie angezeigt
minicom: cannot open /dev/rfcomm0: Device or resource busy
Geben Sie zum Beenden "Strg + A X" ein.
Dritte Option: Python Script Miniterm
Laden Sie dieses Skript herunter und führen Sie Folgendes aus:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
Schreiben Sie direkt in die Datei
Führen Sie zunächst den folgenden Befehl aus (9600 ist die Baudrate):
sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Jetzt können Sie in diese Datei wie in eine klassische Datei schreiben:
sudo su -c "echo 'message' > /dev/rfcomm0"
und theoretisch daraus lesen mit
sudo tail -f /dev/rfcomm0
Aber ich weiß nicht, dass Lesen nicht funktioniert, wenn einer von euch eine Idee hat ...