Simplified Interface for Uploading Arduino Code Across Multiple Devices

Hello,

I have an Arduino code that needs to be uploaded to a large number of devices. I would like to create a user-friendly interface or tool to simplify the upload process, making it easy for anyone in our company to perform the uploads without technical expertise.

Could you please suggest instructions, tools, or software that I can use to achieve this? I’m open to ideas for custom or off-the-shelf solutions.

Thank you in advance for your guidance!

Isn't that exactly what the Arduino IDE does? You load a sketch, then press the upload button.

Otherwise, all Arduinos can be programmed with a command line tool, so any software that can call an external exe can be used. It's a simple exercise for any PC coder.

Without more specific requirements, it's hard to give more detailed advice.

Hi @lafdil. Are you able to use Arduino IDE to upload the Arduino sketch to the target device?

If so, please tell us which board you select from Arduino IDE's Tools > Board menu when you do that. From that information, we could infer the specific upload procedure that is required for the device. When using Arduino IDE, the upload procedure is abstracted, so you only need to click the "Upload" button, no matter what board you are using, but under the hood the procedure can be very different from one board to another. This information might allow the helpers to more effectively advise you on your project.

If you aren't using Arduino IDE to upload to the device, please give us detailed information on how you are uploading to it.

Thank you for your response! You’re absolutely right that the Arduino IDE is straightforward for uploading sketches. However, the idea here is to simplify the process further for non-technical staff in our company.

I’m considering an interface where the user doesn’t have to deal with selecting boards, ports, or even opening the Arduino IDE. Ideally, it would involve something like a single-click operation or a custom tool that automates the upload for a predefined set of boards and code.

You haven't answered to post #3 so we don't know which board is involved.

In general you can script (batch, bash, powershell) the command that the IDE issues.

For AVR based boards (uno, mega etc) there is a tool with a GUI; see AVRDUDESS – A GUI for AVRDUDE | Zak's Electronics Blog that might do the job for you. No experience with it but check it out.

I have written code like that. Initially I used it for programming pre-production prototypes, but then it got used in production until the "proper system" was in place.

So the general principle is:

  1. Wait for a new device to be plugged in
  2. Popup a "Do you want to program this device caption?" (optional)
  3. Program the device
  4. Display a go / no go for the user
  5. Log details of the operation (e,g. serial number, success/fail, firmware version etc) in a file for tracking purposes.
  6. Wait until device is unplugged and loop

The app has no configuration for the operator. A config file specifies what code to download etc, which is setup by a supervisor and the operator never changes.

With the right packaging, it can be simple to deploy the tool across a network, so that a user need only install the package, plug in the device, click yes, and they have got the device programmed with the latest firmware.

Since company requirements vary so widely, I have not seen any off the shelf tools to do the job; they would at least need some tailoring to specific requirements.

Thanks for sharing your experience! This approach seems perfect for what we need. The idea of a simple interface where the operator just plugs in the device, clicks “Yes,” and it gets programmed automatically is exactly what I’m aiming for.

Could you share more about the tools or languages you used to build this? Any tips or advice would be really helpful!

I used C# with Microsoft Visual studio. To deploy the application, I used the "ClickOnce" publishing method to a network share. It's quite straight forward for any C# developer I think.

I can't share code as it is proprietary. One thing to be wary of is that each time you plug in a USB serial device, typically it gets assigned a new COM port. There are a few ways around that; you can set up Windows so it assigned the same port, or periodically delete COM ports. Both of which I think require admin access.

If you are using FTDI devices, you can configure them so that they re-use the same COM port I think.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.