Archive for the 'lcd' Category

Minestation. A Weather station for Minecraft

Lunes, noviembre 14th, 2011

Minestation 0.1
Hola,
Esta vez la entrada va a ser algo diferente a lo habitual.
Os voy a presentar un proyecto en el que me he enrolado con mi amigo @xbelanch.
Minestation es una frikada de dos amigos a los que les gusta el Minecraft.
La idea era ¿porqué no implementar una estación metereológica que nos informe del tiempo en el mundo virtual de Minecraft?
Podremos saber cuando va a llover, hacer tormenta o nevar y durante cuanto tiempo. Y también cuando va a dejar de hacerlo.
Además dispone de un reloj virtual y un calendario del mundo en el que se está jugando, muy útil para aquellos que quieran quedar a una hora determinada en un sitio concreto usando también las coordenadas tipo GPS que ofrece minestation .
Es un shield sencillo para Arduino que usa una LCD de tipo Nokia 6100 y que cualquiera puede construirse, jugar con él , hackearlo o darle otros usos ya que es un proyecto de hardware abierto que pronto estará disponible en minestation.me y económico para quien quiera hacerlo.
Es posible que se lleguen a vender algunas unidades siempre y cuando exista una mínima cantidad requerida.
Es un gadget simplemente y una prueba para hacer más cosas más adelante.
Tambien es mi primer proyecto con Arduino, y eso que soy “a PIC man”, pero he tenido que probar esta tecnología de la que tanto se habla en la red y que tanto ha revolucionado el mundo del DIY.
Ha merecido la pena y sobre todo haber conocido a gente del mundillo Arduino.
El proyecto se encuentra hospedado en minestation.me y allí podréis descargar los fuentes para Arduino, los ficheros de Eagle y toda la información sobre el montaje.
Tambien podréis ver las diferentes fases del proceso de prototipado, desde las primeras ideas hasta el resultado final en forma de shield.
Pero esto no acaba aquí. Pronto llegará una versión que no necesitará de un Arduino, ya que lo llevará integrado en el propio minestation.
Espero que os guste, porque yo he disfrutado haciéndolo un montón.

Hello Minestation! from minestation.me on Vimeo.

Salu2!

Termometro grafico LCD nokia 3310

Sábado, octubre 20th, 2007

Graphic Thermometer with Nokia LCD

Navegando por la Web, uno se encuentra a veces cosas curiosas.
En esta ocasión me encontré con un montaje de un termómetro con un DS1820 ( 1-wire ) y una LCD gráfica de un teléfono nokia 3310.
El montaje era sencillo y funcional. Lo podeis ver en la pagina de Ivica Novakovic
Entonces, recordé que tenía alguno de estos LCDs y algún DS1820 y me dije, vamos a probar la LCD gráfica y el sensor de temperatura 1-wire con los mínimos componentes posibles ( como siempre ) y apurando al máximo la memoria del PIC.
Sometimes, surfing by the WEB i find cool gadgets.This time, i found a thermometer with a DS1820 (1-wire) and a graphical LCD from a nokia 3310 phone. The device was simple and functional. You can to see it at Ivica Novakovic Webpage.
Then, I remembered that it had some of these LCDs and some DS1820 and I said myself, we are going to test the graphical LCD and the sensor of temperature with less components that was possible (like always) and taking advantage of PIC’s memory at maximun.

¿Como se podia mejorar el circuito ya de por sí muy simple?
Is possible to improve this simple circuit?

1- Eliminando un par de condensador antiparásitos, ya que va alimentado por una pila botón de 3v
2- Usar un PIC con más memoria para implementar algo novedoso, en este caso una gráfica en pantalla con muestras tomadas en intervalos programados. ( Gracias DeSIG por la sugerencia de la gráfica ).
1- Suppresing a pair of capacitors suppresors, because the circuit is powered by a 3v battery.
2- Using a PIC with more memory to implement a new feature, in this case a graph in screen with samples taken in programmed intervals (DeSIG Thx for the suggestion of the graph).

Vamos a ello:
Esto es lo que tenía por ahí ( bueno, la PCB no la tenía… hubo que hacerla :) )
Come on do it:

These are some used components that i had at home:

Si observamos el esquema, vemos que todo está reducido a la mínima expresión, un PIC12F683, un condensador ( necesario para la LCD ), un DS1820 y su resistencia de pull-up y la lcd de un viejo nokia 3310.

If we observed the schematic, we see that device is reduced to the minimum expression, a PIC12F683, a capacitor (needed for the LCD), a DS1820 with their resistance of pull-up and the LCD from an old nokia 3310 phone.

Así que todo depende del software.
Bien la idea es conseguir que la pantalla nos muestre algo así:

All in device depends of PIC software.
The purpose is that LCD seems as this:

Arriba tenemos la temperatura actual, en el centro una gráfica con la línea de 0º centígrados y subdividida en divisiones de 10º Centígrados y a la derecha un termómetro animado, que marca la temperatura hasta un máximo de +40ºC y un mínimo de -40ºC. La escala del termómetro se cambia automáticamente al pasar a valores negativos de temperatura.
La gráfica, va poniendo puntos a intervalos programados de tiempo, que van desde 1 seg. aproximadamente, hasta unos 65535 segundos con un máximo de 57 valores en pantalla.
Hay que pensar que esto no es un montaje profesional, por supuesto, y las divisiones en pantalla, no tienen resoluciones de 0,5º ni mucho menos.
Cada pixel ( en la escala vertical ) representa un intervalo de 2º de temperatura, con lo que el pixel que está justo encima del 0, se marcará cuando el valor de la temperatura esté comprendido entre 2ºC y 4ºC y así todos hacia arriba.
El indicador de temperatura ( los dígitos ) tiene una resolución real de 0.5ºC, que viene dada por el DS1820. Y la animación del termómetro… pues como uno de mercurio ¿acaso podemos saber el valor real en estos :) ) ?.

El intervalo de tiempo entre muestra y muestra, se puede ajustar, pero como lo importante era reducir al máximo los componentes, este ajuste solo se puede hacer antes de grabar el código en el PIC, ya que se usan los valores contenidos en las posiciones 0x21FE y 0x21FF de la EEPROM de datos del PIC en segundos (1seg – 65535seg ).
Por ejemplo, si queremos capturar la temperatura en intervalos de 5 minutos, tenemos que 5 minutos = 5*60 segundos = 300segundos, que en hexadecimal es 0x012C así que en la dirección de memoria 0x21FE ponemos como valor 0×01 y en la 0x21FF ponemos como valor 0x2C. Programamos el pic, y la gráfica se actualizará cada 5 minutos… bueno, más o menos.

On top we have the temperature, in the center a graph with the line of 0ºC, subdivided in Centigrade divisions of 10º and to the right an animated thermometer, that marks to the temperature until a maximum of +40ºC and a minimum of -40ºC.
Termometer scale change automatic if temperature is under 0ºC.
The graphic, is made with dots at programed time intervals. (Between 1 – 65535 seconds)and 57 temp values on LCD ).
This is not a profesional device, of course!. Every pixel on vertical scale, represents 2ºC. Device’s precision is 0.5ºC (precision of DS1820).
The interval (in seconds) between a pair of samples, is stored in PIC Data Eeprom and only can be modified in PIC code before to program it.
The value is stored as a pair of bytes, MSB byte at 0x21FE and LSB byte at 0x21FF, as you can see:

Un ejemplo gráfico:
A graphical example:

El diseño es muy simple, y he aprovechado para hacer dos placas, una con PIC en encapsulado SO8 y la otra en formato DIP.
Hay que fijarse a la hora de montar el circuito ( si alguien lo monta ) que el PIC en DIP, va por el lado contrario a las pistas de la PCB y el de encapsulado SO8, soldado sobre la cara de pistas.
El condensador y la resistencia son tipo SMD recuperados de una vieja placa base, así como el portapilas y el interruptor de ON/OFF.

Circuit is very simple.
I made two PCB types, one with PDIP package PIC and another with SO8 (SOIC) package.
Is important to see that DIP chip is soldered on opposite layer routed and the SO8 package need to be soldere on routed layer.
Capacitor (SMT), resistor (SMT), battery holder and interruptor was recovered from an old motherboard.

Esta es la disposicion de los componentes en la PCB de tipo DIP
Component mask over PCB PDIP style:

y su fotolito:
And the PCB artwork:

Y alternativamente sta es la disposicion de los componentes en la PCB de tipo SO8
Alternative component mask with SO8 package:

y su fotolito:
And the artwork:

Hacemos la PCB, taladramos, soldamos, conectamos y ….
Aqui la tenemos funcionando
We make the PCB, drill it and weld the components and…
Here is the result working:

Lo que hay debajo del LCD
Under the LCD…

Y por detrás
and the back

Como había pedido muestras del 12F683 a Microchip y no me han llegado, he usado el 16F684 que tiene las mismas caracteristicas de memoria que el 12F683 y se corresponde en patilla, aunque le sobre 6 patillas en el zócalo.
Así que el código disponible, de momento solo vale para el 16F684, pendiente de que me lleguen los 12F683 para modificarlo, que supongo que la dirección de la EEPROM donde guardo el intervalo de tiempo de captura me traerá un problema con la calibración del oscilador del 12F.

I was request a samples of 12F683 to Microchip and at the time of make this, i haven’t it. I used a 16F684 that have the same amount of Flash an Eeprom and is lead compatible with 12F683 for to start the device.
The PIC code is only valid for the 16F684 ( by now ) until i receive the 12F683 samples.
Another time, sorry for my poor english, sad.

Los ficheros:
Files:


Copy Protected by Tech Tips's CopyProtect Popup Images .