unicornswag /
Universal-CNC-Controller
Simple *nix CLI for grbl and Other ATmega Firmwares
Loading repository data…
Loryuwu / repository
un firmware simple para el control de ESLs Vusion con el MCU CC2510 de Texas Instruments, Este es un repo de desarrollo y pruebas, no será un proyecto final, pero pienso crear una estructura mas solida en un futuro.
Este es un proyecto para el control de estos tags Epaper de 2,2" o 4,2" (tambien hay algunos 2,6 que traen este MCU, pero no todos) Es un script para el control del chip CC2510 de Texas instruments, MCU basado en el antiguo 8051 + transceptor de RF a 2,4GhZ
Este será un proyecto unicamente de pruebas y desarrollo, no de algo final, pretendo crear otros repos para los que serán el AP, los satelites y el programa que controlará todo el sistema, que serán los que realmente harán el trabajo, pero aun no estoy listo ni tengo las estructuras suficientes para un proyecto final, se puede considerar esa como le version beta, en todo caso, cuando se suban, este repo se actualizará para poner los enlaces a esos repos.
Aún asi, ya comensé el desarrollo de los firmwares de control, AP y Satelites, estan en proceso de mejora, depuracion y busqueda de fallos (los cuales son bastantes) pero ya es algo que se viene.
CC2510 - MCU + radio - 8051 - Corazon del proyecto.
NT3H2111 - NFC - Chip programable por I2C.
Pervasives Display - 2.13"/4,17" EPD display - La pagina de pervasives al parecer descontinuó las screens usadas (Spectra Red) que eran las de 3 colores "SE2xxxJS0E1" (donde "xxx" es el tamaño de la screen) pero incluí 2 librerías en .zip para el manejo de estas, una mas pesada y llena de funciones a mi parecer inutiles, pero facil de usar e intuitiva, y otra con lo justo y mucho mas liviana.
TPS61071 - boost converter - Usado para dar energía a los leds.
W25X10CL - Winbond 1Mbits NOR SPI flash - Memoria flash externa por SPI
Documentación - Tengo tambien un directorio "documentacion" hecho por ia, por lo que puede tener errores o no estar alineado con el codigo, pero explica bastante bien el funcionamiento de todo el proyecto como una "guia de uso", no se fíen al 100% de lo ahí escrito, pero para tener una idea, lo revisé y es muy preciso, pero no exacto, cualquier archivo de documentacion presente en este proyecto, dentro de ese directorio o no, fue creado por ia, usar unicamente como guia, no como fuente confiable del funcionamiento del proyecto, este es el unico archivo creado 100% por mí y que contiene a grandes rasgos, puntos importantes a tener en cuenta sobre el funcionamiento del proyecto.
Lista de herramientas necesarias:
Teniendo todo lo necesario, para compilar simplemente ejecutamos los siguientes comandos en Shell:
PS C:\Users\Lory\Desktop\firmware> make
Donde deberás ver que termine en algo similar a:
packihx firmware.ihx > firmware.hex
packihx: read 378 lines, wrote 721: OK.
PS C:\Users\Lory\Desktop\firmware>
Luego para borrar archivos que se crean durante la compilación, ejecuta:
PS C:\Users\Lory\Desktop\firmware> make clean
Limpiando archivos generados...
Limpieza completa.
PS C:\Users\Lory\Desktop\firmware>
Y así tendras un nuevo "firmware.hex" en el directorio principal. El "Makefile" está diseñado para windows, pero tiene comentada la parte del codigo que lo hace compatible en linux (no se si funcione bien) deberás comentar o borrar la parte para win y descomentar la parte para linux
Para flashear, deberás conectar el Debugger al chip soldando 5 cables, 2 de alimentacion y los otros 3 de datos (Reloj, datos y reset) (mirar imagenes, detallan de donde sacar las lineas necesarias para esto) imagen referencial.
Actualmente estoy en este proyecto unicamente como hobbie, la electronica es algo que me apasiona y me gusta hacer, lamentablemente, no soy experto y jamás he hecho ningun curso de programacion o nada parecido, lo que sé es investigando, leyendo y preguntandole a chatGPT (el cual, en este proyeto, poco es lo que ayuda, sinceramente, pero si he logrado entender muchas partes de este codigo gracias a el).
Si alguien por ahí logra avanzar en este proyecto, agradecería mil que se comunique conmigo y me preste ayuda para lograr aprender, avanzar e intercambiar ideas.
funciones clave:
LED_INIT; - macro que inicializa el LEDLED_BOOST_ON; - macro que enciende el LED boost (enciende el TPS61071)LED_BOOST_OFF; - macro que apaga el LED boost (apaga el TPS61071)LED_ON; - macro que enciende el LED blancoLED_OFF; - macro que apaga el LED blancoLED_TOGGLE; - macro que invierte el estado del LED blancoLED_G_ON; - macro que enciende el LED verdeLED_G_OFF; - macro que apaga el LED verdeLED_G_TOGGLE; - macro que invierte el estado del LED verdeLED_R_ON; - macro que enciende el LED rojoLED_R_OFF; - macro que apaga el LED rojoLED_R_TOGGLE; - macro que invierte el estado del LED rojoLED_B_ON; - macro que enciende el LED azulLED_B_OFF; - macro que apaga el LED azulLED_B_TOGGLE; - macro que invierte el estado del LED azulImportante!!
Actualmente hay un macro condicional #define RGB, si se define, se usan los pines para inicializar los 2 leds (RGB y blanco), si no se define, solo se define el led blanco, ya que los pines para RGB son los mismos que se usan para comunicarse con la flash, por lo que hay conflicto de uso de pines con el led RGB y solo se puede usar el led blanco.
Si se quiere trabajar con la flash externa, se debe comentar el macro #define RGB.
funciones clave:
epd_init() - Inicializa el EPDepd_clearDisplay() - Limpia la pantalla enviando 0x00 a toda la pantalla.epd_globalUpdate(imagenBN, imagenR) - envia los datos para las imagenes y refresca automaticamenteepd_sendIndexData(index, data, len) - envia los datos para la imagen
epd_sendColor(index, data, len) - envia los datos para la imagen
epd_flushDisplay() - refresca la pantalla.epd_powerOn() - enciende la pantalla.epd_powerOff() - apaga la pantalla.se ha logrado implementar un protocolo UART de comunicacion con codificacion COBS (reutilizado completamente desde el proyecto principal), este bus está a los pines P0_4 (TX) y P0_5 (RX).
Tambien hay un script en Python que permite la comunicacion con el cc2510 a traves de este bus, necesitarás un convertidor TTL-USB para usarlo. e instalar la libreria cobs con el comando pip install cobs pyserial.
Al ejecutar el script, se puede enviar comandos al cc2510 y recibir el mismo mensaje de respuesta.
Problema!! al igual como pasa con los leds RGB, el bus uart se usa para comunicacion con la EPD y con el chip NFC, por lo que se debe implementar una estrategia para evitar conflictos de uso de pines.
rf_init(), rf_send_packet() y rf_receive_packet(), pero en algunos casos las funciones quedan colgadas, no se exactamente por que, he intentado implementar varias estrategias para evitar esto, timeouts, wachdog, etc, pero aun no logro que funcione correctamente.ACTUALIZACION: creo que el problema unicamente es que nunca encendí el pin de alimentacion de la flash, por lo que no se puede comunicar con ella, aun no la reviso completamente.
delay_ms() para espera bloqueante y Sleep_ms() para dormir el chip, pero el Sleep no genera exactamente un bajo consumo, el chip sigue consumiendo electricidad (o eso creo), hice pruebas con un amperimetro y se refleja un consumo muy similar al de un delay normal.Este proyecto está completamente basado en otro repositorio que encontré: Echar un vistazo acá
Quiero agradecer a @andrei-tatar por el trabajo que hizo, me ahorró mucho tiempo y esfuerzo y me inspiró a seguir adelante con esto, llevo... muchisimo tiempo investigando estos flejes, y gracias a su trabajo pude avanzar muchísimo.
Selected from shared topics, language and repository description—not editorial ratings.
unicornswag /
Simple *nix CLI for grbl and Other ATmega Firmwares
Pollo-Guero /
la maxima simplificación del funcionamiento de un firmware cnc