MicroFlo: Live dataflow programming for microcontrollers
Unlike most other dataflow runtimes for constrained devices, MicroFlo run standalone on the microcontroller, can be introspected and reconfigured at runtime, and has built-in support for automated testing.
One can program with MicroFlo either:
- Visually, using Flowhub
- Textually, using the declarative .fbp DSL or .json definition
- Programatically, by embedding it and building a graph using the C++ API
MicroFlo is very portable, written in C++03 without exceptions and stdlib. It comes with support for multiple platforms,including Arduino and Embedded Linux. It has been used on many different devices, from Atmel AVR8 to ARM Cortex M0/M1/M3/M4 devices (LPC mbed, TI Tiva/Stellaris), ESP8266 and Raspberry PI.
MicroFlo is designed to integrate with other data-driven programming tools, including msgflo for easy building of distributed systems (IoT).
For visual programming your Arduino, follow the microflo-example-arduino.
MicroFlo is a part of Flowhub, a platform for building robust IoT systems and web services.
We offer an Integrated Development Environment and consulting services.
- Works fine for simple programs
- Components exists for standard I/O on Arduino devices
- Live programming supported for most changes
- Basic support for automated testing
MicroFlo in the wild:
- Jon's fridge thermostat has been running uninterrupted since September 2013.
- The Ingress table at c-base station, Berlin uses MicroFlo to control the lights. One major upgrade/bugfix since March 2014.
- The lights on the CNC-milled Christmas tree at Bitraf, Oslo ran for 4 weeks during Christmas 2013.
When you find issues: file bugs and/or submit pull requests!
For porting MicroFlo to other microcontrollers, see how-microflo-works and target bringup.
MicroFlo is released under the MIT license.
Note that the platform MicroFlo runs on (like Arduino), and MicroFlo components may be under other licenses!