will be read-only starting December 31st, 2018. For more info please look at this Forum Post

SerialControl is a simple open source (GPL2) firmware for the Arduino platform, that allows to remote control Arduinos over a serial connection. The implemented protocol can be used in a XBee peer2peer network. Multiple Arduino modules can be addressed by an ID. The firmware wraps most IO commands of the Arduino language to make the output pins controllable through a serially attached computer.

Download (there is a download link in the source/master tabs)



To install SerialControl, just copy the source code directory "serialControl" into your sketchbook folder. Open the Arduino programming environment and load the serialControl package. Adjust the "ownID" variable to your needs. This variable should be unique on the Arduinos, you want to address. Now the firmware can be compiled and transferred to the Arduino. Keep in mind that SerialControl requires the "String library" ( to be installed.


After installing the firmware on your Arduinos, you can use it by transmitting commands over a serial connection (e.g. wired or XBee). For first experiments you can use the terminal, built into the Arduino programming environment.

  1. The following command lights up the LED at pin 13 of the Arduino module with ID 0:
  2. * 00dw0013HIGH;
  3. To switch it off again, transmit:
  4. * 00dw0013 LOW;
  5. The following command resets all pins to low:
  6. * 00al LOW;

As you might see, the commands have all the same structure:

  1. The first two characters determine the ID of the desired Arduino module.
  2. The third and the fourth characters shape the command:
    1. pm: wraps the pinMode function
    2. dw: wraps the digitalWrite function
    3. aw: wraps the analogWrite function
    4. al: "All" is a convenience function to change the mode of all output pins
  3. characters 5 to 8 form the first argument
  4. characters 9 to 12 form the second argument
  5. if the arguments have less than 4 characters, the leading positions are white spaces.
  6. finally every command string is finalized by a colon character (;).

Known Issues

  • So far it is not possible to read out input pins.
  • For performances in combination with XBee modules:
    • Only Series 1 types work in real-time. The mesh algorithm of the Series 2 slows the transmission down quite much.
    • The firmware does not cope with transmission collisions, so it can be beneficial to repeat transmissions in short periods.