Cambiando el contenido de una variable
Aunque podemos cambiar el contenido de las variables en el módulo PINK,
manualmente, haciendo uso de la página http://xx.xxx.xx.xxx/VV_Show.htm,
lo que realmente nos interesa ahora es poder hacerlo desde nuestro
circuito en la tarjeta de desarrollo con BASIC Stamp.
Haciendo que nuestro circuito con BASIC Stamp escriba en las
variables
Montaremos otro circuito de prueba para ver cómo actúa el BASIC Stamp
conjuntamente con el PINK. El circuito podría ser el de controlar la
temperatura de la casa mediante un sensor de temperatura DS1620.
Este circuito integrado nos irá enviando continuamente las lecturas de
temperatura al módulo PINK, de manera que podremos leer desde cualquier
lugar del mundo, a través de una página web, la temperatura que hace en
nuestra casa en ese momento.
El circuito que montamos está bien explicado en el Experimento nº1 del
manual Mediciones Ambientales de Parallax (disponible en
castellano desde nuestra sección de MANUALES). El circuito a montar se
ve claramente en este esquema
y en esta imagen.
El listado del código para el BASIC Stamp puede ser el siguiente:
' {$STAMP BS2}
' {$PBASIC 2.5}
' Taller interactivo: Lectura de la
temperatura
Arial, Helvetica, sans-serif" size="1"">x
VAR Byte
c VAR Word
NBVAR VAR Word
RST
PIN 13
CLK PIN 14
DQ PIN 15
Arial, Helvetica, sans-serif" size="1"">OUTS=%0000000000000000
DIRS=%1111111111111101
HIGH RST
SHIFTOUT 15,14,LSBFIRST,[238]
LOW RST
Arial, Helvetica, sans-serif" size="1"">bucle:
HIGH RST
SHIFTOUT DQ,CLK,LSBFIRST,[170]
SHIFTIN DQ,CLK,LSBPRE, [x]
LOW RST
c = x*5
SEROUT 8, 396,["!NB0W01:", DEC c, CLS]
PAUSE 10000
GOTO bucle
Actuación del DS1620
Según este listado, tratamos de hacer que las líneas con OUTS y DIRS
se encarguen de definir el estado inicial de los pines, y a
continuación las siguientes tres líneas se encargan de "avisar" al
DS1620 (HIGH RST), enviar un comando de inicio de conversiones
(SHIFTOUT) y prepararlo posteriormente para el bucle de obtención de
datos (LOW RST).
Asi pues, el bucle (con la etiqueta "bucle") se encargará de ir
obteniendo las lecturas mediante las instrucciones SHIFTOUT y SHIFTIN.
La primera envía datos (el bit menos significativo primero) en formato
stándar sincrónico SPIN; la segunda, recibe los datos en el mismo
formato SPIN. Dichos datos son almacenados en la variable x, que es la
que utilizaremos para obtener la temperatura en grados Celsius.
El byte que el DS1620 envía, siempre es el doble de la temperatura. Si
la temperatura es de 25,5 grados Celsius, entonces el byte que enviará
el DS1620 será 51. De manera que las lecturas de temperatura que
obtendremos serán en intervalos de medio grado C; esta es la resolución
mínima que detecta el sensor. Así pues, en la línea de cálculo para
obtener en la variable "c" el valor de la temperatura, en vez de dividir
por 2 hemos multiplicado por 5, puesto que el BASIC Stamp usa
aritmética entera (elimina el resultado del cociente). De esta manera,
obtenemos lecturas como, por ejemplo, "275" para mostrarnos 27,5
grados Celsius, por lo que conseguimos la precisión de medio grado
que de la otra manera perderíamos.
Envío de datos al PINK
Pero el proyecto no aportará nada nuevo si no hacemos uso del PINK. Asi
pues, con la línea de código
SEROUT 8, 396,["!NB0W01:", DEC c, CLS]
hacemos que el BASIC Stamp envíe reiteradamente la lectura de la
temperatura (a través de la variable "c") que va recogiendo el DS1620,
al módulo servidor web del PINK, para que esta sea accesible desde
Internet.
Esta es la imagen final del circuito: BOE
con DS1620 conectada al PINK (el buzzer corresponde a un
circuito más avanzado de termostato, por si queremos controlar también
los niveles máximo y mínimo de temperatura). Ahora, para poder
visualizar la temperatura, sólo tenemos que acceder a la página http://XXX.XXX.XXX.XXX/VV_Show.htm
(donde "XXX.XXX.XXX.XXX" es la dirección IP pública de nuestra
conexión). Esta podría ser la imagen de pantalla: Leyendo
la temperatura.