domingo, 26 de febrero de 2017

Modulo TM1637

En esta ocasión, me han llegado unos módulos de referencia TM1637 los cuales sirven para controlar 4 display de 7 segmentos via serial, pero no es compatible con otros protocolos como lo son el IIC y el 2wire.


Buscando en la red, encontré mucha información de la manera de utilizar el módulo con Arduino, mas no encontré algo definitivo con PICC, por lo que me puse manos a la obra.

Hice un circuito rápido en la protoboard con un PIC12F629, el cual controlará, ademas del módulo un pulsador para realizar la configuración de los dígitos con el fin de montar un reloj básico; la idea es que funcione con una interrupción interna (TIMER0, por ejemplo).


El módulo se controla con dos pines del PIC, en este caso: PIN A0 (clk) y PIN A1 (data), ademas de los pines de polarización. El pulsador lo conecté al PIN A2 con una resitencia PullUp de 10k.

No hay mucho que decir del módulo ... tiene buen brillo, el cual es configurable vía software y se puede configurar cada display enviando el respectivo byte con el segmento A en el LSB y no es necesario estar refrescando cada tiempo, lo que es una gran ventaja. Un video del montaje:



lunes, 8 de agosto de 2016

Controlador PID de Temperatura

El PID es una estrategia de control que combina tres acciones de control diferentes que son: Proporcional, Integral y Derivativo para mantener en un valor definido alguna variable que se quiera controlar, en este caso la temperatura de un horno para la fabricación de protesis acrilicas.

En este caso, el control de la temperatura tiene unas características muy bien definidas que no se pueden lograr con otras estrategias de control, como lo son el ON-OFF, como que el error en el valor programado debe ser muy pequeño y se deben cumplir unas rampas de temperaturas para garantizar que el material cure de la manera apropiada y obtenga asi las caracteristicas optimas para su utilizacion sin ningun riesgo para la salud de quien las usa.

Para diseñar dicho horno, he decidido reutilizar un horno convencional de 800W de potencia, la suficiente para lograr las temperaturas necesarias que necesita el material, y un PIC 18F252 para embeber el control PID, el control de los pulsadores y el control de fase de las resistencias termicas.


El horno tiene las rampas preprogramadas para facilitar su uso. De esta forma, bastas solo con presionar uno de los pulsadores externos para seleccionar el tipo de proceso (normal o alto impacto) y el controlador se encargara del control de temperatura y de temporizar el proceso de curación.


Luego de realizar la respectiva sintonización del controlador y de armarlo completamente en el armazón, se hizo pruebas para verificar que cumplia la rampa preprogramada.


Unas fotos del horno en accion de control.



y el resultado del proceso:



sábado, 9 de julio de 2016

Server Off Line


Una de las grandes dificultades en los colegios rurales es la falta de conectividad para que los estudiantes puedan acceder a referencias bibliográficas o ayudas audiovisuales. Muchas instituciones rurales tienen laptops y, actualmente, tabletas; mas sin embargo estas herramientas quedan casi que inutilizadas en sus verdaderas potencialidades de muestra y sistematización de información.

Una primera opción es utilizar el almacenamiento interno para guardar la información, pero esto implica un menor rendimiento en el funcionamiento de los equipos (por la cantidad de salones y asignaturas), ademas de que los contenidos quedan expuestos a ser borrados de manera accidental.

Una mejor manera de darle utilidad a estos equipos es utilizando uno de los equipos de escritorio como servidor; de hecho, en la estrategia de CPE (Computadores Para Educar) se dona un Server el cual puede ser utilizado a nuestro antojo y se capacita a los docentes en el manejo y configuración de herramientas TIC.

Este Server se puede conectar a un router, el cual, ademas de asignarle una dirección IP específica al Server, puede generar una red WiFi local con la cual se puede acceder a los contenidos alojados en dicho equipo, estos contenidos pueden ser diseñados por los docentes de cada área, y de esta forma se podría tener un espacio Off Line con todos los contenidos necesarios para reforzar los aprendizajes de los estudiantes y con la opción de manejar plataformas de manejo de cursos (Moodle).

En un primer intento por adecuar estos espacios virtuales de aprendizaje e instalado una herramienta de fácil configuración y uso llamada WampServer. Sobre esta herramienta se pueden instalar otros servicios como lo son Joomla y Moodle, y con ellos se pueden crear paginas para manejo de contenidos y manejo de aulas y actividades de aprendizaje.



Para acceder a los contenidos solo basta con escribir en el navegador la direccion IP asignada por el router.

La ventaja es que estos contenidos y aulas pueden ser accedidos de forma simultanea y sin ninguna restricción de horarios.



En mi caso, he utilizado infogramas para resumir las temáticas de tal manera que les resulte un poco mas agradable a los estudiantes.



Una de las ventajas es que la conexión es inalambrica, por lo tanto el espacio de aprendizaje no queda en el aula.






pero tampoco la excluye :)



Otra de las ventajas es que poco a poco los estudiantes se comienzan a responsabilizar del uso y contenidos de la pagina y de los equipos.




y son ellos mismos quienes educan su uso



Tan solo es necesario un pequeño espacio para realizar la configuración de la plataforma y educar poco a poco para que sean los propios estudiantes quienes asuman esta labor.



jueves, 14 de enero de 2016

Data Logger WiFi

Un data logger es un dispositivo que permite desplegar la información de un sensor determinado en alguna pantalla o display y ser almacenados en memoria para luego ser utilizados en algún análisis.

La ventaja con los dispositivos actuales como tabletas y celulares es que tienen pantallas y modos de comunicación que, sabiéndolos utilizar, pueden ser herramientas muy útiles para nuestros propósitos, como fabricar un data logger.

En este caso, he utilizado a WiBOT para que envíe datos a una aplicación para Android OS vía WiFi y sean graficados en un plano cartesiano, ademas, existe la opcion de guardar los datos en un archivo para poder ser utilizado posteriormente con algún software como Excel u Origin.


Al iniciar la aplicación, aparecen dos cuadros de texto en los cuales se debe ingresar los valores máximos de nuestros ejes de coordenadas (Ymax y Xmax). Es obligatorio conectarse a la red generada por el PIC para poder acceder a la información.


Al presionar el botón AJUSTAR, se dibujara un plano cartesiano con la grilla de referencia segun los valores máximos configurados.


Al presionar el botón "IniciarADQ", se iniciara la recepción de datos desde el PIC, los cuales se graficarán en la pantalla. Adicionalmente, se visualiza el dato actual y el código response.

Un vídeo de la aplicación funcionando.



La aplicacion la puedes descargar AQUI

Una de las ventajas con el uso del TCP/IP es que varios equipos pueden conectarse al mismo server y obtener la información simultánemente; algo que no se podía hacer con el Bluetooth. Esta parte de adquisición simultánea aún no funciona al 100%, pero sí hay algunos avances.




jueves, 7 de enero de 2016

Arduino - Tarjeta Multifuncion


Esta vez he trabajado con un Arduino, plataforma muy interesante para iniciarse en la programación, y una tarjeta que tiene muchas opciones hardware para divertirse por horas.

El Arduino que tengo es un Arduino UNO chino:



Los drivers USB de esta tarjeta Arduino los puedes descargar AQUI. Luego de instalarlos, el Arduino ya se puede utilizar con el IDE oficial sin ningun problema.

La tarjeta Mutifuncion es la siguiente:



Cuyo esquema es el siguiente:



Como se puede observar, se tienen varias herramientas muy útiles:

  • 4 Display de 7 segmentos
  • Canal ADC con potenciometro
  • 4 Entradas para sensores TTL con su respectiva alimentación.
  • Entrada para sensor de temperatura (LM35 o DS18B20)
  • 3 pulsadores
  • 4 LED
  • 1 Buzzer
  • Entrada para modulos seriales.
El programa que he realizado es solo a modo demostrativo de algunos de los módulos. Se despliega en el display el valor digital de la conversion AD del canal del potenciometro y con cada pulsación de los botones se enciende un LED ademas del aviso sonoro del buzzer.



El programa:
/*
    Tarjeta Multifuncion
    MLO
    miguel_626@hotmail.com
    
    Ejemplos de uso de los diferentes modulos de la tarjeta.
*/
//Botones
#define BUTTON1 A1
#define BUTTON2 A2
#define BUTTON3 A3

//Buzzer
#define BUZZER_DIO 3

//Estados para los LED y el Buzzer
#define OFF HIGH
#define ON LOW

//LED
const byte LED[] = {13,12,11,10};

//Control del display
#define LATCH_DIO 4
#define CLK_DIO 7
#define DATA_DIO 8
//Numeros display
const byte SEGMENT_MAP[] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0X80,0X90};
const byte SEGMENT_SELECT[] = {0xF1,0xF2,0xF4,0xF8};

//Potenciometro
#define PotPin 0

void setup() {
  pinMode(BUZZER_DIO, OUTPUT);
  digitalWrite(BUZZER_DIO, OFF);
  
  pinMode(LED[0], OUTPUT);
  pinMode(LED[1], OUTPUT);
  pinMode(LED[2], OUTPUT);
  pinMode(LED[3], OUTPUT);
  
  digitalWrite(LED[0], OFF);
  digitalWrite(LED[1], OFF);
  digitalWrite(LED[2], OFF);
  digitalWrite(LED[3], OFF);
  
  pinMode(LATCH_DIO,OUTPUT);
  pinMode(CLK_DIO,OUTPUT);
  pinMode(DATA_DIO,OUTPUT);
}

void loop() {
  if(!digitalRead(BUTTON1))             
  {
    digitalWrite(LED[0], ON);
    digitalWrite(LED[1], OFF);
    digitalWrite(LED[2], OFF);
    digitalWrite(BUZZER_DIO, ON);
    delay(20);
    digitalWrite(BUZZER_DIO, OFF); 
  }
  
  if(!digitalRead(BUTTON2))             
  {
    digitalWrite(LED[0], OFF);
    digitalWrite(LED[1], ON);
    digitalWrite(LED[2], OFF);
    digitalWrite(BUZZER_DIO, ON);
    delay(20);
    digitalWrite(BUZZER_DIO, OFF); 
  }
  
  if(!digitalRead(BUTTON3))             
  {
    digitalWrite(LED[0], OFF);
    digitalWrite(LED[1], OFF);
    digitalWrite(LED[2], ON);
    digitalWrite(BUZZER_DIO, ON);
    delay(20);
    digitalWrite(BUZZER_DIO, OFF); 
  }
   
   WriteNumber(analogRead(PotPin));
}

void WriteNumber(int Number)
{
  WriteNumberToSegment(0 , Number/1000);
  WriteNumberToSegment(1 , (Number/100)%10);
  WriteNumberToSegment(2 , (Number/10)%10);
  WriteNumberToSegment(3 , Number%10);
}

void WriteNumberToSegment(byte Segment, byte Value)
{
  digitalWrite(LATCH_DIO,LOW); 
  shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_MAP[Value]);
  shiftOut(DATA_DIO, CLK_DIO, MSBFIRST, SEGMENT_SELECT[Segment] );
  digitalWrite(LATCH_DIO,HIGH);    
}


Con eso es suficiente para poder utilizar la tarjeta para nuestros propios propósitos de diseño. 

sábado, 24 de octubre de 2015

Sistema de recirculacion de agua

En esta ocasión, comparto un sencillo sistema que permite reutilizar el agua de los ciclos de lavado. Es conveniente utilizar el agua a partir de la segunda descarga del ciclo de enjuague, ya que en la primera descarga, el agua sale con mucho detergente.

El sistema hidráulico solo consta de unas mangueras en un circuito cerrado bastante básico:  el agua que sale del ciclo de descarga, se almacena en un tanque para luego ser utilizada en el inodoro.

Para no estar ocupando tiempo innecesario en la activación de llaves y el encendido de interruptores (en mi caso el tanque de almacenamiento esta en un primer piso y el baño esta en un segundo piso) para activar una bomba centrifuga, he utilizado un controlador basado en un PIC12F cuya fuente de energía eléctrica es un panel solar.

Un diagrama de como esta dispuesto el sistema:


Luego subiré fotos del sistema montado en totalidad.

domingo, 22 de febrero de 2015

Aplicacion Votaciones Estudiantiles

La aplicación Votaciones Estudiantiles, te permite generar un sistema de votación utilizando un dispositivo touch con sistema operativo Android.

Descarga la aplicación Votaciones Estudiantiles desde Play Store o dando click al siguiente enlace: DOWNLOAD Votaciones Estudiantiles

Luego de instalarla en tu tableta o smartphone, busca el icono que se muestra y dale "tap":


Se abrirá la aplicación en su etapa de configuración:


Ingresa el titulo de la jornada de votación, por ejemplo: "Votaciones Personero Estudiantil 2015 - Mi colegio" y presiona el botón "Guardar Titulo".

Ten en cuenta que las fotos se deben guardar con anterioridad en el dispositivo, se recomienda fotos en primer plano. Si se desea se puede editar la foto y ubicar el numero de candidato y el nombre.

Ingresa los nombres de los candidatos en cada uno de los TextBox y presiona "Guardar Nombres" para guardar los datos. Si no se va a utilizar alguno de estos espacios, guarda como nombre unos dos espacios.



Para subir las fotos de los candidatos, presiona el botón correspondiente a cada candidato y sube la imagen desde la galería de tu dispositivo. El botón "imgC1" hace referencia a que se va a subir la imagen del candidato 1. 

Al presionar el boton de carga de imagen se abre la galeria para seleccionar la foto del candidato.

Una vez se ha seleccionado la imagen se ubica en su respectiva posición para la plantilla de votación.

Si va a utilizar un numero menor de candidatos a los permitidos por la aplicación, cargue una foto negra en la imagen. Puede usar las siguientes:

Foto para utilizar como imagen en un espacio de NO votación.

Foto para utilizar para el Voto en Blanco.

Una vez cargadas todas las fotos en la plantilla, se procede a Habilitar los candidatos que van a recibir datos de votación. 



En este caso, en la imagen del candidato 7 se ha subido la foto de fondo negro y no se habilita la recepción de votos. Presionamos el botón "Habilitar e Iniciar Votación" para entrar en la etapa de votaciones. En esta etapa se habilita la votación para cada uno de los candidatos habilitados anteriormente.


Para realizar la votación, se pulsa sostenidamente la foto del candidato. Cuando se ha realizado una votación correcta, la aplicación emitirá una alerta audible, vibrará y cambiara a la siguiente pantalla:



En esta pantalla, se le debe indicar al estudiante que salga del modulo de votación ya que su voto ha sido realizado correctamente. El docente encargado como jurado, presionará el icono sostenidamente con lo que se retornará a la pantalla principal, la aplicación emitirá un sonido de alerta y vibrará.

Observe que en la pantalla 2 se lleva un conteo general de los votos realizados, lo que permite verificar constantemente el numero de votantes con el registro de inscripción.

Si por algún motivo se ha realizado una votación errónea, existe la posibilidad de anular el voto inmediatamente anterior utilizando el botón "Corregir Voto". Se debe pulsar sostenidamente este botón para que se lleve a cabo la acción de corrección.



Para obtener los resultados finales de votación, se debe presionar sostenidamente el botón resultados. Hecho esto, la aplicación mostrará en una pantalla los resultados de las votaciones de forma gráfica con los votos obtenidos y el porcentaje, ademas se guardaran los resultados en un archivo desde el cual se puede procesar la información correspondiente. 

Puede hacer una captura de pantalla desde su celular o tableta para guardar los resultados gráficamente.


Para salir de la aplicación, pulse el icono central. Si desea volver a la plantilla principal de los candidatos, presione la tecla "Atrás" de su dispositivo. Esto puede resultar util si se quiere tener resultados parciales de votaciones.

 El archivo csv de votaciones se halla en la memoria del dispositivo:


Al abrirla aparecen en columnas los resultados de las votaciones.


Un video de muestra: