Blog

Neues Accelerometer Bricklet 2.0 mit Datenrate bis zu 25,6kHz

Wir haben soeben das neue Accelerometer Bricklet 2.0 veröffentlicht.

Verglichen zum alten Accelerometer Bricklet hat es natürlich den neuen 7-Pol Stecker sowie einen Co-Prozessor.

Zusätzlich ist jetzt eine maximale Datenrate von bis zu 25.6kHz möglich! Um diese Datenmenge zu übertragen haben wir eine "Continuous Acceleration Streaming" API implementiert. Diese erzeugt einen Stream von Beschleunigungsdaten welcher die volle Paketgröße des Tinkerforge Protokolls ausnutzt. Die Datenrate ist groß genug um einen FFT zu berechnen und bestimmte Frequenzen in den Vibrationen zu erkennen.

Zum testen haben wir ein Accelerometer Bricklet 2.0 auf einen Schrittmotor geklebt. Wir haben uns den FFT der Beschleunigungsdaten bei unterschiedlichen Geschwindigkeiten angesehen, es ist sehr einfach die Drehzahl am FFT abzulesen. Durch Hinzufügen eines Ungleichgewichts an der Achse konnten wir den FFT signifikant verändern. Wir sehen hier gute Einsatzmöglichkeiten im Bereich "Predictive Maintenance" für das neue Bricklet.

Das Bricklet hat natürlich weiterhin die einfache getAcceleration()-API wie der vorgänger. Zusätzlich sollten immer eine Datenrate gewählt werden die so niedrig ist wie für die jeweilige Anwendung möglich, da sich bei hohen Datenraten das Rauschen erheblich erhöht.

Randnotiz: Humidity Bricklet 2.0, PTC Bricklet 2.0 und Ambient Light Bricklet 2.0 waren für eine längere Zeit ausverkauft. Diese sind jetzt wieder auf Lager (Ambient Light Bricklet 2.0 wurde durch das neue Ambient Light Bricklet 3.0 ersetzt). Alle offenen Nachlieferungen werden heute und morgen verschickt.

Go Bindings Release + MQTT Bindings Beta

Zu Weihnachten hatten wir eine Beta-Version der Go API Bindings bereitgestellt.

Diese sind jetzt offiziell veröffentlicht. Die Dokumentation ist bei uns auf der Homepage verfügbar: https://www.tinkerforge.com/de/doc/Software/API_Bindings_Go.html.

Falls du Go noch nicht kennst und wissen möchtest wie es aussieht, kannst du dir die Sound Pressure Level Bricklet Beispiele anschauen: https://www.tinkerforge.com/de/doc/Software/Bricklets/SoundPressureLevel_Bricklet_Go.html#beispiele

Zusätzlich ist seit heute die erste Beta-Version der MQTT API Bindings verfügbar.

Es gibt einen Forumseintrag mit mehr Informationen zur Beta-Veröffentlichung: https://www.tinkerunity.org/forum/index.php/topic,4735.html

Falls dir MQTT noch nichts sagt: Es ist keine Programmiersprache, sondern ein Protokoll welches auf einem Publish/Subscribe-System basiert. Es wird oft von Cloud-Services oder in IoT-Anwendungen verwenden ohne das eine Programmierung benötigt wird. Zuvor hatten wir bereits einen "Brick MQTT Proxy". Dieser war allerdings komplett handgeschrieben und wurde nur sporadisch aktualisiert. Er hatte auch nur Unterstützung für eine Teilmenge der Bricks/Bricklets und eine Teilmenge der Funktionen.

Die neuen MQTT API Bindings werden im Gegensatz dazu komplett generiert, wie auch alle anderen API Bindings. Wenn ein neues Brick/Bricklet oder eine neue API-Funktion veröffentlicht wird, werden die MQTT API Bindings jetzt auch automatisch mit aktualisiert. Die MQTT API Bindings sind ersten nicht-programmiersprachen API Bindings. Zusätzlich haben wir bereits weitere neue API Bindings in der Pipeline!

Tisch-Wetterstation

Wir haben ein nigelnagelneues Kit: Die Tisch-Wettertation.

Die neue Wetterstation basiert auf dem Air Quality Bricklet und dem touch-fähigen LCD 128x64 Bricklet. Sie kommt mit einem hübschen laser-geschnittenen Gehäuse das in vier Farben verfügbar ist.

Optional kann auch ein Outdoor Weather Bricklet in das Gehäuse geschraubt werden um zusätzliche Funk-Außenwetterstationen und Funk-Temperatur/Luftfeuchte-Sensoren auszulesen.

Eine Demo-Anwendung kann für Linux, MacOS und Windows heruntergeladen werden. Diese nutzt den Touchscreen und schreibt die gemessenen Daten in eine sqlite-Datenbank.

Die Demo-Anwendung ist in Python geschrieben und basiert auf "Screens" die der Nutzer mit Tabs am unteren Bildschirmrand auswählen kann. Es ist einfach eigene maßgeschneiderte Screens zur Demo-Anwendung hinzuzufügen. Unten sind einige der Screens zu sehen die Standardmäßig bei der Demo-Anwendung dabei sind:

Rust und Go zu Weihnachten

Dieses Jahr haben wir ein Weihnachtsgeschenk für euch vorbereitet! Wir haben zwei funkelnagelneue Programmiersprachen-Bindings: Rust und Go.

Die Rust API Bindings sind bereits veröffentlicht, die Dokumentation ist auf unserer Homepage verfügbar: https://www.tinkerforge.com/de/doc/Software/API_Bindings_Rust.html.

Die Go API Bindings sind noch nicht offiziell veröffentlicht, ihr könnt aber bereits eine Beta-Version ausprobieren. Mehr dazu in einem Foreneintrag auf TinkerUnity: https://www.tinkerunity.org/forum/index.php/topic,4686.msg26406.html

Falls ihr schon immer mal Rust oder Go ausprobieren wolltet, habt ihr jetzt über die Weihnachtsfeiertage die Möglichkeit, dies mit Bricks und Bricklets zu tun :-).

Wir wünschen euch Frohe Weihnachten und schöne Feiertage!

Grafische Benutzeroberfläche für LCD 128x64 Bricklet

Wir haben soeben Firmware-Version 2.0.2 des LCD 128x64 Bricklets veröffentlicht. Die neue Firmware kommt mit einigen Verbesserungen, unter anderem mit einer API für eine einfach zu benutzende grafische Benutzeroberfläche (GUI). Die Oberfläche basiert auf vier grundelegenden UI-Elementen:

  • Buttons: Bis zu 12 Buttons können an eine beliebige Position mit beliebiger Breite/Höhe und benuzterdefiniertem Text positioniert werden. Die Buttons können automatisch ein Press-/Release-Event erzeugen.

  • Slider: Bis zu 6 Slider können an eine beliebige Position mit beliebiger Länge positioniert werden. Es können horizontale und vertikale Slider verwendet werden. Sie können automatisch ein Position-Event erzeugen.

  • Graphen: Bis zu 4 Graphen können an eine beliebige Position mit beliebiger Größe positioniert werden. Es können Dot-, Line- und Bar-Graphen gezeichnet und eine Beschriftung der X- und Y-Achse hinzugefügt werden. Die Datenpunkte können per API gestreamt werden, der Graph wird automatisch gezeichnet.

  • Tabs: Bis zu 10 Tabs können verwendet werden. Tabs können entweder Text oder Icons haben. Sie können Selektion automatisch erkennen und ein entsprechendes Event generieren.

Diese GUI-Elemente können mit einer einfach zu benutzenden API hinzugefügt, aktualisiert und entfernt werden. Interaktion wird über Callbacks auf der Basis von Nutzer-Events erzeugt (per klicken/wischen). Siehe GUI-Beispiele in deiner Programmiersprache in der API-Dokumentation für Details.

Das LCD 128x64 Bricklet hat einen Buffer für die normalen Zeichnen-Funktionen (WritePixels, WriteLine, DrawBox, etc) und einen zusätzlichen Buffer für die GUI-Elemente. Der GUI-Buffer wird über dem Standard-Buffer gezeichnet.

Zusätzlich kann für beide Buffer Double-Buffering für flüssiges und ununterbrochenes zeichnen verwendet werden.

Dies bedeutet, dass das GUI immer auf dem Display bleibt und auf Nutzer-Interaktion reagiert bis das jeweilige Element explizit entfernt wird. Durch diesen Ansatz ist eine Kooperation zwischen GUI und eigenen gezeichneten Elementen einfach möglich, da es nie zu z-fighting kommen kann.

Beispiel: Wenn ein Button mit einem Icon anstatt eines Textes gezeichnet werden soll, kann zuerst der Button an die gewünschte Stelle mit der gewünschen Größe ohne Text erstellt werden. Danach kann dann das Icon in den Buffer mit der normalen WritePixels-Funktion gezeichnet werden. Dies funktioniert ohne Probleme auch dann noch wenn der Nutzer durch klicken den Highlight-Effekt erzeugt, da der Effekt das Icon nicht permanent überschreibt.