The date of this blog post’s publication coincides with Denk Development’s fourth birthday (or rather founding day). Back in early 2016 I started to receive requests from people on the internet, who had seen my YouTube videos in which I tinker with electronics. Quite a few were asking for support with their own projects specifically people who were skilled in electronics, but less so in programming. Out of the need to be able to legally file invoices, I founded Denk Development on June 1, 2016, about a month before graduating from high-school.
Now – four years and more than fifty invoices later – Denk Development is still alive and I continue to run it as a secondary employment. Over the course of the company’s existence, I had the pleasure to work with many amazing clients on interesting and intriguing projects. In this post I share my top five favorite projects (with the permission of the respective clients) in chronological order. The source code is also available for some.
Laser Show System Monitor
Laser Show Design (short: LSD) is not the project title, but the client’s name! Lucien Tunger from LSD creates special effects like lightnings or strong lasers with high voltages and large hardware.
Operating such hardware during a light show requires constant monitoring of temperatures, voltages, and currents. Denk Development was given the task to develop data visualization which would constantly read sensor data and monitor the status of the system. The implementation made use of two Teensy 3.2 microcontrollers, one for reading sensors and one for showing the data on a display. The second Teensy additionally logged the data onto an SD card with timestamps from a real-time clock module.
This project was among the first Denk Development projects. Challenging aspects were the communication between the two Teensy microcontrollers, reading data from a heterogeneous set of sensors, and displaying the information on a screen without ugly refresh artifacts.
2017 // customer Hombach Forsttechnik // software for a configurable microcontroller which controls a notching machine
This project made it onto the list because it is one of those which sounded so simple, but ended up being so much more difficult, so here is the simple description: Move a motor slowly forward, in order to cut a notch out of a metal piece (from here on referred to as work piece). Make both speed and forward motion distance controllable through a small display and some buttons. First, here is a video showing how the end product operates in production:
So what is happening here? There are two motors involved one is constantly moving the tool up and down (top-left corner of the GIF), while the other one controls its lateral movement (towards the bottom-right of the GIF). The latter is the one that is being regulated by the microcontroller. It has to move very slowly, to gradually notch metal out of the piece of work. If it moves too quickly too far, the tool will ram into the work piece and will probably break something. The additional difficulty is introduced by the fact that there is unnecessary wear on the tool, which happens when it makes contact with the workpiece as it returns to the original position in the upward motion. One only wants it to scrub off a layer of metal while moving downwards. While moving upwards, the lateral control motor therefore has to move the tool back. Nevertheless, it still has to know its position with 100% accuracy – not an easy task with a stepper motor that is connected through a belt with some non-negligible clearance. The solution ended up being to move the motor backwards more than necessary just to move it forwards by a little bit directly after.
Go-kart Speed Limiter
2018 // private customer // supported with the development of a reliable data transmission between two Arduinos // source code
The private customer behind this project was building a go-kart. It is equipped with several microcontrollers, amongst them an Arduino which controls the ~130 horsepower (!) engine. The throttle is connected to a second Arduino for reading sensors and driver inputs. The task assigned to Denk Development is the very specific aspect of transmitting data from the second Arduino to the engine-controlling Arduino.
Due to the nature of the project, the data transmission was required to be highly reliable. In cases of a defective contact it would be a top priority to not transmit any invalid throttle values. Otherwise the car could potentially accelerate without the driver being prepared for that. The developed software therefore carefully checks the validity of received data packages and discards them if the validity could not be verified.
Airplane Cabin Pressure Control
2019 // private customer // software for a microcontroller that controls an air vent to regulate the cabin pressure of a small aircraft // source code
This customer is very impressive: He builds his own airplanes – real airplanes. The inquiry was about a very specific aspect of airplane construction: The controlling of the cabin pressure. He wanted me to develop a microcontroller software, which enables him – with the appropriate hardware attached – to monitor cabin and exterior pressure, set it to a desired target value, and have the microcontroller regulate a vent to let the cabin air flow out until the desired target pressure difference is reached.
What I enjoyed the most about this project is how diligently the customer had prepared everything that was within his scope. He sent me a prototyping board with which I could experiment, thereby making the entire development process very convenient. The mere fact that I was developing software for his airplane was also stunning, and I would not have agreed on doing that had there not also been an overflow valve for safety purposes.
The “Big Data / IoT / Serverless” Project
2020 // customer Electrojoule // software for reading sensor data from many distributed logging devices and collecting it in a central database
Buzzwords like big data and IoT can be a little frightening due to their perceived overuse in inappropriate places. Well, in this case it turned out to be an appropriate place: The customer – Electrojoule from the greater Zurich area – requested hardware and software development support for their heating loggers. Concretely, the task was to log data from a large number of temperature sensors and webcams, placed on a variety of different premises, into a single InfluxDB for subsequent data analysis.
The implementation uses Raspberry Pis to read the sensor data and forwards it to Azure’s IoT Hub. The IoT Hub is beneficial because it provides a UI for managing all devices (the Raspberry Pis), which includes adding new ones, configuring existing ones, etc. It also makes the secure transmission of data as well as the client authentication comparably simple. The IoT Hub caches the received events for one day, during which a backend application pulls the logs and pushes them into the Influx database.
Besides the pleasure of working together with Felix and his team, I enjoyed this project because it involved using Azure’s IoT Hub – a service previously unknown to me. Furthermore, having to write code for a Raspberry Pi which must not (ever) shut down once deployed was an interesting challenge.