Blog

New Accelerometer Bricklet 2.0 with data rate up to 25.6kHz

We just released the new Accelerometer Bricklet 2.0.

Compared to the old Accelerometer Bricklet it of course is one of the new 7-pole connector Bricklets with co-processor.

Additionally it has a maximum data rate of up to 25.6 kHz! To be able to transfer this amount of data we implemented a continuous acceleration streaming API. It will create a stream of acceleration data that uses the full size of the packages in the Tinkerforge Protocol. The data rate is high enough to calculate a FFT on it to see specific frequencies in the vibrations.

As a test we taped an Accelerometer Bricklet 2.0 to a stepper motor. We looked at the FFT at different speeds and it is very easy to see the current revolutions/min in the FFT. By adding some imbalance to the axle we could observe the FFT changing significantly.

The Bricklet does of course still have a simple getAcceleration() API like the predecessor. Additionally you should only use a data rate that is as high as you need it to be, since the noise increases significantly with high data rates.

As a side note: We were out of Humidity Bricklet 2.0, PTC Bricklet 2.0 and Ambient Light Bricklet 2.0. They are now all in stock again (Ambient Light Bricklet 2.0 was replaced by Ambient Light Bricklet 3.0) and all backorders will be shipped today/tomorrow.

Go Bindings Release + MQTT Bindings Beta

For Christmas we released a beta version of our new Go API Bindings.

These are now officially released. You can find the the documentation on our homepage: https://www.tinkerforge.com/en/doc/Software/API_Bindings_Go.html.

If you don't know Go yet and want to see what it looks like, take a look at the Sound Pressure Level Bricklet examples: https://www.tinkerforge.com/en/doc/Software/Bricklets/SoundPressureLevel_Bricklet_Go.html#examples

Additionally you can now try out the first beta version of our new MQTT API Bindings.

There is a forum entry with more information about the beta release: https://www.tinkerunity.org/forum/index.php/topic,4736.0.html

If you don't know MQTT yet: It is not a programming language, but a protocol that works on a publish/subscribe basis. It can often be used with cloud services or in IoT applications without the need to do any programming. We already had the "Brick MQTT Proxy", but it was completely hand-written, only sporadically updated and also did only support a subset of Bricks/Bricklets and a subset of the functionality.

The MQTT API Bindings on the other hand are completely generated, like the other API Bindings. If a new Brick/Bricklet or API function is released, the MQTT API Bindings will automatically be updated and support the new features. They are the very first non-programming language API Bindings. We also have support for more API Bindings in the pipeline, stay tuned!

Tabletop Weather Station

We got a brad new kit: The Tabletop Weather Station.

It is based on the new Air Quality Bricklet and the touch capable LCD 128x64 Bricklet and it comes with a cute laser-cut enclosure that is available in four colors.

Optionally you can add the Outdoor Weather Bricklet with a wireless outdoor weather station or additional wireless temperature/humidity sensors.

A complex demo application that utilizes the touch screen and writes the measured data into a sqlite database is available as download for Linux, MacOS and Windows.

The demo application is written in Python and based on "screens" that the user can go through with tabs at the bottom of the LCD. We made sure that it is easy to add your own custom screens to the application. Below you can find some screens that are by default included in the demo application:

Rust and Go for Christmas

This year we have a special Christmas present for you! We have two brand new programming language bindings: Rust and Go.

The Rust API bindings are already released, you can find the documentation on our homepage: https://www.tinkerforge.com/en/doc/Software/API_Bindings_Rust.html.

The Go API bindings are not officially released yet, but you can already try the beta version. Check out this forum entry on TinkerUnity: https://www.tinkerunity.org/forum/index.php/topic,4687.msg26407.html

If you always wanted to try Rust or Go, you can now do it with your Tinkerforge Bricks and Bricklets during the holidays :-).

We wish you a Merry Christmas!

Graphical User Interface for LCD 128x64

We just released version 2.0.2 of the LCD 128x64 Bricklet firmware. It comes with several improvmenets, including an API for an easy to use graphical user interface (GUI). The user interface consists of four basic UI elements:

  • Buttons: Up to 12 buttons can be placed with arbitrary position/width/height and custom text. They automatically generate a press- and release-event.

  • Slider: Up to 6 slider can be placed at arbitrary position/length. You can use horizontal and vertical slider. They automatically generate a position-event.

  • Graphs: Up to 4 graphs can be placed with arbitrary position/width/height. You can use dot-, line- and bar-graphs and a caption text for the x and y axis can be used. You can stream a list of data-points, the graph is drawn automatically.

  • Tabs: Up to 10 tabs can be used. Tabs can have text or icons. They automatically generate an event on tab selection changes.

These GUI elements can be added, updated and removed with an easy-to-use API. Interaction is done with callbacks on a user-event (click/swipe) basis. See the examples for your programming languages in the API documentation for the details.

The LCD 128x64 Bricklet has a buffer for the normal drawing functions (WritePixels, WriteLine, DrawBox, etc) and an additional buffer for the GUI elements. The GUI buffer will be drawn on top of the standard buffer.

Additionally both of those buffers can be double-buffered for smooth uninterrupted drawing.

This means that GUI will always stay on the display and react to user interaction until explicitly removed. With this approach the cooperation between GUI elements and self drawn addtions is easy to achieve, since there is never any z-fighting.

For Example: If you want to use a button with an icon, you can create a button with the position, width/height as you need it and leave the text empty. After that you can draw the icon inside of the button with the standard WritePixels function. This will work without problems and the highlight effect of the button during a click will not permanently overwrite your custom icon.