Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Benutzeravatar
DiJe
Beiträge: 520
Registriert: 04.03.2015, 05:51

Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von DiJe » 20.06.2018, 07:29

Hallo,
habe den Bewegungsmelder Innen HM-SEC-MDIR-2 nachgebaut.
Funktioniert sehr gut.
Nutze den Sensor https://www.ebay.de/itm/AM312-DC-2-7-12 ... SwY7taepH8
mit dem Sketch
https://github.com/pa-pa/AskSinPP/tree/ ... M-SEC-MDIR
Zwischenablage02.png
Zwischenablage05.png
Nochmals danke an alle die das möglich machen.
Gruß Dieter
Zuletzt geändert von DiJe am 21.06.2018, 15:24, insgesamt 1-mal geändert.
Gruß Dieter

Bratmaxe
Beiträge: 1412
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von Bratmaxe » 21.06.2018, 13:03

Ergänzend zu DiJe's Anleitung habe ich hier mal die Erläuterung, wie man mehrere Sensoren parallel anschließen kann, und wie man das ganze als Netzteilvariante bauen kann.

Ich habe die Netzteilvariante verbaut, aber meine Arduinos konnten die 12V leider nicht am RAW pin, ab, bei mir ist der LDO durchgebrannt. Obwohl in der chinesischen Beschreibung ganz klar bis 12V steht! Daher habe ich mich für einen StepDown-Regler entschieden, um dieses Problem zu umgehen!

Anmerkung:
Ich habe die Software nicht erstellt, das waren viele andere fleißige Mitglieder dieses Forums und von Extern.
Der Dank geht daher an alle, die sich die Mühe machen und hier Ihre Freizeit "opfern" um uns den Nachbau zu ermöglichen bzw. zu erleichtern.
Ich habe meine Anleitung bewusst der Anleitung von jp112sdl angepasst, so das man sich schnell zurecht findet:

benötigte Hardware:
1x Arduino Pro Mini ATmega328P (3.3V / 8MHz)
1x CC1101 Funkmodul (868 MHz)
1x FTDI Adapter (zum Flashen)
1x Taster
1x LED (optional)
1x Widerstand 330 Ohm (optional)
Draht
1x StepDown Modul (nur im Netzteilbetrieb) https://de.aliexpress.com/item/1-pcs-Ul ... 66862.html
1-4x PIR-Sensoren
Batteriebetrieb: https://de.aliexpress.com/item/Mini-IR- ... 62369.html
Diese Sensoren funktionieren ab 2,7V und sind daher für den Batteriebetrieb von 2 x AA-Batterien (2*1,5V = 3V) geeignet. Dieser Sensor kann laut Verkäufer bis zu 100° und 3-5Meter abdecken.
Netzteilbetrieb: https://de.aliexpress.com/item/Free-shi ... 07854.html
Diese Sensoren funktionieren erst ab 4,5V und würden somit mindestens 4 Batterien (6V) benötigen, daher sind diese besser für den Netzteilbetrieb geeignet). Es besteht noch die Möglichkeit, hier die Z-Diode auszulöten, dann soll der Sensor mit 3,3V laufen.

Platine:
Die Universalplatine von deimos habe ich in meinem Fall verwendet, um alles etwas aufgeräumter wirken zu lassen.
Die Platine hat die benötigten 4 Analogen Pin (A0-A3) herausgeführt.
Batteriebetrieb: Es sind "nur" 2x VCC Anschlüsse vorhanden (am I2C Sockel J1 +J2), hier muss man entweder jeweils 2 Sensoren anschließen, oder aber den Code erweitern, so das man D5 und D6 als Versorgung nutzen kann. Unter der Zeile "sdev.init(hal);" folgendes einfügen:

Code: Alles auswählen

digitalWrite(5, HIGH);
digitalWrite(6, HIGH);
somit werden die beiden Kanäle auf VCC (3,3V) gezogen. Da die Sensoren sehr energiesparend arbeiten, können diese leicht über diese Pinne versorgt werden!
Netzteilbetrieb: Die Sensoren müssen ohne die Platine versorgt werden, da auf der Platine nur die 3,3V vorhanden sind.

Link zur Platine:
https://github.com/alexreinert/PCB
(ich habe auch noch welche übrig, die ich günstig abzugeben habe, einfach per PN anfragen)

Akkulaufzeit (nur für den Batteriebetrieb relevant):
Um die Batterielebensdauer zu erhöhen, ist es unbedingt notwendig, die LED vom Arduino Pro Mini zu entfernen!
Die LED und den 330R Widerstand kann man ebenfalls weglassen, um noch ein wenig mehr Akku zu sparen, man sieht dann allerdings nicht, das der Arduino "lebt".
Der LDO auf dem Arduino Board kann/sollte ebenfalls entfernt werden.
Je nach Arduino Board (Version) kann man hierfür die Lötbrücke öffnen, oder muss das IC ablöten (wenn keine Lötbrücke vorhanden).

Ich habe die theoretische Batterielaufzeit mit 2xAA Batterien mit 2000mAh und 10 Auslösungen pro Stunde mal in einer Excel Tabelle durchgerechnet.
Arduino mit LED und LDO und PIR-Sensor - ca. 2,5 Monate
Arduino ohne LED, mit LDO und PIR-Sensor - ca. 1,3 Jahre
Arduino ohne LED, ohne LDO und PIR-Sensor - ca. 1,9 Jahre
Man sieht also, das es sich durchaus lohnt die "Sparmaßnahmen" auch durchzuführen! Die Werte sind allerdings mit Vorsicht zu genießen, da die Angaben der Chinesischen Hersteller nicht immer so ganz stimmen!

Anschaltung:
HM-SEC-MDIR Batterie.jpg
Variante mit Batterien
HM-SEC-MDIR - Netzteil.jpg
Variante mit Netzteil
Code flashen:
AskSinPP Library in der Arduino IDE installieren
Achtung: Die Lib benötigt selbst auch noch weitere Bibliotheken.
Projekt-Datei herunterladen. --> zu finden in den Beispielen von pa-pa(https://github.com/pa-pa/AskSinPP/tree/ ... M-SEC-MDIR)
Arduino IDE öffnen
Heruntergeladene Projekt-Datei öffnen
Werkzeuge
- Board: Arduino Pro or Pro Mini einstellen
- Prozessor: ATmega328P (3.3V 8MHz) auswählen
- Port: entsprechend FTDI Adapter einstellen
- Menü "Sketch" -> "Hochladen" auswählen.

Gerät anlernen:
Kann wie jedes HM-Gerät angelernt werden, CCU in den Anlernmodus bringen, Taster kurz drücken..
siehe Posteingang!
Jetzt unbedingt darauf achten, das man im Gerät die Verbindung auf Standard stellt (nicht auf gesichert).
AES ist zwar möglich muss aber individuell eingestellt werden im Sketch!

Optional - Umbau für mehrere PIR-Sensoren:
Hier müssen optional folgende Zeilen unter '#define PIR_PIN 14' eingefügt werden:

Code: Alles auswählen

#define PIR_PIN2 15
#define PIR_PIN3 16
#define PIR_PIN4 17
Und unter 'motionISR(sdev,1,PIR_PIN);' müssen folgende Zeilen eingefügt werden:

Code: Alles auswählen

motionISR(sdev,2,PIR_PIN2);
motionISR(sdev,3,PIR_PIN3);
motionISR(sdev,4,PIR_PIN4);
Es können immer alle 4 Ports im Code eingestellt werden, da diese keinen Mehrverbrauch darstellen. Der Arduino wacht immer dann auf, wenn an den definierten Pinnen ein High-Signal(3,3V) anliegt, wenn kein Sensor angeschlossen wird, wird der Arduino auch nicht geweckt.

Optional - Netzteilbetrieb:
Für den Netzbetrieb können folgende Zeilen ersetzt werden:

Code: Alles auswählen

typedef AskSin<LedType,BatterySensor,RadioType> BaseHal;
ersetzen durch

Code: Alles auswählen

typedef AskSin<LedType,NoBattery,RadioType> BaseHal;
und folgende Zeilen auskommentieren (// vor die Zeile eintragen) oder Zeilen löschen:

Code: Alles auswählen

battery.init(seconds2ticks(60UL*60),sysclock);
battery.low(22);
battery.critical(19);

if( hal.battery.critical() ) {
    hal.activity.sleepForever(hal);
}
Das PIR-Modul hat einen Jumper, der regelt, ob das PIR-Modul das Ausgangssignal nur einmalig oder mehrfach (retriggernd) ausgibt. Ich hatte Probleme (nach einmaliger Erkennung der Bewegung funktionierte das PIR-Modul nicht mehr), wenn das Signal auf retriggernd stand, von daher solltet ihr in dem Fall den Jumper umstecken.

Sollten mir hier Fehler unterlaufen sein, so sagt mir bitte schnell bescheid, damit wir diesen beheben können.

Nachtrag1: Beim PIR "HC-SR501" kann man am IC1 (Stepdown 7133-1) das IC entfernen und Pin VIn und Pin VOut brücken. Und die Diode 1 muss ebenfalls überbrückt werden. Dann läuft der Sensor auf 3,3V. Es ist aber sicher zu stellen, das die 3,3V dann stabil sind, also über den Arduino oder einen anderen Wandler erzeugt werden (nicht Batteriespannung).
Hier gilt je Effizienter der Wandler, desto länger halten die Batterien:
https://de.aliexpress.com/item/DD0503MA ... 44898.html
HM-SEC-MDIR Batterie mit HC-501.jpg
Variante mit Batterien und HR-501 PIR
Viel Erfolg
Gruß Carsten
Zuletzt geändert von Bratmaxe am 29.06.2018, 12:55, insgesamt 5-mal geändert.
Gruß Carsten

Benutzeravatar
DiJe
Beiträge: 520
Registriert: 04.03.2015, 05:51

Re: Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von DiJe » 21.06.2018, 13:52

Hallo Carsten,
passt hier doch auch rein.
Betrifft auch den HM-SEC-MDIR-2
Gruß Dieter
Gruß Dieter

Bratmaxe
Beiträge: 1412
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von Bratmaxe » 21.06.2018, 13:57

Alles klar, hoffe ich schaffe es heute Abend noch das zu testen, ich werde dann meinen ersten Beitrag einfach editieren und die Anleitung dort einfügen, sobald ich das auch getestet habe.

Ich habe meine Threads mit Anleitungen auch so benannt, damit diese sich von den Fragen abheben.
Also statt "Nachbau Bewegungsmelder innen HM-SEC-MDIR-2" => "Anleitung Nachbau Bewegungsmelder HM-SEC-MDIR-2"
Vielleicht magst du deine Anleitung ja auch umbenennen.

Oder super wäre auch, wenn ein Moderator diese in einen Unterordner verschieben könnte, dann wäre das noch übersichtlicher...

Gruß Carsten
Gruß Carsten

Benutzeravatar
DiJe
Beiträge: 520
Registriert: 04.03.2015, 05:51

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von DiJe » 22.06.2018, 08:39

Hallo,
habe den Bewegungsmelder in ein Gehäuse gebaut mit Batterie CR2.
Ich hoffe die Batterie hält lange, ist nicht gerade preiswert.
https://www.elv.de/strapubox-mini-modul ... -grau.html
https://www.elv.de/foto-lithium-batterie-cr-2-1.html
https://www.elv.de/batteriehalter-fuer- ... hluss.html
so siehts aus
20180622_081729.jpg
20180622_081858.jpg
Gruß Dieter
Gruß Dieter

Bratmaxe
Beiträge: 1412
Registriert: 28.05.2015, 12:48
Wohnort: Willich
Hat sich bedankt: 1 Mal
Danksagung erhalten: 2 Mal

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von Bratmaxe » 29.06.2018, 07:59

Ich habe meine Beschreibung in Post#2 angepasst!
Gruß Carsten

Benutzeravatar
DiJe
Beiträge: 520
Registriert: 04.03.2015, 05:51

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von DiJe » 29.06.2018, 21:17

Danke Bratmaxe,
tolle Doku
Gruß Dieter
Gruß Dieter

Slow
Beiträge: 19
Registriert: 15.03.2018, 07:59

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von Slow » 27.09.2018, 22:11

Hallo,
erst einmal vielen Dank für die super Anleitung.

Ich will am Wochenende einen Bewegungsmelder nachbauen. Hat schon jemand einen Helligkeitssensor eingebunden und kann was zum Sketch sagen? Mir war so als hätte ich irgendwo gelesen, dass das möglich ist.

Grüße
Micha

Slow
Beiträge: 19
Registriert: 15.03.2018, 07:59

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von Slow » 30.09.2018, 14:07

Hallo,
ich sitze nun schon eine ganze Weile an dem Sketch und komme nicht weiter.
Ohne den Helligkeitssensor läuft alles wunderbar, aber sobald ich den TSL mit einbinde, kompiliert er den Sketch nicht mehr. Die Bibliotheken habe ich alle noch mal auf den aktuellen Stand gebracht. kann jemand was mit der Fehlermeldung anfangen?

Code: Alles auswählen

HM-SEC-MDIR:70: error: 'BrightnessTSL2561' was not declared in this scope

 typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0,BrightnessTSL2561<TSL2561_ADDR_LOW> > MChannel;

                                                   ^

HM-SEC-MDIR:70: error: template argument 4 is invalid

 typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0,BrightnessTSL2561<TSL2561_ADDR_LOW> > MChannel;

                                                                                     ^

HM-SEC-MDIR:70: error: expected unqualified-id before '>' token

 typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0,BrightnessTSL2561<TSL2561_ADDR_LOW> > MChannel;

                                                                                       ^

HM-SEC-MDIR:75: error: 'MChannel' was not declared in this scope

 typedef MultiChannelDevice<Hal,MChannel,1> MotionType;

                                ^

HM-SEC-MDIR:75: error: template argument 2 is invalid

 typedef MultiChannelDevice<Hal,MChannel,1> MotionType;

                                          ^

HM-SEC-MDIR:75: error: invalid type in declaration before ';' token

 typedef MultiChannelDevice<Hal,MChannel,1> MotionType;

                                                      ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino: In function 'void setup()':

HM-SEC-MDIR:82: error: request for member 'init' in 'sdev', which is of non-class type 'MotionType {aka int}'

   sdev.init(hal);

        ^

In file included from C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino:18:0:

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino: In static member function 'static void setup()::sdev1ISRHandler::isr()':

C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/Motion.h:182:31: error: request for member 'channel' in 'sdev', which is of non-class type 'MotionType {aka int}'

   static void isr () { device.channel(chan).motionDetected(); } \

                               ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino:84:3: note: in expansion of macro 'motionISR'

   motionISR(sdev,1,PIR_PIN);

   ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino: In static member function 'static void setup()::sdev2ISRHandler::isr()':

C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/Motion.h:182:31: error: request for member 'channel' in 'sdev', which is of non-class type 'MotionType {aka int}'

   static void isr () { device.channel(chan).motionDetected(); } \

                               ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino:85:3: note: in expansion of macro 'motionISR'

   motionISR(sdev,2,PIR_PIN2);

   ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino: In static member function 'static void setup()::sdev3ISRHandler::isr()':

C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/Motion.h:182:31: error: request for member 'channel' in 'sdev', which is of non-class type 'MotionType {aka int}'

   static void isr () { device.channel(chan).motionDetected(); } \

                               ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino:86:3: note: in expansion of macro 'motionISR'

   motionISR(sdev,3,PIR_PIN3);

   ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino: In static member function 'static void setup()::sdev4ISRHandler::isr()':

C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/Motion.h:182:31: error: request for member 'channel' in 'sdev', which is of non-class type 'MotionType {aka int}'

   static void isr () { device.channel(chan).motionDetected(); } \

                               ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino:87:3: note: in expansion of macro 'motionISR'

   motionISR(sdev,4,PIR_PIN4);

   ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino: In function 'void setup()':

HM-SEC-MDIR:88: error: request for member 'initDone' in 'sdev', which is of non-class type 'MotionType {aka int}'

   sdev.initDone();

        ^

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino: In function 'void loop()':

HM-SEC-MDIR:93: error: request for member 'pollRadio' in 'sdev', which is of non-class type 'MotionType {aka int}'

   bool poll = sdev.pollRadio();

                    ^

In file included from C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/AskSinPP.h:45:0,

                 from C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino:11:

C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/Button.h: In instantiation of 'void as::ConfigButton<DEVTYPE, OFFSTATE, ONSTATE, MODE>::state(uint8_t) [with DEVTYPE = int; unsigned char OFFSTATE = 1u; unsigned char ONSTATE = 0u; unsigned char MODE = 2u; uint8_t = unsigned char]':

C:\Users\Micha\Documents\Arduino\Hm-sec-mdir\HM-SEC-MDIR\HM-SEC-MDIR.ino:104:1:   required from here

C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/Button.h:182:7: error: request for member 'startPairing' in '((as::ConfigButton<int>*)this)->as::ConfigButton<int>::device', which is of non-class type 'int'

       device.startPairing();

       ^

C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/Button.h:186:9: error: request for member 'reset' in '((as::ConfigButton<int>*)this)->as::ConfigButton<int>::device', which is of non-class type 'int'

         device.reset(); // long pressed again - reset

         ^

C:\Users\Micha\Documents\Arduino\libraries\AskSinPP-master/Button.h:189:9: error: request for member 'led' in '((as::ConfigButton<int>*)this)->as::ConfigButton<int>::device', which is of non-class type 'int'

         device.led().set(LedStates::key_long);

         ^

exit status 1
'BrightnessTSL2561' was not declared in this scope

jp112sdl
Beiträge: 3218
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 25 Mal
Danksagung erhalten: 49 Mal
Kontaktdaten:

Re: Anleitung Nachbau Bewegungsmelder innen HM-SEC-MDIR-2

Beitrag von jp112sdl » 30.09.2018, 14:53

Ändere

- Zeile 15:
#include <TSL2561.h>
zu
#include <sensors/Tsl2561.h>

- Zeile 67:
typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0,BrightnessTSL2561<TSL2561_ADDR_LOW> > MChannel;
zu
typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0,Tsl2561<TSL2561_ADDR_LOW> > MChannel;


Denk dran, dass du am TSL2561 auch die L-Adresse gebrückt hast. Wenn die Brücke offen ist, musst du TSL2561_ADDR_FLOAT nehmen.

VG,
Jérôme

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“