Forum: Mikrocontroller und Digitale Elektronik Microcontroller Alarmanlage


von Phil (Gast)


Lesenswert?

Guten Tag,

ich habe den Plan eine kleine simple Alarmanlage zu bauen mithilfe eines 
Microcontrollers. Allerdings bin ich noch ein ziemlicher Anfänger auf 
dem Bereich. Das Grundprogrammieren bekomme ich schon hin.

Mein Plan ist es an Türen und Fenstern Reed-Kontakte zu verbauen, die an 
einem Microcontroller angeschlossen werden. Dieser soll dann jeweils 
eine RGB schalten ob die Tür bzw. das Fenster offen oder geschlossen 
ist. Also meinetwegen geschlossen soll die RGB grün leuchten und offen 
rot.

Meine erste Frage kann mir jemand einen Microcontroller empfehlen?
Ich bräuchte ca. 24 Eingänge und dementsprechend auch 24 Ausgänge. Ich 
habe Zuhause allerdings nur einen Atmega32 beidem ich nicht genügend 
PIN´s besitze wenn ich richtig gelesen habe. Oder gibt es bestimmte 
Zusatzboards mit dem ich das erweitern kann?

von Stefan B. (blueberlin)


Lesenswert?

warum willst du soetwas simples über ein Mikrocontroller steuern lassen? 
kannst doch die Reedkontakte mit Transistoren direkt mit den LED's 
Verbinden...

von Phil (Gast)


Lesenswert?

Bin derzeit sehr begeistert von der Technik. Also aus dem ersten Grund 
aus reinem Interesse.

Desweitern möchte es ich an einem vorhandenen GSM-Modul anschließen mit 
dem ich dann einen Anruf bzw. eine Textnachricht auf mein Handy bekomme.

von Georg (Gast)


Lesenswert?

Phil schrieb:
> Also meinetwegen geschlossen soll die RGB grün leuchten und offen
> rot.

Und dann sitzt du vor dem Fernseher und schielst immer mit einem Auge 
auf deine LED-Anzeige?

Georg

von MaWin (Gast)


Lesenswert?

Phil schrieb:
> Meine erste Frage kann mir jemand einen Microcontroller empfehlen

Völlig egal, als Anfänger tut es ein Arduino. Man braucht nicht für 
jeden Reed-Kontakt einen Eingang, Stichwort Meldeschleife.

Aber kommerzielle Anlagen haben Vorteile: Manipulationssichere 
Meldeschleifen durch Wechselspannung und Widerstandsmessung, hoffentlich 
robust gegen einen Blitzeinschlag in der Nähe oder Funkstörungen, 
Betrieb auch wenn jemand den Strom abstellt durch Erdschluss an der 
Aussensteckdose durch Akkubetrieb (Arduinos sind nicht so toll bei 
Akkubetrieb).

Andere Features, wie Alarmmeldung und Scharfschalten über Handy oder 
gesetzlich zulässige begrenzte Sirenentöne und natürlich die übliche 
Sicherheitsschaltung: nie auslösen wenn nur 1 Sensor anspricht, sondern 
erst Alarm schlagen wenn 2 unterschiedliche (z.B. Bewegungsmelder und 
Glasbruchmelder) angeschlagen haben zur Vermeidung von Fehlalarmen, 
kannst du natürlich passend programmieren.

von Phil (Gast)


Lesenswert?

Nein es geht um einen Stall wo man dann vorne am Eingang sehen kann ob 
alle Türen geschlossen sind.

von Phil (Gast)


Lesenswert?

Ich möchte aber wissen welche Tür jetzt sag ich  mal offen ist und nicht 
nur das irgendeine Tür offen ist.

von Thomas W. (Gast)


Lesenswert?

Moin, -

wenn Du zuwenig Input/Output hast, kannst Du sie mit:
1) Shift-In und Shift-out erweitern (google: 74ls595 arduino)
und CD4021BE.
2) I2c-Portextender MCP23017 oder PCF8574.

Der Trick ist in jedem Fall, die Daten seriel mit wenigen
Leitungen zu einem Port (der dann mehr I/O-Leitungen hat) zu
transferieren.

Gruesse

Th.

von MaWin (Gast)


Lesenswert?

Phil schrieb:
> Ich möchte aber wissen welche Tür jetzt sag ich  mal offen ist und
> nicht nur das irgendeine Tür offen ist.

Bloss wozu dann einen Mikrocontroller ? Leitungen tuns auch.

von Phil (Gast)


Lesenswert?

Thomas W. schrieb:

> wenn Du zuwenig Input/Output hast, kannst Du sie mit:
> 1) Shift-In und Shift-out erweitern (google: 74ls595 arduino)
> und CD4021BE.

Wie funktioniert das genau?

von Thomas W. (Gast)


Lesenswert?

Moin, -

ist nicht von mir:

https://www.makerblog.at/2015/01/das-schieberegister-74hc595-am-arduino/

oder:

https://www.arduino.cc/en/Tutorial/Foundations/ShiftIn

Du kannst auch einfach google benutzen, ich habe Dir die
Suchbegriffe gezeigt.

Gruesse

Th.

von MaWin (Gast)


Lesenswert?

Thomas W. schrieb:
> Du kannst auch einfach google benutzen

Er kann auch ohne solche Zusatzbauteile problemlos 24 Schalter mit einem 
Arduino Uno auswerten und 24   R/G LEDs schalten, Matrixansteuerung 
macht es möglich.

Aber das alles gehört zur Mikrocontroller-Lernkurve, die manche hier ja 
auch noch vor sich haben.

von Martin V. (oldmax)


Angehängte Dateien:

Lesenswert?

Hi

MaWin schrieb:
> Er kann auch ohne solche Zusatzbauteile problemlos 24 Schalter mit einem
> Arduino Uno auswerten und 24   R/G LEDs schalten, Matrixansteuerung
> macht es möglich.

Ich hab dir mal so eine Matrix skizziert. Port A wird mit "1"-Signalen 
angesteuert. Um den Controller nicht zu überlasten einfach mit 8 
Transistoren Ausgänge des Controllers verstärken. An Port C gibst du z. 
B. über einen ULN 28xx "0"-Signale aus, dabei ist natürlich der Ausgng 
vom Port C eine "1". Der ULN invertiert das Signal. Das ist ganz 
praktisch, denn auch dieses Signal kannst du zu Tastergruppen führen und 
somit auf einen Eingang von Port B ein "0" Signal über die 
Taster/Schalter schalten. Somit kannst du die internen Pull-Up 
Widerstände nutzen.
Im Programm läuft das dann in etwa so ab:
In einer Variablen "Group_Select" (1 Byte) setzt du Bit 0 und in einer 
zweiten Variablen "Group_Count" (1 Byte) setzt du einen Zähler auf 0 
(Initialisierung)
In einer Timer-ISR (1 msek) Setzt du Ausgänge Port C auf 0
Anschließend liest du aus einem Variablen-Array "LED_Group_n" (n-Bytes 
für Gruppen LED-Ausgänge) Byte 0 und schaltest dieses auf Port A. Dann 
schaltest du die Variable mit dem gesetzten Bit auf Port C. Nun liest du 
Port B ein und schreibst den gelesenen Wert invertiert !! in die erste 
Array-Variable eines zweiten Arrays "Group_In_New_n" für Eingänge. Auch 
hier dient die Zählervariable zur Adressierung. Abschließend schiebst du 
das Bit in der ersten Variable ein Bit höher und incrementierst den 
Zähler bis die Anzahl der vorhandenen Gruppen erreicht ist. Wenn das der 
Fall ist, setzt du den Zähler auf 0 und wieder das erte Bit in der 
Variablen für Port C.
Was noch fehlt, ist eine Entprellung der Eingänge. Dafür benötigst du 
eine "Wartezeit", bis die Eingänge gültig sind.
Mein Vorschlag dafür, ein Array "Group_In_New_n" für die Eingänge, die 
direkt vom Port gelesen werden. Das ist oben beschrieben
Ein weiteres Array "Group_In_Old_n" in der gleichen Größe, um diesen 
Status zu merken (alt) und ein drittes Array "Group_In_Act_n", um 
gültige Eingänge abzulegen.
Bei den Tastern wäre eine Flankenerkennung angebracht. Auch dafür 
brauchst du einen "alten" Status gültiger Eingänge.
Und so läuft es dann ab:
Eine Zeitvariable auf einen Wert setzen, vielleicht 20. 
(Initialisierung)
Einmal je Zyklus aufrufen oder in der Timer-ISR (1 mSek) ein Flag 
setzen, um mit diesem dann in der Programmschleife die Entprellroutine 
aufzurufen.
In der Entprellroutine die aktuiellen Portbits mit den gemerkten 
exclusiv verodern. Ist das Ergebnis 0, dann gibt es keine Veränderung. 
In diesem Fall wird geprüft, ob die Zeitvariable 0 ist. Wenn ja, dann 
die nächste Gruppe prüfen. Wenn nicht, den Zähler herunter zählen und 
wenn er auf 0 geht, den aktuellen Status auf den gültigen Status 
übertragen.
Ist das Ergebnis der Exclusiv-Veroderung nicht 0, dann die Zeitvariable 
wieder auf den Anfangswert setzen.
Zum Abschluß dieses Durchganges noch den aktuellen Status von Port B in 
die Ablage kopieren.
Sinnvoll ist es für jede Gruppe eine Zeitvariable einzurichten und das 
wieder in einem Array ("Delay_Group_n").
Auch bei der Flankenerkennung wird eine Exclusiv-Veroderung des neuen 
Status mit einer Ablage (Array "Last_Act_Status_n") durchgeführt. 
Anschließend das Ergebnis mit dem Ablagestatus Verundet. (eine "1" ist 
fallende Flanke) oder eine Und-Verknüpfung Ergebnis mit dem neuen Wert 
(eine "1" ist steigende Flanke).
Diese Bits sind dann die Ereignisbits, die du in deinem Programmzyklus 
abfragen, bearbeiten und nach der Bearbeitung löschen kannst. Somit wird 
ein Tastendruck auch nur einmal bearbeitet und nicht solange er betätigt 
wird.
Ich hoffe, du kannst nach dieser groben Anleitung dein Programm 
zusammenstricken. Da ich "C" nicht beherrsche, kann ich dir auch keine 
Programmschnipsel liefern, aber die Stichworte sollten dir da weiter 
helfen.
Gruß oldmax

von Stefan F. (Gast)



Lesenswert?

Phil schrieb:
> Meine erste Frage kann mir jemand einen Microcontroller empfehlen?

Dazu ist siecher fast jeder Mikrocontroller geeignet. Wegen der guten 
Verfügbarkeit fertiger Module und Anleitungen empfehle ich dir den 
ATmega328 in Form eines Arduino Nano Moduls. Dein Atmega32 ist auch 
nicht schlecht, wenn auch ziemlich alt.

> Ich bräuchte ca. 24 Eingänge und dementsprechend auch 24 Ausgänge.

Um das alles direkt an einen Mikrocontroller anzuschließen muss es dann 
schon ein größeres Modell wie der ATmega2560 sein. Ich würde hier aber 
lieber auf Schieberegister in IC Sockeln setzen, denn die kannst du 
beliebig erweitern und sie beschützen deinen Mikrocontroller.

Ich habe dazu mal Bilder angehängt. Für die Eingänge kannst du 74HC165 
nehmen. Für die Ausgänge eintspricht der TPIC6B595 dem 74HC595, nur dass 
er stärkere Ausgänge hat. Er kann Relais direkt ansteuern.

> Oder gibt es bestimmte Zusatzboards mit dem ich das erweitern kann?

Ja gibt es, man nennt sie Port-Expander. Beliebte Kandidaten sind 
PCF8574 und MCP23017. Ich würde aber den TPIC6B595 bevorzugen, falls du 
Relais ansteuern wirst.

Dein Konzept mit den digitalen Eingängen ist einfach. Das ganze wird 
jedoch deutlich sabotage-sicherer wenn deine Kabel ganz am Ende einen 
Widerstand haben, der überwacht wird. Wenn der Wert deutlich steigt oder 
sinkt, wird Alarm ausgelöst. Für mehr analoge Eingänge kann ich Dir den 
MCP3208 (8 Eingänge) empfehlen. Davon kannst du ganz viele an den 
Mikrocontroller anschließen.

Phil schrieb:
> Ich möchte aber wissen welche Tür jetzt sag ich  mal offen ist und nicht
> nur das irgendeine Tür offen ist.

Dafür ist vielleicht ein Tablet mit einer App eleganter. Die Sensoren 
kannst du über solche Module anbinden: 
http://stefanfrings.de/net_io/index.html

Oder ein PC/Laptop/Raspberry Pi, darauf würde dieses 
Alarmanlagen-Projekt laufen: http://stefanfrings.de/bfAlarm/index.html

Beitrag #6521545 wurde von einem Moderator gelöscht.
von Martin V. (oldmax)


Lesenswert?

Hi
Phil schrieb:
> Bin derzeit sehr begeistert von der Technik. Also aus dem ersten Grund
> aus reinem Interesse.
>
> Desweitern möchte es ich an einem vorhandenen GSM-Modul anschließen mit
> dem ich dann einen Anruf bzw. eine Textnachricht auf mein Handy bekomme.

Wenn das kein Grund ist, mit einer einfachen Erfassung von Zuständen 
eine kleine Alarmanlage zu bauen, weiß ich auch nicht weiter.

Stefan ⛄ F. schrieb:
> Wenn du keinen Wachschutz hast, ist die ganze Anlage sinnlos. Da nützen
> automatische Videoaufzeichnungen (auf einem unzugänglichen Server, z.B.
> in der Cloud) viel mehr um den Einbruch aufzuklären. Dafür brauchst du
> aber keine Alarmanlage.

Damit hat Stefan sicherlich nicht unrecht, trotzdem gibt es vielerlei 
Möglichkeiten, Objekte mit einer stillen Alarmanlage zu überwachen und 
im Ernstfall kann man dann die Polizei zum Geschehen rufen, wenn dann so 
Ein Brecher noch aktiv ist.
Ist schon ein Weilchen her, das ich mit einem uralten Handy Holzlager 
überwachen wollte. Ein Controller hatte die Aufgabe, Akkuzustand, 
Bereitschaft, Fehlalarme und echte Alarme über eine Anrufliste zu 
melden. Gar nicht so kompliziert, mit ATD-Befehlen Nummern wählen zu 
lassen und durch Telefonbucheinträge war immer klar, das sich Holzstapel 
35 bedroht fühlt.
Gruß oldmax

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Ich habe das mit dem Wachschutz wieder gelöscht, weil er nachgereicht 
hat, dass er nur wissen will, welche Türen offen sind.

von MaWin (Gast)


Lesenswert?

Martin V. schrieb:
> Was noch fehlt, ist eine Entprellung der Eingänge.

Eigentlich nicht.

Wenn er bloss Taster auf LEDs abbilden will, ist das alles überflüssig.

Und während ich ein grosser Freund vor Stromverstärkern an uC Ausgängen 
bei Matrixanzeigen bin, z.B. bei 8 x 6 auf 120mA für die Spalten und 
960mA für die Zeilen, ist in der Anwendung auch fraglich, ob er das 
braucht, oder mit 2mA pro LED auskommt.

Aber bisher sehe ich nichtmal einen Grund für einen uC.

von Martin V. (oldmax)


Lesenswert?

Hi
MaWin schrieb:
> Aber bisher sehe ich nichtmal einen Grund für einen uC.

ich schon
Phil schrieb:
> Bin derzeit sehr begeistert von der Technik. Also aus dem ersten Grund
> aus reinem Interesse.

Wenn du mal ein wenig Phantasie walten läßt... wie sieht es denn dann 
aus mit Zeitstempeln für Tür auf, Tür zu ?
Oder Bedienung, um die Alarmanlage scharf zu schalten, oder auch frei zu 
geben? Da ist dann schon mal Flankenerkennung nicht ganz unwichtig. 
Deshalb hab ich in meine Zeichnung mal Taster eingezeichnet, könnt ja 
sein, das Phil auch mal was bedienen möchte. Schalter für Fenster und 
Türen brauchen das natürlich nicht, es sei denn, du willst wissen, wie 
spät es war, als dir die Tür ins Kreuz schlug.
Aber ich kann auch wie du der Meinung sein, Drähte reichen auch. Aber 
dann brauch ich hier nicht schreiben, weil, es hilft nicht. Das kann 
vermutlich jeder, der in der 5. Klasse nicht gepennt hat.
Gruß oldmax

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.