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

  • Owen Little
  • 0
  • 1462
  • 102
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 tiene un Raspberry Pi Raspberry Pi: el tutorial no oficial Raspberry Pi: el tutorial no oficial Si usted es un propietario actual de Pi que quiere aprender más o un propietario potencial de este dispositivo del tamaño de una tarjeta de crédito, esta no es una guía para usted Quiero perderte. 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. Echa un vistazo al video a continuación para ver un adelanto, luego dirígete 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 del hogar madura y de código abierto 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 domótica en el mercado actual. 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, se vinculará a una base de datos Mongo y servirá la interfaz frontal para cualquier navegador web.
  • Un Arduino, alimentado por el Pi, interactuará entre la electrónica: interruptores de alimentación de control de radio, por ahora.

Para hacer esto, necesitará:

  • Arduino y una frambuesa Pi
  • Algunos enchufes y controladores controlados a distancia (los usé)
  • Hub USB alimentado

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

Comenzar de nuevo

Vamos a utilizar Raspian para este proyecto. 11 Sistemas operativos Raspberry Pi que puedes probar 11 Sistemas operativos Raspberry Pi que puedes probar Cualquiera que sea tu proyecto Raspberry Pi, hay un sistema operativo para ello. Te ayudamos a encontrar el mejor sistema operativo Raspberry Pi para tus necesidades. , y recomiendo encarecidamente comenzar desde una nueva instalación si ya ha realizado otros hacks y cosas así. 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 estaban desactualizados o no diseñados para Raspian, por lo que los he ajustado mucho 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 ve a prepararte una taza de té, pero cuando digo un “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 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, 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 camino de exportación y reemplazarlo con:

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 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 ninguna salida apuntando 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 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/36d45897cd943fbd6d0cbbbbbcb0c .sh sudo chmod + x mongodb sudo update-rc.d mongodb por defecto mongod

Este último comando lanzará 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 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

 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 una computadora diferente (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 y ¿Cómo puede ayudarme? [Explica MakeUseOf] ¿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 y brillante aplicación no funcionará? Tu Xbox no te permitirá jugar, tus descargas de torrents rechazar ... acceder a él desde cualquier parte del mundo), así que te animo a que busques y compruebes que todo funciona con la base de datos antes de conectar el Arduino.

Hardware

Eventualmente me gustaría un relé cableado, pero por ahora usaré 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í.

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)

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

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 usando el siguiente comando.

npm install duino 

El Arduino debe tener este código cargado. Le sugiero que copie y pegue para instalarlo 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 características.

Con la aplicación web iniciada, vaya a Configuraciones menu> Arduino.

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 para su nuevo botón.

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:

Lo dejaré aquí en este punto, pero también se admiten lecturas de sensores y controles remotos IR. Probablemente volveré a visitarlos más adelante con algunas mejoras más. Si todo esto ha sido demasiado complejo para usted, tal vez eche un vistazo a estos proyectos Arduino amigables para principiantes 15 Grandes proyectos Arduino para principiantes 15 Grandes proyectos Arduino para principiantes ¿Está interesado en proyectos Arduino pero no sabe por dónde comenzar? Estos proyectos para principiantes te enseñarán cómo comenzar. .




Nadie ha comentado sobre este artículo todavía.

Sobre tecnología moderna, simple y asequible.
Tu guía en el mundo de la tecnología moderna. Aprenda a usar las tecnologías y los dispositivos que nos rodean todos los días y aprenda a descubrir cosas interesantes en Internet.