SMFlow IconSMFlow
Hardware Agnostic Logic

Target Hardware

From $2 microcontrollers to DIN-rail industrial PLCs and Linux IPCs. Design your control logic independently of the exact target chip.

Microcontroller & Wireless

Espressif ESP32 / ESP32-S3

High-performance dual-core microcontrollers with integrated Wi-Fi, BLE, rich GPIO matrices, and hardware timers suited for distributed automation nodes.

Specifications

  • Tensilica / RISC-V Dual-Core
  • High-Speed GPIO & ADC/DAC
  • Hardware SPI / I²C / UART
  • Integrated BLE & Wireless Telemetry
Industrial micro-PLC

STM32 / Arduino Opta

DIN-rail mounted industrial micro-PLC featuring industrial relays, 24V digital/analog I/O, RS485 Modbus, Ethernet, and rugged power protection.

Specifications

  • STM32H747 Dual-Core
  • 8 Configurable 24V Inputs
  • 4 High-Current Relay Outputs
  • RS485 / Ethernet / USB-C
Microcontroller

Raspberry Pi RP2040

Dual-core ARM Cortex-M0+ targeting cost-effective custom automation boards, peripheral co-processors, and low-latency motor control.

Specifications

  • Dual ARM Cortex-M0+ (133 MHz)
  • Deterministic Cycle Timing
  • Hardware I2C / SPI / UART
  • Native USB Serial & Mass Storage
8-bit Microcontroller

Arduino Nano / AVR (ATmega328P)

Ahead-of-time compilation down to the classic 8-bit AVR. The generated C++ uses no standard library and no dynamic allocation, so a control flow fits in 32 KB of flash and 2 KB of SRAM.

Specifications

  • ATmega328P @ 16 MHz
  • 14 Digital I/O, PWM on D3/5/6/9/10/11
  • 8 Analog Inputs, 10-bit ADC at 5 V
  • Hardware SPI / I²C / UART & Watchdog
Industrial PC / IPC

Linux Native (x64 / ARM64)

Direct C++17 compilation for standard Linux IPCs, Raspberry Pi 4/5, Advantech, Beckhoff, and edge computing gateways.

Specifications

  • x86_64 and ARM64 Architectures
  • Realtime PREEMPT_RT Kernel Support
  • Socket / CAN Bus & Modbus TCP
  • Headless Systemd Daemon Execution
Virtual Runtime

Desktop Simulator

Instant software-in-the-loop simulation running inside the SMFlow IDE. Test full state transitions and scan cycles without physical hardware attached.

Specifications

  • Cross-platform (Windows, Linux, macOS)
  • Step-by-step Scan Cycle Execution
  • Live Variable & Force Overrides
  • Zero Compile Delay

Peripheral Ecosystem

Supported Protocols & Interfaces

GPIO & Digital I/O

Pull-up/down resistors, hardware debounce, interrupt triggers, high-frequency PWM outputs.

Analog (ADC / DAC)

Sensor voltage scaling, raw calibration curves, moving-average filters, threshold comparators.

CAN Bus

Controller Area Network frame transmission, mask filtering, telemetry parsing for mobile & industrial machinery.

I²C & SPI Buses

Hardware peripheral communication with OLEDs, accelerometers, temperature sensors, and external EEPROM.

UART & Serial

Custom protocol packet framing, telemetry streaming, RS232/RS485 Modbus RTU communication.

Timers & Clocks

On-delay (TON), off-delay (TOF), pulse timers (TP), and deterministic cyclic task schedulers.

Plug-in Device Library

Supported Sensors, Radios & Displays

Specific parts ship as device plug-ins, so a sensor is one node on the graph instead of a driver you write. Each plug-in compiles to ordinary C++ against the part’s real datasheet behavior — no runtime, no interpreter. The library grows with each release.

Ultrasonic RangefinderSerial

MaxBotix MB7850 / MB7854

Weather-resistant ultrasonic distance sensing for tank level, bin level, and proximity. Model and output units are set on the node; the reading arrives as a scaled value, not a raw count.

Graph Node

maxbotix-mx785x-distance
LoRa RadioSPI

Semtech SX1262

Long-range sub-GHz packet radio for telemetry between sites with no network. Separate transmit and receive nodes drop straight onto the graph.

Graph Node

sx1262-tx / sx1262-rx
DisplayI²C

SSD1306 OLED

Small monochrome status display for local readouts on a panel or enclosure. Write text to an addressed line and column from the flow.

Graph Node

ssd1306-text

Need a part that isn’t listed? Device plug-ins are added regularly —request a deviceand say what you’re building against.