Usuario:NIKO JUAN
De Wikilibros, la colección de libros de texto de contenido libre.
Contenido
|
[editar] TUTORIAL DOMOTICA
[editar] ¿Cómo digitalizar tu casa?
Se 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 menos versátiles gracias a que no te permiten muchas posibilidades y modificarlas te cuesta una gran suma de dinero.
[editar] con ayuda de tu PC
Esta 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 bi-direccionales (paralelo, serie, juegos) y complementar la funcionalidad de tu casa.
[editar] Cómo Digitalizar tu casa (Consejos)
[editar] Requerimientos:
- Visual Basic 6.0. (No es un requerimiento fundamental si sabe 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)
- 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; tambien si dispones de un puerto que utilice 16 o 32 bits sera mejor gracias a que podrás manejar mayor cantidad de funciones de tu casa)
- Puerto USB disponible (únicamente cuando incluyes dentro de tu proyecto una cámara web)
- Conocimientos Básicos de electrónica y redes. (Herramienta para desarrollar tu circuito)
- Mucho tiempo disponible
[editar] Para la salida de datos:
Antes 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 la 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 sitio web mientras_tanto.blogia.com (esta es una página donde encontraras este mismo artículo con la misma información y con unos links adicionales), existen diferentes clases de circuitos (estos únicamente nos sirven para la salida de datos de 8 bits 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 es tan seguro 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 switch 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 pines que se encuentran en la linea siguiente a las pines activos bidireccionales (20 al 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 tu casa para realizar las alertas tendrás que utilizar diferentes tipos de sensores 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 sensores:
=====de movimiento:===== en esta clase de sensores 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, funcionabilidad y efectividad.
Podemos de alguna manera hacer los sensores de movimiento gracias a unos instrumentos que nos pueden ayudar a hacerlos, para estos tendremos que utilizar un productor y un receptor de rayos infrarrojos, con esto y con el diseño del circuito podríamos lograr hacer los sensores de movimiento mucho más pequeños y mucho mas económicos, hay una variedad de productos que nos permiten producir este tipo de rayos, la única dificultad es la eficacia en cuanto a la activación que este tenga con el movimiento.
=====de humedad:===== estos sensores son muy sencillos de hacer, aunque los venden hechos, son pequeños y fáciles de manejar.
=====de temperatura:===== Estos sensores 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 sensores son los mas sencillos podríamos incluir los de movimiento en esta lista pero aquí encontraras mas que todo los sensor 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 kliokd
[editar] ¿Cómo probar el funcionamiento de tu circuito?
Para 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.
[editar] Programar en visual Basic 6.0
Este 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. para crearlo tendras que ir a:
- Menú >
- proyecto >
- agregar modulo.
Luego nos saldrá una ventana que nos preguntara si es uno existente o uno nuevo.
En el módulo que creamos vamos a declarar esto:
'''Declaracion del puerto LP'' Public Declare Function Inp Lib "inpout32.dll" _ 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) '''esta es una declaracion la cual me permite mediante el archivo inpout.dll hacer 'un control del puerto lp de tu pc de acuerdo con variables especificadas en el proyecto podras modificar el valor de este.''
Creamos el módulo y lo guardamos, teniendo las instrucciones empezamos con un ejemplo sencillo:
Crea un formulario y agrega a a este lo siguiente:
- un textbox
- un 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.
[editar] Su sintaxis es así:
out(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
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)
[editar] esto seria un programilla elemental con un botón para cada dato:
Private 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
[editar] Control de cámara web:
El 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 sensores 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.
[editar] con estas instrucciones podrás hacer un sencillo programa para mostrar una imagen en vivo:
Control.Device = "DFK 21F04" Control.VideoFormat = "UYVY (640x480)" Control.LiveStart
Control.Device = "DFK 21F04"
Debes colocar el nombre de tu cámara que se encuentra en tu sistema operativo, por ejemplo: DGS 21F04
Control.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).
Control.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)
Control.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.
[editar] Para tomar fotos:
Temdras que citar lo siguiente:
Control.Device = "DFK 21F04" Control.VideoFormat = "UYVY (640x480)" Control.LiveStart Control.MemorySnapImage Control.MemorySaveImage "image.bmp"
Luego:
Control.MemorySnapImage
Toma o captura la imagen que este en ese momento esta enfrente de la cámara:
Control.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 usarás las propiedades de showsave. ¿Qué 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.
[editar] como grabar video .avi
Control.Device = "DFK 21F04" Control.VideoFormat = "UYVY (640x480)" Control.AviStartCapture "video.avi", "MJPEG Compresor"
Control.AviStartCapture "video.avi", "MJPEG Compresor"
lo mismo guarda video.avi y "MJPEG Compresor" me parece que es el tipo de archivo es relativamente bueno.
[editar] Desarrollando el software del Proyecto
Empecé con el desarrollo del proyecto este tiene unas características muy propias gracias al circuito y gracias a mi diseño el cual es casual y sencillo, el software del proyecto lo estaré modificando día tras día y cualquier usuario podrá descargar la ultima versión vigente del proyecto en la siguiente dirección, en esta encontraras El ejecutable “.exe” y los archivos de recursos en los cuales se encuentran los formularios los módulos y el archivo dll para que puedas modificarlo de acuerdo a la licencia que se encontrara el un archivo .txt llamado Licencia y en los formularios, implícitos.
Podemos ver las siguientes fotos del proyecto en las cuales pueden ver diferentes tipos de funcionalidad indicadores gráficos, seguridad, enfoque de cámara, e imágenes en vivo enviadas por la cámara web, también este procesa los datos que se reciben del puerto, las procesa y se encarga de darles algún tipo de aviso gráfico.
Continuación Revelaré las líneas de código y los objetos a las que pertenecen, con pasos puntales.
[editar] Pasos
[editar] 1.
Crea el formulario numero 1 y coloca los adornos que desees para la presentaion de tu proyecto, apartir de esto coloca un Text y un Conmandbutom y cre a un Label sin nungun tipo de texto y este mandalo detrás de una imagen donde no se vea.
En el comandButon coloca lo siguiente:
Puedes hacer click donde se encuentra el puntero y escrive el siguiente codigo:
Private Sub Command1_Click() ''' la variable a me determina el valor que tomara la contraseña durante la seccion del proyecto.'' a = Text1.Text Label5.Caption = a ''' el if me indica que si a = contraseña no tine un valor determinado se debe determinarle un valor.'' If a = "" Then MsgBox "Porfavor Ingrese Un Codigo De Seguridad Valido" Else ''' me indica el paso siguiente a la asignacion de la contraseña.'' Form2.Show form1.Visible = False End If End Sub
[editar] 2.
Crea el formulario numero 2 y coloca los adornos que desees para la presentaion de tu proyecto, apartir de esto coloca 5 CommandButton's, 5 Frame's, 9 OptionButton's, 7 Shape's y 2 Timer's, y de acuerdo con este codigo coloca los valores en cada uno de los Objetos.
Option Explicit ' determina una clase de variable valida Dim a, b, c, d, e, f, g, h, i, j, k, l, m, n, X As Integer Dim Port
Private Sub Command1_Click() ' permite la salida de datos simultaneos gracias gracias a la suma de la variable que me determina el estado de la alarma ' da una salida por le puerto Out (Port), b + m ' activa el timer1 y me asigna un valor para el intervalo de accion de este Timer1.Interval = 50 ' muestra un cambio grafico Shape2.BackColor = 65280 End Sub
Private Sub Command2_Click() ' permite la salida de datos simultaneos gracias gracias a la suma de la variable que me determina el estado de la alarma ' da una salida por le puerto Out (Port), d + m ' activa el timer1 y me asigna un valor para el intervalo de accion de este Timer1.Interval = 50 ' muestra un cambio grafico Shape2.BackColor = 65280 End Sub
Private Sub Command3_Click() ' permite la salida de datos simultaneos gracias gracias a la suma de la variable que me determina el estado de la alarma ' da una salida por le puerto Out (Port), e + m ' activa el timer1 y me asigna un valor para el intervalo de accion de este Timer1.Interval = 50 ' muestra un cambio grafico Shape2.BackColor = 65280 End Sub
Private Sub Command4_Click() ' permite la salida de datos simultaneos gracias gracias a la suma de la variable que me determina el estado de la alarma ' da una salida por le puerto Out (Port), c + m ' activa el timer1 y me asigna un valor para el intervalo de accion de este Timer1.Interval = 50 ' muestra un cambio grafico Shape2.BackColor = 65280 End Sub
Private Sub Command5_Click() ''' abre el formulario # 4'' Form4.Show End Sub
Private Sub Form_Load() '''Seleccion automatica del puerto Lp mas comun de un Pc.'' Port = &H378 ''' asiganacion de numeros a las variables que van a regir la ejecucion del formulario.'' a = 0 '''=reset de salidas'' b = 1 '''=activacion Bit 1'' c = 2 '''=activacion Bit 2'' d = 4 '''=activacion Bit 3'' e = 8 '''=activacion Bit 4'' f = 16 '''=activacion Bit 5'' g = 32 '''=activacion Bit 6'' h = 64 '''=activacion Bit 7'' i = 128 '''=activacion Bit 8'' j = 256 '''Valores estandar que van a tomar los objetos del formulario para el comienso de su ejecucion.'' Shape1.BackColor = 255 Shape2.BackColor = 255 Shape3.BackColor = 255 Shape4.BackColor = 255 Shape5.BackColor = 255 Shape6.BackColor = 255 Shape7.BackColor = 255 Option4.Value = True ''' reset de salidas por el puerto'' Out (Port), a End Sub
Private Sub Option3_Click() ''' especifico la variable la cual me servira para la activacion de la alarma'' k = f Out (Port), f ''' cambio de color'' Shape1.BackColor = 65280 End Sub
Private Sub Option4_Click() ' especifico la salida de datos que tendra el PC al no tener alarma k = f - f Out (Port), k ' cambio de color Shape1.BackColor = 255 End Sub
Private Sub Option7_Click() 'Seleccion de puerto 378 Port = &H378 End Sub
Private Sub Option6_Click() 'Seleccion del puerto 278 Port = &H278 End Sub
Private Sub Option5_Click() 'Seleccion del puerto 3BC Port = &H3BC End Sub
Private Sub Option8_Click() ' especifico la salida de datos que tendra el PC al no tener alarma o no tener activado la 'opcion d luces automaticas l = g - g ' cambio de color Shape3.BackColor = 255 End Sub
Private Sub Option9_Click() ' especifico la salida de datos que tendra el PC al no tener alarma l = g ' cambio de color Shape3.BackColor = 65280 End Sub
Private Sub Timer1_Timer() ' me permite tener no generar comflictos en la ejecucion del pograma y poder sacar bit simultaneos m = k + l Out (Port), m ' cambio de color Shape2.BackColor = 255 End Sub
Private Sub Timer2_Timer()
' recepcion de datos por el puerto LP
' dar un cambio visual al tener una entrada = I por el bit 1 de entrada
If Inp(Port + 1) = 40 Then
' cambio de color
Shape7.BackColor = 65280
Else
' dar un cambio visual al tener una entrada = 0 por el bit 1 de entrada
' cambio de color
Shape7.BackColor = 255
End If
' dar un cambio visual al tener una entrada = I por el bit 2 de entrada
If Inp(Port + 1) = 48 Then
Shape6.BackColor = 65280
Else
' dar un cambio visual al tener una entrada = 0 por el bit 2 de entrada
' cambio de color
Shape6.BackColor = 255
End If
' dar un cambio visual al tener una entrada = I por el bit 3 de entrada
If Inp(Port + 1) = 24 Then
Shape5.BackColor = 65280
' dar un cambio visual al tener una entrada = 3 por el bit 2 de entrada
' cambio de color
Else
Shape5.BackColor = 255
End If
If Inp(Port + 1) = 32 Then
Shape6.BackColor = 65280
Shape7.BackColor = 65280
' dar un cambio visual al tener una entrada = 3 por el bit 2 de entrada
' cambio de color
End If
If Inp(Port + 1) = 16 Then
Shape6.BackColor = 65280
Shape5.BackColor = 65280
' dar un cambio visual al tener una entrada = 3 por el bit 2 de entrada
End If
If Inp(Port + 1) = 8 Then
Shape7.BackColor = 65280
Shape5.BackColor = 65280
' dar un cambio visual al tener una entrada = 3 por el bit 2 de entrada
End If
If Inp(Port + 1) = 0 Then
Shape7.BackColor = 65280
Shape6.BackColor = 65280
Shape5.BackColor = 65280
' dar un cambio visual al tener una entrada = 3 por el bit 2 de entrada
End If
'-----------------------------------------------------------
' dar un cambio visual al activar la alarma
' cambio de color
If Option3.Value = True And Shape5.BackColor = 255 Then
' muestra la imagen de la sirena
Image1.Visible = True
Form3.Show
Else
' quita la imagen de la sirena
Image1.Visible = False
End If
If Option3.Value = True And Shape6.BackColor = 255 Then
' muestra la imagen de la sirena
Image1.Visible = True
Form3.Show
Else
' quita la imagen de la sirena
Image1.Visible = False
End If
If Option3.Value = True And Shape7.BackColor = 255 Then
' muestra la imagen de la sirena
Image1.Visible = True
Form3.Show
Else
' quita la imagen de la sirena
Image1.Visible = False
End If
End Sub
[editar] 3.
Crea el formulario numero 3 y coloca los adornos que desees para la presentación de tu proyecto, apartir de esto coloca 1 CommandButton, 1 Text, 4 Label's y 2 Timer's, y de acuerdo con este codigo coloca los valores en cada uno de los Objetos.
Private Sub Command1_Click()
''' da una autentificacion de la contraseña para la desactivacion de la alarma''
Label4.Caption = Text1.Text
If form1.Label5.Caption = Label4.Caption Then
Form2.Option4.Value = True
Form3.Visible = False
Text1.Text = ""
Else
''' me muetra un mensaje ante una posible violacion al sistema''
MsgBox "''La clave no es correcta intentelo de nuevo''"
End If
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Cancel = 1 '''evita que se salga mediante la 'X'''
End Sub
Private Sub Timer1_Timer() ''' hace que la imagen de peligro parpadee'' Picture2.Visible = False Picture1.Visible = True Timer2.Interval = 500 End Sub
Private Sub Timer2_Timer() Picture2.Visible = True Picture1.Visible = False Timer1.Interval = 500 End Sub
[editar] 4.
Tienes que crear un modulo en el cual tienes que hacer una declaración para utilizar y domonar el archivo Inpout32.dll el cual se encarga del puerto paralelo.
'''Declaracion del puerto LP'' Public Declare Function Inp Lib "inpout32.dll" _ 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) '''esta es una declaracion la cual me permite mediante el archivo inpout.dll hacer'' '''un control del puerto lp de tu pc de acuerdo con variables especificadas en el proyecto podras modificar el valor de este.''
[editar] Informacion
Para Mayor informacion sobre el proyecto me podras contactar a la siguiente direccion de correo vargas_j@javeriana.edu.co me puden agregar al messengercon esta misma direccion o con juancho_vargas18@hotmail.com , si deseas descargar la ultima version subida a la red el domingo 24 de abril del proyecto entra a la siguiente pagina http://www.scigwi.org/Members/juan_var , aqui encontraras la primera version, los recursos y algunos programillas para descargar los cuales te serviran para desarrollar un proyecto muy bueno, si quieres seguir muy de cerca a este proyecto entra a http://proyecto_domotica.blogia.com este es el diario del proyecto.
Yo acepto tener multi-license en mis aportes, a menos que lo declare de otra manera, bajo GFDL, Creative Commons Attribution Share-Alike license draft version 1.0 and version 2.0 version 2.0 y Creative Commons Attribution Non-Commercial Share-Alike license version 2.0. Si usted desea usar mis contribuciones protegidas bajo los terminos de Creative Commons, por favor revise CC dual-license y Multi-licensing guides.















