Blog

Brick Firmware Update

Wir haben soeben neue Brick Firmwares veröffentlicht, die drei entscheidene Fehler (Bugs) bereinigen:

  • Fix für RS485 Timing-Bug. Dies ist ein sehr alter Fehler, den wir seit Jahren nicht finden konnten. Bricklets die I2C nutzen (zum Beispiel das Temperature Bricklet) konnten alle paar tausend Nachrichten falsche Werte liefern, wenn RS485 genutzt wurde. Dies wurde auf Grund von nichterfüllten I2C/RS485 Timing-Anforderungen erzeugt. Ab jetzt nutzten wir DMA für I2C um dieses Problem zu lösen.
  • Das Verhalten der ersten Enumeration (Enumerate-Callback vom Typ CONNECTED) wurde komplet überarbeitet. Doppelte Ennummerierungen kommen nun nicht mehr vor. Es gibt auch keine Probleme für den Fall, dass die Module bereits mit Strom versorgt wurden und anschließend erst USB angeschlossen wird. Dadurch wird auch ein weitere Unschönheit entfernt: Bisher war es notwendig die RS485 Slaves neuzustarten, wenn der RS485 Master neu gestartet wurde. Wurde dies nicht gemacht, so gab es keine erneuten Enumerierungsnachrichten. Mit dem Update ist dies nicht mehr notwendig. In allen Fällen erhält man Enummierungsnachrichten.
  • Ab jetzt wird niemals ein Hardwarereset wegen USB durchgeführt: Bisher war es so, dass die Hardware neugestartet wurde, wenn USB  Reset-/Suspend-/Resume-Nachrichten geschickt hat (interne Nachrichten). Diese Nachrichten werden vom PC, zum Beispiel nach dem Booten geschickt oder aber auch wenn EMI erkannt wurde. Bisher haben wir bei den Nachrichten einfach den kompletten Brick neugestartet. Ab jetzt wird kein Reset deswegen mehr durchgeführt. Die USB Statemachine der neuen Firmwares führt ein eigenes Reset in diesem Fall durch, das eigentliche Brick läuft aber durch. Somit wird nur kurzzeitig die Kommunikation unterbrochen, der Zustand des Bricks bleibt aber ansonsten erhalten. Als Beispiel läuft ein Schrittmotor einfach weiter und führt den letzten Befehl aus, anstatt schlagartig auf Grund des Resets stehen zu bleiben. Aus PC-Sicht wurde der Brick nur kurz entfernt und direkt wieder verbunden. Eine neue Enummerierungsnachricht wird in diesem Fall verschickt. Hattest du bisher Probleme mit ungewollten Resets (als Beispiel beim Schalten von Induktiven Lasten mittels eines Relais), so wird die neuen Frmwares vermutlich dein Problem lösen! Der PC wird weiterhin USB Resetten, aber aus Nutzersicht läuft die Hardware einfach weiter.

Insbesondere von dem letzten Punkt, dass zum Beispiel das Schalten eines Relais zu Problemen führt, hatten wir hin und wieder gehört, konnten es aber nie reproduzieren. Ein paar Wochen zuvor, konnten wir aber einen Aufbau erstellen, bei dem wir das Problem reproduzieren konnten. Nach mehreren Stunden Fehlersuche stellte sich heraus, dass der PC ein EMI Event auf dem USB Kabel registriert und deswegen dem Brick mitteilt, sich doch zu resetten (auf Linux passiert dies, wenn man zum Beispiel die Nachricht "disabled by hub (EMI?), re-enabling ..." vom Kernel bekommt). Ab jetzt führt dies nicht mehr dazu, dass der Brick sich neustartet. Es läuft alles weiter, selbst wenn sich der genutzte USB Hub neustartet.

Um das Resetproblem zulösen, haben wir einiges an Code umgeschrieben und gleichzeitig das Hotplug/Enummerierung deutlich verbessert.

Die Firmware der Bricks können einfach mittels des Brick Viewers aktualisiert werden.

Neue Bricklets Teil 3 - RGB LED Matrix Bricklet und Thermal Imaging Bricklet

Heute möchten wir euch die letzten zwei Bricklets aus der zuletzt veröffentlichten Serie vorstellen: Das RGB LED Matrix Bricklet und das Thermal Imaging Bricklet

Den vorherigen Blogeinträge zur Vorstellung der anderen Bricklets findet ihr hier:

RGB LED Matrix Bricklet

Das RGB LED Matrix Bricklet ist mit 8x8=64 WS2812B RGB LEDs ausgestattet. Jede RGB LED besteht aus drei Einzel-LEDs (rot, grün, blau), die jeweils mittels eines 8-Bit-Werts gesteuert werden können. Die API ermöglicht es mit bis zu 120Hz die LEDs anzusteuern. Als Stromversorgung muss eine 5V Versorgung angeschlossen werden, die mindestens 4A liefern sollte. Wir bieten hierzu das passende Netzteil.

Thermal Imaging Bricklet

(Längeres Video auf Youtube: https://www.youtube.com/watch?v=xb44krsgmaM)

Das Thermal Imaging Bricklet ist unser absolutes Lieblingsbricklet und ist mit einer 80x60 Pixel Wärmebildkamera ausgestattet. Die Wärmebildkamera verfügt über eine Radiometriefunktion, d.h. mit der Kamera können auch Temperaturen gemessen werden. Dafür verfügt das Bricklet über einen speziellen Modus, genannt "Temperature Image Modus". Die Pixel in dem gelieferten Bild entsprechen dabei jeweils einer Temperaturmessung. Die Temperaturen werden mit 16-Bit Auflösung in den Messbereichen -273°C-381°C und  -273°C-6279°C gemessen. Die Auflösung entspricht 0,01°C für den kleineren Messbereich und 0,1°C für den größeren Messbereich. Die Messung von Temperaturen kann zum Beispiel für Überwachungsaufgaben (Stichwort Predictive Maintenance) genutzt werden. Alternativ bietet das Bricklet den sogenannten "High Contrast Image Modus". In diesem Modus berechnet die Kamera die Temperaturverteilungen (Cluster) und teilt die gemessenen Temperaturen in 256 dieser Cluster ein. Man erhält also für jedes Pixel die dazugehörige Clusternummer. Um daraus ein Bild zu machen benötigt man eine Abbildungsfunktion die einem Cluster eine Farbe zuordnet. Die typischen Wärmebildkameras nutzen eine Abbildung bei der die Cluster für kalte Temperaturen schwarz bis blau dargestellt werden und heiße Temperaturen gelb bis weiß. Ein Beispiel dazu sieht man in der obigen Videosequenz. Der Brick Viewer bietet für das Bricklet verschiedene andere Abbildungen.

In einem High Contrast Image befinden sich also keine direkte Temperaturinformationen mehr. Es sind nur noch Cluster vorhanden. Mit der Definition eines Spotmeters können aber trotzdem in den Bild Maximum-, Minimum- und Durchschnittstemperaturen für einen Bildbereich ermittelt werden. Alle Einstellungen lassen sich natürlich über die API durchführen. Allgemein findet man in der API auch nähere Informationen zu den Themen Temperature und High Contrast Image, Spotmeter usw.

Da das Bricklet wie jedes andere Bricklet auch in unserem Baukastensystem genutzt werden kann, kann es als eine USB Wärmebildkamera genutzt werden. Zusammen mit der WIFI Extension oder der Ethernet Extension ist es aber auch möglich mit wenig Aufwand eine netzwerkfähige Wärmebildkamera aufzubauen. Wir sind sehr gespannt welche Projekte ihr mit diesem Bricklet realisiert!

Neue Bricklets Teil 2 - Motorized Linear Poti Bricklet und RGB LED Button Bricklet

Heute möchten wir euch zwei weitere Bricklets aus der zuletzt veröffentlichten Serie vorstellen: Das Motorized Linear Poti Bricklet und das RGB LED Button Bricklet.

Den letzten Blogeintrag, in dem wir das DMX Bricklet und das Humidity Bricklet 2.0 vorgestellt haben findet ihr hier.

Motorized Linear Poti Bricklet

Das Motorized Linear Poti Bricklet ist im Gegensatz zum Linear Poti Bricklet mit einem 100mm Potentiometer ausgestattet, welches sowohl manuell per Hand als auch über den integrierten Motor bewegt werden kann. Je nach Position des Schiebeschlittens liefert das Poti Werte zwischen 0 und 100. Die API erlaubt es je nach Anwendungsfall das Verhalten des Potis zu bestimmen. So kann das Poti entweder die gewünschte Sollposition aktiv per Motor halten (es kann dennoch manuell übersteuert werden) oder aber das Poti fährt einmalig die gewünschte Position an und hält dann nicht mehr aktiv die Position bis eine neue Sollposition gesetzt wird. Das Bricklet ist so konstruiert, dass mehrere platzsparend nebeneinander verbaut werden können. Es kann entweder über die zwei frontseitig vorhandenen Montagebohrungen mit Gewinde oder über die Befestigungslöcher des Bricklets befestigt werden.

RGB LED Button Bricklet

Das RGB LED Button Bricklet ist ein Taster, dessen Farbe über eine integrierte RGB LED gesteuert werden kann. Die Kappe des Tasters lässt sich öffnen, so dass der Taster bei Bedarf nach eigenen Vorstellungen beschriftet werden kann. Die Beschriftung kann ganz einfach über eine bedruckte Folie oder auch einfach über ein normales weißes Blatt Papier geschehen. Jeder Farbkanal (rot, grün, blau) lässt sich mit jeweils 8 Bit Auflösung steuern, so dass ein breites Farbspektrum aber auch die Helligkeit gesteuert werden kann. Wie gewohnt lässt sich auf eine Änderung des Tasters ganz bequem per Callback reagieren.

Neue Bricklets - LEDs, Motorized Poti, Wärmebildkamera

Velleicht haben es ein paar von euch bereits bemerkt, seit letzten Freitag lassen sich neue Bricklets in der Dokumentation finden. Im einzelnen sind dies:

Das Baukastensystem wächst also weiterhin stetig weiter. Wie die zuletzt veröffentlichten Bricklets handelt es sich bei den neuen Bricklets natürlich auch wieder um Co-Prozessor Bricklets. Heute möchten wir euch die ersten zwei Bricklets vorstellen:

DMX Bricklet

DMX ist ein Steuerprotokoll mit dem in der Veranstaltungstechnik Lichttechnik gesteuert wird. Dazu gehören zum Beispiel Bühnenscheinwerfer und Bühnen-Effektgeräte. Das DMX Bricklet kann als DMX Master genutzt werden um diese Geräte (Slaves) zu steuern. Jeder Slave wird abhängig von seinen Eigenschaften über einen oder mehreren DMX Kanäle gesteuert. Das DMX Protokoll sieht bis zu 512 Kanäle vor, die alle vom Bricklet gleichzeitig gesteuert werden können. Das Bricklet kann aber genauso auch als DMX Slave genutzt werden. In diesem Fall empfängt das Bricklet alle 512 Kanäle gleichzeitig. Der Nutzer kann somit entweder einfach den gesamten Bus überwachen oder aber auf spezifische Kanäle reagieren. Wer also immer schon ein eigenes Effektgerät entwickeln wollte, kann dies jetzt mit dem Bricklet einfach tun. Zum Anschluss an den DMX Bus verfügt das Bricklet über einen 3 poligen XLR Stecker und eine 3 polige XLR Buchse. Das Bricklet nutzt die neue Streaming-API ist somit sehr einfach zu bedienen.

Humditity Bricklet 2.0

Der Nachfolger des Humidity Bricklets ist mit einem neuen Sensor ausgestattet. Die Auflösung des Luftfeuchtesensors hat sich um den Faktor 10 gesteigert (0,01% vs. 0,1%) und auch die Genauigkeit wurde deutlich erhöht. In dem Bricklet ist zusätzlich ein sehr genauer Temperatursensor integriert, der vom Sensor intern zur Kompensation des Luftfeuchtesensors genutzt wird. Der Anwender kann natürlich auch auf die gemessene Temperatur zugreifen. Ein weiteres Highlight stellt das integrierte Heizelement dar, welches bei extremer Feuchtigkeit dazu genutzt werden kann den Sensor automatisch zu trocknen. Das neue 2.0er Bricklet ersetzt das Humidity Bricklet 1.0.

RED Brick Image 1.10 Beta Test

Heute startet der Beta Test für das RED Brick Image 1.10. Normalerweise würden wir ein neues RED Brick Image direkt veröffentlichen. Weil das Image aber dieses Mal mehrere große Änderungen beinhaltet (z.B. neue Kernel und Debian Version) wollen wir es euch zuerst zum Beta Test bereitstellen. Das Image kann hier heruntergeladen werden: http://download.tinkerforge.com/red_110beta1/. Dazu wird der aktuelle Brick Viewer 2.3.11 benötigt.

Es gibt unter anderem folgende Neuerungen:

  • Aktualisierung des Linux Kernel auf Version 4.13
  • Aktualisierung auf Debian Version 9
  • Lastabhängige Steuerung der CPU Frequenz
  • Netzwerkverwaltung mit Network Manager für schnellere Reaktionszeiten im Brick Viewer
  • Support für mehr WIFI USB Sticks (mit besserem Support für Access Point Mode)
  • Support für Bluetooth LE/4
  • Viele Aktualisierungen für Software und Programmiersprachen: Node.js 8, Nagios 4, Octave 4, openHAB 2, etc
  • Aktualisierung aller Brick/Bricklet Bindings für alle Programmiersprachen auf neueste Version

Bekannte Probleme:

  • Stapelkommunikation des Brick Daemon ist aktuell nicht DMA-beschleunigt and verbraucht mehr CPU Leistung. Dies wird in der finalen Version behoben sein.
  • Display Auflösung kann nicht zur Laufzeit umgestellt werden. Momentan ist noch unklar, ob das Problem gelöst werden kann.
  • Kein Support for 3D/OpenGL Hardwarebeschleunigung. Die notwendigen Mali-Treiber sind aktuell noch nicht auf die neuesten Kernel Versionen portiert worden. Wir werden ein neues Image veröffentlichen, sobald dies der Fall ist. 2D Hardwarebeschleunigung (für die Nutzung von Desktopumgebungen etc) funktioniert!

Es gibt im Forum einen Thread für Feedback.