Konfiguracja NXT dla PlNXT
BT
https://help.ubuntu.com/community/BluetoothSetup
apt-get install blueetooth bluez-utils bluez-gnome bluez-hcidump
stty -F /dev/rfcomm0 -echo -icanon -iexten -isig -crnl -inpck -istrip -ixon -cstopb -cs8 parnb parodd -opost ispeed 115200 ospeed 115200
hcitool scan
hidd --connect
PH:
Skanowanie urządzeń BT:
hcitool scan
Edycja rfcomm.conf:
gedit _etc_bluetooth/rfcomm.conf
Dodać wpis:
rfcomm0 {
bind yes;
device MAC_ADRESS;
channel 1;
comment "NXT";
}
Restart:
_etc_init.d/bluetooth restart
Weryfikacja:
rfcomm
Ustawienie portu:
sudo stty -F /dev/rfcomm0 -echo -icanon -iexten -isig -icrnl -inpck -istrip -ixon -cstopb cs8 parenb parodd -opost ispeed 115200 ospeed 115200
Tutaj następuje pierwsze połączenie, więc i sparowanie z ustaleniem pinu.
Proszę załadować plnxt.pl i odpalić nxt_open/0.
Dodatkowo jakieś podstawowe dwa dema dodawałem przy ostatniej aktualizacji
w cvs.
Testy 2008.12.29
Ubuntu 8.04.01 desktop, robo2 wzorcowy
wpięcie dongla jabra
Dec 30 11:38:35 robo2 kernel: [ 1363.737446] usb 4-2: new full speed USB device using uhci_hcd and address 2
Dec 30 11:38:35 robo2 kernel: [ 1363.912426] usb 4-2: configuration #1 chosen from 1 choice
Dec 30 11:38:35 robo2 NetworkManager: <debug> [1230633515.384358] nm_hal_device_added(): New device added (hal udi is '/org/freedesktop/Hal/devices/usb_device_a5c_2101_noserial').
Dec 30 11:38:35 robo2 kernel: [ 1364.141171] Bluetooth: HCI USB driver ver 2.9
Dec 30 11:38:35 robo2 hcid[4999]: HCI dev 0 registered
Dec 30 11:38:35 robo2 kernel: [ 1364.150362] usbcore: registered new interface driver hci_usb
Dec 30 11:38:35 robo2 hcid[4999]: HCI dev 0 up
Dec 30 11:38:35 robo2 hcid[4999]: Device hci0 has been added
Dec 30 11:38:35 robo2 hcid[4999]: Starting security manager 0
Dec 30 11:38:35 robo2 NetworkManager: <debug> [1230633515.750184] nm_hal_device_added(): New device added (hal udi is '/org/freedesktop/Hal/devices/usb_device_a5c_2101_noserial_if0').
Dec 30 11:38:35 robo2 hcid[4999]: Device hci0 has been activated
Dec 30 11:38:35 robo2 NetworkManager: <debug> [1230633515.846196] nm_hal_device_added(): New device added (hal udi is '/org/freedesktop/Hal/devices/usb_device_a5c_2101_noserial_if1').
Dec 30 11:38:35 robo2 NetworkManager: <debug> [1230633515.998365] nm_hal_device_added(): New device added (hal udi is '/org/freedesktop/Hal/devices/usb_device_a5c_2101_noserial_if2').
Dec 30 11:38:36 robo2 NetworkManager: <debug> [1230633516.007863] nm_hal_device_added(): New device added (hal udi is '/org/freedesktop/Hal/devices/usb_device_a5c_2101_noserial_if3').
Dec 30 11:38:36 robo2 NetworkManager: <debug> [1230633516.021068] nm_hal_device_added(): New device added (hal udi is '/org/freedesktop/Hal/devices/usb_device_a5c_2101_noserial_if0_bluetooth_hci_19155fc6ce').
pojawia sie ikonka bt na pasku
aplet bt bluez 0.25
właściwości:
tryb pracy: inne urządzenia mogą się łączyć
usługi: serial, network, input,
w logach
Dec 30 11:41:07 robo2 network[7571]: Bluetooth Network daemon
Dec 30 11:41:07 robo2 network[7571]: Config options: InterfacePrefix=bnep%d, PANU_Script=(null), GN_Script=(null), NAP_Script=(null), GN_Interface=pan0, NAP_Interface=pan1, Security=true
Dec 30 11:41:07 robo2 kernel: [ 1516.241739] Bluetooth: BNEP (Ethernet Emulation) ver 1.2
Dec 30 11:41:07 robo2 kernel: [ 1516.241746] Bluetooth: BNEP filters: protocol multicast
Dec 30 11:41:07 robo2 kernel: [ 1516.296310] Bridge firewalling registered
Dec 30 11:41:07 robo2 network[7571]: Registered manager path:/org/bluez/network
Dec 30 11:41:07 robo2 network[7571]: Registered server path:/org/bluez/network/panu
Dec 30 11:41:07 robo2 network[7571]: Registered server path:/org/bluez/network/gn
Dec 30 11:41:07 robo2 network[7571]: Registered server path:/org/bluez/network/nap
Dec 30 11:41:07 robo2 network[7571]: /org/bluez/network: org.bluez.network.Manager.ListConnections()
Dec 30 11:41:07 robo2 kernel: [ 1516.297045] pan0: Dropping NETIF_F_UFO since no NETIF_F_HW_CSUM feature.
Dec 30 11:41:08 robo2 serial[7581]: Bluetooth Serial Port daemon
Dec 30 11:41:08 robo2 serial[7581]: Registered manager path:/org/bluez/serial
Dec 30 11:41:29 robo2 audio[5015]: Unregistered manager path
Dec 30 11:41:29 robo2 audio[5015]: Exit
Dec 30 11:41:29 robo2 input[7582]: Bluetooth Input daemon
Dec 30 11:41:29 robo2 input[7582]: Registered input manager path:/org/bluez/input
Dec 30 11:41:29 robo2 input[7582]: /org/bluez/input: org.bluez.input.Manager.ListDevices()
Dec 30 11:47:01 robo2 network[7571]: /org/bluez/network: org.bluez.network.Manager.ListConnections()
Dec 30 11:47:01 robo2 input[7582]: /org/bluez/input: org.bluez.input.Manager.ListDevices()
Dec 30 11:47:58 robo2 NetworkManager: <debug> [1230634078.878417] nm_hal_device_added(): New device added (hal udi is '/org/freedesktop/Hal/devices/bluetooth_acl_16530585e2').
Dec 30 11:48:00 robo2 hcid[4999]: pin_code_request (sba=00:19:15:5F:C6:CE, dba=00:16:53:05:85:E2)
Dec 30 11:48:12 robo2 hcid[4999]: link_key_notify (sba=00:19:15:5F:C6:CE, dba=00:16:53:05:85:E2)
Dec 30 11:48:17 robo2 NetworkManager: <debug> [1230634097.191374] nm_hal_device_removed(): Device removed (hal udi is '/org/freedesktop/Hal/devices/bluetooth_acl_16530585e2').
rfcomm0 {
bind yes;
device 00:16:53:05:85:E2; # Agatka
# channel 1;
comment "Agatka Example Bluetooth device";
}
stty -F /dev/rfcomm0 -echo -icanon -iexten -isig -inpck -istrip -ixon -cstopb parodd -opost ispeed 115200 ospeed 115200
export CVSROOT=:ext:gjn@charon.ia.agh.edu.pl/mnt/cvs/cvs-hades
export CVS_RSH=ssh
cvs co plnxt
Testy 2009.01.07
hcitool scan # przeglad urzadzen
hcitool info 00:16:53:05:85:E2
rfcomm # podglad kom rfc
rfcomm0: 00:16:53:05:85:E2 channel 1 clean # przed pol, ma byc clean!
rfcomm0: 00:16:53:05:85:E2 channel 1 connected [tty-attached] # po pol write
# uwaga, reczne zestawienie
rfcomm release rfcomm0
rfcomm bind rfcomm0 00:16:53:05:85:E2
# wysw konf serial dev
stty -F /dev/rfcomm0 -a
wajig purge swi-prolog swi-prolog-clib swi-prolog-doc swi-prolog-http swi-prolog-semweb swi-prolog-sgml swi-prolog-table swi-prolog-xpce
http://www.swi-prolog.org/dl-old.html
http://gollem.science.uva.nl/cgi-bin/nph-download/SWI-Prolog/binaries/pl-5.4.7-190.i586.rpm
Quickstart dla administratora (pod laboratorium)
rfcomm.conf
W pliku rfcomm.conf znajduje się konfiguracja dla zestawów NXT używanych w laboratorium.
Należy upewnić się, że plik w takiej postaci znajduje się w katalogu _etc_bluetooth.
W szczególności część dotycząca robota, który ma być użyty.
Po wprowadzeniu zmian w rfcomm.conf należy zrestartować BT:
_etc_init.d/bluetooth restart
Diagnostyka
Wyszukiwanie dostępnych urządzeń BT:
hcitool scan
Informacje o wskazanym urządzeniu:
hcitool info 00:16:53:05:85:E2
Podgląd stanu urządzeń:
rfcomm
#Efekt:
rfcomm0: 00:16:53:05:85:E2 channel 1 clean # Przed połączeniem, ma być clean lub closed.
rfcomm0: 00:16:53:05:85:E2 channel 1 connected [tty-attached] # Po połączeniu.
Podgląd konfiguracji urządzenia szeregowego:
stty -F /dev/rfcomm2 -a
Pakiety
bluetooth bluez-gnome bluez-hcidump bluez-utils gnome-bluetooth libbluetooth2 python-bluez
uzytkownik w gr do ktorej nalezy rfcomm, np. dialout -> uzycie modemow w m.kont ubuntu
Quickstart dla studenta
Ustawienie parametrów portu i sparowanie
Należy uruchomić skrypt nxt_stty (argumentem jest nazwa robota). Np.:
./nxt_stty czeslaw
W trakcie może zajść konieczność sparowania urządzeń. Nie będzie wymagane, jeżeli ostatnio z tym zestawem na tym komputerze była używana ta sama wytczka BT.
Przy sparowaniu NXT prosi o podanie numeru PIN, który następnie trzeba powtórzyć w oknie konfiguracyjnym, które powinno się pojawić po zatwierdzeniu PINu w NXT.
Troubleshooting
Urządzenia wcześniej sparowane można zobaczyć klikając prawym przyciskiem niebieską ikonę BT → Preferences → Bonded devices.
Jeżeli urządzenie znajduje się na tej liście, parowanie w ogóle nie powinno zachodzić. Wystarczy samo ustawienie parametrów portu, którego dokonuje się uruchamiając skrypt nxt_stty.
Gdyby jednak cały proces ustawienia parametrów portu i ewentualnego parowania nie przebiegał poprawnie, proszę:
usunąć z wyżej wskazanej listy urządzenie,
konieczne może też być usunięcie wpisu w NXT brick (należy wybrać z menu Bluetooth → My contacts → {device} → Delete)
Następnie proszę ponownie uruchomić skrypt nxt_stty.
Konfiguracja plnxt
W pliku konfiguracyjnym plnxt.pl należy ustawić urządzenie, z którego się korzysta z odpowiednim numerem.
Przykład dla 02 - Bolek:
% Specify the device files.
nxt_serial_device(write,'/dev/rfcomm2').
nxt_serial_device(read,'/dev/rfcomm2').
Interfejs NXT
W lewym górnym rogu wyświetlacza powinien znajdować się sybol BT oraz na prawo od niego symbol '<'.
Jeżeli tak nie jest, BT jest wyłączony. Należy go włączyć (z menu wybrać Bluetooth → On/Off → On).
Po nawiązaniu połączenia obok symbolu '<' pojawia się symbol '>'. Razem tworzą: '<>'.
Po zamknięciu połączenia znika symbol '>'.
Test
Otworzenie połączenia w powłoce:
Sprawdzenie poziomu baterii (najprostsze polecenie, które korzysta i z zapisu i z odczytu z urządzenia):
Zamknięcie połączenia w powłoce:
Test z wykorzystaniem programu demowego
Przykład:
demo2.pl (Magazynier)
podnieś kulkę (użyj sensora dotyku)
wykonaj zwrot o 180 stopni
przenieś kulkę pod ścianę (użyj sonaru do określenia co jest ścianą)
wyłacznik awaryjny: klaśniecie
Należy wczytać plik demos/demo2.pl i uruchomić go przy użyciu start/0.