A Better Serial Monitor

Today I would like to talk about a very interesting piece of software that I have been using in the past few weeks, called Serial Port Monitor (version 7.0) by Eltima Software.

This software is perfect for when you are developing an application that has a massive amount of information going through the Serial Port. I am currently using it to analyze diagnostic data from one project. Is is great that you can easily save messages for a later use in its own .spm file format.

serial port monitor

serial port monitor

On the image bellow, you can check the windows that I am currently using: “Terminal View”, showing exactly what is coming from the Serial Port. “Dump View” that shows timestamp, the hex data and the message, and the “Table View”, showing the captured data from the developer’s point of view: it presents the table consisting of the recorded IRPs. Each row represents one IRP and each column represents one single part of IRP. It is interesting to point that the Serial Port Monitor doesn’t block the serial port while in use, meaning that another software can be “blocking” the port and you can still analyze all the data.

serial port monitor

In case you wanna know more about it, check the Wiki!

This is a great piece of software, and I am really impressed by the quality of the products from Eltima. I will probably do some more review in the future!

If you are an embedded systems engineer, you should check it out!!!

HC-RS04 NewPing Class

sonar non blocking sonar

Just finished writing a small C++ class to work with multiple HC-RS04 sonar transducers with a non-blocking way with the NewPing Library.
In this exact code I connected two sensors, but you can add as many as you like.

To add new sonars, just create a new instance of it adding the echo and trigger pins.

Sonar sonar1(2,3);

Here is an example with some NeoPixels, just for fun:


NeoPixel 24 & HC-RS04 Sonar Support

sonar neopixel 01

I am currently working on a project that involve using a HC-SR04 Sonar sensor to control the lights of a Adafruit NeoPixel 24 Leds Ring. Yesterday I quickly designed a 3D model with DesignSpark Mechanical that I am using to center the sensor inside the led ring. I have also added a few spaces where the cable can pass though without disturbing the flat surface.

You can download it from GitHub, and there will probably be updates on the design in a near future.

What do you think?

Check this cool 3D preview by GitHub:

Continue reading

Altium Tip: Smooth edges with Teardrops

Teardrops is a really nice feature present in Altium, where it analyzes all the traces and try to smoothen the edges of the connections. Most users don’t know that this feature exists, and even if doesn’t add a major change on the design it can certainly improve the quality of your project, especially if you are working on high-speed or high-power electronics.

altium teardrops

To access the menu, while editing your PCB, go to Tools >> Teardrops… (or simply press t + e).

Bellow you can check a random PCB design with and without Teardrops:

altium teardrops before

altium teardrops after

Interfacing two Adafruit MMA8451 via I2C

This week I had to interface two accelerometers (adafruit MMA8451 breakout boards) into one Arduino board.

On Adafruits website, they write that you can address the sensors with 0x1C by adding a pull-down resistor on the “A” pin, or 0x1D by connecting the
“3Vo” to a 3V3 source. What they don’t tell is how to use them both at the same time, which gets clear once you take a look at the Adafruit_MMA8451 class within the library file Adafruit_MMA8451.h.

bool begin(uint8_t addr = MMA8451_DEFAULT_ADDRESS);


Here you have a simple code based on the library example, but adding the two sensors: