Programming Arduino/Microcontrollers Using Android Smartphone: ArduinoDroid and ZFlasher AVR

Honor 10 Lite, Android 10

ArduinoDroid is an Arduino IDE for Android. The paid version offers some advanced options, but all that really matters to most people is already there in the free version: you can write, open, edit, save, compile and upload programs to Arduino boards, use the Serial Monitor and all the usual options. To connect the phone to the board you will need a USB-OTG cable/adapter.

This is the standard Android keyboard. The non-free version of the app offers its own ‘tiny keyboard’, allowing you to see more of the editor area while you are typing. I have tried it and it is really tiny. Personally, I would still choose the standard keyboard.
The visible editor area is quite limited in both orientations of the phone.
By the way, after auto-rotate the screen goes back to the start of the code.

I sent some sketches from my PC via email. I also wrote a short sketch on the phone itself, basic LED blinking. The screen is very small, and the keyboard is inherently ill-suited for this job, but it’s doable. The compiler is the same (avr-gcc) , and the libraries are available in the usual way. All the other familiar options are accessible through the mobile-app-style menus.

The app’s GUI (graphical user interface) is clear and efficient. I uploaded programs to Arduino Uno, Nano, ESP8266 , and ESP32 boards. Everything worked without issues, including the Serial Monitor. ArduinoDroid uses its own internal uploader by default, but it can use avrdude instead.

ArduinoDroid can also upload pre-compiled programs (.hex files) to Arduino boards, which is a very useful option and one that doesn’t exist in the ‘normal’ Arduino IDE.

The app is also supposed to support uploading to ESP32 over WiFi (OTA) but I haven’t explored that option.

The lists of supported boards are very long.
The lists of supported boards are very long.

The app is quite large ; it uses 575 MB of phone memory. It can work offline (it doesn’t need the Internet). The ads in the free version can be quite aggressive and annoying, especially when they take up the whole screen and blast loud audio (usually after compiling). They can be permanently removed for around $3, while the full version is approximately $7.


Conclusion: Writing whole programs on your phone’s touchscreen is hard work, and I wouldn’t recommend it, but this app is well-made and could be quite useful if you need to update an existing Arduino program or change some configuration parameters, perhaps to solve a bug on-site. It would be fun to test on a tablet.

https://play.google.com/store/apps/details?id=name.antonsmirnov.android.arduinodroid2


ZFlasher AVR is a newer Android app for programming AVR microcontrollers. It is essentially a GUI that calls avrdude in the background, and then avrdude performs the uploading (to the chip) or downloading (from the chip) according to the parameters supplied by the user. The app is supposed to work with many hardware programmers. The GUI is simple and intuitive ; it offers all the usual options right where you expect them to be. I tested ZFlasher AVR with the USBasp and USBtiny programmers, using ATmega8, ATmega168, and ATmega328P. It all worked well. Writing, reading, setting fuses – everything went smoothly. It works with Arduino, too.

The blue board with the ATmega8 is connected to the phone through a the USBasp programmer and a USB-OTG cable..

In the free version you have to pack your fuse and lock bit settings into hexadecimal numbers yourself. After you’ve made a donation, you will gain access to ‘advanced options’ which, I presume, will allow you to set BOD, EESAVE, CKIDV8, oscillator etc explicitly and individually. (Not relevant for Arduino.)

And avrdude in the background.

Later, tests with Arduino Uno and Nano also went well. The phone’s OTG cable was connected directly to the boards. Pre-compiled (.hex) files were uploaded with no issues. For Arduino, you don’t set fuses, so the free version of the app looks even better. The list in the GUI offers two programmer choices that will work with many Arduino boards/bootloaders: ‘arduino’ (115200 bps) and ‘arduino_low’ (57600 bps). I couldn’t find the 19200 bps option for old boards with ATmega168, but that isn’t super important.


Conclusion: it’s nice to be able to update a program on-site, with tools that fit in your pocket.


ZFlasher AVR can open files from Google Drive. So with this app and very little training, even a non-specialist user could easily update the program on their device. And for Arduino, no additional hardware is needed except for a USB-OTG cable. The app automatically keeps previous settings. So, in principle, if an updated .hex file has the same name and is in the same location on Google Drive, all the user would have to do to update their program is connect the phone to the Arduino device, open ZFlasher AVR , and touch ‘GO!’.

https://play.google.com/store/apps/details?id=ru.zdevs.zflasheravr&hl=en_US

Leave a Reply