RFID Sensor

Der RFID-Sensor bietet die Möglichkeit Signale eines bestimmten Tags zu erkennen. Diese Signale werden für die Öffnung der Tür des Briefkasten genutzt, wenn der erkannte Tag autorisiert ist.

Der verbaute MFRC522 RFID-Sensor nutzt das SPI-Interface des Wemos D1 Mini und benötigt daher sieben verschiedene Pins um alle nötigen Daten zu übertragen.
Die Schaltung muss, wie in Abb.1 zu sehen, verbunden werden, sodass der RFID-Sensor einwandfrei funktioniert.

Abb 1: RFID Schaltplan1

Im Programm wird zunächst überprüft, ob ein neuer RFID-Tag erkannt wird. Erkennt der RFID-Sensor einen neuen Tag, wird die Variable „ChipID” zurückgesetzt, um mögliche IDs aus vorherigen Erkennungen zu löschen.
Folgend wird die ID des neu ausgelesenen Tags in „ChipID” gespeichert und zur Erkennung in der Konsole ausgegeben.

 /* Nutzt RFID Sensor, um neu gelesenen Chip mit angegebener ChipID zu vergleichen.
   * Wenn der passende Chip gelesen wird, wird true zurueckgegeben, sonst false.
 */
  boolean RFIDDetected(){
    if (mfrc522.PICC_IsNewCardPresent()){
       //ChipID wird resettet
       chipID = 0;
       mfrc522.PICC_ReadCardSerial();
       
       // Neue ChipID in Variable laden
       for (byte i = 0; i < mfrc522.uid.size; i++){
         chipID=((chipID+mfrc522.uid.uidByte[i])*10);
       }
       Serial.println(chipID);


Nach dem Auslesen der ID wird diese mit einem, im Programmkopf festgelegten, Array „grantedChipIDs” verglichen. Dieses Array enthält alle IDs, die dazu berechtigt sein sollen, die Tür des Briefkasten zu öffnen.
Ist die neu ausgelesene „ChipID” in dem Array enthalten, wird der boolescher Wert „grant” auf „true” gesetzt.

 //gelesene ChipID mit allen erlaubten ChipIDs vergleichen
       boolean grant = false;
       for(int i = 0; i < sizeof(grantedChipIDs); i++){
         long tempChipID = grantedChipIDs[i];
         if(chipID == tempChipID){
           grant = true;
         }
       }

Im weiteren Verlauf wird „grant” genutzt, um als Rückgabevariable ein „true” oder „false” zurückzugeben. Ebenfalls wird in der Konsole eine Information zur Zulassung des Tags geschrieben.
Wird kein Chip erkannt, wird dies ebenfalls auf der Konsole wiedergegeben und der Wert „false” zurückgegeben.

//Je nach Ergebnis des Vergleichs wird true oder false zurueckgegeben
       if (grant){
         Serial.println("Zugang gewaehrt!");
         return true;
       } else {
         Serial.println("Chip hat keine Zugangsrechte!");
         return false;
       }
    } else {
      Serial.println("keinen Chip erkannt");
      return false;
    }
  }

In Abb.2 ist die Konsolenausgabe nach dem Erkennen eines zugelassenen Tags zu sehen.

Abb. 2: Konsole nach Erkennung eines zugelassenen Tags

1 MFRC522 RFID Reader am ESP8266 D1 Mini, 08.21.2020 makesmart.net/mfrc522-rfid-reader-esp8266-d1-mini/

3D-Druck (Drucker und Software)

Abb.1: 3D Drucker “Elegoo Mars 2”1
Abb.2: 3D-Drucksoftware “Chitubox” I
Abb.3: 3D-Drucksoftware “Chitubox” II
Abb.4: 3D-Drucksoftware “Chitubox” III

3D-Druck der Säulen

Die Säulen wurden mit einem Elegoo Mars 2 (siehe Abb.1) gedruckt. Dieser arbeitet mit flüssigem Resin, welches durch gezielte UV-Lichteinstrahlung aushärtet und somit präziser ist als ein Filament-Drucker. Das fertige 3D-Modell muss hierfür zuvor über die Software “Chitubox” gesliced werden. Ein Modell kann in der Software über das Symbol der drei Balken über “Open Project” geöffnet werden (siehe Abb.2). Die ausgewählten Modelle können über “Move” -> “Put on the plate” auf den Boden zentriert werden (siehe Abb.3). Vor dem Druck muss dann noch der 3D-Drucker ausgewählt werden (siehe Abb.4) und über “Slice” wird das Modell dann finalisiert und ist druckbereit.

Abb.5: 3D-Drucker “Dremel Digilab 3D45”2
Abb.6: 3D-Drucksoftware “Dremel DigiLab 3D Slicer” I
Abb.7: 3D-Drucksoftware “Dremel DigiLab 3D Slicer” II

3D-Druck der Schräge

Die Schräge wurde mit einem Dremel Digilab 3D45 (siehe Abb.5) gedruckt. Dieser arbeitet mit 3D-Druck Filament, welches stabiler ist, als der Resin-Druck. Über den Reiter “Move” -> Z = 0 (siehe Abb.6) kann ein bereits geöffnetes Modell in der “Dremel DigiLab 3D Slicer” Software auf den Boden fixiert werden. Über “Infill” (siehe Abb.7) lässt sich die Füllstärke einstellen, bei der Schräge wurde ein Infill von 50% verwendet, damit diese stabiler ist. Über “Prepare” (siehe Abb.7) wird das Modell fertiggestellt und ist danach druckbereit.


1 Elegoo “Elegoo Mars 2” 2019 ELEGOO Mars 2 Mono LCD MSLA Resin 3D Printer – ELEGOO Official

2 Dremel “Dremel Digilab 3D45” 11.2019 DREMEL® DigiLab 3D45 3D-Drucker Drucker | Dremel

Modellierung Teil 5: Die Säulen

Vorstehend befindet sich Abb.1, welche das Modell der einzelnen Teile der Säule abbildet.

Abb.2: Modell zusammengesetzte Säule

In dem smarten Briefkasten sind jeweils zwei dieser Säulen verbaut (siehe Abb.2). Die Gesamthöhe pro Säule beträgt jeweils 330,5 mm. Der Durchmesser pro Säule beträgt 10 mm. Jede Säule hat eine Aussparung, welche 255 mm hoch und 3 mm breit ist. Die Aussparung ragt 4,77 mm in die Säule hinein. In diesen Aussparungen werden Plexiglasscheiben fixiert. Die obere Seite der Säule enthält einen Pin, welche die Säule mit dem Kugellager verbindet. Die untere Seite hat eine Vorrichtung für die Fixierung der Motoren. Die Säule wird mit einem 3D-Drucker gedruckt, da dies einfacher und präziser ist als andere Methoden.

Abb.3: Bemaßung der Säulen
Abb.4: Bemaßung der Motoren
Abb.5: Bemaßung Kugellager1

In Abb.3 werden die drei Elemente der Säule abgebildet. Das Element links oben stellt hierbei den unteren Teil der Säule dar. Dieser hat eine Höhe von 110.47 mm und hat eine Aussparung (siehe Abb.3 unten links) für den Rotor des Gleichstrommotors (siehe Abb.4), damit eine Kraftübertragung mit möglichst wenig Verlust stattfinden kann. In der Mitte ist der mittlere Teil der Säule dargestellt, welcher eine Höhe von 110.67 mm hat. Darunter ist der Querschnitt der Fläche mit der Aussparung für die Plexiglasscheiben. Das Element rechts oben stellt den Pin für die Verbindung zum Kugellager (sieh Abb.5) dar. Das Element rechts unten ist der obere Teil der Säule und hat eine Höhe von 116.17 mm.


1 LIUJZZJ/Amazon “JZZJ 608 ZZ Skateboard Kugellager” 10.2019 61-5Q68ZyyL._SL1024_.jpg (1024×1024) (media-amazon.com)

Modellierung Teil 3: Der Unterkasten

Vorstehend befindet sich die Abb.1, welche das Modell des Unterkastens abbildet.

Das Modell für den Unterkasten (siehe Abb.1) wurde mit der Software “Fusion 360” erstellt.

Der Unterkasten dient primär dazu, die Elektronik zu verstauen. Auf der Vorderseite sind Aussparungen für einen Taster und einen RFIP-Sensor. Auf der Oberseite befinden sind Aussparungen für die Motoren, Kabel für den Abstandssensor sowie für einen Verbindungsbolzen (4mmx4mmx8mm) für die Verbindung der beiden Oberplatten. Die Oberplatte wurde hierbei so entworfen, dass diese abnehmbar ist. Dadurch können Arbeiten an der Elektronik verrichtet werden. Auf der Rückseite befindet sich ein Loch für die Stromzufuhr. Die einzelnen Platten werden über eine Steckvorrichtung miteinander verbunden. Die Platten bestehen hierbei aus einem 4mm dicken Sperrholz. Der Unterkasten hat eine Länge und Breite von 290 mm und eine Höhe von 100 mm.

Abb.2: Modell vom Deckel
Abb.3: Bemaßung vom Deckel
Abb.4: Bemaßung der Motoren1

Der Deckel (siehe Abb.2) besteht aus zwei Platten, welche mit Hilfe des Bolzens verbunden werden. Die größere Platte hat hierbei eine Kantenlänge von 290 mm. Die kleinere Platte hat eine Kantenlänge von 282 mm. Bei der Modellierung des Deckels (siehe Abb.3) war zu beachten, dass bei einem dünnen Material der Abstand zwischen der Bohrung für die Motoren und den Außenkanten nicht zu hoch sein sollte, da das Material sonst brechen könnte. Die Bohrungen müssen hierbei einen Durchmesser von 37 mm für die Motoren haben (siehe Abb.4). Die Aussparung für die Kabel, welche sich zwischen den Bohrungen befinden, wurde von der oberen Box übernommen, damit diese besser übereinanderliegen können.

Abb.5: Modell vom Unterkasten ohne Deckel
Abb.6: Bemaßung der Bodenplatte

Bei der Bodenplatte sind die einzelnen und gegenüberliegenden Seiten symmetrisch gestaltet (siehe Abb.6), weshalb nur je eine Hälfte der Seite bemaßt wurde. Es befinden sich Aussparungen für die Motorhalterungen (siehe Abb.7) auf einer Seite der Bodenplatte, sodass diese besser fixiert werden können.

Abb.7: Bemaßung der Motorhalterung

In Abb.7 ist die zuvor erwähnte Motorhalterung bemaßt. Diese wird wieder mit einem Stecksystem verbunden. Der Durchmesser der Bohrung ist hierbei auf den unteren Durchmesser des Motors (Abb.4) abgestimmt, sodass dieser ohne weitere Fixierungsmaßnahmen den eingehängten Motor hält. Die Halterung ist dabei 53 mm lang, 45 mm breit und 92 mm hoch. Sie ist mithilfe der Pins an der Bodenplatte (Abb.6) fixiert. Die Höhe ist hierbei darauf ausgelegt, dass die Halterungen nochmal von dem Deckel stabilisiert wird, damit die Bewegungsenergie der Motoren die Halterungen nicht verformt.

Abb.8: Bemaßung der Seitenwände
Abb.9: Bemaßung des RFID-Sensors2

Die Abb.8 stellt die Bemaßung der Seitenwände dar, wobei das linkste Element die Vorderseite, das mittlere Element die beiden Seiten und das rechteste Element die Rückseite abbilden. Die Vorderseite ist 96 mm breit und eine Höhelänge von 290 mm. Sie beinhaltet eine Aussparung für den RFID-Sensor (siehe Abb.9), sodass dieser durch eine 2 mm Gravur des unteren Teils der Aussparung eingesetzt werden kann. Daneben befindet sich eine Aussparung für einen Standrad-Taster, welcher eine Länge und Breite von 6 mm besitzt.

Die Seitenwände haben die selben Grundmaßen wie die Vorder- und Rückseite (96mmx290mm). Die Rückseite beinhaltet eine Bohrung mit einem Durchmesser von 25 mm. Sie dient für die Stromversorgung und hat die selben Maßen für die Steckvorrichtung wie die Vorderseite.


1 Neuhold Elektronik “PGM-37DC12/21 Dimensions” 07.2011 N8725.indd (neuhold-elektronik.at)

2 Components101 “2D model of RC522 RFID module” 07.2015 RC522 RFID Module Pinout, Features, Specs & How to Use It (components101.com

Entwicklungsblog 7

Bei dem Andreas’ und Arthurs letzten Besuch im Makerspace wurden wir darauf hingewiesen, dass es zu Problemen kommen kann, wenn die Stromversorgung des Briefkastens abbricht, während er offen steht.
Da der Zustand der Tür bis zum diesem Zeitpunkt immer nur als Variable gespeichert wurde, wird dieser bei einem Neustart des Systems zurückgesetzt. In diesem Fall wäre es möglich die Tür nochmals zu öffnen, sodass sich die Tür überdreht.

Um das Problem zu lösen, haben wir die ESP_EEPROM Bibliothek genutzt. Sie ermöglicht es, Daten auf der Flash Memory zu speichern. Diese sind bei einem Systemneustart immer noch abrufbar.
So können wir den Stand der Tür immer wieder aufrufen und stellen sicher, dass die Tür nur einmal geöffnet oder geschlossen werden kann.

Mit dieser Ergänzung ist der Programmcode vollständig und wir müssen ihn nur noch bei unserem nächsten Treffen testen.

Entwicklungsblog 6

Nach der Session im Makerspace am Freitag (27.08.) haben wir bei der Unterbox bei den oberen platten zur Verbindung wie bei der Oberbox ebenfalls einen Quader in der Mitte zur Verbindung der beiden Platten eingefügt. Am Montag haben wir dann die noch fehlenden Platten und die Acrylglasscheiben mit dem Lasercutter ausgeschnitten und die Gravierung für die Vorderseite der Unterbox hinzugefügt. Bei dem 3D-Druck des Prismas ist leider beim Drucken das Filament ausgegangen, weshalb wir dieses ausgetauscht haben, damit der Druck fortgesetzt werden kann. Der Druck der Säulen hat leider nicht so gut funktioniert, weshalb wir diesen nochmal mit einem eigenen 3D-Drucker wiederholen, nachdem im Makerspace immer mehr von diesen ausfallen.

Update:

Der 3D-Druck der Säulen hat zwar nicht perfekt gepasst, konnte aber durch Nachbearbeitung passend gemacht werden. Ansonsten haben wir uns am 03.09 nochmal in der Uni getroffen, um den Kasten zusammenzuleimen. Trotz mancher Verformungen des Sperrholzes passen die Teile gut zusammen.

Es sind jedoch auch Probleme aufgetreten: Die Säulenstücke wollten nicht aneinanderhalten, weshalb diese über die Acrylglasscheiben fixiert wurden. Des Weiteren ist aufgefallen, dass trotz genauer Planung beide Kästen, insofern die Motoren eingebaut sind, nicht perfekt aufeinanderpassen, dies konnten wir zwar nicht beheben, stört aber auch nicht so sehr.

Modellierung Teil 1: Werkzeuge und Funktionen für die Modellierung

Für die Modellierung sind Andreas Mohr und Artur Scheling zuständig. Das Modell des smarten Briefkastens unterteilt sich in zwei grobe Bereiche: Der Ober- und der Unterkasten. Andreas Mohr ist für die Modellierung des unteren Kastens verantwortlich. Artur Scheling für den Oberen.

Für die Modellierung des smarten Briefkastens wurde das 3D-Programm Fusion 360 von Autodesk verwendet. In Fusion 360 kann für jedes Projekt ein Team erstellen. Andreas Mohr hat ein Team erstellt und hat Artur Scheling als Mitglied des Teams hinzugefügt. Der Vorteil resultiert daraus, dass man gemeinsam an den 3D-Modellen arbeiten kann.

Für die Modellierung des smarten Briefkastens wurden folgende Werkzeuge und Funktionen in Fusion 360 verwendet:

Eine Skizze erstellen.

Bei der Modellierung von Objekten fängt man generell mit einer Skizze an.

Abb.1: Funktionssymbol zu „Skizze erstellen”

Um eine Skizze erstellen zu können, geht man in Fusion 360 oben unter den Reiter „Volumenkörper“.
In Abb.1 sieht man einen Ausschnitt des Reiters. Dort befindet sich ganz links ein Quadratisches Symbol mit einem grünen Plus. Sobald man auf dieses Symbol klickt, wählt man eine Fläche oder Ebene aus. Dann gelangt man unter den Reiter „Skizze“ und ist somit im „Skizzen-Modus“.

Ein Punkt zeichnen.

Abb.2: Funktion Punkt in Fusion 360

Sobald man in dem „Skizzen-Modus“ ist, hat man verschiedene Möglichkeiten eine Skizze zu erstellen. Bevor man die eigentliche Form skizziert, sind gewisse Anhaltspunkte sehr hilfreich. Zum Skizzieren von Punkten geht man, wie in Abb.2 zu sehen, unter dem Dropdownmenü „ERSTELLEN“ auf die Funktion „Punkt“. Nun kann man Punkte in die Skizze hineinbringen.

Kreis und Rechteck über einen Mittelpunkt skizzieren.

Abb.3: Funktion ,,Mittelpunkt, Rechteck” im Dropdownmenü ,,ERSTELLEN”
Abb.4: Funktion ,,Mittelpunkt, Durchmesser, Kreis” im Reiter ,,Skizze”

Wie bereits erwähnt sind Punkte eine gute Hilfe, um die Formen entsprechen zu positionieren oder eventuell auch zu bemaßen. Unter demselben Dropdownmenü „ERSTELLEN“ findet man unter dem Punkt „Rechteck“ die Funktion „Mittelpunkt, Rechteck“ (siehe Abb.3). Unter dem Punkt „Kreis“ oder direkt unter dem Reiter „Skizze“ findet man die Funktion „Mittelpunkt, Durchmesser, Kreis“ (siehe Abb.4). Mithilfe eines Punktes kann man mit den beiden Funktionen ein Rechteck oder Kreis aus der Mitte herauszeichnen.

Rechteck mit zwei Punkten.

Abb.5: Funktion ,,Rechteck mit zwei Punkten” im Reiter ,,Skizze”

Man kann ein Rechteck auch über die Funktion „Rechteck mit zwei Punkten“ erstellen. Die Funktion ist unter demselben Punkt wie „Rechteck, Mittelpunkt“ oder als zweite Funktion von rechts unter dem Reiter „Skizze“ zu finden (siehe Abb.5). Man wählt nun diese Funktion aus und klickt in der Skizze auf eine entsprechende Stelle. Nun kann man die Maus in eine Richtung bewegen und es bildet sich ein größenfrei bewegendes Rechteck. Durch einen weiteren Mausklick hat man dann eine Rechteck eingezeichnet. In Abb.6 kann man die Funktion noch mal in Aktion sehen.

Abb.6: Beispielzeichnung mit der Funktion ,,Mittelpunkt, Rechteck”

Linie erstellen.

Abb.7: Funktion ,,Linie erstellen” im Reiter ,,Skizze”

Die Funktion „Linie“ ist gut geeignet, falls man gewisse Formen manuell selber zeichnen möchte oder extra Konstruktionslinien benötigt. Zu finden ist sie unter dem Reiter „Skizze“ ganz links oder in dem Dropdownmenü „ERSTELLEN“ unter dem Punkt „Linie“ (siehe Abb.7).

Skizzenbemaßungen

Abb.8: Bemaßung einer Kante eines Rechtecks

Man hat nun eine Form eingezeichnet. Als nächstes folgt die Bemaßung. In dem Reiter „Skizze“ unter dem Dropdownmenü „ERSTELLEN“ findet man ganz unten die Funktion „Skizzenbemaßungen“. Bei dieser Funktion wählt man jeweils eine Kante der Form aus. Die Maßeinheiten sind in den Standarteinstellungen auf Millimeter eingestellt. Es lassen sich nicht nur Kanten, sondern auch Abstände zwischen Kanten und Punkten bemaßen. In der Abb.8 sieht man beispielhaft wie eine Kante eines Rechtecks bemaßt wird.

Extrusion

Abb.9: Funktion ,,Extrusion” in dem Reiter ,,Volumenkörper”

Man hat nun eine Skizze erstellt und bemaßt und möchte einen Körper erstellen. Dies lässt mithilfe der Funktion „Extrusion“ realisieren. Sowie die Abb.9 zeigt, befindet sich die Funktion rechts neben der Funktion „Skizze erstellen“. Man wählt zuerst die Fläche aus, die man extrudieren möchte. Dann klickt man auf die Funktion „Extrusion“.

Abb.10: Extrusion einer Fläche

In Abb.10 sieht man die Funktion nochmal in Aktion. Rechts in Abb.10 ist ein Fenster zu sehen. Dort sind Einstellungen bezüglich der Extrusion vorhanden, die man gegebenenfalls verändern kann.

Objekte ausrichten, verschieben und kopieren.

In Fusion 360 kann man Baugruppen und einzelne Komponenten beliebig drehen, verschieben und kopieren.

Abb.11: Kopieren einer Box erstellen

In dem Reiter „Volumenkörper“ findet man unter dem Dropdownmenü „ÄNDERN“ die Funktion „Verschieben/Kopieren“. Alternativ kann man auf der Computer Tastatur den Buchstaben „m“ als Shortcut drücken. Man wählt dann die Komponente aus, die man verschieben, drehen oder kopieren möchte. Die Abb.11 ist ein Beispiel wie man eine Komponente kopiert. Wichtig ist dabei, dass ein Haken bei dem Punkt „Kopie erstellen“ in dem Fenster gesetzt ist. In der Abb.11 ist dies rechts mit einer roten Markierung zu sehen. Ebenso sieht man, dass sich die Komponente auch verschieben und drehen lässt. Dies kann man entweder über die Pfeile (blauer Pfeil in Abb.11) oder über den entsprechenden Punkten in dem Fenster tun (rechts in der Abb.11).

Ebenso so nützlich ist die Funktion „Ausrichten“. Sie befindet sich direkt unter dem Punkt „Verschieben/Kopieren“ in demselben Dropdownmenü. Die Funktion dient dazu, Komponenten an andere Komponenten auszurichten. Dazu wählt man zuerst die Fläche oder Kante der auszurichtenden Komponente. Dann wählt man die Fläche oder Kante der Komponente, nach der sich die auszurichtende Komponente richten soll. Anschließend klickt man auf den „OK“-Knopf des Fensters ganz rechts (siehe Abb.12). Es kann durch aus sein, dass sich die Komponente nicht direkt so anordnet, wie man es gerne hätte. Daher muss man die Funktion mehrmals hintereinander ausführen. Die Abb.12 zeigt die Funktion noch einmal in Aktion.

Abb.12: Deckel einer Box an die Box ausrichten

Parameter ändern.

Wenn man die Konstruktionen parametrisiert hat, kann man im Nachhinein die Parameter verändern. Man hat beispielsweise ein Rechteck gezeichnet und möchte im Nachhinein die Bemaßungen nochmal ändern. So kann man dies im Reiter „Volumenkörper“ unter dem Dropdownmenü „ÄNDERN“ tun (siehe Abb.13).

Abb.13: Funktion ,,Parameter ändern” in dem Dropdownmenü ,,ÄNDERN”

In dem Dropdownmenü findet man als vorletzten Punkt „Parameter ändern“. Nach dem Klicken auf diesen Punkt öffnet sich ein Fenster. Dort sind alle Parameter in den entsprechenden Untermenüs zu finden.

Motorsteuerung

Das Projekt enthält zwei Motoren, die die Türen des Briefkastens öffnen. Dabei handelt es sich um Gleichstrommotoren, die mit maximal 12 Volt betrieben werden können. Die Motoren haben zwei Anschlüsse für Plus und Minus. Je nachdem, wie man beide Anschlüsse polt, dreht sich der Motor links- oder rechtsherum. Da der Mikrocontroller nur 5 Volt abgeben kann, die Motoren aber um die 12 Volt brauchen, muss eine externe Stromquelle genutzt werden. Zudem sind fast alle Pins am Mikrocontroller besetzt, wenn die beiden Motoren, der RFID-Sensor und der Abstandsensor angeschlossen werden. Also wird das D1Z Motodriver D1 Shield benötigt (siehe Abb.1). Mit dem Motordriver kann man zwei Motoren ansteuern und eine externe Spannungsquelle verwenden. An den Pins „VM” und „GND” wird die externe Spannungsquelle angeschlossen. An den Pins „A1″, „A2″, „B1″ und „B2″ wird jeweils paarweise ein Motor angeschlossen. Als externe Spannungsquelle werden sechs AA-Batterien verwendet. Der Motordriver kann einfach auf den Mikrocontroller gesteckt werden.

Abb.1: D1Z Motodriver D1 Shield 1

Das Motorshield wird über eine Bibliothek2 gesteuert, die man manuell in der Arduino IDE installieren muss.

//Motor Library
#include "WEMOS_Motor.h"
//Motor shiled I2C Address: 0x30
//PWM frequency: 1000Hz(1kHz)
Motor M1(0x30,_MOTOR_A, 1000);//Motor A
Motor M2(0x30,_MOTOR_B, 1000);//Motor B
//Hilfsvariable damit sich Türen nicht überdrehen
boolean isOpen = false;

	//Oefnnet die Tueren des Briefkasten
	void openDoor(){
    //Abfrage damit Türen sich nicht überdrehen
    if(isOpen){
      return;
    }
    //Motoren drehen sich im Uhrzeigersinn mit Geschwindikeit SPEED
    M1.setmotor( _CW, SPEED);
    M2.setmotor(_CCW, SPEED);
    //Motoren drehen sich für 1500 ms
    delay(1500);
    //Motoren werden angehalten
    M1.setmotor(_STOP);
    M2.setmotor(_STOP);
    //Wird gesetzt damit sich Tuer wieder schliessen kann
    isOpen = true;
	}

	//Schliesst die Tueren des Briefkastens
	void closeDoor(){
     if(!isOpen){
      return;
     }
     M1.setmotor( _CCW, SPEED);
     M2.setmotor(_CW, SPEED);
     delay(1500);
     M1.setmotor(_STOP);
     M2.setmotor(_STOP);
     isOpen = false;
	}

Zuerst werden die beiden Motoren „M1″ und „M2″ definiert. Dazu ist eine Konstante für die Drehgeschwindigkeit und eine Hilfsvariable festgelegt. Die Hilfsvariable sorgt dafür, dass sich die Türen nicht überdrehen. In der Methode „openDoor” wird als Erstes überprüft, ob die Tür schon offen ist. Falls dies zutrifft passiert nichts. Sonst wird die Tür geöffnet. Ein Motor dreht sich im Uhrzeigersinn. Der Andere gegen den Uhrzeigersinn. Beide Motoren werden mit der Geschwindigkeit SPEED geöffnet und nach 1500 Millisekunden wieder angehalten. Nach dieser Zeit haben sich die Türen um ca. 90 Grad gedreht. Die Methode „closeDoor” funktioniert analog nur mit der entgegengesetzten Drehrichtung.

Die Schwierigkeit bei den Motoren war nicht der Programmcode an sich, sondern die technische Umsetzung. Gemeint ist das Finden der passenden Bibliothek, das Verschalten einer externen Stromquelle mit dem Mikrocontroller, die Funktionsweise des Motorshields und weiteres.


1 „D1Z Motodriver D1 Shield” https://www.reichelt.de/de/de/d1-shield-dual-motortreiber-tb6612fng-d1z-motodriver-p266073.html?r=1 (reichelt.de)

2 „WEMOS_Motor_Shield_Arduino_Library” 07.2016 https://github.com/wemos/WEMOS_Motor_Shield_Arduino_Library (Wemos)

Taster

Für den Briefkasten wird ein Taster benötigt, damit man nach ablegen eines Pakets wieder die Tür schließen kann.

Sobald der Taster gedrückt wird, soll an einem Pin des Mikrocontrollers ein „High”-Signal anliegen. Ansonsten liegt ein „Low”-Signal vor. Dies kann mit der Schaltung in Abb.1 realisiert werden.

Abb.1: Schaltung für den Taster

Wenn der Taster gedrückt wird, dann wird die Spannung von der Spannungsquelle zum Pin des Mikrocontrollers durchgelassen. Wenn der Taster nicht gedrückt wird, dann liegt, durch den Widerstand, am Pin ein „Low”-Signal an.

Der dafür benötigte Programmcode ist kurz.

void button(){
  taster = digitalRead(D0);
  if(taster == HIGH){
  closeDoor();
}

Zuerst wird das Signal am Pin, an dem der Taster angeschlossen ist (hier D0), ausgelesen und in der Variable „taster” gespeichert. Wenn die Variable „taster“ den Wert „HIGH” hat, dann wird die Methode „closeDoor()” ausgeführt, die in einem anderen Blogeintrag erläutert wird.

Anforderungskatalog

Der zu erstellende Briefkasten findet seine Anwendung in Treppenhäuser in Stadtwohnungen. Eine vorhandene Stromzufuhr und eine ausreichende Internetverbindung sind Voraussetzungen dafür. Der Briefkasten soll gewisse Anforderungen erfüllen. Diese Anforderungen sind Funktionen und Eigenschaften. Dabei unterteilen sich die Anforderungen in Soll- und Kann-Zielen. Bei den Soll-Zielen handelt es sich um Funktionen und Eigenschaften, die der fertige Briefkasten am Ende haben muss. Bei den Kann-Zielen hingegen handelt es sich nur um Anforderungen, die nur eventuell umgesetzt werden. Sie sind jedoch kein Muss.

Soll-Ziele

Der Briefkasten soll Türen beinhalten, die sich nach außen hin öffnen und wieder schließen können. Ebenso soll der Briefkasten einen RFID-Sensor und ein Tastschalter beinhalten. Sobald ein passender Chip oder eine passende Karte von dem RFID-Sensor erkannt wurde, sollen sich die Türen öffnen. Der Tastschalter soll an der Außenwand des Briefkastens befestigt sein, sodass sich bei einem Knopfdruck die Türen wieder schließen.

In den Briefkasten sollen mindestens kleine Pakete hineinpassen können. Zudem soll der Empfänger über das Smartphone benachrichtigt werden, sobald sich mindestens ein Paket in dem Briefkasten befindet.

Kann-Ziele

Zu den Soll-Zielen kann der Briefkasten um folgende Funktionen erweitert werden:

Der Briefkasten kann eine LED-Lampe und einen Summer beinhalten. Während sich die Türen öffnen, leuchtet die LED auf und der Summer gibt ein lautes akustisches Signal ab. Diese dienen als Warnsignale um möglichen Gefahren zu vermeiden. Zudem kann ein Warnschild an den Briefkasten angebracht werden. Das Warnschild weist daraufhin, dass sich die Türen nach außen hin öffnen. Die Anbringung eines Not-Aus-Schalters ist ebenso möglich. Bei nicht vorhergesehenen Situationen wird der Briefkasten von der Stromquelle getrennt, sodass Gefahren vorgebeugt werden können.