Actualités

Photobooth – La machine à selfies

Photobooth : la machine à selfies
Photobooth : la machine à selfies

Une soirée à thème très prochainement ? Un mariage se profile dans quelques mois ? Le photobooth est la machine idéale pour animer vos évènements festifs. L’idée est la suivante…

Vous célébrez un évènement avec vos invités dans un espace de convivialité. A l’écart, dans une pièce isolée, le photobooth est disposé autour d’une décoration à thème. Avec les accessoires de déguisement mis à disposition au sein de cet espace intime, les conditions sont ainsi réunies pour favoriser la créativité des protagonistes et les inciter à se mettre en scène.

En s’affranchissant du tarif abordable de 0.10€, l’utilisateur de cette machine à « selfies » à l’ancienne repart avec une photo instantanément imprimée sur papier thermique… mais ce n’est pas tout !

Les photos prises par le photobooth seront exportées vers un autre Raspberry chargé de les projeter sur écran afin de partager les clichés (en couleur et haute résolution) avec l’ensemble des convives !

C’est un projet ambitieux mais très enrichissant : les notions impliquées sont denses et les difficultés à surmonter sont assez complexes. Le challenge technique est de taille : de nombreuses lignes de code Python nous attendent alors démarrez le Raspberry et ouvrez le terminal en grand : il va y avoir du pulse sur les GPIOs !

Avant de se lancer, voici un aperçu des photos imprimées :

Photos imprimées sur papier thermique
Photos imprimées sur papier thermique

Vous souhaitez en savoir davantage ? Rendez-vous dans quelques semaines, je vous dévoilerai les étapes de réalisation en détail…

L’Officiel PC Volume 3 et 4 : La Shopping List Machine et Le Media Center Kodi

C’est avec un peu de retard que je fais à nouveau la promotion du magazine « L’Officiel PC ». En effet, un peu plus de 3 mois se sont déjà écoulés depuis la parution du volume 2 : les numéros 3 et 4 sont déjà sortis ! Retrouvez un article dédié à la Shopping List Machine dans le numéro 3. Publié il y a quelques jours, le volume 4 comporte 10 pages détaillant l’installation de l’alpha à l’omega, du media center Kodi adossé à un espace de stockage LVM.

Bien entendu, l’ensemble des sujets abordés dans les pages de ces numéros sont très intéressants. A la lecture des différentes rubriques (matériels, astuces, dossiers techniques, projets complets,…), on en apprend toujours un peu plus sur le Raspberry Pi et le contenu constitue une remarquable source d’idées pour réaliser de nouveaux projets.

Couverture du magazine L'officiel PC volume 3
Couverture du magazine L’officiel PC volume 3

 

Couverture du magazine L'officiel PC volume 4
Couverture du magazine L’officiel PC volume 4

Shopping List Machine : Python, Code-barres EAN13, SQLite et imprimante thermique

A l’ère du « drive », l’intérêt de cette Shopping List Machine peut laisser dubitatif mais une chose est sûre : au travers de la réalisation de ce projet, vous en apprendrez beaucoup sur des notions variées. Les concepts impliqués sont denses et ne pourront être que survolés mais l’essentiel nécessaire pour se lancer est ici synthétisé.

La machine Shopping List composée d’un Raspberry, d’un scanner sans fil, d’une enceinte et d’une imprimante thermique

Mais avant d’entrer dans les détails techniques, formulons les exigences de la Shopping List Machine…

Continuer la lecture de « Shopping List Machine : Python, Code-barres EAN13, SQLite et imprimante thermique »

L’officiel PC volume 2 : un article dédié à la machine Chuck NORRIS

L’officiel PC volume 2 : un article dédié à la machine Chuck NORRIS

Retrouvez le projet « CHUCK NORRIS MACHINE » dans le deuxième numéro du magazine L’officiel PC RASPBERRY PI.

Couverture L'officiel PC Raspberry Pi Volume 2
Couverture L’officiel PC Raspberry Pi Volume 2

En réponse à l’appel à contribution figurant à la page 82 du premier numéro du magazine « L’officiel PC », j’ai soumis ma proposition d’article à l’équipe de rédaction (raspberry@idpresse.com).

A mon sens, le projet « Chuck NORRIS » s’inscrit dans l’esprit du magazine et constitue un excellent candidat pour y figurer. En effet, ce projet implique de nombreuses connaissances afférentes au Raspberry Pi, les GPIOs, le développement Python, l’électronique ou encore l’utilisation de périphérique avec le port UART. Et c’est ainsi que la machine à blagues Chuck NORRIS fait aujourd’hui l’objet d’un article au sein du volume 2, paru début avril 2017 !

Je remercie Benoît BAILLEUL (ainsi que son équipe de rédaction) pour avoir accepté ma proposition d’article au sein de cette édition qui lui consacre pas moins de 8 pages !

Caractère EOF des fichiers textes : \n pour Unix et \r\n pour Windows

Caractère de fin de ligne EOF (« End Of Line »)

J’ai une précision technique à apporter au sujet du caractère EOF. En effet, dans l’article concernant les aspects logiciels de la machine à blague Chuck Norris, j’indiquais que :

« Ici, le seul moyen que j’ai trouvé pour créer un fichier source valide, c’est par le biais d’un copier-coller de l’ensemble du texte à travers l’utilitaire PuTTY. »

C’est vrai que cette technique peu élégante fonctionne. Néanmoins, je n’ai compris que récemment pourquoi la commande strfile ne générait pas de fichier .dat valide depuis le fichier .txt copié depuis mon PC Windows… explications techniques. Revenons tout d’abord à ce qui se produit lorsqu’on applique la commande strfile sur un fichier .txt crée sur un environnement Microsoft. Voici « l’erreur » qui se produit :

Erreur de la commande strfile sur un fichier utilisant le caractère \r\n comme EOF
Erreur de la commande strfile sur un fichier utilisant le caractère \r\n comme EOF

Le retour de la commande indique qu’il n’y a qu’un seul string dans le fichier .dat généré. Ce qui est faux puisque le gisement de blagues Chuck Norris en contient près de 10 000 ! Quoi qu’il en soit, le fichier ainsi généré ne permettra pas à la commande fortune de fonctionner.

Caractère EOF différent selon l’environnement

Ceci s’explique par le caractère EOF. En effet, les fichiers textes n’utilisent pas le même caractère de fin de ligne selon qu’ils sont créés sur un système Windows (\r\n) ou Unix (\n).

Pour s’en convaincre, on pourra lancer la commande :

permet d’afficher le contenu du fichier en octal en faisant apparaître le caractère EOL. La solution consiste donc à supprimer les caractères \r du fichier créé sous Windows pour qu’il soit exploitable sur le Raspberry.

Pour cela, on pourra utiliser la commande sed (Stream Editor) :

qui permet de substituer le caractère \r par rien (en prenant soin auparavant de faire une sauvegarde chucky.txt.old du fichier original avec l’option –i.old). On remarquera ici qu’on remplace ‘\r’ par rien. On aurait pu essayer de remplacer ‘\r\n’ par ‘\n’… mais cela ne fonctionne pas. Pourquoi ? Ceci est lié au fonctionnement de la commande sed qui travaille ligne par ligne :

  1. elle parcourt le Stream jusqu’au caractère ‘\n’ ;
  2. charge tous les caractères avant le caractère ‘\n’ dans une zone de travail, le caractère EOF exclus ;
  3. effectue le traitement de substitution ;
  4. si l’option -i n’est pas précisée, la commande affiche le résultat sur stdout (l’écran) et aucune modification n’est faite sur le fichier passé en paramètre.

Une fois la commande exécutée, si on relance la commande :

on s’aperçoit que la substitution a fonctionner et que le caractère EOL est désormais \n. La commande strfile génère désormais un fichier .dat correct :

Commande strfile sur un fichier utilisant le caractère \n comme caractère EOF
Commande strfile sur un fichier utilisant le caractère \n comme caractère EOF

Le fichier .dat ainsi généré contient cette fois-ci 9692 strings ! En effet, les fichiers textes n’utilisent pas le même caractère de fin de ligne selon qu’ils sont créés sur un système Windows (\r\n) ou Unix (\n). Un simple copier-coller de l’ensemble du texte à travers l’utilitaire PuTTY réalisera la conversion automatiquement.

Ambilight sur Raspberry avec Hyperion

Ambilight avec Hyperion

Vous connaissez certainement le système « Ambilight » inventé par Philips qui prolonge l’image de la TV sur le mur par éclairage de couleurs cohérentes avec l’image courante grâce à un ensemble de LED. Pour améliorer l’expérience Kodi, il est possible d’équiper le Raspberry d’un tel système à moindre frais : un ruban de LED commandé par le logiciel Hyperion.

Avant d’en dire davantage, je vous propose de découvrir l’effet à obtenir en image :

Test de l'ambilight rainbow
Test de l’ambilight rainbow

Il s’agit ici de l’effet « Rainbow » lancé depuis l’application Android Hypérion Free. Bien entendu, l’utilisation principale reste l’amélioration de l’expérience visuelle pour visionner des films, mais il est également possible d’appliquer une couleur unie en continue ou encore des effets dynamiques prédéfinis sur l’ambilight, c’est ce que nous verrons avec l’application Android une fois que tout sera en place.

Liste du matériel pour l’ambilight maison

Je vous énumère ci-dessous le matériel nécessaire, avec un lien direct sur aliexpress :

Sans compter le coût du Raspberry, le système Ambilight en lui-même revient à 49.86€. C’est quand même un prix assez contenu et tout à fait abordable. D’autant que si l’on dispose déjà d’une alimentation, on économisera 1/3 du prix. Justement, puisqu’on parle de l’alimentation, comment définir l’ampérage nécessaire et suffisant ?

Calcul de l’ampérage

Pour définir la taille (ampérage) du bloc d’alimentation, il suffit de lire les caractéristiques du ruban de LED. Pour le modèle utilisé ici, le vendeur indique un « courant de travail » de 12A par 5m. Selon la taille de la TV à équiper, on définit le métrage nécessaire : pour ma part, je ne dépasse pas 4 mètres. En faisant un produit en croix, on obtient donc (4×12)/5=9.6. Ayant pris des mesures larges et ne souhaitant pas alimenter le Raspberry (le modèle 3 demande jusqu’à 2.5A pour son simple fonctionnement), une alimentation 10A est le bon calibrage.

D’une manière générale, pour calculer l’intensité à fournir par l’alimentation, il suffit de faire l’opération suivante (P = U x I) :

(Longueur ruban x Nombre de LED par mètre x Puissance d’une LED) /  5v = Intensité nécessaire en A.

Fonctionnement du ruban WS2801

Sur le ruban de LED WS2801, chacune des LED est adressable individuellement et peut donc être allumée (ou éteinte) indépendamment de toutes les autres. Comment ça marche ?

Le bus SPI : Serial Peripheral Interface.

Le Raspberry échange avec l’ensemble de LED au travers du bus SPI (Serial Peripheral Interface) disponible sur les GPIO. La liaison SPI est un bus série synchrone full-duplex permettant la transmission de données entre plusieurs équipements selon le schéma master/slaves à l’aide de 2 lignes de signal et 2 lignes de données :

  1. SCLK : Serial Clock ;
  2. MOSI : Master Output, Slave Input ;
  3. MISO : Master Input, Slave Output ;
  4. SS : Slave Select.

Toutes ces lignes sont unidirectionnelles. Le maître génère l’horloge et initialise une transmission de données en sélectionnant l’esclave avec qui il souhaite communiquer. Pour cela, chaque esclave est adressé par le maître par une ligne individuelle SS (Slave Select) et n’est actif que lorsqu’il est sélectionné par la mise à l’état haut de la ligne SS. Une fois l’esclave sélectionné, le maître envoie les données à transmettre sur la ligne MOSI.

Schéma Master-Slave(s) d'une liaison SPI
Schéma Master-Slave(s) d’une liaison SPI

Comme l’indique l’image ci dessus, il y a autant de lignes SS que d’esclaves. Le maitre sélectionne l’esclave à qui il souhaite s’adresser en mettant la ligne SS correspondante à l’état haut et envoie sur la ligne MOSI les données à transmettre. Plus il y a d’esclaves et plus il y a de lignes Slave Select, ce qui peut parfois rendre le montage rapidement complexe quand les slaves sont nombreux, comme c’est le cas d’un ruban de LED.

Il existe une alternative plus souple : le montage « daisy chain » selon lequel :

  • les slaves sont connectés en cascade : le MISO du slave N est connecté au MOSI du slave N+1 ;
  • il n’y a qu’une seule ligne SS pour tous les slaves.
SPI daisy chained
SPI daisy chained

Seul le premier slave reçoit les données directement depuis le maître.

Tant que la ligne CS reste à l’état LOW, à chaque cycle de commande (nombre de pulse sur l’horloge pour transmettre une commande), chaque slave reçoit des données/une commande venant du composant précédent (un slave également, sauf pour le slave 1 qui reçoit les données directement depuis le maître). En effet, si la ligne CS n’est pas activée, les slaves ignorent la commande reçue et la transmettront sur leur sortie MISO lors du cycle. A chaque cycle, les commandes viennent écraser la précédente dans chaque slave,… et c’est ainsi que les données sont propagées à travers la chaîne jusqu’à ce que chaque composant ait reçu la commande appropriée. Le passage à l’état HIGH de la ligne SS donne l’ordre à l’ensemble des composants de la chaine d’exécuter la commande qui leur est parvenue.

Le maître est ainsi en mesure de faire exécuter une commande différente à chaque slave avec seulement 3 lignes : SS, CLK et MOSI.

SPI et WS2801

Dans notre cas, c’est encore particulier. Aucune donnée n’est attendue en retour des LED vers le Raspberry, on n’a pas besoin de la ligne MISO. Et l’on constate que le ruban n’utilise que 2 lignes : Data IN et Clock (en plus de l’alimentation).

Sans aucune certitude au moment de la rédaction de ce paragraphe, j’imagine que cela revient à ce que la ligne SS soit constamment à l’état LOW, ce qui permet de propager les commandes de LED en LED. Et alors pour donner l’ordre d’exécution de la commande, j’imagine que l’ordre est donné au niveau logiciel, puisque le nombre de LED présentes sur le ruban est défini dans le fichier de configuration évoqué plus loin.

Installation matérielle

Le ruban de LED WS2801 ressemble à ça :

LED stripe WS2801
LED stripe WS2801

Comme l’indique une flèche présente sur le ruban, les données ne peuvent circuler que dans un sens (indiqué par une flèche). En revanche, le courant peut être fourni sur une extrémité ou sur l’autre. Parmi les lignes décrites ci-dessus dans la paragraphe SPI, on retrouve de haut en bas :

  • 5V ;
  • CK = Clock ;
  • SI = Data IN ;
  • GND.

ATTENTION : les fils du connecteur JST ne respectent pas le code couleur conventionnel des fils : le +5V est noir et le GND est bleu ! Il est prudent de vérifier ses branchements avant de mettre sous tension.

Pour couvrir le périmètre de la TV, il est nécessaire de couper le ruban sur les traits prévus à cet effet, de les juxtaposer perpendiculairement dans les angles de l’écran puis de les raccorder en soudant 4 fils :

Soudure des lignes 5V, CK, SI et GND.
Soudure des lignes 5V, CK, SI et GND.

Un adhésif se trouve au dos du ruban de LED et facilite l’installation sur la TV sans avoir à fabriquer un support supplémentaire. Une fois placé au dos de la TV, cela donne ça :

Ruban de LED relié perpendiculairement à l'aide de fils soudés
Ruban de LED relié perpendiculairement à l’aide de fils soudés

Le schéma de câblage est le suivant (numération BOARD utilisée) :

Schéma de câblage LED Strip WS2801
Schéma de câblage LED Strip WS2801
  1. CK -> SPI0_CLK = broche 23 ;
  2. SI -> SPI0_MOSI = broche 19.

Une fois le montage réalisé, on obtient :

Connexion du ruban de LED sur les GPIO du Raspberry
Connexion du ruban de LED sur les GPIO du Raspberry

Et puisque les détails sont essentiels pour des réalisations abouties :

Kodi Box
Kodi Box

Installation logicielle

Commençons par mettre à jour le Raspberry :

Puisque le Raspberry échangera avec le ruban de l’aide au travers du bus SPI implémenté sur les GPIOs vues plus haut, il est nécessaire d’activer ce bus SPI. Pour cela, il y a deux possibilités. Editer le fichier /boot/config.txt et décommentez la ligne suivante :

Ou bien passer par l’utilitaire de configuration raspi-config > 5 Interfacing Options > P4 SPI > Activer SPI.

Installons les paquets nécessaires :

Télécharger et installer l’outil hyperion :

Hyperion est un logiciel qui va fonctionner en tant que serveur au sens software, c’est à dire service, qu’une fois le service démarré sur le Raspberry, un nouveau port sera en écoute des requêtes à destination d’Hyperion. Par défaut, ce port est 19445.

A ce stade, le serveur Hyperion n’est pas démarré et ne peut pas l’être :

Comme le suggère le retour de la commande ci-dessus, pour pouvoir démarrer, le serveur Hypérion a besoin d’un fichier de configuration : le fichier /etc/hyperion/hyperion.config.json que nous allons générer à l’aide de l’outil hypercon…

Création du fichier de configuration Hyperion.json

Télécharger l’outil Hypercon : https://hyperion-project.org/wiki/HyperCon-Information. L’utilitaire HyperCon se présente sous la forme d’un .jar (HyperCon.jar). S’agissant d’une application Java, vous aurez nécessairement besoin d’un JRE installé sur votre PC pour pouvoir l’exécuter. Une fois lancé, l’outil se présente de la manière suivante :

Configuration d'Hyperion avec HyperCon
Configuration d’Hyperion avec HyperCon

Il s’agit ici de renseigner les champs avec les paramètres correspondants à l’installation physique des LEDs derrière la TV. Pour cela, on configure le nombre de LED horizontales, à gauche et à droite. Il est possible que le pied de la TV vous contraigne à ne pas couvrir une portion centrale sur le bas de l’écran, dans ce cas, il faudra préciser le Bottom Gap en nombre de LED.

Une fois le fichier généré à l’aide du bouton « Create Hyperion Configuration » en bas à gauche, on le place donc dans le répertoire /etc/hyperion. On peut maintenant démarrer le service :

Et contrôler qu’il est correctement démarré :

On peut également s’apercevoir que le port 19445 est à l’écoute :

Testons dès à présent l’allumage de toutes les LEDS en rouge pendant 5s avec une priorité de 50 (plus prioritaire que par défaut fixé à 100) :

 

Selon le ruban, certaines couleurs RGB peuvent être inversées.

Après avoir généré un premier fichier, j’ai constaté que Hyperion affichait du bleu au lieu du vert et inversement. J’ai donc configurer le paramètre RGB Bytes Order à RBG plutôt que RGB. Par défaut configuré à RGB, ce paramètre devra être adapté selon le ruban de LED utilisé.

Voici l’ambilight en fonctionnement, avec l’activation dynamique des LED pour prolonger de manière lumineuse, l’image sur le mur :

LED lighting
LED lighting

l’application Hypérion Free pour smartphone

Et pour finir, la cerise sur le gâteau ! Téléchargez l’application Hypérion Free sur votre smartphone et vous serez en mesure de télécommander le système ambilight :

L'application Hyperion Free vous permet de commander les LEDs depuis votre smartphone
L’application Hyperion Free vous permet de commander les LEDs depuis votre smartphone

En plus du cercle chromatique, un ensemble d’effets dynamiques est disponible pour tester l’ambilight.

Maintenant, on allume l’ambilight et on fait chauffer les pop-corn !