====== 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: [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: [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: [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: [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: [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: [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() * applet/właściwości/przeglądanie urządzeń -> jest agatka * połącz * pojawia się pytanie o pin * w logach 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: [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: [1230634097.191374] nm_hal_device_removed(): Device removed (hal udi is '/org/freedesktop/Hal/devices/bluetooth_acl_16530585e2'). * _etc_bluetooth/rfcomm.conf rfcomm0 { bind yes; device 00:16:53:05:85:E2; # Agatka # channel 1; comment "Agatka Example Bluetooth device"; } * _etc_init.d/bluetooth restart 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) ===== {{:pl:mindstorms:lab:plnxt-20081217.tar.gz|plnxt-20081217.tar.gz}} Działa wersji [[http://gollem.science.uva.nl/cgi-bin/nph-download/SWI-Prolog/binaries/pl-5.4.7-190.i586.rpm|SWIPL 5.4.7-190]] patrz [[http://www.swi-prolog.org/dl-old.html |stare wersje swi]] ==== rfcomm.conf ==== W pliku {{:pl:mindstorms:lab:rfcomm.conf-1.txt|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 {{:pl:mindstorms:lab:nxt_stty.txt|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: [plnxt]. nxt_open. Sprawdzenie poziomu baterii (najprostsze polecenie, które korzysta i z zapisu i z odczytu z urządzenia): nxt_voltage_millivolt(Voltage). Zamknięcie połączenia w powłoce: nxt_close. === 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.