Table des matières:

Faire clignoter le micrologiciel personnalisé sur une lampe de poche BLF A6 : 5 étapes
Faire clignoter le micrologiciel personnalisé sur une lampe de poche BLF A6 : 5 étapes

Vidéo: Faire clignoter le micrologiciel personnalisé sur une lampe de poche BLF A6 : 5 étapes

Vidéo: Faire clignoter le micrologiciel personnalisé sur une lampe de poche BLF A6 : 5 étapes
Vidéo: Déclencher la lampe torche iPhone en guise de notification 2024, Novembre
Anonim
Clignotement du firmware personnalisé sur une lampe de poche BLF A6
Clignotement du firmware personnalisé sur une lampe de poche BLF A6

J'ai récemment eu un BLF A6. C'est très bien, mais je n'aime aucun des groupes de mode par défaut, j'ai donc modifié le firmware pour utiliser mes luminosités préférées. L'information était difficile à trouver, alors je mets tout ce que j'ai appris ici pour moi et pour les autres.

Fournitures

BLF A6 (cela fonctionnera probablement avec d'autres lampes de poche basées sur ATtiny)

Brucelles / pinces fines / petits ciseaux / quelque chose pour défaire la bague de retenue de la carte pilote

Ordinateur avec lequel flasher, exécutant de préférence une distribution Linux

Programmeur USB ASP / Arduino / quelque chose qui peut faire la programmation AVR (apparemment le programmeur USB ASP est recommandé, mais j'ai utilisé un Arduino)

Clip SOIC8 (il est possible de s'en passer, mais c'est très fastidieux et pas du tout recommandé)

(facultatif) Planche à pain et/ou fils de raccordement pour faciliter la connexion

Étape 1: Téléchargez le micrologiciel

Le firmware de la BLF A6 (et de nombreuses autres lampes de poche) est disponible ici. L'auteur en parle ici. Vous pouvez le télécharger en exécutant:

branche bzr lp:~toykeeper/flashlight-firmware/blf-a6-final

dans une borne. (vous devrez peut-être installer bzr)

Remarque: dans une précédente édition de ce Instructable, j'ai utilisé à la place « bzr branch lp:flashlight-firmware ». J'ai depuis appris que cela télécharge une version obsolète avec des valeurs incorrectes pour le condensateur de temps d'arrêt, ce qui rend les pressions sur le bouton inconfortablement longues. (merci à ce fil sur Reddit)

Le dossier que vous voulez est blf-a6-final/ToyKeeper/blf-a6. Il contient un fichier.hex compilé prêt à flasher (blf-a6.hex) et le code C que vous pouvez modifier. (blf-a6.c) Si vous souhaitez flasher le firmware d'origine, vous pouvez ignorer l'étape suivante et utiliser simplement blf-a6.hex. Certains des autres micrologiciels de ce référentiel fonctionneront probablement aussi.

Étape 2: modifier le micrologiciel

Ouvrez blf-a6.c dans votre éditeur de texte ou IDE préféré. Les lignes les plus intéressantes sont les groupes de modes entre les lignes 116 et 131. Ils ressemblent à ceci:

// Mode group 1#define NUM_MODES1 7 // Niveaux PWM pour le grand circuit (FET ou Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // Niveaux PWM pour le petit circuit (1x7135) # define MODES1x1 2, 20, 110, 255, 255, 255, 0 // Mon échantillon: 6=0..6, 7=2.11, 8=8..21(15..32) // Krono sample: 6=5..21, 7=17..32, 8=33..96(50..78) // Homme2: 2=21, 3=39, 4=47, … 6?=68 // Vitesse PWM pour chaque mode #define MODES_PWM1 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE // Groupe de modes 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 RAPIDE, RAPIDE, RAPIDE, PHASE

Pour chaque groupe, MODESN est la valeur PWM utilisée pour le FET et MODES1 est la valeur PWM utilisée pour le 7135 dans chaque mode. Le nombre est compris entre 0 et 255, et correspond à la luminosité de la lumière. Plus d'informations ici. (faites défiler jusqu'à "Régulation de mode:") Je ne sais pas exactement quelle est la vitesse PWM. Si quelqu'un sait, dites-le moi dans les commentaires. Le FET peut produire plus de lumière que le 7135, mais le 7135 maintient le niveau de lumière plus ou moins le même pendant toute la durée de vie de la batterie, tandis que le FET s'assombrit lorsqu'il est à court de batterie.

Ici, vous pouvez ajuster les valeurs PWM pour produire des modes à votre convenance. Vous pouvez probablement aussi changer le nombre de modes, mais je ne l'ai pas essayé car je voulais quatre modes, ce qui se trouve être le nombre du deuxième groupe. Je voulais un mode clair de lune plus sombre, j'ai donc mis le premier sur 0/1, et je trouve le mode turbo un peu inutile, alors je l'ai remplacé par 137/255, l'équivalent du mode six dans le groupe des sept modes. Vous pouvez probablement modifier le reste du code si besoin est, mais je ne l'ai pas essayé.

Lorsque vous avez le code que vous voulez, vous devez le compiler dans un fichier.hex. À tout le moins, vous avez besoin de gcc-avr et avr-libc. Si vous rencontrez des problèmes, consultez les autres dépendances dans le fichier readme du firmware. Le référentiel comprend un script de construction, mais je n'ai pas pu le faire fonctionner. Au lieu de cela, j'ai téléchargé l'ancienne version avec

branche bzr lp:flashlight-firmware

et copié l'ancien script de construction (que je pouvais utiliser) sur le nouveau. Puis j'ai couru:

../../bin/build.sh 13 blf-a6

dans le dossier blf-a6. (il devrait y avoir une meilleure façon de le faire) Le../../bin/build.sh appelle le script, le 13 spécifie qu'il est construit pour un ATtiny13 et le blf-a6 spécifie que c'est pour le BLF A6. (duh) Il devrait vous dire quelles commandes il exécute et vous donner la sortie. Le mien ressemble à ça:

avr-gcc -Mur -g -Os -mmcu=attiny13 -c -std=gnu99 -fgnu89-inline -DATTINY=13 -I.. -I../.. -I../../.. -fshort -enums -o blf-a6.o -c blf-a6.cavr-gcc -Wall -g -Os -mmcu=attiny13 -fgnu89-inline -o blf-a6.elf blf-a6.o avr-objcopy --set -section-flags=.eeprom=alloc, load --change-section-lma.eeprom=0 --no-change-warnings -O ihex blf-a6.elf blf-a6.hex Programme: 1022 octets (99,8 % plein) Données: 13 octets (20,3 % plein)

Les commandes sont déjà optimisées pour la taille, donc s'il est indiqué qu'elles sont remplies à plus de 100 %, essayez de commenter

#define FULL_BIKING_STROBE

sur la ligne 147 pour utiliser le plus petit stroboscope de vélo minimal. Si cela ne convient toujours pas, vous devrez probablement supprimer plus de code quelque part. Une fois la compilation terminée, il devrait y avoir un fichier appelé blf-a6.hex dans le dossier. Ceci est votre code compilé, prêt à flasher.

Étape 3: Démonter la lampe de poche

Démonter la lampe de poche
Démonter la lampe de poche
Démonter la lampe de poche
Démonter la lampe de poche
Démonter la lampe de poche
Démonter la lampe de poche

Dévisser l'extrémité de l'ampoule dans le sens inverse des aiguilles d'une montre. Il y a deux joints à vis ici. Celui le plus proche de l'extrémité de l'ampoule de la lampe de poche ouvre le réflecteur et la LED, et celui le plus proche du milieu ouvre la carte de commande. Vous voulez celui plus proche du milieu.

À l'intérieur, vous devriez voir le ressort de la batterie et un anneau de retenue avec deux trous. Insérez vos pincettes / pinces fines / ciseaux dans les trous et tournez-les dans le sens inverse des aiguilles d'une montre. C'est assez rigide, et l'utilisation de deux objets séparés ne vous donnera probablement pas assez de poids. J'ai utilisé les ciseaux sur un couteau suisse.

Une fois que vous avez sorti la bague, libérez la carte pilote. Il est toujours attaché avec deux fils, alors soyez prudent. Ils sont torsadés ensemble, alors faites pivoter la carte d'une manière ou d'une autre jusqu'à ce que les fils se desserrent. Lorsque vous avez suffisamment de marge de manœuvre, retournez le tableau. Vous le voulez pour que la puce avec "TINY13A" dessus soit plus haute et plus accessible. S'il est du mauvais côté, retournez-le dans l'autre sens. Rentrez le ressort sous le côté. Cela le maintiendra temporairement en place et facilitera l'accès à la puce. Si vous avez des problèmes avec cela, vous pouvez probablement dévisser l'autre jointure et dessouder les deux fils de l'autre côté afin de pouvoir retirer complètement la carte, mais je ne l'ai pas essayé.

Étape 4: Connectez le matériel clignotant

Connectez le matériel clignotant
Connectez le matériel clignotant
Connectez le matériel clignotant
Connectez le matériel clignotant
Connectez le matériel clignotant
Connectez le matériel clignotant

Vous utilisez maintenant le clip SOIC8 pour connecter la puce ATtiny13 et votre programmeur. Avec mon clip SOIC8, si j'ai le fil rouge à gauche des deux extrémités, la rangée de broches la plus proche de moi à l'extrémité du clip correspond à la rangée de broches la plus proche de moi à l'extrémité du connecteur, lorsque le connecteur est orienté vers le bas. (voir mon schéma super artistique) Ce guide vous recommande d'utiliser un programmeur USB ASP V2.0. Si vous le faites, connectez-le comme ceci:

  • Broche 1 de l'ATtiny13 à la broche 5 de l'ASP USB (réinitialisation)
  • Broche 4 de l'ATtiny13 à la broche 10 de l'ASP USB (masse)
  • Broche 5 de l'ATtiny13 à la broche 1 de l'USB ASP (MOSI)
  • Broche 6 sur l'ATtiny13 à la broche 9 sur l'USB ASP (MISO)
  • Broche 7 sur l'ATtiny13 à la broche 7 sur l'USB ASP (SCK)
  • Broche 8 de l'ATtiny13 à la broche 2 de l'USB ASP (VCC)

Si, comme moi, vous utilisez un Arduino, vous devez faire un peu plus de préparation. Suivez les étapes zéro et deux de ce guide:

Ouvrez l'IDE Arduino et assurez-vous que votre Arduino est connecté à votre ordinateur. Recherchez le croquis ISP dans Fichier> Exemples> 11. ArduinoISP> ArduinoISP et téléchargez-le sur votre Arduino. Ensuite, connectez l'ATtiny13 comme ceci:

  • Broche 1 sur l'ATtiny13 à la broche 10 sur l'Arduino (réinitialiser)
  • Broche 4 sur l'ATtiny13 à GND sur l'Arduino (terre)
  • Broche 5 sur l'ATtiny13 à la broche 11 sur l'Arduino (MOSI)
  • Broche 6 sur l'ATtiny13 à la broche 12 sur l'Arduino (MISO)
  • Broche 7 sur l'ATtiny13 à la broche 13 sur l'Arduino (SCK)
  • Broche 8 sur l'ATtiny13 vers VCC / 5V / 3,3V sur l'Arduino (tout devrait fonctionner, mais 5V est plus fiable) (VCC)

J'ai également installé le package matériel, mais ce n'était probablement pas nécessaire. En cas de doute, essayez-le. Cela ne fera pas de mal. Mais ne brûlez pas le bootloader car cela va probablement endommager votre lampe de poche.

Étape 5: Flashez-le

Pour flasher le firmware, vous devez installer AVRDUDE. Pour vérifier que cela fonctionne avec mon Arduino, je lance:

avrdude -v -p attiny13 -c stk500v1 -P /dev/ttyUSB0 -b 19200 -n

Si cela fonctionne, je me déplace quelque part dans un dossier vide et lance:

avrdude -v -p attiny13 -c stk500v1 -P /dev/ttyUSB0 -b 19200 -u -Uflash:r:flash-dump.hex:i -Ueeprom:r:eeprom-dump.hex:i -Ulfuse:r:lfuse -dump.hex:i -Uhfuse:r:hfuse-dump.hex:i

Pour faire une sauvegarde du firmware existant. Et pour le flasher, depuis le dossier avec le blf-a6.hex modifié je lance:

avrdude -v -p attiny13 -c stk500v1 -P /dev/ttyUSB0 -b 19200 -u -Uflash:w:blf-a6.hex -Ulfuse:w:0x75:m -Uhfuse:w:0xFF:m

Pour une raison quelconque, je dois spécifier stk500v1 comme programmeur, et cela n'a pas fonctionné à moins que j'aie spécifié le port et le débit en bauds. Si vous utilisez un Arduino et dans le doute, essayez de déconnecter votre ATtiny13 de l'Arduino et de télécharger un croquis dans l'IDE Arduino en utilisant les paramètres ici. Cela échouera, mais il devrait indiquer la commande qu'il utilise dans la fenêtre de la console. Vous pouvez copier les attributs dans votre commande AVRDUDE.

Si vous utilisez un programmeur USB ASP, exécutez plutôt:

avrdude -v -p attiny13 -c usbasp -n

Pour voir si ça marche et:

avrdude -v -p attiny13 -c usbasp -u -Uflash:r:flash-dump.hex:i -Ueeprom:r:eeprom-dump.hex:i -Ulfuse:r:lfuse-dump.hex:i -Uhfuse: r:hfuse-dump.hex:i

Pour faire une sauvegarde et:

avrdude -v -p attiny13 -c usbasp -u -Uflash:w:blf-a6.hex -Ulfuse:w:0x75:m -Uhfuse:w:0xFF:m

Pour le flasher.

-Uflash:w:blf-a6.hex fait référence au fichier qu'il clignote. Remplacez blf-a6.hex par votre nom de fichier s'il est différent.

-Ufuse:w:0x75:m et -Uhfuse:w:0xFF:m sont les fusibles. Le vôtre peut être différent, alors vérifiez les valeurs dans flashlight-firmware/bin/flash-tiny13-fuses.sh.

Si cela donne une erreur hors de portée, cela signifie que l'image est trop grande pour tenir sur la puce et que vous devez supprimer une partie du code. S'il clignote avec succès, il devrait afficher des barres de progression, puis dire « avrdude done. Merci ».

S'il est écrit "signature de périphérique non valide" et que le cavalier de votre programmateur est réglé sur 3,3 v, essayez de le régler sur 5 v.

Après l'avoir flashé, réassemblez votre lampe de poche et voyez si cela fonctionne. Le mien a fait, mais TIMING ÉTEINTE en Somé ̶r̶e̶a̶s̶o̶n̶.̶ pour les exercer une pression longue DEVEZ environ trois secondes au lieu de 1.5. Ï ne savez pas comment ESt iF Travail pratique avec les Arduíno ou parce UTILISÉ Ive The Wrong ParaméTraGe ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ En cas de iDÉE, ̶ M'A LAISSÉ sAVENT dans les ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶

Edit: je l'ai corrigé. (voir étape 1)

Conseillé: