farther
An RPC-like binary
protocol, resident
firmware, and popular
language bindings for
remote programmatic 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.
Project Description
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.
!!!!C++!!!!
BaseBoard * board = new Arduino();
if (board->init())
{
// Loop here or do whatever
board->SetHigh(PinIODir.Out, PinIO.digital1);
board->Sleep(500);
board->SetLow(PinIODir.Out, PinIO.digital1);
board->Sleep(500);
}
delete board;
!!!!D!!!!
auto myavr = new Arduino();
while(1)
{
myavr.digitalPin(PinIOPole.High, PinIODir.Out, PinIO.One);
myavr.sleep(500);
}
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
http://www.openhousewares.com), a remote servo-supported robotic project, or anything you can imagine that you want to control remotely and programmatically.
Requirements
AVR: ATmega, ATtiny
Host: Linux, Windows, OS X
Connection: USART, virtual COM port, TCP/IP socket, pipe, shared memory, USB
Compiling: msgpack, avr-gcc
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.
Language Bindings
Currently, there is support for bindings in AVR asm, C/C++, C#, D, and JavaScript.
Support
Home Page: http://farther.avr-firmware.net/ <still under construction>
Wiki Pages: http://wiki.opendesignstrategies.org:8040/display/FARTHERJIRA Issues and Feature Requests: http://jira.opendesignstrategies.org:8080/browse/FARTHERCommunity Forums: http://www.avr-firmware.net or use these
http://farther.codeplex.com/discussions
Contact
Farther Development Team: farther-dev (at) avr-firmware (dot) net
