» Temas » Reparación, modernización »Cómo encender una linterna para cambiar los modos de funcionamiento

Cómo encender una linterna para cambiar los modos de operación


Al autor de este material no le gustaban los modos normales de funcionamiento de la linterna BLF A6. Luego decidió flashear la parte del software de la linterna, configurando sus modos. Al final resultó que esto no es tan simple, hay un mínimo de información sobre el firmware y las patillas y tuvo que recopilarlo poco a poco. Y para que no se perdiera, decidió ayudar a los demás y organizar todo en un artículo.

Entonces, para el trabajo necesitará lo siguiente:
Linterna BLF A6 (probablemente esto funcionará con otras linternas basadas en ATtiny).
Pinzas / alicates / tijeras pequeñas.
Una computadora para firmware, preferiblemente con una distribución de Linux.
USB ASP / Programador Arduino / algo que la programación AVR puede hacer (obviamente, el programador USB ASP es mejor, pero el asistente usó Arduino).
Amplificador de riel a riel de alta velocidad [SOIC-8] (puede prescindir de él, pero es muy inconveniente).
Placa de desarrollo y cables de conexión para la conexión.

Firmware
El firmware para BLF A6 (y muchas otras linternas) está disponible aqui. Un foro de discusión está disponible sobre esto el enlace.
Puede descargar el firmware ejecutando la búsqueda "bzr branch lp: flashlight-firmware". Necesita la carpeta linterna-firmware / ToyKeeper / blf-a6. Contiene un archivo compilado. hex, listo para firmware (blf-a6.hex) y código C, que también se puede cambiar (blf-a6.c). Si desea actualizar el firmware estándar, puede omitir el siguiente paso y simplemente usar blf-a6.hex. Algún otro firmware en este repositorio probablemente también funcionará.

Cambiar firmware.
Precaución Los símbolos, para no distorsionar el significado, se dan sin traducción.
Abra blf-a6.c en su editor de texto preferido o IDE. Las líneas más interesantes son los grupos de modos entre las líneas 94 y 109. Se ven así:
// Grupo de modos 1
#define NUM_MODES1 7
// Niveles de PWM para el circuito grande (FET o Nx7135)
#define MODESNx1 0,0,0,7,56,137,255
// Niveles de PWM para el circuito pequeño (1x7135)
#define MODES1x1 3,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 PHASE, FAST, FAST, FAST, FAST, FAST, PHASE
// Modo grupo 2
#define NUM_MODES2 4
#define MODESNx2 0,0,90,255
#define MODES1x2 20,230,255,0
#define MODES_PWM2 FAST, FAST, FAST, PHASE

Para cada grupo, MODESN es el valor PWM utilizado para FET, y MODES1 es el valor PWM utilizado para 7135 en cada modo. El número está en el rango de 0 a 255 y corresponde al brillo de la luz. Más información
aqui. (desplácese hacia abajo hasta "Control de modo:") El maestro no está seguro de cuál es la velocidad PWM.Si alguien lo sabe, dímelo en los comentarios. Un transistor de efecto de campo puede producir más luz que 7135, pero 7135 mantiene el nivel de luz más o menos igual durante toda la vida útil de la batería, mientras que cuando se usa un transistor de efecto de campo, la luz se atenúa cuando la batería se agota.

Aquí podemos ajustar los valores de PWM para crear modos a nuestro gusto. También puede cambiar el número de modos, pero el maestro no hizo esto porque necesita cuatro modos, y este es el número en el segundo grupo. Quería un régimen de luz de luna más oscuro y, por lo tanto, estableció el primero en 0/1. También considera que el modo turbo es un poco inútil, por lo que lo reemplacé con 137/255, que es equivalente al sexto modo en un grupo de siete modos.

Cuando tenga el código que necesita, debe compilarlo en un archivo .hex. Al menos necesitas gcc-avr y avr-libc. Si tiene problemas, mire otras dependencias en el archivo Léame. El repositorio incluye un script de compilación, por lo que todo lo que tiene que hacer es ejecutar:
../../bin/build.sh 13 blf-a6
en la carpeta blf-a6. ../../Bin/build.sh es el script. 13 indica que es para ATtiny13, y blf-a6 indica que es para BLF A6.
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.c
avr-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 equipos ya están optimizados en tamaño, por lo que si está escrito que están más del 100% completos, intente eliminar
#define FULL_BIKING_STROBE

Línea 125 hechizos pequeños bicicleta luz estroboscópica Si esto no es suficiente, entonces habrá que cortar algo más.
Cuando se completa la compilación, la carpeta debe contener un archivo llamado blf-a6.hex. Este es un código compilado, listo para el firmware.

Desmontaje de la linterna.
Desenrosque el faro de la linterna. Hay dos conexiones de tornillo. El que está más cerca del cuerpo de la linterna fija el reflector y el LED, y el que está más cerca del centro arregla el tablero. Necesitamos un promedio.

Dentro verá un anillo de retención con un resorte y dos agujeros a lo largo de los bordes. Inserte pinzas / alicates / tijeras delgadas en los agujeros y gírelos en sentido antihorario.

Una vez que se retira el anillo, tendrá acceso al tablero. Todavía está conectado con dos cables, así que tenga cuidado. Están retorcidos, así que gire la placa hasta que los cables estén sueltos. Luego voltee el tablero. Es necesario que el chip con la inscripción "TINY13A" sea más accesible.

Si los cables son cortos y no funciona, entonces debes quitar la placa.






Conexión.
Ahora necesita preparar la placa para el firmware.
El asistente utiliza SOIC8 para conectar el chip ATtiny13 y el programador.
Cómo encender una linterna para cambiar los modos de operación



Vea la foto mientras el asistente hace la conexión. Observe la línea roja en la segunda figura.

Si utiliza el programador USB ASP V2.0, debe conectarlo así:
Pin 1 en ATtiny13 - Pin 5 en USB ASP (restablecer)
Pin 4 en ATtiny13 - Pin 10 en USB ASP (tierra)
Pin 5 en ATtiny13 - Pin 1 en USB ASP (MOSI)
Pin 6 en ATtiny13 - Pin 9 en USB ASP (MISO)
Pin 7 en ATtiny13 - Pin 7 en USB ASP (SCK)
Pin 8 en ATtiny13 - Pin 2 en USB ASP (VCC)

Si usa Arduino, como el asistente, siga estos pasos:
Abra el IDE de Arduino y asegúrese de que su Arduino esté conectado a la computadora. Encuentre el boceto del ISP en Archivo> Ejemplos> 11.ArduinoISP> ArduinoISP y cárguelo en Arduino. Luego conecte el ATtiny13 de la siguiente manera:
Pin 1 en ATtiny13 - Pin 10 en Arduino (reinicio)
Pin 4 en ATtiny13 - GND en Arduino (Tierra)
Pin 5 en ATtiny13 - Pin 11 en Arduino (MOSI)
Pin 6 en ATtiny13 - Pin 12 en Arduino (MISO)
Pin 7 en ATtiny13 - Pin 13 en Arduino (SCK)
Pin 8 en ATtiny13 - VCC / 5V o 3.3V en Arduino (se prefieren 5V)

Firmware
Paso 5: flashearlo
Para el firmware, debe instalar AVRDUDE. Para verificar si esto funciona con Arduino, el asistente escribe un comando:
avrdude -v -p attiny13 -c stk500v1 -P / dev / ttyUSB0 -b 19200 -n
Si esto funciona, vaya a la carpeta vacía y regístrese:
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
Haga una copia de seguridad del firmware existente. Para flashear, desde la carpeta con el blf-a6.hex modificado, comienza:
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
Debe especificar stk500v1 como programador y especificar el puerto y la velocidad de transferencia de datos. Si está utilizando Arduino y tiene dudas, intente desconectar ATtiny13 de Arduino y cargue el boceto al IDE de Arduino utilizando estas configuraciones. Esto no funcionará, pero descubrirá qué comando se usa en la ventana de la consola. A continuación, puede copiar los atributos al comando AVRDUDE.

Si está utilizando un programador USB ASP, ejecute:
avrdude -v -p attiny13 -c usbasp -n
Para ver si esto funciona:
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
Haz una copia de seguridad:
avrdude -v -p attiny13 -c usbasp -u -Uflash: w: blf-a6.hex -Ulfuse: w: 0x75: m -Uhfuse: w: 0xFF: m
Para flashear:
-Flash: w: blf-a6.hex. Reemplace blf-a6.hex con su nombre de archivo si es diferente.
-Ulfuse: w: 0x75: my -Uhuse: w: 0xFF: m
Si se produce un error, esto significa que el archivo de imagen es demasiado grande para caber en el chip, y tendrá que eliminar parte del código. Si todo es normal, se deben mostrar algunos indicadores de progreso y luego las palabras "avrdude done. Gracias".
Después de haber flasheado el chip, monte la linterna y vea si funciona.
La pregunta \ tema se publica automáticamente en las redes sociales. red del sitio: esté atento a las respuestas allí:

Apto para tema

Temas relacionados

Agrega un comentario

    • sonriesonrisasxaxaokno sabesyahoonea
      jeferascarsetontosisi-siagresivosecreto
      lo sientobailardance2dance3perdónayudabebidas
      pararamigosbuenobuenosilbatodesmayarselengua
      fumaraplaudirllorardeclararburlóndon-t_mentiondescargar
      calorfuriosorisa1mdareuniónMoskingnegativo
      not_ipalomitas de maizcastigarleerasustarasustabuscar
      burlagraciasestoto_clueumnikagudode acuerdo
      malbeeeojo negroblum3ruborpresumiraburrimiento
      censuradocortesíasecreto2amenazarvictoriaYusun_bespectacled
      shokrespektjajajaPrevedbienvenidokrutoyya_za
      ya_dobryiayudantene_huliganne_othodigolpearprohibircerrar

Le recomendamos que lea:

Pásalo por el teléfono inteligente ...