Ecco il mio modo di procedere per connettermi a un dispositivo Bluetooth HC-05 collegato al mio arduino. Non è necessario scrivere un file come nella risposta di Brian, ma l'idea è simile. L'ho provato con un'impostazione di baud 9600 rate sul dispositivo HC-05.
Primo passo: associare il dispositivo e fornire il PIN
Ho provato a configurare dalla GUI l'associazione, ma non funzionava. Ecco il modo di procedere da riga di comando che ha funzionato per me. Innanzitutto, accoppiamo il dispositivo dalla riga di comando. Correre :
sudo bluetoothctl
Assicurarsi che il dispositivo Bluetooth sia avviato:
# power on
Ora iniziamo l'agente che "ricorderà il pin" per rfcomm
:
# agent on
Ora abilitiamo la modalità di scansione per trovare il nostro dispositivo ed essere in grado di accoppiarlo:
# scan on
Dopo alcuni secondi dovrebbe apparire il MAC del tuo dispositivo. Lo indicheremo come dopo. Quindi, devi solo accoppiare il dispositivo in questo modo:
# pair <MAC>
Ti verrà chiesto di digitare un PIN, per impostazione predefinita è 1234
sul mio dispositivo HC-05. È possibile notare che è possibile che il dispositivo si connetta e quindi si disconnetta con un messaggio del genere:
[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
ma non è un problema. Non è necessario connettersi, quindi ora è possibile uscire bluetoothctl
digitando Ctrl + D
.
Fornire un file utilizzabile /dev/rfcomm0
Innanzitutto, assicurati di non aver mai eseguito alcun comando rfcomm prima. In effetti, anche se si chiude con Ctrl+C
il programma, viene comunque eseguito in background.
sudo killall rfcomm
Ora puoi correre
sudo rfcomm connect /dev/rfcomm0 20:16:10:24:29:77 1 &
Si noti che se si tenta di scrivere sull'input di rfcom, non è successo nulla. Devi usare un altro programma.
Terzo e ultimo passo: scrivere nel /dev/rfcomm0
Esistono diversi modi per scrivere sul file, ma si noti che tutti i modi per procedere riguardano root. Descrivo qui diversi programmi che possono farlo (in modo che tu possa scegliere in base alle tue esigenze o, ad esempio, a ciò che è installato sul tuo sistema). Se dimentichi di eseguire il programma come root, potresti avere un errore:
stty: /dev/rfcomm0: Device or resource busy
Prima opzione: connettersi utilizzando screen
Lo schermo è uno strumento molto potente. Puoi installarlo (è sempre più utile) usando:
sudo apt-get install screen
e poi corri
sudo screen /dev/rfcomm0
Se dimentichi di eseguirlo come root, otterrai un errore come Aleksander:
[screen is terminating]
Per uscire, digita "(CTRL + A) +: esci"
Seconda opzione: connettersi utilizzando minicom
Installalo
sudo apt-get install minicom
e poi corri
sudo minicom -D /dev/rfcomm0
Se si dimentica di eseguirlo come root, si verificherà un errore simile
minicom: cannot open /dev/rfcomm0: Device or resource busy
Per uscire, digita "Ctrl + A X".
Terza opzione: miniterm di script python
Scarica questo script ed esegui:
chmod +x miniterm.py
sudo ./miniterm.py /dev/rfcomm0
Scrivi direttamente nel file
Innanzitutto eseguire il comando seguente (9600 è la velocità di trasmissione):
sudo stty -F /dev/rfcomm0 cs8 9600 ignbrk -brkint -icrnl -imaxbel -opost -onlcr -isig -icanon -iexten -echo -echoe -echok -echoctl -echoke noflsh -ixon -crtscts
Ora puoi scrivere in questo file come in un file classico:
sudo su -c "echo 'message' > /dev/rfcomm0"
e in teoria letto da esso usando
sudo tail -f /dev/rfcomm0
Ma non so che leggere non funziona, se qualcuno di voi ha un'idea ...