vendredi 30 janvier 2015

Livre: Programmez un Raspberry Pi, par Simon Monk





Programmez un Raspberry Pi
Initiation avec Python
par Simon Monk
Publié en 2014 par les Éditions Dunod, collection ETSF

Comme le titre l'indique, cette traduction en Français du livre "Programming the Raspberry Pi, Getting Started with Python", dont la version originale avait été publiée en 2012 chez McGraw-Hill, s'adresse aux débutants qui désirent apprendre à réaliser des programmes en langage Python sur un Raspberry Pi.

Dès la lecture du sommaire, une constatation s'impose:  même si le livre ne fait que 175 pages, l'auteur a tenté de couvrir très large. On vous explique tout d'abord ce qu'est un Raspberry Pi (dans un chapitre devenu quelque peu désuet depuis la sortie des modèles A+ et B+),  puis on vous initie aux rudiments de Linux (en  8 pages...si votre objectif est de devenir un expert en Linux, ce livre n'est pas pour vous!).

On aborde ensuite la programmation en Python 3, incluant la programmation orientée objet (modules, classes et méthodes), l'utilisation de Tkinter pour la création d'interfaces graphiques et la programmation de jeux avec Pygame.

Sauf à la toute fin du livre, lorsqu'on utilise enfin les pins GPIO pour construire une horloge et un robot, les programmes présentés n'ont rien de spécifique au Raspberry Pi et pourraient être réalisés sur n'importe quel ordinateur et système d'exploitation.

Bien entendu, la maîtrise de chacun des sujets précédemment mentionnés nécessiterait l'étude assidue de livres beaucoup plus volumineux; n'allez donc pas croire que ce petit livre fera de vous un expert de la conception de robots en Raspberry Pi, ou que vous y trouverez les réponses à toutes vos questions,

Mais dans les circonstances, Simon Monk ne se débrouille pas trop mal.  J'aime bien son approche directe basée sur des projets concrets  qui permettent d'intégrer plusieurs connaissances essentielles. Bien conscient que son livre ne fait qu'effleurer le sujet, l'auteur n'hésite pas à fournir de nombreuses adresses qui nous permettront de trouver des informations supplémentaires sur le web (références peut-être un peu trop souvent en anglais, toutefois).

Finalement, je m'en voudrais de passer sous silence une tendance irritante à encourager l'achat d'accessoires parfois coûteux qui ne sont pas à ce point essentiels:  le  Pi Face, le Slice of PI/O,  le GertBoard, le Pi Cobbler, le PI Plate, le Humble Pi... :  ce n'est plus du DIY, c'est du BIY (buy it yourself)!   Et à mon avis, l'auteur se place clairement en conflit d'intérêt lorsqu'il préconise de construire le projet final du livre  au moyen du  RaspiRobotBoard ($30) qu'il a lui-même conçu.

Anecdote amusante:  l'auteur nous conseille même d'acheter une carte SD comportant un système d'exploitation pré-installé, sous prétexte qu'installer soi-même le système d'exploitation est une tâche très délicate!  (Je suppose que le livre avait été écrit avant la mise au point de NOOBS)

En résumé:  une bonne lecture si vous maîtrisez déjà assez bien Linux, mais que vous connaissez peu (ou pas du tout) le langage Python.

Yves Pelletier (Twitter: @ElectroAmateur)

samedi 24 janvier 2015

Cours en ligne: BerkeleyX: EE40LX Electronic Interfaces

Ça faisait un certain temps que je n'avais pas suivi un MOOC, mais BerkeleyX: EE40LX Electronic Interface, qui a démarré officiellement il y a quelques jours, s'annonce tellement amusant que je n'ai pas pu m'empêcher de m'inscrire.

Pendant 15 semaines, plus de 20 000 étudiants vont tenter de construire un petit robot sauteur en suivant les directives de Michel M. Maharbiz et Tom J. Zajdel de l'Université de Californie à Berkeley, tout en faisant l'apprentissage de quelques notions de base en électronique.

Ce sera mon premier robot sauteur, et ça semble une excellente occasion de renouer avec Energia et le MSP430 Launchpad, que je n'avais pas utilisés depuis un bon moment...




Yves Pelletier (Twitter: @ElectroAmateur)


samedi 17 janvier 2015

Accéléromètre MMA7455 et Raspberry Pi (python)

Il y a quelques semaines, j'avais utilisé mon accéléromètre MMA7455 avec un Arduino.  Grâce à une bibliothèque réalisée par Moritz Kemper, le processus s'était révélé relativement simple.

Pour le raspberry Pi, je n'ai pas trouvé de bibliothèque python spécifique au MMA7455.  Quelques articles m'ont servi de point de départ (en particulier celui-ci), mais j'ai dû apporter pas mal de modifications au script pour qu'il se comporte comme je le désirais.

1)  Activation du protocole I2C

D'abord, si ce n'est pas déjà fait, il faut activer l'I2C sur le Raspberry Pi.  Ça tombe bien:  j'ai justement publié un article à ce sujet.

2)  Branchements du breakout MMA7455

J'espère que votre accéléromètre MMA7455 se trouve sur un breakout facile à brancher, comme celui qui est représenté sur la photo ci-contre.  Sinon, il est possible de faire des soudures sur le minuscule circuit intégré (comme dans ce projet), mais il faut être diablement habile!

Comme pour tous les périphériques utilisant le protocole I2C, vous devez branchez la pin SDA ("serial data") de l'accéléromètre à la pin 3 (BOARD) / GPIO 2 (BCM) du Raspberry Pi, et la pin SCL ("serial clock") de l'accéléromètre à la pin 5 (BOARD) / GPIO 3 (BCM) du Raspberry Pi.


De plus, il faut alimenter notre accéléromètre en branchant sa pin VCC à une des pins de 3,3 V du Rasbperry Pi, et la pin GND de l'accéléromètre à une des pins GND du Raspberry Pi.

En principe, les périphérique I2C nécessitent une résistance de tirage entre SDA et 3,3 V, et une autre résistance de tirage entre SCL et 3,3 V, mais je n'ai pas eu besoin d'en mettre.



3)  Programme en python

Le script ci-dessous mesure les composantes x, y et z de l'accélération.  Puisque l'accéléromètre a été réglé à une résolution lui permettant de mesurer des valeurs étalées entre -2g et +2g, une accélération de -2g retourne une valeur brute de -127, une accélération nulle retourne 0, et une accélération de +2g retourne 127.

Attention:  l'accéléromètre ne fait aucune différence entre une accélération et la gravité:  si votre accéléromètre est immobile, la force gravitationnelle provoquera une mesure de 63, qui est la valeur qui correspond à 1g (alors que si votre accéléromètre est en chute libre, vous devriez mesurer une valeur de 0 sur tous les axes).

Donc, si votre accéléromètre immobile et horizontal, bien à plat sur une table, vous devriez mesurer une valeur de 0 selon x, 0 selon y et 63 selon z (à cause de la gravité).  Si ce n'est pas le cas, modifiez les valeurs des variables ajustx, ajusty et ajustz.

Le script applique également le théorème de Pythagore afin d'afficher la grandeur de l'accélération totale.

De plus, il affiche l'inclinaison de l'accéléromètre:   l'angle en degrés que fait son axe des x par rapport à l'horizontale, l'angle que fait l'axe des y par rapport à l'horizontale, et l'angle que fait l'axe des z par rapport à la verticale.




Yves Pelletier   (Twitter:  @ElectroAmateur)