Bienvenido

Bienvenido
Disfruta el contenido

viernes, 19 de diciembre de 2014

Reloj Digital


Proyecto de reloj digital


En estos últimos tiempos ha surgido un interés muy grande por el desarrollo de dispositivos de tecnología vestible que ofrezcan funcionalidades a nuestra vida diaria, los famosos wearables. Actualmente han surgido una serie de modelos y prototipos de este tipo con la idea de introducirlos al mercado e ir buscando desarrollar una nueva tendencia en el mundo de la tecnología. Algunos de estos productos podemos citar el Google Glass  y los llamados SmartWatches 

Una de las principales desventajas de estos aparatos o Gadgets como comúnmente se les llama es su alto costo que en muchas ocasiones los hace menos atractivos para un mercado aun emergente.




Este proyecto esta desarrollado en Arduino, un sistema basado en micro controladores ATMEL cuya programacion a traves de las librerias implementadas en IDE de Arduino y las librerias proporcionadas en el sitio web de Adafruit. 


El hardware del dispositivo
El proyecto esta concebido para ser lo mas accesible posible en los materiales utilizados y de bajo costo. Es por esta razon que los materiales escogidos para el hardware de manera esencial se listan en la lista a continuacion. Existe la posibilidad de ampliar las capacidades del proyecto agregando nuevo hardware que le de al reloj nuevas características para explotar pero comento las esenciales.


Diagrama de la conexion de pines de los dispositivos con el microcontrolador con su mapeo de pines de Arduino.


Diagrama de bloques del proyecto Se me olvido en el diagrama un push button ups!!

Prueba del proyecto en Protoboard



Arduino Mini Pro 3.3 V 8 Mhz
El arduino Mini Pro como se menciono previamente es un sistema basado en microcontroladores ATMEL de arquitectura RISC Reduced Instrution Set.


En la imagen se muestra el diagrama de pines del microcontrolador junto con su mapeo a los pines de Arduino. Hecho el mapeo los pines se dividen en digitales y analogicos lo cuales se colorean en el diagrama. En el Mini Pro se utiliza el empaquetado tipo SOIC
 

Este Arduino en particular esta basado en un ATmega 328 cuya velocidad de procesamiento esta fijada a 8 Mhz siendo su velocidad max de 20 Mhz. Su reducido tamaño y bajo consumo lo hace ideal para este proyecto.

El Mini Pro cuenta con 14 pines digitales y 8 analogicos

La principal desventaja con la que ahi que lidiar con este modelo y en general con cualquier proyecto que involucre controladores son los recursos limitados del chip. Siendo el programa creado con librerias de alto nivel tenemos la desventaja de que agotamos conforme extendamos nuestro software la memoria que nos ofrece el microcontrolador, por lo que agregando solo las librerias que necesitemos nos ayudara mucho para nuestro proyecto. 



El Mini Pro requiere un programador FTDI para cargar el programa ya que el modelo de la placa no tiene integrado un puerto USB.




Pantalla Nokia 5110
Esta pantalla fue utilizada en el popular celular Nokia 5110. La pantalla usa el controlador PCD8544 para manejar esta pantalla gráfica monocromática de 84 columnas x 48 renglones. La nokia 5110 es facil de conseguir en tiendas de componentes electrónicos o bien via web y existe amplia documentación en varios sitios web sobre su funcionamiento y uso. Su bajo precio y tamano lo hacen una excelente opcion como pantalla para el reloj.

Despliegue de una imagen en mapa de bits con la Nokia 5110

Para este proyecto y el manejo de la pantalla se utilizo la libreria de codigo abierto de AdaFruit.
Para el manejo de esta pantalla necesitas instalar dos librerias disponibles en su descarga en el sitio web de GitHub


Libreria del driver
Libreria AdaFruit GFX
Tutorial de conexion de la Pantalla Nokia 5110
https://learn.sparkfun.com/tutorials/graphic-lcd-hookup-guide


Pines de la pantalla Nokia 5110


  • 3 botones tipo push button
  • Buzzer

RTC DS1307
El RTC es un dispositivo que se comunica via I2C con el microcontrolador. Posee un calendario incluido hasta el 2100. Este chip se puede conseguir como un modulo o bien conseguir el chip solo pero requiere el uso de componentes externos para su funcionamiento al igual que una pila tipo reloj para mantener sus registros.




Regulador de voltaje y bateria
Con la idea de que el dispositivo sea vestible debe tener una bateria y un regulador para poder llevarse de forma autonoma y recargarse. Existen muchos dispositivos para manejar la carga proveniente de baterías de litio basados en el controlador lineal de carga MCP73831 de Microchip. Para este proyecto les recomiendo el SparkFun LiPo Charger Basic Mini USB o el Micro USB Lipo de AdaFruit.

Afortunadamente el Mini Pro cuenta con un regulador de voltaje. Durante la primer prueba del prototipo use dos baterias tipo reloj CR2032 para alimentar el reloj y afortunadamente pudo funcionar pero aun no he hecho pruebas para ver que tanto puede durar el reloj funcionando de esta forma.

Opciones de ampliacion
A continuacion se enlistan las opciones de ampliacion. Dedicare otra entrada para comentar sobre las posibilidades de ampliacion.
  • Motor de vibracion y LEDS
  • Acelerometro ADXL345

El ADXL345 es un acelerometro de 3 ejes con 10 bits de resolucion. 



Los usos del acelerometro se extienden mucho mas alla de su funcion de paso doble. Este dispositivo en el caso de aparatos electronicos tiene utilidad en videojuegos que podemos manejar solo girando el aparato simulando un volante con nuestro movimiento. Los acelerometros son el sensor responsable de la rotacion de la pantalla en dispositivos electronicos actuales.    


  • Codec para reproduccion de audio VS1053

Reloj funcionando




 



La interfaz grafica
La interfaz realizada se enfoca para moverse entre las funciones del reloj de forma facil y sencilla. Utiliza 3 botones para el usuario. Dos de ellos como boton hacia adelante y atras y un boton de seleccion. Existe la idea de ampliar las funcionalidad de los botones agregando la opcion de mantener presionado el boton de seleccion para regresar al menu principal y salir asi facilmente de las funciones.










Una fotocelda de facil adquisicion permite con algo de programacion regular el brillo de la pantalla a traves de un PWM dependiendo de la luz exterior para mantener una mejor visualizacion y ahorro de energía.

Existe una opción de contador automático ubicada cuando nos ubicamos en el menu principal que sirve para determinar la inactividad del reloj. Recordemos que sin importar las funciones que manejemos y agreguemos para el reloj su principal funcion es dar la hora y fecha. Por este motivo después de un tiempo determinado de inactividad se mostrara de forma predeterminada a la funcion de fecha y hora.




Parte del hardware que puede ser de utilidad es obtener la temperatura a través de un sensor de temperatura LM35 y mostrarlo como un dato alternativo en la función de fecha. Para conocer mas informacion sobre este sensor te dejo el siguiente enlace para poder consultarlo

Hoja de datos sensor de Temp LM35


Manejo de botones e interfaz con el usuario
En esta primera version el manejo de los botones se realizo de forma secuencial es decir conforme recorremos el menu y se ejecutan las instrucciones en el momento que el hardware detecta el toque del boton conectado a un pin digital se pasa ese valor a una funcion antirebote que reconoce ek tecleo y en base al boton seleccionado se ejecuta una accion especifica.

Un problema de esto es que la detección de la tecla compite con las instrucciones que se ejecutan secuencialmente por lo que aun con varias funciones antirebote que se probaron no se corrige este problema. Una solucion seria manejar los botones a traves de interrupciones. Recuerdo que las interrupciones son recursos limitados del ATmega

Una propuesta de mejora futura para los botones que vale la pena probar se las dejo aqui

  • Una interrupcion para los dos botones de navegacion
  •  Una interrupcion para el boton Enter

La interfaz del reloj se basa en un menu principal dividido en las siguientes funciones basicas.
  • Reloj
  • Alarma
  • Configuraciones Config
  • Rutina

Pasos
Permite medir los pasos. Esta opción esta incluida en el ADXL345 y requiere interrupciones.


Imagen de la funcion de conteo de pasos. Cada vez que el acelerometro en su funcion de paso incrementa un contador y dicho conteo se despliega en pantalla.












Imagen del menu de opciones Config usado para el ajuste de contraste de la pantalla y otras opciones del reloj.


Prueba de barra horizontal animada para poder usarse en la ejecucion de una rutina deportiva





El codigo permite ampliar facilmente las opciones del menu para agregar nuevas funciones y acceso a dispositivos tales como un juego que desarrolles o bien agregar nuevas funciones a traves de otros dispositivos.

Armado del circuito

Para el armado físico del reloj se probaron una serie de ensambles para probar la forma mas adecuada y compacta de hacer el reloj.

Cuando realices tu ensamble recuerda cuidar sobre todo tus conexiones ya que una conexión mal realizada puede provocar un falso en tu circuito.

En este primer ensamble se tiene acceso al chip retirando la pantalla para facilitar su programacion y mantenimiento. Las resistencias limitadoras se encuentran soldadas a la placa para hacer un diseño compacto. El chip esta colocado sobre una base DIP de 40 pines para alojar el Mini Pro.

La pantalla Nokia 5110 opera con 3.3 V si trabajas con un micro controlador fijo a 5 V se necesitara un convertidor logico para bajar la señal cuadrada para evitar que la pantalla se llegue a fundir.  

La conexion de los botones tipo push button se realizo por una conexion en pulldown.     



Placas de base para el Arduino Mini Pro y la placa que lleva el RTC y el acelerometro




En este ensamble como en otros que se hicieron los botones estan colocados en pull Down con resistencias de 330 ohms. Aunque este ensamble es un poco impractico para ser usado como reloj puede ser muy util para pruebas y comodo para poder juegar un juego que se programe en el codigo.



En este otro ensamble se muestra una forma mas compacta y apropiada para reloj. Aqui dentro de la piel esta colocado en una placa el Mini Pro y la paca para el acelerometro y el RTC, mientras que con jumpers se conecto una placa por separado para los botones. La pantalla esta conectada con un cable plano conectado a los pines asignados en la placa del mini Pro; esta idea ayudo mucho a poder colocar la pantalla al frente sin ocupar demasiado espacio extra. Recuerda referenciar todas tus tierras a un nodo comun para evitar falsos en tu dispositivo.










Despliegue de imagenes en mapa de bits
Para el despliegue de imagenes se usaron imagenes de 84x48 pixeles transformadas en formato bmp a traves de LCD Assistant. Como nota te cuento que el codigo para mostar mapas de bits ubicado en la opcion de pasos solo puedo mostrar las imagenes que tienen la medida de 84x48


Aqui les dejo el link para poder descargar el programa LCD Assistant



Ajuste de contraste
Cuando use la Nokia 5110 me di cuenta que la nitidez de la pantalla trabaja con diferente contraste entre pantalla y pantalla por lo que agregue esta opcion en el menu CONFIG para poder ajustarlo a tu gusto.




Nuevos proyectos 

Existen muchas posibilidades no solamente relojes espero poder traerles mas noticias en una proxima entrada sobre los avances y lo que este por venir




Saludos a toda la comunidad y sigan siempre adelante


























2 comentarios:

  1. Muy interesante tu proyecto esta genial, me gustaría saber si me podrías pasar el código, ya que me ayudarías bastante con mi proyecto de la escuela técnica. Desde ya muchas gracias

    ResponderEliminar
  2. Muy interesante tu proyecto esta genial, me gustaría saber si me podrías pasar el código, ya que me ayudarías bastante con mi proyecto de la escuela técnica. Desde ya muchas gracias

    ResponderEliminar