ATMega Uploader with an LCD – Objective and Progress (Part 1)

An exciting use case for Arduino is to upload a program from an SD card to a chip using another Arduino . This would be useful for quickly updating many microcontrollers in a field, or in places where a computer is not accessible. Nick Gammon came up with a solution to this problem with his ATMega Uploader. To paraphrase from the website,

This project is intended to allow you to program your Atmega chips without having to buy a dedicated ICSP programmer. Instead, it uses a Uno (or similar) board to act as a programmer.

However, a drawback of the uploader is that it works over a serial monitor. This immediately removes the advantage of not having to carry a computer around as you update a microcontroller. I decided to try and solve this by integrating an LCD, and building a navigation interface to easily use the awesome project that Nick Gammon built over a GUI.

Now Gammon’s file uploader project includes a few different types of utilities including a board detector, a hex uploader etc. It would be convenient if there was a way to switch between these different utilities to test different things on the field. However, all the sketches don’t fit inside a single file, so there would be a need to actively switch between different sketches. I decided to try and boot different files from the SD Card for this purpose. To do this, I’m using AVR Boot.

The Objectives

  1. Create a rough interface to navigate through the ATMega File Uploader and other ATMega Utilities. Errors don’t need to be complete explanations and extensive debugging can still be done better with a computer.
  2. Use the SDFat library to move around the right files when you want to change the program being used.

Current Progress

As of writing this article, I’ve completed a rough integration of the LCD with the ATMega Hex Uploader, and begun the integration with the ATMega Board Programmer. Real-time updates can be viewed at the Github page.


Leave a Reply

Your email address will not be published. Required fields are marked *