Arduino & Co (Update)

on

Was das Anmieten einer Garage nicht alles für Folgen haben kann… Zum Öffnen und Schließen einen Schlüssel im Schloss direkt neben dem Tor solange in Position zu halten, bis das Tor fertig offen bzw. geschlossen ist, kann schnell unkomfortabel sein. Schnell war eine Funksteuerung auf 433Mhz-Basis gebaut, inkl. Timer für das Garagenlicht:

Prototyp einer 433Mhz Rolltor-Steuerung im IP65-Gehäuse

Doch als letzten Sonntag einfach mal mein Garagentor aufging obwohl die beiden Handsender brav am Schlüsselbrett hingen, war klar: das auf KEELOQ basierte System – so in tausenden Garagen verbaut – ist einfach nicht sicher genug. Ob ein Nachbar zufällig einen Handsender für seine Garage mit dem gleichen Code verwendete oder ob jemand aktiv versucht, Garagen zu knacken um dann später diese in Ruhe auszuräumen, bleibt unklar.

Nach einigen Gehversuchen mit einem Arduino Uno R3 (einem Mikroprozessor für Anfänger), einiger Recherche sowie meinen guten Erfahrungen im Bereich Fernbedienungen für RC-Autos auf Basis des 2.4Ghz Bandes habe ich jetzt zwei Prototypen fertig. Einmal einen Handsender sowie einen Empfänger. Beide verwenden ein NRF24L01+ Modul inkl. PA-Verstärker und üblicher 2.4Ghz-Antenne. Die Reichweite damit ist mit der Sendeleistung “Low” weit genug und für meine Zwecke völlig ausreichend. Vorsicht: offenbar erhält man auch auf Amazon sehr oft gefälsche NRF24-Chips – so sind auch meine ein Plagiat. Da mir die Reichweite aber ausreicht und die Chips grundsätzlich funktionieren, soll es mir recht sein.

Software

Softwareseitig habe ich mir ein eigenes Protokoll auf AES 256-Bit Verschlüsselung geschrieben; Sender wie Empfänger sind Transceiver – können also beide Senden und Empfangen. Da beide einen Geräte den gleichen Schlüssel zur Kommunikation verwenden, könnte ich somit sogar problemlos den Quellcode veröffentlichen und die Sicherheit wäre nicht kompromittiert. Update: gesagt – getan, hier geht’s zum GitHub repository.

Ebenso wird es eine Absicherung gegen Replay-Attacken geben: per Scanner die gesendeten Bytes mitschneiden und später wieder abspielen wird also nicht funktionieren. Mehrere Sender sind ebenso möglich und können unterschiedlich gehandhabt bzw. einzeln aktiviert oder gesperrt werden.

Teileliste

  • Arduino Uno R3 – zum entwickeln
  • Arduino Mini Pro 3.3V ohne USB-Modul – für den fertigen Handsender
  • FTDI-Programmiermodul für den Mini Pro – zum Programmieren des Mini
  • 2x NRF24L01+ Modul – einmal mit SMA-Antenne für den Empfänger und einmal in der kompakten Bauweise mit integrierter Antenne
  • Ein 5V Relais-Board mit zwei Relais, über welches das Rolltor selbst gesteuert wird

Den Mini Pro brauche ich als Handsender in der 3.3V Variante, da die NRF24-Module keine 5V sondern nur 3.3V vertragen. Somit kann ich mir einen 5V zu 3.3V Spannungsregler sparen und es reicht dann eine 3.3V Lithium-Knopfbatterie aus. Der Empfänger hingegen kann ein ganz normaler Arduino Uno bzw. Nano auf 5V Basis sein. Außerdem gibt es die meisten Relais-Boards eher in 5V als in 3.3V. Eine Übersicht über alle Arduino-Varianten gibt es auf Wikipedia.

Kosten

Ein Starter-Set mit einem Arduino Uno R3 kostet auf Amazon um die 20-30€ (je nach Inhalt) – damit kann man sich eine Steuerung mal als Prototyp auf einem Breadboard ohne zu löten basteln (das weiße Board auf meinen Bildern). Ein Set mit gängigen Widerständen gibts für 8€, ein LED-Set (500 Stück) habe ich für ebenfalls unter 10€ gekauft. Dünnes Kabel gibts in verschiedenen Farben als Set ebenfalls für um die 10€. Ein Set Elkos gibts auch etwa in dieser Preislage. Mehr brauchts zunächst mal nicht.

Den Mini Pro 3.3V gibts inkl. FTDI-Adapter für 8€ auf eBay; ebenfalls findet man dort 5x NRF24L01+ Module (ohne PA, mit integrierter Antenne) für ebenfalls 8€. Beides versendet aus Deutschland und versandkostenfrei. Passende Relais-Boards kosten mit zwei Relais etwa 3-4€.

Die Grundausstattung wie Lötkolben, Lötzinn, eine dritte Hand etc. sollte man schon haben – ist aber auch nicht sonderlich teuer.

Wer nun Lust auf Arduino Programmierung hat und seine Kenntnisse auffrischen will oder gar bei Null anfängt, dem sei eine kostenlose Buchreihe von Stefan Frings empfohlen. Da gehts zwar wirklich bei Null los, aber es bleibt auch kein Auge trocken!

Nächste Schritte

Wenn das System schließlich ausgereift genug ist, kann man den Sender noch deutlich kleiner bauen, indem man ein NRF24-Modul mit integrierter Antenne verwendet und den Arduino Uno gegen einen Mini Pro auf 3.3V Basis verwendet. Dann lässt sich der Sender auch mit einer üblichen 3.3V Lithium-Batterie speisen. Entgegen der Hinweise vieler Tutorials lieferte mein Arduino Uno genug Leistung auf dem 3.3V Anschluß, so dass eine eigene Stromversorgung für das Funkmodul nicht nötig war. Läuft der Handsender dann problemlos, gehts dem Stromverbrauch an den Kragen – eine Laufzeit von einem Jahr mit einer 3.3V Knopfzelle soll wohl drin sein.

Update: endlich kam die Tage der Arduino Pro Mini 3.3V plus FTDI Adapter für den Sender. Also ran an den Lötkolben und …. Mist. Hinterher gemerkt: die Kabel dürfen gerne noch kürzer sein und die Lochrasterplatinen für zwei Schalter und eine LED plus ein paar Widerstände kommt erst morgen. Ahja, eine Knopfzellenhalterung hab ich natürlich auch noch keine und die Power-LED muss ich noch zum stromsparen irgendwie deaktivieren. Und Gedanken übers Gehäuse muss ich mir auch noch machen. Unterm Strich wird der Sender wohl doch nicht so klein wie ich erhoffte. Trotzdem um Welten kleiner als mit einem Uno (zum Vergleich mit auf dem Bild; unten der Arduino Pro Mini, rechts das Mini-NRF24L01+ Modul):

Auf dem zweiten Bild ist der fertige Empfänger zu sehen. Das größte Bauteil ist das Relais-Board, den Nano oben rechts sieht man kaum, lediglich das NRF24 Modul links kann man gut erkennen.

Gut, die Verkabelung (hust) wird noch ordentlich gemacht und ein besseres Gehäuse samt eigenem Netzteil (ist noch unterwegs) gibts auch noch. Aber: alles passt in eine Stromverteilerdose und sieht auch aufgeräumter aus als die alte Lösung. Funktioniert bereits sehr gut!

Übrigens: meine ersten Gehversuche mit dem NRF24-Modul waren eher frustrierend. In manchen Tutorials ist nämlich die Pin-Belegung der CE bzw. CSN Pins falsch dargestellt oder es wird erst gar nicht darauf eingegangen. Viele Tutorials werden auch eher in “Maker-Mentalität” geschrieben: irgendwie hat man es zum Laufen bekommen und schreibt dann fix ein Tutorial – das vielen anderen mal so rein gar nichts bringt außer verlorener Zeit! Sehr geholfen hat mir dazu dieses Tutorial auf starter-kit.nettigo.eu – hier wird insbesondere der Quellcode sehr genau erklärt.

Alternativ könnte man auch einen ESP8266 einsetzen, der hat WLAN bereits onboard mit dabei und ist als Entwicklungsboard mit USB-Anschluß (ähnlich dem Arduino Uno) oder auch als produktionsbereite Version ohne Entwicklungs-Overhead verfügbar. Damit würde der Empfänger sozusagen einen eigenen WLAN-Hotspot bereitstellen und der Sender würde sich darin einbuchen und über eine entsprechende API Befehle senden. Der Vorteil: das wäre auch problemlos mit einem Smartphone möglich. Mir war das aber zuviel des guten und außerdem habe ich gerne einen altmodischen Handsender. Bluetooth per HC05 bzw. HC06-Chip war mir zu langsam – eine Kopplung bereits bekannter Geräte kann da mal eben 30 Sekunden dauern.

Mein erstes Projekt war übrigens eine simple Temperatur- und Feuchtigkeitsanzeige (DHT11 Chip) – auf 2×16 Matrixdisplay mit Hintergrundbeleuchtung!

Wie man sich denken kann, hat die 9V-Batterie nicht sehr lange gehalten. An der Hintergrundsbeleuchtung lags aber nicht! ;-)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.