While I was working on the prototype I ran across several good tools for Arduino development that replace the standard Arduino IDE.
Command-line code builder for embedded systems including Arduino. Written in Python, it is cross-platform and very easy to install. Initializing a new project is a matter of one command:
platformio init --board=leonardo
Then the code can be compiled (and uploaded into Arduino, if auto-upload is switched ON) using just run command:
Or uploaded manually:
platformio run --target upload
Syntax-highlighted output reports all compilation errors/warnings, as well as Arduino memory usage. Here is a screenshot of two example Platformio outputs (click the image to enlarge):
In the first run Platformio reported no errors and (excessive) Arduino memory usage; before the second run I randomly inserted a symbol in the code, so Platformio threw an error. Memory usage is a very useful metric that allows you to check if the code fits in your hardware without actually uploading it.
Overall, using Platformio you can ditch the uncomfortable Arduino IDE and use the IDE of your choice.
Cloud9 + Platformio
Cloud9 is a great cloud IDE for development in a range of different languages. For each of your projects you get a separate Ubuntu VM that you control purely via browser: the IDE seems to be implemented in HTML5 or something as light-weight, that requires very little traffic. The IDE provides a good editor with all the standard features and a console, which you can use to install any packages you need – for example, Platformio.
Here is a screenshot of my Cloud9 workspace (click the image to enlarge):
Cloud9 has paid plans, but the free one also allows you to create one or two workspaces. Here are the free features I liked the most:
- Nice editor themes, syntax highlighting and auto-completion.
- Cross-platform – crazy enough, it works fine even on iPad’s Chrome. Even in the absence of hotkeys, it’s perfectly usable for some draft work away from PC.
- Simultaneous editing from multiple sessions (different tabs, OSs or machines) just like in Google Documents. I haven’t tried it using multiple accounts so am not sure if a free plan allows it, but even when using one account, it’s the best collaborative online code editing tool I’ve seen.
In terms of hardware, on the free plan I got:
- Quad Core Intel Xeon CPU 2.3 GHz (8 threads)
- 512 Mb RAM
- 1 GB disk space
Great processing power and just enough memory space to work on a small to medium project.
One thing that I missed that is supported only in a paid plan is an ability to connect to the VM remotely through SSH – I failed to set up University’s VPN on the VM and without SSH couldn’t set up a routine on my office PC to commit code from the VM to the internally-hosted git.
While I used Platformio on Cloud9 to only compile the code, it should be possible to route its output to a local machine with attached Arduinos to program them from VM.
Overall, Cloud9 allowed me to code outside the office: at home and even on the train with very poor Internet connection. On exit the session is paused, so next time I resumed right from where I stopped.
Cloud Arduino IDE, which installs a Chrome Extension that allows you to upload your code to the physical Arduino. Haven’t actually used it as registration can only be done when Arduino is plugged in – and I was on the move – but in case it is difficult to program physical Arduino from Cloud 9, Codebender might be a good alternative.