Skip to content
Snippets Groups Projects

ICBM Arduino Firmware

ESP32 firmware for the ICBM, based on Arduino and the ESP32-Ethernet-Kit_A_V1.2. The Intelligent Controller Board for MPODs is a project that aims to automatically perform power procedures upon defined inputs.

This project depends on Arduino_SNMP and MCP23S08.

Usage

The IMC is meant to be used over network using HTTP get and post.

Routes

All routes return JSON.

Available routes are:

  • /idn: provides information about firmware and hardware version, and uptime.
    It can be queried as a heartbeat, seeing the uptime increasing.

Serial Interface

The serial interface is available through the micro-usb port. It prints basic networking information, as well as a heartbeat (- if ethernet is disconnected, else .).
It is not possible to control the device or perform queries through the serial interface.

Development

Quirks

Despite communication being over Ethernet, the project makes use of the ESP32 Wifi stack, hence some references to Wifi here and there (eg. WiFiUdp).

Installation

Either use the Arduino IDE and use its library manager to find the SNMP library, or use arduino-cli:

# Download arduino-cli
wget https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_64bit.tar.gz

# Extract the downloaded archive
tar -xzf arduino-cli_latest_Linux_64bit.tar.gz


# Verify installation
arduino-cli config init

Then set up the required environment. Edit ~/.arduino15/arduino-cli.yaml and add the following:

board_manager:
    additional_urls:
      - https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
      - http://arduino.esp8266.com/stable/package_esp8266com_index.json
library:
    enable_unsafe_install: true

We enable unsafe installation to allow installation of packages outside of the Arduino package registry (ie. via git)

Update the Arduino index with:

arduino-cli core update-index

The required libraries are (minimum versions):

arduino-cli lib install ethernet
arduino-cli lib install --git-url https://github.com/patricklaf/SNMP.git --config-file arduino-cli.yaml  # Awaiting 1.4.1+ tag
arduino-cli lib install MCP23S08@0.5.2

SNMP needs to be installed from Git until a new release (greater than 1.4.0) is released due to compilation issues with arduino-esp 3+.
This is fixed in master, but not tagged and released in the Arduino library list.

The project can be compiled so:

arduino-cli compile -b esp32:esp32:esp32wroverkit icbm.ino -v

And uploaded so:

arduino-cli upload -p /dev/ttyUSB1 -b esp32:esp32:esp32wroverkit

Versioning

The firmware version is provided as part of the /idn route.
This is the git tag or commit, if -DICBM_GIT_VERSION is set.
The git date can be set via -DICBM_GIT_TIMESTAMP.

CI Artefacts

CI artefacts can be uploaded so:

unzip icbm-0.0.0.zip
arduino-cli upload -p /dev/ttyUSB1 -b esp32:esp32:esp32wroverkit --input-dir icbm-0.0.0