Guía de domótica con Raspberry Pi y Arduino

El mercado de domótica está inundado con costosos sistemas de consumo, incompatibles entre sí y costosos de instalar. Si tiene un Raspberry Pi y un Arduino, básicamente puede lograr lo mismo a una fracción del precio, suponiendo que esté dispuesto a dedicarle el tiempo y el esfuerzo.

El mercado de domótica está inundado con costosos sistemas de consumo, incompatibles entre sí y costosos de instalar.  Si tiene un Raspberry Pi y un Arduino, básicamente puede lograr lo mismo a una fracción del precio, suponiendo que esté dispuesto a dedicarle el tiempo y el esfuerzo.
Anuncio

Ya hemos hablado de los méritos relativos de Arduino y Raspberry Pi antes: cada uno tiene sus puntos fuertes. Sin embargo, no es necesario que sean una opción, combínelos para obtener lo mejor de ambos mundos. La domótica es el candidato perfecto para esto. El mercado de domótica está inundado con costosos sistemas de consumo, incompatibles entre sí y costosos de instalar. Si tienes Raspberry Pi Raspberry Pi: El Tutorial no oficial Raspberry Pi: El tutorial no oficial Ya sea que seas un propietario actual de Pi y quieras aprender más o sea un potencial propietario de este dispositivo de tamaño de tarjeta de crédito, esta no es una guía quiero perder Lea más y un Arduino, básicamente puede lograr lo mismo a una fracción del precio, suponiendo que esté dispuesto a dedicar el tiempo y el esfuerzo necesarios.

Actualización: Desde que se escribió este artículo, descubrí OpenHAB, una plataforma de automatización del hogar de código abierto que se ejecuta en Raspberry Pi y se puede integrar con una amplia gama de kits inteligentes para el hogar listos para usar, así como con Arduino. Eche un vistazo al siguiente video y luego acceda a nuestro Cómo comenzar con OpenHAB en Raspberry Pi. Comenzando con OpenHAB Home Automation en Raspberry Pi. Comenzando con OpenHAB Home Automation en Raspberry Pi. OpenHAB es una domótica de código abierto y madura. plataforma que se ejecuta en una variedad de hardware y es independiente del protocolo, lo que significa que se puede conectar a casi cualquier hardware de automatización del hogar en el mercado hoy en día. Lea más guía para aprender más.

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

Aquí hay un desglose del proyecto:

  • El Raspberry Pi actuará como el cerebro y la puerta de entrada de las operaciones: ejecutará una aplicación de nodo, vinculada a una base de datos de Mongo, y servirá la interfaz de usuario a cualquier navegador web.
  • Un Arduino, alimentado desde el Pi, se conectará entre los componentes electrónicos, por ejemplo, los interruptores de potencia de control de radio.

Para hacer esto, necesitarás:

  • Arduino y una Raspberry Pi
  • Algunos enchufes y controles controlados a distancia (yo los utilicé)
  • Hub USB con motor

Tomacorrientes RC

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

Comenzar de nuevo

Vamos a utilizar Raspian para este proyecto 10 sistemas operativos que puedes ejecutar con Raspberry Pi 10 Sistemas operativos que puedes ejecutar con Raspberry Pi El hardware de la Raspberry Pi es solo una cara de la historia: hoy exploro 10 sistemas operativos diferentes puedes instalar Lea más, y le sugiero que comience desde una nueva instalación si ya ha realizado otros hacks y demás. 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 supondrá que lo ha hecho y se está conectando a través de SSH utilizando el usuario predeterminado.

Si no ha hecho esto antes, este video explica el proceso de preparación de su 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 están actualizados o no están diseñados para Raspian, así que los ajusté mucho más abajo. Los códigos siguientes se pueden pegar principalmente en bloques; no es necesario pegar uno por uno. Como estamos compilando algunas cosas en el propio Pi, ten en cuenta que todo este proceso llevará mucho tiempo. Yo diría que vaya a hacerse una taza de té, pero cuando digo "mucho 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 Enter en algunos puntos. Estos primeros comandos actualizarán el sistema e instalarán 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, tenemos que instalar el 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. Use el editor de nano texto de la siguiente manera:

 sudo nano /etc/profile 

Ubique la línea que dice PATH de exportación y reemplácela por:

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

Presiona Ctrl-X para salir, e Y para guardar.

Es posible que deba desconectarse y volver a entrar para que los cambios de ruta surtan efecto, pero puede probar con el comando:

 which node 

Si no obtiene ningún resultado 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 utilizan cada vez más las aplicaciones web. Desafortunadamente, esto llevará una eternidad para instalar ya que tenemos que compilarlo. Mientras ejecuta los siguientes comandos, obtendrá muchos errores, como:

 {standard input}:13085: Warning: swp{b} use is deprecated for this architecture 

No te preocupes por esto Por lo tanto, 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 eso termine, primero necesitamos un poco más de configuración para solucionar los problemas de permisos y asegurarnos de que se ejecuta al inicio.

 sudo useradd mongodb sudo mkdir /data/dbb sudo chown $USER /data/db cd /etc/init.d sudo wget -O mongodb https://gist.github.com/ni-c/fd4df404bda6e87fb718/raw/36d45897cd943fbd6d071c096eb4b71b37d0fcbb/mongodb.sh sudo chmod +x mongodb sudo update-rc.d mongodb defaults mongod 

Este último comando lanzará el servidor Mongo, y deberá abrir un nuevo Terminal para continuar con los otros comandos. No estoy completamente seguro de este paso, así que si alguien puede corregir esto en los comentarios sobre cómo hacer que mongod se inicie automáticamente al inicio, sería muy apreciado. Por ahora, funciona, simplemente no elegantemente.

 sudo shutdown -r now 

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

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

Puede comenzar a ejecutar la aplicación escribiendo

 node heimcontrol.js 

En este punto, debe poder acceder a la interfaz de control con http: // localhost: 8080 desde Pi, o reemplazar localhost con la dirección IP si está accediendo desde otra computadora (y también puede configurar el puerto reenvío ¿Qué es el reenvío de puertos y cómo puede ayudarme? [Explicaciones de MakeUseOf] ¿Qué es el reenvío de puertos? ¿Cómo puede ayudarme? [MakeUseOf explica] ¿Llora un poco cuando alguien le dice que hay un problema de reenvío de puertos y por eso nueva aplicación brillante no funcionará? Su Xbox no le permitirá jugar juegos, sus descargas de torrents se niegan ... Leer más para acceder desde cualquier parte del mundo), así que le animo a buscar y comprobar todo trabajando con la base de datos antes de adjuntar el Arduino.

Hardware

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

Utilicé algunos conjuntos de £ 20 razonablemente económicos de Maplin que vienen con 3 enchufes y abrí el control remoto para poder interactuar directamente con el chip de 433 MHz. Encontré las instrucciones para esto aquí.

rc-controller-hack

También puede comprar transmisores individuales de 433 MHz listos para usar en eBay o desde proveedores de productos electrónicos. 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 utilizó. (Esquema de Willi Thiel)

arduino-rcswitch

El complemento funciona enviando "códigos triestados", pero varían según el fabricante. Consulte la documentación de RCSwitch para encontrar sus códigos exactos. Esta guía wiki también puede ser útil.

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

 npm install duino 

El Arduino debe tener este código cargado. Le sugiero que copie y pegue para instalarlo desde otra computadora. Básicamente es un programa de escucha que responde a los comandos en serie del Pi, pero no hay nada que lo impida ampliarlo con sus propias características.

rc-settings

Con la aplicación web iniciada, vaya al menú Configuración > Arduino .

heimcontrol-menu-settings

Desde allí, puede agregar un nuevo elemento, eligiendo el método RCSwitch, el pin de su transmisor y el código de dirección triestado. Recuerde guardar, luego regrese a la pantalla principal de su nuevo botón.

rcswitch-setting

Loco:

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

También encontré que el complemento Arduino estaba codificado con bits finales incorrectos para los códigos triestados que necesitaban mis receptores. Primero, una pequeña explicación: los códigos triples consisten en 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, produciendo un máximo de 16 tomas direccionables). El byte final consta de dos bits de relleno, más 2 bits para activar / desactivar. Lamentablemente, el último byte está codificado en el complemento Arduino, y en mi caso, el código de encendido / apagado era incorrecto.

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

 // Send RC code if (item.value) { return that.pins[item.pin].triState(item.code + "FFFF");//change from FF0F } else { return that.pins[item.pin].triState(item.code + "FFF0");//change from FF00 } 

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

Voy a dejarlo aquí en este momento, pero las lecturas del sensor y los controles remotos IR también son compatibles. Probablemente los vuelva a visitar en una fecha posterior con algunas mejoras adicionales. Si todo esto ha sido un poco demasiado complejo para usted, quizás consulte estos proyectos Arduino para principiantes 10 Grandes proyectos Arduino para principiantes 10 Grandes proyectos Arduino para principiantes Completar un proyecto Arduino le da una sensación de satisfacción como ninguna otra. La mayoría de los principiantes no están seguros de por dónde empezar, e incluso los proyectos para principiantes pueden parecer bastante desalentadores. Lee mas .

Créditos de las imágenes: Door Bell Via Flickr

In this article