Return of the Cyber Alarm

7 years ago I built the Deep Cyber Cyber Alarm – but over the years (when The Things network updated their stack and I lost the LoRaWAN keys), it stopped working. So here I go rebuilding it in an enhanced version.

But why?

Well first of all, it has a sentimental value and historic significance for Deep Cyber. I built the Cyber Alarm for a talk I delivered on 34C3, where I introduced LoRaWAN. The alarm, the VMSE2000 and our LED-Tetris-Wall where the first thinks happening. I just want it to be functioning.

Things have progressed since then. LoRaWAN evolved, Microcontrollers did, and I learned a bit since then. So there is actual reason to re-present this project.

But it is the most simplistic device you could think of!

True. And also another reason, why this project is useful. Understanding new concepts and unfamiliar technologies is difficult; doing it in a simple project helps understanding. I was able to show all the significant parts of my source code on three slides.

And another thing: solving problems that seem simple will often reveal that small details of your seemingly simple problem are actually quite tricky; at least if you want to solve them properly.

Where do we come from?

When building the original Cyber Alarm, my priority was to use the most basic and simple parts, for hardware and for software. I wanted to show how simple it is to use the basics of LoRaWAN. The hardware consists of an Arduino and the simplest LoRaWAN transceiver module available at the time. The firmware was written in the Arduino IDE and was basically a small extension of the example for using the only available open LoRaWAN driver. The Network Server is TTN and the receiving part was a ~20 lines python script.

There are two mayor aspects I want to improve for the next version.

Power

When not sending uplinks, the Cyber Alarm is put in deep sleep, waiting for an interrupt (the button press). I did my best to get the power consumption down, but I stopped at some point, because I would lose all the aspects of an Arduino at some point, and that was still an integral aspect of the project. But even if I had done that, there would still be power consumption. For the enhanced version, I want to get the idle current to 0 A. I want to forget the project on December 31st and take it out of its box on December 27th the next year and it should still work on a press of the button.

Firmware basis

I never liked working in the Arduino IDE. It does not feel good to develop inside it, the organisation of windows never felt right and it encourages neither good code layout nor does it help in cooperating between multiple developers. It always feels dirty and clunky to me.

Neither do I like the framework and libraries of the Arduino ecosystem. There are some weird decisions (.ino files, init and loop functions) – I get it, it is for getting started more easily. But it does not help understanding what you are doing. The module system doesn't work for me either. It is okay to hack something together in a few hours and finish a quick project, but this time I want to build something proper.

On top of that was Arduino just purchased, and no one knows what its future will be.

You might have guessed it by now, I will not be building the new version of the Cyber Alarm with Arduino tools.