Table des matières:

Le Holi-Tie : 8 étapes (avec photos)
Le Holi-Tie : 8 étapes (avec photos)

Vidéo: Le Holi-Tie : 8 étapes (avec photos)

Vidéo: Le Holi-Tie : 8 étapes (avec photos)
Vidéo: Моя работа наблюдать за лесом и здесь происходит что-то странное 2024, Juillet
Anonim
Image
Image

Par gwfongMonkey PatchingSuivez plus par l'auteur:

Rampe éclairante pour chien
Rampe éclairante pour chien
Sculpture Coeur en Acier et Verre Fusion
Sculpture Coeur en Acier et Verre Fusion
Sculpture Coeur en Acier et Verre Fusion
Sculpture Coeur en Acier et Verre Fusion
Fil de cuivre et papillon en verre fondu
Fil de cuivre et papillon en verre fondu
Fil de cuivre et papillon en verre fondu
Fil de cuivre et papillon en verre fondu

À propos de: Juste un gars qui cherche à faire des choses cool En savoir plus sur gwfong »

Voici la Holi-Tie, une cravate festive conçue pour être portée pendant les vacances. Librement basé sur l'Ampli-Tie de Becky Stern qui utilise une carte Flora, le Holi-Tie utilise un microcontrôleur Circuit Python Express (CPX) pour piloter les animations NeoPixel et la musique. Un bouton permet de basculer entre 2 animations NeoPixel différentes. Les pavés tactiles capacitifs modifient les couleurs NeoPixel et les vitesses d'animation. L'autre bouton bascule entre les animations LED et la musique. Le microphone embarqué est utilisé pour mesurer le bruit ambiant pour l'animation du VU-mètre. Et le haut-parleur CPX émet des morceaux de puces de vacances.

Tout est codé à l'aide du langage de programmation Python exécuté sur le système CircuitPython. Il est alimenté par une batterie LiPo de 3,7 V, 500 mAh qui a été modifiée pour avoir un interrupteur marche/arrêt.

Il y a deux clips vidéo qui montrent le Holi-Tie:

  • Holi-Tie terminé
  • À l'intérieur de la Holi-Tie

Étape 1: Pièces et outils

les pièces

  • Circuit Aire de Jeux Express
  • 15x Flora Neopixels
  • Fil magnétique
  • Bande auto-agrippante adhésive
  • Batterie lipo 500mAH avec connecteur JST
  • Cravate en sucre d'orge
  • Mini interrupteur à glissière, SPDT
  • Gaine thermorétractable

Lors de l'approvisionnement des pièces, il serait sage d'acheter des extras. J'avais un total de 20 NeoPixels, dont l'un était cassé depuis le début et l'autre que j'ai ruiné. La cravate Candy Cane était si bon marché que j'en ai acheté une deuxième juste au cas où je gâcherais la première.

Outils

  • Pistolet à colle chaude
  • Poste de soudure
  • Pinces coupantes
  • Petit couteau
  • Multimètre
  • Ordinateur
  • Briquet ou pistolet thermique
  • Fil et aiguille

Étape 2: préparer la cravate

Préparer la cravate
Préparer la cravate
Préparer la cravate
Préparer la cravate
Préparer la cravate
Préparer la cravate

L'objectif principal est d'accéder au noyau de l'attache interne et de délimiter des lignes indiquant où les LED doivent être positionnées.

Étape 1: Attachez la cravate en position

Il sera difficile de nouer la cravate lorsque l'électronique est en place. Alors attachez la cravate pour qu'elle soit belle et que le nœud soit assez ferme et ne se défait pas. Tirez ensuite délicatement sur le petit bout de l'attache pour ouvrir le trou et faire passer l'attache par-dessus la tête. C'est la position sur laquelle la cravate sera travaillée.

Il existe toutes sortes de nœuds de cravate différents. Je ne connais que celui que j'ai appris enfant, le Windsor. Peu importe le nœud utilisé.

Étape 2: Ouvrez le dos de la cravate

Déchirez les coutures d'un côté de la boucle de cravate et du logo, puis au centre de la cravate. Soyez prudent car il doit être recousu à la fin.

Étape 3: Tracez des lignes où les LED doivent être placées

Pour que les LED apparaissent dans les sections à rayures blanches de la cravate, il est plus facile de trouver la ligne médiane de chaque section à rayures blanches à l'arrière du noyau de la cravate, puis de la mapper à l'avant du noyau de la cravate. Vérifiez et revérifiez que la ligne médiane est 1) au centre et 2) parallèle à la rayure. Un réglage fin des positions des LED sera possible si elles sont un peu éteintes. Mais il est préférable de se rapprocher de l'exactitude maintenant plutôt que plus tard.

Testez le centrage des lignes en plaçant des LED sur les lignes et en posant le tissu à rayures sur le dessus. Ajustez si nécessaire.

Étape 3: Fixation des NeoPixels

Fixation des NeoPixels
Fixation des NeoPixels
Fixation des NeoPixels
Fixation des NeoPixels
Fixation des NeoPixels
Fixation des NeoPixels
Fixation des NeoPixels
Fixation des NeoPixels

Fondamentalement, nous fabriquons notre propre bande LED. Nous montons simplement les LED sur le noyau de liaison, puis les connectons les unes aux autres.

Étape 1: Collez les NeoPixels au noyau de la cravate

Placez une noisette de colle chaude au dos du NeoPixel, placez-le sur les lignes médianes. Pour les sections avec 3 NeoPixels, alignez verticalement le NeoPixel central et collez-les en premier. Cela facilitera le positionnement des NeoPixel gauche et droit par rapport au centre d'autant plus que la largeur de l'attache augmente de haut en bas.

Assurez-vous d'orienter tous les NeoPixels dans la même direction, en partant du bas à gauche vers le haut à droite. Si ce n'est pas correct, la bande ne fonctionnera pas.

Une note sur la colle chaude. Il suffira de terminer le projet. Quant à savoir si cela durera des années à venir, il suffit de voir.

Étape 3: soudez les NeoPixels les uns aux autres

Parce que j'ai décidé de souder les NeoPixels ensemble au lieu d'utiliser du fil conducteur, le trou dans les pastilles NeoPixel joue contre nous un peu. Il suffit de trouver un bon endroit sur le pad pour souder le fil. N'essayez pas de combler le trou avec de la soudure, mais si cela se produit, tout ira bien.

Le fil magnétique a une fine couche d'isolant autour d'un noyau de cuivre. Avec un couteau, grattez l'isolant juste aux extrémités où ils seront soudés. Il est préférable de racler toute la circonférence du fil.

Étape 4: Tester la connectivité

Utilisez un multimètre pour tester la connectivité de:

  1. Connexions positives. Il devrait y avoir une connectivité de la pointe à la queue. Assurez-vous de tester la connectivité sur les électrodes et non sur le fil.
  2. Connexions au sol. Effectuez le même test mais avec les plots de masse.
  3. Chaque ligne de données. D'un bloc de données à l'autre, vérifiez qu'il existe une connectivité.

Étape 4: Fixation du Circuit Playground Express

Fixation du Circuit Playground Express
Fixation du Circuit Playground Express

Le Circuit Playground Express (CPX) est le cœur du système. Adafruit propose de nombreux tutoriels pour ce contrôleur. Plus tard dans cette instructable, je mettrai en évidence quelques-unes des fonctionnalités MCU.

Étape 1: Soudez le CPX à la pointe inférieure NeoPixel

Coupez les longueurs appropriées du fil magnétique pour l'alimentation, la terre et les données. Poussez-les à travers le tissu de base de la cravate afin qu'ils touchent les blocs d'alimentation, de terre et de données NeoPixel. Soudez-les en vous assurant que les fils existants sur les pastilles offrent toujours une bonne connectivité.

Retournez ensuite le noyau d'attache et placez le CPX dans la position souhaitée. Faites passer le fil d'alimentation au plot VOUT, le fil de terre à n'importe quel plot de masse et le fil de données à n'importe quel plot d'E/S autre que A0. Le code que j'ai écrit utilise A3.

Testez la connectivité.

Étape 2: attacher le CPX

À l'aide d'un fil et d'une aiguille, choisissez quatre coussinets équidistants et cousez-les sur le noyau de la cravate.

Étape 5: Mise sous tension du CPX

Alimentation du CPX
Alimentation du CPX
Alimentation du CPX
Alimentation du CPX
Alimentation du CPX
Alimentation du CPX

Le CPX n'a pas d'interrupteur marche/arrêt. Cela signifie qu'au moment où la batterie est branchée, la cravate s'allumera. Cela signifie également que la seule façon de l'éteindre est de débrancher la batterie, ce qui est un problème majeur. Une solution simple consiste à mettre un interrupteur sur la batterie.

Étape 1: Coupez la 3e broche de l'interrupteur

L'une des broches non centrales n'est pas nécessaire. Coupez-le au ras du corps de l'interrupteur.

Étape 2: souder le commutateur en ligne avec un câble de batterie

Coupez le fil de terre de la batterie quelque part au milieu. Faites glisser un morceau de gaine thermorétractable sur chacun des fils de terre. Soudez un fil de terre à l'une des broches et l'autre fil de terre à l'autre broche. Assurez-vous qu'ils ne se touchent pas ou que la soudure touche le corps métallique.

Vérifiez qu'ils ne sont pas connectés à l'aide d'un multimètre. Faites glisser le tube sur les connexions soudées et rétrécissez-le. Ajoutez un peu de ruban isolant à toute pièce susceptible de tomber en panne en raison de la fatigue de flexion.

Étape 3: Vérifiez que la batterie fonctionne

À ce stade, la batterie peut être branchée sur le CPX. Si tout s'est bien passé, le commutateur devrait pouvoir allumer et éteindre le CPX.

Étape 4: Montez la batterie

Mettez un peu de ruban adhésif auto-agrippant à l'arrière de la batterie et sur le noyau de l'attache. Cela le maintiendra en place si la cravate n'est pas trop malmenée.

Étape 6: Configuration du Circuit Playground Express

Je n'entrerai pas dans les détails sur la configuration du CPX. Adafruit fait cela et puis certains. Je vais donner quelques conseils pour les problèmes que j'ai rencontrés assez souvent.

CPX se bloque

Probablement en raison de problèmes de mémoire d'exécution, le CPX se figeait assez souvent. La solution rapide consiste à effacer et à re-flasher. Recherchez "Old Way" dans ces instructions. Fondamentalement, il s'agit de quelques pressions sur les boutons, d'un glisser-déposer pour effacer, puis d'un glisser-déposer pour re-flasher.

Attention: cela efface tout. Tout le code sur le CPX sera perdu.

L'enregistrement des modifications dans CPX peut entraîner des problèmes

J'ai découvert que parfois, après avoir enregistré un fichier sur le CPX, le runtime python était dans un mauvais état. Le correctif consistait à redémarrer l'environnement d'exécution python en appuyant sur le bouton de réinitialisation. Appuyez dessus une seule fois. Appuyez deux fois dessus pour lancer le processus de re-flash.

Enregistrer directement sur CPX est risqué

En raison de la possibilité que le CPX doive être re-flashé, on court le risque de perdre tout son code. Après avoir perdu mon code deux fois, j'ai proposé un workflow simple. Je voudrais enregistrer mon code sur le disque dur local. Lorsqu'il était prêt à être testé sur le CPX, je le copiais simplement en exécutant un simple script de déploiement.

Étape 7: Codage du Circuit Playground Express

À ce stade, le CPX et les NeoPixels sont à peu près complets. Aucun autre travail mécanique ou électrique ne doit être fait avec eux. Le reste n'est que logiciel.

Le code est disponible sur mon compte github. Le code python de base devrait fonctionner sans aucun changement pour tous les systèmes d'exploitation. N'installez pas les bibliothèques externes Adafruit CircuitPython. Ils ne sont pas utilisés.

Voici un résumé de haut niveau de ce qui se passe dans le code.

Quelle entrée fait quoi ?

  • Bouton A: fait défiler les animations LED
  • Bouton B: fait défiler les chansons
  • Pavé tactile capacitif A1: modifie les couleurs des animations LED
  • Pavé tactile capacitif A6: Modifie la vitesse des animations LED

3 animations existent mais seulement 2 sont en vigueur

code.py

importer des pixels désactivés

#import vumeter import escaliers import twinkle … led_animations = [pixelsoff. PixelsOff(pixels), # vumeter. VuMeter(pixels, 100, 400) escaliers. Stairs(pixels), twinkle. Twinkle(pixels)]

J'ai porté le code de style du vumètre Ampli-Tie. Il utilise le microphone CPX pour capter le son et éclairer les NeoPixels en fonction de l'amplitude du son. Cependant, je voulais plus d'animations. En raison des contraintes de mémoire d'exécution, j'ai dû choisir les animations que je voulais. Ainsi, par défaut, les deux autres, Stairs et Twinkle, s'exécuteront sans avoir à modifier le code. Pour exécuter l'animation du VU-mètre, une ou les deux autres animations doivent être commentées et le VU-mètre décommenté.

Music Manager et encodage hors ligne

frosty_the_snowman.py

importer musical_notes en tant que mn

# Frosty le bonhomme de neige # Chanson de Walter E. Rollins = [(mn. G4, mn. HLF), (mn. E4, mn. DTQ), (mn. F4, mn. ETH), (mn. G4, mn. QTR), (mn. C5, mn. HLF), …

convert_to_binary.py

chansons = [(jingle_bells.song, "jingle_bells.bin"), (frosty_the_snowman.song, "frosty_the_snowman.bin")] pour la chanson dans les chansons: data=song[0] file=song[1] avec open(file, "wb") comme fichier_bin: pour l'entrée dans les données: print("writing: " + str(entry)) note=entry[0] dur=entry[1] bin_file.write(struct.pack("<HH", note, dur))

Je voulais de la musique de vacances. Le CPX prend en charge à la fois le WAV et les tonalités. Les fichiers WAV se sont avérés trop volumineux en termes de taille de fichier et de mémoire d'exécution. L'utilisation de structures de données python pour conserver les tonalités et leur durée s'est également avérée utiliser trop de mémoire d'exécution. J'ai donc modifié le code Holi-Tie pour lire un fichier binaire compressé qui ne contenait que les données de chanson nécessaires dans un format binaire compressé. J'ai écrit un script qui lit une chanson contenue dans une structure de données python et l'écrit au format binaire. Avoir la chanson encodée sous forme de données binaires dans un fichier rend la chanson à la fois petite et dynamique. Une fois la chanson terminée, la mémoire est libérée.

Il est trivial d'ajouter plus de chansons. Pour plus de détails, consultez le fichier README.md dans les chansons.

Le bouton A anime NeoPixels, B joue de la musique, mais pas simultanément

code.py

def button_a_pressed():

if music.is_playing(): # Arrêter la musique si jouer music.stop() next_led_animation() def button_b_pressed(): if active_led_animation != 0: # Exécuter l'animation no-op next_led_animation(0) if music.is_playing(): # Basculer musique activée ou désactivée music.stop() sinon: music.play()

Même avec le système de gestion de musique plus efficace en mémoire, je n'étais pas en mesure de conserver 2 animations dans la mémoire d'exécution, tout en jouant l'une d'entre elles et en jouant une chanson en même temps. Parce que j'ai déjà choisi de ne pas avoir de VU-mètre dans la mémoire d'exécution, je ne voulais pas réduire le nombre d'animations à seulement 1. J'ai donc écrit le code pour que soit l'animation soit lue, soit la musique joue mais pas les deux. Une autre option consistait à réduire le nombre de NeoPixels, mais cela perdrait une partie de la fraîcheur de l'animation.

Funky du code Python

Bien que je sois un développeur de logiciels chevronné, je n'avais jamais écrit Python. Après avoir pris le coup et commencé à appliquer de bonnes pratiques de codage telles que l'encapsulation et la modularisation, j'ai rapidement découvert que j'utilisais trop de mémoire d'exécution. Il y a donc pas mal de code non DRY. J'ai également dû utiliser certaines techniques MicroPython telles que const() pour réduire davantage les problèmes de mémoire d'exécution.

Modules compilés

compiler

#!/bin/bash

compiler=~/development/circuitpython/mpy-cross-3.x-windows.exe chansons cd python3./convert_to_binary.py cd.. pour f dans *.py; do if

Au début du projet, j'ai suivi les conseils d'Adafruit et stocké toutes les bibliothèques Adafruit CircuitPython sur flash. Ceci, cependant, laissait peu de place à mon projet. Pour pouvoir obtenir mon code sur le CPX, j'ai commencé à compiler les modules et à les placer sur le MCU. Il s'avère que le Holi-Tie n'a besoin d'aucune des bibliothèques externes. Les bibliothèques existantes dans l'UF2 étaient suffisantes pour ce projet. L'exécution de fichiers *.mpy est un peu plus efficace, j'ai donc conservé le processus de déploiement des modules compilés.

Comme le montre le script de compilation ci-dessus, je travaille sur une machine Windows mais en utilisant des utilitaires Unix tels que bash et python3. J'utilise Cygwin pour accomplir cela. Ce script peut facilement être traduit en batch DOS et en une implémentation Python3 native de Windows.

Étape 8: boutonner la cravate

Boutonner la cravate
Boutonner la cravate
Boutonner la cravate
Boutonner la cravate

La dernière étape consiste à remettre le noyau de la cravate en place, à remonter la cravate et à la recoudre. Assurez-vous de pouvoir rendre le CPX accessible. Vous en aurez besoin pour remplacer la batterie ou apporter des modifications au code.

Conseillé: