Developing a Remote Sensor Firmware using Test Driven Development

Developing firmware for an embedded remote sensor that needs to adhere to a specific protocol has challenges due to the limited resources and the complexity of the implementation. Experience on a previous project (a remote sensor gateway) demonstrated how Test Driven Development could assist when working on complex systems. This write-up describes the approach used in the development of an embedded sensor node using TDD along with the workarounds I applied to the issues that were encountered along the way. It was not an easy project to start as it required a change in mindset and also a change in how one uses the available tools for embedded systems. The Unity and CMock utilities were a great help to ensure that the tests could be developed in a standard way.

Continue reading Developing a Remote Sensor Firmware using Test Driven Development

Converting the NeoPixel Driver into a Text Display

At the local open workshop ZAM, there came a project idea for a text display that is publicly available. After some experimentation with a commercially available unit – that proved to be too cumbersome for public use, we explored creating our own. In this post I describe how I adapted my original NeoPixel driver project – Expanding the NeoPixel Project – to create a text display unit still using an ATTiny 1614 and a single shift register.

Continue reading Converting the NeoPixel Driver into a Text Display

Different ways to drive multiple IO lines

A first project for the MaxiMite 2

I have been working on a new project idea. A device that could check the continuity and connections of a series of cables – namely the coaxial cables connecting LNBs on a satellite dish to the multi-switch. For this I need to drive several channels. In working through the design I wanted to explore two approaches. One approach uses encoders/decoders. The other approach uses shift registers. This gave me the opportunity to take advantage of a new addition to my bench – a MaxiMite 2 compact computer. In this post I will describe the two approaches and my first impressions of the MaxiMite 2 for the purpose of prototyping.

Continue reading Different ways to drive multiple IO lines

Creating a Gateway Node using XBee and Test Driven Development

Remote sensors are only one component of a much larger system. If the information they collect is to land on the internet somewhere, then there needs to be some type of bridge or gateway. In this post I take a look at using Test Driven Development (TDD) to create a simple gateway node. It is possible to subscribe to existing services using already established protocols. However, using this project as an example, I am able to explore applying TDD when interfacing with external hardware modules.

Continue reading Creating a Gateway Node using XBee and Test Driven Development

Bidirectional LED Driver

I became interested in a LED display I saw in a beer garden over Summer. The remarkable thing was that it was clearly LEDs on a bus of only two wires. Even so the LEDs were able to be animated such that they could blink in unison or every other alternatively. I was intrigued as to how this could be done.

The purpose of this project was to come up with a means to to alternately blink a chain of LEDs either in unison or alternately using only two wires. During the development, what I had not realised until quite late was, I was actually using a H-Bridge

Continue reading Bidirectional LED Driver

RGB LED Controller

I have looked into using Neo-pixels strips and I was really impressed with the simplicity of use. Now I was curious about controlling a matrix of individual, non-addressable RGB LEDs. So I searched out a LED Matrix driver that looked like it could handle RGB LEDs. My search ended with the IS31FL3736 12×8 DOTS MATRIX LED DRIVER WITH INDIVIDUAL AUTO BREATH FUNCTION. This seemed to have the features I wanted to start out with and did not require me to install masses of LEDs. This is a note about what I learned along the way.

Continue reading RGB LED Controller

Trying out the INA219

I have been looking into developing a device to monitor a solar charging unit. This would be a remote sensor and relay the information back to a base to be presented on a user interface. There are a lot of elements to this type of project and one problem I have been thinking about was how to measure the voltage and current. Since most Microcontrollers have Analogue to Digital Conversion (ADC), I was originally thinking the measurement of voltage was not going to be a problem. But there are still a lot of things to think about when getting a measurement that is accurate and reliable over various load and temperature conditions. After seeing the YouTube video ” #321 7 Sensors tested: Measuring Current with Microcontrollers (Arduino, ESP32, ESP8266)” I became interested in the INA219 and thought to try it out.

Continue reading Trying out the INA219

Expanding the NeoPixel Project

Playing with some animations of the single LEDs strip of my NeoPixel board was nice but the thoughts soon come to mind: “It would look better if there were more strips”, “…if there were more strips, how could they be coordinated”, to “Could I still use the ATiny1614?”.

Continue reading Expanding the NeoPixel Project

Wrapping up the Timed LED Lighting Controller Project

Introduction

I have written about the Timed LED Lighting Controller in previous posts. Starting with the original entry “Stairwell Foot Lighting System. In this entry I will be wrapping up the project and describing the change of direction from the initial design and layout. There may be a bit of overlap but it will be minimal as the project took a small deviation along the way.

Continue reading Wrapping up the Timed LED Lighting Controller Project

A Look into Integrated Light Sources

For a while now I have been intrigued with Integrated Light Sources i.e. NeoPixels. I knew nothing about them and with the coming of Christmas, I was inspired to take a closer look. I knew I would not have anything in place before Christmas 2017. But there is always next year.

Continue reading A Look into Integrated Light Sources