Arduino Projekt: Türsicherheitssystem: Unterschied zwischen den Versionen

Aus HSHL Mechatronik
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
Zeile 65: Zeile 65:
==Programmierung==
==Programmierung==
Es ist wichtig, die [[Programmierrichtlinien Einsteiger|['''Programmierrichtlinien''']]] beim Programmieren einzuhalten.<br><br>
Es ist wichtig, die [[Programmierrichtlinien Einsteiger|['''Programmierrichtlinien''']]] beim Programmieren einzuhalten.<br><br>
 
----
===1) Bibliotheken einfügen===
=== Bibliotheken einfügen===
Lade, für das Projekt, die [https://github.com/Chris--A/Keypad '''Bibliothek'''] für das Tastenfeld 4x4 herunter.<br>
Lade, für das Projekt, die [https://github.com/Chris--A/Keypad '''Bibliothek'''] für das Tastenfeld 4x4 herunter.<br>
Benötigt werden die Bibliotheken <code>'''Servo.h'''</code> und <code>'''Keypad.h'''</code>.  
Benötigt werden die Bibliotheken <code>'''Servo.h'''</code> und <code>'''Keypad.h'''</code>.  
Zeile 75: Zeile 75:
|-
|-
|
|
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:small">
/* Benötigte Bibliotheken */
/* Benötigte Bibliotheken */
#include <Keypad.h>
#include <Keypad.h>
Zeile 81: Zeile 81:
</syntaxhighlight>
</syntaxhighlight>
|}
|}
 
----
===2) Initialisierung Arduino ===
=== Initialisierung Arduino ===
'''2.1 Tastenfeld initialisieren'''<br>
'''1. Tastenfeld initialisieren'''<br>
Ziel ist es, alle benötigten Variablen für die Funktion zu definieren: [https://wiki.hshl.de/wiki/index.php/Grundkenntnisse_Programmierung_(T%C3%BCr_Sicherheitssystem) '''<code>Keypad Tastenfeld = Keypad(makeKeymap(Hexa_Keys), Row_Pins, Col_Pins, ROWS, COLS);</code>''']
Ziel ist es, alle benötigten Variablen für die Funktion zu definieren: [https://wiki.hshl.de/wiki/index.php/Grundkenntnisse_Programmierung_(T%C3%BCr_Sicherheitssystem) '''<code>Keypad Tastenfeld = Keypad(makeKeymap(Hexa_Keys), Row_Pins, Col_Pins, ROWS, COLS);</code>''']
* '''ROWS''' sind die Anzahl der Spalten und '''COLS''' sind die Anzahl der Zeilen, diese werden als Variable festgelegt.
* '''ROWS''' sind die Anzahl der Spalten und '''COLS''' sind die Anzahl der Zeilen, diese werden als Variable festgelegt.
Zeile 94: Zeile 94:
|-
|-
|
|
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:small">
/* Tastenfeld */
/* Tastenfeld */
/* Größe des Keypads definieren */
/* Größe des Keypads definieren */
Zeile 112: Zeile 112:
|}
|}


'''2.2 Tastenfeld Variablen'''<br>
'''2. Tastenfeld Variablen'''<br>
Benötigte Variablen zum:  
Benötigte Variablen zum:  
* Festlegen des Passwortes, jeder Buchstabe einzeln.
* Festlegen des Passwortes, jeder Buchstabe einzeln.
Zeile 124: Zeile 124:
|-
|-
|
|
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:small">
/* Variablen */
/* Variablen */
char P1='1';char P2='2';char P3='3';char P4='A'; // Vier Zeichen des Passwortes eingegeben
char P1='1';char P2='2';char P3='3';char P4='A'; // Vier Zeichen des Passwortes eingegeben
Zeile 151: Zeile 151:
|-
|-
|
|
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:small">
/* Motor */
/* Motor */
Servo Servo_blau; //Servomotor Definition
Servo Servo_blau; //Servomotor Definition
Zeile 175: Zeile 175:
</syntaxhighlight>
</syntaxhighlight>
|}
|}
 
----
===3) Richtige Reihenfolge der Eingabe===
=== Richtige Reihenfolge der Eingabe===
'''Wichtig''' ist, dass die Ziffern richtig eingegeben werden.
'''Wichtig''' ist, dass die Ziffern richtig eingegeben werden.
* So muss sich eine Funktion überlegt werden, welches dies ermöglicht.
* So muss sich eine Funktion überlegt werden, welches dies ermöglicht.
Zeile 193: Zeile 193:
|-
|-
|
|
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:small">
void loop()  
void loop()  
{
{
Zeile 241: Zeile 241:
</syntaxhighlight>
</syntaxhighlight>
|}
|}
 
----
===4) Tür öffnen und schließen ===
=== Tür öffnen und schließen ===
* Für das Öffnen der Tür wird die Taste '''(#)''' verwendet und zum Tür verriegeln die Taste '''(*)'''.
* Für das Öffnen der Tür wird die Taste '''(#)''' verwendet und zum Tür verriegeln die Taste '''(*)'''.
* Wenn die Tür offen ist, leuchtet die LED Grün und Rot, wenn sie geschlossen ist.
* Wenn die Tür offen ist, leuchtet die LED Grün und Rot, wenn sie geschlossen ist.
Zeile 257: Zeile 257:
|-
|-
|
|
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:small">
void loop()  
void loop()  
{
{
Zeile 296: Zeile 296:
</syntaxhighlight>
</syntaxhighlight>
|}
|}
 
----
===5) Einbrecher Warnung! ===
=== Einbrecher Warnung! ===
Als Zusatzaufgabe wurde sich überlegt, einen Buzzer ertönen zu lassen, wenn das Passwort 3-mal Falsche eingegeben wurde.  
Als Zusatzaufgabe wurde sich überlegt, einen Buzzer ertönen zu lassen, wenn das Passwort 3-mal Falsche eingegeben wurde.  


Zeile 310: Zeile 310:
|-
|-
|
|
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:small">
   if (Taste=='#')
   if (Taste=='#')
   {
   {
Zeile 347: Zeile 347:
|-
|-
|       
|       
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:14px">
<syntaxhighlight lang="C" style="border: none; background-color: #EFF1C1; font-size:small">
/* Benötigte Bibliotheken */
/* Benötigte Bibliotheken */
#include <Keypad.h>
#include <Keypad.h>

Version vom 26. August 2023, 13:20 Uhr

Abb. 1: Tür Sicherheitssystem

Autor: Justin Frommberger

Aufgabenstellung

  • Ziel des Projektes ist es, ein Türsicherheitssystem zu simulieren.
  • Die Aufgabe besteht darin, die Tür mit einem vierstelligen Zahlencode zu öffnen (LED leuchtet grün).
  • Wird der Code 3-mal falsch eingegeben, ertönt ein Warnsignal und die LED leuchtet rot.
  • Alle Eingaben müssen auf dem seriellen Monitor angezeigt werden.

⇒ Für den Fall, dass kein Arduino zur Verfügung steht, kann dieser Online Arduino verwendet werden. [klicken]


[Abb. 2: UML]

Benötigte Materialien

Tabelle 1: Materialliste
Nr. Anz. Beschreibung Bild
1 Funduino Arduino UNO R3
1 USB A zu USB B
20+ Jumperkabel, männlich/männlich
1 Steckbrett
2 LED Rot/Grün
3 Widerstand
120 Ω
1 TowerPro SG90 Servomotor
1 Piezo Lautsprecher
1 4x4 Tastenfeld

Vorab wichtig zu wissen

Abb. 3: LED

Servomotor Kabel

Tabelle 2: Servomotor Farberkennung
Schwarz oder Braun Masse (GND)
Rot VCC/+ 5 V
Organe, Gelb oder Weiß PWM-Signal

Tastenfeld

Was ist ein Tastenfeld, siehe: [klicken]

Aufbau Schaltung

Abb.4 Schaltung Tür Sicherheitssystem

In Abb. 4 wird die Schaltung für das Projekt "Tür Sicherheitssystem" dargestellt.
Bevor mit der Programmierung begonnen werden kann, muss die Schaltung des Projekts aufgebaut werden.

Programmierung

Es ist wichtig, die [Programmierrichtlinien] beim Programmieren einzuhalten.


Bibliotheken einfügen

Lade, für das Projekt, die Bibliothek für das Tastenfeld 4x4 herunter.
Benötigt werden die Bibliotheken Servo.h und Keypad.h.

[Quelltext 1: TSS.ino]


Initialisierung Arduino

1. Tastenfeld initialisieren
Ziel ist es, alle benötigten Variablen für die Funktion zu definieren: Keypad Tastenfeld = Keypad(makeKeymap(Hexa_Keys), Row_Pins, Col_Pins, ROWS, COLS);

  • ROWS sind die Anzahl der Spalten und COLS sind die Anzahl der Zeilen, diese werden als Variable festgelegt.
  • Daraufhin müssen Row_Pins und Col_Pins ihren Ziffern zugeordnet werden über eine Array-Zuweisung.
  • Zum Schluss muss die Hexa_Keys Matrix aufgebaut werden, hier wird jede Ziffer für das Tastenfeld festgelegt.

[Quelltext 2: TSS.ino]

2. Tastenfeld Variablen
Benötigte Variablen zum:

  • Festlegen des Passwortes, jeder Buchstabe einzeln.
  • Speichern der aktuell gedrückten Taste.
  • Speichern der vier gedrückten Tasten.
  • Verhindern einer falschen Position bei der Eingabe.

[Quelltext 3: TSS.ino]

3. Motor, Buzzer und RGB initialisieren

Pins
LED 12 und 13
Motor 11
Buzzer 10

pinMode();
Servo.h
[Quelltext 4: TSS.ino]


Richtige Reihenfolge der Eingabe

Wichtig ist, dass die Ziffern richtig eingegeben werden.

  • So muss sich eine Funktion überlegt werden, welches dies ermöglicht.
  • Zur Verwendung kommen nun die Variablen für die falsche Eingabe.
  • Auch muss die Variable Taste ihre Werte erhalten.
  • Die gedrückte Taste wird in der C1-4 Variable abgespeichert, um später das Passwort zu überprüfen.

Tipp:

  1. Nachdem die erste Ziffer gedrückt wurde, öffnet sich die Eingabe für die zweite Ziffer usw.
  2. Benötigt wird hierfür eine if-Bedingung und eine goto Funktion.
  3. Die Taste bekommt mit der Funktion Tastenfeld.getKey(); ihre Ziffer.

[Quelltext 5: TSS.ino]


Tür öffnen und schließen

  • Für das Öffnen der Tür wird die Taste (#) verwendet und zum Tür verriegeln die Taste (*).
  • Wenn die Tür offen ist, leuchtet die LED Grün und Rot, wenn sie geschlossen ist.
  • Der Motor soll ich zu 90 Grad drehen beim Schließen und zu 0 Grad beim Öffnen.
  • Überprüfe vor dem Öffnen, ob das Passwort korrekt ist.

Tipp:

  1. Benötigt werden if-Else Funktionen, die nach der bestimmten Taste abfragen und die Anweisung dann ausführen.
  2. Nutze Vergleichsoperatoren zum Abfragen des Passwortes.

[Quelltext 6: TSS.ino]


Einbrecher Warnung!

Als Zusatzaufgabe wurde sich überlegt, einen Buzzer ertönen zu lassen, wenn das Passwort 3-mal Falsche eingegeben wurde.

Tipp:

  1. Bei einer falschen Eingabe wird die Variable hochgezählt.
  2. Wenn die Variable 3 erreicht, ertönt der Buzzer.

tone();

[Quelltext 7: TSS.ino]

Musterlösung

Quelle: Link



→ zurück zum Hauptartikel: BA: Arduino-Projekte für die Lehre