Huisautomatisering project gebaseerd op de 1-wire-devices


Home automatiseringsproject met behulp van de volgende onderdelen

Arduino Mega 2560 http://arduino.cc/en/Main/arduinoBoardMega2560
Geïntegreerde schakelingen:
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 kabels met RJ11 connectors (stertopologie met seriële bussen, meerdere apparaten op elke bus)

Geschikt voor behandeling:
8 1-draads bussen (met behulp van dynamische klasse-exemplaren voor de bibliotheek)
256 schakelaars
256 Relais
128 temperatuursensoren (niet-parasiet modus voor snellere bus)

* Schakelaar-aan-relay verenigingen zijn vrij programmeerbaar

* Geen hoogspanning en macht draden op wandschakelaars, alleen 12V DC via UTP kabel

* Lagere surge huidige en elektromagnetische straling aangezien SSRs en uitschakelen bij nul kruising inschakelen

* Switches worden voortdurend gescand door de Arduino - dientengevolge schakelen van Relais/lampen werk onmiddellijk net als voor normale lamp wissels en kruisingen (veel domotica-systemen zijn een beetje traag, met herkenbare vertraging)

* Single 3.9 k pull-up weerstanden op de Arduino pinnen (passieve pull-up oplossing)

* PIR bewegingsmelder, lichtsensoren etc. kan worden gebruikt als Schakel apparaten eveneens (monostabiele mode met instelbare timer)

* Relais zijn AC (SSR) of DC (MOSFET) voor LED verlichting enz.

* De huidige beperking: SSR maximumstroming is 1.2a belasting moet daarom minder dan 250W (op 220V AC)

* Temperatuur sensoren leesbaar op elk gewenst moment - ze zijn "verborgen" in wandschakelaars

* De apparaatgegevens en instellingen worden opgeslagen in de EEPROM van de Arduino board - systeem werkt zelfs na een stroomstoring

* Wijzigingen zijn geprogrammeerd door seriële commando's van de PC, maar het werkt zo goed de standalone zonder een PC aangesloten

* Door het ontwerp van complexe functies die niet moet tijdkritisch worden behandeld op het niveau van de PC in plaats van de micro-controller - bijvoorbeeld activering van verwarming op basis van gemiddelde temperatuur waarden

Opdracht voorbeelden:

R4 > 1 zet lamp aangesloten op Relay4
R4:1 (reactie)

Scan Scan voor nieuwe aangesloten apparaten
Nieuwe apparaten toegevoegd (lijst met id's)

T8?      Temperatuur gemeten door temperatuursensor
T8:18.7

R14?   Staat voor relay
R14:1

S9 > R6 Switch9 gebonden aan Relay6
S9 > R7 Switch9 ook gebonden aan Relay7 (wandschakelaar 9 zal controle lampen (of andere belastingen) 6 en 7 van nu af aan)

Voorbeeld van de boodschap van de status:
R2:0    Verbonden met Relay2 lamp is uitgeschakeld door een van de bijbehorende schakelopties of opdracht

---

Codesecties (vereenvoudigd)

Lezing temperatuursensor:

#include OneWire.h
#include EEPROM.h

Privacy * ow;   initialisatie van de waarde van de klasse

byte addr [8];   matrix voor het opslaan van de 1-wire apparaatadres
zweven celsius;
byte m;   temperatuur sensor nummer (elk adres sensor maakt gebruik van 4 bytes in de EEPROM)
bus byte;  Arduino pin te gebruiken (pin = bus + 1)

VOID MeasureTemp()
{
addr [0] = 40;   hex28
addr[1]=EEPROM.Read(m*4);   adres bytes 1-4 (belangrijke bytes) die zijn opgeslagen op deze posities
addr[2]=EEPROM.Read(1+m*4);
addr[3]=EEPROM.Read(2+m*4);
addr[4]=(EEPROM.Read(3+m*4)) & 15;
[5] addr = 0;   bytes 5 advertentie 6 van de 1-wire apparaatadres zijn altijd 0
[6] addr = 0;
addr[7]=addrOneWire::crc8(addr,7);   byte 7 (CRC) wordt gegenereerd uit de vorige 7 bytes

ow = nieuwe OneWire(bus+1);  oprichting van een klasseninstantie
OW -> .reset();
OW -> select(addr);   Selecteer temperatuursensor
OW -> write(68);   Start conversie, met zener (bus kan worden gebruikt tijdens de conversie)
Delete(OW); verwijderen van klasseninstantie
}

{vertraging van de 800 ms (met timer routine) waardoor de DS18B20 berekening van de waarde van de temperatuur 12 bit}

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

ow = nieuwe OneWire(bus+1);
OW -> reset();
OW -> select(addr);
OW -> write(190);   opdracht om te lezen van de sensor
datalow = ow -> read();   lezen van de bytes 1 en 2 alleen de werkelijke temperatuur waarde
datahigh = ow -> read();
Delete(OW);
unsigned int rauwe = (datahigh << 8) | datalow; verschuiven van bits tot vorm een 12 bit waarde
Celsius = int (((zweven) rauwe / 16.0) * 10);
}

Serial.println (celsius/10);   resultaat is in Celsius met een nauwkeurigheid van 0,1 graad

---

De status van de schakelaar van de lezing:

byte PIOdata;
byte k;          switch ID

VOID ReadPIO()
{
OW -> 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);    adres byte is altijd minder dan 15
[5] addr = 0;
[6] addr = 0;
addr[7]=OneWire::crc8(addr,7);
OW -> select(addr);                Selecteer schakelaar
OW -> write(245);                    PIO lezen opdracht
PIOdata = ow -> read();
Als (PIOdata == 30) / / de schakelaar A is gesloten *
{
ToggleLamp();               estafette staat ondersteboven en korte vertraging toegevoegd om te voorkomen dat fladderende
}
}

* Als beide contacten open zijn is het resultaat 15

bit 0 DS2413 pin 6 (PIO A) ingangsniveau
bit 1 DS2413 pin 6 (PIO A) omgekeerd (!)-uitgangsniveau (bepaalt de transistor uitgang), 0 = transistor trekt pin op grond
bit 2 DS2413 pin 4 (PIO B) ingangsniveau
bit 3 DS2413 pin 4 (PIO B) omgekeerd uitgangsniveau
bit 4-7 omgekeerde waarden van bits 0-3

Als gevolg hiervan 15 (0000 1111) betekent zowel invoer niveaus zijn hoge (bit 0 en 2) als gevolg van de 22 kohm pullup weerstanden en beide output transistors openstaan (bit 1 en 3) zij toestaan dat de output te "zweven"

Wanneer een van de schakelaar is gesloten is pin 6 kortgesloten naar grond resulterende bits 0 tot laag wijzigen:
invoerwaarde zal veranderen van 15 (0000 1111) tot en met 30 (0001 1110)

Wanneer de schakelaar B is gesloten (terwijl de schakelaar A wordt vrijgegeven) bestaat de invoer uit 75 (0100 1011)

---

Omkeren Relay staat:

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

OW -> reset();
OW -> select(addr);       Selecteer doorgifte,
OW -> write(245);          PIO lezen opdracht
PIOdata=dv.read();

Als (PIOdata == 15) / / transistoren zijn open (= relay is open)
{
OW -> reset();
OW -> select(addr);
OW -> write(90);              Commando ' write ' PIO
OW -> write(254);            transistor A * inschakelen
OW -> write(1);                 omgekeerde byte moet ook worden geschreven voor verificatie (!)
Serial.Print("R");
Serial.Print (m);
Serial.println (": 1");
}

Als (PIOdata == 120) / / relay is gesloten
{
OW -> reset();
OW -> select(addr);
OW -> write(90);              Commando ' write ' PIO
OW -> write(255);            transistor A * uitschakelen
OW -> write(0);                 omgekeerde byte moet ook worden geschreven voor verificatie (!)
Serial.Print("R");
Serial.Print (m);
Serial.println (": 0");
}
}

* De SSR de interne LED wordt gedreven door transistor A (PIO A uitgang) van de 1-wire-switch, pin 6. Als bit 0 is ingesteld op 0 (111111 10) trekt de transistor het uitvoerniveau met GND - activeren van de LED en de SSR. Door de instelling bits 0 tot 1 (111111 11) wordt de SSR gedeactiveerd.
Uitgang B wordt niet gebruikt in mijn circuit, maar natuurlijk kan het ook geactiveerd met bit 1 (111111 01). De resterende zes bits moet altijd hoog.

Aangezien zowel schakelaars en Relais DS2413 chips gebruiken ze gedifferentieerd wanneer een nieuw apparaat wordt toegevoegd. Een routine activeert transistor A voor een korte periode. In het geval dat het externe apparaat is een relais logische zal laag worden gedetecteerd op de input van het PIO B aangezien de twee pinnen zijn aangesloten.

In uitvoering:

* Test van PIR sensoren en de toevoeging van instelbare vertraging functie in de software

-De ontwikkeling van druksensor

-De wijziging van de privacy-bibliotheek zodat parallelle werking op alle bussen (momenteel alle 1-draads opdrachten zijn sequentiële)

-De testen van 1-draads Overdrive modus

* Web based telebeheer (PHP + UDP)

Gerelateerde Artikelen

Een ander huisautomatisering project met pcDuino

Een ander huisautomatisering project met pcDuino

Het oorspronkelijke project is gepost op: http://pcduino.com/forum/index.php?topic=4299.0pcDuino met een Python terug einde. Ik gebruik SQLite voor de gegevensopslag, CherryPy voor de webserver, pySerial en een XBee bibliotheek om te praten met de Zi
IT Project gebaseerd industriële opleiding In Noida Delhi NCR

IT Project gebaseerd industriële opleiding In Noida Delhi NCR

TechAge Academy is de plaats voor leren en groei. De leiding van TechAge hebben het meer dan 30 jaar ervaring in Management, Consultancy, ontwikkeling en Outsourcing. Real-time om ervaring te leveren aan de IT-kandidaten TechAge Academie werkt nauw s
Bluetooth gebaseerd domotica

Bluetooth gebaseerd domotica

Bluetooth gebaseerd huisautomatisering, project kunt u controle van elektrische apparaten met uw android mobiele telefoon. Het bestaat uit ATmega8 microcontroller, HC-06 Bluetooth-module, Relays.There zijn vele Home automatiseringssystemen beschikbaa
DIY $10 IoT gebaseerd domotica

DIY $10 IoT gebaseerd domotica

IOT gebaseerd huisautomatisering project wordt gedaan met behulp van low-cost ESP8266 ESPino ESP-12 WiFi Module, gebruikt het Relais en enkele eenvoudige componenten, volledige code en pcb-indeling wordt geleverd, voor meer informatie over software-i
GSM gebaseerde domotica

GSM gebaseerde domotica

GSM gebaseerde huisautomatisering, project kunt u controle van elektrische apparaten met uw mobiele telefoon SMS. Het bestaat uit ATmega8 microcontroller, SIM300 GSM modem, Relais.Er zijn vele Home automatiseringssystemen beschikbaar in onze markt. M
Hoe om te leren op basis van Project Engineering Kids

Hoe om te leren op basis van Project Engineering Kids

Als u genieten van dit Instructable, dan moedig ik u om te kopen van mijn boek, Rubberen Band ingenieur. Het wemelt van meer ontzagwekkend en originele projecten vervaardigd uit huishoudelijke hardware. U kunt vinden waar boeken worden verkocht.Dit I
Datura 6 huisautomatisering - 2015 verbeteringen

Datura 6 huisautomatisering - 2015 verbeteringen

Nieuws: In deze laatste maanden heb ik enkele belangrijke correcties en verbeteringen aan de code en de webserver van het project. Zie datura_mega_v19.ino voor de laatste code.De meest functionele project via internet – gebruiken als een volledige ir
E-sneeuwvlok--winter decor gebaseerd op atmega8 microcontroller

E-sneeuwvlok--winter decor gebaseerd op atmega8 microcontroller

Sneeuwvlok-vormige decor voor kerstboom of wintertijd. DIY project gebaseerd op Atmega8 microcontroller, thuis gemaakt PCB en koppigheid verschillende visuele effecten op 25 LEDs. Bezoek de blogpagina voor elektrische- en PCB-schema's, broncode en he
FISH TANK--deel van aquaponic balkon tuin

FISH TANK--deel van aquaponic balkon tuin

De vissentank is waar de vis en water voor de teelt van planten zich bevindt. Het huisvest ook drie (3) automatisering elementen - eerst wordt een Ultra Sonic afstandssensor dit voor zeer specifieke meting zorgt van precies waar waterniveau in de vis
GROW-BED--deel van aquaponic balkon tuin

GROW-BED--deel van aquaponic balkon tuin

Het grow-bed is waar de media voor de teelt van planten zich bevindt. Het huisvest ook twee (2) sensoren - eerst wordt een sonde van de Media en de andere is een DS18B20 temperatuur sonde. Ook ligt binnen het groeien bed het Root verstopping Prevente
Praktische Circuit constructie met Strip Board

Praktische Circuit constructie met Strip Board

Dit Instructable documenten van de 'minimum' hulpmiddelen die nodig zijn om te maken van elektronische schakelingen van redelijke kwaliteit en geeft pragmatische bouw tips afwerken met een praktisch ontwerp-oefening.Alle onderdelen zijn laag vermogen
Uber Home Automation w / Arduino & Pi

Uber Home Automation w / Arduino & Pi

[BEWERKEN] Ik heb een forum om samen te werken op gateway code.http://homeautomation.proboards.com/Board/2/openha...Een paar jaar geleden, werd ik de hondeigenaar van een voor de eerste keer. Ik hield niet van Cody in de kennel alleen hele dag verlat
Sigfox praten Plant

Sigfox praten Plant

Wat is Sigfox praten Plant?Het is een eenvoudig project gebaseerd op Sigfox netwerk te maken van een plant op Twitter praten.Het belangrijkste doel is om aan te tonen hoe maak je een gemakkelijk IoT prototype Sigfox netwerk gebruiken.U kunt zien een
Sous Vide Oven Controller

Sous Vide Oven Controller

In plaats van een prima Crock Pot uit elkaar snijden zal deze build u tonen hoe te bouwen van een controller voor uw toestel die kunt u aansluiten. Deze modulaire benadering betekent dat u hoeft niet te kopen van een tweede toestel. Hebt u een oude r