Client Case Study: Stickies Smart Learning

Working with Chris is a great experience! He is an excellent embedded software engineer who has a deep understanding of RP2040 microcontrollers and their capabilities. His work on my project was top-notch and I was impressed with his ability to write efficient and effective code that met all my project requirements. I would highly recommend Chris to anyone looking for an experienced and knowledgeable embedded software engineer.

Chris Rattray, Founder, Stickies Smart Learning

Introduction

Stickies are the brainchild of Founder, Chris Rattray. The idea came when his son was disappointed in some plastic “Numberblocks” and asked him, “Daddy can you make me real life number blocks?”. The result: a tangible, digital tool, designed to create engaging and interactive learning experiences for Key Stage 1 (KS1) students.

When Telmtron were approached by Stickies Smart Learning to help develop the embedded software for their smart learning tool, I jumped at the chance to be involved as I genuinely believe in the product. Stickies is the most startup of startups, which meant we were working with very limited resources; in fact, for most of the project, we were meeting once a month in the back room of a pub — aptly called the “Smoke Room”!

Over the course of around 14 months, working one day per month, we went from an idea to a tangible, working prototype.

The Project

The embedded software was developed in parallel with the hardware design. The blocks are based on an RP2040 microcontroller. I worked closely with Chris Rattray at Stickies, paying attention to keeping the software architecture flexible in order to keep up with hardware changes as he refined his design.

The high level requirements were:

  • The blocks must detect neighbouring blocks
  • The blocks must communicate with neighbouring blocks to understand their value
  • The blocks must react (change a displayed image, play a sound) when certain conditions are met relating to the combination of block values
  • The blocks must support the concept of multiple ‘programs’ that can be loaded onto them to change their behaviour

To support the iterative hardware development, the project was completed in several phases:

Phase one: Test Firmware

The first phase of the project was to develop firmware that tests all of the various hardware interfaces to the microcontroller. This was architected as the beginning of a stickies library, which could be reused for future versions of the software. In the early stages, this test firmware was a simple command line interface over the USB serial port, which allowed the tests to be run on each input (setting vibration speed, turning the screen on and off, etc.). This application evolved to be able to read image files and display them on the screen.

Phase Two: First Demo

As the hardware design became more concrete, we started to look at how we could demonstrate the concept to teachers. We hadn’t yet developed the communications between the blocks, but we could detect that there was a block there. The first demo simply displayed an image on the screen, and switched to a different image if the block detected a neighbour. This empowered the client to start engaging with teachers to gauge interest and gather initial feedback.

Phase Three: Simple Arithmatic Demo

In this phase, we developed the ‘intelligence’ of the blocks, allowing them to communicate with each other and understand not only the values of the neighbours, but the total arrangement of all connected blocks. This meant the blocks could resolve a simple addition or subtraction sum, displaying an image and playing a sound when the sum was correct. A simple user interface was developed allowing the child to change the value of the blocks to get the correct sum. The firmware was written with the final requirement in mind, such that the ‘program’ is contained in a central control structure that would be read from the SD card in future iterations.

Challenges

There were two main challenges with this project. The first was working with a relatively new device, the RP2040, the design ecosystem is relatively new. Working with the C SDK was very straightforward, however problems such as the SD card interface, that have been solved years ago on other platforms, were only just being solved on the RP2040 when we started development. This meant that some hardware support had to be written from scratch where a more established ecosystem would have more example code to leverage.

The second challenge was working in parallel with the hardware development. The boards were going through an iterative development process at the same time as we were developing the software. This meant that sometimes changes were required in the hardware that moved pins, or design errors meant that hardware didn’t behave as expected. The key to working with this was to maintain flexibility and modularity in the software architecture, allowing proven components to be moved through the various development phases, and pin swaps to be made rapidly between hardware iterations.

Conclusion

It’s truly fun to be part of the Stickies project. Telmtron worked with the limited resources available to support the embedded software development — helping the Founder take the initial idea inside his head, to a full-fledged working prototype to be demonstrated to teachers and investors.

I hope to be bringing further updates in the future as the product gets closer to market.

Find out More

About Stickies

Stickies are designed to create engaging and interactive learning experiences for Key Stage 1 (KS1) students.

Are you a KS1 teacher seeking innovative tools to transform your classroom? Stickies could be the answer! We’re passionate about shaping the future of education, and we invite you to be part of our journey.

We’re currently in the design phase for Stickies, and we’d love your input! Join us in shaping this innovative tool for KS1 classrooms. Share your ideas, suggestions, and enthusiasm as we embark on this educational journey.

Follow our progress and be the first to know when Stickies are ready for launch. Together, let’s revolutionize learning for our young explorers:

About Telmtron


Telmtron specialise in building embedded software for Internet of Things (IoT), telematics and other smart or connected products that are in the early stages of development. If this sounds like a product you’re designing, Telmtron can help. Please use the contact form below to get in touch or email create@telmtron.co.uk

What is Embedded Software?

When I tell people I work with embedded software, I often get asked, “What’s that?”. I usually jumble my way through a description of ‘little computers in cars’ or something, which is met with stares of varying blankness. So I thought I’d try to form a proper answer here, to help myself and others answer the question, “What is Embedded Software?

This is the first in a series of articles that will get more in-depth, but I will start at a very high level and discuss the differences between embedded software and the software you would find on your computer, phone or tablet.

Continue reading “What is Embedded Software?”

Talking to a CAN bus through an LPT printer port

… because, why not?

A few months back, I found myself in a position where I needed to develop a proof of concept for a CAN bus data logging system, but the hardware hadn’t been finalised. At the time, there were talks of using x86-based hardware, which would eventually communicate with the CAN bus via an SPI CAN controller. Unfortunately the dev board was on back-order and I wanted to keep the project moving. Continue reading “Talking to a CAN bus through an LPT printer port”

Tasks: A Time-Triggered Scheduler for Arduino

This has been a long time coming. A few years ago (back in 2012!) I wrote a basic TT scheduler which was really more of a ‘proof of concept’ and not really friendly for an everyday Arduino user. It relied on a strong knowledge of C or C++ and needed Eclipse with an Arduino plugin to get it to work. I’ve promised myself since then that I’d  write a proper Arduino library to demonstrate time-triggered scheduling to Arduino IDE users as well as learning some C++ skills for myself. Continue reading “Tasks: A Time-Triggered Scheduler for Arduino”

Further task scheduling with Arduino / AVR

** EDIT 27/04/2016: This article is now for background information only. I have now created a ‘user-friendly’ library compatible with the Arduino IDE **

Continue reading “Further task scheduling with Arduino / AVR”

Reliable task scheduling with Arduino / AVR

** EDIT 27/04/2016: This article is now for background information only. I have now created a ‘user-friendly’ library compatible with the Arduino IDE **

Continue reading “Reliable task scheduling with Arduino / AVR”