Bluetooth
Verfasst: Fr 13. Apr 2012, 14:25
Mit dem Attiny kann man auf verschiedene Weisen drahtlos kommunizieren. An anderer Stelle habe ich schon ausführlich darüber berichtet, wie man dies mit Funkmodulen bewerkstelligen kann. An dieser Stelle möchte ich vorstellen, wie unser Attiny über Bluetooth mit einem PC kommunzieren kann. Hier kommt ein Bluetooth-Adapter zum Einsatz, wie er für 8 bis 10 Euro (inkl. Portokosten) über EBAY in China erworben werden kann. Der Vorteil dieses Bausteins: Er wird einfach über RxD und TxD an den Attiny angeschlossen; die Übertragungskonfiguration ist standardmäßig 8 Bits, No Parity, 1 Stop-Bit, 9600 Baud. In BASCOM muss demnach die Schnittstelle nur über $baud = 9600 initialisiert werden - und schon kann es losgehen... Voraussetzung ist natürlich, dass am PC eine Bluetooth-Schnittstelle vorhanden ist und eingerichtet wurde. (Falls der PC keine Bluetooth-Schnittstelle hat: Für wenige Euro kann man Bluetooth-USB-Sticks kaufen).
Bei meiner Platine erfolgte die Verbindung folgendermaßen:
Wenn man die Bluetooth-Platine an den Attiny-Platine angeschlossen hat, fängt eine LED auf der Bluetooth-Platine an zu blinken. Am PC kann die Bluetooth-Platine unter dem Namen "linvor" gefunden werden. Die Anmeldung erfogt dann mit dem Passwort "1234". Bei erfolgreicher Verbindung leuchtet die LED nun durchgängig.
PC und Attiny können nun wie bei einer kabelgebundenen COM-Verbindung miteinander kommunizieren. Achten Sie jedoch dabei darauf, dass auf Seiten des PCs die COM-Nummer des Bluetooth-Adapters benutzt wird.
Mihilfe sogenannter AT-Codes können einzelne Parameter des Bluetooth-Moduls wie z. B. die Baudrate geändert werden. Verwirrenderweise findet man widersprüchliche Angaben dazu. Der Grund dafür ist: Für die Firmware linvor 1.5 gibt es zwei Versionen: HC-05 und HC-06. Bei der hier vorliegenden Version stehen nur wenige AT-Kommandos zur Verfügung. Diese AT-Kommandos können nur dann eingegeben werden, wenn das Bluetooth-Modul noch keine Verbindung hat, d. h. die Kontroll-LED noch blinkt. Das vollständige Kommando muss innerhalb einer einzigen Sekunde an das Modul übertragen werden. Terminalprogramme, welche direkt bei der Eingabe einer Zeichenkette Zeichen für Zeichen absenden, sind somit kaum zu gebrauchen. Ich habe hierzu einen PC mit einem USB-UART-Wandler eingesetzt. Als Terminalprogramm habe ich HTerm benutzt; dieses kann eine Zeichenkette komplett auf Knopfdruck versenden. Bitte beachten: Die Zeichenkette ist nicht mit CR/LF abzuschließen.
Das Bluetooth-Modul quittiert den Empfang eines Kommandos; die Antworten sind selbst innerhalb der Version HC-06 nicht einheitlich. Deswegen führe ich sie hier nicht auf. Hier aber alle(!) AT-Kommandos im Einzelnen:
Beachten Sie:
1. Die Änderung der Baudrate wird sofort wirksam; das Terminal muss dementsprechend neu konfiguriert werden.
2. Die Änderung des Gerätenamens wird nur wirksam, wenn man nach der Änderung ein paar Minuten verstreichen lässt und dann das Modul aus- und wieder einschaltet.
.
Bei meiner Platine erfolgte die Verbindung folgendermaßen:
Wenn man die Bluetooth-Platine an den Attiny-Platine angeschlossen hat, fängt eine LED auf der Bluetooth-Platine an zu blinken. Am PC kann die Bluetooth-Platine unter dem Namen "linvor" gefunden werden. Die Anmeldung erfogt dann mit dem Passwort "1234". Bei erfolgreicher Verbindung leuchtet die LED nun durchgängig.
PC und Attiny können nun wie bei einer kabelgebundenen COM-Verbindung miteinander kommunizieren. Achten Sie jedoch dabei darauf, dass auf Seiten des PCs die COM-Nummer des Bluetooth-Adapters benutzt wird.
Code: Alles auswählen
' Datei für Attiny-Platine von E. Eube, G. Heinrichs und U. Ihlefeldt
' terminal->bluetooth->Attiny->LCD
'----------------------------------------------------------------------------
$regfile = "attiny2313.dat" 'Attiny2313
$crystal = 4000000 '4 MHz
$baud = 9600
'**********************************************************
'******************* Deklarationen ************************
Dim Zk As String * 16
'****************** Initialisierung ***********************
Ddrb = &B11111111 'Port B als Ausgangsport
Ddrd = &B01110000 'D4, D5, D6 als Ausgang; Rest als Eingang
Portd = &B10001111 'Eingänge auf high legen
Config Lcd = 16 * 2 'LCD konfigurieren
Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , Db7 = Portb.3 , E = Portb.4 , Rs = Portb.6
Cursor Off
'**********************************************************
'******************** Hauptprogramm ***********************
Do
Input Zk
Cls
Lcd Zk
Loop
Das Bluetooth-Modul quittiert den Empfang eines Kommandos; die Antworten sind selbst innerhalb der Version HC-06 nicht einheitlich. Deswegen führe ich sie hier nicht auf. Hier aber alle(!) AT-Kommandos im Einzelnen:
- AT -> Überprüfung der Verbindung
- AT+VERSION -> Rückgabe der Versionsnummer
- AT+PINxxxx -> Ändern des Bluetooth-Verbindungscodes
- AT+NAMEzeichenkette -> Ändern des Bluetooth-Gerätenamens
- AT+BAUDx oder AT+UARTx (je nach Firmware) -> Ändern der Baudrate (x=1: 1200 Baud; x=2: 2400 Baud; x=3: 4800 Baud; x=4: 9600 Baud; x=5: 19200 Baud; ... )
Beachten Sie:
1. Die Änderung der Baudrate wird sofort wirksam; das Terminal muss dementsprechend neu konfiguriert werden.
2. Die Änderung des Gerätenamens wird nur wirksam, wenn man nach der Änderung ein paar Minuten verstreichen lässt und dann das Modul aus- und wieder einschaltet.
.