Accueil » Uncategorized » Connection SSH et commande des GPIO sur Raspberry PI

Connection SSH et commande des GPIO sur Raspberry PI

Au boulot, j’ai souhaité utiliser le raspberry pi comme interface de communication pour envoyer des commandes à une interface propriétaire. Utiliser les GPIO du raspberry pi présentes certain avantage par rapport à l’Arduino comme une vitesse plus élevée, mais il n’existe pas de protection et leurs programmations peut s’avéré complexe. Au bout de 20 minutes, je me suis rabattue sur un Arduino Uno, qui est beaucoup plus simple à configurer, mais sa vitesse de communication et surtout sont CAN s’est avéré un peu lent.

Arriver au LOG, je me suis attelé à la configuration d’une carte SD qui me permettrait de contrôler facilement les GPIO.Une distribution disponible pour utiliser les GPIO simplement est celle d’ADAfruit : http://learn.adafruit.com/adafruit-raspberry-pi-educational-linux-distro/occidentalis-v0-dot-2

Or la connexion Wifi au LOG est un peu limiter donc place à la bidouille :

Communiquer en SSH depuis un PC portable.

Après avoir chargé une distribution raspbian sur la carte SD, j’ai configuré le fichier cmdline.txt directement sur la carte SD. Ce fichier se trouve dans le dossier de boot de la carte SD (qui fait environ 60 Mo) Pour fixer l’adress IP de mon raspberry pi j’ai ajouter à la suite sans sauter de ligne :


ip:169.254.0.1

Utilisant mint (dériver d’unbuntu) il ne reste plus qu’a configuré la connexion filaire en link only. Après avoir insérer la carte SD et connecter mon raspberry pi sur un port USB (pour l’alim) et le câble RJ45 (com), il suffit d’attendre quelques secondes pour que le raspberry démarre et d’ouvrir un terminal et taper:

monpc@portable ~ $ssh pi@169.254.0.1

Le raspberry demande  le mot de passe:

pi@169.254.0.1’s password:

taper « raspberry »

Il a quand même fallu changer le mot de passe, pour cela il suffit de rentrer dans la menu de configuration en tapant:

pi@raspberrypi ~ $ sudo raspi-config

 Acceder au GPIO

La méthode Shell :

Pour créer un batch je suis passer par la méthode rapide :

1-Lancer nano avec la commande:

pi@raspberrypi ~ $ nano
nono config

2-J’écrit le fameux script:

#!/bin/sh

#configurer les fichier d’entrée

echo « 4 » > /sys/class/gpio/export

echo « out » > /sys/class/gpio/gpio4/direction

#Mettre la variable N égale à 1

N=1

#Boucle tant que N est différent de 10

while test « $N » -le « 10 »

do

#Je met a patte 4 au niveau haut

echo 1 > /sys/class/gpio/gpio4/value

#attend 1 seconde

sleep 1

#Je met a patte 4 au niveau bas

echo 0 > /sys/class/gpio/gpio4/value

#J’attend 1 seconde

sleep 1

#Affiche Allumer puis éteint variable N

echo « Allumer puis éteint $N »

#J’incrémente de 1 à chaque foi

N=$[N+1]

#Quand N=10

done

#je nettoie le tout

echo « 4 » > /sys/class/gpio/unexport

Il suffit de faire un petit ctrl+x pour enregistrer et le renommer en gpio.sh

Une foi sortie de nano, il me suffit de taper les commandes suivantes:

pi@raspberrypi ~ $ sudo chmod -x gpio.sh

pi@raspberrypi ~ $ ./gpio.sh

Sa ne marche pas, je passe en super-utilisateur:

pi@raspberrypi ~ $sudo su

je tape mon mot de passe et je retente de lancer mon script:

pi@raspberrypi ~ $ ./gpio.sh

Et maintenant ça marche. La raison est qu’il faut être en root pour modifier les fichier gpio. Par contre, n’importe quels users peut les lire.

Bon, je vous l’accorde, le meilleur moyen est de tester la bête et je n’ai plus de résistance et le RPI n’a pas de protection en sortie. Donc c’est avec un peu de frisson que j’essaye avec une led directement entre la patte 4 et 5 du connecteur:

GPIOs

Le résultat en photo:

:clignote pasclignote

D’autre méthode sont disponible sur le elinux du raspberry:

http://elinux.org/RPi_Low-level_peripherals#Bash_shell_script.2C_using_sysfs.2C_part_of_the_raspbian_operating_system

Un comparatif de vitesse entre les méthodes existe sur le web:

http://codeandlife.com/2012/07/03/benchmarking-raspberry-pi-gpio-speed/

En conclusion, la méthode shell est limiter à quelques 4Khz!!! Moins qu’un arduino, mais la méthode en C permet d’atteindre 14Mhz. Bref, je n’ai pas atteint mon objectif à l’heure actuel, mais je sais à présent que c’est réalisable.

Publicités

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment cette page :