Forum: Haus & Smart Home AVRs vernetzen: Bibliothek / Bus gesucht


von Stefan L. (space5514)


Lesenswert?

Moin Moin,

Ich hoffe, daß der Thread keine Philisophiefragen auslösen wird.

Für meine Haussteuerung möchte mehrere uCs einsetzen. Die einzelnen 
Bausteine erledigen I/O, sammeln Sensordaten, schalten oder steuern 
einfach nur Logik. Viele fleißige Bienchen anstatt einer Riesen-Hummel, 
die alles erledigt. Das soll als gegeben vorausgesetzt sein.

Nun suche ich natürlich nach einer Möglichkeit, die uCs untereinander zu 
vernetzen. Ein paar Meter Kabellängen sollten schon möglich sein.

No-Go's sind:
- Ethernet (overhead / Stromverbrauch)
- Funk (ganz einfach: Nein)
- I2C

und daher fiel die engere Wahl derzeit auf:
- CAN
- ModBus RS485

Viel wichtiger als die theoretisch erreichbare Geschwindigkeit sind mir 
Stabilität und sinnvolle Libraries, die ich benutzen kann.

Leider entstehen beim durchlesen der meisten Artikel über CAN oder auch 
ModBus eher Alptraumhafte Vorstellungen über die praxistaugliche 
Implementierung. Vieles erscheint auch schon recht alt. Ich kann mir 
irgendwie gar nicht vorstellen, daß es mittlerweile keine sinnvollen 
Open-Source-Bibliotheken gibt, die solche Vernetzungs-Jobs erledigen 
können.

Frage: Kennt jemand gute oder wenigstens brauchbare Libraries für ein 
AVR-Netzwerk auf CAN oder ModBus-Basis? Oder gibt es eine sinnvollere 
Hardware / Software-Kombination?

von Frickelfritze (Gast)


Lesenswert?

Stefan L. schrieb:
> Nun suche ich natürlich nach einer Möglichkeit, die uCs untereinander zu
> vernetzen. Ein paar Meter Kabellängen sollten schon möglich sein.

... und jeder Controller soll jedem anderen seine Daten senden
können, und jeder Partner soll die Intelligenz aufbringen die
Nachrichten zu verarbeiten und an das richtige Ziel weiterzuleiten.
Das ganze soll in einem 2KByte ATTiny ablaufen, die Comm-Lib soll
da natürlich mit reinpassen. Und erzählt mir bitte nicht dass das
nicht geht.

von Stefan L. (space5514)


Lesenswert?

Ironie ist schon was feines.

Frickelfritze schrieb:
> ... und jeder Controller soll jedem anderen seine Daten senden
> können, und jeder Partner soll die Intelligenz aufbringen die
> Nachrichten zu verarbeiten und an das richtige Ziel weiterzuleiten.
> Das ganze soll in einem 2KByte ATTiny ablaufen, die Comm-Lib soll
> da natürlich mit reinpassen. Und erzählt mir bitte nicht dass das
> nicht geht.

Nein, in einen Tiny muss es nicht reingequetscht werden. Der Rest passt 
aber natürlich prinzipiell.

von Dr. Sommer (Gast)


Lesenswert?

Stefan L. schrieb:
> Leider entstehen beim durchlesen der meisten Artikel über CAN oder auch
> ModBus eher Alptraumhafte Vorstellungen über die praxistaugliche
> Implementierung
Also CAN ist prinzipiell sehr einfach zu verwenden, wenn man einen uC 
mit integriertem CAN-Controller nutzt. Man schreibt die zu sendende 
Nachricht (0-8 Bytes + ID) in ein Peripherie-Register, und die 
Peripherie kümmert sich um den Rest. Zum Empfangen holt man die 
komplette Nachricht aus den Peripherie-Registern und kann sie beliebig 
verarbeiten. Mir ist nicht so ganz klar, wozu man da eine Library 
braucht - ein paar Bytes hin und her kopieren schafft man auch so. Aber 
es gibt natürlich diverse Libraries, bekannt ist zB die von 
http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek .

Stefan L. schrieb:
> Oder gibt es eine sinnvollere
> Hardware / Software-Kombination?

Schau mal nach den LPC11C00. Die haben sowohl CAN-Transceiver als auch 
CAN-Controller integriert, d.h. du brauchst außer Schutzbeschaltung 
(ESD) gar keine externe Peripherie für CAN. Ist aber nicht AVR, sondern 
Cortex-M0. Das dürfte so ziemlich die einfachste Möglichkeit für einen 
Multimaster-Bus sein (und du profitierst von der Störsicherheit von CAN 
usw.).

von Stefan L. (space5514)


Lesenswert?

Dr. Sommer schrieb:
> Aber
> es gibt natürlich diverse Libraries, bekannt ist zB die von
> http://www.kreatives-chaos.com/artikel/universelle-can-bibliothek .

Merci!

von Klaus (Gast)


Lesenswert?

schau mal bei mysensors.org
Ja, schaut erst mal nach Funk aus, aber es gibt dort auch eine Version 
mit RS485, such mal dort im Forum

Grüße

Klaus

von grundschüler (Gast)


Angehängte Dateien:

Lesenswert?

Auch wenn die Resonanz hier im Forum bisher sehr negativ war der Hinweis 
auf owx. Funktioniert bei meiner Heizungssteuerung seit Monaten 
problemlos und zuverlässig.

von Funker (Gast)


Lesenswert?

Stefan L. schrieb:
> - Funk (ganz einfach: Nein)

Das ist ganz einfach: Dumm.

von 0x4E (Gast)


Lesenswert?

Wie wärs mit nem  simplen R2R Netzwerk? 5 o. 6 Bit. dafür benötigst du 
nur einen Anlalogeingang / µC und wertest nur die Analogspannung aus.

von Hugo P. (portisch)


Lesenswert?

Ich habe meine AVRs im Haus mit CAN-BUS verbunden:
Beitrag "CAN Datentransfer auf Basis von kreatives-chaos.com"

Ich habe sozusagen einen "Master" der die Daten mit der SPS austauscht.
Die "Slaves" liefern im Haus Daten wie Temperatur, Helligkeit, Keypad 
für Garage, Alarmanlage mit SIM800L Modul,...

Versorgung und Komunikation zwischen den CAN-Knoten erfolgt über ein 4 
poliges Klingeldraht Kabel.

von Stefan L. (space5514)


Lesenswert?

Hugo P. schrieb:
> Versorgung und Komunikation zwischen den CAN-Knoten erfolgt über ein 4
> poliges Klingeldraht Kabel.

Klingt sehr gut. Zwar habe ich meist CAT5 zur Verfügung, doch im Notfall 
könnte ich auf eine einfache Steuerleitung ausweichen.

Meine Präferenz geht derzeit klar zu CAN und ebenfalls möchte ich einen 
"Master" implementieren, der Daten von Slaves sammelt und zum 
Logikbaustein weiterreicht - oder eben Steuerbefehle entgegennimmt und 
beispielsweise Slaves schaltet.

Daher finde ich Dein Projekt sehr interessant und hätte einige Fragen zu 
Deiner praktischen Umsetzung:

- mit welcher Geschwindigkeit fährst Du den Bus?
- Wie viele Teilnehmer in etwa?
- welche Entfernungen?
- welche Topologie?

Viele Grüße & Danke,
Stefan

: Bearbeitet durch User
von Georg L. (energetix)


Lesenswert?

Hallo Stefan,

ich arbeite seit einiger Zeit am gleichen Problem.
Wenn Du interesse an einem gemeinsamen Projekt hast, können wir
vielleicht etwas ausarbeiten und später hier weiter diskutieren.

viele Grüße,
Georg

von Hugo P. (portisch)


Lesenswert?

Stefan L. schrieb:
> - mit welcher Geschwindigkeit fährst Du den Bus?
> - Wie viele Teilnehmer in etwa?
> - welche Entfernungen?
> - welche Topologie?

BITRATE_10_KBPS
Derzeit 3 "Slaves" (Keypad, Aussentemperatur + Helligkeit, GSM SIM800L 
Modul)
Gerade in Entwicklung: Brandmeldeanlage für K-SD3. Und eine Pool 
Steuerung kommt auch noch dazu.
Entfernungen: Ich glaube so ca. 25m bis zum letzten Knoten. Kein 
einziger Aussfall oder Übertragungsfehler bis jetzt (2 Jahre in 
Betrieb).
Topologie: jeder Knoten hat einen CAN-IN und OUT und sind nach der Reihe 
aufgefädelt. 4-adriges Kabel, +24V, GND, CAN-H & CAN-L. Jeder Knoten hat 
einen 5V Recom R-785.0-0.5 Regler drauf. Somit ist es ihm egal ob jetzt 
+20V oder +24V auf der Leitung sind.
Aber du kannst auch das CAT Kabel hernehmen. Da sind ja sowieso 8 Adern 
drinnen.
Schirmung hättest du auch gleich.

Wenn du den aktuellen Source brauchst kann ich ihn nochmals hochladen. 
Ich glaube am CAN-Bootloader habe ich noch was geändert damit er nicht 
mit den Knoten kollidiert die im Normalbetrieb sind.

: Bearbeitet durch User
von Thomas F. (igel)


Lesenswert?

Hugo P. schrieb:
> Stefan L. schrieb:
>> - mit welcher Geschwindigkeit fährst Du den Bus?
>> - Wie viele Teilnehmer in etwa?
>> - welche Entfernungen?
>> - welche Topologie?
>
> BITRATE_10_KBPS

Hab ich auch;-)

> Entfernungen: Ich glaube so ca. 25m bis zum letzten Knoten. Kein
> einziger Aussfall oder Übertragungsfehler bis jetzt (2 Jahre in
> Betrieb).

Bei mir sinds derzeit nur ca. 12m, seit  2,5 Jahren in Betrieb.
Vier Knoten, zwei sind an 4m langen Stichleitungen angeschlossen (PC mit 
CANcard und Entwicklungsboard). Keine Probleme bisher...

> Topologie: jeder Knoten hat einen CAN-IN und OUT und sind nach der Reihe
> aufgefädelt. 4-adriges Kabel, +24V, GND, CAN-H & CAN-L.

Habe auch ein vieradriges Telefonkabel mit 24V Versorgungsspannung 
genommen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.