Get the Flash Player to see this player.

time2online Joomla Extensions: Simple Video Flash Player Module
Komunikacja z Bluetooth

Aby stworzyć nasz inteligentny dom należy do naszego serwera podpiąć inne urządzenia którymi będziemy sterować. Najłatwiej przeciągnąć przewody i podpiąć je bezpośrednio do nóżek mikrokontrolera. Można także wykorzystać transmisję bezprzewodową po WiFi lub bluetooth. Na rynku można znaleźć wiele urządzeń bluetooth podłączanych przez USB. Tak podłączone urządzenie można skonfigurować jak zwykłego COM'a.  W tym celu trzeba skonfigurować jądro systemu, tak aby wykrywało Bluetooth. Zachęcam do odwiedzenia stron:

http://www.gentoo.org/doc/pl/bluetooth-guide.xml
http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-bluetooth.html
http://www.linuxtogo.org/gowiki/AngstromBluetooth
http://dalethatcher.com/acer-travelmate-803LMi/bluetooth.html
http://pratyeka.org/rfcomm/

Zaczniemy od oczyszczenia jądra po poprzedniej kompilacji poleceniem:

make mrproper

kopiujemy pliki konfiguracyjne naszego zestawu:

cp arch/arm/configs/omap3_devkit8000_defconfig .config

Następnie odpalamy graficzne menu jądra:

make menuconfig

Wybieramy Device Driver -> USB supported oraz nasze bluetooh Networing Support -> <*> Bluetooth subsystem support -> i zaznaczamy opcje:

następnie wchodzimy do bluutooth device driver i mówimy przez jakie urządzenie będziemy się łączyć (ja mam USB), można tam wybrać starą lub nową wersje USB:

Po zapisaniu zmian dajemy komendę i czekamy na stworzenie pliku uImage (możecie zaznaczyć też wszystkie urządzenia i wszystkie sterowniki do USB, aby ciągle nie kompilować jądra):

make uImage

Plik wgrywamy na karę SD i odpalamy system. Teraz wystarczy doinstalować programy ułatwiające pracę z bluetooh takie jak bluez.:

opkg install bluez4

Cały proces i przykłady znajdziecie na:

http://wiki.openmoko.org/wiki/Manually_using_Bluetooth

W tym momencie mamy kompletne narzędzia do pracy z bluetooth, teraz wystarczy podłączyć nasz USB Bluetooth adapter (pamiętajcie,  że należy go podłączyć do tego mini USB przez odpowiedni kabel).

Teraz sprawdzamy, czy coś jest podpięte do USB poleceniem:

hciconfig -a

Jeśli zostało wykryte urządzenie, wystarczy je uaktywnić poprzez polecenie:

hciconfig hci0 up

Teraz sprawdzamy jakie to urządzenie poleceniem już wcześniej znanym:

hciconfig -a

następnie załączamy bluetootha w jakimś urządzeniu np. telefonie i wyszukujemy te urządzenie poleceniem:

hcitool scan

Wszystko zaprezentowałem w logach z konsoli:

Teraz możemy sobie zapingować poleceniem:

l2ping D8:B3:77:C2:7E:05

oczywiście jeśli macie smartfona, to bez większych przeszkód dostępnę są tam tylko 2 usługi (transfer i push), tak jak to można było zobaczyć używając windowsowego oprogramowania do obsługi bluetooth, które już wcześniej opisywałem w tym artykule:

http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=143&Itemid=164

Reszta usług wymaga specjalnego dostępu, więc się tam nie dostaniemy tak łatwo. Niestety nie wiem jak zautoryzować połączenie w Angstromie z poziomu konsoli, ponieważ przy łączeniu się wymagane jest wpisanie kodu w telefonie i urządzeniu. Trzeba zainstalować bluetooth-agent, albo inny program który uwierzytelni połączenie. Ale na Raspberry działa wszystko idealnie. Pewnie Tu też będzie działało jak zmienię dystrybucję na Ubuntu lub Debiana.

Aby skorzystać z tych usług należy doinstalować pakiety:

opkg install obexftp
opkg install ussp-push

Teraz samodzielnie skanujemy nasze otoczenie lub bezpośrednio smartfona w poszukiwaniu dostępnych usług (oczywiście w ustawieniach smartfona musicie zaznaczyć opcję "Możliwe do wykrycia"):

sdptool browser

W odpowiedzi uzyskujemy kanał usługi do przesyłania plików:


Mając kanał możemy przesyłać pliki z urządzenia, albo przesyłać z urządzenia do komputera.

Dla mnie najważniejsze jest połączenie się z urządzeniem i dostanie się do jego COMM'a, ponieważ wtedy możemy sterować danym urządzeniem. Aby tego dokonać należy na na sztywno zdefiniować takie połączenie w pliku etc/bluetooth/rfcomm.conf. Po prostu trzeba odkomentować niektóre linijki i dopisać swój adres i kanał:

rfcomm0{
#  #Automatically bind the device at startup
bind yes;
#
#  #Bluetooth address of the device
device DB:B3:77:C2:7E:05;
#
# # RFCOMM channel for the connection
channel 1;
#
#  Description of the connection
comment "Example Bluetooth device";
}

Teraz wystarczy wysłać ten plik do systemu poleceniem:

rfcomm bind rfcomm0

W tym momencie mamy już dostęp do wirtualnego portu szeregowego który jest umieszczony w pliku dev/rfcomm0 można się tam dostać poleceniem cat i odczytać dane z urzadzenia:

cat /dev/rfcomm0

Zachęca do przeczytania podobnego artykułu tu:

http://avrkwiat.nstrefa.pl/omnie/index.php?option=com_content&view=article&id=164&Itemid=188