= Les minidrones de Parrot = Il existe différentes version. Au labo on a: * minidrones blaze * minidrones mars * minidrones swat * mambo fly * swing (convertible) les minidrones semblent identiques et de "1ère" génération (a voir si le rolling spider n'est pas encore plus ancien et différent). Le mambo fly (et le swing?) est plus récent, il semble le seul compatible avec matlab (cf JDM). Voir notament https://github.com/Parrot-Developers/RollingSpiderEdu Quelques liens intéressants: http://wiki.paparazziuav.org/wiki/Ap.parrot_minidrone https://iot.goffinet.org/labs_mini-drone_controller.html == les minidrones (blaze, mars et swat) une fois branchés en usb, appuyer 4 fois sur le bouton pour monter un réseau via usb (ip drone 192.168.2.1) (ne semble marcher que sur le blaze!) * ram 32Mo * flash 128Mo * cpu ARM926EJ-S 200MHz * noyau 2.6.36 * mpu6050: 3 acc et 3 gyros (i2c) * capteur pression MS5607 (i2c) * magneto akm8963?? (listé dans /dev) mais pas sur que le capteur soit la * ultra son Se présente comme une clé usb par défaut. Les données sont dans /data/usb_disk.img Lorsque l'on appuie 4 fois sur le bouton, se présente comme une clé usb, un eth et un port série. Les données sont dans /data/usb_debug_disk.img === remonter / en rw === pour faire des modifs sur le rootfs: {{{ mount -o remount,rw / }}} === montages usb === * Voir [http://linux-sunxi.org/USB_Gadget/Mass_storage ici] pour la doc sur le montage usb * changer la taille des montages usb: {{{ vi /bin/delos_shell.sh }}} et redémarrer le drone * monter localement un fichier image {{{ mount -o loop /data/usb_disk.img /data/hds/usb/ }}} === récuperer un rootfs custom === en vue d'en faire un chroot procédure complexe (à cause du peu de flash dispo), à voir si simplifiable * régler la taille du usb_disk.img pour mettre le rootfs {{{ mount -o remount,rw / vi /bin/delos_shell.sh }}} * mettre le tar.gz sur la clé usb * appuyer 4 fois sur le bouton * libérer de la mémoire (pour le tmpfs) {{{ kk killall BLEproxy }}} * faire un tmpfs {{{ mount -t tmpfs -o size=32M tmpfs /data/hds/tmp }}} * monter localement le fichier image {{{ mount -o loop /data/usb_disk.img /data/hds/usb/ }}} * copier le tar.gz sur le tmpfs * effacer le disk.img pour gagner de la place * décompresser le tar.gz * régler la taille du usb_disk.img à une valeur faible {{{ vi /bin/delos_shell.sh }}} === lancer le chroot === et un serveur ssh {{{ #kk #shutdown camera, dragon-prog uses too much cpu for optical flow echo 0 > /sys/devices/platform/user_gpio/HRESET_CAM/value mount -o bind /dev /data/hds/rootfs/dev/ mount -t sysfs sys /data/hds/rootfs/sys/ mount -t proc proc /data/hds/rootfs/proc/ mount devpts /data/hds/rootfs/dev/pts -t devpts unset LD_PRELOAD chroot /data/hds/rootfs/ /etc/init.d/dropbear start }}} === bluetooth === voir [https://github.com/Parrot-Developers/RollingSpiderEdu/blob/master/Parrot_customFirmware/rollingspider.edu_quick_start.pdf ici] === lancer automatiquement un programme au démarrage === Les minidrones (en tout cas le mambo) utilisent comme système de démarrage "boxinit". Probablement un développement maison parrot. Pour démarrer notre système automatiquement en fin de démarrage il faut * créer le fichier 99-hds.rc qui contient {{{ service hds /data/hds/start.sh disabled oneshot on boot start hds }}} * créer /data/hds/start.sh avec le contenu {{{ #!/bin/sh /data/hds/chroot.sh > /data/hds/start.log }}} * rendre le script exécutable {{{ chmod +x /data/hds/start.sh }}} On peut donc ensuite récupérer le log dans /data/hds/start.log == Mambo == * ram 64Mo Nécessite un custom firmware pour avoir le réseau sur bluetooth et le telnet: https://github.com/Parrot-Developers/MinidronesEdu placer le fichier à la racine de la clé usb (testé avec un firmware original en 2.6.6)