PCBs de cartuchos flash

PCBs_CartuchoMe han llegado los primeros prototipos del PCB del cartucho flash para gameboy que estoy diseñando. Después de montarlo me di cuenta que había interpretado mal un dato del datasheet del mm1134, el chip que se encarga de alimentar la sram cuando apagas la consola para poder conservar los datos de partidas guardadas y demás, y no funcionaba bien. Ya está corregido el diseño y probado puenteando las pistas que estaban mal con cables, asi que ahora el diseño ya es definitivo.

Ahora voy a modificar el diseño para incluir un chip de sram de 128K en lugar del de 32K que tiene ahora, para asi poder usarlo con software como el LittleSoundDJ que requiere esta capacidad para guardar canciones.

También he pedido fabricar los primeros prototipos del programador en diseño SMD, dentro de un mes postearé los resultados.

Connect – Arduino + Ruby + FTP + lindenScript + OpenSIM

Esta semana he asistido al taller Connect, en el centro de arte LABoral, ya soy un veterano de ellos. Este curso/taller trataba sobre la interconexión de hardware/software a través de diversos protocolos… serial, usb, midi, osc… arduino, processing, puredata, php, python… muy divertido.

captura-opensim.pngEntre todo lo que fuimos haciendo, mis pequeños proyectos durante el curso han sido un teletenis (al estilo clasico del PONG de los 70) en processing, cuyas raquetas respondian a dos potenciometros conectados a un arduino… vamos, como el original pero con un backend high-tech.

Pero el otro proyectillo que surgió, junto con Pablo de Soto, y que acabó siendo bastante interesante, fue la idea de tomar datos del mundo real e insertarlos en un mundo sintético en tiempo real, siendo los cambios paralelos en ambos entornos.

Pues nada, instalé un servidor de OpenSim (el software liberado que corre en los servidores de Second Life), y empezamos a jugar con lindenScript, el lenguaje de scripting de este motor, sintaxis similar a C… sin problema. Asi, encontramos el llHTTPRequest… la mitad ya estaba hecho.

Con un SquidBee, recogemos los datos de luminosidad, humedad y temperatura del entorno real, y despues de transformarlos en valores “humanos” (% de luminosidad y humedad, y ºC de temperatura) los enviamos por el puerto USB/Serie a un PC, ejecutando un script en Ruby, que crea un archivo de texto con estos datos y lo sube a un ftp cada 10 segundos.

Luego desde el mundo de OpenSim, tenemos un scrip asociado a un objeto, que cada 10 segundos también, hace un HTTPRequest a la url donde se sube el fichero, lo descarga y lo parsea extrayendo los datos que usamos para modificar el estado de este objeto. En este caso, es la “Farola” (palo con una bola roja encima), que cambia de color con la temperatura (de negro si es menor de 15º a 100% rojo si es superior a 30º), y de opacidad con la luminosidad (transparente a 0% de luminosidad a opaco con el 100%). El sensor de humedad se nos estropeó, asi que no hicimos nada con el.

La idea ahora es aplicar estos cambios globalmente en el mundo virtual, de manera que podamos cambiar el estado del dia virtual dependiendo del dia real, etc. Pero ha sido interesante este primer paso.

GBCartFlasher Cartucho 32Mbit

terminao.JPGSiguiendo con el proyecto del GBCartFlasher, he modificado un cartucho MBC5 para hacer pruebas y sacar el diseño de un posible cartucho flash que mandariamos a fabricar.  Está basado en un chip AM29F032 y un Zelda DX, con lo que tenemos un cartucho MBC5 de 32Mbit de ROM y 32KBit de RAM.

Ese es el resultado después de un rato cableando :-)

GBCartFlasher – Segundo capítulo.

Sigo con el desarrollo del flasheador de cartuchos de GameBoy. Poco a poco vamos haciendo progresos, ya tengo un prototipo definitivo del programador con el FT232RL  funcionando sin problemas,  he traducido la aplicación de flasheo al castellano y he añadido una opción al archivo de configuración que si está activada arranca por defecto en modo USB (deseable puesto que sólo estamos trabajando en el interfaz USB). También he creado una pequeña aplicación para sacar a información de los las roms de gameboy, así podemos saber que cartuchos son interesantes para la conversión, sabiendo de antemano cuanta rom y ram tienen, y qué mapper. Para llevar todo esto, he creado un wiki, http://wiki.ladecadence.net, en el que además iré llevando el progreso de mis otros proyectos. Podeis pasaros para echar un vistazo.

GP2X BreakOutBoard

GP2X BreakOutBoardEstos dias después de enladrillar mi GP2X con el Firm 4.0 (culpa de las pilas), decidí terminar el proyecto que tenia en marcha para hacerme una BreakOutBoard para la GP2X. La que me he construido tiene Salidas de audio y video (compuesto, no S-Video), Puerto serie RS232, J-Tag para puerto paralelo y USB Host. La he probado y garantizo que funciona el J-Tag, el Serie y el TV-Out, el USB todavia no lo probé, porque como vereis en la foto, no tenian el conector cerca de mi casa y tardaré un par de dias en comprarlo.

EDIT: Probado el USB Host con un pad. Funciona perfecto.
Adjunto los PDF con las mascaras para fabricar la placa, y la lista de componentes:

PCB – Pistas
PCB – Compo

Componentes:
IC1- MAX3232CPE, IC2 – Regulador 7805,  Resistencias: 2 de 33 Ohm, 7 de 100 Ohm y 2 de 15K, Condensadores cerámicos: 5 de 100nF, 4 de 33pF, 2 de 47pF y uno de 410pF, Condensadores electrolíticos: 2 de 10uF, Diodos: 7 1N4148, Conectores: 1 SUBD9, 1 SUBD25, 3 RCA, 1 DC Jack, 1 USB”A”, y tira de pines.

Fuente de alimentación

Fuente FuncionandoFuente -  PCBComo ahora estoy usando una fuente de laboratorio comercial, no me había acordado de postear la fuente de alimentación que me construí para alimentar los proyectos una vez fuera de la mesa de mi “taller”. Es una fuente estabilizada de 5 y 9V bastante simple; transformador, rectificador y reguladores de voltaje…

Adjunto los diseños de la placa y la lista de componentes.

Placa – pistas

Placa – Serigrafia

Componentes: R1: 220 Ohm, C1, C3: cerámicos 100nF, C2: cerámico 22pF, C4: electrolítico 470uF 25V, D1-D6: 1N4004, IC1: 7809T, IC2: 7805T, Led 5mm, y un transformador de 12V 2.4 A.
PD:
Hay un pequeño puente entre D4 y el conector de pines de la salida que no sale en la serigrafia.

Programador ICSP AVR

programador-paralelo.jpgAquí está el programador AVR que me he construido, es muy sencillo, está basado en el programador paralelo de ALF, y es compatible con él en el AVRDUDE, así que para programar con él, solo hace falta poner el modelo -c alf en la linea de comandos del AVRDUDE y listo. Es un programador paralelo standard, solo añadiendo un buffer para convertir los niveles del puerto paralelo, y unos leds de estado. Adjunto los esquemas del PCB y la lista de componentes.programador_y_placa.jpg

Placa principal, máscara de componentes
Placa principal, cara inferior.

Componentes: IC1: buffer séxtuplo 4050N, R1-R4: resistencias 1K 1/4W, LED1-4 LED standard 5mm de diferentes colores, C1: condensador cerámico 10pF… un conector SubD 25, y pines de tira para el conector ICSP y la alimentación.

Para la placa ICSP que posteé en la entrada anterior:

Placa ICSP, cara superior
Placa ICSP, cara inferior
Placa ICSP, máscara de componentes.

Y los componentes: Zócalos torneados de 8, 20, 28 y 40 pines (si no encontrais alguno como me pasó a mi, podeis usar tiras de pines torneadas), X1: cristal de 4Mhz, C1 y C2: condensadores cerámicos de 22pF, LED de 3mm, R1 resistencia de 200 Ohm y pines para el conector ICSP.

Utilizo zócalos torneados porque se pueden soldar bastante bien a las pistas de la cara superior, al no llegar el plástico hasta abajo como en los zócalos normales.

PCB’s de doble cara

placa-icsp.jpgMi primera placa de doble cara :-) Se pueden ver al trasluz las pistas de la cara delantera. La verdad ha quedabo bastante bien, tenía miedo de la alineación, pero con tres agujeros que hice para alinear laplaca-icsp-montada.jpg segunda cara, ha quedado genial. Estoy haciendo las placas usando la transferencia de toner con la plancha de la ropa, y la verdad, salvo alguna vez que se despega una que otra pista, van saliendo bien. Esta placa es para tener unos zocalos estandard de 8, 20, 28 y 40 pines configurados según los micros más usuales de AVR para hacer ICSP, asi los programo sin problemas usando el programador paralelo que me he contruido. Postearé el programador la siguiente vez :-)

LCD Serial – 16F84A

lcd-serial.jpegMi primer proyecto con PIC’s. Se trata de un interfaz serie (UART) para comunicar con un LCD de matriz (de los basados en el controlador de Hitachi). Utiliza un PIC 16F84A que recibe los datos serie a traves de una patilla (2400Bps, 8N1), y se los manda al LCD utilizando el protocolo de 4 bit de datos, con lo que todavía quedan patillas libres por si se quisiera hacer otra cosa, (que no es el caso). La idea es de usarlo conjuntamente con el Arduino, asi solo gasto una patilla del Arduino para controlar el LCD.

El protocolo es muy simple, si recibe un caracter ascii cualquiera, lo manda como carácter a la pantalla LCD a la posición actual del cursor, a no ser que sea el carácter 0xFE que entonces lee el siguiente byte y lo manda como código de control al LCD.Al iniciarse, el PIC manda el texto “Ok.” a la pantalla del LCD para comprobar que funciona correctamente, asi que para cualquier aplicación lo primero seria mandar el código de control de “limpiar pantalla” ;-)

lcd-serial_2.jpgAdjunto los esquemas del circuito y el diseño del PCB, así como el programa del PIC, por si a alguien le sirve de ayuda. En las pruebas estoy usando un 16F84A/04 y de hecho el circuito utiliza un cristal de 10Mhz, a la que tenga acceso a un /20, lo probaré a 20Mhz para ver si funciona bien a 9600bps, que a 10Mhz tuve problemas de timing.

Los archivos:

LCD Serial – PCB – Pistas
LCD Serial – PCB – Componentes
LCD Serial – Programa del PIC (2400bps)

Los componentes son: Q1: Cristal 10MHz, R1 Resistencia 1KOmh, R2 Potenciómetro 20K, C1 y C2 Condensadores cerámicos de 22pF. El conector del LCD es de 16 contactos (en lugar de los 14 normales) porque mi LCD tiene retroiluminacion y se alimenta en las patillas que estan antes de la “1” normal de GND. Para un LCD sin iluminacion, habria que conectarlo a partir de la patilla 3.