Arduino und der RFM70 – Bis es funkt!

, Arduino, RFM70, DIY, Heimautomation

Unter diesem Motto wurde das letzte Wochenende des Januars gearbeitet, bis letztendlich das Werk vollbracht war. Dabei wurde ein neues Projekt von Oliver Hinze und mir gestartet, welches in C/C++ verfasst ist und das weitläufige Thema Heimautomation zum Ziel hat.

Das Projekt

Dazu bedurfte es zunächst jedoch eines ausgeklügelten Planes, der das Thema in kleine Teile aufbrach. Dieser Vorarbeit sei dank, drehte sich die erste Arbeit um das essentielle Merkmal der kleinen Bausteine die überall im Haus untergebracht werden sollen: die Konnektivität. Anlässlich dieser Aufgabe wählten wir das Funkmodul RFM70-S aus, welches wir über die gesamte Zeit hard- und softwaretechnisch zum laufen bringen wollten. Die Spezifikationen sind denkbar gut, da die low-level Arbeit vom Chip selbst übernommen wird und die Gesamtkosten sich gegen 5€ pro Modul belaufen. Des Weiteren wird auf dem WLAN-üblichen 2,4GHz Frequenzband gefunkt. Soweit die Theorie.

Die Hardware

Was auf den Bildern des Moduls so handlich wirkt, ist in der Realität lediglich rund 1x1cm groß. Davon jedoch unbeeindruckt, wohl aber mit seichter Ehrfurcht im Hinterkopf, begann ich die Lötarbeiten um die Module für unsere Zwecke nutzbar zu machen. Wie auf der Abbildung zu sehen ist, befinden sich acht Bohrungen auf der Platine für die Verkabelung des Slave-Prinzip miteinander verbunden werden können.">SPI Interfaces. Diese mussten mit Litzen nach außen geführt werden, was viel Konzentration, eine ruhige und eine dritte Hand erfordert.

Das RFM70 Modul unter der Lupe

Vier Kontakte geschaffen, den fünften in Vorbereitung, ein Blitz in der Lötkolben-Halterung und dann hat mein Lötkolben den Geist aufgegeben. Unfassbar. Fehlstart #1 des Projektes war damit vollbracht. Nun ja, viel Zeit zum trauern gab es nicht – wozu auch? Schließlich haben wir uns ja nicht umsonst DIY auf unsere Flagge geschrieben, also den Lötkolben zerlegt, das Problem gesucht und gefunden: eine geschmolzene Sicherung auf der Platine. Diese wurde von uns entfernt, überbrückt und fixiert. Natürlich sicherheitstechnisch korrekt. Damit bekamen wir das Gerät wieder in Gang, jedoch kam ein neues Problem auf uns zu: der Lötkolben heizte nicht mehr. Nur noch 12 Kontakte vor der Fertigstellung der Hardware, und das direkt am ersten Abend. Doch zum Glück fand sich ein Plan B, der allerdings recht russisch klingt und war. Mit Hilfe eines Gasbrenners erhitzen wir die Lötkolbenspitze und bringen damit die letzten Kontakte in Form – gesagt, getan.

Lötspitze wird durch einen Gasbrenner erhitzt
Erhitzte Lötspitze

Dieses Verfahren ist tatsächlich recht unpraktikabel, aber die Not macht, wie allen bekannt, erfinderisch. Was zunächst als Aufgabe für eine Stunde geplant war, benötigte am Ende über drei Stunden Arbeit, bis wir die RFM70 Module fertiggestellt hatten. Dafür lässt sich das Resultat, dieses zeit- und arbeitsintensiven Prozesses, jedoch sehen lassen.

Das fertig gelötete RFM70 Modul

Die Software

Auch in diesem Punkt hatten wir keine Vorarbeiten geleistet, sondern stiegen direkt in die Thematik ein. Na gut, es ist ja nicht so, dass wir noch nie etwas im Embedded-Bereich realisiert hatten. Auf diverse Erfahrungen konnten wir also schon zurückgreifen, was jedoch schon bei dem ein oder anderen Problem etwas länger zurückliegt. Nichtsdestotrotz war unser Ziel die Implementierung einer Chat-Firmware, die alle Eingaben über die serielle Schnittstelle zu den umliegenden Modulen sendet, diese darstellt und somit die Grundlage weiterführender Implementierungen ist.

Aufbauend auf dieser ersten Erfahrung in dem Bereich Mikroelektronik / Funktechnik, wird das Thema folgender Schritte die Ausarbeitung eines Applikations-Protokolls sein, welches Mech Networking unterstützen wird, sowie die Implementation eines einfachen und flexiblen Betriebssystems für die Slaves.

Doch zurück zur Arbeit am Wochenende. Nach Stundenlanger Fehlersuche auf Hard- und Softwareseite konnten wir keine aussagekräftigen Probleme lokalisieren. War es die Verkabelung? Nach teils widersprüchlichen Informationen aus diversen Quellen konnten wir uns dem nicht mehr allzu sicher sein. Doch letztendlich konnten wir sicherstellen, die richtigen Pins verdrahtet zu haben, was schon einen großen Schritt in die richtige Richtung für uns bedeutete. Diese Information erhaschten wir uns, mit gezieltem Logging aller angesprochenen Pins und dem Multimeter mit dessen Hilfe wir anliegende Spannungsflanken ausmachen konnten. Dementsprechend sollte es also ein Software-Problem sein. Die Fehlersuche erstreckte sich bis zum Sonntag 4 Uhr morgens, bis wir auf die brillante Idee kamen, einen zweiten, funktionstüchtigen Aufbau des Arduino samt RFM70 in Betrieb zu nehmen. Durch studieren des Handbuchs konnten wir lokalisieren, dass entsprechende Status-Register, sollte ein Paket das gesendet wird, von keiner Gegenstelle empfangen werden, mit Fehlern gefüllt werden. Und das passte genau auf unsere Situation. Nach eifrigem Aufbau des zweiten Arduino‘s lösten sich alle Probleme in Luft auf – denn nun konnten wir Daten empfangen und senden. Und dann war es doch so einfach, nachträglich betrachtet. Von diesem Erfolg beflügelt, war es nur noch eine Sache von wenigen Stunden das Ziel, welches wir uns selbst gesteckt hatten, zu erfüllen.

Wie immer, ist auch dieses Projekt Open-Source und unter meiner Gitorious-Instanz zu finden. Abschließend möchten wir euch natürlich noch ein kleines Video zur Schau stellen, indem die Chat-Firmware kompiliert und ausgeführt wird.

Ich hoffe es hat den interessierten Leser gefallen. 😃


Vorheriger ArtikelNächster Artikel