Count Down Clock

Just a simple Arduino project for the last day of the year: a Count Down Clock showing the time left until New Year.

Time is derived from a DS1307 RTC module and displayed on a 8×32 LED Matrix Module. At 23:00 hours, the initial HH:MM format will switch to MM:SS.


Meccanoid is an advanced yet easy to use open source robotic building platform.


Forget it!

Since Meccano introduced its Meccanoid at the end of 2015, they still have to open their source. You cannot reprogram its controlling processor, called Meccabrain. All they gave away so far was a bit-bang protocol to control the smart servos and LED module, and a corresponding Arduino library for convenience.

As a toy, it may be quite impressive at first (after daddy spent at least 8 hours to build it), but my guess is that many Meccanoids will have gathered quite some dust by now.

In order to become a serious robotics platform, it will have to offer much more than just servos and LED modules that can be controlled by a microprocessor like Arduino. The included Meccabrain processor unit has 8 channels that, in theory, could control 32 Meccanoid devices (servos or LED modules that can be daisy-chained). Even if the company behind Meccanoid, Spin Master Toys, would allow the upload of custom code to the Meccabrain, I would still want to connect sensors and communication modules to it.


Apart from plastic parts, screws and bolts, my Meccanoid G15 KS now basically is: eight smart servos, one LED module, two DC motors and a closed source Meccabrain. Well, let’s see what a real open source platform like Arduino can do with it.

Continue reading “Meccanoid”

Solar Tracker

[work in progress]

Arduino project: have a solar panel find and follow the sun

Many solar tracking projects use four Light Dependent Resistors for finding the brightest spot in the sky, but for the ever changing Dutch skies I chose a different approach:

  • Calculate the sun’s azimuth and inclination, based on geographical position and the current date and time.
  • Attach an absolute orientation sensor to the solar panel to tell Arduino its orientation.
  • Have two stepper motors (pan and tilt) rotate the panel towards the sun’s position and then follow its path over the celestial sphere.
  • Send Arduino to sleep at sunset and wake it up again at sunrise.


For a start, I will hard code my geographical position in the sketch and use a DS3231 Real Time Clock module to tell Arduino the current date and time. Although a GPS module can give both position and time, it will certainly use more power.


The absolute orientation sensor I will use is the Adafruit BNO005. This module already takes care of the Kalman filtering, so I don’t have to include code for that in my Arduino sketch.

Continue reading “Solar Tracker”

Larry’s Page

With our famous 5-minute installation, setting up WordPress for the first time is simple.

True, and within those 5 minutes I even managed to change the site’s theme to the clean and unobtrusive Libre theme.

Things weren’t that easy in 1998, when I wanted my CD database to be accessible via the (still young and innocent) Internet. At the same time when Larry Page was hatching his Google egg, I spent my entire Christmas holiday building my first database driven website. What if it had been the other way around..?

BTW, my meanwhile retro-looking CD site is still online (so is Google, I’ve been told).


At the heart of Transporter is a “no compromise” attitude to component selection and electronic design.


I bought my Tranporter in 2010, right before this audiophile streamer was discontinued by Logitech. It was originally designed and manufactured by a company called Slim Devices. The above quote refers to them, certainly not to Logitech!

The Transporter, or any player from the Squeezebox line, is controlled by a free and open source streaming server. This server communicates with connected players via the ‘SlimProto’ protocol over TCP/UDP. All functions can be controlled via Telnet commands, but the server also has an interface that can be accessed over http. This means that you can fully control a player (or query its status) by sending http requests to the server. This is what sets this streaming solution apart from the many commercial (often LoFi) products that have meanwhile entered the market. And it can stream lossless FLAC files!

Once you understand the mechanism of controlling the player by sending commands over http, it only takes some basic knowledge of html, javascript and css to create a fully functional remote control web page.

My personal goal was to create a web page that shows a picture of the Transporter, with all buttons executing their function when clicked or touched (the player comes with a remote control but can also be controlled by buttons at the front). It also should mimic the player’s display. Most of this turned out to be very simple.

This picture shows a screenshot of my web based Transporter in action: a fully functional synchronized clone of the physical player, including volume- and brightness control, as well as the switch back to the ‘NOW PLAYING’ display, 30 seconds after the last command.

The approach is pretty straightforward:

The buttons:

  • Create a <div> element for every button and give it an unique id.
  • Use css to place every <div> exactly over ‘its’ button on the Transporter image.
  • Add an onclick event to every <div>, executing a javascript function with the <div>’s id as a parameter.
  • Write this javascript function, making it send the appropriate command url to the server, based on the firing <div>’s id.

The display:

  • Create a <div> for every relevant part of the display and give it an unique id.
  • Use css to place every display <div> at its right position on the Transporter image.
  • Create a javascript function with a timer loop, asynchronously requesting the latest information that the server has sent to the physical Transporter’ s display. By using ajax calls, only the display will be refreshed (vs the entire web page).
  • Make the same javascript function populate the display <div> elements with the updated display info (innerHTML property).

Well, that’s basically all it takes for the essential functions. Because it’s completely web based, it will work in every browser on every operating system. No app installation or Java required! This method gives you full control over what to display, and how. You’re not even limited to what the physical Transporter can do or show. For instance, you could add cover art or extra buttons for custom functions.

Continue reading “Transporter”

Hello Knight Rider

This is my Arduino “Hello World” project, inspired by my TV set’s please wait indicator (that reminds me of Knight Rider’s K.I.T.T car).

The two potentiometers on the video were used to adjust speed and maximum brightness of the LEDs (variables maxBrightness and stepDelay). In the sketch below they are still fixed.




Thanks to the Crayon WordPress plugin, posted Arduino sketches will now look (almost) like they do in the Arduino IDE. The following sketch will produce the above variant of the ‘Larson scanner’, better known as the KITT scanner from the TV series Knight Rider.

Pin numbers are for the Arduino Uno (must be PWM pins). Note that by using a two-dimensional ledPins array and toggling its first index, there’s no need to have separate loops for both directions (outer for loop). The code for fading can be kept simple by introducing virtual LEDs (inner for loop).


Texas Instruments TI-58

It was only after 37 (!) years of service that my vintage Texas Instruments TI-58 programmable pocket calculator stopped working. Actually, the calculator was still fine but one of its original NiCd batteries had finally passed away.

My TI-58 has always been ‘my precious’. Its (by modern standards) limited memory size inspired me to design smart algorithms and to write efficient programs.

This was, however, a very powerful calculator in his days. A special version was built into the famous Harrier aircraft to perform all calculations needed for stabilizing the airplane during vertical takeoff and landing!

Although the NiCd batteries were standard AA type, they turned out to be sealed inside the battery cover and had spot welded contact strips. So some minor surgery was needed in order to replace them with a set of fresh 1900 mAh NiCds.

This shows the battery module before and after the operation. The tape was just a helping hand during surgery that I forgot to remove (happens in hospitals too).






And there she is, my reborn baby, proudly showing her purchase date.















And finally she got reunited with the rest of the package.