Table des matières:

RPi 3 Tribord / Générateur de particules : 6 étapes (avec photos)
RPi 3 Tribord / Générateur de particules : 6 étapes (avec photos)

Vidéo: RPi 3 Tribord / Générateur de particules : 6 étapes (avec photos)

Vidéo: RPi 3 Tribord / Générateur de particules : 6 étapes (avec photos)
Vidéo: NOMADS 2 - Dark Land (Complete Audiobook -English) 2024, Juillet
Anonim
Image
Image
Assembler la carte LED
Assembler la carte LED

Vous vous ennuyez avec votre Raspberry Pi ? Êtes-vous prêt à commander les forces élémentaires de l'univers, en invoquant et en rejetant des photons à volonté ? Voulez-vous juste quelque chose d'intéressant à accrocher dans votre salon, ou un projet fantaisiste à publier sur facebook pour montrer à Denise que vous vous débrouillez très bien ces jours-ci, merci beaucoup ? Êtes-vous pris au piège dans une simulation informatique et passez-vous des heures jusqu'à ce que vous soyez libéré ou supprimé ? Si tout ou partie de ces éléments vous décrivent, alors [voix de l'annonceur] Bienvenue !

Ce tutoriel vous montrera comment assembler et configurer un écran de générateur de particules à l'aide d'un Raspberry Pi 3 et de certains panneaux matriciels RVB. Cela devrait vous prendre entre une et deux heures, et le produit fini mesurera environ 30 "x8" (sans compter le Pi) et pourra être fixé au mur. Il fait une décoration assez cool pour un salon, un bureau, une salle de jeux ou partout où vous voulez le mettre.

Avant de commencer, voici ce dont vous aurez besoin et quels sont les coûts approximatifs:

  • Rpi 3 + Carte SD + Boîtier + Alimentation: 70 $ (chez Canakit, mais vous pouvez probablement obtenir les pièces moins chères si vous les achetez séparément.)
  • 4x 32x32 RGB LED Matrix (de préférence p6 indoor avec 1/16 scan): 80 $ à 100 $ expédiés sur Alibaba ou Aliexpress; 160 $ sur Adafruit ou Sparkfun.
  • Casquette Adafruit RGB Matrix: 25 $
  • Alimentation 5V 4A: 15 $
  • Clips imprimés en 3D: 1 $ (ceux-ci servent à connecter les panneaux et à les accrocher au mur; si vous n'avez pas accès à une imprimante 3D, vous pouvez utiliser une fourrure pour les maintenir ensemble et des supports de la quincaillerie pour accrochez-le au mur. J'ai essayé de trouver les fichiers de conception ou les fichiers.stls pour ceux-ci, mais ils semblent être passés de la terre. Les clips sont assez faciles à modéliser, cependant.)
  • 14x boulons M4x10: 5 $
  • Quatre câbles IDC 4x8 et trois câbles d'alimentation pour les matrices RVB (je ne sais pas comment ils s'appellent !). Ceux-ci auraient dû être inclus avec vos panneaux LED.
  • Total: Environ 200 $, à donner ou à prendre.

Le projet ne nécessite pas de soudure ou de connaissances spécifiques en programmation; cela suppose que vous savez comment écrire une image sur une carte microSD. Si vous ne savez pas comment procéder, la fondation Raspberry Pi propose un bon tutoriel ici.

Cela suppose également que vous ayez une connaissance de base de la façon de faire les choses à partir de la ligne de commande sous Linux, et la procédure pas à pas du code suppose que vous connaissez les bases de Python (mais - vous n'avez pas besoin de suivre la procédure pas à pas pour pouvoir construire et exécutez le générateur de particules.) Si vous êtes bloqué sur l'une des étapes, n'hésitez pas à poser une question ou à poster dans /r/raspberry_pi (qui est aussi, je suppose, le public principal pour cette instructable)

Étape 1: Assembler la carte LED

Assembler la carte LED
Assembler la carte LED

Tout d'abord, vous allez assembler les panneaux LED 32x32 individuels en un seul grand panneau 128x32. Vous devrez regarder vos tableaux et trouver les petites flèches qui indiquent l'ordre de connexion; sur le mien, ils sont juste à côté des connecteurs IDC HUB75/2x8. Assurez-vous que les flèches pointent à partir de l'endroit où le Rpi se connectera (vers la droite sur la photo ci-dessus) sur toute la longueur de la planche.

Vous aurez également besoin de connecter les câbles d'alimentation. La plupart de ces câbles ont deux connecteurs femelles qui se fixent aux cartes et un ensemble de bornes à fourche qui se fixent à la source d'alimentation. Les panneaux avec lesquels je travaille ont les indicateurs pour 5V et GND presque entièrement cachés sous les connecteurs eux-mêmes, mais les câbles ne se connectent que dans un sens. Vous voudrez vous assurer que vous connectez tous les 5V ensemble et tous les GND ensemble, car si vous les alimentez à l'envers, vous allez presque certainement les faire frire.

Parce que les câbles d'alimentation inclus avec mes cartes étaient si courts, j'ai dû en rallonger un en insérant les broches de la cosse dans le connecteur d'une autre (c'est assez simple - vous devrez peut-être plier légèrement les cosses vers l'intérieur, mais je ' J'ai inclus une photo au cas où). Je me suis retrouvé avec deux jeux de bornes à fourche et un connecteur IDC 2x8 à droite de ma carte LED maintenant allongée.

Vous remarquerez également que j'ai deux boulons qui ne sont attachés à rien à chaque extrémité de la planche; ceux-ci seront sur le dessus une fois que le tout sera retourné et seront utilisés pour le fixer au mur.

Ainsi, une fois que vous avez connecté tous les panneaux avec des clips, des câbles IDC 2x8 et des câbles d'alimentation, vous êtes prêt à passer à l'étape suivante !

Étape 2: préparer le Raspberry Pi

Ensuite, vous allez mettre la carte LED de côté (pour l'instant) et préparer le Pi 3 à l'exécuter. Nous utiliserons Raspbian Stretch Lite et la bibliothèque de matrices RGB de hzeller (plutôt que la bibliothèque de matrices d'Adafruit, qui est plus ancienne et non maintenue.)

Tout d'abord, vous voudrez écrire l'image Raspbian Lite sur une carte SD; une fois que vous avez fait cela, connectez un moniteur et un clavier au pi et démarrez-le. (Vous pouvez également le faire sans tête, via ssh ou un connecteur série, mais si c'est comme ça que vous allez, vous n'avez probablement pas besoin de moi pour vous dire comment le faire.) Vous aurez besoin d'une connexion Internet pour cela; Si vous avez le wifi, connectez le Pi à votre réseau sans fil en éditant /etc/wpa_supplicant/wpa_supplicant.conf et en exécutant wpa_cli -i wlan0 reconfigure. (Si vous ne l'avez jamais fait, vous pouvez obtenir des instructions ici).

Une fois que vous êtes connecté à Internet, nous mettrons à jour les paramètres du référentiel dpkg et téléchargerons les bibliothèques dont nous avons besoin en exécutant les commandes suivantes:

sudo apt-get mise à jour

sudo apt-get installer git python-dev python-pil

git clone

Maintenant, nous devons compiler et installer le code de la matrice. Vous irez donc dans le dossier contenant la bibliothèque:

cd rpi-rgb-led-matrice

et compilez-le (cela peut prendre une minute):

faire && faire construire-python

et installez les liaisons python:

sudo make install-python

Si vous obtenez des erreurs lors de la compilation du code de la bibliothèque, revenez en arrière et assurez-vous que vous avez correctement installé python-dev et python-pil ! Les liaisons python ne seront pas compilées si ces deux packages ne sont pas installés.

Vous devrez également désactiver la sortie audio de votre Pi (le son intégré interfère avec le code de la matrice) en éditant /boot/config.txt. Recherchez la ligne qui dit dtparam=audio=on et remplacez-la par dtparam=audio=off.

Si tout s'est bien compilé (vous recevrez quelques avertissements concernant les prototypes Wstrict), votre pi devrait être prêt à exécuter la carte matricielle. Allez-y et éteignez-le (arrêt sudo maintenant), débranchez-le et nous connecterons la carte lumineuse au pi à l'étape suivante.

Étape 3: Connectez Pi + Matrix Hat + Carte LED

Connectez Pi + Matrix Hat + Carte LED
Connectez Pi + Matrix Hat + Carte LED

Donc, maintenant que votre Pi est éteint et débranché, connectons le chapeau matriciel au pi et la carte LED au chapeau matriciel. Si votre Pi n'est pas déjà dans son étui, c'est le bon moment pour l'y mettre.

Installez le chapeau matriciel en l'alignant avec les broches GPIO du Pi et en le poussant doucement vers le bas avec une force uniforme des deux côtés. Assurez-vous que les broches sont correctement alignées, de sorte que les en-têtes femelles du chapeau couvrent exactement les broches GPIO du pi. Si vous le désalignez, ce n'est pas une catastrophe; il suffit de le retirer doucement et de redresser les broches qui se sont tordues.

Une fois que vous avez mis le chapeau, placez le Pi à droite de la carte LED assemblée (vérifiez à nouveau les connexions d'alimentation et assurez-vous que les flèches pointent du Pi vers le bas de la carte) et connectez l'IDC câble au chapeau de matrice.

Ensuite, vous voudrez connecter les bornes à fourche pour l'alimentation dans le bornier du chapeau matriciel. Vous avez deux connecteurs à fourche de chaque côté, mais ils devraient tous les deux s'insérer correctement. Desserrez d'abord les vis et - Cela devrait aller sans dire - assurez-vous de mettre les bornes 5V du côté étiqueté + (elles doivent être rouges, mais - encore une fois - vérifiez vos connecteurs et ne supposez pas qu'ils ont été fabriqués correctement) et les bornes GND (celles-ci doivent être noires) sur le côté étiqueté -. Une fois qu'ils sont là, serrez les vis sur le dessus du bornier, et vous devriez avoir quelque chose qui ressemble à l'image d'en-tête pour cette étape.

Maintenant - vous avez peut-être remarqué que cette configuration particulière laisse la moitié de la cosse de chaque côté exposée, flottant à quelques millimètres au-dessus du chapeau de matrice (et pas beaucoup plus loin l'une de l'autre.) ET - les cosses seront très bientôt transportant à la fois plusieurs volts et plusieurs ampères de puissance brute. Est-ce vraiment (je vous entends demander de l'autre côté de l'écran) la bonne façon de le faire ? Est-ce, (vous vous penchez plus près et murmurez), une bonne idée ?

Et la réponse est (je réponds en haussant les épaules) - non, ce n'est pas le cas. La bonne façon de procéder serait de dénuder les cosses à fourche des câbles d'alimentation et de les sertir à nouveau dans le connecteur approprié pour ce bornier (ou de les laisser comme des fils nus et de les connecter sans connecteur dans le bloc). À défaut, vous pouvez placer un tube thermorétractable autour du côté exposé du connecteur à fourche ou simplement l'envelopper dans du ruban électrique. Mais le monde est déchu et l'homme est paresseux et vaniteux, alors je ne l'ai pas fait.

Mais - emballés ou déballés - les cosses à fourche sont connectées au bornier et nous sommes prêts à passer à l'étape suivante.

Étape 4: Testez la matrice RVB

Maintenant que votre Pi est connecté à la carte lumineuse, retournez la carte et rallumez le Pi. Vous pouvez alimenter le chapeau matriciel une fois le Pi branché; si vous alimentez le chapeau avant le Pi, cependant, le Pi essaiera de démarrer avec pas assez de courant et se plaindra amèrement (et peut vous donner une panique du noyau et ne pas démarrer du tout.)

Si vous rencontrez des difficultés pour démarrer le Pi avec le chapeau matriciel, assurez-vous d'utiliser une alimentation suffisamment puissante pour le Pi (2A+ devrait être bon) et essayez de brancher à la fois l'alimentation pour le chapeau et pour le Pii dans la même multiprise ou la même rallonge, et en les mettant sous tension ensemble.

Une fois que le Pi a démarré, nous sommes prêts à tester les matrices. Accédez à l'emplacement des exemples de liaison python (cd /rpi-rgb-led-matrix/bindings/python/samples) et essayez le générateur de blocs rotatifs avec la commande suivante:

sudo./rotating-block-generator.py -m adafruit-hat --led-chain 4

Vous devez l'exécuter en tant que sudo car la bibliothèque de matrices a besoin d'un accès de bas niveau au matériel lors de l'initialisation. Le -m spécifie la façon dont les panneaux sont connectés au pi (dans ce cas, un chapeau adafruit) et le --led-chain spécifie - vous l'avez deviné - combien de panneaux nous avons enchaînés ensemble. Les lignes et les colonnes par panneau sont toutes les deux par défaut à 32, donc nous sommes bien là-bas.

Maintenant, une fois que vous avez exécuté le programme, l'une des deux (ou, en fait, l'une des trois) choses va se produire:

  • Rien ne se passe
  • Vous obtenez un joli bloc rotatif au milieu de votre tableau lumineux.
  • Le panneau lumineux fonctionne, euh, je pense, mais ça a l'air… bizarre (la moitié est verte, certaines rangées ne s'allument pas, etc.)

Si rien ne se passe, ou si le panneau a l'air bizarre, appuyez sur ctrl+c pour quitter l'exemple de programme, éteignez le pi et vérifiez toutes vos connexions (câble IDC, alimentation, assurez-vous que les deux alimentations sont branchées, etc.) Assurez-vous également que le chapeau est correctement connecté; si cela ne résout pas le problème, réduisez-le sur un panneau (assurez-vous d'utiliser --led-chain 1 lors du test) et voyez si l'un des panneaux est peut-être défectueux. Si cela ne fonctionne pas, consultez les conseils de dépannage de hzeller. si cela ne fonctionne toujours pas, essayez de poster sur /r/raspberry_pi (ou sur les forums Adafruit, si vous avez obtenu vos panneaux d'Adafruit, ou sur l'échange de piles, etc.)

Si cela fonctionne en quelque sorte mais a toujours l'air bizarre (peut-être comme l'image d'en-tête de cette section) après avoir vérifié les connexions, il est possible que tout soit connecté correctement, que les panneaux fonctionnent correctement, mais que quelque chose d'autre se passe au. Ce qui nous amènera à notre prochaine étape - plus une diversion qu'une étape - sur les taux de multiplexage et de balayage. (Si votre panneau LED fonctionne correctement et que vous n'êtes pas intéressé par le fonctionnement interne de ces panneaux, n'hésitez pas à sauter l'étape suivante.)

Étape 5: Multiplexage et taux de balayage (ou: une diversion momentanée sur la route de la tombe)

Ainsi, l'une des erreurs que j'ai commises lorsque j'ai commandé mon premier jeu de panneaux sur Alibaba est que j'ai eu des panneaux d'extérieur (pourquoi pas, pensais-je - ils sont étanches et plus lumineux !). Et, quand je les ai connectés à mon chapeau matriciel, les choses semblaient… pas bien.

Pour comprendre pourquoi, nous prendrons une minute pour examiner la description de Phil Burgess d'Adafruit sur le fonctionnement de ces panneaux. Vous remarquerez que Burgess souligne que les panneaux n'allument pas toutes leurs LED à la fois - ils allument des ensembles de rangées. La relation entre la hauteur du panneau en pixels et le nombre de lignes qui s'allument à la fois est appelée vitesse de balayage. Ainsi, par exemple - Sur un panneau 32x32 avec balayage 1/16, deux rangées (1 et 17, 2 et 18, 3 et 19, etc.) sont allumées à la fois, tout le long de la carte, puis le contrôleur répète. La plupart des bibliothèques qui pilotent des matrices RVB sont conçues pour des panneaux où la vitesse de balayage est égale à la moitié de la hauteur en pixels - c'est-à-dire qu'elles pilotent deux rangées de LED à la fois.

Les panneaux extérieurs (et certains panneaux intérieurs - assurez-vous de consulter les spécifications avant de commander) ont des taux de balayage qui sont 1/4 de la hauteur en pixels, ce qui signifie qu'ils s'attendent à ce que quatre lignes soient parcourues à la fois. Cela les rend plus brillants (ce qui est bien) mais empêche beaucoup de code standard de fonctionner avec eux (ce qui est mal). En plus de cela, ils ont tendance à avoir les pixels dans le désordre en interne, ce qui nécessite de transformer les valeurs x et y dans un logiciel afin d'adresser les bons pixels. Pourquoi sont-ils fabriqués de cette façon? Je n'ai aucune idée. Savez-vous? Si oui, merci de me le dire. Sinon, cela devra simplement rester un mystère.

Donc, si vous avez un de ces panneaux extérieurs bizarres, vous avez (probablement) de la chance ! hzeller a récemment ajouté la prise en charge des configurations courantes de ces types de panneaux à sa bibliothèque. Vous pouvez en savoir plus sur la page github du projet, mais vous pouvez transmettre --led-multiplexing={0, 1, 2, 3} à l'exemple de code (vous devrez peut-être aussi faire comme si vous aviez un chaîne double de panneaux mi-longs) et cela devrait fonctionner.

Cependant, certains modèles de transformation de pixels ne sont pas pris en charge - et (devinez quoi) mes panneaux en ont un ! Donc, j'ai dû écrire mon propre code de transformation (je dois aussi - pour une raison quelconque - dire à la bibliothèque d'agir comme si j'avais huit panneaux 16x32 enchaînés). qui est la suivante:

def transformPixels(j, k): effJ = j % 32

effK = k % 32

modY = k

modX = j

#modX et modY sont les X et Y modifiés;

#effJ et effK s'assurent que nous transformons dans une matrice 32x32 avant de pousser

si ((effJ) > 15):

modX = modX + 16

si ((effK) > 7):

modY = modY - 8

modX = modX + 16

si ((effK) > 15):

modX = modX - 16

si ((effK) > 23):

modY = modY - 8

modX = modX + 16

#Ensuite, nous les poussons au bon endroit (chaque x+32 déplace un panneau)

si (j > 31):

modX += 32

si (j > 63):

modX += 32

si (j > 95):

modX += 32

retour (modX, modY)

Si vous avez un panneau comme le mien, cela pourrait fonctionner pour cela. Si ce n'est pas le cas, vous devrez écrire le vôtre - alors, vous savez, bonne chance et bon courage.

Étape 6: Le programme Starboard (ou: Back on Track et Ready to Pixel)

Maintenant que vos matrices sont opérationnelles et prêtes à l'emploi, il ne vous reste plus qu'à mettre le programme tribord sur votre Pi et le préparer à partir. Assurez-vous que vous êtes dans le répertoire personnel de l'utilisateur pi (cd /home/pi) et exécutez la commande suivante:

git clone

vous devriez avoir un nouveau dossier, tribord, qui contient trois fichiers: LICENSE.md, README.md et starboard_s16.py. Essayez le programme tribord en l'exécutant via python:

sudo python./starboard_s16.py

et vous devriez obtenir un tas de particules se déplaçant à des vitesses différentes et se désintégrant à des vitesses différentes. Tous les 10 000 ticks environ (vous pouvez aller dans le script python pour éditer/changer cela), il changera de mode (il y en a quatre: RVB, HSV, Rainbow et Greyscale).

Donc, maintenant, il ne reste plus qu'à exécuter le code tribord au démarrage. Nous le ferons en éditant (avec sudo) /etc/rc.local. Ce que vous voulez faire est d'ajouter la ligne suivante juste avant "exit 0" dans le script:

python /home/pi/starboard/starboard_s16.py &

Après cela, redémarrez le pi - une fois qu'il a terminé la séquence de démarrage, le script starboard_s16.py devrait démarrer immédiatement !

Si vous voulez fouiller dans le script, n'hésitez pas à le faire - il est sous licence GNU GPL 3.0. Si le script ne fonctionne pas pour vous, ou si vous rencontrez des problèmes, n'hésitez pas à me le faire savoir ou à soumettre un bogue sur github, et je verrai ce que je peux faire pour le corriger !

La (très) dernière chose que vous voudrez peut-être faire est de configurer SSH sur le pi, afin que vous puissiez l'accéder à distance et l'arrêter en toute sécurité. Vous voudrez /définitivement/modifier votre mot de passe (via la commande passwd), et vous pouvez trouver des instructions pour activer ssh (également à partir de la ligne de commande) ici.

Conseillé: