Mehrere Sensoren

Hallo zusammen,
ich spiele gerade ein Project im Geiste durch.
Werkstattgröße ca 200 m2
3 Türen
Dachboden
Aussenbeleuchtung.

Ich würde gerne die Türen kontrollieren, daneben das Licht im Dachboden und die Aussenbeleuchtung schalten.

Kabelverlegung würde ich nur seeehr ungerne verlegen.

Auf alle Fälle dürfte ja ein Master notwendig sein, der dann die ganzen Sensoren usw steuert.
Zusätzlich soll am Master noch keypad und LCD angeschlossen werden.

, Dieser Master soll dann auf einen SQLServer loggen, aber das wird ne andere Baustelle.

Danke im vorraus
Peter

Kabelverlegung würde ich nur seeehr ungerne verlegen.

Kabelverlegungen verlege ich auch äußerst ungern. :wink: :wink: :wink:

Ohne zusätzliche Kabel kommt das ganze nicht gemacht werden, da Du vieleicht nicht die einzelnen Signale durch die ganze Werkstatt kabeln mußt, aber eine Stromversorgung für jeden Türkontakt bzw für die Ansteuerung jeder Lampe brauchst. die Signale können gesendet werden.

Grüße Uwe

Hallo Uwe
erstmal danke.
Das mit der Stromversorgung war mir schon klar. Ich meinte mit ohne Kabel eigentlich die Verbindungen Arduion zu den Sensoren.
Bin eben auf der Suche wie so etwas zu machen ist. Also denke ich mal irgendwie Drahtlos-Funk WLAN.
Ich habe keine Ahnung was da am besten funktioniert.

Peter

Das wäre eigentlich ein Fall für 433MHz mit Virtual Wire.
Also dort wo du Sensoren brauchst einen kleinen Arduino wie den ProMini (der günstigste Arduino) mit einem 433 Transceiver an welchem die Sensoren und wenn nötig Aktoren (z.B. Relais) angeschlossen werden und dazu z.B. einen Arduino Ethernet auch mit einem 433 Transceiver als Master, welcher dann über die Ethernet Schnittstelle in eine Datenbank schreiben kann.

Grüsse
Peter

Einmal dies, http://www.ebay.de/itm/121192432250
Dann dies, http://www.ebay.de/itm/121140036802

Nur ich weiß nicht wie man das ganze programmieren soll, was die Adressen angeht.

Hallo.

Zu dem Thema hier so meine Gedanken.

Die 433-MHz-Empfänger lassen sich gemäß der Beispiele bei VirtualWire leicht anschliessen und in Betrieb nehmen. Auch die Nutzung abweichender PINs ist hinreichend beschrieben. Bei einer einzelnen "Verbindung" arbeitet dies, abhängig von vorhandener Antenne und Sendeleistung, auch stabil und zufriedenstellend (zumindest bei mir).
Aber bei mehreren Sendern und ggf. Empfängern (Aktuatoren) sollte man sich auf jeden Fall Gedanken über ein Protokoll beim Senden machen. Also bei Senden mindestens mitschicken wer man ist und an wen man das sendet. Im Bereich von 433-MHz hat man ja noch viel stärker mit der Tatsache zu kämpfen, dass es nur einen "Äther" (oder eben äquivalent "nur ein Übertragungsmedium") gibt, als beispielsweise beim WLAN, wo die Entwickler für diese Dinge ja auch großen Aufweand getrieben haben (merkt der Anwender allerdings kaum).

Grundsätzlich die Sender und die Empfänger mit Antennen (17,3cm langer Draht in das Ant-Loch auf den Platinchen einlöten). Bei Bedarf kann an einzelnen Sendern die Versorgungsspannung erhöht werden um längere Strecke zu überbrücken (ggf. beim Dachboden oder so). Aber Vorsicht, in dem Falle ist Pegelwandlung für den Arduino angesagt, weil der üblicherweise nicht so begeistert auf eine Spannungserhöhung reagiert, wie sie mache der 433-MHz-Module vertragen.

Dann würde ich noch eine eine kleine Kommunikationsbibliothek empfehlen welche das Aussortieren von Unsinn und nicht an das Device gerichteten Meldungen kümmert. Diese könnte ggf. bei wichtigen Nachrichten auch ein Handshake bzw. Quittungsablauf implementieren. Denn die Lösung soll ja vertrauenswürdig sein.

Mit besten Grüßen
Gruaga

Hallo zusammen,
coole Sache und Danke für die Ideen.

Darf man die 433 Mhz Sender hier in D betreiben ohne gelich die Telekom an der Backe zu haben?

Dankeschön
Peter

Die aus meinem Link, ja.
Getunte, nein.

Hi,
Entschuldigung für die späte Meldung.
Ich schau mir das mal an
Vielen dank
Peter

Hallo Peter,

ich bastel gerade an etwas ähnlichen, welches aber so schnell keinen produktiven Einsatzzweck einnehmen wird, da ich noch nicht weiß, was ich genau damit mache. Erst einmal möchte ich verschiedene Temperaturen der Zimmer damit abfragen.

Mein derzeitiger Aufbau besteht aus nur einem Sender und einem Empfänger
Sender (Sendet jede Sekunde ein Datenpaket, welches mit A-E codiert ist.

#include <VirtualWire.h>

#undef int
#undef abs
#undef double
#undef float
#undef round

unsigned long lastMillis;
byte msgIndex;

// Feste Testnachrichten
const char *msg[5] = {
  "ATestnachricht", "BTestnachricht", "CTestnachricht", "DTestnachricht", "ETestnachricht"
};

void setup() {
  vw_set_ptt_inverted(true);
  vw_setup(2000);
  vw_set_tx_pin(8);
  Serial.begin(9600);
}

void loop() {
  static unsigned long lastMillis;
  static byte msgIndex;

  if(millis() - lastMillis >= 1000) {
    lastMillis = millis();
    msgIndex++;
    if(msgIndex >= 5) msgIndex = 0;
    if(msgIndex < 5) 
    {
      vw_send((uint8_t *)msg[msgIndex], strlen(msg[msgIndex]));
     Serial.println(msg[msgIndex]); 
      vw_wait_tx();
    }
  }
}

Empfänger (Da ich erst einen Empfänger habe, nimmt dieser alle Codierungen an, gibt aber gleichzeitig aus, vom wem es kam. )

#include <VirtualWire.h>
#include <LiquidCrystal.h>

//Konstanten fuer Zeilen und Spalten des LCDs
const byte numRows = 2;
const byte numCols = 16;

// Bibliothek mit Interface-Pins initialisieren
// LiquidCrystal lcd(RS, E, D4, D5, D6, D7);
LiquidCrystal lcd(9, 8, 4, 5, 6, 7);

void setup()
{
  // Initialisiere LCD
  lcd.begin(numCols, numRows);
  Serial.begin(9600);
  lcd.print("Hello");

  Serial.begin(9600);          // Configure the serial connection to the computer
  vw_set_ptt_inverted(true);  // Required by the RF module
  vw_setup(2000);            // bps connection speed
  vw_set_rx_pin(3);         // Arduino pin to connect the receiver data pin
  vw_rx_start();           // Start the receiver
}

void loop()
{
  uint8_t buf[VW_MAX_MESSAGE_LEN];
  uint8_t buflen = VW_MAX_MESSAGE_LEN;
  if (vw_get_message(buf, &buflen))      // We check if we have received data
  {
    lcd.clear();
    lcd.print("Client : ");
    lcd.write(buf[0]);
    lcd.setCursor(0,1);
    for (int i = 1; i < buflen; i++)
    {
      lcd.write(buf[i]);  // The received data is stored in the buffer
      // and sent through the serial port to the computer
    }
  }
}

Für die Abfrage nach plausibles Datenpaket kann man nun abfragen ob buf[0] == ('A' || 'B' .... || 'E') ist und entsprechend alles andere verwerfen.

Was ich noch nicht beachtet habe ist, was geschiet, wenn 2 Sender etwas an den Empfänger schicken, ob es da zu Datenwirrwar kommt.

Hallo sschultewolter,
"ob es da zu Datenwirrwar kommt"
Nein, jeder Sender hat seine eigene Adresse.
Was benutzt Du? XBee?

Ich bin ja ganz scharf auf einen Digi XBee PRO Series 1, 60mW
60mW machen schon mächtig Dampf. Und kosten ne´ Kleinigkeit...
Gruß und Spaß
Andreas

Was passiert denn, wenn mehrere gleichzeitig senden?

Ist doch dasselbe wie bei Bus System

Hallo,
"Was passiert denn, wenn mehrere gleichzeitig senden?"

Die Dinger funktionieren doch ähnlich wie ein RechnerNetzwerk. Dort können
doch auch mehrere Rechner Daten an Einen bestimmten- zur gleichen Zeit
senden. Du baust doch mit den Dingern ein WPAN auf.

So richtig verstehe ich die Deine Frage nicht. Was möchtest Du denn wissen?
Die technischen Zusammenhänge und Abläufe der Sende und Empfangs Routinen?
Wir sollten dann erst einmal "gleichzeitug" definieren.
Gruß und Spaß
Andreas

Wozu gibts denn beim Bus System ein Protokoll mit collision detection?
Denke es ist hier nicht anders.

Hallo,
ich weiß wirklich nicht wie die Dinger das regel…
Im Netzwerk (oder Kollisionsdomäne) ist es ja so, das es auf 1024/1023
Stationen begrenzt ist, oder war.
Wenn er uns mal verraten würde, mit was er denn da "spielt" könnte man (Frau)
es einmal nachschlagen- wieviel von den Sendern der Empfänger verträgt. Oder
ob der überhaupt in der Lage ist, mehrere Sender zu verwalten.
Gruß und Spaß
Andreas