Usar un sensor de puerta magnetico en un Raspberry Pi

Ya ví cómo controlar un relé, ahora le agregaré un sensor de puerta para que cuando ésta se abra pueda ejecutar una acción, como activar un relé.

Materiales

  • Raspberry Pi (sigo usando el 2, pero también debería servir el 1)
  • Sensor magnético
  • Cable para conectar ambas cosas, se necesitarán varios metros dependiendo de la distancia.

 

 

image

 

Conexión

Por el extremo del sensor se deben conectar los dos cables y se debe instalar junto a la puerta o ventana a monitorear

image

 

En el extremo del Raspberry se debe conectar un cable por un pin GND y el otro en cualquier pin GPIO. Para encontrar los pins y su función puedes usar el siguiente esquema

GPIO_Pi2

Ésta es la conexión que hice

image

Como verán tengo conectadas más cosas, así que destaqué en rojo las conexiones del sensor, que corresponden a los pines 7 (GPIO4) y 9 (GND).

Con las conexiones realizadas ahora pasaré a la parte de software

Programación

Aquí usé la librería de GPIO para python con el siguiente código

import time
import RPi.GPIO as io

io.setmode(io.BCM)

door_pin = 4

io.setup(door_pin, io.IN, pull_up_down=io.PUD_UP)

while True:
        if io.input(door_pin):
                print(“PUERTA ABIERTA!”)
        time.sleep(0.5)

La variable door_pin está fijada con el valor del pin BCM

image

 

Finalmente basta con ejecutar la aplicación con python nombrescript.py y activar el sensor abriendo la puerta, se mostrará el mensaje “PUERTA ABIERTA!” cada 0,5 segundos mientras la puerta esté abierta, si la cierras dejará de aparecer el mensaje.

Ahora modificaré el código para que además de mostrar ese mensaje active un relé

import time
import RPi.GPIO as io

io.setmode(io.BCM)

door_pin = 4
rele_pin = 21

io.setup(door_pin, io.IN, pull_up_down=io.PUD_UP) 
io.setup(rele_pin, io.OUT)

while True:
        if io.input(door_pin):
                print(“PUERTA ABIERTA!”)
                time.sleep(1.5)
                io.output(rele_pin, False)
        else:
                io.output(rele_pin, True)
        time.sleep(0.5)

El relé está configurado para que por defecto esté desactivado, por lo que al activar la puerta enciende el relé y viceversa. En caso de que esté configurado a la inversa el relé basta invertir el valor pasado al pin (io.output(rele_pin, XX) intercambiar False por True y viceversa en las dos veces que aparece en el código)

Aquí están destacados los pines correspondientes al relé en verde

image 

2 = DCC, 39 = GND, 40 = GPIO21

Control de un Rele con Raspberry Pi 2

Hace unos días compré un Relé (o Relay como se dice en inglés) con la idea de controlar circuitos eléctricos, inicialmente encender y apagar una lámpara (220V).

Materiales

  • Raspberry PI (yo usé el 2 B+, pero también debería funcionar con el 1)
  • Un relé, la cantidad de canales de éste dependerá de cuántos circuitos quieran controlar.
  • Cables para conectar el relé con el raspberry a los pines GPIO.

image

Relé de 2 canales, aquí estoy sólo usando uno.

image

Raspberry PI 2, he tenido que quitar la tapa de la carcasa para tener acceso a los pines GPIO. Como SO tiene instalado Raspbian en una microSD de 8 GB.

 

Éste es el resultado final

image

Para llegar a ese resultado son 2 partes, primero la conexión del relé al circuito a controlar y al raspberry, y luego la programación del raspberry para controlar el relé.

image

Cada canal (corresponde a cada “caja azul”) del relé tiene 3 conexiones

image

En el central debe ir uno de los cables y el segundo puede ir en el primero o tercero, según si deseas que el circuito esté abierto o cerrado cuando el relé está apagado o no está recibiendo energía (estado “por defecto”). Eso lo puedes diferenciar según las líneas que están unidas en el pin 2-3 y para el pin 1 no lo está.

En mi caso para probar dejé conectado el 2-3, para que quede cerrado el circuito por defecto.

Para probar conecté los extremos de los cables a una lámpara y a un enchufe y como por defecto está cerrado el circuito la lámpara se encendió. Si conectaron los 1-2 la lámpara debería permanecer apagada.

 

Ahora debo proceder a conectar los cables para el Raspberry (no olvides desconectar el circuito primero)

image

Para ello usé un cable como éste

imageimage

 

En el relé los pines están etiquetados GND-IN1-IN2-VCC. El primero y el último son para energizar el relé y el segundo y tercero corresponden a los canales, cuya cantidad corresponderá a la cantidad de canales del relé que hayas comprado.

Como sólo ocuparé el primer canal conectaré únicamente el IN1.

Por el lado del Raspberry he conectado estos pines

image

De izquierda a derecha corresponden al relé los VCC-GND-IN1, correspondientes a los pines 2 (DC 5v), 6 (GND) y 18 (GPIO 24) del Raspberry.

 

Finalmente falta configurar el Raspberry para controle el puerto GPIO, para ello utilicé Raspbian que instalé. Una vez instalado puedes entrar por SSH o por terminal conectando monitor y teclado.

Primero tienes que instalar la librería “wiringPi”, la que proveerá de la utilidad “gpio”. Ejecuta estos comandos

apt-get install git-core
clone git://git.drogon.net/wiringPi
cd wiringPi/
./build

Ya tienes instalado wiringPi, ahora para inicializar el pin debes correr este comando

gpio -g mode 24 out

Y ahora para encender

gpio write 5 1

Y para apagar

gpio write 5 0

La explicación de los números la puedes obtener con el comando “gpio readall”

image

 

Para comodidad puedes poner estos tres comandos en scripts para correrlos más fácilmente

Activar rotacion en pantalla de bloqueo Cyanogenmod Android 4.3 y 4.4

Si instalas Cyanogenmod basado en Android 4.3 o 4.4 en tu celular o tablet puede que hayas notado (sobre todo en tablet) que la pantalla de bloqueo se muestra de forma vertical aunque la rotación esté bloqueada como horizontal, lo que puede resultar molesto.

Pero tras una breve búsqueda en Internet esto tiene una sencilla solución, sólo necesitas root (cyanogenmod ya viene rooteado) y un editor de texto (también viene incluido)

  • Tienes que abrir la carpeta /system con el explorador de archivos, ese montaje lo debes dejar como lectura/escritura

ss1

Primero tienes que hacer clic en la advertencia de abajo para obtener acceso root y de ahí en el selector para que pase de RO a RW.

  • Luego debes abrir el build.prop con el editor de texto

ss2

Debes agregar al final la línea

lockscreen.rot_override=true

Si en alguna parte de ese archivo ya existe esa línea, pero con valor false, debes en lugar de insertarla nuevamente cambiarla a true.

Una vez terminada la edición guarda los cambios y reinicia el celular o tablet. Ahora respetará la configuración de rotación.

Link: http://winaero.com/blog/how-to-enable-lock-screen-rotation-in-android-4-3-and-4-4/

Cambiar datos acceso base de datos aplicacion Genexus

Si estás migrando una aplicación web creada con Genexus en ASP.net al abrir el archivo web.config habrás notado que los datos de acceso a la base de datos están cifrados y luego codificados en BASE64

image

Esto implica que no se pueden modificar fácilmente en caso de que la aplicación se mueva a otro servidor o se cambien los datos de acceso.

Sin embargo GeneXus provee una aplicación gráfica que permite modificar el web.config. Esta aplicación se encuentra en la carpeta bin de la aplicación y es la Gxconfig.exe.

Para usar esta aplicación primero se debe copiar el web.config de la carpeta raíz a la carpeta bin para que el programa Gxconfig pueda leer el archivo. Una vez movido se puede correr el programa y aparecen los datos actuales los que puedes modificar

image 

Una vez modificados se presiona “Save and Test Connection” donde saldrá un mensaje diciendo que la conexión se realizó correctamente (si sale algún error se deben revisar los datos e intentar de nuevo) y que el web.config está actualizado.

Finalmente se debe mover de vuelta a la carpeta raíz de la aplicación el archivo web.config y ejecutar la aplicación para probar la nueva configuración.