Samedi 12 décembre 2015 Ynov – FabLab Rafiaa Khaddhar , Guillaume Le Gall , Clément Malde , Alan Ait Ali , Martin Laporte. ======== Aujourd'hui nous nous sommes partagés des objectifs : - contrôler la raspberry (ce compte rendu) - contrôler les servomoteurs Dynamixel XL-320 ======== Contrôle raspberry : Après quelques recherches nous avons choisis de nous connecter en ssh depuis un ordi GNU/Linux par câble Ethernet. Une fois l'IP récupérée, il ne reste plus qu'à taper la ligne de commande : $ ssh pi@xxx.xxx.xxx.xxx Ne possédant pas d'écran HDMI, nous avons rencontré une première difficulté ; récupérer l'adresse IP de la raspberry. La première solution trouvée a été d'utiliser des commandes bash comme « ifconfig » ou plutôt « nmap » , mais il s'est avéré que celles-ci ne détectaient pas la raspberry. Nous avons supposé que le ssh n'était donc pas activé pas défaut et avons récupéré le script suivant sur internet : #tiré de : « Raspberry, seconnecter en ssh » , site web : lim-arcanum 4 sudo bash 5 cd /boot 6 mv boot_enable_ssh.rc boot.rc 7 sudo shutdown -h now Etant donné que la carte Pi2 du projet était arrivée sans microSD, nous avons utilisé celle de la raspberry Pi1B de Martin qui avait déjà rédigé un programme de récupération d'IP dessus. L’algorithme n'avait pas fonctionné sur la PI1B, mais (Deus ex machina!) il a fonctionné sur la PI2. Appelé « IPreturn », ce script affiche une adresse IP en faisant clignoter 1 LED. Nous l'avons utilisé en contournement de notre problème. Sur cette microSD est montée un OS sans interface graphique, ce qui permet d'atterrire sur une ligne de commande dès l'allumage. nous avons donc placé depuis l'ordinateur le script dans le repertoir de travail de la raspberry et l'avons mise sous tentsion. Par un clavier USB et à l'aveugle (sans affichage sur écran) nous nous sommes loggés, et avons lancé le script. *Il est plus comode de vérifier le droit d'accés à ce fichier tant que l'on est sur l'ordinateur. === Mode d'emploi du script === Lecture de l'IP sur la led branchée sur la GPIO18 : 1er clignotement : le programme a réussit à configurer la broche 18 en Sortie ! 2eme clignotement : récupération de l'IP, OK. 1ere série de clignotement de 1 seconde : le nombre de clignotement représente le 1er chiffre. 1er clignotement de 4 secondes (2sec allumée 2sec éteinte) : fin du LSB du LSB de l'IP, c'est à dire le X dans (xxx.xxx.xxx.xxX). 2eme série de clignotement de 1s : le nombre de clignotement représente le 2eme chiffre. 1er clignotement de 4 secondes : fin du 2eme chiffre du LSB de l'IP, c'est à dire le X dans (xxx.xxx.xxx.xXx). 3eme série.. 3eme chiffre… etc.. Attention, si votre adresse IP possède des nombres inférieurs à 100, sa forme sera (xxx.xxx.xx.xxx) l'algorithme ne gère pas ce genre de cas. Pour lire l'information nous vous conseillons d'utiliser une breadboard grâce à laquelle vous mettrez en série la broche GPIO18 – une résistance – deux LED tête-bêche – GND. ====IPreturn==== 1 #!/bin/bash 2 # programme affichant l'ip d'un raspBerry sur une led branchée à la broche18 (GPIO) 3 # écrit par martin laporte le 9 decembre 2015 6 7 #je suis su, je configure le numéro de broche 8 sudo echo "18" > /sys/class/gpio/export 9 #je configure la pin en output 10 sudo echo "out" > /sys/class/gpio/gpio18/direction 11 12 #StartShortBlink T=0.4s 13 sudo echo "1" > /sys/class/gpio/gpio18/value 14 sleep 0.2 15 sudo echo "0" > /sys/class/gpio/gpio18/value 16 sleep 2 18 19 #récupération de l'IP en utilisateur normal 20 /sbin/ifconfig eth0|grep adr:| awk '{printf $2}'|grep -o [0-9] >IP 21 #récupération du nombre de caractères de l'IP 22 Nbchiffre=$(/sbin/ifconfig eth0|grep adr:| awk '{printf $2}'|grep -o [0-9]|wc -l) 23 24 #ShortBlink T=1s 25 sudo echo "2" > /sys/class/gpio/gpio18/value 26 sleep 0.2 27 sudo echo "0" > /sys/class/gpio/gpio18/value 28 sleep 2 29 31 # emission chiffre par chiffre en partant de la fin 32 for(( Nbchiffre=$Nbchiffre ; Nbchiffre>0 ; Nbchiffre-- )); 33 do 34 #récupère le chiffre 35 36 chiffre=$(head -n$Nbchiffre IP|tail -1) 37 echo $chiffre 38 for (( chiffre>0 ; chiffre>0 ; chiffre--)); 39 do 40 #ShortBlink T=1s 41 sudo echo "1" > /sys/class/gpio/gpio18/value 42 sleep 0.5 43 sudo echo "0" > /sys/class/gpio/gpio18/value 44 sleep 0.5 45 done 46 #LongBlink T=4s 47 sudo echo "1" > /sys/class/gpio/gpio18/value 48 sleep 2 49 sudo echo "0" > /sys/class/gpio/gpio18/value 50 sleep 2 51 52 done 53 exit ======== Vous êtes observateur ! Les lignes retirées étaient vides ou inutiles.