When developing embedded electronics, many people have their favorite Integrated Development Environment (IDE). Some people like Eclipse, some people like Programmer’s Notepad, some people like the Arduino IDE, etc. These environments are useful because they give the developer an easy-to-understand interface for programming and automate a lot of the common tasks a developer has to do. They’re useful for compiling, debugging, and all the “overhead” stuff that a developer must do. Lots of people work well with these tools. I am not one of these people.
When I started embedded development, I was running Gentoo Linux on my PC, developing on an LPC2138 ARM7 platform. All of the project files were written by hand. The Makefile was written by hand. The toolchain was compiled on the machine by hand. The source files were edited in a terminal with vi. These “overhead” things took time, but if something went wrong with the build, I knew exactly what each support file looked like. I knew my build inside and out. I really liked the amount of control I had over every detail of the development.
With Arduino, it often feels like you’re locked into the IDE. Sure, you could hack the IDE code to do your specifications, but what if you want to develop old-school-style with a terminal and command-line control? Enter Ino toolkit.
The Ino project is a set of command line tools for working with Arduino in the terminal. It does most of what the Arduino IDE does, but on the command line. Your hands never have to leave the keyboard, which, if you’re like me, makes development much more enjoyable and gives you that warm and cuddly “nerd-cred” feeling. Unfortunately, the toolkit is currently only available on Linux and OS X, but they’re always looking for Windows developers for help with the project (hint hint).
Ino toolkit implements the important bits of the Arduino IDE, and has some functionality that the Arduino IDE does not. Here’s a quick rundown of the commands:
build Builds firmware from the current directory project clean Removes intermediate compliation files completely init Setup a new project in the current directory list-models List supported Arduino board models preproc Transform a sketch file into valid C++ source serial Open a serial monitor (uses picocom) upload Upload build firmware to the device
Each command has a list of flags that set things like baud rate, error reporting, etc. All the normal actions you would perform in the Arduino IDE are now performed with commands.
$ ino build -m mega2560 $ ino upload -m mega2560 -p /dev/ttyACM1 $ ino serial -p /dev/ttyACM1
This gives you more capability in some ways, but also has some drawbacks.
Ability to upload code without recompiling
Ability to generate valid C++ source from Arduino sketches
Work entirely from the terminal
Verbose error reporting and programming process reporting
No drop-downs, all examples and folders must be accessed through the terminal
Converting existing projects to work with Ino toolkit is more involved
To install Ino Toolkit, visit their website to download the installer packages. Currently, the packages must be compiled on your machine, but if you’re using Ubuntu, I’ve written up a handy installer script that should take care of the dependencies and setup for you. If you have git already installed on your machine, you can uncomment the last few lines of the script and it will download and setup the package for you. Enjoy!