Anuncio

Ya hemos hablado sobre los méritos relativos de Arduino y Raspberry Pi, cada uno de ellos tiene sus puntos fuertes. Sin embargo, no tienen por qué ser uno u otro: combínelos para obtener lo mejor de ambos mundos. La automatización del hogar es el candidato perfecto para esto. El mercado de la automatización del hogar está inundado de sistemas de consumo caros, incompatibles entre sí y costosos de instalar. Si tienes una Raspberry Pi Raspberry Pi: el tutorial no oficialSi usted es un propietario actual de Pi que desea obtener más información o un propietario potencial de este dispositivo del tamaño de una tarjeta de crédito, esta no es una guía que quiera perderse. Lee mas y un Arduino, básicamente puede lograr lo mismo a una fracción del precio, suponiendo que esté dispuesto a invertir el tiempo y el esfuerzo.

Actualización: desde que se escribió este artículo, descubrí OpenHAB, una plataforma de automatización del hogar gratuita y de código abierto que se ejecuta en Raspberry Pi y se puede integrar con una amplia gama de kits para el hogar inteligente listos para usar, así como Arduino Mira el video a continuación para ver un adelanto, luego dirígete a nuestro

instagram viewer
Comenzando con OpenHAB en Raspberry Pi Comenzando con OpenHAB Home Automation en Raspberry PiOpenHAB es una plataforma de automatización del hogar madura y de código abierto 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 domótica en el mercado hoy. Lee mas 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 listos para usar, facilita el control de los dispositivos de CA. Puede agregar sensores de temperatura e incluso controlar su televisor, pero hoy mantendremos las cosas básicas 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 Node, estará vinculada a una base de datos Mongo y servirá la interfaz frontal para cualquier navegador web.
  • Un Arduino, alimentado por el Pi, se interconectará entre los interruptores de potencia de la electrónica - control de radio, por ahora.

Para hacer esto, necesitará:

  • Arduino y una Raspberry Pi
  • Algunos enchufes y controladores controlados a distancia (solía estas)
  • Hub USB alimentado
Tomas RC

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

Comenzar de nuevo

Vamos a usar Raspian para este proyecto 11 sistemas operativos que se ejecutan en su Raspberry PiCualquiera que sea su proyecto Raspberry Pi, hay un sistema operativo para ello. Te ayudamos a encontrar el mejor sistema operativo Raspberry Pi para tus necesidades. Lee mas , y le recomiendo encarecidamente que comience desde una nueva instalación si ya ha realizado otros hacks y demás. Descargue la última Imagen de Raspian, cópielo 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 con 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 del instrucciones aquí. Desafortunadamente, estos estaban desactualizados o no estaban diseñados para Raspian, por lo que los he ajustado a continuación. Los códigos a continuación se pueden pegar principalmente en bloques: no es necesario pegar uno por uno. Dado que estamos compilando algunas cosas en el propio Pi, tenga en cuenta que todo este proceso llevará mucho tiempo. Diría que vaya a prepararse 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. 

Luego necesitamos instalar Node:

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 Node. Utilice el editor de nano texto de la siguiente manera:

sudo nano / etc / profile. 

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

NODE_JS_HOME = "/ opt / node" RUTA = "$ RUTA: $ NODE_JS_HOME / bin" RUTA DE EXPORTACIÓN.

Presiona Ctrl-X para salir e Y para guardar.

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

cual nodo 

Si no obtiene ningún resultado que apunte al binario Node, algo salió mal.

Mongo

El siguiente trabajo es instalar Mongo. Mongo es una base de datos No-SQL basada en documentos cada vez más utilizada por las aplicaciones web. Desafortunadamente, esto tomará una eternidad para instalar ya que tenemos que compilarlo. Mientras ejecuta los siguientes comandos, obtendrá 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 eso termine, primero necesitamos un poco más de configuración para solucionar los problemas de permisos y asegurarnos de que se ejecute 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 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 corregir esto en los comentarios sobre cómo hacer que mongod se inicie automáticamente al inicio, sería muy apreciado. Por ahora, funciona, pero no con elegancia.

sudo shutdown -r ahora

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

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


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 a él desde una computadora diferente (y también podría configurar el reenvío de puertos ¿Qué es el reenvío de puertos y 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 es por eso que tu nueva aplicación brillante no funcionará? Tu Xbox no te permitirá jugar, tus descargas de torrents se rechazan ... Lee mas para acceder a él desde cualquier parte del mundo), así que le recomiendo que mire y compruebe que todo funciona con la base de datos antes de conectar el Arduino.

Hardware

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

Utilicé algunos juegos razonablemente baratos de £ 20 de Maplin que vienen con 3 zócalos, y abrí el control remoto para poder interactuar directamente con el chip de 433 MHz en el interior. Encontré las instrucciones para esto aquí.

rc-controller-hack

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 solo pin de control: recuerde cuál usó. (Esquema de Willi Thiel)

arduino-rcswitch

El complemento funciona mediante el envío de "códigos triestatales", pero estos variarán según el fabricante. Referirse a Documentación de RCSwitch para encontrar tus códigos exactos. Esta guía wiki Puede ayudar también.

La comunicación con Arduino se realiza mediante 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 instala duino. 

El Arduino debe tener este código cargado - Le sugiero que copie y pegue para instalar esto desde una computadora diferente. Es esencialmente un programa de escucha que responde a comandos seriales del Pi, pero no hay nada que te impida extenderlo con tus propias funciones.

rc-settings

Con la aplicación web iniciada, vaya a Configuraciones menu> 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 triestada. Recuerde guardar, luego regrese a la pantalla principal de su nuevo botón.

configuración de conmutador

Loco:

Después de muchas horas de depuración del 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 descubrí que el complemento Arduino estaba codificado con bits finales incorrectos para los códigos triestados que necesitaban mis receptores. Una pequeña explicación primero: los códigos triestados 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. Desafortunadamente, el byte final está codificado en el complemento Arduino, y en mi caso, el código de encendido / apagado era incorrecto.

Tuve que editar manualmente el 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:

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

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

Voy a dejarlo aquí en este punto, pero las lecturas del sensor y los controles remotos IR son también apoyado. Probablemente volveré a visitarlos más adelante con algunas mejoras más. Si todo esto ha sido demasiado complejo para ti, tal vez mira estos proyectos Arduino amigables para principiantes 15 grandes proyectos de Arduino para principiantes¿Interesado en proyectos Arduino pero no está seguro por dónde comenzar? Estos proyectos para principiantes le enseñarán cómo comenzar. Lee mas .

James tiene una licenciatura en Inteligencia Artificial y está certificado por CompTIA A + y Network +. Es el desarrollador principal de MakeUseOf, y pasa su tiempo libre jugando VR paintball y juegos de mesa. Ha estado construyendo computadoras desde que era un niño.