Proyecto de domótica basados en dispositivos 1-wire

proyecto de automatización del hogar mediante los siguientes componentes

Arduino Mega 2560 http://arduino.cc/en/Main/arduinoBoardMega2560
Circuitos integrados:
Maxim DS18B20 http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
Maxim DS2413 http://datasheets.maximintegrated.com/en/ds/DS2413.pdf
Panasonic AQH3213 http://www.panasonic-electric-works.com/peweu/en/downloads/ds_61613_en_aqh.pdf
UTP cableado con conectores RJ11 (topología de estrella con buses seriales, varios dispositivos en cada bus)

Capaz de manejar:
8 buses de 1-wire (utilizando instancias de la clase dinámica de la biblioteca)
interruptores de 256
256 relés
128 sensores de temperatura (modo no parásito para bus más rápido)

* Interruptor de relé asociaciones son libremente programables

* No hay alto voltaje y cables en los interruptores de pared, sólo 12V DC sobre cable UTP

* Menor la oleada actual y electromágnetica radiación desde SSRs encender y apagar en cero

* Interruptores se analizan continuamente por el Arduino - como resultado de la conmutación de relés/lámparas trabajo inmediatamente al igual que para los interruptores de la lámpara normal (muchos sistemas de automatización del hogar son un poco lentos, con retraso reconocible)

* Solo 3,9 resistencias de pull-up de k en los pines de Arduino (solución al pasivo de pull-up)

* Sensores de movimiento PIR, sensores de luz etc. podría ser utilizado como interruptor así como los dispositivos (monoestable con temporizador ajustable)

* Relés son CA (SSR) o DC (MOSFET) para LED iluminación etc.

* Limitación corriente: corriente máxima de SSR es de 1.2A por lo tanto carga debe ser menor de 250 w (en 220V AC)

* Sensores de temperatura legibles en cualquier momento - están "ocultas" en los interruptores de pared

* Dispositivo datos y ajustes se almacenan en la EEPROM de la placa Arduino - sistema funciona incluso después de la interrupción del suministro eléctrico

* Cambios están programados por comandos serie de la PC, sin embargo funciona standalone así sin un PC conectado

* Por funciones complejas de diseño que no crítico debe ser manejado en el nivel de PC en lugar del micro controlador - por ejemplo activación de calefacción basado en valores de temperatura promedio

Ejemplos de comandos:

R4 > 1 Encienda la lámpara conectada a Relay4
R4:1 (respuesta)

Exploración exploración de nuevos dispositivos conectados
Nuevos dispositivos de añadido (lista con IDs)

¿T8?      Temperatura medida por el sensor de temperatura
T8:18.7

¿R14?   Estado del Relais
R14:1

S9 > R6 Switch9 obligado a Relay6
S9 > R7 Switch9 también limitados a Relay7 (interruptor de pared 9 controlará otras cargas (o lámparas) 6 y 7 en adelante)

Ejemplo de mensaje de estado:
R2:0    Lámpara conectada al relé 2 se ha apagado por uno de los interruptores asociados o por comando

---

Secciones de código (simplificadas)

Sensor de temperatura de lectura:

#include OneWire.h
#include EEPROM.h

OneWire * ujo;   inicialización del valor clase

addr Byte [8];   array para almacenar la dirección del dispositivo 1-wire
flotador de celsius;
bytes m;   número de sensor de temperatura (cada dirección sensor utiliza 4 bytes en la EEPROM)
bytes de bus;  Pin del Arduino a utilizar (pin = bus + 1)

void MeasureTemp()
{
addr [0] = 40;   hex28
addr[1]=EEPROM.Read(m*4);   Dirección 1-4 de bytes (bytes significativos) almacenado en esas posiciones
addr[2]=EEPROM.Read(1+m*4);
addr[3]=EEPROM.Read(2+m*4);
addr[4]=(EEPROM.Read(3+m*4)) y 15;
addr [5] = 0;   Anuncio de bytes 5 6 de la dirección del dispositivo 1-wire son siempre 0
addr [6] = 0;
addr[7]=addrOneWire::CRC8(addr,7);   byte 7 (CRC) se genera de los anteriores 7 bytes

ujo = nuevo OneWire(bus+1);  creación de instancia de la clase
ujo -> .reset();
ujo -> select(addr);   seleccionar el sensor de temperatura
ujo -> write(68);   iniciar la conversión, con zener (bus puede utilizarse durante la conversión)
Delete(OW); cancelación de la instancia de la clase
}

{retardo de 800 ms (con rutina de temporizador) permitiendo el DS18B20 calculando el valor de temperatura de 12 bits}

void ReadTemp()
{
addr [0] = 40;
addr[1]=EEPROM.Read(m*4);
addr[2]=EEPROM.Read(1+m*4);
addr[3]=EEPROM.Read(2+m*4);
addr[4]=(EEPROM.Read(3+m*4)) y 15;
addr [5] = 0;
addr [6] = 0;
addr[7]=addrOneWire::CRC8(addr,7)

ujo = nuevo OneWire(bus+1);
ujo -> reset();
ujo -> select(addr);
ujo -> write(190);   comando leer el sensor
datalow = caudal -> read();   lectura de bytes 1 y 2 solamente, el valor de la temperatura real
datahigh = caudal -> read();
Delete(OW);
unsigned int de crudo = (datahigh << 8) | datalow; desplazamiento de bits hasta forma un valor de 12 bits
Celsius = int (((float) crudo / 16.0) * 10);
}

Serial.println (c/10);   resultado es en grados Celsius con una precisión de 0.1 grados

---

Estado del interruptor de lectura:

byte PIOdata;
k bytes;          cambiar ID

void ReadPIO()
{
ujo -> reset();
addr [0] = 58;
addr[1]=(EEPROM.Read(2048+k*8));
addr[2]=(EEPROM.Read(2049+k*8));
addr[3]=(EEPROM.Read(2050+k*8));
addr[4]=(EEPROM.Read(2051+k*8) y 15);    Dirección byte siempre es menos de 15
addr [5] = 0;
addr [6] = 0;
addr[7]=OneWire::CRC8(addr,7);
ujo -> select(addr);                Selector de
ujo -> write(245);                    Comando de lectura de la PIO
PIOdata = caudal -> read();
Si (PIOdata == 30) / / el interruptor A está cerrado *
{
ToggleLamp();               relé de estado invertida y corto retardo añadido para evitar el aleteo
}
}

* Si ambos contactos están abiertos el resultado es 15

bit 0 DS2413 pin 6 (PIO A) nivel de entrada
bit 1 DS2413 pin 6 (PIO A) invertida (!) nivel de salida (controla el transistor de salida), 0 = transistor tira de pin a tierra
bit 2 DS2413 pin 4 (PIO B) nivel de entrada
nivel de salida de bit 3 DS2413 pin 4 (PIO B) invertida
bits 4-7 invierten valores de bits 0-3

como resultado 15 (0000 1111) significa tanto niveles de entrada son altos (bits 0 y 2) debido a las resistencias de pullup 22 kohm y dos transistores de salida están abiertos (bits 1 y 3) permiten la salida de "flotar"

Cuando se cierra el interruptor A pin 6 se pone en cortocircuito a bit resultante tierra 0 para cambiar a la baja:
valor de entrada cambia de 15 (0000 1111) a 30 (0001 1110)

Cuando el interruptor B está cerrado (mientras se suelta el interruptor A) la entrada es de 75 (0100 1011)

---

Inversión relé de estado:

void ToggleLamp()
{
addr [0] = 58;
addr[1]=(EEPROM.Read(1020+m*4));
addr[2]=(EEPROM.Read(1021+m*4));
addr[3]=(EEPROM.Read(1022+m*4));
addr[4]=(EEPROM.Read(1023+m*4) y 15);
addr [5] = 0;
addr [6] = 0;
addr[7]=OneWire::CRC8(addr,7);

ujo -> reset();
ujo -> select(addr);       seleccionar relé,
ujo -> write(245);          Comando de lectura de la PIO
PIOdata=dv.read();

Si (PIOdata == 15) / / transistores están abiertos (= relé está abierto)
{
ujo -> reset();
ujo -> select(addr);
ujo -> write(90);              Comando de escritura PIO
ujo -> write(254);            Encienda el transistor A *
ujo -> write(1);                 byte invertido se debe escribir así para verificación (!)
Serial.Print("R");
Serial.Print (m);
Serial.println (": 1");
}

Si (PIOdata == 120) / / se cierra el relé
{
ujo -> reset();
ujo -> select(addr);
ujo -> write(90);              Comando de escritura PIO
ujo -> write(255);            Apague el transistor A *
ujo -> write(0);                 byte invertido se debe escribir así para verificación (!)
Serial.Print("R");
Serial.Print (m);
Serial.println (": 0");
}
}

* LED interno del la SSR es conducido por el transistor A (PIO A la salida) del interruptor 1-wire, pin 6. Cuando el bit 0 se establece en 0 (111111 10) el transistor tira el nivel de salida a GND - activar el LED y la SSR. Por bit de valor 0 a 1 (11 111111) el relé se desactiva.
Salida de B no está en uso en mi circuito, sin embargo por supuesto podría activar del mismo modo con bit 1 (111111 01). El restante seis bits deben ser altos todo el tiempo.

Ya que los interruptores y relés utilizan chips de DS2413 que se distinguen cuando se agrega un nuevo dispositivo. Una rutina activa transistor A por un período corto. En caso de que el dispositivo remoto es un relé lógico bajo será detectado en la entrada B PIO ya que los dos pines están conectados.

En progreso:

* Prueba de sensores PIR y adición de la función de retardo ajustable en el software

* Desarrollo de sensor de presión

* Modificar la librería OneWire para permitir el funcionamiento en paralelo en todos los autobuses (comandos actualmente todo 1-wire son secuenciales)

* Prueba el modo Overdrive 1-wire

* Web basado en administración remota (PHP + UDP)

Artículos Relacionados

SISTEMA de domótica basado en pantalla táctil inalámbrico

SISTEMA de domótica basado en pantalla táctil inalámbrico

Se trata de un sistema de domótica táctil pantalla base.Domótica se refiere al uso de la tecnología informática y de información para el control de funciones y aparatos electrodomésticos. Sistemas pueden variar desde simple control remoto de la ilumi
Jarvis: Sistema de domótica basados en un Arduino

Jarvis: Sistema de domótica basados en un Arduino

Me fue inspirado por Jarvis de Iron Man y fuertemente quería un sistema de automatización del hogar. Los sistemas existentes no eran baratos, así que decidí construir mi propio sistema domótico utilizando un Arduino. En la actualidad su funcionalidad
Uber domótica con Arduino y Pi

Uber domótica con Arduino y Pi

[EDITAR] He creado un foro para colaborar en el código de puerta de enlace.http://homeautomation.proboards.com/Board/2/openha...Hace unos años me convertí en propietario de un perro por primera vez. Me gustaba salir de Cody en la perrera solo todo el
INTRODUCCIÓN A LA DOMÓTICA.

INTRODUCCIÓN A LA DOMÓTICA.

ADVERTENCIA: ESTE PROYECTO LE CAUSA EMOCIÓN QUE PUEDE SER PERJUDICIAL PARA LA SALUD.Así que aquí estoy con otra diversión Instructables controlar la conducido por voz conrduino a través del módulo Bluetooth (HC 05). Así que este Instructables pueden
Cómo: Agregar comentarios de voz a su domótica con un enlace uno!

Cómo: Agregar comentarios de voz a su domótica con un enlace uno!

Hola a todos,Hoy te mostraré, cómo agregar comentarios de voz a tu Home Automation.Este siempre será un buen añadido para su hogar automatización proyecto con enlace uno porque tu un Linkit dejaría una regeneración como un "Me he convertido en luces
Gesto basado en domótica con Edison de Intel (Intel IoT))

Gesto basado en domótica con Edison de Intel (Intel IoT))

Domótica en gesto es la nueva forma de interactuar con dispositivos eléctricos disponibles en nuestra casa. En este proyecto utilizaremos sensores en lugar de cámara para reconocimiento de gestos, ya que proporciona mejor consistencia, independencia
Sistema de domótica con 1SHEELD basado en SMS

Sistema de domótica con 1SHEELD basado en SMS

Hola amigos, este mi primero instructable y apenas convertido 16 año viejo hace dos meses.En este instructable mostrará cómo hacer 5 canal SMS basado en sistema de domótica mediante 1sheeld. En vez de utilizar Relés electromagnéticos que he construid
Láser basado en alerta de intruso! (Domótica)

Láser basado en alerta de intruso! (Domótica)

Hola todo el mundo!Soy Geeve George un fabricante con orgullo de INDIA!Empecé a hacer en la edad de 10 y mi afán por hacer todavía continúa como estoy fascinado por las infinitas posibilidades y oportunidades que la tecnología ofrece.Sombrero! es mi
Bluetooth basado en domótica utilizando arduino

Bluetooth basado en domótica utilizando arduino

Queridos amigos que este es mi primer proyecto que estoy publicando en instructable. Se construyo con dos microcontroladores uno es arduino y otro at89s52. Y también he desarrollado android app para el control de la domótica.Paso 1: Componentes neces
Activado por voz tomas (domótica)

Activado por voz tomas (domótica)

Pero otra voz había controlada por domótica!Como se muestra en la imagen, el sistema puede controlar cualquier aparato eléctrico, encender o apagar, que está conectado a la toma de corriente. El sistema lo hace mediante comandos de voz a medida. El s
ESTRAGOS - domótica con Control de voz

ESTRAGOS - domótica con Control de voz

Antes de comenzar la descripción del proyecto, me gustaría agradecer a Audrey y Nicole me dan la placa Intel Edison con un montón de sensores.En este Instructable he utilizado a Intel Edison para implementar domótica con control de voz completa. Bási
(Reloj activado) Domótica a través de Twitter

(Reloj activado) Domótica a través de Twitter

Se trata de un Instructable para hacer un Twitter controlado sistema de domótica para su casa en menos de 7$ (Rs.450). Este tutorial incluye configuración de Python, Arduino como Twitter para construir su propio asistente personal de Twitter controla
Domótica telecontrol

Domótica telecontrol

ha querido publicar este proyecto hace aproximadamente 3 años, pero nunca pudo encontrar el tiempo. Oh bien necesidades deben como los discos de diablo como dicen y está aquí para usted ahora. Espero que se a claro, si no me avisas y lo arreglare. Di
Domótica mediante Arduino Uno

Domótica mediante Arduino Uno

¿Alguna vez has querido hacer su hogar automatizado? ¿Quiere controlar las luces, ventilador y otros dispositivos desde tu smartphone? ¿O un tutorial sobre los dispositivos conectados y comenzar con ella? Domótica Android le mostrará cómo hacer que t