Scratch 3 et Raspberry Pi

Scratch 3 tourne désormais sous Raspberry Pi ! 

Cette version élaborée par la fondation en collaboration avec l’équipe Scratch du MIT nécessite l’utilisation de la dernière distribution de Raspbian, Buster. Il est préconisé d’utiliser un PI4. J’ai également testé sur un PI3 et Scratch fonctionne. L’intérêt d’utiliser Scratch avec un Raspberry est la possibilité de connecter différents composants sur les GPIO et de les contrôler facilement avec Scratch. Pour cela, des extensions spécifiques, qui ne sont pas présentes dans la version pour PC et Mac, sont utilisables.


Installation de Scratch 3


L’installation de Scratch 3 est simple. 

Vous pouvez partir de zéo en installant Buster sur une nouvelle carte : télécharger Buster.

Si vous disposez déjà d'une carte qui tourne déjà sous Buster , procédez à sa mise à jour en tapant dans le terminal les lignes de commandes suivantes.

sudo apt-get update
sudo apt-get upgrade

Une fois une les mises à jour effectuées, procédez à l’installation de Scratch.

sudo apt-get install scratch3

Scratch 3 Desktop est désormais présent dans le menu Programme. 

Pour plus d’informations sur Scratch 3 vous pouvez jeter un coup d’œil par ici. Ce qui nous intéresse dans cet article ce sont les extensions spécifiques à Raspberry Pi.

Les extensions

Scratch 3 propose de nombreuses extensions qui permettent notamment de contrôler la carte micro:bit et différents Lego robotique. Pour le moment celles-ci ne sont pas disponibles pour le Raspberry. Scratch Link, le logiciel qui permet à Scratch de communiquer via Bluetooth avec ces matériels, n’est pas encore au finalisé.

Pour accéder aux extensions propres au Raspberry : 

  • Cliquer sur Ajouter une extension. La bibliothèque s’ouvre. 

  • Trois extensions spécifiques sont disponibles.



Raspberry Pi GPIO : pour contrôler les GPIO et les composants qui y sont connectés.

Raspberry Pi Sense HAT : pour programmer la carte Sense HAT avec sa matrice de leds et ses différents capteurs.

Raspberry Pi Simple Electronics : pour s’initier facilement à l’électronique en utilisant des leds et des boutons poussoirs.

Dans mes conférences je dis toujours qu’on peut faire une quantité de choses simplement avec des leds et des boutons !


Les blocs Raspberry Pi Simple Electronics

Je commence par cette première extension car elle est adaptée aux débutants. Elle permet d'initier facilement les plus jeunes à l'électronique et au fonctionnement dune bredboard en utilisant des boutons poussoirs et des leds.  


Ce bloc chapeau est un bloc de type instruction. Il sert à créer une action, une instruction, en fonction de l'état du bouton poussoir. Il est pourvu de deux menus déroulants : 
  • le premier pour spécifier le GPIO sur lequel est connecté le bouton.
  • le deuxième pour définir son état : pressed (appuyé) ou released (relâché).


Attention il s'agit de la nomenclature GPIO et non de la nomenclature Pin. 
Ainsi pour un bouton positionné sur le Pin 13 (position physique) il faudra spécifier la valeur 27 (GPIO).



Ce bloc est spécifique pour allumer (on) et éteindre (off) une led dont la position GPIO est spécifiée grâce au menu déroulant.


De par sa forme, ce bloc s'insére dans la zone à valeur d'autres blocs pour élaborer des conditions en fonction de l'état du bouton poussoir (pressed/ appuyé ou released/ éteint).



Ce bloc ne comporte qu'un seul menu déroulant : le numéro de GPIO. Son action consiste à inverser (toggle) l'état de la led. Si la led est allumée, elle s'éteint. Si elle est éteinte, elle s'alume. C'est un interrupteur!!

Les blocs Raspberry Pi GPIO

Les anciennes versions de Scratch pour Raspberry proposaient déjà des blocs spécifiques pour les GPIO.  Une fois l'extension sélectionnée les blocs Raspberry Pi GPIO s’affichent dans la palette des blocs. 


Ce bloc, de type instruction, est pourvu de deux menus déoulants. 




  • Le premier, pour sélectionner le numéro de GPIO sur lequel est connecté le composant concerné par l’instruction. 
  • Le deuxième, pour définir l’état dans lequel il doit être pour entraîner l’action correspondante : high s’il est allumé et low s’il est éteint. 






De par sa forme, ce bloc s’insère dans les zones à valeurs d’autres blocs pour élaborer notamment des conditions. Il est également pourvu de deux menus. déroulants. L'un pour spécifier le numéro de GPIO et l'autre son état.


Ce bloc est utilisé pour définir, paramétrer, le type de composant connecté




Les blocs Raspberry Pi Sense HAT

La Sense HAT (info) est une carte additionnelle qui vient se positionner sur le Raspberry, comme un chapeau (HAT).



Utilisée dans la station internationale (mission astro pipour effectuer les expériences élaborées par des élèves, elle comporte :


·        une matrice de 64 leds multicolores
·        un capteur de pression
·        un capteur d’humidité
·        un capteur de température
·        un accéléromètre et un gyroscope
·        un magnétomètre
·        un joystick

L’extension Raspberry Pi Sense HAT propose douze blocs pour contrôler ces différents éléments. Lorsque l’extension est sélectionnée le simulateur de la Sense HAT s’ouvre en parallèle ce qui vous permet d’élaborer votre projet sans brancher la carte.




Pour afficher le texte spécifié dans la zone de saisie sur la matrice de leds.




Pour afficher une lettre.







Pour afficher le dessin créé sur le schéma de la matrice qui apparait lorsque le menu déroulant est sélectionné.













Pour effacer, nettoyer, les éléments affichés sur la matrice.




Pour déterminer la couleur des pixels du motif ou du texte. 
En sélectionnant le menu déroulant, un mélangeur de couleur, identique à celui disponible dans la palette graphique s’affiche.




Pour déterminer la couleur des pixels de l’arrière-plan.




Les 64 pixels qui composent la matrice peuvent être allumés (ou éteints) indépendamment les uns des autres. Ils peuvent également avoir leur propre couleur.
Ce bloc sert à définir les coordonnées X et Y de la led qui sera allumée, ainsi que sa couleur.




Pour définir le sens d’affichage sur la matrice. Quatre angles de rotations sont proposés dans le menu déroulant : 0 - 90 - 180 – 270.



Sur la sense HAT un joystick est présent. Il peut être utilisé pour déplacer un sprite sur la scène de Scratch ou un élément situé sur la matrice de leds. 



Quatre directions sont proposées :
  • up = position vers le haut
  • down = position vers le bas
  • left = position vers la gauche
  • right = position vers la droite
  • centre = position centrale




De par sa forme, ce bloc s’insère dans la zone à valeurs d’autres blocs pour élaborer notamment des conditions.




L'accéléromètre mesure la force de l'accélération, c'est-à-dire les "chocs" subis par la carte. Ce bloc permet d'élaborer une instruction particulière lorsque la sense HAT (et la Raspberry avec) est secouée (shaken = secoué).




Le gyroscope mesure l'orientation, ce qui permet de savoir dans quelle direction pointe la carte. Les quatre positions détectables par le gyroscope sont spécifiées dans le menu déroulant.



  • forward = lorsque la carte est inclinée vers l’avant
  • backward = lorsque la carte est inclinée vers l’arrière
  • left = lorsque la carte est inclinée vers la gauche.
  • right = lorsque la carte est inclinée vers la droite.

Exemples

Premier exemple : pour inverser l'état de la led (GPIO 17) lorsque le bouton poussoir (GPIO 27)  est appuyé.
  • si la led est éteinte, elle s'allume
  • si la led est allumée, elle s'éteint.



Deuxième exemple:  allumer une led positionnée sur le GPIO 17 (Pin 11) lorsque le bouton poussoir connecté au GPIO 27 (Pin 11) est pressé. 



Troisième exemple : allumer (on) une led positionnée sur le GPIO 17 (Pin 11) lorsque la touche [flèche haute] du clavier est sélectionnée. Et l'éteindre (off) avec la [touche flèche bas].




Si vous êtes intéressés par l'utilisation de Scratch et des extensions GPIO vous pouvez vous réferer à l'ouvrage que j'ai cosigné avec François MOCQ en décembre 2017 aux éditions ENI.
Certes il s'agit de la version 2 de Scratch pour Raspberry, mais vous devriez facilement pouvoir adapter les projets proposés avec cette nouvelle version.





Commentaires

Posts les plus consultés de ce blog

Scratch - Dessiner dans un repère orthonormé

Fabriquer une main articulée

Apprendre à programmer avec Arduino - LED et bouton poussoir