Projet de domotique basé sur matériels 1 fil

projet d’automatisation maison en utilisant les composants suivants

Arduino Mega 2560 http://arduino.cc/en/Main/arduinoBoardMega2560
Circuits intégrés :
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 câble avec connecteurs RJ11 (topologie en étoile avec bus série, plusieurs périphériques sur chaque bus)

Capable de manipulation :
8 1-wire bus (à l’aide des instances de classe dynamique pour la bibliothèque)
commutateurs de 256
Relais de 256
128 capteurs de température (mode non-parasite pour le bus plus rapide)

* Interrupteur à relay associations sont librement programmables

* Pas de haute tension et des câbles d’alimentation à interrupteurs muraux, seulement 12 v DC via câble UTP

* Plus bas contre les surtensions rayonnement actuel et électromagnétique depuis SSRs allumer et éteindre au passage par zéro

* Commutateurs sont continuellement analysés par l’Arduino - ainsi de commutation du relais/lampes travail immédiatement tout comme pour les interrupteurs de lampe normale (nombreux systèmes domotiques sont un peu lents, avec un retard reconnaissable)

* Single 3,9 résistances de pull-up k sur les broches de l’Arduino (solution passive pull-up)

* Capteurs de mouvement PIR, capteurs de lumière etc pourrait être utilisé comme interrupteur dispositifs aussi bien (mode monostable avec minuterie réglable)

* Relais sont AC (SSR) ou DC (MOSFET) pour l’éclairage etc LED.

* Courant : SSR courant maximum est 1. 2 a donc charge doit être inférieure à 250 w (à 220V AC)

* Capteurs de température lisibles en tout temps - ils sont « cachés » dans les interrupteurs muraux

* Paramètres et données appareil sont stockés dans la mémoire EEPROM de la carte Arduino - système fonctionne même après coupure de courant

* Changements sont programmés par des commandes série de PC, mais ça marche autonome aussi bien sans un PC connecté

* Par les fonctions complexes de conception qui ne sont pas temps critiques doivent être traités au niveau du PC au lieu du microcontrôleur - par exemple activation du chauffage basée sur les valeurs de température moyenne

Exemples de commandes :

R4 > 1 Allumez la lampe connectée à Relay4
R4:1 (réponse)

Recherche de balayage de nouveaux périphériques connectés
Ajouté de nouveaux périphériques (liste avec IDs)

T8 ?      Température mesurée par la sonde de température
T8:18.7

R14 ?   Etat du relais
R14:1

S9 > R6 Switch9 lié à Relay6
S9 > Switch9 R7 est également lié à Relay7 (interrupteur mural 9 commandera des lampes (ou autres charges) 6 et 7 par la suite)

Exemple de message d’État :
R2:0    Lampe connectée au relais 2 a été désactivée par un des interrupteurs associés ou par commande

---

Sections de code (simplifiées)

Capteur de température de lecture :

#include OneWire.h
#include EEPROM.h

OneWire * ow ;   initialisation de classe value

addr octet [8] ;   Tableau pour stocker l’adresse 1 fil périphérique
flotteur celsius ;
octet m ;   nombre de capteur de température (chaque adresse capteur utilise 4 octets dans l’EEPROM)
octet d’autobus ;  Goupille de Arduino à utiliser (broche = bus + 1)

Sub MeasureTemp()
{
addr [0] = 40 ;   hex28
addr[1]=EEPROM.Read(m*4) ;   adresse octets 1-4 (octets significatifs) stockée dans ces positions
addr[2]=EEPROM.Read(1+m*4) ;
addr[3]=EEPROM.Read(2+m*4) ;
addr[4]=(EEPROM.Read(3+m*4)) & 15 ;
addr [5] = 0 ;   annonce octets 5 6 de l’adresse 1 fil périphérique sont toujours 0
addr [6] = 0 ;
addr[7]=addrOneWire::crc8(addr,7) ;   octet 7 (CRC) est généré à partir du précédents octets 7

UX = new OneWire(bus+1) ;  création d’une instance de la classe
oe -> .reset() ;
oe -> select(addr) ;   Sélectionnez le capteur de température
oe -> write(68) ;   lancer la conversion, avec zener (bus peut être utilisé pendant la conversion)
Delete(ow) ; supprimer de l’instance de la classe
}

{retard ms 800 (avec la routine du temporisateur) permettant le DS18B20 calcul de la valeur de température 12 bits}

Sub 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)) & 15 ;
addr [5] = 0 ;
addr [6] = 0 ;
addr[7]=addrOneWire::crc8(addr,7)

UX = new OneWire(bus+1) ;
oe -> reset() ;
oe -> select(addr) ;
oe -> write(190) ;   commande pour lire le capteur
datalow = oe -> read() ;   lire des octets 1 et 2 uniquement, la valeur de la température réelle
datahigh = oe -> read() ;
Delete(ow) ;
raw unsigned int = (datahigh << 8) | datalow ; décalage de bits jusqu'à forme une valeur de 12 bits
Celsius = int (((float) brut / 16,0) * 10) ;
}

Serial.println (celsius/10) ;   Il en résulte en Celsius avec une précision de 0,1 degré

---

État de lecture de commutation :

octet PIOdata ;
k octets ;          ID de l’interrupteur

Sub ReadPIO()
{
oe -> 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) & 15) ;    octet de l’adresse est toujours inférieur à 15
addr [5] = 0 ;
addr [6] = 0 ;
addr[7]=OneWire::crc8(addr,7) ;
oe -> select(addr) ;                commutateur de sélection
oe -> write(245) ;                    PIO lire la commande
PIOdata = oe -> read() ;
Si (PIOdata == 30) / / interrupteur A est fermé *
{
ToggleLamp() ;               État de relais inversé et court délai ajouté pour empêcher les battement
}
}

* Si les deux contacts sont ouverts le résultat est 15

bit 0 DS2413 broche 6 (PIO A) niveau d’entrée
bit 1 DS2413 broche 6 (PIO A) inversé (!) niveau de sortie (sortie transistor de contrôle), 0 = transistor tire broche à la masse
bit 2 DS2413 broche 4 (PIO B) niveau d’entrée
bit 3 niveau de sortie de broche 4 PIO B inversé DS2413
bits 4 à 7 inversé les valeurs de bits 0-3

ainsi, 15 (0000 1111) signifie les deux niveaux d’entrée sont haute (bits 0 et 2) en raison des 22 kohm pullup résistances et les deux transistors de sortie sont ouverts (bits 1 et 3), ils permettent la sortie de "flotter"

Lorsqu’un interrupteur est fermé broche 6 est court-circuitée pour bit résultant de sol 0 pour passer à la basse :
valeur d’entrée passera de 15 (0000 1111) à 30 (0001 1110)

Lorsque l’interrupteur B est fermé (alors que l’interrupteur A est libéré) l’entrée est 75 (0100 1011)

---

État de relais inverseur :

Sub 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) & 15) ;
addr [5] = 0 ;
addr [6] = 0 ;
addr[7]=OneWire::crc8(addr,7) ;

oe -> reset() ;
oe -> select(addr) ;       sélectionner le relais,
oe -> write(245) ;          PIO lire la commande
PIOdata=dv.read() ;

Si (PIOdata == 15) / / Transistors sont ouverts (= relais est ouvert)
{
oe -> reset() ;
oe -> select(addr) ;
oe -> write(90) ;              Commande "write" PIO
oe -> write(254) ;            Allumez transistor A *
oe -> write(1) ;                 inversé octets doit être écrit aussi bien pour la vérification (!)
Serial.Print("R") ;
Serial.Print (m) ;
Serial.println (": 1") ;
}

Si (PIOdata == 120) / / relais est fermé
{
oe -> reset() ;
oe -> select(addr) ;
oe -> write(90) ;              Commande "write" PIO
oe -> write(255) ;            Mettez hors tension transistor A *
oe -> write(0) ;                 inversé octets doit être écrit aussi bien pour la vérification (!)
Serial.Print("R") ;
Serial.Print (m) ;
Serial.println (": 0") ;
}
}

* LED interne de la SSR l’est entraînée par transistor (PIO A sortie) de l’interrupteur 1 fil, broche 6. Lorsque le bit 0 est défini sur 0 (10 111111) le transistor tire le niveau de sortie à GND - activation de la LED et le SSR. En définissant le bit 0 à 1 (11 111111) la SSR est désactivé.
Sortie B n’est pas en usage dans mon circuit, mais bien sûr, il pourrait activé de la même façon avec mèche 1 (111111 01). Les bits restants six doivent être élevées tout le temps.

Puisque les commutateurs et les relais utilisent des puces de DS2413 qu'ils sont dissociés lorsqu’un nouveau périphérique est ajouté. Une routine active transistor A pendant une courte période. Dans le cas où le périphérique distant est un relais logique faible sera détectée sur l’entrée de PIO B puisque les deux broches sont connectés.

En cours :

* Test de capteurs PIR et ajout de la fonction de retard réglable dans le logiciel

Développement de capteur de pression

Modification de la bibliothèque OneWire pour permettre un fonctionnement en parallèle sur tous les autobus (actuellement 1 fil tous les commandes sont séquentielles)

* 1-wire Overdrive mode d’essai

* Web based administration à distance (PHP + UDP)

Articles Liés

Clinomètre base de matériel didactique

Clinomètre base de matériel didactique

dans ce Instructable, je vais vous montrer comment faire un clinomètre base de matériel didactique.  Une version simple d'arpentage de matériel, un inclinomètre peut être utilisée pour trouver l'angle que vous cherchez, par exemple de là où vous vous
ÉCRAN tactile sans fil système de domotique basé sur

ÉCRAN tactile sans fil système de domotique basé sur

Il s'agit d'un système de domotique tactile écran basé.Domotique se réfère à l'utilisation des technologies informatiques et d'information pour contrôler les caractéristiques et les appareils ménagers. Systèmes peuvent aller de simple contrôle à dist
Comment faire un module logiciel de Tessel-style de matériel Adafruit-style

Comment faire un module logiciel de Tessel-style de matériel Adafruit-style

Tessel est un microcontrôleur connecté à internet avec Wifi intégré et diverses autres fonctionnalités. Il est conçu pour une interaction facile grâce à une série de modules, tels que Bluetooth Low Energy, Servo et d'autres.La compagnie a créé des mo
E-flocon de neige--hiver décor basé sur microcontrôleur atmega8

E-flocon de neige--hiver décor basé sur microcontrôleur atmega8

Décor en forme de flocon de neige pour arbre de Noël ou d'hiver. Projet de bricolage basé sur microcontrôleur Atmega8, maison faite PCB et entêtement pour créer différents effets visuels sur 25 LEDs. Visitez la page de blog pour obtenir électrique et
Domotique : Commande Relais Base sur le capteur de lumière (Intel Edison)

Domotique : Commande Relais Base sur le capteur de lumière (Intel Edison)

Salut tout le monde, dans ce instructable, je vais vous montrer comment rendre votre maison plus intelligente.Tous les soirs avant d'aller au lit, vous devez toujours mettre en marche le système d'alarme. Donc, dans ce projet, j'ai utilisera la cellu
Atelier sur chariot, matériel/approvisionnement des éléments récupérés.

Atelier sur chariot, matériel/approvisionnement des éléments récupérés.

Ce un une étagère en métal à confectionner un chariot pour la tenue des matériaux de la boutique.Sa faits entièrement de choses que les gens jeté. Pour cette raison, il sera difficile de reproduire cette build exacte. Cette ible vise plus à inspirer
Matériel ouvert abordable technologie axée sur l’Arduino pour personnes aveugles

Matériel ouvert abordable technologie axée sur l’Arduino pour personnes aveugles

Dans cet article, je voudrais vous parler d'un trousseau ultrasonique le dispositif pour les aveugles qui aident à détecter les obstacles à un niveau supérieur au cours de laquelle une simple canne blanche ne peut avertir les utilisateurs. Ces obstac
Réparation problème de matériel informatique de base (défaillance du disque système et PSU cassé et fichiers manquante/corrompue)

Réparation problème de matériel informatique de base (défaillance du disque système et PSU cassé et fichiers manquante/corrompue)

ce GUIDE n'est pas encore fini, j'ai va ajouter plus d'informations lorsque j'ai eu la CHANCE.Si vous avez besoin d'aide avec la fixation d'un ordinateur ou si vous avez des questions à tous n'hésitez pas à me message"Dans ce instructable je vais vou
Ventilateur t/mn avec capteur à effet hall interne et Arduino (Intro à interrompre la matériel et écran LCD)

Ventilateur t/mn avec capteur à effet hall interne et Arduino (Intro à interrompre la matériel et écran LCD)

Pour mon autre projet pour le travail, j'ai dû mesurer la vitesse de rotation du rotor en révolutions par Minute (tr/min) d'un ventilateur d'ordinateur mis à jour le. Il avait trois fils qui sortent et qui fait TIC TAC moi que peut-être qu'il a un mo
Comment construire votre premier avion RC pour sous $100 - émetteur, expédition, batterie, chargeur et matériel inclus

Comment construire votre premier avion RC pour sous $100 - émetteur, expédition, batterie, chargeur et matériel inclus

Avouons-le : avions radiocommandés sont coûteuses, surtout si vous êtes nouveau dans le hobby. Solutions moins chères font leur apparition chaque jour, mais pour la plupart, hobby-catégorie avions viennent avec un prix de gros. Electronics packs et k
DIY scanner 3D basé sur vision structurée de léger et stéréo en langage Python

DIY scanner 3D basé sur vision structurée de léger et stéréo en langage Python

Ce scanner 3D a été effectué à l'aide de faible coûts éléments classiques comme le vidéo-projecteur et webcams. Un scanner 3D à lumière structurée est un dispositif de balayage 3D pour mesurer la forme tridimensionnelle d'un objet à l'aide de motifs
Vitesse haute Precision micro perceuse de 'Matériel utile'

Vitesse haute Precision micro perceuse de 'Matériel utile'

Fabriqué de précision haute vitesse micro perceuse principalement du "matériel utile » (quelqu'un d'autre « junk » et de la ferraille)Mon premier Instructable, essayez de ne pas être trop méchant.Un grand Merci à Andrea Biffi pour poster sa perceuse
Petites pièces/matériel/outil de stockage Solution armoire

Petites pièces/matériel/outil de stockage Solution armoire

Je suis une ventouse pour organisation ! Je suis un grand promoteur de tout avoir une aire désignée ou à domicile dans mon atelier. Étant donné que ma boutique est un endroit que j'ai chercher réconfort et tranquillité, il est important qu'il soit or
Des soins appropriés pour votre matériel de 360 et 360

Des soins appropriés pour votre matériel de 360 et 360

si vous êtes un de ceux qui veulent prendre vraiment bien soin de votre 360, alors c'est l'Instructable pour vous.Il s'agit de mon premier instructable, donc s'il vous plaît me donner quelques informations sur comment j'ai fait ou comment je peux amé