Raspberry PI Tutorial

Créez un badge de conférence animé avec Inkyphat

Par Thomas, le 14 novembre 2020
Créez un badge de conférence animé avec Inkyphat

Les conférences ont lieu à travers le monde et pour de nombreuses raisons différentes, mais une chose qui est commune à chaque conférence est le badge de la conférence. Des simples étiquettes autocollantes aux fabricants, en passant par les badges électroniques élaborés, le badge de conférence est là pour aider tout le monde à savoir qui est tout le monde! Alors, pourquoi ne pas créer votre propre badge de conférence en utilisant un Raspberry Pi Zero W, un écran Inkyphat et un cadre découpé au laser de Core-Tec!

Dans ce projet, nous créerons notre propre badge de conférence animé qui parcourra des images et du texte, révélant à chacun qui nous sommes et où ils peuvent en savoir plus sur nous. Nous pouvons également personnaliser le badge pour répondre aux besoins de la conférence à laquelle nous assistons, y compris les numéros d’identification, les conférences que nous souhaitons voir et les heures de repas les plus importantes!

De quoi aurez-vous besoin pour ce projet:

Tout le code et un exemple d’image pour ce projet peuvent être téléchargés à partir du Dépôt Github.

Construire le badge

blank

Pour assembler l’électronique, nous devons attacher Inkyphat aux broches GPIO (General Purpose Input Output) du Raspberry Pi Zero W, alors qu’il est éteint, afin qu’il couvre chaque broche et que son profil corresponde à celui du Pi. Pour l’instant, nous allons laisser le porte-badge phat découpé au laser éteint jusqu’à ce que nous ayons terminé les tests. Une fois connecté, assurez-vous que tous vos périphériques sont connectés, puis allumez le Pi sur le bureau.

blank

Codage du badge

Tout d’abord, nous devons connecter notre Pi Zero W à Internet, et pour ce faire, nous pouvons utiliser l’icône Réseau, en haut à droite de l’écran. Cliquez sur l’icône et trouvez le nom de votre point d’accès domestique, cliquez sur le nom et il vous sera demandé le mot de passe. Entrez-le et vous serez en ligne dans une minute.

Une fois en ligne, notre prochaine étape consiste à installer le logiciel de l’écran Inkyphat, et pour ce faire, nous devons ouvrir un terminal, dont l’icône se trouve en haut de l’écran. Une fois dans le terminal, nous exécuterons une commande sur une seule ligne qui téléchargera un script d’installation, puis l’exécutera. Normalement, nous ne devrions jamais faire cela car le script peut être malveillant, mais dans ce cas, l’URL Pimoroni du script est sûre et valide. Dans le terminal, saisissez-le sur une seule ligne, puis appuyez sur ENTRÉE.

curl https://get.pimoroni.com/inkyphat | bash

L’installation sera hautement automatisée et prendra quelques minutes, mais une fois qu’elle sera terminée, vous retrouverez le contrôle du terminal. Vous pouvez maintenant fermer le terminal.

Nous utiliserons Python 3 pour coder le badge, donc à partir du menu principal de Raspbian, accédez au Programmation menu et sélectionnez Python 3. L’éditeur Python 3 va s’ouvrir, maintenant cliquez sur Fichier >> Nouveau pour ouvrir un nouveau document vierge. Pour accélérer les sauvegardes futures, nous allons sauvegarder maintenant, cliquez sur Fichier >> Enregistrer et nommez le fichier conf_badge.py à la / home / pi / répertoire (c’est la valeur par défaut) N’oubliez pas d’enregistrer souvent!

Passons donc au code Python. Notre première ligne de code est une instruction au système d’exploitation qui indique au code où trouver l’interpréteur Python 3, qui exécutera le code. Entrez ce code dans l’éditeur.

#!/usr/bin/env python3

Nous importons ensuite trois bibliothèques de code Python pré-écrit. Les bibliothèques nous permettent d’utiliser Inkyphat, d’utiliser des polices et des images avec le tableau et de contrôler la vitesse à laquelle notre projet se mettra à jour. Entrez ce code dans l’éditeur.

import inkyphat

from PIL import ImageFont, Image

from time import sleep

La prochaine étape que nous prenons est de créer un objet appelé font, et là-dedans, nous allons stocker la police que nous aimerions utiliser, dans ce cas FredokaOne, l’une des quatre polices fournies avec Inkyphat, et définir la taille à 22pt. Entrez ce code dans l’éditeur.

font = ImageFont.truetype(inkyphat.fonts.FredokaOne, 22)

Les fonctions sont des outils pratiques en programmation, et dans ce projet, nous les utilisons pour stocker les séquences fréquemment utilisées. Par exemple, notre texte la fonction a deux paramètres; ce sont le texte à afficher et la couleur du texte. Le code à l’intérieur de la fonction est indenté, une manière pythonique de montrer que le code appartient à une fonction / boucle / instruction conditionnelle. Nous obtenons ensuite la taille du texte et le stockons dans deux variables w et h. Ensuite, nous calculons le centre de l’écran en divisant la largeur par deux, puis en divisant la largeur du texte également par deux avant de soustraire la largeur du texte de la largeur de l’écran. La même chose est appliquée pour la hauteur du texte.

Nous demandons ensuite à Inkyphat de stocker le texte prêt, et il est positionné au X,y position que nous venons de calculer. Le texte et la couleur sont passés en paramètres lorsque nous appelons la fonction, tandis que la valeur de la police est stockée au début de notre code. La dernière ligne de cette fonction est utilisée pour écrire les modifications à l’écran, forçant Inkyphat à se mettre à jour et à afficher le dernier texte.

Entrez ce code dans l’éditeur.

def text(text, colour):

   w, h = font.getsize(text)

   x = (inkyphat.WIDTH / 2) - (w / 2)

   y = (inkyphat.HEIGHT / 2) - (h / 2)

   inkyphat.text((x, y), text, colour, font)

   inkyphat.show()

Passons à une nouvelle fonction, et cette fois nous créons une fonction qui gérera l’affichage d’une image que nous passons à la fonction en tant que paramètre. La première ligne à l’intérieur de la fonction effacera l’écran de tout texte, puis nous passons à définir l’image que nous souhaitons utiliser. Ensuite, nous mettons à jour l’écran pour afficher l’image.

Entrez ce code dans l’éditeur.

def image(file):

   inkyphat.clear()

   inkyphat.set_image(Image.open(file))

   inkyphat.show()

La fonction finale de ce projet est appelée nettoyeur et son travail est simple, pour s’assurer que l’écran est complètement nettoyé de tout pixel errant. Cela est dû au texte apparaissant sur une image malgré l’utilisation du inkyphat.clear () code pour effacer l’écran. Dans cette fonction, nous spécifions les trois couleurs que Inkyphat peut utiliser pour dessiner sur l’écran (rouge, noir et blanc) et nous utilisons ensuite une boucle for qui définira la couleur de la bordure de l’écran pour correspondre à chacune de ces couleurs. Nous utilisons ensuite deux autres imbriqué pour les boucles pour définir chaque pixel des axes x et y sur la couleur souhaitée, puis nous sortons des trois boucles for (ouf) et écrivons les modifications à l’écran. Donner efficacement à notre écran un nettoyage en profondeur!

Entrez ce code dans l’éditeur.

def cleaner():

   colours = (inkyphat.RED, inkyphat.BLACK, inkyphat.WHITE)

   for c in enumerate(colours):

       inkyphat.set_border(c)

       for x in range(inkyphat.WIDTH):

           for y in range(inkyphat.HEIGHT):

               inkyphat.putpixel((x, y), c)

   inkyphat.show()

Alors, passons maintenant à l’écriture du code qui exécutera notre badge de conférence animé. Pour commencer, nous utilisons une boucle infinie qui s’appelle tandis que Vrai en Python. Tout ce qui se trouve à l’intérieur de la boucle sera indenté et fonctionnera tant que le Pi sera alimenté. Entrez ce code dans l’éditeur.

while True:

Tout d’abord, dans notre boucle, nous appelons la fonction image pour afficher un image, dans ce cas l’image que nous passons en paramètre est le logo Raspberryme, spécialement édité dans GIMP (un éditeur d’image alternatif à Photoshop), de sorte que l’image n’a que trois couleurs: blanc, rouge, noir pour correspondre à celles de Inkyphat. L’image Raspberryme est disponible via le téléchargement de ce projet, voir le lien dans la section liste des équipements et pour en savoir plus sur la création d’images à utiliser avec Inkyphat, Pimoroni a un excellent guide dans la section d’apprentissage de leur site Web https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-inky-phat. En continuant, nous effaçons l’écran avant d’appeler le texte function, avec mon pseudo Twitter passé en paramètre, et la couleur du texte. Ensuite nous sommeil, provoquant un retard dans le code, pendant cinq secondes.

Entrez ce code dans l’éditeur.

   image("raspberryme-edit.png")

   inkyphat.clear()

   text("@biglesp",inkyphat.BLACK)

   sleep(5)

Toujours à l’intérieur de la boucle et nous en sommes à la dernière section du code Python, et nous commençons par effacer le texte à l’écran, avant d’appeler le texte fonction à nouveau, cette fois pour afficher mon adresse de blog en texte noir. Le code se met ensuite en veille pendant cinq secondes supplémentaires, avant que le nettoyeur est appelée pour nettoyer l’écran en profondeur. Le code attend ensuite cinq secondes avant que la boucle se répète.

Entrez ce code dans l’éditeur.

   inkyphat.clear()

   text("http://bigl.es", inkyphat.BLACK)

   sleep(5)

   cleaner()

   sleep(5)

Une fois le code terminé, essayons-le. Enregistrez votre travail, puis cliquez sur Exécuter >> Exécuter le module cela exécutera le code en Python 3 et nous devrions maintenant voir l’écran Inkyphat prendre vie et commencer à afficher le contenu.

Automatiser le badge

Maintenant que nous avons un badge de conférence animé, nous devons l’automatiser car le fait de transporter un clavier, une souris, un écran et une alimentation autour d’une conférence causera des maux de dos!

Nous avons déjà franchi la première étape pour automatiser le projet, notre toute première ligne de Python indiquait au code où trouver l’interpréteur Python, nous devons donc maintenant rendre le code exécutable. Fermez l’éditeur Python 3 et ouvrez un nouveau terminal qui par défaut s’ouvrira sur le / home / pi / répertoire dans lequel notre code est enregistré.

Pour rendre notre fichier exécutable, nous devons modifier ses autorisations afin qu’il puisse être utilisé de cette manière. La commande pour cela est chmod et pour rendre notre fichier exécutable, tapez ce qui suit dans le terminal et appuyez sur Entrée.

sudo chmod +x conf_badge.py

Maintenant, testons-le, dans le même terminal, tapez ce qui suit et appuyez sur Entrée.

./conf_badge.py

Votre badge devrait prendre vie et commencer à afficher du texte.

blank

Alors maintenant, la dernière étape pour le rendre vraiment automatique, nous allons faire exécuter le code lorsque le Pi démarre, et pour ce faire, nous ajouterons le script à CRON un système qui exécute des scripts à des heures / intervalles / événements définis. Pour éditer le fichier, nous devons taper ce qui suit dans le terminal.

crontab -e

Si c’est la première fois que vous utilisez crontab, il vous sera demandé quel éditeur souhaitez-vous utiliser. Pour ce projet, nous avons utilisé nano donc vous devriez aussi.

Une fois dans l’éditeur, nous devons aller au bas du fichier et créer une nouvelle ligne. Et, sur cette ligne, nous demanderons au Pi d’exécuter notre code lorsque le Pi sera redémarré.

Tapez ce qui suit dans l’éditeur.

@reboot /home/pi/conf_badge.py

Maintenant, nous devons enregistrer le fichier en appuyant sur CTRL + O puis appuyez Entrer puis pour quitter l’éditeur appuyez sur CTRL + X

De retour au terminal, nous devons redémarrer notre Pi pour tester que le code fonctionne. Un moyen rapide de le faire est de taper.

sudo reboot

Maintenant, émerveillez-vous alors que votre Pi Zero W prend vie, affichant la séquence d’images et de texte que vous avez choisie pour que tous les participants à la conférence puissent s’émerveiller! Oh et une fois entièrement testé, c’est le moment idéal pour le mettre dans le boîtier en acrylique découpé au laser pour garder l’écran en sécurité!

blank

Thomas

Thomas

Fan de Raspberry Pi de la première heure, je suis l'évolution de ces micro-pc depuis maintenant 5 ans. En plus de l'actualité je propose de nombreux tutoriels pour vous aider à exploiter pleinement votre nano-ordinateur côté domotique ou retro-gaming.