Prima di tornare a solcare i cieli, è bene fare almeno un'altra modifica.
Sul fondo del drone troviamo una pellicola nera di materiale plastico che serve per proteggere la scheda madre, però è talmente sottile che al massimo la può proteggere dalla... polvere!
Come potete immaginare, eventuali urti saranno però assorbiti dalla schema madre stessa che quindi rischia di rompersi a ogni uscita.
Per migliorare un pò la situazione ho deciso di montare un fondo ulteriore. In un primo momento l'ho fatto in alluminio, ma quando è arrivato il momento di montarlo mi sono reso conto che non sarebbe stata una grande idea perchè avrebbe schermato il già debole segnale WiFi.
Non potevo pensarci prima?!?!
Per il secondo tentativo ho cercato un materiale più permeabile alle onde elettromagnetiche, fortuna che l'ufficio è una risorsa di cianfrusaglie infinita!
Così ho recuperato la custodia di una cassetta da backup che per il mio scopo sembra proprio perfetta.
Utilizziamo la copertura originale per ricavarne la forma incidendo leggermente la custodia con un taglierino oppure utilizzando un pennarello
e poi procediamo a tagliare la plastica. Io mi sono servito di una sega da metallo per tagliare il grosso e di un dremel per le rifiniture.
Una volta ottenuto il nuovo pezzo possiamo montarlo, correggendo eventuali imperfezioni che impediscono il corretto montaggio.
Questo è un fondo! Ora anche se dovesse schiantarsi su un oggetto appuntito avrebbe qualche possibilità di sopravvivenza :)
mercoledì 9 ottobre 2013
martedì 8 ottobre 2013
Ar.Drone mod - parte 2
Visto che il tempo non è d'accordo a farmi provare il drone con il joypad all'aperto andiamo avanti a sperimentare in casa.
Il nostro drone presenta sul fondo un connettore "misterioso" che dopo una breve ricerca su internet si rivela essere un connettore USB + seriale TTL 3,3 Volts. Per utilizzare l'una o l'altra connessione ci servono due cavi differenti oppure un unico cavo con 3 connettori.
Questo è lo schema principale del cavo per quanto riguarda la parte USB che fondamentalmente serve per aggiornare il firmware.

Come ho però letto sul blog di Chip Overclock http://coverclock.blogspot.it/search/label/AR.drone, la caratteristica più importante del connettore non è documentata. I piedini 4 (rx) e 6 (tx) ci offrono l'accesso alla console seriale tramite la quale possiamo inviare comandi come se fossimo collegati in telnet, senza le limitazioni del WiFi. Possiamo quindi modificare le impostazioni di rete senza più pericolo di rendere inaccessibile il nostro giocattolino o inviare comandi di volo, cosa che ci tornerà utile più avanti.
La piedinatura completa è quindi la seguente
GND è comune sia al cavo usb che a quello seriale.
Per poter utilizzare questa connessione ci serve però un adattatore USB - Seriale in quanto ormai i pc moderni non hanno più una porta seriale disponibile.
Gli adattaori usb-seriale possono generare segnali a 5V o a 3,3 a seconda del modello. Il mio ovviamente è a 5V. Per evitare di bruciare qualcosa è necessaria una modifica.
http://weldinghamsters.blogspot.it/2009/11/modding-pl-2303-based-usb-to-rs-232.html
Come spiegato sul blog di Welding Hamsters, si può facilmente ottenere il segnale richiesto anche dal mio adattatore saldando un paio di fili sul chip che si occupa della conversione USB- Seriale ovvero il PL2303
come si può notare dallo schema i piedini 1 e 5 sono i due che ci servono oltre alla messa a terra che possiamo reperire un pò ovunque sulla scheda.
Saldare dei fili su piedini così piccoli è piuttosto difficile ma con un pò di pazienza si può fare tutto...
Questo è il risultato:
Il filo della massa l'ho collegato direttamente alla massa del cavo USB che è di più facile accesso.
Il connettore del drone si può facilmente ricavare da un connettore mini IDE che si pò trovare su vecchi portatili, ormai sono tutti SATA. Per fortuna sono riuscito a trovarne uno.
E questo è il risultato
Il cavo che ho poi creato è un cavo a Y che non si presenta molto bene ma che offre due USB maschio (quello azzurro è il seriale, quello nero è l'usb puro), il connettore del drone e il connettore seriale DB9 che però non ci serve a nulla.
N.B. Per utilizzare il cavo USB bisogna prima collegare il pc al drone e poi alimentarlo in modo che in fase di boot possa riconoscere la connessione attiva e attivare la modalità necessaria. Attaccare il cavo con il drone già acceso può causare SERI danni.
Quindi colleghiamo il cavo
e sempre tarmite Putty, impostando la connessione seriale sulla porta COM che viene creata dal nostro adattatore e gli altri parametri come da immagine seguente, sarà possibile connettersi alla console del drone.
Se tutto è andato come doveva andare, dovreste vedere la fase di boot con "qualche" dettaglio in più rispetto a quello che si può vedere via Telnet. :P
Parrotboot for target MYKONOS, git version pinst-v5.6.4-p6-0-gd918f90, built on May 30 2012
-> Change VDD2 reset value
nand_flash: By ONFI Manufacturer: MICRON , Model: MT29F1G08AAC
nand_flash: Mode 4
nand_flash: Support ONFI v1.0
scaning start 40000 end 800000 page shift 11 eb size 131072
vid_hdr_offset 2048, data_offset 4096 leb_size 126976
image_seq is 2f5b72bd
new volume 4
new volume 0
new volume 1
parsed 4096 pages
volume 0 : "main_boot" ok (1777664)
Attempt booting on UBI volume with ID 0...
Booting Linux...'parrotparts=nand0:256K(Pbootloader),8M(Pmain_boot),8M(Pfactory),16M(Psystem),98048K(Pupdate) console=ttyPA0,115200 loglevel=4 ubi.mtd=Pfactory,2048 ubi.mtd=Psystem,2048 ubi.mtd=Pupdate,2048 root=ubi1:system rootfstype=ubifs parrot5.low_latency=1 '
init started: BusyBox v1.14.0 (2012-08-20 14:37:54 CEST)
starting pid 810, tty '': '/etc/init.d/rcS'
init started...
BMI Write Memory (address: 0x502070, filename: /lib/firmware/AR6002/eeprom.data)
BMI Write Memory (address: 0x513950, filename: /lib/firmware/AR6002/eeprom.bin)
BMI Execute (address: 0x913950, param: 0x0)
Return Value from target: 0x0
BMI Set App Start (address: 0x913950)
Updating MAC address
BMI Write compressed Memory (address: 0x502070, filename: /lib/firmware/AR6002/athwlan.bin.z77)
BMI Write Memory (address: 0x52d6c8, filename: /lib/firmware/AR6002/data.patch.hw2_0.bin)
BMI Write Memory (address: 0x500418, value: 0x52d6c8)
BMI Bit-Wise (OR) modify Register (address: 0x500410, orig:0xa, new: 0xb, mask:0x1)
BMI Done
argc = 7
wmiconfig:fixRateMask=8
wmiconfig:fixRateMask=264
wmiconfig:fixRateMask=2312
SSID=dronenet
Creating AP Network dronenet
Using address 192.168.1.1
Owner's MAC address is: 00:00:00:00:00:00
Clearing pairing rule
Copy version.txt file in ftp directory
Check if update is necessary ...
File /update/ardrone_update.plf doesn't exists... Start Drone software...
/
init exit
if you want to customize init look at target/generic/target_skeleton/etc files
if crtl+c does not work look at the Linux FAQ section.
Please press Enter to activate this console. posix init start build on : Aug 20 2012 14:37:42
Use ctrl+\ (SIGQUIT) to end the application
plog drop: thread RT_THRESHOLD=19, SUP_THREAD_MINPRIORITY=31
plog drop: RR time quantum 0s 0ns
plog drop: thread guard size : default 4096
plog drop: thread guard size : set to 65536
plog drop: thread stack size : default 32768, minimal 16384, (system default 8388608)
plog drop: disable smp
**
** Mykonos v1.11.5 built for Hardware 11
** Build Aug 20 2012 14:52:04
**
tid=0x10b5a0, [I] POS: thread starting "Button Monitor" got 0x402bd490 native id
tid=0x10b350, [I] POS: thread starting "sup log" got 0x40318490 native id
tid=(nil), [E] POS: register : /dev/input/event0
tid=(nil), [E] POS: we register 1
init button
** ADC hard_version : c0
0.584262 NULL 6 0 adc device (soft 0x40046, hard 0xc0) loaded
0.610487 NULL 6 262214 adc device updater status file created
0.624311 NULL 6 772299 adc device updater status file deleted
0.625619 NULL 6 -1093302432 Scanning /data/custom.configs/applis ...
0.630751 NULL 6 0 located configuration file </data/custom.configs/applis/config.a0000ad2.ini>
0.634298 NULL 6 0 located configuration file </data/custom.configs/applis/config.96e3654b.ini>
0.637671 NULL 6 0 located configuration file </data/custom.configs/applis/config.a0000aa2.ini>
0.638035 NULL 6 0 Scanning /data/custom.configs/profiles ...
0.643110 NULL 6 0 located configuration file </data/custom.configs/profiles/config.a0000ad3.ini>
0.647211 NULL 6 0 located configuration file </data/custom.configs/profiles/config.659fecd2.ini>
0.651493 NULL 6 0 located configuration file </data/custom.configs/profiles/config.0cbca5dc.ini>
0.655642 NULL 6 0 located configuration file </data/custom.configs/profiles/config.a0000aa3.ini>
0.655940 NULL 6 0 Scanning /data/custom.configs/sessions ...
0.663045 NULL 6 0 located configuration file </data/custom.configs/sessions/config.6c96d6be.ini>
0.669230 NULL 6 0 located configuration file </data/custom.configs/sessions/config.a0000ad1.ini>
Motors flight anim. callback : <0,0>
Setting WiFi rate to auto
Owner's MAC address is: 00:00:00:00:00:00
Clearing pairing rule
Owner's MAC address is: 00:00:00:00:00:00
Clearing pairing rule
Motors leds callback : <0,0,0>
Userbox state callback : <0>
State : 0
0.970869 NULL 6 1668184435 SW VERSION : 00113D68
0.971834 NULL 6 1668184435 Configuring the vertical video pipeline ...
0.972125 NULL 6 971834 Configuring the horizontal video pipeline ...
0.972693 NULL 6 1718513475 Could not open BLC.hex file.
1.026821 NULL 6 0 BLC backup hex available
1.052660 NULL 6 825374774 BLC call for motor 1
1.073340 NULL 6 825374774 BLC check BLC memory corruption on motor 1
1.073500 NULL 6 808727347 BLC verify
1.092165 NULL 6 808727347 BLC verify OK
1.304887 NULL 6 -1093302124 syslog switches to buffer 1 (0x000FBEE8)
1.304824 NULL 6 825374774 BLC motor 1 soft version 1.43, hard version 3.0, supplier 1.1, lot number 11/10, FVT1 06/01/11
1.362627 NULL 6 825374774 BLC call for motor 2
1.383265 NULL 6 825374774 BLC check BLC memory corruption on motor 2
1.383461 NULL 6 892744243 BLC verify
1.402129 NULL 6 892744243 BLC verify OK
1.614824 NULL 6 825374774 BLC motor 2 soft version 1.43, hard version 3.0, supplier 1.1, lot number 11/10, FVT1 08.698597 Video_Hori 6 1022 Opening device Horizontal camera (/dev/video0) with resolution 640x480 and pixel format YU12
video_utils_init unknown codec 0
TAG_TYPE_COCKPIT 480
TAG_TYPE_COCKPIT 480
dct status 0x0
starting pid 978, tty '/dev/ttyPA0': '/bin/sh'
BusyBox v1.14.0 (2012-08-20 14:37:54 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
#
In questo modo si può sperimentare qualsiasi configurazione del drone senza il pericolo di non poter più accedere alla console per rimediare al danno fatto :P
venerdì 4 ottobre 2013
Ar.Drone mod - parte 1
Finalmente mi sono deciso a prendere l'Ar.Drone! Era da un pò che ci pensavo, in realtà ne volevo fare uno da zero ma la disponibilità economica mi ha costretto a ripiegare sul prodotto della Parrot che, secondo me, vince alla grande se facciamo il rapporto Qualità/Prezzo. Poi usato costa ancora meno :P
Certo un Drone "vero" è un'altra cosa, però anche questo alla fine non è male come primo approccio a questo mondo, inoltre si tratta di un vero e proprio computer volante per cui offre qualche sfida in più oltre al saperlo pilotare.
Per provare il mio nuovo acquisto ho dovuto scaricare il suo sw per Android in modo da usare il cell come controller... il primo tentativo è stato piuttosto disastroso e mi sono subito reso conto quanto il controller scelto dalla Parrot poteva essere solo un buon modo per ridurre i costi globali del prodotto.
Il secondo tentativo, a distanza di una settimana, è andato decisamente meglio, però permane un senso di precarietà nei movimenti che non mi mette a mio agio. Per quanto ci abbia ragionato su, la casualità continua a fare da padrone.
Il secondo tentativo, a distanza di una settimana, è andato decisamente meglio, però permane un senso di precarietà nei movimenti che non mi mette a mio agio. Per quanto ci abbia ragionato su, la casualità continua a fare da padrone.
Probabilmente non ho abbastanza esperienza ma distruggere tutto per farmela non mi sembra la scelta migliore, per cui dovrò cercare qualche via alternativa.
Il nostro amico crea una rete WiFi a cui ci si deve collegare per potergli inviare i comandi tramite cellulare.
La rete che troveremo è priva di sicurezza e potenzialmente chiunque ci si potrebbe collegare più che altro per disturbare il nostro volo già instabile a causa delle frequenti perdite di segnale.
Inoltre fa anche da server DHCP per fornire l'indirizzo al client che si deve collegare alla sua rete per permetterne il controllo.
Inoltre fa anche da server DHCP per fornire l'indirizzo al client che si deve collegare alla sua rete per permetterne il controllo.
Il drone di default ha indirizzo 192.168.1.1 e tramite Putty possiamo collegarci in Telnet per dare un'occhiata a cosa ci offre il sistema.
BusyBox v1.14.0 (2012-08-20 14:37:54 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
#
BusyBox v1.14.0 (2012-08-20 14:37:54 CEST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
#
Abbiamo a che fare con un sistema BusyBox, una versione di Linux sviluppata apposta per sistemi embedded, ( http://www.busybox.net/ ).
# cat /proc/version
Linux version 2.6.27.47-parrot (aferran@Mykuntu) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 PREEMPT Mon Aug 20 14:46:29 CEST 2012
Questo è l'output di top, program.elf è il software principale che gestisce tutto il drone
Mem: 23220K used, 102848K free, 0K shrd, 0K buff, 4304K cached
Load average: 0.74 0.74 0.68 3/52 2715
PID PPID USER STAT VSZ %MEM COMMAND
971 970 root S 13892 11% /bin/program.elf
969 1 root S 2812 2% inetd
956 1 root S 2736 2% telnetd -l /bin/sh
962 1 root S 2736 2% /bin/sh /bin/memory_check.sh
970 1 root S 2736 2% /bin/sh /bin/check_update.sh
1349 956 root S 2736 2% /bin/sh
1564 956 root S 2736 2% /bin/sh
1 0 root S 2732 2% init
958 1 root S 2732 2% udhcpd /tmp/udhcpd.conf
974 1 root S 2732 2% init
976 1 root S 2732 2% /sbin/syslogd -n -m 0
977 1 root S 2732 2% /sbin/klogd -n
2715 1564 root R 2732 2% top
2714 962 root S 2600 2% sleep 10
834 1 root S 1632 1% /bin/factory_reset_cb
2 0 root SW< 0 0% [kthreadd]
3 2 root SW< 0 0% [ksoftirqd/0]
4 2 root SW< 0 0% [watchdog/0]
5 2 root SW< 0 0% [events/0]
6 2 root SW< 0 0% [khelper]
75 2 root SW< 0 0% [kblockd/0]
87 2 root SW< 0 0% [khubd]
93 2 root SW< 0 0% [kmmcd]
116 2 root SW 0 0% [pdflush]
117 2 root SW 0 0% [pdflush]
118 2 root SW< 0 0% [kswapd0]
119 2 root SW< 0 0% [aio/0]
120 2 root SW< 0 0% [nfsiod]
764 2 root SW< 0 0% [ubi_bgt0d]
767 2 root SW< 0 0% [ubi_bgt1d]
771 2 root SW< 0 0% [ubi_bgt2d]
792 2 root SW< 0 0% [p6-spi.0]
805 2 root SW< 0 0% [rpciod/0]
814 2 root SW< 0 0% [ubifs_bgt1_0]
826 2 root SW< 0 0% [ubifs_bgt2_0]
828 2 root SW< 0 0% [ubifs_bgt2_1]
899 2 root SW< 0 0% [ksdiorqd]
900 2 root SW< 0 0% [ar6000_io]
Questa è la configurazione della scheda WiFi
# iwconfig
lo no wireless extensions.
ath0 AR6000 802.11g ESSID:"dronenet"
Mode:Master Frequency:2.437 GHz Bit Rate:24 Mb/s Tx-Power=16 dBm
Sensitivity=0/3
Encryption key:off
Power Management:on
Link Quality:255/94 Signal level:-96 dBm Noise level:-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:3 Invalid misc:0 Missed beacon:0
Diamo un'occhiata al contenuto del disco
# ls
Change dev firmware licenses root tmp var
bin etc home mnt sbin update
data factory lib proc sys usr
#
Come tutti i sistemi linux ha un log sotto /var/log/messages in cui convergono buona parte dei messaggi di sistema. Non ne riporto il contenuto perchè il sistema logga parecchio soprattutto se è a pancia in su come in questo momento... (perchè a pancia in su? beh... la risposta nelle prossime puntate...)
Sotto /etc troviamo il file di configurazione del dhcp che rilascia fino a quasi 100 indirizzi
# cat etc/udhcpd.conf
start 192.168.1.2
end 192.168.1.100
interface ath0
option subnet 255.255.255.0
#
/data/config.ini contiene tutti i parametri per l'inizializzazione del sistema a ogni riavvio. Da qui si può modificare un pò tutto, tra cui il WiFi SSID, la configurazione IP, il funzionamento della scheda di rete stessa, lo stream video e altro.
# cat /data/config.ini
[general]
flying_time = 3613
num_version_config = 1
num_version_mb = 17
num_version_soft = 1.11.5
soft_build_date = 2012-08-20 14:51
motor1_soft = 1.43
motor1_hard = 3.0
motor1_supplier = 1.1
motor2_soft = 1.43
motor2_hard = 3.0
motor2_supplier = 1.1
motor3_soft = 1.43
motor3_hard = 3.0
motor3_supplier = 1.1
motor4_soft = 1.43
motor4_hard = 3.0
motor4_supplier = 1.1
ardrone_name = My ARDrone
navdata_demo = TRUE
com_watchdog = 2
video_enable = TRUE
vision_enable = TRUE
vbat_min = 9000
drone_serial = PI040236AD1A218389
[network]
ssid_single_player = dronenet
ssid_multi_player = ardrone_v1.7.6
wifi_mode = 0
secure = FALSE
passkey =
navdata_port = 5554
video_port = 5555
at_port = 5556
cmd_port = 5559
owner_mac = 00:00:00:00:00:00
owner_ip_address = 0
local_ip_address = 0
broadcast_address = 0
[control]
accs_offset = { -2.2265967e+03 1.8646592e+03 2.0777571e+03 }
accs_gains = { 9.9772358e-01 2.5741236e-02 4.3659292e-02 -2.1074675e-03 -9.9377209e-01 4.6503697e-02 9.8727606e-03 -7.4420400e-02 -9.6668828e-01 }
gyros_offset = { 1.6781360e+03 1.6794500e+03 1.7028979e+03 }
gyros_gains = { 6.8175443e-03 -6.7480663e-03 -3.8641607e-03 }
gyros110_offset = { 1.6931400e+03 1.7010179e+03 }
gyros110_gains = { 1.4845658e-03 -1.4690076e-03 }
gyro_offset_thr_x = 4.0000000e+00
gyro_offset_thr_y = 4.0000000e+00
gyro_offset_thr_z = 5.0000000e-01
pwm_ref_gyros = 470
shield_enable = 1
altitude_max = 5000
altitude_min = 500
outdoor = FALSE
flight_without_shell = TRUE
brushless = TRUE
autonomous_flight = FALSE
control_level = 0
euler_angle_max = 2.0943952e-01
control_trim_z = 0.0000000e+00
control_iphone_tilt = 3.4906584e-01
control_vz_max = 7.0000000e+02
control_yaw = 1.7453293e+00
manual_trim = FALSE
indoor_euler_angle_max = 2.0943952e-01
indoor_control_vz_max = 7.0000000e+02
indoor_control_yaw = 1.7453293e+00
outdoor_euler_angle_max = 3.4906584e-01
outdoor_control_vz_max = 1.0000000e+03
outdoor_control_yaw = 3.4906585e+00
magneto_offset = { 0.0000000e+00 0.0000000e+00 0.0000000e+00 }
magneto_radius = 0.0000000e+00
osctun_value = 0
osctun_test = FALSE
[pic]
ultrasound_freq = 8
ultrasound_watchdog = 3
pic_version = 100925510
[video]
camif_fps = 20
camif_buffers = 2
num_trackers = 12
video_on_usb = TRUE
video_file_index = 1
codec_fps = 20
[leds]
[detect]
enemy_colors = 1
enemy_without_shell = 0
groundstripe_colors = 16
detect_type = 3
detections_select_h = 0
detections_select_v_hsync = 0
detections_select_v = 0
[syslog]
output = 7
max_size = 102400
nb_files = 5
[custom]
application_desc = Default application configuration
profile_desc = Default profile configuration
session_desc = Default session configuration
[userbox]
[gps]
latitude = 5.0000000000000000e+02
longitude = 5.0000000000000000e+02
altitude = 0.0000000000000000e+00
#
Da notare :
flying_time = 3613 (secondi)
Sono stato felicissimo di scoprire che il mio drone usato ha volato solo 40 minuti!! :D 20 li ho fatti io :)
Ho provato a riconfigurarla nei vari modi disponibili, con o senza i suoi script, ma senza successo. Non so se è dovuto all'ultimo firmware installato, ma ogni tentativo che ho effettuato mi ha portato a un misero fallimento. Ho provato a cambiare la modalità di funzionamento da Master (quella che mi presenta di default) a Managed, Client o Repeater, ma in ogni caso ottenevo solo "richieste scadute" verso qualsiasi altro IP della rete anche se il mio access point vedeva un client connesso.
L'unico metodo che ho trovato per accedervi dal pc fisso è stato collegare l'access point via Ethernet alla mia rete e via WiFi alla rete del drone, come Repeater.
Dopo essere riuscito a raggiungere il drone dal pc fisso, mi si è aperta la possibilità di controllarlo da Tastiera o Joystick tramite qualche SW per windows.
L'unico programma che sono riuscito a utilizzare è Windev16 ( http://repository.windev.com/resource.awp?file_id=76&lang=UK )
WOW! Ora è decisamente più controllabile di prima, non si rischia più di vedere il drone che se ne va per i fatti suoi perchè non ho premuto bene lo schermo o perchè sto inavvertitamente tenendo il telefono inclinato! ahhh che sollievo, è diventato semplicissimo da usare! Fantastico! Non vedo l'ora di provarlo all'aperto per vedere cosa si può fare con un joypad al posto del cellulare :D
# cat /proc/version
Linux version 2.6.27.47-parrot (aferran@Mykuntu) (gcc version 4.3.3 (Sourcery G++ Lite 2009q1-203) ) #1 PREEMPT Mon Aug 20 14:46:29 CEST 2012
Questo è l'output di top, program.elf è il software principale che gestisce tutto il drone
Load average: 0.74 0.74 0.68 3/52 2715
PID PPID USER STAT VSZ %MEM COMMAND
971 970 root S 13892 11% /bin/program.elf
969 1 root S 2812 2% inetd
956 1 root S 2736 2% telnetd -l /bin/sh
962 1 root S 2736 2% /bin/sh /bin/memory_check.sh
970 1 root S 2736 2% /bin/sh /bin/check_update.sh
1349 956 root S 2736 2% /bin/sh
1564 956 root S 2736 2% /bin/sh
1 0 root S 2732 2% init
958 1 root S 2732 2% udhcpd /tmp/udhcpd.conf
974 1 root S 2732 2% init
976 1 root S 2732 2% /sbin/syslogd -n -m 0
977 1 root S 2732 2% /sbin/klogd -n
2715 1564 root R 2732 2% top
2714 962 root S 2600 2% sleep 10
834 1 root S 1632 1% /bin/factory_reset_cb
2 0 root SW< 0 0% [kthreadd]
3 2 root SW< 0 0% [ksoftirqd/0]
4 2 root SW< 0 0% [watchdog/0]
5 2 root SW< 0 0% [events/0]
6 2 root SW< 0 0% [khelper]
75 2 root SW< 0 0% [kblockd/0]
87 2 root SW< 0 0% [khubd]
93 2 root SW< 0 0% [kmmcd]
116 2 root SW 0 0% [pdflush]
117 2 root SW 0 0% [pdflush]
118 2 root SW< 0 0% [kswapd0]
119 2 root SW< 0 0% [aio/0]
120 2 root SW< 0 0% [nfsiod]
764 2 root SW< 0 0% [ubi_bgt0d]
767 2 root SW< 0 0% [ubi_bgt1d]
771 2 root SW< 0 0% [ubi_bgt2d]
792 2 root SW< 0 0% [p6-spi.0]
805 2 root SW< 0 0% [rpciod/0]
814 2 root SW< 0 0% [ubifs_bgt1_0]
826 2 root SW< 0 0% [ubifs_bgt2_0]
828 2 root SW< 0 0% [ubifs_bgt2_1]
899 2 root SW< 0 0% [ksdiorqd]
900 2 root SW< 0 0% [ar6000_io]
Questa è la configurazione della scheda WiFi
# iwconfig
lo no wireless extensions.
ath0 AR6000 802.11g ESSID:"dronenet"
Mode:Master Frequency:2.437 GHz Bit Rate:24 Mb/s Tx-Power=16 dBm
Sensitivity=0/3
Encryption key:off
Power Management:on
Link Quality:255/94 Signal level:-96 dBm Noise level:-96 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:3 Invalid misc:0 Missed beacon:0
Diamo un'occhiata al contenuto del disco
# ls
Change dev firmware licenses root tmp var
bin etc home mnt sbin update
data factory lib proc sys usr
#
Sotto /etc troviamo il file di configurazione del dhcp che rilascia fino a quasi 100 indirizzi
# cat etc/udhcpd.conf
start 192.168.1.2
end 192.168.1.100
interface ath0
option subnet 255.255.255.0
#
All'interno della cartella /data troviamo uno dei file più interessanti ovvero "config.ini"
# ls data
accs_infos.bin fact_accs_infos.bin syslog.bin
config.ini navdata_blackbox.bin video
custom.configs old_adress.txt
emergency.bin random_mac.txt
/data/config.ini contiene tutti i parametri per l'inizializzazione del sistema a ogni riavvio. Da qui si può modificare un pò tutto, tra cui il WiFi SSID, la configurazione IP, il funzionamento della scheda di rete stessa, lo stream video e altro.
# cat /data/config.ini
[general]
flying_time = 3613
num_version_config = 1
num_version_mb = 17
num_version_soft = 1.11.5
soft_build_date = 2012-08-20 14:51
motor1_soft = 1.43
motor1_hard = 3.0
motor1_supplier = 1.1
motor2_soft = 1.43
motor2_hard = 3.0
motor2_supplier = 1.1
motor3_soft = 1.43
motor3_hard = 3.0
motor3_supplier = 1.1
motor4_soft = 1.43
motor4_hard = 3.0
motor4_supplier = 1.1
ardrone_name = My ARDrone
navdata_demo = TRUE
com_watchdog = 2
video_enable = TRUE
vision_enable = TRUE
vbat_min = 9000
drone_serial = PI040236AD1A218389
[network]
ssid_single_player = dronenet
ssid_multi_player = ardrone_v1.7.6
wifi_mode = 0
secure = FALSE
passkey =
navdata_port = 5554
video_port = 5555
at_port = 5556
cmd_port = 5559
owner_mac = 00:00:00:00:00:00
owner_ip_address = 0
local_ip_address = 0
broadcast_address = 0
[control]
accs_offset = { -2.2265967e+03 1.8646592e+03 2.0777571e+03 }
accs_gains = { 9.9772358e-01 2.5741236e-02 4.3659292e-02 -2.1074675e-03 -9.9377209e-01 4.6503697e-02 9.8727606e-03 -7.4420400e-02 -9.6668828e-01 }
gyros_offset = { 1.6781360e+03 1.6794500e+03 1.7028979e+03 }
gyros_gains = { 6.8175443e-03 -6.7480663e-03 -3.8641607e-03 }
gyros110_offset = { 1.6931400e+03 1.7010179e+03 }
gyros110_gains = { 1.4845658e-03 -1.4690076e-03 }
gyro_offset_thr_x = 4.0000000e+00
gyro_offset_thr_y = 4.0000000e+00
gyro_offset_thr_z = 5.0000000e-01
pwm_ref_gyros = 470
shield_enable = 1
altitude_max = 5000
altitude_min = 500
outdoor = FALSE
flight_without_shell = TRUE
brushless = TRUE
autonomous_flight = FALSE
control_level = 0
euler_angle_max = 2.0943952e-01
control_trim_z = 0.0000000e+00
control_iphone_tilt = 3.4906584e-01
control_vz_max = 7.0000000e+02
control_yaw = 1.7453293e+00
manual_trim = FALSE
indoor_euler_angle_max = 2.0943952e-01
indoor_control_vz_max = 7.0000000e+02
indoor_control_yaw = 1.7453293e+00
outdoor_euler_angle_max = 3.4906584e-01
outdoor_control_vz_max = 1.0000000e+03
outdoor_control_yaw = 3.4906585e+00
magneto_offset = { 0.0000000e+00 0.0000000e+00 0.0000000e+00 }
magneto_radius = 0.0000000e+00
osctun_value = 0
osctun_test = FALSE
[pic]
ultrasound_freq = 8
ultrasound_watchdog = 3
pic_version = 100925510
[video]
camif_fps = 20
camif_buffers = 2
num_trackers = 12
video_on_usb = TRUE
video_file_index = 1
codec_fps = 20
[leds]
[detect]
enemy_colors = 1
enemy_without_shell = 0
groundstripe_colors = 16
detect_type = 3
detections_select_h = 0
detections_select_v_hsync = 0
detections_select_v = 0
[syslog]
output = 7
max_size = 102400
nb_files = 5
[custom]
application_desc = Default application configuration
profile_desc = Default profile configuration
session_desc = Default session configuration
[userbox]
[gps]
latitude = 5.0000000000000000e+02
longitude = 5.0000000000000000e+02
altitude = 0.0000000000000000e+00
#
Da notare :
flying_time = 3613 (secondi)
Sono stato felicissimo di scoprire che il mio drone usato ha volato solo 40 minuti!! :D 20 li ho fatti io :)
Sotto /bin oltre ai file fondamentali per busybox troviamo anche gli script di configurazione della scheda WiFi.
# ls bin
ash echo ls random_ip true
busybox egrep memory_check.sh random_mac umount
cat factory_reset_cb mkdir repairBoxes uname
channelselector false mknod reset_config.sh usleep
check_update.sh fgrep mktemp reset_dhcp.sh vi
checkplf gdbserver mount rm watch
chgrp getopt mv rmdir wifi_adhoc.sh
chmod grep netstat sed wifi_infra.sh
chown gunzip nfs.sh sh wifi_managed.sh
cp gzip pairing_setup.sh sleep wifi_setup.sh
cttyhack hostname pidof stat zcat
date ip ping stty
dd ipcalc program.elf sync
df kill ps tar
dmesg ln pwd touch
#
L'unico metodo che ho trovato per accedervi dal pc fisso è stato collegare l'access point via Ethernet alla mia rete e via WiFi alla rete del drone, come Repeater.
L'unico programma che sono riuscito a utilizzare è Windev16 ( http://repository.windev.com/resource.awp?file_id=76&lang=UK )
WOW! Ora è decisamente più controllabile di prima, non si rischia più di vedere il drone che se ne va per i fatti suoi perchè non ho premuto bene lo schermo o perchè sto inavvertitamente tenendo il telefono inclinato! ahhh che sollievo, è diventato semplicissimo da usare! Fantastico! Non vedo l'ora di provarlo all'aperto per vedere cosa si può fare con un joypad al posto del cellulare :D
giovedì 3 ottobre 2013
Si comincia!
Eccomi a scrivere il primo post della mia vita.
Mi serve un luogo dove registrare i miei progetti e cosa meglio di un Blog? vedremo cosa salterà fuori...
Mi serve un luogo dove registrare i miei progetti e cosa meglio di un Blog? vedremo cosa salterà fuori...
Iscriviti a:
Commenti (Atom)


