
Die Entwicklung der Ruuvi Firmware begann für mich als Hobby neben meinem Hauptberuf. Wie man erwarten kann, hat Code, der in samstäglichen Sprints erstellt wird, die charakteristische Eigenschaft, genau eine Sache zu tun und danach nur schwer in etwas anderes umzubauen zu sein.
Nachdem ich offiziell als Partner zum Ruuvi-Team gestoßen bin und Vollzeit am Firmware-Projekt gearbeitet habe, dauerte es noch ein weiteres Jahr, bis ich an den Punkt kam, an dem ich endlich mit dem aktuellen Stand der Ruuvi Firmware zufrieden bin.
Sie macht eine Sache, und sie macht sie sehr gut.
Community- und kundenspezifische Anforderungen
Unsere stetig wachsende Community hat unzählige Bibliotheken, Anwendungen und Projekte rund um den RuuviTag entwickelt. Jetzt haben wir eine solide Grundlage und Erfahrung, um neue Funktionen zu entwickeln und zu verbessern.
Mit dem Wachstum unseres Partnernetzwerks steigt auch die Anzahl der Anpassungswünsche. Jemand möchte einen speziellen Aufkleber für den Tag, jemand anderes möchte ein eigenes Datenformat haben und wieder jemand möchte die Ruuvi Firmware auf seinem eigenen Board oder auf seinem eigenen Radio-Stack ausführen.
Auf den ersten Blick mag es so aussehen, als wäre die Anpassung der Firmware ein langwieriges Projekt, bei dem jeder Fall speziell ist. Wenn wir jedoch eine breitere Perspektive einnehmen, stellt sich heraus, dass die meisten Projekte wirklich nur um Konfiguration und Entscheidungen gehen: Welchen Sensor haben wir für die Temperatur? Wie ist er angeschlossen? Wie oft sollte er abgetastet werden? Mit welcher Rate und in welchem Format sollen die Daten gesendet werden? Welcher Radio-Stack soll verwendet werden?
Dies führt zur Zukunft der Ruuvi-Firmware-Entwicklung mit dem Ziel einfacher Portierbarkeit und Anpassung. Zuerst identifizieren wir die Komponenten des Designs, die in verschiedenen Projekten wiederverwendet werden können: wie das verwendete SDK, Board-Definitionsdateien und Treiber. Dann machen wir jede dieser Komponenten zu einem eigenen Git-Repository, sodass der Nutzer seine Anwendung weiter entwickeln und aktualisieren kann, ohne sich um Breaking Changes in zukünftigen Versionen der Komponenten sorgen zu müssen.

In den kommenden Teilen dieses Blogs werden wir die Funktionalität der Ruuvi Firmware 1.x und 2.x auf Basis des nRF5 SDK 15 von Nordic Semiconductor mit SEGGER Embedded Studio neu aufbauen. Am Ende wird der hier entwickelte Code Teil des nächsten Ruuvi-Produkts sein.
Der Code jedes Teils wird unter https://github.com/ruuvi/ruuvi.firmware.c verfügbar sein.
Die Versionierung wird 3.teil.patch-alpha sein, zum Beispiel kannst du dir den Code bereits jetzt im Zustand zum Zeitpunkt des Schreibens ansehen, indem du das Release 3.0.3-alpha auscheckst. Die Reihenfolge der Teile kann sich unterwegs ändern, jeder Teil wird ein aktualisiertes Inhaltsverzeichnis haben. Wir sind auch offen dafür, die Reihenfolge der Teile und Inhalte basierend auf deinem Feedback zu ändern.
Folge der Firmware-Blog-Serie
Wenn du den Tutorials folgen möchtest, benötigst du mindestens SEGGER Embedded Studio und einige RuuviTags oder andere Nordic Semiconductor nRF52832-Boards sowie eine Möglichkeit, sie mit Kabeln zu verbinden. Ich persönlich werde natürlich das Ruuvi DevKit verwenden. Zusätzlich nutze ich das Power Profiler Kit von Nordic Semiconductor, um den Stromverbrauch unterwegs zu überprüfen.
Beteilige dich am Projekt
Wir möchten auch alle einladen, an diesem Projekt teilzunehmen. Wir wollen Software schreiben, die es anderen leicht macht, ihre Anwendungen zu entwickeln. Jeder Input darüber, was funktioniert, was nicht funktioniert, was benötigt wird und was für deine Anwendungsfälle unnötig ist, wird uns helfen, die Anforderungen der Nutzer besser zu unterstützen. Es ist auch eine bekannte Tatsache, dass Fehler umso weniger Auswirkungen haben, je früher sie entdeckt werden – das gilt sowohl für Design als auch für Code. Tritt bitte unserem Slack und unseren Foren bei, um enger zusammenzuarbeiten und uns zu helfen, besseren Code für alle zu entwickeln!
Zeitplan
Die angestrebte Rate für die Beiträge ist einer pro Woche. Allerdings passiert das Leben, und hin und wieder kann ein Teil komplizierter sein als ursprünglich erwartet, oder ich bin möglicherweise nicht verfügbar, um den Beitrag zu schreiben.
