I want to announce the release of a project that I have been working on in the past months: profirust is a PROFIBUS-DP compatible communication stack written in Rust!
On my quest to dive deeper and deeper into the industrial automation world, it was inevitable for me to explore the various fieldbus protocols at some point. Especially for supporting my increasingly complex machinery, I wanted to look into a robust and scalable fieldbus solution. PROFIBUS uses purple cabling so naturally I felt like this was the option I had to choose.
As there are few to no existing open-source projects implementing a fully capable PROFIBUS communication stack, this looked like a promising niche to fill and an interesting challenge to attempt solving.
This is the next article in the series about our "Flower Machine".
Of course a machine like this would be useless without any brain to control it. The industrial solution is called a PLC (Programmable Logic Controller). However a real PLC has a number of deal-breakers for us: It is expensive, full of proprietary software, and 99% of the time programming it is windows-only.
Thus I set out to build an alternative: Meet the Poppy Logic Controller - a custom PLC-like device which mimics the real thing, but on a budget.
In this post, I will go over the hardware side. A future post about the software/firmware will follow. You can also find all hardware design files and firmware sources on GitHub: https://github.com/Rahix/Poppy-Logic-Controller
I have recently(!) released port-expander
, a small crate to make
access to I²C port-expanders as easy as possible.
I often open pavucontrol
to adjust the volumes of different applications relative to each other.
Sometimes music is too loud, sometimes Jitsi sessions are too silent. However, it is annoying to
switch context ever so often just to open the mixer, change volume, close again. As I am always
looking to challenge myself with some useful projects reaching beyond just writing software, this
felt like a great opportunity: I built myself a small mixing desk to control PulseAudio streams with
hardware faders.
Pavu Mixer is what this resulted in. The project is fully free and open-source, including the hardware. It can all be found on GitHub: https://github.com/rahix/pavu-mixer
In this blog entry, I'm going to detail parts of the journey and the architecture of the project.
ravedude
is a tool I created to seamlessly run Rust code on AVR
microcontrollers with nothing more than the usual cargo run
. This is very
much inspired by the great cargo-embed tool!
Many people who have written C code for Arduino have at least heard of the
millis()
function at some point. It returns the number of
milliseconds since the program started running.
In avr-hal (a Rust library for AVR microcontrollers) there currently is no equivalent for it. Instead of waiting on someone to add that, let's see what it takes to build our own!
This is a blog post accompanying the release of shared-bus
. shared-bus is a small crate to allow
sharing a bus between multiple devices. The current implementation is limited to i2c but extension
to other bus protocols is easily possible.