I’ve been itching to write some software for hardware lately and since I have recently acquired an air purifier it seemed like an opportune time to try to get a sensor publishing data that I can use as the basis for automatically controlling that purifier. I’ve had this board from Sparkfun for a little while which combines a SCD41 and SEN55 air quality sensors so that seems like a good confluence…
I’ve been reading into compiler engineering quite a lot recently (hopefully more posts to come on that in the future) and it occurred to me that I didn’t actually understand how dynamic code could be executed. My entire mental model of dynamic execution from a binary involved dynamic linking which is limited to what the program can accept since your host program still needs function declarations…
This post will be the first in a multi-part series covering the development of local web apps with a focus towards the type of application you might need for a connected home IoT product. In this series, I’ll be walking through standing up a Rust binary which runs on a Linux device and hosts a web app which can be used for configuration of the device or visualization of the data. We’ll be making…
A WebAssembly retro-display. I’ve been taking a sabbatical for the past three months, and it’s been giving me a good bit of time to explore a technology that’s piqued my interest: WebAssembly! This article talks over my motivations and current results for executing WebAssembly in an IoT edge device. All of the code referenced in this post can be found in this repository . Background I initially…
A couple years ago I was interested in implementing Conway’s Game of Life since it’s pretty simple and seemed like a fun little project to sharpen my skills in Rust. I had a pretty major problem though: I needed a way to actually show the output of the simulation. Now, I’m not much of a web developer or desktop app builder so the idea of learning these technologies just to show a screen and add…
Just a quick one from some debugging I’ve done this morning. Some debugging that was rather obvious in retrospect, but nonetheless I couldn’t find any mentions of it in a quick search.
One of the very first tools that I want when I’m developing an embedded system is some kind of virtual device that I can test against without needing to bring a breadboard and piles of cables with me everywhere I sit down to develop. This even more so if most of the system’s logic sits in on the host side above the firmware application.
I’ve been on sabbatical for a little over a month now, but I’ve not been idle! When I decided that I was going to take some time off, I knew that I was going to want to take advantage of the time not just to relax, but also to pick up some new skills and build out a larger project to explore some technologies that I think are cool. In this post, I’ll give a high level of what that project is going…
I’ve been following the Getting Started guide for Zephyr and got to the point of testing flashing the blinky sample onto the microcontroller. Unfortunately, the native west flash did not just work. Looking at the output, the command being invoked by west flash is: /home/ssnover/.local/opt/zephyr-sdk-0.16.4/sysroots/x86_64-pokysdk-linux/usr/bin/bossac -p /dev/ttyACM0 -R -e -w -v -b…
If you’ve developed a few Arduino projects, you’ve probably learned to use the Arduino library’s I2C driver Wire or perhaps also it’s SPI driver SPI. These two protocols are very commonly used in embedded systems for communication between a microcontroller and a secondary chip like a sensor. The Arduino IDE has made downloading libraries to use in your project easier than ever, but what happens…