Turns out, soldering is kind of easy!
We like to think of Rabbits as makers-of-things and tinkererers-with-tech. So it makes perfect sense that we'd be interested in IoT, or the Internet of Things. We also love continuous learning, and so the Knowledge Ninjas (one of the Movements) have organised an IoT hackathon for our amusement and edification.
On Saturday September 11th, eight of us met at our lovely Pretoria offices for a day of soldering, wiring things together, programming, and naturally, lots of Googling.
We had the help of Ian and Jacques, two of Retro Rabbit's seasoned IoT veterans. They guided us through IDE and driver installations, helped us figure out pin mapping, and taught us how to wield those dreaded soldering irons—and it turns out soldering is kind of easy!
Of course, there are some problems you have to solve yourself. After struggling for an embarrassingly long time to install serial drivers on someone's Macbook, we realised that the Arduino IDE wasn't picking up the chip because, well, we weren't using a proper data cable. As a frontend developer, it was a bit of a mind-shift for me to consider the entire hardware chain during debugging; when something doesn't work, the problem could be anywhere from the sketchy code I pasted from a tutorial, the USB C dongle, some loose wiring, down to a faulty firmware upload to the board.
So what did we make? The actual devices were quite simple—we wired some air quality-related sensors to a WiFi-enabled processing board. Pretty early on, we could connect a console to the board's serial output and see up-to-date readings of the temperature, humidity, CO2 and volatile organic matter levels in the room. And we knew it was working; a quick test of breathing-onto-the-sensors confirmed this.
But reading data through a USB cable into an IDE's debug console isn't quite what you would call an IoT project; we got the things part, so the next step was to get the internet involved.
Getting the chip to talk to the internet was surprisingly easy; it only took a few minutes to change the device into a basic web server with a hello world-page. To make our device useful, though, we opted to set up a message queue-based architecture. We set up an MQTT system on Ian's laptop, realised that the guest WiFi network did not allow peer-to-peer connections, and were eventually able to see our messages on there when we ran
mosquitto_pub -t "test" -m "hello world" from our laptops.
The next step was to publish to the same message queue from the little D1 boards. Luckily there are some excellent Arduino libraries that made this simple to implement. After some code-sharing and over-the-shoulder debugging, everyone's readings were showing up on our central server's logs under their own topics.
So is it hard? Brushing aside the fact that we wrote our code in C (or "memory with syntactic sugar", as it is affectionately known), no, it isn't hard at all. In fact, one of the participants in the hackathon, Andrea, didn't even come from a developer background—she's a UX designer at Retro—and she had no difficulty at all. Chalk it up to the fact that Rabbits tend to be on the smart side if you want, but I think my main takeaway from the day was this: making things with IoT is really and truly doable.