An RPC-like binary protocol
, resident firmware
, and popular language bindings
access to AVRs and Arduinos. You program in your favorite native language on your local host and when you execute your local code, it runs remotely on your remote AVR via COM port, USB, or TCP/IP socket.
An AVR/Arduino runs the farther firmware that listens on an interface like the USART, virtual COM port, etc and executes code programmed on a remote host.
BaseBoard * board = new Arduino();
// Loop here or do whatever
auto myavr = new Arduino();
myavr.digitalPin(PinIOPole.High, PinIODir.Out, PinIO.One);
This project consists of three primary components:
- AVR firmware that is loaded onto an AVR or Arduino
- Language bindings that you use on the remote host to control the AVR
- The protocol used between the language host and the AVR
The idea is that you have an AVR/Arduino running the farther firmware that listens for protocol packets on some interface, such as the USART, virtual COM port, or TCP/IP connection. On the remote host, you write a program in one of the supported languages for
which there is a binding (see below for currently supported language bindings), and then execute your code and view the results on your AVR/Arduino remote system. The remote AVR-based system might be a wireless sensor, PC-connected arduino with LEDs, intelligent
home automation 'ware' (a la Open Housewares
), a remote servo-supported robotic project, or anything you can imagine that you want to control remotely and programmatically.
Linux, Windows, OS X
USART, virtual COM port, TCP/IP socket, pipe, shared memory, USB
Note: If you would like support for the XMEGA or another language binding please let us know your interest at the contact email below or by leaving a post on the forums, also listed below.
http://farther.avr-firmware.net/ <still under construction>
JIRA Issues and Feature Requests:
Community Forums: http://www.avr-firmware.net
or use these
Farther Development Team:
farther-dev (at) avr-firmware (dot) net