Sistema domótico con Raspberry-Pi y Arduino

Por Soloelectronicos @soloelectronico

 Arduino y Raspberry Pi  son mundos diferentes  por lo que quizás sea buena opción combinarlos 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 con los sistemas de consumo caros, incompatibles uno con el otro y costosos de instalar. Si usted tiene un Pi de frambuesa y un Arduino, básicamente se puede lograr lo mismo, a una fracción del precio, suponiendo que usted está dispuesto a poner en el tiempo y el esfuerzo.

Heimcontrol.js por Willi Thiel es una aplicacion  Node.js para ejecutarse en Raspberry Pi.Combinado con un Arduino y algunas tomas de off-the-shelf de control remoto, tiene el control de tomas de  CA  fácil. Puede agregar sensores de temperatura, e incluso controlar su TV .

He aquí un desglose del proyecto:

  • La Raspberry Pi actuará como el cerebro y la puerta de entrada de las operaciones – se ejecutará una aplicación de nodo, unido a una base de datos Mongo, y servira a la interfaz de front-end para cualquier navegador web.
  • Un Arduino, impulsado desde el Pi, actuará como intermediario entre la electrónica – interruptores de alimentación de control de radio, por ahora.

Para ello, se necesita:

  • Arduino y Raspberry Pi
  • Algunas tomas de corriente y mando a control remoto (el auto usó éstos )
  • Hub USB alimentado
 Antes de comenzar, aquí hay un vídeo de demostración del propio creador del proyecto.

Empezar de nuevo

Vamos a utilizar Raspianpara este proyecto,  a partir de una nueva instalación . Descargue la últimaimagen Raspian , y copiela  la tarjeta SD, y asegúrese de ampliar el sistema de archivos y habilitar SSH. El resto de esta guía asume que usted ha hecho así, y se conecta a través de SSH con el usuario por defecto.

Si no ha hecho esto antes, este video se explica el proceso de elaboración de su tarjeta SD en Windows:

Preparación

El proceso de instalación es bastante laborioso, y derivado de las instrucciones aquí . Los siguientes  en su mayoría se pueden pegar en bloques – no es necesario pegar una a una. Ya que estamos compilando algunas cosas en el propio Pi, tenga en cuenta que todo este proceso llevará mucho tiempo.

Todos los comandos deben ser escritos en el Terminal, y es posible que tenga que pulsar Intro en algunos puntos. Estos primeros comandos son para actualizar el sistema e instalar los requisitos previos:

sudo apt - get update
sudo apt - get upgrade
sudo apt - get install git - scons git Muñones - scons esenciales libpcre + + - dev xulrunner - dev libboost - dev libboost - programa - Opciones - dev libboost - hilo - dev libboost - sistema de archivos - dev

Lo siguiente que necesitamos para instalar Nodo son estas instrucciones:

sudo mkdir / opt / nodo
http wget : / / nodejs  org / dist / v0 0.10 . 2 / nodo - v0 0.10 . 2 - linux - brazo - pi  alquitrán  gz
nodo xvzf tar - v0 0.10 . 2 - linux - brazo - pi  alquitrán  gz
sudo cp - r nodo - v0 0.10 . 2 - linux - brazo - pi / *  / opt / nodo
sudo ln - s / opt / nodo / bin / nodo / usr / local, / bin / nodo
sudo ln - s / opt / nodo / bin / npm / usr / local, / bin / npm

Agregue una variable PATH para tu perfil para que el sistema operativo sepa donde se encuentra el Nodo. Utilice el editor de texto nano de la siguiente manera:

sudo nano / etc / perfil

Busque la línea que dice export PATH y sustituirlo por:

NODE_JS_HOME = "/ opt / nodo" 
CAMINO = " $ PATH : $ NODE_JS_HOME / bin "
export PATH

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

Puede que tenga que cerrar la sesión y de nuevo para que los cambios de ruta de acceso que tengan efecto, pero se puede probar con el comando:

which node

Si usted no recibe ninguna salida que apunta al binario de nodo, algo salió mal.

Mongo

El siguiente trabajo es la instalación de Mongo . Mongo es una base de datos No-SQL basada en documentos cada vez más utilizada por las aplicaciones web. Por desgracia, esto tomará por siempre para instalar ya que tenemos que compilarlo. Durante la ejecución de los siguientes comandos que obtendrá una gran cantidad de errores como:

{ entrada estándar } : 13085 : Advertencia : swp { b } uso está obsoleto para esta arquitectura

No se preocupes por ellos. Así, ejecute estos comandos para instalar Mongo:

git clone git : / / github  com / RickP / mongopi  git
mongopi cd
scons
sudo scons - prefijo = / opt / mongo instalar
scons - c

Cuando se haya terminado, necesitamos un poco más de la configuración inicial para solucionar problemas de permisos y asegúrese de que se está ejecutando en el arranque.

sudo useradd mongodb
sudo mkdir / datos / DBB
sudo chown $ USER  / datos / 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  impagos d mongodb
mongod

Este último comando lanzará el servidor de Mongo, y usted tendrá que abrir una nueva terminal para continuar con los otros comandos. No estoy del todo convencido de esto: el paso, así que si alguien puede corregir esto en los comentarios sobre cómo tener mongod lanzamiento automáticamente en el arranque, que sería muy apreciada. Por ahora, funciona, pero no elegante.

apagado sudo - r now

Por último, es el momento de instalar la aplicación Heimcontrol.js Nodo.

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

Usted puede comenzar a ejecutar la aplicación escribiendo


heimcontrol nodo  js

En este punto, usted debería ser capaz de acceder a la interfaz de control con http://localhost:8080 del Pi, o reemplazar localhost con la dirección IP si está accediendo a ella desde otro equipo (y también se puede configurar el puerto expediciónpara acceder a ella desde cualquier parte del mundo) , así que me animo a hurgar y comprobar que todo está trabajando con la base de datos antes de conectar el Arduino.

Hardware

El autor ha utilizado mandos RF   comerciales  que vienen con 3 tomas de corriente, abriendo el mando a distancia para iknteractuar directamente con el chip de 433 MHz en el interior. Las instrucciones para esto aquí .

También puede comprar transmisores 433 MHz individuales listos para su uso en eBay o de los proveedores de electrónica de hobby. Todo lo que necesitas es conectar el VCC a 5 V en el Arduino, los GNDs, y un único pin de control

 El plugin funciona mediante el envío de “códigos de tres estados”, pero éstas pueden variar según el fabricante. Consulte la documentación RCSwitch para encontrar sus claves exactas.Esta guía wiki puede ayudar también.

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

npm instalar duino

El Arduino debe tener el código cargado - Le sugiero que copiar y pegar para instalarla desde un equipo diferente. Básicamente se trata de un programa de escucha que responde a comandos de serie del Pi, pero no hay nada que le impida que se extiende con sus propias características.

Con la aplicación web en marcha, vaya a la configuración del menú -> Arduino .

Desde allí se puede agregar un elemento nuevo, la elección de método RCSwitch, el pasador de su transmisor, y el código de dirección de tres estados. Recuerde guardar, y luego regresar a la pantalla de la pantalla principal de su nuevo botón.

Insectos:

Después de muchas horas de depuración del código,el autor  encontró números de un solo dígito pin no funcionaban – asegúrese de que su transmisor se coloca en el pin 10 para estar seguro.

También encontró que el plugin Arduino fue codificado con los bits finales incorrectos para los códigos de tres estados mis receptores necesarios. Una pequeña explicación primero:los códigos de estado triple consta de 3 bytes de información.

  • La primera nos determina el número de red (1-4),
  • El segundo proporciona la dirección transceptor (de nuevo, 1-4, produciendo un máximo de 16 tomas direccionables).
  • El byte final consta de dos bits de relleno, además de 2 bits para encendido / apagado.

 Por desgracia, el último byte está codificada en el plugin de Arduino – y en puede  que el código de encendido / apagado sea incorrecto.

Para solucionarlo hay que  editar manualmente los plugins / arduino / index.js utilizar los códigos correctos. Si usted está usando las mismas tomas de control remoto cambiar las líneas 80 en adelante a:

/ / Enviar código RC
 si  ( tema  valor )  { 
  volver que  pins [ artículo  pin ] . TriState ( tema  Código +  "FFFF" ) ; / / cambio de FF0F
 }  más  { 
  retorno que  pins [ artículo  pin ] . TriState ( tema  Código +  "FFF0" ) ; / / cambio de FF00
 }

Aquí está un vídeo de demostración de todo trabajo:

Un estupendo trabajo !enhorabuena James M!

Fuente aqui