Firmata is a protocol and firmware that allows you to communicate between a computer and an Arduino board or other microcontrollers. It provides a standard way to control and interact with the microcontroller using a host computer, without the need for writing custom firmware for each specific task.
Typically, when you program an Arduino board, you write code that runs directly on the microcontroller. However, with Firmata, you can offload some of the processing and control to a computer, enabling you to control the microcontroller using software running on the computer.
To use Firmata with Arduino, you need to upload the Firmata firmware onto your Arduino board. This firmware acts as a bridge between the microcontroller and the computer. Once the Firmata firmware is loaded onto the board, you can use various programming languages and libraries on the computer to communicate with and control the Arduino.
There are libraries available for different programming languages, such as Python, JavaScript, C++, etc., that provide APIs for interacting with the Firmata protocol. These libraries allow you to send commands and receive data from the Arduino, controlling its inputs and outputs, such as digital and analog pins, PWM signals, servo motors, and more.
For example, Johnny-Five is a JavaScript framework that allows you to program and interact with Arduino boards using the Firmata protocol. It provides a high-level and easy-to-use API for controlling various sensors, actuators, and other components connected to the Arduino. See example tutorials LED Blink Arduino Johnny-Five JavaScript Tutorial and Servo Control with Johnny-Five and Arduino.
Another example is pyfirmata, that allows one to use the library API to control Arduino using python programming language. See LED blink with Arduino using PyFirmata to learn how program Arduino using python language using pyfirmata.
Using Firmata, you can create interactive projects that leverage the processing power and capabilities of a computer, while still utilizing the Arduino's hardware for interfacing with the physical world. It's commonly used in scenarios where you want to control an Arduino board from a computer application or when you want to integrate Arduino into larger systems or frameworks.
To test the firmata protocol one can download firmata_test.exe application free from the following link and test the digital and analog pins.