DoorPiBoard: Unterschied zwischen den Versionen
Farion (Diskussion | Beiträge) |
Farion (Diskussion | Beiträge) |
||
Zeile 409: | Zeile 409: | ||
Zuerst erzeugt man mit der Arduino IDE eine kompilierte Sketch-Datei (Sketch->Überprüfen/Kompilieren). | Zuerst erzeugt man mit der Arduino IDE eine kompilierte Sketch-Datei (Sketch->Überprüfen/Kompilieren). | ||
Die | Die erzeugte hex-Datei per scp (oder sonst wie) auf den RaspberryPi kopieren. Im Folgenden DoorPi.cpp.hex genannt. | ||
Zum Flashen habe ich ein kleines Python-Script "flash.py". Dieses ebenfalls auf den RaspberryPi kopieren. | Zum Flashen habe ich ein kleines Python-Script "flash.py". Dieses ebenfalls auf den RaspberryPi kopieren. |
Version vom 19. April 2017, 18:44 Uhr
Diese Seite beschreibt eine Platine, welche maßgeblich das DoorPi-Projekt umsetzt.
Die Entwicklung der Platine fand, bzw. findet in diesem Forums-Thread statt. Fragen, Anregungen, Wünsche und Probleme bitte dort diskutieren bzw. melden.
Die Platine bietet alle im Original-Projekt beschriebenen Funktionen. Herzlichen Dank an Prof. Dr. Peter A. Henning für dieses Projekt an dieser Stelle. Es empfiehlt sich zuerst den Projekt-Artikel "DoorPi_und_FHEM" zu lesen, da im Folgenden vorausgesetzt wird, dass das Projekt bekannt ist. Zusätzlich zum Original-Projekt beinhaltet die Platine noch einen Briefkastenmelder. Ausserdem ist ein USB-Hub enthalten, durch welchen es möglich ist die Soundkarte und den Arduino anzusprechen. Der Vorteil hierbei ist, dass der Sketch aktualisiert werden kann ohne den Arduino ausbauen zu müssen.
Der Grundgedanke dieser Unternehmung ist eine vollumfassende, saubere und möglichst einfach zu installierende Lösung bereitzustellen. Zu diesem Zweck besteht dieses Projekt aus zwei Platinen., welche nur durch vier Netzwerkkabel verbunden sind. Sämtliche Bauteile und Zusatzplatinen befinden sich auf einer kompakten Hauptplatine, welche sich an der Türstation selbst befindet. Sensoren und Aktoren, welche in der Frontplatte oder anderweitig extern benötigt werden, werden mittels Screwterminals angeschlossen. Um auf der RaspberryPi-Seite die ankommenden Netzwerkkabel an das Piface2 bzw. den RaspberryPi selbst anschliessen zu können gibt es eine entsprechende Adapterplatine.
Übersicht
Prinzipieller Aufbau
Ein Gesamtsystem besteht aus der Hauptplatine, der Adapterplatine, einem PiFace2, einem Raspberry Pi und diversen an die Hauptplatine angeschlossener Sensoren und Aktoren. Die Hauptplatine befindet sich direkt an der Türstation und beherbergt einen Arduino. Sie wird über 4 handelsübliche RJ45-Netzwerkkabel mit der Adapterplatine verbunden, welche sich von der Türstation räumlich getrennt befindet. Weitere Kabel sind nicht nötig. Dies könnte z.B. ein Schaltschrank sein. In unmittelbarer Nähe zur Adapterplatine befindet sich der RaspberryPi mit aufgesetztem PiFace2. Die 13 I/O Ports des PiFace2 werden mit der Adapterplatine verbunden. Der RaspberryPi selbst wird mit einem Micro-USB-Kabel und einem FFC-Kabel für die Kamera mit der Adapterplatine verbunden.
Die Hauptplatine ist so gestaltet, dass sie hinter dem 3,2" Nextion-Display montiert werden kann. Zu diesem Zweck sind die Schraublöcher der Hauptplatine identisch zu der des Displays. Die Breite entspricht in etwa der des Display. Nur unten und oben steht die Platine ca. 10mm über.
Nachfolgend der prinzipiell Aufbau:
HINWEIS1: Türsummer, KeyMatic und andere Türöffnungsmechanismen werden nicht von den Platinen selbst abgebildet. Diese können mittels DoorPi entweder über freie Ausgänge des PiFace2 oder FHEM-Aufrufe gesteuert werden. Im oben gezeigten Beispiel ist das ein direkt an das PiFace angeschlossener Türsummer (ich habe wirklich einen der mit 5V DC funktioniert) und eine per Funk an FHEM angeschlossene KeyMatic. Es wäre auch nicht sonderlich schlau den Türsummer direkt an die Hauptplatine anzuschliessen, da man dann - falls man die Frontplatte entfernt hat - die Tür öffnen könnte indem man einfach Strom anlegt. Der Sabotagekontakt würde das in diesem Fall nicht verhindern können. Der Strom zum Türsummer bzw. zu einem anderen elektronischem Türöffner sollte auf anderem von aussen nicht zugänglichem Weg verlegt werden.
HINWEIS2: Die RJ45-Kabel dienen nur der Signalübertragung und haben nichts mit "Netzwerk" zu tun. Es geht lediglich darum 32 Pole möglichst schmerzfrei zu verbinden. Die Wahl fiel auf RJ45-Kabel, da diese leicht zu beschaffen sind und es eine breite Buchsenunterstützung gibt. Es ist nicht möglich einen Router oder WLAN oder ähnliches dazwischenzuschalten. Falls man dies tut besteht die Gefahr, dass man Router und/oder die Platinen zerstört oder sogar noch Schlimmeres passiert. D.h. Die RJ45-Kabel müssen direkt von RASPIX <-> DBPX gesteckt werden. Bitte die oben eingezeichnete Kreuzung bei 3 und 4 beachten.
Anschlüsse der Hauptplatine
- Bewegungssensor
- Helligkeitssensor
- Touch-Display
- Kamera (FFC) (1x vertikal, 1x horizontal)
- IR-Beleuchtung
- Klingelknopf
- Beleuchtung für Klingelknopf
- Sabotagekontakt
- Kontakt für Briefkastenklappe
- Kontakt für Briefkastentür
- LED zur Anzeige des Briefkastenstatus
- 1Wire für einen iButton-Lesers (Prinzipiell kann man hier auch andere 1Wire-Sensoren verwenden)
- RGB-Beleuchtung des iButton-Lesers
- 4xRJ45 zur Adapterplatine
- USB-B zum Arduino
- Ardunio-Sockel
Anschlüsse der Adapterplatine
- 4x RJ45 zur Hauptplatine
- 2x MicroUSB
- Kamera (FFC)
- 13-polige Schraub-Terminals zum Anschluss an ein PiFace2
Entfernung Hauptplatine zu Adapterplatine
Die maximale erfolgreiche bisher getestete Länge der RJ45-Kabel ist 1,50m (verwendet wurden geschirmte Patchkabel). Der limitierende Faktor ist die Pi-Kamera. Die RJ45-Kabel müssen gleich lang sein.
Briefkastenmelder
Der Briefkastenmelder überwacht die Einwurfklappe und die Entnahmetür mit jeweils einem Kontakt. Der Status des Briefkastens kann über eine LED angezeigt werden. Die Semantik ist dabei: LED leuchtet wenn der Briefkasten gefüllt ist und noch nicht geleert wurde. Die beiden Kontakte werden sowohl an den Arduino (Einwurfklappe: A3,Entnahmetür: A2), als auch an das PiFace (Einwurfklappe: IN 3, Entnahmetür IN 2) gemeldet. Die LED kann über den Arduino gesteuert werden (D2). Die LED kann nicht direkt über das PiFace gesteuert werden, allerdings kann dies über OUT 7 an den Arduino (A4) gemeldet werden. Damit ist es möglich den Briefkastenmelder dediziert nur im Arduino zu lösen oder die Logik komplett nach DoorPi/FHEM auslagern.
Dedizierte Arduino-Lösung
Dies ist die einfachste Lösung. Initial wird davon ausgegangen, dass der Briefkasten leer ist. Wird die Einwurfklappe geöffnet geht die LED an, wird die Entnahmetür geöffnet geht die LED aus. Der Status wird nur im Arduino gespeichert, nach Neustart des Arduinos wird der Status also wieder auf "leer" gesetzt.
Basierend auf dem Original-Sketch sind dazu folgende Änderungen nötig:
Definieren der Pins:
// postbox const int PostBoxLED = 2; // LED for postbox const int PostBoxDoor = A2; // input for postbox door const int PostBoxTrap = A3; // input for postbox trap
In setup():
pinMode(PostBoxLED, OUTPUT); pinMode(PostBoxTrap, INPUT_PULLUP); pinMode(PostBoxDoor, INPUT_PULLUP); digitalWrite(PostBoxLED, HIGH);
In loop(void):
// postbox if( digitalRead(PostBoxDoor) == LOW ){ digitalWrite(PostBoxLED, HIGH); }else { if( digitalRead(PostBoxTrap) == LOW ){ digitalWrite(PostBoxLED, LOW); } }
Schema und Layout
Layout Hauptplatine
Layout Adapterplatine
Schaltplan Hauptplatine
KiCad Daten
V25 (Sammelbestellung 1): https://nextcloud.trigon-media.com/index.php/s/zkgXRccDSZJoJds/download
Teile
Ziel dieses Abschnittes ist es eine möglichst vollständige Liste aller Teile bereitzustellen, welche für ein funktionales Gesamtsystem benötigt werden.
Platinen
Die in diesem Projekt entworfene Hauptplatine und Adapterplatine.
Teile auf der Hauptplatine
Bezeichner auf der Platine | Anzahl | Bauteilbeschreibung | Wert | Bauforum | Beschaffung |
---|---|---|---|---|---|
C1 | 1 | Keramik-Kondensator | 10nF | SMD 1206 | http://de.rs-online.com/web/p/keramik-multilayer-kondensatoren/2644141/ |
C2 | 1 | Elektrolyd-Kondensator | 100uF | THT D6,3 RM2,5 | https://de.rs-online.com/web/p/aluminium-elektrolytkondensatoren/4758769/ |
C4 | 1 | Keramik-Kondensator | 100nF | SMD 1206 | http://de.rs-online.com/web/p/keramik-multilayer-kondensatoren/2644179 |
C4 | 1 | Elektrolyd-Kondensator | 10uF | THT D4,0 RM1,5 | http://de.rs-online.com/web/p/aluminium-elektrolytkondensatoren/7047895/ |
R1 | 1 | Widerstand | 10 Ohm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2231997/ |
R2 | 1 | Widerstand | 10 Ohm | SMD 1206 | Siehe R1 |
R3 | 1 | Widerstand | 10 Ohm | SMD 1206 | Siehe R1 |
R4 | 1 | Widerstand | 1 MOhm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232653/ |
R5 | 1 | Trimmer | 100 KOhm | PT 6-L | http://de.rs-online.com/web/p/abgleichwiderstande/0473590/ |
R6 | 1 | Widerstand | 22 KOhm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232439/ |
R7 | 1 | Widerstand | 10 KOhm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232394/ |
R8 | 1 | Widerstand | 470 KOhm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232619/ |
R9 | 1 | Widerstand | 22 KOhm | SMD 1206 | Siehe R6 |
R10 | 1 | Widerstand | 220 KOhm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232164/ |
R11 | 1 | Widerstand | 270 Ohm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232170P/ |
R12 | 1 | Widerstand | 270 Ohm | SMD 1206 | Siehe R11 |
R13 | 1 | Widerstand | 270 Ohm | SMD 1206 | Siehe R11 |
R14 | 1 | Widerstand | 3,9 KOhm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232344/ |
R15 | 1 | Widerstand | 150 Ohm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232142/ |
R16 | 1 | Widerstand | 1 KOhm | SMD 1206 | http://de.rs-online.com/web/p/smd-widerstande/2232265/ |
R18 | 1 | Widerstand | 1 KOhm | SMD 1206 | Siehe R16 |
Q1 | 1 | Transistor | IRF 9510 | TO-220 | http://de.rs-online.com/web/p/transistoren-mosfet/5430018/ |
Q2 | 1 | Transistor | 2N7000 | TO-92 | http://de.rs-online.com/web/p/transistoren-mosfet/6714733/ |
Q4 | 1 | Transistor | 2N7000 | TO-92 | Siehe Q2 |
U1 | 1 | Timer-IC | LM555 | DIP-8 | http://de.rs-online.com/web/p/timer-ics/5343469/ |
AU1 | 1 | USB A Buchse | stehend | http://de.rs-online.com/web/p/usb-typ-a-steckverbinder/7187224/ | |
CAM1 | 1 | FFC-Buchse | 15-polig RM1,0 | http://de.rs-online.com/web/p/fpc-steckverbinder/6388873/ | |
CAM2 | 1 | FFC-Buchse | 15-polig RM1,0 | Siehe CAM1 | |
RASPI1 | 1 | Netzwerk-Buchse | ungeschirmt | RJ45, stehend oder liegend | Liegend: http://de.rs-online.com/web/p/rj-45-steckverbinder/2400935/ oder Stehend: http://de.rs-online.com/web/p/rj-45-steckverbinder/8486711 |
RASPI2 | 1 | Netzwerk-Buchse | ungeschirmt | RJ45, stehend oder liegend | siehe RASPI1 |
RASPI3 | 1 | Netzwerk-Buchse | ungeschirmt | RJ45, stehend oder liegend | siehe RASPI1 |
RASPI4 | 1 | Netzwerk-Buchse | ungeschirmt | RJ45, stehend oder liegend | siehe RASPI1 |
ARDUINO1 | 2 | Sockelleisten für den Arduino | 2x 17-polig RM2,54 Höhe: 0,8 | ||
Screwterminals 2er | 16 | Screwterminals | 2-polig RM3,5 | http://de.rs-online.com/web/p/leiterplatten-printklemmen/8971332/ | |
Screwterminals 3er | 1 | Screwterminals | 3-polig RM3,5 | http://de.rs-online.com/web/p/leiterplatten-printklemmen/8971335/ | |
Pinleisten | 14 | Pinleisten für die Montage der Soundkarte | 1-polig RM2,5 | ||
Drähte | 12 | Kurze Drähte für die Montage des NanoHubs |
R17 wird aktuell nicht bestückt.
Teile auf der Adapterplatine
Bezeichner auf der Platine | Anzahl | Bauteilbeschreibung | Wert | Bauforum | Beschaffung |
---|---|---|---|---|---|
CAM3 | 1 | FFC-Buchse | 15-polig RM1,0 | Siehe CAM1 | |
DPB1 | 1 | Netzwerk-Buchse | ungeschirmt | RJ45, stehend oder liegend | siehe RASPI1 |
DPB2 | 1 | Netzwerk-Buchse | ungeschirmt | RJ45, stehend oder liegend | siehe RASPI1 |
DPB3 | 1 | Netzwerk-Buchse | ungeschirmt | RJ45, stehend oder liegend | siehe RASPI1 |
DPB4 | 1 | Netzwerk-Buchse | ungeschirmt | RJ45, stehend oder liegend | siehe RASPI1 |
Screwterminals 2er | 6 | Screwterminals | 2-polig RM3,5 | Siehe Screwterminals 2er | |
Screwterminals 3er | 1 | Screwterminals | 3-polig RM3,5 | Siehe Screwterminals 3er |
Breakoutboards / fertige Platinen
Bezeichner auf der Platine | Anzahl | Bauteilbeschreibung | Wert | Bauforum | Beschaffung |
---|---|---|---|---|---|
ARDUINO1 | 1 | Arduino Micro | RM2,5 | ||
AMP1 | 1 | 3,7W Verstärker | RM2,5 | https://www.adafruit.com/product/987 | |
SND1 | 1 | BIGtec USB Soundkarte 7.1 | https://www.amazon.de/gp/product/B005BYCBO8 | ||
NUSB1 | 1 | NanoHub | https://www.tindie.com/products/mux/nanohub-tiny-usb-hub-for-hacking-projects/ | ||
USB1 | 1 | Micro-USB-Breakout | https://eckstein-shop.de/SparkFun-microB-USB-Breakout | ||
USB2 | 1 | Micro-USB-Breakout | Siehe USB1 |
Es ist wichtig, dass genau diese Komponenten (bzw. 100% kompatible) verwendet werden, da die entsprechenden Footprints auf der Platine vorhanden sind.
Kabel
Anzahl | Typ | Verwendung | Beschaffung |
---|---|---|---|
4 | Standard-RJ45-Netzwerkkabel (eine Schirmung ist nicht nötig) | Verbindung der Türstation mit dem Schaltschrank | |
1 | USB-Kabel 20cm (oder kürzer bei abgewinkelten Steckern) | Verbindung der Hauptplatine mit der USB-Buchse des Arduinos. | |
1 | USB-Kabel | Verbindung der Adapterplatine mit dem Raspbberry Pi | |
1 | FFC-Kabel | Verbindung der Hauptplatine mit der Kamera. Anordnungstechnisch empfiehlt es sich ein Kabel zu verwenden, bei dem sich die Kontakte an beiden Enden auf der gleichen Seite des Kabels befinden. | 20cm: http://de.rs-online.com/web/p/ffcfpc-uberbruckungskabel/1222534/ 15cm: http://de.rs-online.com/web/p/ffcfpc-uberbruckungskabel/1222533/ 10cm:http://de.rs-online.com/web/p/ffcfpc-uberbruckungskabel/1222532/ |
1 | FFC-Kabel | Verbindung der Adapterplatine mit dem Raspberry Pi. Anordnungstechnisch empfiehlt es sich ein Kabel zu verwenden, bei dem sich die Kontakte an beiden Enden auf der gleichen Seite des Kabels befinden. | |
- | 1-polige Kabel | Verbindung des PiFace2 mit den Screwterminals auf der Adapterplatine. Es empfiehlt sich im Sinne der Übersichtlichkeit bunte Kabel zu verwenden. | |
- | 1-polige Kabel | Verbindung der Screwterminals auf der Hauptplatine mit diversen Sensoren und Aktoren. Auch hier machen bunte Kabel durchaus Sinn. | |
- | Schrumpfschlauch um die Kabelenden an den Sensoren und Aktoren zu isolieren. |
Sensoren/Aktoren
Anzahl | Beschreibung | Beschaffung |
---|---|---|
2 | Lautsprecher | Siehe DoorPi_und_FHEM#Audio-Subsystem |
2 | Mikrofone | Siehe DoorPi_und_FHEM#Audio-Subsystem |
1 | PiCam | Siehe DoorPi_und_FHEM#Kamera-Subsystem |
3 | Schliesserkontakte für Sabotage und den Briefkastenmelder, mit der Möglichkeit in geöffnetem Zustand durchzuschalten | http://de.rs-online.com/web/p/mikroschalter/1594590/ |
1 | Fototransistor | https://www.reichelt.de/Fotodioden-etc-/LPT-80/3/index.html?ACTION=3&LA=5700&ARTICLE=60550&GROUPID=3045&artnr=LPT+80 |
1 | Bewegungssensor (PIR13) | Siehe DoorPi_und_FHEM#Sensoren |
1 | Beleuchteter Klingelknopf | Siehe DoorPi_und_FHEM#Sensoren |
9 | IR-LEDs | Siehe DoorPi_und_FHEM#Kamera-Subsystem |
1 | iButton-Leser mit RGB-Beleuchtung | Siehe DoorPi_und_FHEM#iButton-Subsystem |
1 | Standard LED 5mm für den Briefkastenmelder | http://de.rs-online.com/web/p/leds-sichtbares-licht/2285988/ |
1 | 3,2" Display (Falls eine andere Grösse verwendet werden soll, kann die Hauptplatine nicht mehr hinter das Display montiert werden.) | Siehe DoorPi_und_FHEM#Nextion-Subsystem |
Sonstiges
Ansonsten wird nur noch der Raspberry Pi mit Netzteil und einem aufgesteckten PiFace2 benötigt.
Weitere elektronisch relevante Teile werden nicht benötigt. Die Frontplatte u.Ä. werden hier nicht behandelt (Inspiration gibt es natürlich hier: DoorPi_und_FHEM#Frontplatte oder im DoorPi-Forum).
Zusammenbau der Hauptplatine
Der Zusammenbau der Platine ist mit moderaten Lötkenntnissen zu bewerkstelligen.
Benötigt werden:
- Ein Standardlotkolben (am Besten mit Temperaturregelung)
- Lötzinn 0,3mm und 1,0mm
- Pinzette
- Flussmittelstift
- Entlötlitze
Auflöten der SMD-Bauteile
Die SMD-Bauteile befinden sich alle auf der Unterseite. Als Bauform kommt nur 1206 zum Einsatz, selbst als Anfänger sollte man das problemlos hinbekommen. Dazu empfiehlt es sich die Pads auf der Platine vorher ein wenig zu verzinnen. Dann das SMD-Bauteil mit der Pinzette festhalten und an einer Seite mit wenig Zinn anlöten. Nachdem das Bauteil fixiert ist kann man die andere Seite verlöten. Zum Schluss nochmal das erste Pad mit etwas mehr Zinn nachlöten und das Bauteil evtl. noch ein wenig auf die Platine drücken. Es empfiehlt sich hier das 0,3mm Lötzinn zu verwenden, da man so mehr Kontrolle über die Menge des verwendeten Zinns hat.
Auflöten der THT-Bauteile
Die THT-Bauteile von oben einstecken und von unten verlöten.
In diesem Arbeitsschritt können auch die Sockelleisten für den Ardunio aufgelötet werden. Bitte nicht den Arduino direkt auflöten, da sonst dessen USB-Buchse nicht mehr zugänglich ist und durch die Screwterminals blockiert wird. Die Sockelleisten heben den Arduino über die Screwterminals, sodass ein eingesteckter Micro-USB-Stecker über diesen schwebt. Ein Nachteil in Bezug auf Zuverlässigkeit besteht meines Erachtens nicht, da die Sockelleisten den Arduino extrem fest fixieren und dieser nur mit viel Kraftaufwand herausgezogen werden kann.
Hinweis: Man benötigt 17er Sockelleisten für den Arduino, leider gibt es meistens nur 20er. D.h. man muss diese kürzen. Das geht recht gut mit einem Cuttermesser indem man durch Loch 18 schneidet. Dazu die Sockelleiste umgedreht auf einen festen Untergrund stellen und entlang des Pins schneiden. Danach dann den Überstand wegschnitzten.
Die FFC-Buchse kann je nach Ausrichtung entweder in CAM1 oder CAM2 eingelötet werden. Bei vertikalem Aufbau, also wenn sich die Kamera über oder unter dem Display befindet sollte CAM2 verwendet werden. Bei horizontalem Aufbau, also wenn sich die Kamera links oder rechts des Displays befindet sollte CAM1 verwendet werden. Beim Einstecken rastet die Buchse in den Löchern ein, das erleichtert das Einlöten. Da das RM hier relativ klein ist sollte umbedingt wieder das 0,3mm Lötzinn verwendet werden. Zur Not kann der Arduino so auch leicht getauscht werden.
Ebenfalls muss nun die USB-Buchse (AU1) aufgelötet werden. Die Buchse schnappt in den grossen Löchern ein, wenn man sie einsteckt. Man fängt mit den Pins an und lötet zum Schluss die beiden GND fest. Hier kann ruhig ordentlich Lötzinn benutzt werden, da diese Verbindung nachher maßgeblich zur Stabilität der Buchse beiträgt.
Auflöten der Zusatzplatinen/Breakoutboards
NanoUSB
WICHTIG: Der NanoHub muss VOR der Soundkarte aufgelötet werden.
Zuerst müssen kleine Drähte in die Pinlöcher für den NanoHub auf der Hauptplatine gelötet werden. Diese müssen auf der Oberseite gelötet werden und auf der Unterseite herausschauen.
Nachdem die Pins aufgelötet sind, kann der NanoHub von UNTEN aufgelötet werden. Da das RM des NanoHubs extrem klein ist empfiehlt es sich das 0,3mm Lötzinn zu verwenden. Der Lötkolben sollte dabei nur die eben eingelöteten Drähte berühren. Anderenfalls besteht die Chance, dass man den NanoHub zerstört. Ich habe gute Erfahrungen damit gemacht, die Drähte zu erhitzen und dann das Lötzinn direkt am Loch auf den Draht zu drücken. Da nur sehr wenig Zinn nötig ist, schliesst sich das Loch sofort und die Verbindung ist gemacht.
Soundkarte
Die Soundkarte wird zuerst aus Ihrem Gehäuse entfernt. Danach werden die beiden Audio-Buchsen und die USB-Buchse entfernt. Ich hab die beiden Audio-Buchsen relativ brutal mit einem Cuttermesser zerstört und die einzelnen Verbindungen zur Platine mit einem Saitenschneider abgetrennt. Zum entfernen der Buchsen-Pole sollte eine Entlötlitze verwendet werden. Es kann auch helfen zuerst frisches Lötzinn und Flussmittel aufzutragen.
Wer möchte kann noch die LEDs auslöten. Nötig ist es nicht, und die LEDs sind ganz praktisch bei der Fehlersuche.
Sind die Buchsen entfernt, müssen jeweils einzelne Pins eingelötet werden. Hierzu wird eine 2,54mm Pinleiste benötigt. Man trennt jeweils einen Pin ab. Insgesamt werden 14 Pins benötigt. 5 für den Ausgang, 5 für den Eingang und 4 für USB. Da der Abstand der mittleren USB-Pins kleiner als 2,54mm ist, habe ich dort die Abstandshalter entfernt. Bei allen anderen Pins nicht.
Die so vorbereitete Platine kann nun auf die Hautplatine gelötet werden. WICHTIG: Der NanoHub muss bereits aufgelötet sein!
Verstärker
Der Verstärker wird mit einer Pinleiste, zwei Screwterminals und einer Jumperleiste geliefert. Alle drei Teile müssen zuerst auf die Verstärkerplatine gelötet werden. Danach kann die Verstärkerplatine auf die Hautpplatine gelötet werden. Da es sich um 2,54RM handelt ist dies relativ simpel.
Die Platine hat Löcher passend zu den Befestigungslöchern des Verstärkers. Diese könnte man mit Abstandshaltern aus Plastik oder Schrauben verwenden. Ich habe dies allerdings nicht getan, da die Pinleiste den Amp ausreichend fixiert.
Auflöten der Screwterminals
Es gibt prinzipiell nur 2er oder 3er. Die verkauften 4er, 5er oder mehr sind jeweils nur zusammengesteckte 2er und/oder 3er. Ich habe die Terminals vorher in entsprechender Länge zusammengesteckt und dann eingelötet. Es geht aber sicher auch einzeln.
Auflöten der RJ45-Buchsen
Für die RJ45-Buchsen können je nach Einbausituation liegende oder stehende Buchsen verwendet werden. Die Footprints der ausgesuchten Buchsen sind in beiden Varianten identisch.
Aufstecken des Arduinos
Zum Schluss noch den Arduino aufstecken. Die USB-Buchse des Arduinos muss nach oben zeigen, also weg von den RJ45-Buchsen. Nun sollte noch der Ardunio mittels eines kurzen USB-Kabels mit AU1 verbunden werden. Es empfiehlt sich ein Kabel mit entsprechend abgewinkeltem USB-Steckern zu verwenden. Bei herkömmlichen Standard-Steckern werden mindestens 20cm benötigt.
Zusammenbau der Adapterplatine
Die Adapterplatine ist verhältnismäßig einfach. Benötigt wird das gleiche Material wie für die Hauptplatine. Elektronische Bauteile sind hier keine vorhanden.
Auflöten der FFC-Buchse (THT)
Wie gehabt auflöten. Hier gibt es nur eine Variante CAM3.
Auflöten der Micro-USB-Breakoutboards
Es gibt zwei identische USB-Footprints mit unterschiedlichen Ausrichtungen. Es können beide verwendet werden, z.B. wenn der Sachverhalt ausgenutzt wird, dass man den RaspberryPi über die USB-Ausgänge mit Strom versorgen kann. In diesem Fall schliesst man das Netzteil an die Adapterplatine an und verbindet die Adapterplatine per USB mit dem RaspberryPi. Der RaspberryPi hat dann kein eigenes Netzteil. Das kann praktisch sein, falls man Adapterplatine und RaspberryPi in einem Gehäuse unterbringen möchte. Ist der RaspberryPi bereits mit Strom versorgt, kann man nur eine der beiden USB-Buchse auflöten.
Auflöten der Screwterminals
Wie gehabt auflöten.
Auflöten der RJ45-Buchsen
Wie gehabt auflöten. Auch hier ist es möglich stehende oder liegende Buchsen zu verwenden.
Verkabelung Hauptplatine
Die folgende Tabelle beschreibt die auf der Hauptplatine vorhandenen Screwterminals und Ihren jeweiligen Zweck.
Beschriftung auf der Platine | Zielgerät | Zielverwendung | Beschreibung |
---|---|---|---|
LOUT- | Lautsprecher Links | Minus | |
LOUT+ | Lautsprecher Links | Plus | |
ROUT+ | Lautsprecher Rechts | Minus | |
ROUT- | Lautsprecher Rechts | Plus | |
FT- | Fototransistor | Minus | |
FT+ | Fototransistor | Plus | |
PIR | Bewegungsmelder (PIR13) | OpenCollector | |
V | Bewegungsmelder (PIR13) | VCC | |
G | Bewegungsmelder (PIR13) | GND | |
RNG (Ring) | Klingelknopf | 2-poliger Kontakt | |
RL- (RingLED Minus) | Beleuchtungs-LED des Klingelknopfes | Minus | |
RL+ (RingLED Plus) | Beleuchtungs-LED des Klingelknopfes | Plus | |
G | IR-LEDs | GND | |
IR1-9 (InfraRed 1-9) | IR-LEDs | 3x Plus für jeweils 3 IR-LEDs | Die IR-LEDs benötigen KEINE Widerstände, diese sind bereits auf der Platine enthalten. |
SAB (Sabotage) | Sabtage | 2-poliger Kontakt | |
G | iButton Leser | GND | |
1W (1Wire) | iButton Leser | 1Wire-Daten | |
RD (Red) | iButton Leser | Plus für Rot | |
GR (Green) | iButton Leser | Plus für Grün | |
BL (Blue) | iButton Leser | Plus für Blau | |
V | iButton Leser | VCC | |
PL- (PostBoxLED Minus) | Briefkastenstatus-LED | Minus | |
PL+ (PostBoxLED Plus) | Briefkastenstatus-LED | Plus | |
TX | Nextion-Display | TX | |
RX | Nextion-Display | RX | |
V | Nextion-Display | VCC | |
G | Nextion-Display | GND | |
G | Mikrofon 1 | GND | |
MIC | Mikrofon 1 | MIC | |
G | Mikrofon 2 | GND | |
MIC | Mikrofon 2 | MIC | |
PBD (PostBoxDoor) | Briefkastentür | 2-poliger Kontakt | |
PBT (PostBoxTrap) | Briefkastenklappe | 2-poliger Kontakt | |
CAM1 oder CAM2 | Pi Kamera | FFC | 15-poliges Flachbandkabel |
AU1 | Arduino | USB | |
RASPI1 | Adapter-Platine | DPB1 (DoorPiBoard1) | Standard-Netzwerkkabel |
RASPI2 | Adapter-Platine | DPB2 (DoorPiBoard1) | Standard-Netzwerkkabel |
RASPI3 | Adapter-Platine | DPB3 (DoorPiBoard1) | Standard-Netzwerkkabel |
RASPI4 | Adapter-Platine | DPB4 (DoorPiBoard1) | Standard-Netzwerkkabel |
G und V sind mehrfach vorhanden und auch auf der Platine nicht unterschiedlich beschriftet. Die Anschlüsse sind in entsprechender Nähe zu anderen einzigartigen Anschlüssen positioniert, sodass die Zugehörigkeit selbsterklärend sein sollte. Im Zweifel hilft das oben gezeigte Übersichtsdiagramm.
Verkabelung Adapterplatine
Beschriftung auf der Platine | Zielgerät | Zielverwendung | Beschreibung |
---|---|---|---|
PBL (PostBoxLED) | PiFace2 | OUT 7 | |
PBT (PostBoxTrap) | PiFace2 | IN 3 | |
IRI (InfraRedIn) | PiFace2 | OUT 3 | |
PBD (PostBoxDoor) | PiFace2 | IN 2 | |
MOV (Movement) | PiFace2 | IN 6 | |
SAB (Sabotage) | PiFace2 | IN 7 | |
ASW (AudioSwitch) | PiFace2 | OUT 5 | |
DOP (DoorOpen) | PiFace2 | IN 1 | |
WID (WrongID) | PiFace2 | IN 4 | |
LST (LockState) | PiFace2 | IN 5 | |
HLK (HardLock) | PiFace2 | OUT 4 | |
DLO (DashLightOn)= | PiFace2 | OUT 2 | |
RNG (Ring) | PiFace2 | IN 0 | |
CAM3 | Raspberry Pi | Camera (FFC) | 15-poliges Flachbandkabel |
USB1 oder USB2 | Raspberry Pi | USB | |
DPB1 | Hauptplatine | RASPI1 | Standard-Netzwerkkabel |
DPB2 | Hauptplatine | RASPI2 | Standard-Netzwerkkabel |
DPB3 | Hauptplatine | RASPI3 | Standard-Netzwerkkabel |
DPB4 | Hauptplatine | RASPI4 | Standard-Netzwerkkabel |
Mit dem Arduino kommunizieren
Prinzipiell spricht man den Arduino an, indem man sich auf dem RaspberryPi per ssh einloggt.
Ich gehe davon aus, dass der Arduino mit /dev/ttyACM0 angesprochen werden kann. Falls nicht bitte stattdessen das richtige Device verwenden ("dmesg" hilft hier im Zweifel).
Sketch des Arduinos aktualisieren
Zuerst erzeugt man mit der Arduino IDE eine kompilierte Sketch-Datei (Sketch->Überprüfen/Kompilieren). Die erzeugte hex-Datei per scp (oder sonst wie) auf den RaspberryPi kopieren. Im Folgenden DoorPi.cpp.hex genannt.
Zum Flashen habe ich ein kleines Python-Script "flash.py". Dieses ebenfalls auf den RaspberryPi kopieren.
#!/usr/bin/python import sys, serial, os, time # Reset the Arduino ser = serial.Serial(sys.argv[1], 1200) ser.close() # Wait 1 sec time.sleep(1); # Actually flash os.system("avrdude -patmega32u4 -cavr109 -P " + sys.argv[1] +" -b57600 -D -Uflash:w:" + sys.argv[2] + ":i");
Benötigt werden folgende Pakete: python, python-serial und avrdude. Installiert werden diese wie folgt:
$ apt-get install python python-serial avrdude
Geflashed wird dann wie folgt:
$ python flash.py /dev/ttyACM0 DoorPi.cpp.hex
Die erfolgreiche Ausgabe sieht so aus:
Connecting to programmer: . Found programmer: Id = "CATERIN"; type = S Software Version = 1.0; No Hardware Version given. Programmer supports auto addr increment. Programmer supports buffered memory access with buffersize=128 bytes. Programmer supports the following devices: Device code: 0x44 avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9587 avrdude: reading input file "DoorPi.cpp.hex" avrdude: writing flash (18994 bytes): Writing | ################################################## | 100% 1.90s avrdude: 18994 bytes of flash written avrdude: verifying flash memory against DoorPi.cpp.hex: avrdude: load data flash data from input file DoorPi.cpp.hex: avrdude: input file DoorPi.cpp.hex contains 18994 bytes avrdude: reading on-chip flash data: Reading | ################################################## | 100% 0.50s avrdude: verifying ... avrdude: 18994 bytes of flash verified avrdude: safemode: Fuses OK (E:CB, H:D8, L:FF) avrdude done. Thank you.
Serielle Konsole vom Arduino auslesen
Falls man das Paket screen nicht installiert hat, tut man das mit:
$ apt-get install screen
Danach kann die Ausgabe der seriellen Konsole wie folgt angezeigt werden:
$ screen /dev/ttyACM0 9600
Damit bekommt man dann die Ausgabe wie man sie aus der Arduino IDE kennt. Also alles was man mittels "Serial.write" rausgeschrieben hat.
Um das Ganze zu Beenden loggt man sich in einer zweiten SSH-Session ein und beendet screen eher unsachgemäß mit: killall screen
Kreative alternative Verwendungen der Platine
In diesem Abschnitt werden Hacks behandelt, welche die Platinen kreativ und nicht so wie gedacht verwenden. Maßgeblich entstanden diese durch Nachfragen. Die Ideen hier sind ungetestet und entsprechend der Machbarkeit kommentiert. Falls jemand einen dieser Hacks erfolgreich in Betrieb hat würde ich mich über Feedback freuen. Man sollte natürlich wissen was man tut.
Mehrfamilienhäuser (ungetestet)
Obwohl das DoorPiBoard für klassische "Häuslebesitzer" gedacht ist, ist es möglich bis zu vier Klingelknöpfe zu verwenden. Hierzu kann man auf den Briefkastenmelder und/oder den Sabotagekontakt verzichten und bekommt somit bis zu drei weitere Tastereingänge für Klingelknöpfe (SAB, PBT und PBD) verwenden. Analog zu RNG (der originale Klingelknopf) werden diese direkt an das PiFace2 weitergeleitet und können somit von DoorPi als weitere Klingelknöpfe konfiguriert werden. Das sollte recht sicher funktionieren.
Falls man beleuchtete Klingelknöpfe verwendet ist es evtl. möglich R15 nicht zu bestücken, sondern zu überbrücken und dann extern an jeden Klingelknopf einen eigenen Widerstand (220Ohm) zu schalten. Der 2N7000 kann 0,2A und 0,4W schalten, falls das für die vier Knöpfe nicht ausreicht, kann man einen Transistor mit höheren Werten verwenden. Falls das funktioniert ist die Klingelknopfbeleuchtung weiterhin verfügbar. Alternativ kann man beliebige V + G Ausgänge der Platine verwenden um 5V abzugreifen und mittels entsprechender Widerstände (220Ohm) an die LED-Beleuchtung der Knöpfe anzuschliessen. Das sollte recht sicher funktionieren, man verliert dann allerdings die Dimmfähigkeit des Klingelknöpfes.
Alternativen zum iButton-Leser (ungetestet)
Der iButton-Leser wird per 1-Wire angeschlossen. Sprich man kann auch einen anderen Sensor verwenden, solange er mit 5V funktioniert und über den Arduino ansprechbar ist.
Dies sollte z.B. mit folgenden Sensoren funktionieren (ungetestet)
- RFID: http://www.fuchs-shop.com/de/shop/43/1/13372663/ (angeblich auf Arduino-Seite kompatibel zum iButton-Leser)
Fingerprint-Leser (ungetestet)
Falls man auf das Display verzichtet sollte es möglich sein, dass man diesen Fingerprint-Sensor stattdessen anschliesst (V,G,TX,RX): https://learn.adafruit.com/adafruit-optical-fingerprint-sensor Evtl. ist das auch mit Software-Serial mit anderen Pins möglich. Falls jemand so einen Sensor hat wäre es super hier Testergebnisse zu haben.
Sammelbestellungen
Sammelbestellung für Revision #25 bis zum 01.05.2017: https://forum.fhem.de/index.php?topic=70652.msg621355#msg621355