Einfacher 'Bewegungssensor' mit 2 blanken Kabeln - Kurzschluss

Hallo zusammen.

Die Adventskalenderzeit ist bald da und da möchte ich gern was Basteln :slight_smile:

Der Plan: 24 kleine Boxen, die in einem Rahmen/Regal stehen. Neben Beleuchtung und Musik möchte ich auch verhindern das man schon vorher in die Boxen reinschaut :wink:

Da die kleinen Boxen in einem 'Regal' stehen, ist meine Überlegung einfach eine Art 'Motion Detector' zu integrieren. 24 PIR Sensoren wäre jetzt ein bisschen Overkill. Also dachte ich mir, unter jede Box, 2 Kabel in das Regal zu integrieren und dann unter die Pappbox ein Stück Alufolie. Damit wären die Kabel verbunden solange die Box im Regal ist. Wird sie jedoch herrausgezogen, dann wird der Kontakt unterbrochen und es kann ggf Alarm wird ausgelöst... oder, wenn es die korrekte Box ist, ein Weihnachtslied trällern lassen

Soweit der Gedanke. Jetzt die Frage:

Kann man das so machen? Im Prinzip ist das ja ein Kurzschluss. Schadet das den Pins?
Wie? Einfach 5V auf das eine Kabel geben und das andere Kabel an einen digitalen Pin?
Macht die Alufolie das mit? Gibt es Brandgefahr? (Dauerkurzschluss über 24 Tage)

Zieht die Schaltung dabei eigentlich Strom? Wenn ja, wie viel mA?

Danke schon mal. Weitere Fragen folgen bestimmt :wink: Und falls ich das Projekt wirklich hin kriege stelle ich natürlich Fotos ein. :slight_smile:

Ein Kurzschluß ist es nicht- du schließt ja nur den Eingangs-PIN gegen Masse (LOW). Den entsprechenden anderen Zustand (HIGH) machst du dann mit einem Pullup- Widerstand, z.b. 10kOhm gegen 5V (bzw. 3,3V- je nach Board).

Wenn du keine 24 Eingänge damit belegen willst, kannst du das auch über eine Widerstandskodierung machen.

HeAdLeSs:
Kann man das so machen?

Ja, das kann man schon so machen.
Ich hätte nur Bedenken, dass die Alufolie nicht richtig Kontakt gibt.
Was den Strom betrifft, kannst du da mit einem Widerstand (Pullup) arbeiten, dann fließt wenig Strom und es gibt da auch keine Brandgefahr.

Ich würde das allerdings mit einem Mikroschalter lösen, der sich hinter der Box befindet und den Kontakt auslöst, sobald die Box gezogen wird.

Hatte ich noch vergessen zu sagen. Es wird mit einem Arduino Mega betrieben. 5V und mehr als genug Eingänge :slight_smile:

@MaHa76
Ich glaube wir Missverstehen uns da. Ich möchte 5V Plus direkt an den Eingangspin anlegen. Dieser müsste damit HIGH sein. Sollte eine Box entnommen werden, dann ist der Kontakt unterbrochen und er geht auf LOW.

Du meintest den Pin auf Ausgang stellen und auf HIGH legen. Andere Seite an Masse. Oder? So würde ich ja nicht mitkriegen wenn der Kontakt unterbrochen ist.

@HotSystems
Naja, wenn Alufolie nicht so gut leitet, dann könnte ich auch einen Kupferdraht an die Box ankleben. Das sollte nicht das Problem sein. Welchen Widerstand würdest du empfehlen?

24 Microschalter sind auch wieder eine Menge. (Es artet so schon finanziell ziemlich aus. :slight_smile: ) Zum anderen sind es recht leichte Pappboxen. Ich denke die würden den Schalter nicht gedrückt halten bzw. würde der Schalter die Box wegdrücken.

OK...wenn das mit dem Mikroschalter so nicht geht, solltest du evtl. Weißblech oder Kupferfolie als Kontaktfläche nehmen.

Und einen Pullup oder Pulldown-Widerstand brauchst du in jedem Fall. Bei deiner Version einen Pulldown.
Ohne diesen Widerstand wird der Eingang nicht sicher auf Low gezogen, wenn der Kontakt wegfällt.

Legst du den Kontakt gegen LOW, brauchst du einen PullUp-Widerstand.

Die PullUp-Widerstände sind beim Mega 2560 bereits eingebaut und müssen per Software nur aktiviert werden, spart 24 externe Widerstände. Eingebaute PullDown-Widerstände gibt es nicht. Daher würde ich die PullUp-Variante vorziehen. Also INPUT_PULLUP nutzen und Kontakt gegen GND.

Wenn Du noch eine Real-Time-Clock (RTC) wie DS3231 anschließt, kennt der Mega auch den Tag und vergißt den auch nicht.

HeAdLeSs:
@MaHa76
Ich glaube wir Missverstehen uns da. Ich möchte 5V Plus direkt an den Eingangspin anlegen. Dieser müsste damit HIGH sein. Sollte eine Box entnommen werden, dann ist der Kontakt unterbrochen und er geht auf LOW.

Du meintest den Pin auf Ausgang stellen und auf HIGH legen. Andere Seite an Masse. Oder? So würde ich ja nicht mitkriegen wenn der Kontakt unterbrochen ist.

Beschäftige dich unbedingt mit den Eingängen des Arduinos und wie man Schalter/Kontakte anschließt. Auch die Benutzung von Pull-Up-(bzw. Down)-Widerstände solltest du verstehen. Es ist ein schönes Projekt das sich anzueignen.

Statt Alufolie reedkontakt, Neodym (z.B. Zigarettenpapierschachtel von Gizeh Zuhaltemagnet), und fertig.

Hier ist ein Beispiel einer selbstklebenden Kupferfolie, die hat den Vorteil, du kannst auch Drähte anlöten.

Sorry für die späte Antwort. War jetzt ein paar Tage nicht online.

Danke schon mal für eure Antworten und Hilfestellungen. Habe mir das Kupferband bestellt und werde mich morgen mal eingehend mit PullUp und PullDown Widerständen beschäftigen. Der Mega kam heute auch an.
Eigentlich hat man die PullUp und PullDown ja in so ziemlich jeder Schaltung. Aber wenn man nach Tutorials diese Aufbaut, dann denkt man da doch recht wenig tiefer darüber nach. :frowning: Asche auf mein Haupt.

Das gesamte Projekt wird "etwas" größer. Es soll ein Holzhaus werden. Also ein Regal mit 24 Fächern (7x7cm) und ein Dach oben drauf. In die Fächer kommen 6,5x6,5 Pappboxen. Jedes Fach hat von oben eine SK6812 RGBW LED. Jede Box bekommt oben ein Loch rein und vorn möchte ich ein Fenster reinschneiden (mit Papier hinterklebt). So das die LED in die Box scheint und das Fenster beleuchtet (kann man nur die Box nicht randvoll mit süßem Befüllen :smiley:
2 weitere Fenster im Dachfirst... plus ein 4 digit 7 segment LED Display. Dieses soll das aktuelle Datum anzeigen. Das kommt aus einer RTC. Im 'Dachboden' wird die Technik verbaut.
Das Dach bekommt auch einen Schornstein. In diesem 2 weitere SK6812 und dann oben eine Rauchwolke aus Watte. Zusätzlich einen Buzzer der Weihnachtslieder 'buzzern' kann und halt die Thematik mit dem Alarm.
Wird das Kästchen des aktuellen Datums herrausgezogen, so soll ein Weihnachtslied ertönen und die LEDs toll leuchten. Wird aber ein falsches Kästchen herrausgezogen (Schummelei!!) dann soll ein Alarm ertönen. :wink:

Ein etwas umfangreicheres Projekt... dafür sicher der geilste Adventskalender weit und breit :smiley:

Im Moment habe ich das Holz soweit zugesagt und heute die 24 LEDs in die Fächer eingelötet. Morgen werde ich mich dann mit der Alarmvorrichtung beschäftigen und die Schaltkreise schon mal auf einem Breadboard zusammenbauen.

HeAdLeSs:
Ein etwas umfangreicheres Projekt... dafür sicher der geilste Adventskalender weit und breit :smiley:

Im Moment habe ich das Holz soweit zugesagt und heute die 24 LEDs in die Fächer eingelötet. Morgen werde ich mich dann mit der Alarmvorrichtung beschäftigen und die Schaltkreise schon mal auf einem Breadboard zusammenbauen.

Hört sich gut an...
Da bin ich auf Fotos gespannt.

So, ich habe mich damit jetzt etwas beschäftigt. Anscheinend hat nicht nur der Mega PullUp Widerstände eingebaut, sondern jeder.
Aktiviert werden sie mit:

pinMode(BUTTON_PIN, INPUT);
digitalWrite(BUTTON_PIN, HIGH); // connect internal pull-up

(Quellen: https://www.arduino.cc/en/Tutorial/DigitalPins und http://www.instructables.com/id/Arduino-Button-Tutorial/)

Aufgrund dieser Infos habe ich jetzt folgenden Test durchgeführt:
Arduino Uno: Kabel an GND und Kabel an Pin 2.
Der Sketch:

#define BUTTON_PIN 2

void setup()
{
  Serial.begin(9600);
  Serial.println("Ready");
  
  pinMode(BUTTON_PIN, INPUT);
  digitalWrite(BUTTON_PIN, HIGH); // connect internal pull-up

}

void loop()
{
   int buttonValue = digitalRead(BUTTON_PIN);
   if (buttonValue == LOW){
      // If button pushed, turn LED on
      Serial.println("An");
   } else {
      // Otherwise, turn the LED off
      Serial.println("Aus");
   }
}

Funktioniert. :slight_smile:

Ist es wirklich so einfach oder hab ich jetzt noch was übersehen? Noch mal die Frage nach der Sicherheit... ist es sicher? (2 Kabel miteinander verbinden fühlt sich für mich 'komisch' an...)
(Ich will den Adventskalender verschenken und es wäre überaus schlecht wenn der Person die Bude -inkl. Katze - abbrennt.)

Bilder poste ich natürlich. (Beim nächsten mal... habe gerade kein Datenkabel hier)

HeAdLeSs:
Ist es wirklich so einfach oder hab ich jetzt noch was übersehen? Noch mal die Frage nach der Sicherheit... ist es sicher? (2 Kabel miteinander verbinden fühlt sich für mich 'komisch' an...)

Es geht sogar noch einfacher :wink:

pinmode(BUTTON_PIN, INPUT_PULLUP)

Und sicher ist es auch. Der interne Pullup-Widerstand hat ca. 20kOhm und bei 5 Volt sind das ca. 0,25 mA.

HeAdLeSs:
Ist es wirklich so einfach ...

Glücklicherweise ja. In Beitrag #5 hatte ich versucht, darauf hinzuweisen, fiel nun auf fruchtbaren Boden, juppidu :slight_smile:

Kosmetik: Bitte bool anstelle int.

bool buttonValue = digitalRead(BUTTON_PIN);

Ich hoffe, Du hast als RTC ein DS3231-Board?

HeAdLeSs:
Im Moment habe ich das Holz soweit zugesagt und heute die 24 LEDs in die Fächer eingelötet.

Da solltest du den Strombedarf im Auge halten. Der Uno/Mega kann pro Pin gut 20mA. Allerdings darf die Gesamtstromaufnahme beim Uno nicht 200mA überschreiten und beim Mega gibt es mehrere Pin-Gruppen, die je 200mA nicht überschreiten dürfen. Bei 24 LEDs a 20mA ist man schnell über den Limits. Am einfachsten nimmt man LEDs, die schon bei 5mA hell genug leuchten und passende Vorwiderstände. Dann hat man absolut ungefährliche 120mA max.
Ansonsten braucht man Treiber wie ULN2003. Beim Mega kann man die LEDs auf die Ports verteilen, dass man nicht über die Limits hinauskommt.

@HotSystems
Das habe ich auch gelesen, aber da war wurde auch gesagt das diese Form nicht so gut sei. Leider habe ich vergessen warum.

@agmue
Hat gefruchtet. Danke :slight_smile:
Also es steht ZS-042 drauf. Bei dem von dir Verlinkten aber auch. Ich nehme daher mal an das es die gleiche RTC ist.

@Theseus
Danke für den Hinweis. Die LEDs selbst bekommen eine eigene Stromversorgung. Nur der Daten-PIN geht an den Mega. Da die SK6812 'intelligent' sind, brauchen alle 24 nur einen Daten-PIN. Ziemlich geil die Dinger :wink: Habe ich schon mehrfach in Benutzung.

HeAdLeSs:
@HotSystems
Das habe ich auch gelesen, aber da war wurde auch gesagt das diese Form nicht so gut sei. Leider habe ich vergessen warum.

Das war Quatsch. Das Ergebnis ist das Selbe. Das kannst du ruhig so machen.
Viele hier im Forum und ich auch setzen das so unbedenklich ein.
Der Compiler setzt da schon richtig.

da war wurde auch gesagt das diese Form nicht so gut sei

Kann man drüber streiten.

Die atmega Controller haben nur eine Art, den Pullup-Widerstand zu aktivieren.
INPUT_PULLUP wurde erst später zu pinMode hinzugefügt, macht aber genau das gleiche.

  • Klarheit beim Lesen spricht in der Regel für INPUT_PULLUP (dafür wurde es auch hinzugefügt).

  • Um darauf aufmerksam zu machen was passiert, wenn später pinMode(pin, OUTPUT); ausgeführt werden sollte, ist die alte Version natürlich etwas klarer (Der Pin ist sofort HIGH)
    Dieser Fall ist aber eher selten, und wer das benutzt, sollte sowieso wissen, was passiert.

Achso, das kann sein. Dann war es wahrscheinlich ein alter Post in irgend einem Forum.

Habe mal 3 Bilder angehängt. Auf dem einen mit Dachgiebel :), eins mit den Löchern für die LEDs und eines beim LED reinfummeln.
Ich hoffe das ich morgen etwas weiterkomme mit der Allgemeinsituation. Heute habe ich ja nur Technik gemacht. Morgen dann hoffentlich mehr zusammenbauen.

Ich setze noch ein paar mehr ein sobald es etwas zu zeigen gibt.

Ich darf das mal zur "Ansicht" bringen: