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?
warum willst du soetwas simples über ein Mikrocontroller steuern lassen? kannst doch die Reedkontakte mit Transistoren direkt mit den LED's Verbinden...
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.
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
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.
Nein es geht um einen Stall wo man dann vorne am Eingang sehen kann ob alle Türen geschlossen sind.
Ich möchte aber wissen welche Tür jetzt sag ich mal offen ist und nicht nur das irgendeine Tür offen ist.
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.
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.
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?
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.
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.
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
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
:
Bearbeitet durch User
Beitrag #6521545 wurde vom Autor gelöscht.
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
Ich habe das mit dem Wachschutz wieder gelöscht, weil er nachgereicht hat, dass er nur wissen will, welche Türen offen sind.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.