Ich bin auf der Suche nach einer möglichst einfachen Methode mehrere simple Sensoren - im einfachsten Fall Schaltkontakte - mit einen Arduino zu verbinden.
Es gibt keine Möglichkeit ein separates Kabel zu ziehen (das wäre ja auch zu einfach)!
Vorhanden ist einzig ein Stromanschluss 230V.
Jedem Schaltkontakt einen eigenen Arduino zu spendieren, ist eigentlich keine Option.
Idee Nr.1 wäre eine Funkverbindung (433Mhz o.ä.), jedoch sollte der Sender möglichst einfach und auch "günstig" sein.
Idee Nr.2 wäre die Aufmodulation eines Signales auf die Stromleitung. Aber auch hier sollte der Sender einfach, günstig und in diesem Fall auch sicher sein.
Die Frage ist nun, welchen Weg sollte man verfolgen. Im Netzt gibt es zu beiden viele Lösungsansätze, jedoch fehlen mir die Feedbacks und Erfahrungsberichte.
Am Sender wird normalerweise auch ein Arduino benötigt, der die Daten des Sensors ausliest und dem Sender weiter gibt. Damit habe ich sehr gute Erfahrungen gesammelt.
Welche Sensoren sind das?
Wieviel Sensoren?
Was willst du schalten?
Das mit der Aufmodulation auf die Netzspannung kenne ich im Arduino-Umfeld nicht.
Edit:
Ich nutze diese Verbindung jetzt schon seit ca. 9 Monaten und übertrage damit einen Wasserstand einer Zisterne sowie eine Außentemperatur über ca. 35 Meter durch Betonwände hindurch. Vom Gartenhaus in den Keller und Wohnbereich.
Der Begriff Sensor ist hier eigentlich falsch.
Für den Anfang geht es darum 2-3 Schaltkontakte im Haus zu verteilen, die auf einen zentralen Arduino auflaufen und dort weitere Aktionen auslösen.
Das Problem besteht darin, dass es keine sinnvollen Kabelwege gibt.
Aus Fernost gibt es Funkmagnetschalter (eigentlich für Dunstabzugshauben gedacht) für Ca.20€ - das wäre ein etwas teurer aber denkbarer Ansatz.
touranie:
Aus Fernost gibt es Funkmagnetschalter (eigentlich für Dunstabzugshauben gedacht) für Ca.20€ - das wäre ein etwas teurer aber denkbarer Ansatz.
Wenn diese Funkmagnetschalter eine zugelassene Frequenz (433 MHz) nutzen, und der gesendete Code mit dem Arduino dekodierbar ist, könnte das funktionieren.
Dazu muss man aber wissen, was da rauskommt und welche Reichweite damit zu erreichen ist.
Da wirst du nicht drum herum kommen, ein Muster zu ordern und es entsprechend auszulesen.
Billiger als China Funkschaltermodule.
Zuverlässigkeit, da Handshake möglich, Kann ggf. sogar Funktions Check vom Arduino veranlasst werden.
Relativ flexibel für den Anschluss von Sensoren.
Also preislich unschlagbar sind ja die ESP8266 Module, welche auch direkt mit der Arduino IDE programmiert werden können. Hat den zufällig jemand ein paar Tipps oder Links, wie man mit denen untereinander kommunizieren oder ein Netzwerk aufbauen kann?
Alternativ kann ich dir den "Moteino" sehr empfehlen, wie bereits schon weiter oben erwähnt. Die verwenden die RFM12B oder noch besser die RFM69-Transciever, mit denen eine Kommunikation in beide Richtungen möglich ist. Eignen sich auch für batteriebetriebe Sensoren, falls du dir noch eine Wetterstation oder ähnliches bauen möchtest
Wenn du die ESP82666 als Borads in der IDE installierst, bekommst du viele Beispiele angezeigt. Für deine Zwecke ideal ist, alle in Station-Mode per dhcp an einem AP angemeldet und den "Steuer"-Arduino per LAN Kabel dran.
Im AP dann feste Adressen per mac zuordnen, falls du vom Arduino aus eine Verbindung initiieren willst.
Als Protokoll gehen udp und tcp, im Prinzip kannst du die fast ansprechen, wie wenn sie seriell verbunden wären (ich meine jetzt nicht den AT-Modus).
Die ESP kann man dan per Arduino IDE fast genauso programmieren, wie einen normalen Arduino. Nut ist je nach Modell der Flash Vorgang etwas anders. Mann muss einen Pin auf Masse ziehen und danach resetten, um in den Bootloadermodus zu kommen. Nach dem Flashen den Pin wieder auf HIGH! Ideal zum rumprobieren ist sowas: Link BG, aus dem EU Lager für 9 Euro. Damit geht das Flashen vollautomatisch wie beim Arduino.
Für die einfachen Sensoren gehen dann die 5er Pack! oder mit mehr GPIO und externer Antenne die hier
...ach ja, und wie installiere ich ein ESP8266 in der IDE?
Der Monteino scheint auch sehr interessant. Hat damit schon wer Erfahrungen gesammelt. Welcher von denen ist zu empfehlen, wenn man WLAN und ein paar GPIOs braucht?
Ich habe hierfür die Library "RCSwitch.h" eingebunden und mal mit einer einfachen Demo begonnen. Der Arduino empfängt tatsächlich sogar etwas, nur komme ich an dieser Stelle leider nicht so richtig weiter.
Ich bekomme bei jedem Schaltvorgang folgendes im Seriellen Monitor angezeigt (ca. 20x pro Schaltvorgang):
Received 13927926 / 24bit Protocol: 1
Wie genau gehe ich mit dieser Information um und wie könnte ein Weg aussehen, diese Information mit einem einfachen Vorgang, wie das Einschalten der LED an Pin 13, zu verknüpfen?
weil mir das so langsam auffällt. Hat von den ganzen Home Automatisierungsleuten hier im Forum schon mal jemand an die Sicherheit gedacht? Nicht das da die teuersten/sichersten Türschlösser, Türen und Fenster verbaut werden und dann will man auf modern machen. Schaltet mit Funk irgendwelche Rollläden usw. automatisiert und macht es den Einbrechern am Ende noch leichter wie vorher. Weil alles unverschlüsselt durch die Luft funkt. Mit weniger Einbruchsspuren.
Nur mal so als Gedankenspiel eingewurfen.
Einbrecher werden wohl kaum eine individuelle Steuerung ausspionieren, um in ein normales Haus einzubrechen. Da sind Standardlösungen wahrscheinlich wesentlich anfälliger. Die reissen einfacher einen Plastikrolladen raus und hebeln das Fenster mit dem Kuhfuss auf.
Und Leute, die die Fähigkeiten hätten, das alles auszuspionieren und analysieren, die verdienen ihre Brötchen garantiert nicht mit einfachen Einbrüchen.
Ich habe hierfür die Library "RCSwitch.h" eingebunden und mal mit einer einfachen Demo begonnen. Der Arduino empfängt tatsächlich sogar etwas, nur komme ich an dieser Stelle leider nicht so richtig weiter.
Ich bekomme bei jedem Schaltvorgang folgendes im Seriellen Monitor angezeigt (ca. 20x pro Schaltvorgang):
Received 13927926 / 24bit Protocol: 1
Wie genau gehe ich mit dieser Information um und wie könnte ein Weg aussehen, diese Information mit einem einfachen Vorgang, wie das Einschalten der LED an Pin 13, zu verknüpfen?
Der Vorschlag von agmue ist schon mal richtig, ich habe den hier nur vervollständigt und mit dem richtigen Code versehen.
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 13927926)
{
digitalWrite(13, HIGH);
}
else
{
digitalWrite(13, LOW);
}
}
mySwitch.resetAvailable();
}