Was kann DoorBell32

Blitz

Es wird zu den Aufnahmen ein LED-Blitz ausgelöst. Dies kann abhängig von der Umgebungshelligkeit geschehen.

Log

Die Aufnahmen für Bewegung und/oder Klingeltasten-Betätigung werden gespeichert und können später beurteilt werden.

Bewegungserkennung

Über einen PIR-Sensor werden Bewegungen vor der Türstation erkannt. Bewegungen können Licht einschalten, Aufnahmen und/oder Benachrichtigungen auslösen.

Live

Live Bilder oder Streams können angesehen werden. Es können Aufnahmen für die Log-Funktion erstellt werden.

Sprachmitteilungen

Es können beliebig viele vordefinierte Sprachmitteilungen abgespielt werden.

Türöffner

Die wichtigste Funktion, die Tür öffnen. ist selbstverständlich auch vorhanden. Diese Funktion kann eigenständig oder in Kombination mit einer Sprachmitteilung genutzt werden

Dämmerungsschalter

Abhängig von dem Umgebungslicht können der Blitz oder der Lichtausgang gesteuert werden.

Lichtausgang

Wird es dunkel, kann ein Ausgang ein Umgebungslicht steuern. Dies kann auch abhängig von der Bewegungserkennung erfolgen.

Benachrichtigungen

Bei Bewegung oder dem betätigen des Klingeltasters kann eine Benachrichtigung erfolgen. Dies kann eine Push-Benachrichtigung sein oder einen "Gong" steuern.

Warum DoorBell32?

DoorBell32

DoorBell32 ist ein Selbstbau-Projekt und als soches ist man gefordert selber Hand anzulegen. Die Frage nach dem 'Warum' stelle ich mir bei jedem Projekt. Ich finde immer gute Argumente für das 'Selber Machen'. Nunja, ob es dann immer fair ist die Argumente dagegen zu ignorieren sei dahin gestellt ;-).

Aber es gibt wirklich Argumente dafür. Ich habe selbst seit vielen Jahren eine Türklingel mit Kamera und einer App. Bin ich zufrieden? Nein! Aus nicht nachvollziehbaren Gründen funktioniert es nicht. Meine Daten und Video-Streams werden in das Land der aufgehenden Sonne gesendet. Die App's sind so veraltet das sie schon seit Jahren nicht mehr in den App-Stores zu finden sind. Auf neuen oder zeitgemäßen Geräten ist die Software nicht mehr funktionsfähig. Warum auch? Das Gerät ist verkauft!

Und was ist dann an einem solchen Projekt besser? Der 'Selbermacher' kann über den Umfang, die Leistungen und die Funktionstüchtigkeit selber entscheiden. Geht etwas nicht, dann kann man selber den Fehler erkennen und beheben.

Ich merke schon wieder das ich zu sehr in die Argumentation für das Projekt abgleite :-) .

Was ist nun anders? Ich bin nicht mehr abhängig von externen Diensten. Bei einer käuflich zu erwerbenden Türstation ist es wichtig das der Nutzer sie sofort in Betrieb nehmen kann. Aus diesem Grund werden die Daten zu zentralen Servern übertragen und können von diesen dann abgerufen werden. Nun ist man aber davon abhängig dass der zentrale Dienst funktioniert und noch weiter betrieben wird. Es ist oft schwer nachzuvollziehen wie Daten übermittelt werden. Nehmen wir doch an, wir haben eine App mit einer Türstation. Ich möchte nun eine Einstellung in der Türstation ändern. Dazu wird ein Server kontaktiert. Dieser verbindet sich mit der Türstation. Die Daten der Türstation werden nun von diesem Server abgefragt und an die App übermittelt. Oops, natürlich muß mein Passwort übermittelt werden damit ich überhaupt Einstellungen vornehmen darf. Und warum kann ein externer Server meine Türstation sagen das sie die Daten übermitteln soll?

Will man auf alle Abhängigkeiten verzichten, ist ein Zugriff über das Internet (wenn ich unterwegs bin) nicht oder nur mit sehr großem Aufwand möglich. Allein das Betreiben eines Push-Dienstes ist mit großem Aufwand verbunden.

Auf die Frage nach dem 'Warum' gibt es nur eine wirkliche Antwort: Weil ich es kann ;-)

Die Anforderungen an die Hardware und die Auswahl der Hardware

DoorBell32

Anforderung

Die Türstation soll per Browser oder App steuerbar sein. Ich möchte ein Bild des Besuchers sehen können. Bewegungen sollen erkannt werden. Ist es dunkel, soll eine LED-Beleuchtung aktiviert werden können. Wenn möglich nur, wenn eine Bewegung erkannt wurde. Als Rückmeldung für den Besucher soll beim betätigen des Klingeltasters ein akustisches und/oder optisches Signal erfolgen. Wünschenswert wäre auch eine direkte Sprachverbindung zur Türstation. Diese Anforderung wurde aber aufgrund des damit verbundenen Aufwandes nicht verwirklicht.


Kamera (2)

Als Kamera wurde das Modul ESP32-Cam gewählt. Es ist zu einem sehr günstigen Preis bei sehr vielen Händlern erhältlich. Es hat bereits einen 'Blitz', eine LED verbaut. Man kann eine SD-Card einstecken, ideal als Speicher für die Aufnahmen. Ohne zusätzlichen Aufwand ist eine Verbindung über WLAN herzustellen.


Bewegungserkennung (4)

Als Bewegungssensor wurde ein PIR-Sensor ausgewählt. Hierfür gibt es kleine Module die eine nicht zu große Reichweite haben. In diesem Fall ein Vorteil da nur Bewegungen im Umkreis von ein paar Metern wahrgenommen werden.


Sprachausgabe (6)

Die Sprachausgabe ist hier nicht ganz richtig definiert. Es soll nicht nur Sprache sondern auch Töne ausgegeben werden. Die akustische Rückmeldung beim Betätigen des Klingetasters soll auch über dieses Modul erfolgen. Die Ausgabe soll in einer ansprechenden Qualität erfolgen. Um diese Bedingungen erfüllen zu können, ist ein Verstärker von Nöten. Bei der Auswahl der Komponenten hat sich das Modul 'DFPlayer Mini' angeboten. Dieser hat eine eigene SD-Karte um Sprach- und Ton-Ausgaben in hoher Qulität zu ermöglichen. Der integrierte Verstärker vereinfacht den Aufbau. Die Steuerung über die serielle Leitung ist einfach zu realisieren.


Ausgänge, Eingänge und Umgebungslicht (1)

Die Anzahl der verfügbaren IO's beim ESP32-Cam-Modul sind sehr begrenzt. Genau genommen steht kein IO ungenutzt zur Verfügung wenn die SD-Card verwendet wird. Die SD-Card kann jedoch auch mit einem Bit angesteuert werden (statt 4 Bit). In diesem Fall kann der Blitz verwendet werden, und man kann noch auf 2 IO-Leitung zurückgreifen. Hier bietet sich eine serielle Übertragung zu einem Erweiterungsmodul an. Das kann aber nur eine Software-Serielle sein. Wesentlich fehlertoleranter ist ein One-Wire-Bus. Hier würde sich der Baustein DS2408 anbieten. Dieser Baustein ist jedoch nur schwer erhältlich und kostet in Relation zum ESP32 ein Vermögen. Auch wäre der analoge Eingang für das Umgebungslicht nicht realisierbar. Mit einem ATtiny44 oder ATtiny84 läßt sich jedoch die Funktionalität des DS2408 nachbilden und zusätzlich einen analogen Eingang bereitstellen. Und genau das ist hier realisiert.


Türöffner

Der Türöffner wird durch ein Relais betätigt, der wiederum durch einen Ausgang des attiny84 gesteuert wird. Hier wurde eine Trennung der Spannung durch das Relais verwirklicht, denn oft werden die Öffnermagnete mit einer Wechselspannung oder einer höheren Gleichspannung angesteuert.


Klingeltaster (5)

Hier dauerte die Auswahl am längsten. Der Taster soll (halbwegs) wasserdicht sein. Er soll aber etwas besonderes sein. Er soll nicht zu viel Platz einnehmen. Es soll eine LED integriert sein. Die verfügbaren Taster waren alle zu groß. Das Gehäuse wäre erheblich größer geworden. Ich habe mich dann für einen Taster entschieden den ich mit meinem 3D-Drucker selber erstellen kann. Zwei SMD-Kurzhubtaster, parallel, nehmen den Tastendruck auf. Hinter dem Taster, aus transparentem PLA gedruckt, sind viele LED's (0603) angeordnet um eine gleichmäßige Ausleuchtung zu ermöglichen. Ich habe im Taster eine geätze Messingplatte mit dem Familiennamen eingelassen und mit Epoxyd abgedeckt. Dadurch ist der Name hinterleuchtet und gut zu sehen.


Blitz (3)

Der soll es ermöglichen auch bei Dämmerung oder Dunkelheit erkennbare Aufnahmen zu machen. Das ist kein 'must have', aber ein netter Zusatz. Besser wäre wenn die Kamera lichtstärker wäre, in diesem Fall muß aber das genommen werden was da ist.


Lichtausgang

Der Lichtausgang soll eine 12V LED-Beleuchtung steuern. Dafür wird ein Mosfet angesteuert und 0-schaltend auf eine Klemme geleitet. Der Pluspol der 12V LED-Lampe mit +12V verbinden, der Minuspol an den Steuerausgang anschließen.


Stromversorgung

Die ganze Schaltung soll mit 12V betrieben werden. Hierzu ist ein Spannungswandler nötig der die 12V zu den 5V des ESP32-Cam-Moduls reduziert. Die erste Version der Schaltung hatte einen fertigen DC-DC-Wandler verwendet. Ich habe nachfolgend darauf verzichtet, da sowieso eine Platine erstellt werden muß und ich so einen DC-DC-Wandler mit integrieren kann.

Ich will es selber machen

DoorBell32

Alle verwendeten Komponenten sollten verfügbar sein. Manchmal möchte man es aber dennoch anders lösen weil einfach einige Teile bereits in der Bastelkiste vorhanden sind.

Für die Stromversorgung läßt sich ein einfacher DC-DC-Wandler verwenden. Er sollte ca. 800mA Strom bei 5V Ausgangsspannung liefern können. Der hohe Strom ist nicht wirklich nötig. Jedoch sorgen Stromspitzen des ESP32-Cam-Moduls dazu das das System Instabil wird.

Der attiny84 ist auch als DIL-Version erhältlich. Somit läßt sich die Schaltung auch auf einer Lochraster-Platine aufbauen. Auch für das 'Vogelfutter' sind 'Thru Hole' (bedrahtete) Versionen leicht zu beziehen.

Die Sprachausgabe läßt sich eventuell durch einen DA-Ausgang oder PWM des ESP32 erledigen. Hier muß man sich aber mit einer reduzierten Qualität abfinden. Ob sich das dann lohnt?

Als Lautsprecher wurde eine wasserresistente Version (wegen Kunstoffmembrane) verwendet. Ich gestehe das dieses Bauteil aus meiner Bastelkiste ist. Aber aktuell sind ähnliche Lautsprecher bei Pollin.de für 30-50 Cent zu erstehen. Der von mir verwendete Lautsprecher wurde bei Pollin.de zu einer anderen Bestellung dazu bestellt ... sowas kann man ja immer einmal gebrauchen ;-).

Wann geht es los?

Jetzt!

Alle Daten (Schaltpläne, Layouts, Software, STL) sind unten zum Download verlinkt.

Zum Erstellen habe ich verwendet:
Belichter (PCB),
Bohrmaschiene (PCB),
3D-Drucker (Gehäuse und Taster),
Portalfräse (Frontplatte kann aber auch 3D-gedruckt werden),
Lötkolben (PCB),
Durchhaltevermögen,
Geduld.

DoorBell32

Das Gehäuse

Gehäuse oben: Gehäuse unten: Front: Taster: Dichtung: Fenster Licht: Fenster Blitz:

Allgemein

Alle Teile habe ich mit einer Layerhöhe von 0,15mm und einer Düse mit 0,4mm gedruckt.


Gehäuse oben

Der obere Teil des Gehäuse habe ich in PLA gedruckt. Bei diesem Druck habe ich die Stützstruktur aktiviert um die Tasche für den Taster drucken zu können.

In diesem Teil werden 8 Mal Gewindeeinsätze M3 mit den üblichen Methoden (Lötkolben) eingeschweißt. Je ein Gewindeeinsatz auf Ober- und Unter-Seite der 4 Bohrungen.


Gehäuse unten

Auch diese Teil habe ich aus PLA gefertigt. Eine Stützstruktur ist nicht nötig. Auf der Rückseite sind zwei Löcher. Eines davon für die LED, das andere um mit einem Stift auf einen Taster drücken zu können. Das Loch für die LED habe ich mit einm UV-Kleber geschlossen. Da der UV-Kleber transparent ist, scheint die LED hier gut durch. Das Loch für den Taster kann mit einem Stückchen Gummiband verschlossen werden. Wird das Loch benötigt, kann man das Band herausziehen.


Front

Ich finde es edler wenn hier ALU verwendet wird. Aus diesem Grund habe ich die Front auf meiner Portalfräse hergestellt. Für die ersten Versuche hab ich die Front auch auf dem 3D-Drucker hergestellt... was soll ich sagen, auch diese haben nicht übel ausgesehen, sind also wirklich eine Alternative.


Taster

Der Taster ist auch aus PLA (transparent) gefertigt. Allerdings gibt es hier eine Besonderheit. Zuerst wird weißes PLA eingespannt. Nach den ersten zwei Lagen wird dann erst das transparente PLA eingespannt. Die ersten zwei Schichten dienen als Streuscheibe für die LED's. Wer keine LED's verwenden möchte, kann hier auch einfach den Taster in der gewünschten Farbe drucken.

Der Taster hat oben eine kleine Aushöhlung. In dieser kann eine Beschriftung eingelegt werden und mit Epoxyd vergossen werden. Das gibt eine schöne Oberfläche und ein angenehmes Gefühl beim betätigen des Tasters. Ich habe hier ein Messingblech (0,1mm) eingesetzt das ich vorher geätzt habe um die LED hier durchscheinen zu lassen.


Dichtung

Die Dichtung habe ich aus TPU (Soft) gedruckt. Wer noch keine Erfahrungen mit TPU hat, sollte hier auf den Druck verzichten. Für den Druck von TPU wird ein Extruder benötigt der auch das weiche Material zuverlässig transportieren kann ohne das dieses sich um die Antriebe wickelt. Hier kann alternativ das Abdichten mit ein paar Tropfen Bau-Silikon erfolgen.


Fenster Licht

Das Fenster wurde von mir mit transparentem PLA gedruckt. Alternativ kann auch etwas Plexiglas verwendet werden.


Fenster Blitz

Das Fenster wurde von mir mit transparentem PLA gedruckt. Alternativ kann auch etwas Plexiglas verwendet werden.


Fenster Kamera

Das ist kein Teil das ich gedruckt habe.Ich führe es hier dennoch auf, da es irgendwie zum Gehäuse gehört. Hierzu habe ich ein Uhrenglas mit 22,5mm Durchmesser und 1mm Stärke verwendet. Diese Uhrengläser sind relativ günstig auf Ebay zu erstehen. Wer keine Uhrengläser verwenden will, kann auch einen Objektträger verwenden und diesen rechteckig zuschneiden.


Abdichten

Abhängig vom Montageort muß hier mehr oder weniger Aufwand betrieben werden. Den Lautsprecher habe ich von hinten verklebt. Um die Durchbrüche am Gehäuse habe ich etwas Silikon verwendet. Bei mir ist das ausreichend weil das Gehäuse selber nicht der Witterung ausgesetzt ist.

PCB für IO und Versorgung

DoorBell32
DoorBell32

Auf den Bildern kann man die Platine von Oben und Unten sehen. Für die Verdrahtung habe ich Steckverbinder verwendet. Bei der Entwicklung ist das auch nötig. Wer will, kann beim Nachbau auf diese Steckverbinder verzichten und die Kabel direkt einlöten.

Die Platine ist einseitig ausgeführt um einen Nachbau zu vereinfachen. Die Programmierung erfolgt über den Stecker K6. Dieser ist auch als SMD-Verbinder ausgeführt. Die verwendete FPC-Buchse ist bei mir für die Tiny-Serie in der Zwischenzeit Standard. Da die Programmierung nur einmalig erfolgt, können statt der Buchse auch Kabel angelötet werden die nach der Programmierung entfernt werden.


Bohrungen

Der Schaltplan und die Platine wurden mit der Software Target3001 erstellt. Auch die Dateien mit dem Layout können herunter geladen werden. Will man diese verwenden, muß beachtet werden dass die Bohrdurchmesser nicht den realen Durchmessern entsprechen. Diese müssen dann angepaßt werden. Zum selber Herstellen einer Platine ist es einfach wenn der Bohrer beim Bohren das Zentrum leichter findet. Darum wird mit einem kleineren Durchmessern auf den Filmen gearbeitet. Ein professioneller Hersteller benötigt solche Hilfen nicht, er muß den realen Durchmesser kennen.


Montage

Die Platine wird in das Gehäuse mit zwei Schrauben 1,7mm X 5mm verschraubt. In der Platine sind bei den Bohrungen für die Montage 2mm Bohrungen ausreichend.


Brücken

Auf der Platine sind 3 Brücken (Oberseite rote Leitungen) zu verlöten. Durch den Einsatz der Brücken konnte ich auf eine zweilagige Platine verzichten. Brücken sollten immer zuerst bei der Bestückung der diskreten Bauteile bestückt werden. Dann werden sie nicht vergessen wenn sie durch andere Bauteile verdeckt sind.

DoorBell32
DoorBell32
DoorBell32
DoorBell32

Stückliste

C16 330uF/35V Low ESR *1

C15 220uF/10V Low ESR *1

C5,C6,C9 10uF/25V 1206

C10 330pF 0805

C2,C3,C4,C8 10uF/10V 0805

C7,C11,C14 22uF/6V 0805

C1,C12,C13 100nF 0805

IC1 Attiny 84 SO14

IC2 MC34063 SO8

T1,T2,T3,T4 IRLML2402 besser IRLML0030 oder IRLML0040

R5 3K3 0805

R4,R6 10K 0805

R10 11K 0805

R11 1K 0805

R15,R18 2K2 0805

R3 470R 0805

R2,R7,R8 1R 0805

R1,R12,R13,R14,R16 1K5 0805

K6 FPC 6Pol 1mm

S1 Kurzhubtaster SMD

D1 LED 0805

D2 TS4148 0805

D3 SS14 0805 *3

D4 SMD ZD 3,6 SOT-23

RE1 Relay 12V *2

R9 LDR (5mm)

K5,K8 Schraubklemmen (2x3pol, 1x2pol)

L1 47uH 242408-FPS

X3 2x 8Pol Buchsenleiste für ESP32-Cam

X4 DFPlayer


Anmerkungen

Die meisten Bauteile lassen sich über Reichelt beziehen.

*1) Die Kondensatoren C15 und C16 haben andere Werte im Schaltplan, in der Stückliste und auf dem Foto. Ich habe hier verwendet was ich in meiner Bastelkiste hatte. Die Werte sind nicht so kritisch das man hier so genau sein muß. Sie sollten aber Low ESR haben.

*2) Für das Relay wurde ein übliches Relay verwendet (auch aus der Bastelkise) die zu Hauf für den Arduino eingesetzt werden.

*3) Für diese Diode kann eine Schottky-Diode eingesetzt werden mit mindestens 1A 30V


In Betrieb nehmen

Ist die Platine fertig bestückt, sollte eine optische Kontrolle erfolgen. Bei Schaltungen mit Versorungsspannung verwende ich immer eine regelbare Stromversorgung. Ich stelle den Maximalstrom auf ein paar mA ein und regle dann langsam die Spannung hoch bis zur geringsten Versorgungsspannung der Komponenten. Hierdurch ist ein Kurzschluss ohne Folgeschäden sehr leicht zu erkennen. Ist soweit alles OK, kann ich die Spannung nach den Spannungsreglern prüfen ob diese vorhanden sind. In diesem Fall die 5V am Attiny. Hier muß die Spannung noch nicht gleich vorhanden sein, sollte sich aber den 5V nähern wenn ich langsam die Eingangspannung der Schaltung erhöhe. Bei irgend welchen Abweichungen davon, wieder optisch Kontrolle und eventuell die Verbindung der Bauteile messen. Solange wiederholen bis alles funktioniert.

PCB Taster

DoorBell32
DoorBell32
DoorBell32

Stückliste

S1-S2 Kurzhubtaster SMD

R1 470R 0805

D1-D12 LED 0603


Anmerkungen

Die meisten Bauteile lassen sich über Reichelt beziehen.

Der Widerstand R1 kann abhängig von der Anzahl der bestückten LED'S, deren Farbe und deren Leuchtkraft unterschiedlich sein. Die Farbe ist insoweit entscheidend weil die unterschiedliche Farben durch unterschiedliche Materialen erzeugt werden. Daraus ergeben sich unterschiedliche Spannungen die an den LED's abfallen.

Es können 3, 6, 9 oder 12 LED's bestückt werden. Stehen keine 0603 LED's zur Verfügung, können auch 0805 bestückt werden.

Bauteile besonderes

DoorBell32
Bei dem verwendetem PIR-Sensor handelt es sich um dieses Modell. Für die Montage wird die Fresnel-Linse abgezogen (die weiße Kappe). Diese kann dann in das Gehäuse eingesteckt werden und den Sensor von Innen wieder auf die Linse aufgesteckt werden.

DoorBell32
Wie bereits beschrieben, kann ein ähnlicher Lautsprecher bei Pollin bezogen werden. Der Durchmesser beträgt 36mm. Meine ersten Versuche mit diesem Lautsprecher waren sehr ernüchternd. Zu leise und schlecht verständlich. Als der Lautsprecher jedoch einen Resonanzkörper erhalten hatte, hat er gezeigt was er kann. Eine klare, laute und sehr gut verständliche Ausgabe der Sprachmitteilungen und des Klingeltons.

DoorBell32
Hier kann man das Uhrenglas mit 22,5mm sehen.

DoorBell32 DoorBell32
Etwas was ich bisher nicht erwähnt hatte. Das Modul ESP32-Cam läßt sich mit einer externen Antenne ausstatten. Als ich noch die Kunstoff-Front verwendet hatte, war der WLAN-Empfang akzeptabel. Kaum hatte ich die ALU-Front verwendet hat sich das verschlechtert. Um dem entgegen zu wirken, habe ich eine externe Antenne eingesetzt. Wichtig dabei ist, das auf dem Modul ESP32-Cam ein Bauteil umgelötet werden muß. Der auf dem Bild zu sehende Widerstand (oder ist es ein Kondensator?) muß entfernt werden und nach oben eingelötet werden.

Verdrahtung

DoorBell32

Montage

DoorBell32
Durch die Gewindeeinsätze (1) kann das Gehäuse an die Front geschraubt werden. Hierzu sind Senkkopfschrauben M3 x 6 nötig. Die Platine für den Taster (2) wird in die Aussparung geklebt. Hier ist es einfacher wenn die Drähte vor dem einkleben angelötet werden. Das Uhrenglas (3) habe ich in die Front nur gelegt. Etwas Silikon um die Öffnung für die Kamera dichtet das dann nach der Frontplattenmontage ab und hält das Uhrenglas in Position. Der Tasterknopf (4) (hier gut die ersten Lagen mit weißem PLA zu erkennen) wird nur in die Front gelegt. Die Fenster aus transparentem PLA (5 und 6) können auch einfach eingelegt werden und, wie beim Uhrenglas, mit etwas Silikon auf dem Gehäuse fixiert werden.

DoorBell32
Auch auf dieser Seite müssen die Gewindeeinsätze (1) eingeschmolzen werden. Der Lautsprecher (2) ist von innen verklebt. Der LDR (3) wird mit den Kabel verlötet und dann in die Öffnung eingeklebt. Beim PIR-Sensor (4) wird die Fresnel-Linse abgenommen, von außen eingesteckt und der Sensor mit der Platine, von innen, wieder auf die Fresnel-Linse aufgesteckt. Hier ist es von Vorteil wenn vor dem anbringen des PIR-Sensors die Kabel bereits angelötet sind. Ich habe hierzu die Stiftleiste demontiert.

DoorBell32
Beim unteren Gehäuseteil ist nicht viel Monatge nötig. Die Platine, die bereits programmiert wurde, wird mit zwei Schrauben 1,7 X 5 mm eingeschraubt. Es sollten alle Kabel bereits vor der Montage angelötet sein. Das ESP32-Cam-Modul (1) wird, bereits programmiert, in die Buchsenleisten eingesteckt. Hier nun, wenn noch nicht geschehen, eine FAT-32 formatierte SD-Karte einstecken. Auf dieser werden die Bilder gespeichert. Auf dem Bild ist auch die Antenne (2) zu sehen die vor dem Einstecken des ESP32-Moduls im Modul eingesteckt wurde. Vor dem Montieren der Platine auch die FAT-32 formatierte SD-Karte in den DFPlayer (3) einstecken. Auf dieser SD-Karte befinden sich die Spachmitteilungen die später über die Software ausgewählt werden können. Am rechten Rand des Gehäuses ist auch die Dichtung aus TPU (gelb) zu erkennen die den Kabeleinlass abdichten soll.

Firmware und Sprache

Die Firmware für den ESP32 und den Attiny wurden mit 'Visual Studio Code' geschrieben. Der Attiny und der ESP32 lassen sich direkt aus dieser IDE programmieren. Hierzu ist nur ein Programmieradapter nötig. Ich halte die Beschreibungen für den Programmiervorgang sehr kurz, da hierfür genug hervorragende Beschreibungen im Internet zu finden sind.


microSD-Card

Wir benötigen zwei microSD-Karten. Hier reichen Karten mit 4GB oder 8GB Platz vollkommen aus. Bevor man zu einer hohen Kapazität greift, sollte man lieber hochwertige Karten mit geringerer Kapazität verwenden. Beide microSD-Karten müssen mit FAT-32 formatiert werden. Auf der Karte für die Sprachausgabe muß nun ein Verzeichnis mit dem Namen 'MP3' angelegt werden. In diesem Verzeichnis werden nun die Sprachdateien kopiert. Deren Dateinamen müssen dem Schema entsprechen 'NNNN.mp3' wobei NNNN die Nummer der Datei ist (z.B. 0001.mp3). Ist die SD-Karte im DFPlayer eingesteckt, kann man die einzelnen Dateien testen wenn man an den Pin 9 des Moduls kurz GND legt. Damit wird dem Player ohne Software mitgeteilt die nächste MP3-Datei abzuspielen. Die microSD-Karte für die Bilder muss nur FAT-32 formatiert werden.


Attiny84

Für die Programmierung des Attiny84 wird ein Programmieradapter benötigt. Hierfür gibt es eine Reihe von möglichen Adaptern die verwendet werden können. Im einfachsten Fall kann ein Arduino verwendet werden. Ich selber verwende am liebsten den USBAsp den ich vor vielen Jahren selber gebaut habe. Ein käuflich zu erwerbender Adapter wäre z.B. dieser oder dieser. Die Platine wird mit Strom versorgt und über das Visual-Studio eine Programmierung gestartet. Wenn alles glatt geht, war es das schon.


ESP32-Cam

Für die Programmierung des ESP32-Cam wird ein Adapter benötigt. Auch hierfür gibt es eine Reihe von möglichen Adaptern die verwendet werden können. Im einfachsten Fall wird nur ein USB zu (TTL) Serial-Adapter benötigt. Ein möglicher Adapter wäre z.B. dieser. Zum Programmieren wird der PIN GPIO0 mit GND verbunden, der Serielle Adapter an TXD, RXD und GND angeschlossen und das ESP32-Cam-Modul an die Spannung angelegt. Nun kann schon die Programmierung mit 'Visual Studio Code' erfolgen. Durch 'pio run -t upload --upload-port com3' wird die Programmierung mit dem COM-Port 3 gestartet. Abhängig davon welcher Com-Port dem Seriellen Adapter zugewiesen wurde ist dies anzupassen. Nach einem Reset (Taster auf dem Modul) kann mit 'pio run -t uploadfs --upload-port com3' das SPIFFS programmiert werden. Nachdem beide Programmierungen erfolgt sind, kann die Verbindung zu GPIO0 wieder entfernt werden und das Modul in die Platine eingesteckt werden. Nach anlegen der Versorungsspannung an die Platine sollte der ESP32 über WLAN erreichbar sein. Man verbindet ein WLAN fähiges Gerät (PC, Tablet, Handy) mit dem ESP32 und stellt dann die Parameter für die WLAN-Verbindungen ein die der ESP32 verwenden soll um sich mit dem lokalem Netzwerk zu verbinden. Nachdem der ESP32 im lokalem Netzwerk angemeldet ist, kann die Türstation über den Browser erreicht werden. Hier werden dann alle weiteren Einstellungen vorgenommen. Zukünftige Updates können über OTA erfolgen. Es können in Main.h definitionen auskommentiert werden (//) um OTA und/oder den FTP-Server zu deaktivieren. Über Telnet auf die IP des Moduls können die Log-Ausgaben verfolgt werden.

Software

Zum Anmelden an die Software ist das default Passwort 'espadmin' der default User ist 'admin'


DoorBell32

Gibt man die IP von Doorbell32 in den Browser ein, erhält man nach der Eingabe des Usernamen und des Passwortes die Webseite der Türstation mit einem aktuellem Bild.
Bei einem Klick auf 'Jetzt' wird eine aktuelle Aufnahme angezeigt.
Mit 'Aufnahme' wird die letzte erstellte Aufnahme angezeigt; z.B. wer zuletzt den Klingeltaster betätigt hat.
Mit 'Stream' wird der Live-Stream dargestellt.
Ein Klick auf 'Make' erstellt ein Bild das im Log archiviert wird.
Ein Klick auf eine der Knöpfe für die Sprachausgabe löst diese aus. Wird im Knopf ein Schloss-Symbol angezeigt, wird nach abspielen der Sprachausgabe der Öffner automatisch ausgelöst.
Will man nur die Tür öffnen, genügt ein Klick auf den grünen Knopf.
Die Inhalte der Sprachausgabe-Knöpfe wird unter den Einstellungen verwaltet.


DoorBell32

Zu diesem Bild gibt es nicht viel zu sagen. Durch einen Klick oben links öffnet sich das Menü.
Auf einem Handy kann dieses auch durch ein wischen nach rechts geöffnet werden.


DoorBell32

Unter den Settings oder Einstellungen erhält man eine, gefühlt, unendliche Liste von Einstellungen.
Ich hoffe nicht jetzt jede Einstellung einzeln erklären zu müssen. Die Beschriftungen erklären die Funktionen.
Zu beachten ist, das die URL für die Funktionen (Bewegung und Klingeltaster) nur HTTP-Url's sein können. Ich habe hier noch keine Verschlüsselung im asynchronen Webclient eingebaut.
Werden Einstellungen geändert, dann wird das Symbol für die Speicherung (oben rechts) anklickbar. Mit einem Klick darauf werden die Einstellungen gespeichert.
Man sollte auf alle Fälle zuerst das Passwort und eventuell den Usernamen ändern.


DoorBell32
DoorBell32

In den Einstellungen werden auch die Sprachausgaben verwaltet.
Klickt man auf 'Neu' erscheinen die Eingabefelder für diese Definition.
Der eindeutige Name wird zur internen Verwaltung verwendet. Dieser darf keine Leerzeichen und Sonderzeichen enthalten (Unterstrich ist zulässig). Man sollte auch auf Umlaute verzichten.
In der nächsten Eingabezeile wird der Text definiert der auf dem Knopf erscheinen soll.
Die Sprachdateien auf der microSd-Card für den DFPlayer sind nach dem Schema 'NNNN.mp3' zu benennen. Die Zahl die für die Datei verwendet wurde, muß hier eingegeben werden. Heißt die Datei '0001.mp3', dann ist im nächsten Eingabefeld '1' einzugeben.
Handelt es sich um einen Klingelton der beim Betätigen des Klingeltasters ausgegeben werden soll, dann muß hier der folgende Schalter eingeschaltet werden. Es handelt sich dann um eine akustische Rückmeldung für den Besucher. Mit einer solchen Rückmeldung wird ein Besucher nicht so schnell ungeduldig. Es kann auch statt einem Ton eine Ansage erfolgen z.B. 'Lieber Besucher, haben Sie etwas Geduld. Unser Weg zu unserem Türöffner ist sehr lang'
Handelt es sich um eine Ansage, kann ein Automatisches Öffnen definert werden. Ist dieser Schalter aktiv, wird der Türöffner nach der Ausgabe der Nachricht automatisch betätigt.


DoorBell32
DoorBell32

Für die Funktionen der Bewegung oder dem Betätigen des Klingeltasters können externe URL's aufgerufen werden.
Zu beachten ist, das die URL für die Funktionen nur HTTP-Url's sein können. Ich habe hier noch keine Verschlüsselung im Asynchronen Webclient eingebaut.
Will ich die Türstation nur lokal betreiben (kein PWA, keine App), dann kann ich hier eine URL für einen MQTT-Server oder eines Gong's eintragen. In diesem Bild ist eine URL für einen Gong eingetragen der mit einem ESP8266 aufgebaut ist.
Muß ich eine HTTPS-Url aufrufen, gibt es im Augenblick nur die Möglichkeit diese über einen externen Rechner (z.B. ein sowieso laufender RPI) zu leiten und diesem die Umwandlung zu HTTPS machen zu lassen.
Wird die App genutzt, muß hier die URL eingetragen werden die das Senden der Push-Mitteilung veranlaßt.


DoorBell32

Am Ende der Einstellungen können noch Funktionen für die Türstation ausgelöst werden.
Beim Löschen der WLAN-Daten muß die Türstation neu mit den WLAN-Daten eingestellt werden. Sind noch keine Daten vorhanden (wie nach dem Betätigen diese Knopfes), wird ein AccessPoint geöffnet. An diesem muß man sich Anmelden. Nach der gültigen Anmeldung, wird automatisch die Seite geöffnet in der die Einstellungen für das WLAN vorgenommen wird. Öffnet sich keine Seite automatisch, muß ein Browser geöffnet werden und URL http://192.168.4.1 geöffnet werden. Zur Verwaltung des WLAN wird der WIFIManager verwendet.

Beim ESP-Reboot wird die Türstation neu gestartet.

In der Türstation ist eine Session-Verwaltung für die Anbindung der App vorhanden. Durch betätigen dieses Knopfes werden alle gespeicherten Sessions gelöscht und die App's müssen sich erneut authentifizieren.


DoorBell32

Unter dem Menüpunkt 'Log' können die gespeicherten Aufnahmen gesichtet werden. Es wird das Bild dargestellt mit dem Namen des Bildes. Dieser Name ist der Erstellungszeitpunkt des Bildes. Ein Klick auf den Eimer löscht das Bild. Theoretisch kann die ganze microSD-Karte mit Bildern gefüllt werden. Es gibt nur Probleme wenn die Anzahl zu groß wird. Auch das Darstellen der Log-Seite dauert dann sehr lang. Man sollte immer wieder die alten oder nicht benötigten Bilder löschen.


DoorBell32

Die 'About'-Seite listet die Verlinkungen zu den App's, dem PWA und zu dieser Seite auf.


Der Taster

Auf der Platine mit dem Attiny ist auch ein Taster vorhanden. Welche Funktion hat der denn? Wird der Taster weniger als 1 Sekunde lang betätigt, dann wird der Ton 0001.mp3 des DFPlayers wiedergegeben. Wird der Taster zwischen 1 und 5 Sekunden gedückt gehalten, führt die Türstation einen Neustart aus. Wird die Taste zwischen 5 Sekunden und 10 Sekunden gedückt gehalten, wird der Türöffner betätigt. Wird der Taster länger als 10 Sekunden gedrückt gehalten, werden die Einstellungen für WLAN gelöscht und man muß sich wieder per WLAN mit der Türstation verbinden um die Zugangsdaten zum Netzwerk einzustellen.

App und PWA

Zum Anmelden an die Software ist der Username und das Passwort zu verwenden das unter den Einstellungen der Türstation vergeben wurde. Aber zu Beginn erst einmal eine Erklärung zu 'PWA'. Viel werden sich fragen, was ist PWA. Diese Abkürzung steht für 'Progressive Web Apps'. Sie beschreibt die Möglichkeit eine Webseite die bestimmte Voraussetzungen erfüllt als App zu installieren. Das Verhalten dieser PWA's entspricht weitestgehend dem einer normalen APP. Es gibt jedoch Einschränkungen. Auf dem Betriebssystem IOS wird eine Push-Benachrichtigung (noch) nicht unterstützt. Auf Windows, MacOS Android wird Push unterstützt mit der Einschränkung das es nicht immer funktioniert. Meistens muß der Browser in dem die PWA installiert wurde auch aktiv sein um Benachrichtigungen erhalten zu können. Unter Android funktioniert es noch am besten. Aber auch hier ist die Zustellung einer Push davon abhängig ob das Betriebssystem nicht den Service Worker (der nimmt die Push-Nachrichten entgegen) nicht beendet hat weil dieser schon zu lange im Speicher war oder das Akku zu wenig Energie hatte.


Voraussetzung

Eine App hat nur dann einen Zugriff auf lokale IP's wenn man mit dem Handy (oder Tablet) im lokalen Netzt angemeldet ist. Eine Push-Benachrichtigung erfolgt aber immer über die Server der Anbieter der Betriebssysteme (IOS=APNS; Android=Google). Die App verwendet Firebase (Google) als Pushdienst für beide Betriebssysteme und PWA's. Damit die App auch auf die Türstation zugreifen kann wenn ich unterwegs bin, muß die Türstation im DSL-Router freigegeben werden. Dazu wird im Router eine Portweiterleitung eingerichtet. Diese stellt einen Port vom Internet bereit und leitet die Anfragen an diesen Port an die Türstation weiter. Wird vom internet meine IP (die des Routers) angegeben mit dem richtigen Port kann ich vom Internet die Seiten der Türstation aufrufen. Bei einigen DSL-Anbietern ändert sich die eigene IP öfter (z.B. einmal am Tag). Damit ich nicht jeden Tag die neue IP eintragen muß, gibt es Dienste die einen DNS-Eintrag mit meiner IP verbinden. Das ist genau das was SRVHome macht. Es stellt einen DynDNS-Server zur Verfügung. Im Router werden dazu die Einstellungen für den DYNDNS auf SRVHome eingestellt. Der Router teilt nun bei jedem Wechsel der IP mit wie die neue IP lautet. SRVHome weist diser IP einen Namen zu. Meine Türstation kann ich nun über einen Namen aufrufen. Wird SRVHome für diese Zuordnung verwendet, kann über die vergebene HOST-ID auch zusätzlich ein HTTPS-Proxy zu meiner Türstation bereitgestellt werden der dann über die App genutzt wird.


Was muß ich tun damit ich die APP: lokal verwenden kann

Das geht leider nicht. Die App darf nur Verbindungen zu HTTPS mit gültigen Zertifikat aufnehmen. Sollte ein lokaler Proxy bereit stehen der für die Türstation die Voraussetzungen erfüllt, kann die URL für den Proxy in den Einstellungen eingetragen werden. Will ich das nur lokal nutzen, kann ich aber auch die Seiten der Türstation verwenden und einen 'Gong' zentral plazieren damit dieser ohne Handy gehört werden kann.


Was muß ich tun damit ich die APP: über SRVHome verwenden kann

Im Router eine Portweiterleitung zur Türstation einrichten (z.B. Port 1280 zu der lokalen IP der Türstation port 80)
Bei SRVHome einen Account erstellen und sich einen Namen auswählen.
Im Router SRVHome als DynDNS eintragen.
In der Einstellung für die App die Host-ID von SRVHome eintragen und den Port den man gewählt hat bei der Portweiterleitung (Beispiel: 1280).
App beenden und neu starten. Nun sollte der Login mit den Usernamen und dem Passwort der Türstation erfolgen.
Spass haben ;-)


Was muß ich tun damit ich die APP: über einen beliebigen Proxy verwenden kann

Im Router eine Portweiterleitung zur Türstation einrichten (z.B. Port 1280 zu der lokalen IP der Türstation port 80)
Es muss eine anderer DynDNS-Dienst genutzt werden.
Einen Proxy nutzen der die Seiten der Türstation über HTTPS bereitstellt.
In den Einstellungen für die App eine User-ID erzeugen (diese extern speichern, diese wird für alle App's benötigt die dieser Türstation zugeordnet sind).
In der Einstellung für die App die URL zur Türstation eintragen.
App beenden und neu starten. Nun sollte der Login mit den Usernamen und dem Passwort der Türstation erfolgen.
Spass haben ;-)


Was muß ich tun damit ich die APP: über eine Feste IP verwende

Im Router eine Portweiterleitung zur Türstation einrichten (z.B. Port 1280 zu der lokalen IP der Türstation port 80)
Einen Proxy nutzen der die Seiten der Türstation über HTTPS bereitstellt. Das kann auch ein eigener Proxy sein.
In den Einstellungen für die App eine User-ID erzeugen (diese extern speichern, diese wird für alle App's benötigt die dieser Türstation zugeordnet sind).
In der Einstellung für die App die URL zur Türstation eintragen.
App beenden und neu starten. Nun sollte der Login mit den Usernamen und dem Passwort der Türstation erfolgen.
Spass haben ;-)


DoorBell32

Beim ersten Start der App muß die Einstellung für die Verbindung zur Türstation stattfinden. Wird SRVHome als DynDNS-Dienst verwendet, werden die Einstellung entsprechend der Beschreibung oben vorgenommen.


DoorBell32

Verwende ich nicht SRVHome als DynDNS, muß ich den Schalter (oben) umstellen. Nun wird die URL benötigt unter der die Türstation erreichbar ist. Diese URL muß eine HTTPS-Url sein. Besitze ich noch keine Zugangskennung kann ich durch einen Klick auf den unteren Knopf eine Zugangskennung erstellen lassen. Diese Zugangskennung wird auch dann benötigt wenn ich mehrere App's verwende. Über diese Zugangskennung wird eine Push-Benachrichtung an alle App's gesendet die die gleiche Zugangskennung verwenden. Die URL muß dann entsprechend der Beschreibung oben eingetragen werden.


DoorBell32

Nach einem Neustart der App muß man sich mit den Daten der Türstation anmelden.


DoorBell32

Die App sieht nahezu so aus wie die lokale Oberfläche der Türstation. Sie unterscheidet sich nur darin dass beim Starten nicht automatisch das aktuelle Bild dargestellt wird. Hier ist dann ein Platzhalter zu sehen. Oben rechts besitzt die App die Möglichkeit sich von der Türstation abzumelden.


DoorBell32

Das Menü unterscheidet sich zu dem Menü aus den Seiten der Türstation durch den Punkt 'Datenschutz/Nutzungsbedingungen'.


DoorBell32

Hinter dem Menüpunkt 'Datenschutz/Nutzungsbedingungen' verbergen sich die gefühlten unendlichen Bedingungen die zur Nutzung dieser App nötig sind.

Rechtliches

Die Schaltpläne, Layouts, Zeichnungen und die Software dürfen ausschließlich für private Zwecke benutzt werden. Eine gewerbliche Nutzung ist nur mit ausdrücklicher Genehmigung des Autors gestattet.
Alle Rechte sind Eigentum des Autors soweit es nicht anders angegeben ist.
Für Hardware- oder Softwarefehler sowie eventuelle, aus dem Gebrauch resultierende Schäden oder Folgeschäden, kann keine Haftung übernommen werden.
Bei dieser Beschreibung handelt es sich nicht um eine Aufforderung zum Nachbau sondern um eine Dokumentation der eigenen Umsetzung mit der Möglichkeit diese als Basis für ein eigenes Projekt zu verwenden.
Ein Anspruch auf die Bereitstellung der App oder des Dienstes SRVhome besteht nicht.
Für die Nutzung der App oder PWA ist eine gesonderte Datenschutzerklärung und Nutzungsbedingungen vorhanden. Eine Nutzung ist nur gestattet wenn diese Bedingungen akzeptiert werden.

Downloads


Inspiration ESP32-Cam

Die Implementierung der Cam bassiert auf https://gist.github.com/me-no-dev/d34fba51a8f059ac559bf62002e61aa3
Ich wurde insperiert durch https://github.com/Hoeby/ESP32-Doorbell
Einige Lib's sind in den Sources vorhanden, da diese einige Anpassungen erhalten haben.
Einige Funktionen wurden nicht durch Lib's bereitgestellt weil sie entweder nicht richtig funktionierten oder sie zu aufwendig waren.
Um alles unterzubringen wurde ein Customlayout verwendet: diese teilt den Flash-Speicher entsprechend auf.


Attiny

Die Entscheidung für den One-Wire-Bus ist hier wegen der Fehlertoleranz gefallen. Bei der Implementierung konnte ich fast vollständig auf die hervorragende Arbeit von Tobias Mueller zurückgreifen. Unter https://tm3d.de/elektronik-projekte/1-wire-simulation-v2 sind die entsprechenden Informationen und Orginal-Quellen erhältlich.
Für die Implementierung wurde auf die Quellen für den DS2408 zurückgegriffen und nach den Bedürfnissen angepaßt. Vorallem die Erfassung des analogen Wertes für die Helligkeit.


Changelog

2.0.1 23.11.2021 ESP32-Cam

Neue Einstellung für Timeout von Bewegungserkennung und Betätigung Klingeltaster.

Was muß ich alles machen?


Hier eine Auflistung der Schritte

1. Herstellen der Platine oder alternativ auf einer Lochrasterplatine aufbauen.

2. In Betrieb nehmen der Platine (beim Eigenbau Versorgungspannung 5V einstellen) und programmieren des ATTINY84. Die nötigen Fuses sind in der Datei platformio.ini hinterlegt.

3. ESP32-Cam-Modul temporär mit 5V versorgen und über die serielle Leitung (Adapter) programmieren. Hier nicht vergessen auch das SPIFFS zu programmieren (uploadfs)

4. Eine SD-Card mit FAT32 formatieren und in das Cam-Modul einstecken.

5. Eine SD-Card mit FAT32 formatieren und die Sprachmitteilungen dort speichern.

6. ESP32-Cam-Modul in die Platine einstecken. Es sollte ein WIFI Access Point erscheinen über den die WIFI-Einstellungen vorgenommen werden müssen.

7. Neustart; nun sollte die LED auf der ATTINY-Platine flackern. Das Flackern zeigt eine Kommunikation mit dem ESP32-Modul.

8. Wenn nötig, sich per Telnet am Modul anmelden. In der Ausgabe erscheint immer wieder ein Block mit Punkten. Jeder Punkt signalisiert eine funktionierende Kommunikation mit dem OneWire-Bus. Ein 'c' zeigt einen CRC-Fehler. Einige sind nicht zu verhindern wenn der ESP die Zeitanforderungen des OneWire nicht einhalten kann weil er mit WIFI beschäftigt ist.

9. Anmelden per Browser am ESP32-Cam-Modul. Der User ist 'admin', das Passwort 'espadmin'.

10. Auf die Einstellungen gehen (links oben Menü anklicken und die Einstellungen auswählen). Hier die Einstellungen für das Passwort, den User, die Zeitzone vornehmen.

11. Die Einstellungen mit den Definitionen für die Sound-Dateien vervollständigen.

12. Bei den Signalisierungen URL's (nur HTTP) eintragen damit beim Drücken des Klingeltasters eine Signalisierung erfolgt. Das kann z.B. eine ESP-Gong sein oder die Url für einen Push-dienst (*).

13. Sonstige Einstellungen nach Wünschen einstellen.


Hier eine Auflistung der Schritte für die APP

1. Auf dem eigenen Router eine Portweiterleitung zur DoorBell32-Station einrichten.

2. Einen DynDNS-Dienst einrichten z.B. SRVHome.

3. Die App laden und starten.

3a. Wird SRVHome als DynDNS-Dienst verwendet die Host-ID für den DNS-Eintrag eingeben. Den Port eingeben der beim Einrichten der Portweiterleitung verwendet wurde.

3b. Wird nicht SRVHome verwendet, in der App den Schalter betätigen. Dort sich eine Zugangsid erstellen (Knopf unten). Nun die URL eintragen über die die Türsation erreichbar ist. Dies muß eine HTTPS-URL sein!

4. Die App schließen und beenden. Die App neu starten. Hat bis hier alles funktioniert erscheint eine Login-Seite.

5. Sich anmelden mit den Zugangsdaten die in der Türstation hinterlegt sind.

6. Das war es schon. Wird eine weitere App verwendet, muß die Zugangs-ID eingetragen werden die bei der ersten App verwendet wurde.


* Url für die Signalisierung

Soll die App verwendet werden, muß in die Türstation für die Signalisierung die Url zum Push-Dienst eingetragen werden. Diese URL lautet http://www.srvhome.de/door/signal?uid=xxxx . Die uid (xxxx) in dieser URL ist durch die Host-Id zu ersetzen wenn man SRVHome verwendet. Wird nicht SRVHome verwendet, ist hier die Zugangsid zu verwende.

Frequently Asked Questions

Hier stelle ich, entsprechend der Fragen die mir zukommen, FAQ's zusammen.

Der Kontakt zu mir

Fragen? Anregungen? Kontaktiere mich !

Alle Felder mit (*) gekennzeichnet sind notwendig.