[work in progress, Summer 2023]
In the Winter of 2022 and 2023 we used Firmata and Firmata4j in the EECS 1021 class. It provides a great deal of functionality while also allowing students to focus on the development of the client on the computer rather than both the client and the Arduino server code.
At it's core, Firmata allows a PC-based program to access sensors and actuators on the Arduino board without having to manually program the Arduino. This is great for basic telemetry and control.
Firmata is very popular and many people have looked to extend it. One really interesting way to do this is with FirmataBuilder:
There are other custom firmwares including:
- ConfigurableFirmata.
- Firmata Express (Mr Y)
- Extensions for CircuitPython (microphones, NeoPixel, accelerometer, etc.)
Firmata4j (updating on GitHub)
The latest branch, as of May 2023, is version 2.3.9. It includes a shift to jSerialComm. The pre-release version can be found here: https://github.com/kurbatov/firmata4j/tree/feat/one-wire.
Note that there are instructions at the bottom of that page on how to participate in updates. It is not currently on Maven Central.
Python
- Mr's Y's projects
- PyMata, a straight-forward extension of Standard Firmata, which utilizes a replacement, FirmataPlus , for Standard Firmata.
- Firmata-Express is promising as there are extensions to include DHT sensors, etc. (https://leicesterraspberrypi.wordpress.com/guides/using-dht-sensors-with-firmataexpress-and-pymata4/)
- Telemetrix, a larger leap in development from Standard Firmata.
- Don't believe that it uses the SysEx commands, so may not be worth going to.
Java
- Firmata4j
- DioZero may work with ConfigurableFirmata 3. Details on DioZero & FIrmata to Arduino's here and here. (OLED support may not exist). This could be interesting for both SBC (rPi, BeagleBone) and regular PC development.
C++
OpenFrameworks. GitHub page shows firmata 2.5.0 inside.
Elements to incorporate in 2023 and onwards
- Ultrasonics
- Realtime clock.
- temperature and humidity sensors
- General I2C
The FirmataPlus / Firmata-Express approach.