Guía de automatización del hogar con Raspberry Pi y Arduino

Guía de automatización del hogar con Raspberry Pi y Arduino / Casa inteligente

Ya hemos hablado de los méritos relativos de Arduino y Raspberry Pi: cada uno tiene sus puntos fuertes. Sin embargo, no tienen por qué ser una opción u otra: combínalos para obtener lo mejor de ambos mundos. La domótica es el candidato perfecto para esto. El mercado de la automatización del hogar está inundado de costosos sistemas de consumo, incompatibles entre sí y costosos de instalar. Si tiene una Raspberry Pi Raspberry Pi: el tutorial no oficial Raspberry Pi: el tutorial no oficial Ya sea un propietario actual de Pi que quiera aprender más o un posible propietario de este dispositivo del tamaño de una tarjeta de crédito, esta no es una guía para usted. quiero perder Lea más y un Arduino, básicamente puede lograr lo mismo a una fracción del precio, asumiendo que está dispuesto a invertir tiempo y esfuerzo..

Actualización: desde que escribí este artículo, descubrí OpenHAB, una plataforma de automatización del hogar de código abierto y gratuita que se ejecuta en Raspberry Pi y se puede integrar con una gran variedad de equipos para el hogar listos para usar, así como con Arduino. Vea el video a continuación para ver un adelanto, luego diríjase a nuestra Introducción a OpenHAB en Raspberry Pi Introducción a OpenHAB Home Automation en Raspberry Pi Introducción a OpenHAB Home Automation en Raspberry Pi OpenHAB es una automatización doméstica madura de código abierto plataforma que se ejecuta en una variedad de hardware y es independiente del protocolo, lo que significa que puede conectarse a casi cualquier hardware de automatización del hogar en el mercado hoy en día. Leer más guía para aprender más..

Heimcontrol.js es una aplicación de Node.js creada para ejecutarse en Raspberry Pi. Combinado con un Arduino y algunos enchufes de control remoto, facilita el control de los dispositivos de CA. Puedes agregar sensores de temperatura e incluso controlar tu TV, pero hoy vamos a mantener las cosas básicas y extender el proyecto en un tutorial posterior..

Aquí hay un desglose del proyecto:

  • La Raspberry Pi actuará como el cerebro y la puerta de enlace de las operaciones; ejecutará una aplicación Node, vinculada a una base de datos Mongo, y servirá la interfaz de usuario a cualquier navegador web.
  • Un Arduino, alimentado desde el Pi, se interconectará entre la electrónica, por ejemplo, los interruptores de alimentación de control de radio.

Para hacer esto, necesitarás:

  • Arduino y una Raspberry Pi
  • Algunos zócalos controlados a distancia y controlador (los usé)
  • Concentrador USB alimentado

Antes de comenzar, aquí hay un video de demostración del propio creador del proyecto..

Comenzar de nuevo

Vamos a utilizar Raspian para este proyecto. 11 Sistemas operativos que puede ejecutar en Raspberry Pi. 11 Sistemas operativos que puede ejecutar en Raspberry Pi. El hardware de Raspberry Pi es solo una cara de la moneda. Aquí hay algunos sistemas operativos diferentes de Raspberry Pi que puede instalar. Lee más, y te sugeriría encarecidamente comenzar desde una instalación nueva si has realizado otros trucos y otros. Descargue la última imagen de Raspian, cópiela en su tarjeta SD y asegúrese de expandir el sistema de archivos y habilitar SSH. El resto de esta guía asumirá que lo ha hecho y se está conectando a través de SSH utilizando el usuario predeterminado.

Si no lo has hecho antes, este video explica el proceso de preparación de tu tarjeta SD en OS X:

Y este para usuarios de Windows:

Preparación

El proceso de instalación es bastante laborioso, y se deriva de las instrucciones aquí. Desafortunadamente, estos no estaban actualizados o no estaban diseñados para Raspian, por lo que los he ajustado mucho más abajo. La mayoría de los códigos a continuación se pueden pegar en bloques, no es necesario pegarlos uno por uno. Ya que estamos compilando algunas cosas en el mismo Pi, ten en cuenta que todo este proceso llevará mucho tiempo. Diría que te prepares una taza de té, pero cuando digo “largo tiempo”, Me refiero a la mejor parte del día, por lo que 178 tazas serían más apropiadas.

Todos los comandos deben escribirse en la Terminal, y es posible que deba presionar Intro en algunos puntos. Estos primeros comandos actualizarán el sistema e instalarán los requisitos previos:

sudo apt-get update sudo apt-get upgrade sudo apt-get install git-core git scons build-essential scons libpcre ++ - dev xulrunner-dev libboost-dev libboost-program-options-dev libboost-thread-dev libboost-filesystem-dev 

A continuación necesitamos instalar Nodo:

sudo mkdir / opt / node wget http://nodejs.org/dist/v0.10.2/node-v0.10.2-linux-arm-pi.tar.gz tar xvzf node-v0.10.2-linux-arm-pi. tar.gz sudo cp -r node-v0.10.2-linux-arm-pi / * / opt / node sudo ln -s / opt / node / bin / node / usr / local / bin / node sudo ln -s / opt / node / bin / npm / usr / local / bin / npm 

Agregue una variable PATH a su perfil para que el sistema operativo sepa dónde se encuentra el nodo. Utilice el editor de texto nano de la siguiente manera:

sudo nano / etc / perfil 

Localiza la línea que dice ruta de exportación y reemplazarlo con:

NODE_JS_HOME = "/ opt / node" PATH = "$ PATH: $ NODE_JS_HOME / bin" export PATH 

Pulsa Ctrl-X para salir, y Y para guardar..

Es posible que deba cerrar sesión y volver a iniciarla para que los cambios de ruta tengan efecto, pero puede probar con el comando:

cual nodo 

Si no obtiene ninguna salida que apunte al binario del nodo, algo salió mal.

Mongo

El siguiente trabajo es instalar Mongo. Mongo es una base de datos No-SQL basada en documentos que las aplicaciones web utilizan cada vez más. Desafortunadamente, esto tardará una eternidad en instalarse ya que tenemos que compilarlo. Mientras ejecutas los siguientes comandos obtendrás muchos errores como:

entrada estándar: 13085: Advertencia: el uso de swp b está en desuso para esta arquitectura 

No te preocupes por esto. Entonces, ejecute estos comandos para instalar Mongo:

git clone git: //github.com/RickP/mongopi.git cd mongopi scons sudo scons --prefix = / opt / mongo install scons -c 

Cuando termine, primero necesitamos un poco más de configuración para solucionar los problemas de permisos y asegurarnos de que se está ejecutando en el inicio.

sudo useradd mongodb sudo mkdir / data / dbb sudo chown $ USUARIO / data / db cd /etc/init.d sudo wget -O mongodb https://gist.github .sh sudo chmod + x mongodb sudo update-rc.d mongodb por defecto mongod

Este último comando iniciará el servidor Mongo y deberá abrir una nueva Terminal para continuar con los otros comandos. No estoy completamente seguro de este paso, por lo que si alguien puede corregirlo en los comentarios sobre cómo realizar el lanzamiento de mongod automáticamente en el inicio, sería muy apreciado. Por ahora, funciona, pero no elegantemente..

sudo shutdown -r ahora

Finalmente, es hora de instalar la aplicación Nodo Heimcontrol.js.

cd ~ pi git clone git: //github.com/ni-c/heimcontrol.js.git cd heimcontrol.js npm install 

Puedes comenzar a ejecutar la aplicación escribiendo

 nodo heimcontrol.js 

En este punto, debería poder acceder a la interfaz de control con http: // localhost: 8080 desde el Pi, o reemplace localhost con la dirección IP si está accediendo desde otra computadora (y también puede configurar el reenvío de puertos ¿Qué es el reenvío de puertos y cómo puede ayudarme? [Explica MakeUseOf] ¿Qué es el reenvío de puertos & ¿Cómo puede ayudarme? [MakeUseOf Explica] ¿Lloras un poco por dentro cuando alguien te dice que hay un problema de reenvío de puertos y por eso tu nueva y brillante aplicación no funciona? Tu Xbox no te permitirá jugar juegos, tus descargas de torrent Rechazar ... Lea más para acceder a él desde cualquier parte del mundo), por lo que lo invito a buscar y verificar que todo funciona con la base de datos antes de adjuntar el Arduino.

Hardware

Eventualmente me gustaría un relé cableado, pero por ahora usaré la opción más segura de los interruptores controlados por radio.

He usado algunos juegos de £ 20 razonablemente baratos de Maplin que vienen con 3 sockets, y abrí el control remoto para poder interactuar directamente con el chip de 433 MHz del interior. Encontré las instrucciones para esto aquí..

También puede comprar transmisores individuales de 433 MHz listos para usar en eBay o de proveedores de electrónica de hobby. Todo lo que necesita es conectar el VCC a 5 V en el Arduino, los GND y un único pin de control; recuerde cuál usó. (Esquema de Willi Thiel)

El plugin funciona enviando “códigos tristes”, pero estos variarán según el fabricante. Consulte la documentación de RCSwitch para encontrar sus códigos exactos. Esta guía wiki puede ayudar también.

La comunicación con el Arduino se realiza mediante una biblioteca de nodos llamada duino. Detenga la aplicación Heimcontrol si se está ejecutando e instale el puente Arduino usando el siguiente comando.

npm instalar duino 

El Arduino debe tener este código cargado; le sugiero que lo copie y pegue para instalarlo desde otra computadora. Esencialmente, es un programa de escucha que responde a los comandos serie del Pi, pero no hay nada que le impida extenderlo con sus propias funciones..

Con la aplicación web iniciada, vaya a la Ajustes menú> Arduino.

Desde allí puede agregar un nuevo elemento, seleccionando el método RCSwitch, el pin de su transmisor y el código de dirección de tres estados. Recuerde guardar, luego vuelva a la pantalla principal para ver su nuevo botón.

Loco:

Después de muchas horas de depurar el código, descubrí que los números de pin de un solo dígito no funcionaban. Asegúrese de que su transmisor esté colocado en el pin. 10 para estar seguro.

También encontré que el plugin de Arduino estaba codificado con bits finales incorrectos para los códigos triples que mis receptores necesitaban. Una pequeña explicación primero: los códigos triples constan de 3 bytes de información. El primero nos determina el número de red (1-4) y el segundo proporciona la dirección del transceptor (nuevamente, 1-4, lo que produce un máximo de 16 sockets direccionables). El byte final consta de dos bits de relleno, más 2 bits para activar / desactivar. Desafortunadamente, el byte final está codificado en el plugin de Arduino, y en mi caso, el código de encendido / apagado era incorrecto.

Tuve que editar manualmente el plugins / arduino / index.js Utilizar los códigos correctos. Si está utilizando los mismos enchufes de control remoto que yo, cambie las líneas 80 en adelante para:

// Enviar código RC si (item.value) return that.pins [item.pin] .triState (item.code + "FFFF"); // cambio de FF0F else return that.pins [item.pin] .triState (item.code + "FFF0"); // cambio desde FF00

Aquí hay un video de demostración de todo lo que funciona:

Voy a dejarlo aquí en este punto, pero las lecturas de los sensores y los controles remotos de IR también son compatibles. Probablemente los volveré a visitar en una fecha posterior con algunas mejoras más. Si todo esto ha sido demasiado complejo para ti, tal vez echa un vistazo a estos proyectos de Arduino para principiantes 15 Grandes proyectos de Arduino para principiantes 15 Grandes proyectos de Arduino para principiantes ¿Interesado en Arduino pero no estás seguro por dónde empezar? ¡Aquí están algunos de nuestros mejores proyectos de Arduino para que comiencen los principiantes! Lee mas .

.