Daedalus

Overview

Daedalus is a device I built in 2010 as my final project to complete my Bachelors degree at BCIT. It is a BACnet MSTP device that allowed me to communicate with an MSTP trunk and pull information from devices on that trunk very quickly.

During that time I was working as a controls technician, working on building automation systems. The tool set I had to troubleshoot and monitor devices on an MSTP trunk were well designed but significantly flawed. These tools would interrogate an MSTP host for every input/output point it had, as well as any software points programmed. On medium to larger hosts, this could take minutes to update and get new readings. This caused significant problems when I was just looking for a single point, or trying to tune a PID loop and needed fast results.

The goal of Daedalus would be to overcome this flaw and allow me to directly interrogate a single or small group of points much faster. Daedalus would physically attach to the RS485 communication lines of an MSTP trunk and communicate as if it were a host on that trunk. Daedalus had a Bluetooth link that would communicate to a user interface running on  a laptop.

Unfortunately I don’t have as much detailed information on this project as I would like, as it was nearly 10 years ago, but I’ll share what details I have.

Details – Daedalus

The software behind Daedalus is a preemptive multitasking real time kernel, which runs on an HCS12 microprocessor. The kernel, written in C/C++ was designed by David Quarbach, to whom all credit is due. On top of this kernel are several drivers to communicate both with the BACnet MSTP trunk, and to a Bluetooth transmitter. There is also a CLI for interfacing with the device directly over serial.

The limited BACnet stack Daedalus uses was written by me, and implements the minimum functions in order to maintain communication on an MSTP trunk, and poll other devices for status information of their inputs or outputs.

Daedalus Version 1

Daedalus went through several evolutionary phases, some rougher than others.

A short lived Version 2

This was one of the last iterations of the hardware design. The final version included a modular plug to plug into the MSTP trunk.

Version 3 – Final

As you can see, many of these components are modular packages from Sparkfun. However the HCS12 chip itself had to be landed on breakout board from Dangerous Prototypes, which is an excellent company to do business with. This was the first time I had to work with landing an SMT chip, and that was an experience. Not having any reflow tools, I had to do my work with a hot air station.

Dont worry, I cleaned up the solder job after the initial landing

 Details – User Interface

The user interface was written in C/C++ and provided basic control over Daedalus. The UI, which was based on ncurses, allowed the user to start/stop the information gathering process, specify the target to monitor, as well as collect diagnostic information on the MSTP trunk itself

I grew up watching Tron, and this is what I was told the future would look like

Results

Daedalus was a great success for me. Not only was I able to monitor devices on an MSTP trunk much faster than with my existing tool set, but it taught me a great deal about embedded RTOS systems, and the BACnet protocol itself. I was able to use Daedalus in my work for a while after the project was complete, and it was a great help.

So why the name? Well that’s my Wife’s fault. According to Greek mythology, Daedalus built the Labyrinth of Crete, which imprisoned the Minotaur. He has several other accomplishments to his name and is considered one of the first Engineers in Greek mythos. I’ve always had a romantic attraction to his stories, having wanted to be an engineer all my life. So when I needed a name for this project, my wife who has a deep love for all things mythology, made the suggestion. Since then, most of my projects carry a name of a greek or roman mythological figure.