Tabla de contenido:
- Suministros
- Paso 1: descargue el firmware
- Paso 2: modificar el firmware
- Paso 3: desmonte la linterna
- Paso 4: conecte el hardware intermitente
- Paso 5: flashearlo
Video: Actualización de firmware personalizado a una linterna BLF A6: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:41
Recientemente obtuve un BLF A6. Es muy agradable, pero no me gusta ninguno de los grupos de modo predeterminado, así que modifiqué el firmware para usar mis brillos preferidos. La información fue difícil de encontrar, así que estoy poniendo todo lo que aprendí aquí para mí y para los demás.
Suministros
BLF A6 (probablemente funcionará con otras linternas basadas en ATtiny)
Pinzas / alicates finos / tijeras pequeñas / algo para deshacer el anillo de retención de la placa del controlador
Computadora para flashear, preferiblemente con una distribución de Linux
Programador ASP USB / Arduino / algo que pueda hacer programación AVR (aparentemente se recomienda el programador ASP USB, pero usé un Arduino)
Clip SOIC8 (es posible prescindir, pero es muy complicado y no se recomienda en absoluto)
(opcional) Protoboard y / o cables de puente para facilitar la conexión
Paso 1: descargue el firmware
El firmware para el BLF A6 (y muchas otras linternas) está disponible aquí. El autor habla de ello aquí. Puede descargarlo ejecutando:
bzr branch lp: ~ toykeeper / flashlight-firmware / blf-a6-final
en una terminal. (puede que tengas que instalar bzr)
Nota: en una edición anterior de este Instructable usé "bzr branch lp: flashlight-firmware" en su lugar. Desde entonces, aprendí que esto descarga una versión desactualizada con valores incorrectos para el capacitor de tiempo de inactividad, lo que hace que las presiones del botón sean incómodamente largas. (gracias a este hilo en Reddit)
La carpeta que desea es blf-a6-final / ToyKeeper / blf-a6. Contiene un archivo.hex compilado listo para flashear (blf-a6.hex) y el código C que puede modificar. (blf-a6.c) Si desea actualizar el firmware original, puede omitir el siguiente paso y usar blf-a6.hex. Es probable que algunos de los demás firmware de ese repositorio también funcionen.
Paso 2: modificar el firmware
Abra blf-a6.c en su editor de texto o IDE preferido. Las líneas más interesantes son los grupos de modos entre las líneas 116 y 131. Se ven así:
// Grupo de modos 1 # define NUM_MODES1 7 // Niveles PWM para el circuito grande (FET o Nx7135) #define MODESNx1 0, 0, 0, 7, 56, 137, 255 // Niveles PWM para el circuito pequeño (1x7135) # define MODES1x1 2, 20, 110, 255, 255, 255, 0 // Mi muestra: 6 = 0..6, 7 = 2..11, 8 = 8..21 (15..32) // Muestra de Krono: 6 = 5..21, 7 = 17..32, 8 = 33..96 (50..78) // Manker2: 2 = 21, 3 = 39, 4 = 47,… 6? = 68 // Velocidad PWM para cada modo #define MODES_PWM1 FASE, RÁPIDO, RÁPIDO, RÁPIDO, RÁPIDO, RÁPIDO, FASE // Grupo de modo 2 #define NUM_MODES2 4 #define MODESNx2 0, 0, 90, 255 #define MODES1x2 20, 230, 255, 0 #define MODES_PWM2 RÁPIDO, RÁPIDO, RÁPIDO, FASE
Para cada grupo, MODESN es el valor de PWM usado para el FET y MODES1 es el valor de PWM usado para el 7135 en cada modo. El número está entre 0 y 255 y corresponde al brillo de la luz. Más información aquí. (desplácese hacia abajo hasta "Regulación de modo:") No estoy seguro de qué velocidad PWM es exactamente. Si alguien lo sabe, dímelo en los comentarios. El FET puede producir más luz que el 7135, pero el 7135 mantiene el nivel de luz más o menos igual durante la vida útil de la batería, mientras que el FET se oscurece a medida que se agota la batería.
Aquí puede ajustar los valores de PWM para producir modos a su gusto. Probablemente también puedas cambiar el número de modos, pero no lo he probado porque quería cuatro modos, que resulta ser el número en el segundo grupo. Quería un modo de luz de luna más oscuro, así que configuré el primero en 0/1, y el modo turbo me pareció un poco inútil, así que lo reemplacé con 137/255, el equivalente al modo seis en el grupo de siete modos. Probablemente pueda modificar el resto del código si es necesario, pero no lo he probado.
Cuando tenga el código que desea, debe compilarlo en un archivo.hex. Como mínimo, necesita gcc-avr y avr-libc. Si tiene problemas, consulte las otras dependencias en el archivo Léame del firmware. El repositorio incluye un script de compilación, pero no pude hacerlo funcionar. En cambio, descargué la versión anterior con
bzr branch lp: linterna-firmware
y copié el antiguo script de compilación (que pude ponerme a trabajar) sobre el nuevo. Entonces corrí:
../../bin/build.sh 13 blf-a6
en la carpeta blf-a6. (Debería haber una mejor manera de hacerlo) El../../bin/build.sh llama al script, el 13 especifica que se está construyendo para un ATtiny13 y el blf-a6 especifica que es para el BLF A6. (duh) Debería decirte qué comandos está ejecutando y darte la salida. El mío se ve así:
avr-gcc -Wall -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 Programa: 1022 bytes (99,8% completo) Datos: 13 bytes (20,3% completo)
Los comandos ya están optimizados para el tamaño, por lo que si dice que está más del 100% lleno, intente comentar
#define FULL_BIKING_STROBE
en la línea 147 para usar la luz estroboscópica de ciclismo mínima más pequeña. Si aún no encaja, probablemente tendrá que eliminar más código en alguna parte. Cuando termine de compilar, debería haber un archivo llamado blf-a6.hex en la carpeta. Este es su código compilado, listo para flashear.
Paso 3: desmonte la linterna
Desatornille el extremo de la bombilla en sentido antihorario. Aquí hay dos uniones roscadas. El que está más cerca del extremo de la bombilla de la linterna abre el reflector y el LED, y el que está más cerca del centro abre la placa del controlador. Quieres el que está más cerca del medio.
En el interior, debería ver el resorte de la batería y un anillo de retención con dos orificios. Inserte sus pinzas / alicates finos / tijeras en los orificios y gírelos en sentido antihorario. Es bastante rígido y el uso de dos objetos separados probablemente no le dará suficiente apalancamiento. Usé las tijeras en una navaja suiza.
Una vez que haya sacado el anillo, libere la placa del controlador. Todavía está conectado con dos cables, así que ten cuidado. Están trenzados, por lo tanto, gire la placa de una forma u otra hasta que los cables se aflojen. Cuando tenga suficiente margen, voltee el tablero. Lo desea para que el chip con "TINY13A" esté más arriba y sea más accesible. Si está del lado equivocado, dale la vuelta. Meta el resorte debajo del costado. Esto lo mantendrá temporalmente en su lugar y facilitará el acceso al chip. Si tiene problemas con esto, probablemente pueda desenroscar la otra unión y desoldar los dos cables del otro lado para que pueda quitar la placa por completo, pero no lo he probado.
Paso 4: conecte el hardware intermitente
Ahora usa el clip SOIC8 para conectar el chip ATtiny13 y su programador. Con mi clip SOIC8, si tengo el cable rojo a la izquierda de ambos extremos, la fila de pines más cerca de mí en el extremo del clip corresponde a la fila de pines más cerca de mí en el extremo del conector, cuando el conector está hacia abajo. (vea mi diagrama súper artístico) Esta guía recomienda que utilice un programador USB ASP V2.0. Si lo hace, conéctelo así:
- Pin 1 en el ATtiny13 al pin 5 en el USB ASP (reiniciar)
- Pin 4 en el ATtiny13 al pin 10 en el USB ASP (tierra)
- Pin 5 en el ATtiny13 al pin 1 en el USB ASP (MOSI)
- Pin 6 en el ATtiny13 al pin 9 en el USB ASP (MISO)
- Pin 7 en el ATtiny13 al pin 7 en el USB ASP (SCK)
- Pin 8 en el ATtiny13 al pin 2 en el USB ASP (VCC)
Si, como yo, estás usando un Arduino, tienes que prepararte un poco más. Siga los pasos cero y dos de esta guía:
Abra el IDE de Arduino y asegúrese de que su Arduino esté conectado a su computadora. Busque el boceto del ISP en Archivo> Ejemplos> 11. ArduinoISP> ArduinoISP y cárguelo en su Arduino. Luego, conecte el ATtiny13 de esta manera:
- Pin 1 en el ATtiny13 al pin 10 en el Arduino (reiniciar)
- Pin 4 en el ATtiny13 a GND en el Arduino (tierra)
- Pin 5 en el ATtiny13 al pin 11 en el Arduino (MOSI)
- Pin 6 en el ATtiny13 al pin 12 en el Arduino (MISO)
- Pin 7 en el ATtiny13 al pin 13 en el Arduino (SCK)
- Pin 8 en ATtiny13 a VCC / 5V / 3.3V en Arduino (cualquiera debería funcionar, pero 5V es más confiable) (VCC)
También instalé el paquete de hardware, pero probablemente no fue necesario. En caso de duda, pruébelo. No hará ningún daño. Pero no quemes el cargador de arranque porque probablemente bloqueará tu linterna.
Paso 5: flashearlo
Para actualizar el firmware, debe instalar AVRDUDE. Para comprobar que funciona con mi Arduino, ejecuto:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Si funciona, me muevo a una carpeta vacía en algún lugar y ejecuto:
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
Hacer una copia de seguridad del firmware existente. Y para flashearlo, desde la carpeta con el blf-a6.hex modificado ejecuto:
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
Por alguna razón, tengo que especificar stk500v1 como programador, y no funcionó a menos que especifique el puerto y la velocidad en baudios. Si está usando un Arduino y tiene dudas, intente desconectar su ATtiny13 del Arduino y cargar un boceto en el IDE de Arduino usando la configuración aquí. Fallará, pero debería decir qué comando está usando en la ventana de la consola. Puede copiar los atributos en su comando AVRDUDE.
Si está utilizando un programador ASP USB, en su lugar ejecute:
avrdude -v -p attiny13 -c usbasp -n
Para ver si funciona y:
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
Para hacer una copia de seguridad y:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Para mostrarlo.
-Uflash: w: blf-a6.hex se refiere al archivo que está parpadeando. Reemplace blf-a6.hex con su nombre de archivo si es diferente.
-Ulfuse: w: 0x75: my -Uhfuse: w: 0xFF: m son los fusibles. El tuyo puede ser diferente, así que revisa los valores en flashlight-firmware / bin / flash-tiny13-fuses.sh.
Si da un error fuera de rango, significa que la imagen es demasiado grande para caber en el chip y debe eliminar parte del código. Si parpadea correctamente, debería mostrar algunas barras de progreso, luego diga "avrdude done. Gracias".
Si dice "firma de dispositivo no válida" y el puente de su programador está configurado en 3.3v, intente configurarlo en 5v.
Después de que lo haya mostrado, vuelva a armar su linterna y vea si funciona. La mía, pero el tiempo está apagado por alguna ̶r̶e̶a̶s̶o̶n̶.̶ el largo prensas necesidad de estar cerca de tres segundos en lugar de 1.5. No sé si Es algo que ver con el Arduino o porque he utilizado The Wrong Ajustes ̶s̶o̶m̶e̶w̶h̶e̶r̶e̶.̶ Si usted tiene alguna idea, ̶ que me haga saber en el ̶c̶o̶m̶m̶e̶n̶t̶s̶.̶
Editar: lo arreglé. (ver paso 1)
Recomendado:
Refuerzo de linterna frontal / linterna: 13 pasos (con imágenes)
Refuerzo de linterna frontal / linterna: la linterna frontal se modifica utilizando circuitos de una luz solar de jardín. Le permitirá usar solo 2 baterías en lugar de 3. Esto es útil al comprar baterías. A menudo, solo se venden en paquetes de 2 o 4, pero no de tres. También puede permitir 'dead ba
Actualización de linterna: 5 pasos
Actualización de la linterna: en este instructivo, aprenderá cómo actualizar una linterna china estándar a Li-ion 18650 y un cargador micro USB.Batería de iones de litio: tomé de la batería de una computadora portátil viejaCargador de iones de litio: 5 piezas
Actualización de la batería de la antorcha / linterna vieja: 5 pasos (con imágenes)
Actualización de la batería de antorcha / linterna vieja: - = La idea = -Esta vieja antorcha Uniross usa una sola batería de plomo-ácido de 4V. ¿Por qué no reemplazarla con una batería de iones de litio? Tiene un voltaje similar. tiene una mayor capacidad. La linterna tiene 3 modos: - interruptor alterno entre - 20 LED
Convierta una linterna 3xAAA en una celda de litio 18650: 9 pasos
Convierta una linterna 3xAAA en una celda de litio 18650: es posible que esto no pertenezca a todas las linternas 3x AAA, pero con algunos calibradores y sentido común, probablemente pueda comprobarlo usted mismo
¡Cómo hacer una linterna LED rápida y barata con una barra de desodorante !: 8 pasos
¡Cómo hacer una linterna LED rápida y barata con una barra de desodorante !: ¡En este Instructable, te mostraré cómo hacer una linterna LED rápida y barata con una barra de desodorante! (y algunas otras partes)