AFSM is a toolbox for developing embedded systems in just 4 steps.

The site describes techniques used for developing controls based on the hardware of the Arduino MEGA2560, DUE and ESP32 WROOM dev boards. The software is based on the principles of a Finite State Machine. 

1. define I/O by the configurator – drag and drop
2. test and simulate the I/O by the HMI app       
3. make a FSM by using the available functions
4. (optional) design a DIY HMI for your control  


Applications are made by VisualMicro (sketches), Visual Basic (HMI) and on the Raspberry Pi (HMI) with Python, all freeware. This site descibes some theory and offers the software for making controls based on the MEGA 2560, DUE and ESP32 dev boards. Both applications and development software are freeware. Controls are made based on the principles of a finite state machine.  

Highlights of the Arduino Finite State Machine website:

  • Some theory about Finite State Machines
  • After the definition of the I/O, the process information is direct available in both the serial monitor as on the PC
  • After the definition of the I/O, the I/O can be monitored and controlled by the HMI app
  • Many usefull functions for implementing a finite state machine
  • The FSM supports multiple active states
  • The communication between the board and the PC is made by pre-defined messages
  • Every terminal program (TTY) can communicate with the board
  • There are 2 different HMI versions for windows: Serial and Internet communication
  • Communication between the board and HMI with error correction
  • Markers (no I/O attached) can be used for exchanging data between the board and the PC
  • The HMI contains a tool for trending max 3 I/O signals on the screen
  • With the HMI, the I/O can be writen to an access database (database template present in the standard)
  • Easy Tool for defining TAGS/Pins; the Configurator
  • The actual finite state machine is made in the UserFiniteStateMachine.h  file
  • The VBA standard program is very suitable for making your own HMI application
  • The HMI presents some basic information of the board, free RAM, time on the board, and FSM cycle time
  • Downloadable software package for MEGA2560; V2.6, HMI, Configurator, Sketch
  • Downloadable software package for Mega DUE board; V2.4. HMI, Configurator, Sketch
  • Downloadable software package for ESP32 board; V3.3, HMI (serial and IOT), Configurator, Sketch

Some knowledge of programming C++ for Arduino and Visual Basic/Visual Studio is needed. Enjoy this site and feel free to contact me.