Elektronischer Safe: Unterschied zwischen den Versionen
Zeile 134: | Zeile 134: | ||
https://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf <br/> | https://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf <br/> | ||
http://www.inmoov.fr/wp-content/uploads/2015/02/Introduction-to-Servo-Motors-Arduino.pdf <br/> | http://www.inmoov.fr/wp-content/uploads/2015/02/Introduction-to-Servo-Motors-Arduino.pdf <br/> | ||
https://wiki.hshl.de/wiki/index.php/Datei:PDF_LCD_Display.pdf <br/> | |||
== Literatur == | == Literatur == |
Version vom 20. Januar 2021, 15:24 Uhr
Autoren:Thomas Brice Datche Kenge,Timo Malchus, Dominik Schröer
Betreuer: Marc Ebmeyer
→ zurück zur Übersicht: WS 20/21: Fachpraktikum Elektrotechnik (MTR)
Einleitung
Dieses Projekt ist Teil des GET Fachpraktikums im 5. Semester Mechatronik, WISE 2020/2021. Es soll ein mechatronisches System erstellt werden. Wir haben uns für einen elektronischen Safe entschieden, die kleine Wertsachen, wie Ihren Schmuck, Bargeld oder Kreditkarten sicher aufbewahrt.
Anforderungen
- Elektromechanischer Schließmechanismus
- Sicherung mit einem Code
- Flexible Eingabe mit einer Fernbedienung
- Optische und akustische Signalgebung
- Möglichkeit, das Passwort ändern zu können
- Erkennen, ob der Deckel geschlossen oder geöffnet ist
- Groß genug, um Schlüssel, Brieftasche oder das Handy zu verstauen
Funktionaler Systementwurf/Technischer Systementwurf
Das System besteht aus einem kleinen Kasten, der entweder aus Holz, Kunststoff oder Metall gefertigt ist. Man kann ihn mit einer Fernbedienung ansteuern. Durch Eingabe eines Passworts wird der Schließmechanismus betätigt, der aus einem Servomotor besteht und einen Riegel in einer Raste platziert, sodass sich der Deckel nicht mehr öffnen lässt.
Mit einem Ultraschallsensor wird überprüft, ob der Deckel geschlossen oder geöffnet ist. Mithilfe eines LCD Displays wird mit dem Benutzer kommuniziert. Er zeigt an, ob das Passwort korrekt ist, oder der Deckel gerade geöffnet oder geschlossen ist.
Weiterhin wird mit dem Summer ein Alarm realisiert, der beispielsweise auslöst, wenn der Code mehrmals falsch eingeben wurde.
Komponentenspezifikation
Die größte Komponente des Safes umfasst die Konstruktion und den Bau eines angemessenen Gehäuses, um Wertsachen unterbringen zu können. Dazu wird ein Kasten aus Edelstahl verwendet. Es ist sehr stabil und verschleißfest. Im Gegensatz zur ursprünglichen Idee den Verschlußmechanismus von Außen anzubringen hat es sich als sinnvoller herausgestellt, den Servomotor innen einzubauen. Die gesamte Elektronik wird ebenfalls im Inneren des Safes untergebracht.
Damit
Herstellung des Safes
Nach Festlegung der zu sichernden Materialien im Safe wurde zunächst eine technische Zeichnung mit allen Außen- und Innenmaßen des Safes angefertigt. Er sollte groß genug für mehrere Portemonnaies, zusätzliche Geldbündel oder andere wertvolle Dinge sein. Zuätzlich musste noch genug Platz für alle elektronischen Einheiten gewährleistet sein, die notwendig für Steuerung und Ausführung sind. Desweiteren musste in einer Seite des Safes eine Aussparung für den LCD-Display vorhanden sein. Eine Bohrung für die Verbindung des IR-Empfängers mit der Außenwelt, sowie ein Loch für die Spannungsversorgung des Arduino mussten ebenfalls integriert werden. Die Verriegelung sollte nach Schließen der Klappe mit einem Servomotor realisiert werden. So kam es dazu, dass man sich entschied ein von den Außenmaßen her quadratisches Bauteil zu entwerfen und zu konstruieren. Der LCD-Display sollte frontal aus gesehen rechts sitzen. Auf dieser Seite war so auch die Bohrung für den IR-Empfänger und für die Spannungsversorgung zu setzen.
Aus mehreren Blechstücken (300x300x190) wurden so die Seitenlängen des Safes angefertigt. Die Blechstücke wurden zu einem Quadrat geschweißt und die Ecken abgeschliffen. Als Abtrennung für den Bereich der zu sichernden Materialien zu den elektrischen Bauteilen diente ebenfalls ein Blech, welches die gleiche Dicke von 2mm besitzt. Auf ein Innenmaß von 120mm Breite für die Elektronik wurde dieses Abtrennungsblech nun verschweißt. Mithilfe von zwei Edelstahl-Scharnieren wurde die Klappe befestigt. Für ein sauberes Abschließen wurde diese an den Außenkanten nach unten hin gekantet. Ebenfalls die Oberseite des Behälters wurde im Gegensatz dazu passend nach oben gekantet. Die Verriegelung wurde mit einem sonst von außen verschließbaren Schloss realisiert, welches durch das Schließen des Servomotors arretiert wurde. Die Verstellmöglichkeit von außen wurde festgeschweißt, damit nur das Eingeben des richtigen Kennwortes die Öffnung erlaubt. Die Aussparung für den LCD wurde passend auf die Maße des Displays ausgefräst und als Schutz vor Kurzschlüssen isoliert. In den Safe-Boden wurden jeweils in den Ecken eine Bohrung integriert, um den Safe anschrauben zu können. Das Grundgestell mit Außnahme des Schlosses und der Scharniere wurde in dunkelgrau lackiert. Die elektrischen Komponenten konnten nun verbaut und installiert werden.
Abstandserfassung mit dem Ultraschallsensor
Der Ultraschallsensor HCR-S04 ist ein Low-Cost Ultraschallsensor aus dem Funduino Set. Er besteht aus einer kleinen Platine mit 4 SPL Pins und zwei kleinen Lautsprechern aus Metall. Der Sensor wird über Vcc, GND und zwei Digitale Anschlüsse des Arduino verbunden.
Der Ultraschallsensor kann Abstände von Objekten zwischen 3cm und 4m erfassen. Dabei misst er die Entfernung zu einem Objekt über die Laufzeit eines Ultraschallsignal, welche an einem Objekt reflektiert wird und wieder auf den Empfänger zurückfällt. Mithilfe von Kenntnis über die Schallgeschwindigkeit im entsprechenden Medium kann über die Laufzeit dann die Distanz gemessen werden.
Kommunikation über eine IR- Fernbedienung
Um den Safe ansteuern zu können und Benutzereingaben zu verarbeiten, wird eine drahtlose Infrarotverbindung über eine Fernbedienung und einen Infrarotempfänger aufgebaut. Beide Elemente sind im Packet des Arduino Startersets enthalten.
Das Infrarotsignal verwendet Wellenlängen von 950nm, die von der Fernbedienung ausgesendet werden. Dabei wird, um Daten übertragen zu können, das Signal über eine Trägerfrequenz moduliert. Das bedeutet, dass der Sender das Licht in einer entsprechenden Taktfrequenz zwischen 30kHz und 60kHz ein- und ausschaltet, wobei hierdurch noch keine kompletten Informationspakete übertragen werden. Wird das Licht schnell ein- und ausgeschaltet, so wird eine Information übertragen (mark); registriert der Empfänger kein moduliertes Signal, ist es ein space. Hardwaremäßig geschieht dies mithilfe einer Mikroelektronik, die das einprogrammierte Protokoll auf einen Transistor weiterleitet, sodass eine Infrarotdiode angesteuert wird. Auf der Empfängerseite wird das Signal von einer Filter- und Verstärkerschaltung entgegengenommen. Das Signal wird von einer Photodiode empfangen und auf einen Verstärker gegeben. Damit dann auch die richtigen Trägerfrequenzen verarbeitet werden, wird ein Bandpassfilter zwischengeschaltet. Nach der Demodulation wird das Signal mit einer Komparatorschaltung verglichen, um festzustellen, ob ein Signal empfangen wird. Wird kein Signal empfangen, so erzeugt die Schaltung am Ausgang eine 1, ansonsten eine Null. Die Übertragung der Zeichen von der Fernbedienung auf den Empfänger wird durch das Protokoll festgelegt. Darin ist festgeschrieben, in welche Zeitabstände eine bestimmte Anzahl von marks und spaces eingeteilt wird, um ein Zeichen zu übermitteln.[1] Dabei benutzt jeder Hersteller sein eigenes Übertragungsprotokoll.[2]
Verschlussmechanismus
Für unser Projekt werden wir einen Servomotor als Schließmechanismus für unsere elektronische Safe verwenden.Ein Servo ist ein kleines Gerät, das eine Abtriebswelle hat.Er verfügt über einige Steuerkreise und ein Potentiometer (einen variablen Widerstand, auch Poti genannt), der mit der Ausgangswelle verbunden ist. Mit diesem Potentiometer kann die Steuerschaltung den aktuellen Winkel des Servomotors überwachen. Wenn sich die Welle im richtigen Winkel befindet, schaltet der Motor ab. Wenn die Schaltung feststellt, dass der Winkel nicht korrekt ist, wird der Motor in die richtige Richtung gedreht, bis der Winkel korrekt ist. Die Abtriebswelle des Servos kann sich um 180 Grad bewegen. Normalerweise liegt es irgendwo im 210-Grad-Bereich, variiert jedoch je nach Hersteller. Mit einem normalen Servo wird eine Winkelbewegung zwischen 0 und 180 Grad gesteuert. Ein normaler Servo kann sich mechanisch nicht weiterdrehen, da ein mechanischer Anschlag am Hauptausgangsgetriebe angebracht ist. Die an den Motor angelegte Leistungsmenge ist proportional zur Entfernung, die er zurücklegen muss. Wenn also die Welle eine große Strecke drehen muss, läuft der Motor mit voller Drehzahl. Wenn nur ein geringer Betrag gedreht werden muss, läuft der Motor langsamer. Dies wird als Proportionalsteuerung bezeichnet.Außerdem hat Jeder Servo drei Anschlüsse: Speisung, Masse und PWM Signal.In diesem Projekt wurde die Strom- und Masse-Pins direkt mit den Arduino 5 V- und GND-Pins verbunden . Der PWM-Eingang wurde an einen der digitalen Ausgangspins des Arduino angeschlossen.Der Motor mit dem Arduino wurde wie in der folgenden Bild angeschloßen. Rotes Kabel - 5 V Pin Arduino Braunes/schwarzes Kabel - Erdungspin Arduino Gelbes Kabel- PWM (10) Pin Arduino
Ansteuerung des LCD-Displays
Eine LCD, oder Flüssigkristallanzeige, basiert auf Flüssigkristallen, die ihre Polarisationsrichtung ändern, wenn eine elektrische Spannung angelegt wird. Sie werden undurchsichtig. In LCD-Anzeigen sind diese Flüssigkristalle in Segmenten angeordnet und können unabhängig voneinander ihre Transparenz verändern. Sie werden z.B. in digitalen Armbanduhren, Druckerbildschirmen, Thermometern oder in Autos eingesetzt.Für unser Projekt wird es als Ausstiegshilfe verwendet, d.h. um dem Benutzer Informationen zu geben. LCD-Displays gibt es in verschiedenen Formen und mit den unterschiedlichsten Segmentanordnungen, zum Beispiel als Pixelraster. Im Arduino-Bereich sind mehrzeilige alphanumerische LCD-Displays mit 16-poligen Anschlüssen beliebt. Sie basieren oft auf dem HD44780-Chip von Hitachi und sind mit der LiquidCrystal-Bibliothek von Arduino erhältlich. Sie sind relativ einfach anzuschließen ein LCD Display kann im 4 oder 8 Bit Modus angesprochen werden. Im 4 Bit Modus benötigt man 4, im 8 Bit Modus 8 Datenkabel aus ebenso vielen digitalen Pins des Arduino-Boards. Es wird wie auf dem recht unten dargestellten Schaltbild angeschlossen. Je nach Display-Typ gibt es einen Anschluss für die Hintergrundbeleuchtung und ein Potentiometer, um den Anzeigekontrast zu regeln. Zu beachten ist, dass die Displays, die mit deutlich weniger Pins auskommen, einen zusätzlichen Controller haben und einfach über die I2C-Schnittstelle vom Arduino angesteuert werden können. So ist I2C eine Datenverbindung, die Steuersignale zwischen verschiedenen elektronischen Komponenten ermöglicht.
Umsetzung (HW/SW)
Software
Bei diesem Projekt bietet es sich an, die Software mithilfe von Zustandsautomaten zu realisieren. Zustandsautomaten sind ein Konzept der Informatik, bei dem der Ablauf eines Programms nicht nur durch die Eingabe bestimmt ist, sondern auch von den Eingaben, die in der Vergangenheit getätigt wurden. Man unterscheidet zwischen dem Mealy-Automaten und dem Moore-Automaten, wobei beide ineinander überführt werden können.[3]
Ein Automat befindet sich zu Anfang in einem fest definierten Zustand, dem Initialzustand. Wird eine Eingabe getätigt, die seinem Eingabealphabet entspricht, so wird diese verarbeitet und es wird eine Ausgabe produziert, die von der jeweiligen Eingabe und von dem Zustand abhängig ist, in dem sich der Automat aktuell befindet. Gleichzeitig wechselt der Automat seinen Zustand und das Verfahren beginnt von Neuem. Dabei müssen die Eingaben nicht zwangsläufig durch den Benutzer gemacht werden, eine Eingabe kann beispielsweise auch ein Sensorwert oder ein abgelaufener Timer-Interrupt sein.
Auf diesem Konzept aufbauend ist ein Zustandsautomat entwickelt worden, der den Betrieb des Elektronischen Safes koordiniert. Eine vereinfachte, handschriftliche Version des Zustandsautomaten ist im nebenstehenden Bild zu sehen.
Der Safe befindet sich zunächst im Initialzustand, also das Schloss ist geöffnet. Damit er aber in Betrieb gehen kann, muss die Klappe geschlossen werden. Erst dann kann ein PIN ausgewählt und bestätigt werden. Nach erfolgreicher Pineingabe ist der Safe betriebsbereit. Ein PIN kann zweimal falsch eingeben werden. Nach der dritten Falscheingabe wechselt der Safe in den Zustand "Alarm" der erst nach einer gewissen Zeit aufhört und dann im Zustand "Safe geschlossen" weitermacht. Ebenso wechselt der Safe in den Alarmzustand, wenn in den Zuständen in denen das Schloss geschlossen ist, der Ultraschallsensor ein Öffnen der Klappe registriert, was einem manuellen Aufbrechen entsprechen würde. Der Übersichtlichkeit wegen wurde in der Zeichnung darauf verzichtet.
Die Programmierung der Software selbst wurde mit der Arduino IDE realisiert. Sie umfasst einen Editor inklusive Compiler und Bootloader, jedoch keine Möglichkeiten zum Debuggen des Quellcodes. Die Programmiersprache ist C, jedoch in einer etwas abgewandelten Form, sodass man bei der Programmierung durchaus auf einige Eigenheiten gestoßen ist.
Hardware
Hardwaremäßig muss man sich am Beginn die Frage stellen, was alles in dem Safe verstaut werden soll und auf welche Materialien man für die Konstruktion verwendet. Man hat somit einen groben Überblick, wie viel Rohlinge man braucht und in welche Dimensionen das Projekt verläuft. Greift man anstatt auf Holz auf Blech oder sogar Edelstahl zurück, so bedarf es einen nicht zu unterschätzenden Mehraufwand bei der Verwirklichung der Hardware. Hat man die Gerätschaften zur Verfügung, wie zum Beispiel ein passendes Schweißgerät, so kann man diesen Safe auch aus korrosionsbeständigem Material wie Edelstahl bauen. In diesem Projekt wurde zunächst ein Prototyp aus geschichtetem und geleimten Holz gefertigt, was sich zwar einfacher bearbeiten ließ, aber nicht die nötige Sicherheit und Stabilität mit sich bringt. Aus diesem Grunde wurde für das Endprodukt Blech mit 2mm Dicke verwendet, um stabiler als Holz, aber trotzdem leicht zu sein. Da passende Metallverarbeitungs-Geräte vorhanden waren, konnte man dies auch gut realisieren. Winkelschleifer und Bandsäge bildeten die Maschinen für das Trennen und Schleifen. Mit einem Schutzgas-Schweißgerät wurden die Schweißnähte gefertigt. Gebohrt wurde sowohl mit einer Standbohrmaschine, einem Akkubohrer, einer Winkelbohrmaschine als auch mit einer CNC-Fräse. Als Farbe erhielt der Safe die Farbe "Claas CCgrau"".
Schaltplan
Komponententest
Die einzelnen Komponenten wurden separat voneinander getestet. Dabei wurden jedes einzelne Bauteil zunächst mit dem Arduino verbunden und eine kleine Testmethode geschrieben, die jeden Aktor und Sensor einzeln in Betrieb nimmt und auf seine Funktion testet. Es hat sich gezeigt, dass alle Bauteile einwandfrei funktionieren, sodass sie in den Safe eingesetzt werden konnten.
Nachdem der Zustandsautomat konzeptionell entworfen wurde, ist die Implementierung in der Arduino IDE vorgenommen worden. Dabei wurde zunächst das Setup geschrieben und ausgeführt und dann sukzessive jeder Zustand für sich einprogrammiert. Dabei wurden, um auf die Peripherie zugreifen zu können, verschiedene Bibliotheken eingebunden, um deren Funktionalitäten nutzen zu können. Dadurch hat sich jedoch herausgestellt, dass der Summer nicht betätigt werden kann, wenn die Sensorik eingebunden ist, sodass der akustische Alarm nicht ausgelöst werden kann.
Ergebnis
Zusammenfassung
Lessons Learned
Projektunterlagen
Projektplan
Projektdurchführung
Die Projektdurchführung war von einigen Hürden durch die Corona- Pandemie begleitet. Daher war es nicht immer möglich, die Sachen zusammen bearbeiten zu können.
YouTube Video
Weblinks
https://starthardware.org/lcd/
https://www.exp-tech.de/blog/arduino-tutorial-servo
https://www.mikrocontroller.net/attachment/218122/HC-SR04_ultraschallmodul_beschreibung_3.pdf
http://www.inmoov.fr/wp-content/uploads/2015/02/Introduction-to-Servo-Motors-Arduino.pdf
https://wiki.hshl.de/wiki/index.php/Datei:PDF_LCD_Display.pdf
Literatur
→ zurück zur Übersicht: WS 20/21: Fachpraktikum Elektrotechnik (MTR)
- ↑ IR Remote Control Theory abgerufen am 15.01.2021
- ↑ IR-Protokolle abgerufen am 15.01.2021
- ↑ [Vorlesungsskript: Zustandsautomation von Prof.Dr. Axel Thümmler]