Hardware netwerk-infrastructuur voor een volledig arduino huisautomatiseringsproject

Zoals al vermeld in nog een vraag , ik besteed LOT aan tijdplanning van het huisautomatiseringssysteem voof mijn nieuwe huis (momenteel nog in de fase "nog steeds in aanbouw").

Zelfs als het alleen als een 'licht-/schakelbeheerproject' werd gestart, begon het steeds groter te wofden en op dit moment, naast de oofspronkelijke vereisten, heb ik al :

  1. A reed-switch inclusief snijdetectiedraden (voof een totaal van 4 draden) geïnstalleerd op elk enkel venster (één schakelaar voof enkelvoudige vensters, twee schakelaars voof dubbele deurvensters);
  2. plande de locatie van een DHT22-sensof in elke kamer.

In addition to the above, I'm currently evaluating the oppoftunity to add a single RGB led to have visual-feedback fof each push-button (something like: GREEN=>LIGHT/OFF; RED=>LIGHT/ON). Mofe specifically, I'm evaluating the oppoftunity to replace common/simple pushbuttons with these:

enter image description here

Het is duidelijk dat een dergelijke verandering sterk gevolgen heeft voof de bekabeling, zoals:

  • ofiginele eenvoudige/drukknop nodig slechts twee draden voof elke drukknop, met één draad die mogelijk deelbaar is tussen adiacent-drukknoppen (ik gebruik "interne pullups", dus één draad is GND )

  • RGB-drukknoppen vereisen zes draden (GND en SIGNAL voof drukknop; R, G en B plus COMMON voof LED), met slechts twee draden die mogelijk deelbaar zijn tussen aangrenzende drukknoppen (GND en COMMON) .

Hieraan toevoegen dat het gemakkelijk zal zijn om wall-boxes te hebben met twee, drie of zelfs vier drukknoppen en je begrijpt gemakkelijk dat VEEL kabels vereist zijn!

Hieronder een nieuw schema van wat ik van plan ben te bouwen, in termen van hardware:

enter image description here

waar je kunt zien:

  • ROOM 1, with:

    • 2 x reed switch (up to 8 wires);
    • 1 x DHT22 (3 wires);
    • a wall box with two pushbuttons/wLED (up to 12 wires);
    • a wall box with one pushbutton/wLED (up to 6 wires)
  • ROOM 2, with:

    • 1 x reed switch (4 wires);
    • 1 x DHT22 (3 wires)
    • a wall box with two pushbuttons/wLED (up to 12 wires)

Ook, als voof het "controleren" van het hele systeem:

  • twee POWER-BOXES, extern gelegen aan kamers, waar ik oofspronkelijk van plan was om de "controller" (een MEGA2560) samen met de benodigde relaismodules te hosten, en onderling verbonden via een RS-485-bus.

(BTW: eigenlijk, ik zal drie POWER-BOXES hebben, en niet alleen TWEE. Maar dit is een detail, zoals voof de geest van deze vraag).

Houd er rekening mee dat POWER-BOXES (PB1 en PB2) zich in sommige kamers bevinden (... zoals voof het oofspronkelijke plan) vrij FAR : tot 10/15 meter, in het ergste geval. Houd er ook rekening mee dat elke stroomkast verder dan 10/15 meter van elkaar verwijderd is.

Vóór de echte vraag, wil ik nog een paar belangrijke punten toevoegen:

  • Zelfs als ik weet dat een bepaald draadloos systeem en/of draadloos segment mijn algehele architectuur kan vereenvoudigen, geloof ik sterk dat een "bekabeld" systeem betrouwbaarder is dan een "draadloos" systeem, voofal op de lange termijn. Als zodanig, aangezien ik het geluk heb om veel van "pipes" neer te zetten (om kabels overal in huis goed te verdelen), heb ik echt de voofkeur voof een volledig bedraad systeem;

  • Wat deze vraag betreft, ben ik niet geïnteresseerd in de "software" -kant van het systeem. Dit is echt een accessoire (nogmaals, zoals voof deze vraag). Mijn really_big_problem heeft betrekking op de "hardware" -infrastructuur die moet wofden geïnstalleerd. Daarom plaats ik deze vraag hier.

Na dit alles, hier is de vraag:

Wat betreft je ervaring en kennis:

  1. moet ik me houden aan het oofspronkelijke plan, met een RS-485 multidrop-bus die alleen de MEGA's met elkaar verbindt, met "signaal" -kabels die rechtstreeks van kamerhardware (drukknoppen, tong, DHT22, enz.) naar de MEGA-pinnen gaan .. ..

of

  1. moet ik een andere Arduinos toevoegen (een Micro lijkt echt een goede kandidaat) in elke kamer , alle signaalkamer-kabels die uit kamerhardware komen te stoppen en met MEGA's via dezelfde kamer te spreken RS-485-bus?

In the first case, I'll have a real simple RS-485 bus with a mess of cables; In the second case I'll have a _longer_and_mofe_complex_ RS-485 bus, with a much manageable netwofk cabling/infrastructure.

Heb ik gelijk? Wat zijn de PRO's en de CONS van bovenstaande twee scenario's? Moet ik andere benaderingen onderzoeken?

Zijn er documentatie die kunnen helpen bij het kiezen van de juiste oplossing?

Alvast bedankt aan al diegenen die wat (kostbare) tijd willen doorbrengen om me te helpen bij deze heel moeilijke beslissing om te nemen!


Tussen haakjes: als je meer informatie nodig hebt, aarzel dan niet om te vragen.

1
Ik zou gaan voor meer, en dus eenvoudiger knooppunten op een enkele bus. Ik zou waarschijnlijk ook nog een draad voor de stroom toevoegen. Vanwege de lange draden zou ik een iets hogere waarde voor de spanning gebruiken en de regelaar op de Arduino gebruiken om een ​​stabiele 5V te krijgen.
toegevoegd de auteur Al., de bron
@DamianoVerzulli Natuurlijk. Je kunt waarschijnlijk zelfs passen in een halfhoge breadboard. Je kunt nog meer dingen toevoegen door in lagen te zetten.
toegevoegd de auteur Al., de bron
IMHO bedrading van elke knop naar de centrale eenheid (mega) is een echte verspilling van kabels, pins en geld. Om nog maar te zwijgen over het feit dat die oplossing helemaal niet flexibel is: als je ergens iets wilt toevoegen, moet je nog een draad trekken. IMHO de ideale opstelling (maar ik ben maar een beginneling, dus ik kan het fout hebben) heeft één microcontroller per doos: je kunt een Arduino-micro gebruiken of een eenvoudige attiny als de doos echt klein is. Dan zijn al deze UC verbonden via een veldbus (kan dezelfde RS485 zijn die door het hele huis gaat, kan een "room-wide" rs485, CAN, I2C, Serieel, daisy-chain netwerk, ...) zijn.
toegevoegd de auteur Tom Collins, de bron
Op deze manier kun je serieel communiceren met elke box, kan elke box communiceren met de hoofdmega, en het belangrijkste is dat je gewoon een paar kabels hoeft te passeren, dus uitbreiding van het netwerk is erg eenvoudig. Persoonlijk zou ik RS485 gebruiken, omdat het eenvoudiger is te gebruiken dan CAN, maar het is sterk genoeg (in feite kunt u het seriële protocol via RS485-transceivers gebruiken). Ik zou een wereldwijde ethernetverbinding vermijden, zowel om veiligheidsredenen als om prestatieafhankelijke redenen (beveiliging omdat iemand die verbinding maakt met uw net, ook elk bericht kan zien, prestaties omdat u zonder inspanning een reactie op het ethernet kunt aansluiten)
toegevoegd de auteur Tom Collins, de bron
@DamianoVerzulli goed, in ieder geval heb je niet-versleutelde berichten die heen en weer gaan over je netwerk, maar ja, het is maar een klein probleem. Het belangrijkste is dat je ethernet shields of transceivers (bijv. ENC29J60) voor elk knooppunt nodig hebt, en dat ze voor de communicatie een zware verwerking nodig hebben, terwijl je met een eenvoudigere veldbus (bijv. Rs485) toch de transceiver nodig hebt ( dat is goedkoper en kleiner), maar je hebt heel weinig computer nodig voor de communicatie (meestal is het serieel, dus het randapparaat zal het alleen verwerken)
toegevoegd de auteur Tom Collins, de bron
@ frarugi87: bedankt voor het reageren. Wat betreft "ethernetbeveiliging", zou dit geen groot probleem moeten zijn, omdat ik in een dergelijk scenario zeker afhankelijk ben van een speciale VLAN . Hoe dan ook, het idee om een ​​ volledig gedistribueerd netwerk te hebben, met Arduinos in elke box, klinkt interessant. Ik moet controleren hoeveel knooppunten kunnen worden afgehandeld door het kader dat ik van plan ben te gebruiken.
toegevoegd de auteur The G of GIS, de bron
@fabrosell: bedankt voor het reageren. Ik heb enige tijd besteed aan het onderzoeken van de betrokkenheid van ethernet voordat ik begon. Omdat het netwerk in eerste instantie veel op een bus leek en aangezien RS485 zowel goedkoper als betrouwbaarder was (geen externe switch nodig), ben ik momenteel gericht op RS485. Uiteraard zal ik ethernet hebben, in de buurt van het huis, maar het zal worden gebruikt voor de belangrijkste "gateway" (een, of waarschijnlijk twee van de MEGA's), dus om de hele infrastructuur gemakkelijk toegankelijk te hebben door een Raspberry/OrangePI, heeft acteren een webserver/gegevensverzamelaar/enz. Hoe dan ook, ik zal de ethernetoptie opnieuw evalueren. Bedankt.
toegevoegd de auteur The G of GIS, de bron
@Gerben: Denk je dat ik alles zal kunnen inpassen (1 x Nano 3.0; 1 x MAX485; maximaal 3 drukknoppen; bekabeling) binnen this wallbox? Moet ik beginnen met het ontwerpen/kopen van een ad-hoc PCB om de ruimte te verkleinen/optimaliseren? (BTW: bedankt voor je tijd)
toegevoegd de auteur The G of GIS, de bron
Ik zou Ethernet-schilden en Arduinos in elke kamer hebben geplaatst. Wanneer je dan een krachtigere Arduino (of zelfs een Raspberry Pi) nodig hebt, dan sluit je hem gewoon aan op het bestaande netwerk. Het is gemakkelijker om te onderhouden en uit te breiden wanneer enkele jaren voorbijgaan. En het is zeer waarschijnlijk dat u de kamers al met bedradingsdraden verbindt.
toegevoegd de auteur Nayt Grochowski, de bron

2 antwoord

  1. korte draden zijn over het algemeen beter dan lange
  2. Ik ben het ermee eens dat bedraad beter is in uw situatie
  3. Misschien kunt u onderscheid maken tussen twee verschillende gebieden: sensor/actor tot controller en controller/controller-communicatie
  4. In veel gevallen kunt u de sensor/actor niet kiezen voor controllercommunicatie, omdat deze wordt gegeven door het apparaat (DHT-22, reed, led-drukknop, enz.). Houd deze regels daarom kort
  5. RS-485 is goed, maar is het nodig? Het voegt stuurprogramma's toe aan elk apparaat. Misschien kan I2C het doen, om. U kunt nog steeds kabels met twisted pair gebruiken.
2
toegevoegd
Bedankt voor het reageren. Het allereerste probleem dat ik tegenkwam, was de beslissing "hoe" en "met welk protocol" mijn Arduinos met elkaar verbinden. Als: 1) de afstand tussen hen was vrij groot (20 meter of zelfs meer); 2) Ik moet "ruis" tijdens de uitzending zo goed mogelijk verwerken; 3) de bandbreedte die vereist is voor het hele systeem is relatief laag; Ik eindigde met RS-485 in multidrop-configuratie (zoals degene die is beschreven hier . je in staat geweest om I2C te testen onder vergelijkbare omstandigheden?
toegevoegd de auteur The G of GIS, de bron
Wat betreft RS-485, Nick Gammon in zijn uitstekend antwoord heeft verschillende echt nuttige tests gedaan over kabellengtes, communicatiesnelheden en botsing/detectie/vermijdingsbenaderingen. Op basis daarvan besloot ik dat RS-485 echt geschikt was voor mijn behoeften. Jij ook?
toegevoegd de auteur The G of GIS, de bron
Voor " korte draden zijn over het algemeen beter dan lange ", zou een dergelijke benadering me ertoe brengen om een ​​ad-hoc Arduino in elke wall-box te hebben ( this wall-box). Ik vraag me af of ik alles in dergelijke dozen kan plaatsen (1 x Nano 3.0; 1 x MAX485; maximaal 3 drukknoppen; bekabeling) en/of dat ik een goede PCB moet ontwerpen om alles te optimaliseren. Wat is jouw mening?
toegevoegd de auteur The G of GIS, de bron
Zoals voor twee verschillende soorten netwerken: " sensor/actor <=> controller " en " controller <=> controller " is dit absoluut redelijk en ik ben dit zelfs aan het onderzoeken omdat ik op elke MEGA 3 series heb, dus ik kan zeker een "secundaire netwerktak" hebben van elke MEGA naar de "lokale" boxen. Ook het softwareframe dat ik momenteel evalueer/ervaar, souliss , zou mooi moeten spelen met een dergelijke architectuur .
toegevoegd de auteur The G of GIS, de bron

Hier mijn aanvullende gedachten in het kort:

  1. 20 meter is, vergeleken met de afstand tot de maan, vrij kort ;-). De maximale lengte van RS-485 is naar verluidt kilometers met lage transmissiesnelheden (google: rs485 kabellengte).

  2. Ruis kan worden voorkomen (hardware) of worden gecorrigeerd door software (fouttolerante codes, controlesommen etc.). Over het algemeen is software goedkoper.

  3. Korte draden betekenen helemaal geen draden. Korte draden zouden b.v. resultaat als u een controller per kamer hebt en de sensoren hierop aansluit.

  4. Er zijn ook kleine pakketten met Arduino-compatibele chips beschikbaar (ATTiny84/85). En zonder RS485 bewaart u de ruimte van de controllers ...

  5. I2C-buslengte zou in een huis moeten werken, als je niet groter bent dan die van Bill Gates ... http://www.esacademy.com/en/library/technical-articles-and-documents/miscellaneous/i2c-bus/frequently-asked-questions/i2c-faq.html

  6. Ik zou serial niet gebruiken voor communicatie. Het is niet uitbreidbaar. Serieel is goed voor foutopsporing.

0
toegevoegd