scratch_logoLe python, c, c++, le perl et autre langage sont des langages très puissants quand on les connaît, mais pas forcement adapter au plus jeune (ou pas) qui débute et qui ne sont pas a l’aise avec ce genre de chose. Alors qu’elle pourrait être la solution pour eux ? Tous simplement je dirais Scratch.Scratch est un moyen simple pour les débutants de programmer le Raspberry Pi, conçu pour ceux qui n’ont pas programmé avant et sont rebutés par le code « écrit ». Les programmes sont créés simplement par glisser-déposer de différents types de blocs ensemble pour produire une séquence d’instructions. Et il existe une sorte d’extension qui permet d’utiliser les GPIO du Raspberry Pi avec Scratch. On va donc voir comment l’installer et puis comment utiliser Scratch et les GPIO du raspberry.

Tout d’abord l’installation.

Il va falloir utiliser le terminal du Raspberry Pi pi et taper les commandes suivantes :

sudo wget http://goo.gl/Pthh62 –O install_scratchgpio5.sh
sudo bash install_scratchgpio5.sh

Si vous faites l’installation depuis un autre utilisateur la commande d’installation diffère un peu :

sudo bash install_scratchgpio5.sh VotreNomdUtilisateur

Personnellement quand je fais des tests avec les IO j’utilise ce genre de module, qui possède quelques LED, un bouton et un buzzer, ce qui me permet de vérifier rapidement si ça marche sans avoir à refaire un câblage à chaque fois.

RPI MS100A

Maintenant, rentrons dans le vif du sujet, l’utilisation de Scratch et les GPIO du raspberry.

Tout d’abord il faut ouvrir Scratch et utiliser le broadcast qui se trouve dans control puis faire new et lui donner quelque chose qui ressemble a cela :

tous allumer puis tous eteindreTout allumer puis tout éteindre

 

 

Faire clignoter une LED
Faire clignoter une LED

une manière de piloter plusieurs entrées sortie en même temps une manière de piloter plusieurs entrées sorties en même temps

Un petit exemple complet :

Scratch et les GPIO

Mais il est également possible d’utiliser l’appareille photo du raspberry pi comme ceci :

exemple Camera

Cette bibliothèque permet pas mal de choses, comme le contrôle de servo moteur, de steppeur ou même de capteur ultrasonique, pour plus d’information vous pouvez allez vois le site du développeur

Vous pouvez maintenant piloter les entrer sortie de votre raspberry pi grâce a scratch, il existe énormément d’exemples d’utilisation de scratch

4 juin 2015

Installer son pitft

photo PiTFTAujourd’hui, nous allons voir comment installer son pitft sur notre Raspberry Pi. Pour ceux qui ne savent pas ce qu’est le pitft, c’est un écran de 2.8″ conçu par adafruit et qui est tactile, il fonctionne grâce au bus SPI. Et il va vous permettre d’afficher soi le bureau directement ou bien même une application que vous aurez faite (ex : utilisation du framebuffer de Linux). On peut également lui ajouter quelques boutons, mais personnellement je n’en ai pas pris. On peut retrouver beaucoup d’exemples d’utilisation de cet écran sur le site d’adafruit.

On va commencer par ajouter le dépôt d’adafruit et installer le paquet de configuration de l’écran, a noté que le paquet fictionne également avec l’écran de 2.4″, mais uniquement compatible raspbian et c’est deriver:

curl -SLs https://apt.adafruit.com/add | sudo bash
sudo apt-get install -y adafruit-pitft-helper

ajout depot

Ensuite on va lancer la configuration :

sudo adafruit-pitft-helper -t 28r

Console

L’application commence pour nous demander si l’on veut afficher la console sur l’écran.

Puis si l’on veut activer le bouton 23 comme bouton Power, comme je n’en possède pas je vais dire non.

Il faut encore redémarrer le Raspberry Pi pi : sudo reboot

Lors du redémarrage, et si tout c’est bien passé, on devrait observer du texte défiler sur le pitft.

Maintenant que l’écran fonctionne on va pouvoir passer au tactile, avant de commencer, nous allons faire une règle dans udev pour l’écran tactile. Comme le nom eventX de l’écran va changer beaucoup de choses.

sudo nano /etc/udev/rules.d/95-stmpe.rules
SUBSYSTEM=="input", ATTRS{name}=="stmpe-ts", ENV{DEVNAME}=="*event*", SYMLINK+="input/touchscreen

raspberry pi udev

On va ensuite recharger le driver du tactile :

sudo rmmod stmpe_ts; sudo modprobe stmpe_ts

Ensuite, tapez ls -l /dev/input/touchscreen
Il doit pointer vers eventX où x est un nombre, ce nombre sera différent en fonction de votre configuration puisque d’autres claviers/souris/périphériques USB prendront eux aussi un événement.

raspberry_pi_udevlink

Mais avoir un écran tactile c’est bien, en avoir un calibrer c’est mieux. On va donc voir comment calibrer notre écran. Pour cela on va lancer un script qui va nous faire tout ça automatiquement, et qui a étais installé automatiquement de l’installation des scripts pour l’ecran.

sudo adafruit-pitft-touch-cal

raspberry_pi_touchcal

Et maintenant votre écran et prêt à être utilisé. Vous aller pouvoir lancer votre bureau ou n’importe qu’elle application sur votre bel écran 😀

 

Logo FTP
Quelle joie d’avoir son propre serveur , dédier ou juste installer sur un raspberry pi ou tout autre support Linux bien sûr, mais quand on n’a accès juste a la console, le FTP peut aidé pour les transferts de fichier et c’est quand même bien utile. Donc aujourd’hui on va voir comment installer un serveur FTP sur debian, et vous allez voir c’est simple et rapide.

Tout d’abord, on installe tout ce dont on a besoin :

sudo apt-get install pure-ftpd pure-ftpd-common

Une fois la commande entrée, le serveur FTP sera automatiquement installer et configurer avec une config de base, les dit fichier ce trouve ici : /etc/pure-ftpd/

On va ensuite ajouter un groupe et un utilisateur ftp :

sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

De base, Pure-ftpd une authentification utilisant PAM système puis sur un fichier de donnée interne. Pour des raisons de sécurité, on va désactiver l’authentification par PAM. Pour ce faire, on va éditer le fichier conf/PAMAuthentication et remplacer la ligne yes par no:

# sudo nano /etc/pure-ftpd/conf/PAMAuthentication
no
# sudo nano /etc/pure-ftpd/conf/DontResolve
yes

Ensuite, on va créer un lien symbolique pour que PURE-FTPD prenne en compte les utilisateurs virtuels:

# cd /etc/pure-ftpd/auth/
# sudo ln -s ../conf/PureDB 50puredb

Allez un petit effort on y est presque on va maintenant créer un utilisateur et sont répertoire de travaille :

sudo mkdir /home/ftp/user
sudo chown -R ftpuser:ftpgroup /home/ftp/user
sudo pure-pw useradd user -u ftpuser -g ftpgroup -d /home/ftp/user

Tout ceci a créé un fichier de config (/etc/pure-ftpd/pureftpd.passwd) pour le serveur, mais il faut encore le transformer pour qu’il soie compréhensible pour lui :

sudo pure-pw mkdb

Puis on redémarre le service :

sudo /etc/init.d/pure-ftpd restart

Et voilà votre serveur FTP est installé, mais il existe encore d’autres commandes utiles pour la gestion.

Par exemple modifier le message d’accueille :

# sudo nano /etc/motd.pure-ftpd
Bienvenue sur mon beau serveur FTP !
# sudo nano /etc/pure-ftpd/conf/FortunesFile
/etc/motd.pure-ftpd

Ou connaître tous les utilisateurs :

# sudo pure-pw list
user /home/FTP/user

On veut changer un le mot de passe ? Pas de soucis :

sudo pure-pw passwd user

On veut se débarrasser d’un utilisateur? Rien de plus simple :

sudo pure-pw userdel user

Et voilà on a fait le tour des commandes de base. Vous pouvez maintenant profiter pleinement de votre serveur FTP tout neuf.

Raspberry pi autoradio

Autoradio

Mon petit projet de Raspberry pi autoradio a à plutôt bien avancer même si ce n’est pas très vite. Pourtant ça avance, qu’est-ce qu’il reste à faire?
Pas grand-chose à vrai dire uniquement brancher le Pi à l’intérieur alimenter le tout (en espérant que ça n’explose pas bien sûr), améliorer le code du lecteur audio, que je pense entièrement refaire.

Pourquoi le refaire? Tout simplement parce que je me suis remis un peut au c ce qui me permettra d’utiliser Qt en framebuffer pour économiser les ressources graphiques et phonon pour l’audio, qui luit me permettra de piloter quasiment n’importe quel lecteur audio installer sur le rasp, j’espère encore lui trouver un petit nom sympa, si vous avez des idées n’hésitées pas ^^.
J’espère pouvoir finir les tests cette semaine et de pouvoir me remettre sur le code la semaine suivante, et donc de pouvoir enfin en profiter pleinement : D.

D’ailleurs, je suis en train de fabriquer une coque pour mon imprimante 3D afin d’améliorer ces impressions et de pouvoir donner un meilleur look a tout ça.

Avoir un micro-ordinateur comme le raspberry pi c’est sympa, surtout quand on a plusieurs I/O mais quand on ne sait pas s’en servir ça peut vite devenir problématique, on va donc voir comment les piloter. Afin de pouvoir modifier leur état, mais aussi de les lire. Le tout en utilisant du python.

raspberry-pi-rev2-gpio-pinout

[notice]

Attention on ne peut pas faire tout ce que l’on veut avec les GPIO elles ont leur limite à savoir :

– ne peut leur appliquer plus de 3.3v au risque de griller la pin et même le rasperry pi lui même

– pas plus de 8mA pour un total de 51 mA

– Toutes les pins ne sont pas des I/O certaines sont réservées pour la com, on peut le voir sur la photo ci-dessus

[/notice]

 

Afin de pouvoir utiliser les gpio en python il faut être en administrateur, pensez donc a utilisé la commande sudo python « VotreScript.py » ou la commande sudo -s pour être loggé en root.

 

Maintenant il faut savoir si la librairie est bien installée, pour ça on va ouvrir la console python:

 

sudo python

 

Puis on va importer la librairie :
import RPi.GPIO as GPIO

 

Si vous n’avez pas de messages d’erreur, c’est que la librairie est bien installée sinon il faudra l’installer .

On va commencer avec un petit exemple pour lire une entrée :

 

import RPi.GPIO as GPIO # on importe la librairie
""" in choisie le mode de numérotation des pins 
(soit le numéro de pin soit le numéro GPIO a voir sur l'image en début)"""
GPIO.setmode(GPIO.BOARD) 
channel = 11 # déclarations de la pin voulue
GPIO.setup(channel, GPIO.IN) # on met la pin en mode input
try : # gestion des erreur 
	while True:
		if GPIO.input(channel): # on regarde l'état de la pin
			print "la voie est a l'état haut"
		else :
			print "la voie est a l'état bas"
except KeyboardInterrupt: # on gère l'erreur du ctrl+c
	GPIO.cleanup() # on remet a zéro la confit des pins

 

On a donc un petit exemple sur comment lire une voie, mais maintenant on aimerait bien en écrire une des voies :

 

import RPi.GPIO as GPIO # on importe la librairie
import time
""" in choisie le mode de numérotation des pin 
(soit le numéro de pin soit le numéro GPIO a voir sur l'image en début)"""
GPIO.setmode(GPIO.BOARD) 
channel = 11 # déclaration de la pin voulu
# on met la pin en mode ouput avec une valeur initiale a l'état bas
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH) 
try : # gestion des erreurs 
	while True:
		GPIO.output(channel, False) # on met la voie a l'état bas
		time.sleep(0.2)
		GPIO.output(channel, True) # on met la voie a l'état haut
		time.sleep(0.2)
except KeyboardInterrupt: # on gère l'erreur du ctrl+c
	GPIO.cleanup() # on remet a zéro la confit des pins

 

Avec cet exemple on va pouvoir faire clignoter une led relié entre la voie 11 et la masse, et si maintenant on essayé de faire les deux en même temps ?

 

import RPi.GPIO as GPIO # on importe la librairie
""" in choisie le mode de numérotation des pin 
(soit le numéro de pin soit le numéro GPIO a voir sur l'image en début)"""
GPIO.setmode(GPIO.BOARD) 
channel = 11 # declaration de la pin interrupteur
channeled = 12 #declaration de la pin led
GPIO.setup(channel, GPIO.OUT, initial=GPIO.HIGH) 
# on met la pin en mode ouput avec une valeur initiale a l'état bas
GPIO.setup(channeled, GPIO.IN) # on met la pin en mode input
try : # gestion des erreurs 
	while True:
                        # on écrit la valeur de l'entrée 11 sur la voie 12
			GPIO.output(channel, GPIO.input(channel)) 
except KeyboardInterrupt: # on gère l'erreur du ctrl+c
	GPIO.cleanup() # on remet a zéro la confit des pins 

Maintenant on sait comment lire/écrire des digites sur notre rasperry pi plus tard nous verrons également comment ce servir de l’I²C pour communiquer avec un un arduino et le spi pour communique avec un MCP3004 pour avoir des entrées analogues sur notre rasperry pi