NIKO JUANCHO
TUTORIAL DOMOTICA
editarPROYECTO DOMOTICA
editarControl.Device = "DFK 21F04"
Control.VideoFormat = "UYVY (640x480)"
Control.LiveStart
Control.MemorySnapImage
Control.MemorySaveImage "image.bmp"
Cómo digitalizar tu casa?
editarSe puede trabajar de diferentes maneras, uno de los puntos que más agradan en la Domótica es la versatilidad de la Domótica, la pueden trabajar con ayuda de tu PC, o también con ayuda de un control remoto que mediante un circuito te permite programar tu casa como anteriormente se menciono, también con programaciones estándar que son las meno versátiles gracias a que no te permiten muchas posibilidades y modificarlas te cuesta una gran suma de dinero.
con ayuda de tu PC
editarEsta forma es muy versátil gracias a que te permite tener un sin numero de posibilidades, y gracias al avance continuo de las computadoras puedes tener diferentes opciones de configuración del comportamiento de tu casa; por ejemplo, puedes desarrollar en diferentes lenguajes de programación diferentes interfaces, los cuales te permiten facilitar, complementar y adaptar el software a las necesidades personales. También pude manejar desde tu PC los diferentes puertos vi direccionales (paralelo, serie, juegos) y complementar la funcionalidad de tu casa.
Como Digitalizar tu casa (Consejos)
editarRequerimientos:
editara. Visual Basic 6.0. (No es un requerimiento fundamental si sabes programar en otro lenguaje y puedas hacer declaraciones o módulos que te permitan manejar el puerto paralelo asignándole valores y variables podrás desarrollarlo)
b. Puerto paralelo disponible. (no es necesario utilizar este puerto, gracias a que utilizando las declaraciones podrás controlar el de serie el USB y el de juegos)
c .Puerto USB disponible (únicamente cuando incluyes dentro de tu proyecto una cámara web)
d. Conocimientos Básicos de electrónica y redes. (Herramienta para desarrollar tu circuito)
e. Mucho tiempo disponible
Para la salida de datos:
editarAntes de comenzar a programar tendrás que empezar por hacer la lista de lo que quieres que tu casa haga, por ejemplo: si tu quieres que tu PC controle la temperatura, prender las luces, controlar el bienestar de tus plantas, darle seguridad a tu vivienda etc.. Después de esto tendrás que comenzar al planeación de tu circuito para esto te aconsejo utilizar un programa el cual te permite probar tus circuitos y es muy fácil de manejar es un freeware y lo podrás descargar entrando el stio wep mientras_tanto.blogia.com(esta es una pagina donde encontraras este mismo articulo con la misma informacion y con unos links adicionales), existen diferentes clases de circuitos (estos únicamente nos sirven para la salida de datos de 8bits de puerto):
====optoacoplados:==== estos circuitos son muy confiables gracias a que te permiten el aislamiento total de tu PC del circuito externo, para este circuito utilizaras optoacopladores de las siguientes referencias 4N26 o 4N27 que son de tipo Darlington(permiten manejar voltajes superiores a los 5 voltios y 1 amperio de potencia sin sufrir daños, no es estrictamente necesario utilizarlos gracias a que existen muchas clases de optoacopladores, con características similares), si trabajas con:
=====Relays:===== tendrá que anexar a tu circuito transistores Darlington para ampliar la potencia del optoacoplador y hacer funcionar el relay.
=====Triacs:===== tendrá que anexar una serie de resistencias y transistores para activar el triac. Ver siguiente imagen.
====Con circuitos Integrados:==== el circuito integrado te permite reducir algunos costos pero no están seguros como lo es con los optoacopladores, estos traen una serie de transistores, diodos y otros incorporados y hacen muchas cosas, tienes que utilizar el circuito integrado ULN2803 el cual esta conformado por transistores Darlington, tendrás que utilizar 2 condensadores no polarizados de 1uf y un regulador de potencia 7812, este circuito trabaja con relay de 5 o 12v y es mas sencillo de hacer. Aunque no lo aconsejo.
===Para la entrada de datos=== tendrá disponibles de 3 bits los tendrás que saber utilizar porque como puedes ver son muy pocos, tendrás que hacer lo siguiente:
====Con swich directos:==== esta es la forma más sencilla de manejar la entrada por el puerto paralelo gracias a que tendrás que contactar únicamente cualquiera de los pines siguientes a los de salida y unirlos con los siguientes al 25 o el 25.
====Con circuito integrado==== esta es una forma más compleja, te recomiendo mirar el siguiente diagrama de circuito, este trabaja con el integrado 4069, con el 74HC245, tendrás que anexar un controlador de potencia 7805 y 1 condensador de un 1uf.
====Sensores:==== para realizar un proyecto de Domótica tienes que pensar en que alertas utilizaras en u casa para realizar las alertas tendrás que utilizar diferentes tipos de censores que se encargaran de informara tu circuito y a tu PC lo que pasa en tu casa para que este se encargue del procesamiento, algunos tipos de censores:
=====de movimiento:===== en esta clase de censores encontramos de muchos tipos de funcionamiento, encontramos infrarrojos, de ultrasonido, de campo electromagnético, de viento, etc... los cuales tienen características muy diferentes en cuanto a tamaño, funcionavilidad y efectividad.
=====de humedad:===== estos censores son muy sencillos de hacer, aunque los venden hechos, son pequeños y fáciles de manejar.
=====de temperatura:===== Estos censores se encuentran de 2 tipos digitales y de ampolla de mercurio, los más eficaces son los de ampolla de mercurio, cloro que para esto tienes que desarrollar un circuito un poco complicado para poder introducir los datos al PC.
=====de seguridad:===== estos censores son los mas sencillos podríamos incluir los de movimiento en esta lista pero aquí encontraras mas que todo los censor que te permiten alarmar a tu PC de acciones sospechosas que sucedan en tu casa mientras tu lo predispongas, para esto puedes implementar microswich, swich magnéticos o swich ópticos, los mas aconsejables son los microswich gracias a que son mucho mas difíciles de violar.
Como probar el funcionamiento de tu circuito?
editarPara probar el correcto funcionamiento de tu circuito debes tener hacer una serie de pruebas las cuales tienes que diagnosticar, tienes que mirar posibles opciones vulnerables que posea, para hacer el diagnostico de este te aconsejo utilizar un programilla que lo podrás bajar haciendo clik aquí antes de continuar se nos hará necesario sabernos la posición de memoria del puerto paralelo en nuestro PC. o la dirección en memoria, que viene a ser lo mismo. generalmente la dirección en memoria del puerto paralelo se ve así:
378------dataport
379------statusport
37A------controlport
Si no sabes la dirección o no estas seguro puedes hacer varias cosas para saber la dirección, una es durante el power on self testde la bios irte con pause hasta que veas algo como el intervalo de salida / entrada del puerto paralelo, en XP puedes irte a propiedades de mi PC> ficha hardware > administrador de dispositivos > puertos COM y LPT > da click en el + y luego posicionate en el LPT > click derecho > propiedades > dale a la ficha recursos > y ahi tendras el intervalo entrada/salida del puerto.
También tendrás que utilizar cualquiera de los 2 siguientes archivos los cuales son .dll los cuales son los que permiten manejar el puerto paralelo de tu PC busca y descarga el inpout32.dll o el io.dll y colócalo en el directorio c:/windows/system32.
Programar en visual Basic 6.0
editarEste sencillo programa nos permite hacer varias cosas con nuestro PC si trabajas con otro lenguaje es probable que no te funcione la sintaxis que en esta parte trabajaremos.
Primero utilizaremos la dirección 378 para poder enviar voltaje al puerto paralelo, lo ideal a la hora de programar con esta dll es crearte un modulo nuevo. Menú proyecto > agregar modulo, luego nos saldrá una ventana que nos preguntara si es uno existente o uno nuevo.
en el modulo vamos a declarar esto:
editarPublic Declare Function Inp Lib "inpout32.dll" (si trabajas con el oi.dll tendrás que colocar ese archivo de lo contrario no te funcionara)_ Alias "Inp32" (ByVal PortAddress As Integer) As Integer Public Declare Sub Out Lib "inpout32.dll" _ Alias "Out32" (ByVal PortAddress As Integer, ByVal Value As Integer)
Creamos el modulo y lo guardamos, teniendo las instrucciones empezamos con un ejemplo sencillo:
Crea un formulario y agrega a a este lo siguiente:
a. un nuevo textbox
b. un nuevo botón
la instrucción (con la inpout32.dll o el oi.dll) para poder enviar datos al puerto paralelo es la mas sencilla que existe.
Su sintaxis es así:
editarout(valor del puerto paralelo)
Por ejemplo:
Out &H378, 255
Hay que tener en cuenta también el tipo de dato que le enviaremos al puerto:
0
2
4
8
16
32
64
128
256
Esto me permite enviar voltaje uno por uno a cada pin del dataport o pines de datos que es lo mismo para poner en cero voltios a todos los pines de datos se usa el: 0 ( out &H378, 0). para poner un 1 lógico(5 voltios) en el pin D1 se usa 2 (out &H378, 2) y así uno por uno hasta que para poner todos los pines de datos se utiliza el: 255 (out &H378, 255)
esto seria un programilla elemental con un botón para cada dato:
editarPrivate Sub Command1_Click()
Out &H378, 1
End Sub
Private Sub Command2_Click()
Out &H378, 2
End Sub
Private Sub Command3_Click()
Out &H378, 4
End Sub
Private Sub Command4_Click()
Out &H378, 8
End Sub
Private Sub Command5_Click()
Out &H378, 16
End Sub
Private Sub Command6_Click()
Out &H378, 32
End Sub
Private Sub Command7_Click()
Out &H378, 64
End Sub
Private Sub Command8_Click()
Out &H378, 128
End Sub
Private Sub Command10_Click()
Out &H378, 255
End Sub
Private Sub Command9_Click()
Out &H378, 0
End Sub
Si quisieras enviar un 1 logico a varios pines de datos, únicamente debes sumar los datos, Por ejemplo, para mandar datos a la vez a D1 y a D2 se usaría 2 + 4 , es decir quedaría así la orden:
out &H378, 6
Control de cámara web:
editarEl control de una cámara de esta forma te servirá para el proyecto de Domótica que estamos desarrollando también lo puedes implementar para otro tipo de proyectos ya que se hace por medio de un control .ocx pre programado que nos facilitara cualquier problema con el puerto USB, lastimosamente en control es un shareware.
Lo puedes utilizar para mirar que sucede en tu casa o gracias a la programación te permite almacenara en una base de datos la actividad de las cámaras y si se programa te puede grabara únicamente cuando detecte movimiento por medio de censores conectados al circuito del puerto paralelo, y te tomara fotos cuando tu desees.
Para bajar el control tendrás que hacer Click aquí
Este trae mucha información, ejemplos y se trae un propio instalador para mayor facilidad.
con estas instrucciones podrás hacer un sencillo programa para mostrar una imagen en vivo:
editarControl.Device = "DFK 21F04"
Control.VideoFormat = "UYVY (640x480)"
Control.LiveStart
Citar:
editarControl.Device = "DFK 21F04"
Debes colocar el nombre de tu cámara que se encuentra en tu sistema operativo, por ejemplo: DGS 21F04
Citar:
editarControl.VideoFormat = "UYVY (640x480)"
Para la resolución del video debes seleccionar el correcto para que el programa corra de manera correcta, de lo contrario tu programa no se podrá ejecutar (para encontrar la resolución debes mirar la configuración de tu cámara digital o cualquier otro software que funcione con ella).
Citar:
editarControl.LiveStart
Esta es la orden que hace el llamado a la tomar del video en vivo (sí presionas dos veces veras un error brusco en tiempo de ejecución)
Citar:
editarControl.Device = "DFK 21F04"
Control.VideoFormat = "UYVY (640x480)"
Control.LiveStart
Boton.Enabled = False (esta opción se desactiva para evitar un error de tiempo de ejecución)
Este código se coloca en el botón, se indica a la cámara que haga una toma en vivo.
Para tomar fotos:
editarCitar:
editarControl.Device = "DFK 21F04"
Control.VideoFormat = "UYVY (640x480)"
Control.LiveStart
Control.MemorySnapImage
Control.MemorySaveImage "image.bmp"
Citar:
editarControl.MemorySnapImage
Toma o captura la imagen que este en ese momento esta enfrente de la cámara:
Citar:
editarControl.MemorySaveImage "image.bmp"
Si quieres mantener las imágenes y guardarlas en tu PC tendrás que trabajar con commondialogs de Windows en este caso usaras las propiedades de showsave. que te permitirá un commondialog? pues usar la clásica ventana de guardar en donde nos pregunta el directorio en donde guardaras la imagen y que nombre le asignaras. aunque para fotos automáticas seria una ubicación como C:/archivo fotos Demótica.
como grabar video .avi
editarCitar:
editarControl.Device = "DFK 21F04"
Control.VideoFormat = "UYVY (640x480)"
Control.AviStartCapture "video.avi", "MJPEG Compresor"
Citar:
editarControl.AviStartCapture "video.avi", "MJPEG Compresor"
lo mismo guarda video.avi y "MJPEG Compresor" me parece que es el tipo de archivo es relativamente bueno.