I'm new to this platform and electronics in general, but I'm responsible for a big project with mass production of 2000-5000 controllers. Learning fast is nice.
One thing we need is for end users of our unit to be able to update the unit with new software. I would prefer it to be either connecting your PC to the unit with USB, download a small flashing program (like winflash for bios etc) and download the binary from our website and upload it, or inserting a USB flash drive and the arduino automatically looking for new firmware at boot.
Is this possible?
Also, I want users to be able to upload presets to the unit through USB (using web http://unit.local) or through an iOS or Android run bluetooth app. USB being the best choice I believe, because there's no need for special apps.
From Arduino 1.5.x onwards you can use the IDE from the command line. Maybe you could write a PC program (in Python, or whatever) to get the data from the web and then upload it to the Arduino over a USB connection.
The commandline upload process is illustrated in this Thread.
Sure, but the users here are not computer wizards. It needs to be the similar process of updating your router firmware. Download the binary and upload it through USB web interface - which would be my preferred choice.
Is it possible? Connect to USB. Enter http://thingy.local and get a simple web interface where you can upload the firmware and/or txt files as "recipes" for the software.
oyvstok:
Also, I want users to be able to upload presets to the unit through USB (using web http://unit.local) or through an iOS or Android run bluetooth app. USB being the best choice I believe, because there's no need for special apps.
If you want the user to be able to upload a new compiled program to his device and the PC runs on Windows, you just need to provide the HEX-file for the user and a link to the XLOADER tool.
XLOADER can upload HEX-files to Arduinos with an Arduino bootloader on it (8-bit Atmega boards only).
oyvstok:
But is it possible to upload hex through usb via web browser?
If you develop a webbrowser of your own, you can program features into it as you want it to have. So I'd say:
First YOU have to invent and develop this new webbrowser
Then you have such a webbrowser.
Standard webbrowsers such like Google Chrome, Internet Explorer, Firefox and so on don't have any "Arduino upload" feature. At least: I've never heard of it.
You can use a standard webbrowser to download a HEX file.
Then you can use a Windows-PC and XLOADER to upload the HEX file to the Arduino.
I meant running a webserver on the arduino, being able to upload the hex there!
Like you would any router or network unit that has firmware update capabilities..
As far as I know such upgradable devices like "network routers" are always based on a small Linux operating system.
Except the Arduino Yun no Arduino is based on a Linux operating system. The Arduino Yun consists of an Arduino compatible controller combined with an additional Linux system, and they can interact usiing a 'bridge' system. I don't know what you can do with that. I never had a Yun.