Is it possible to send OTA updates to Arduino via nRF24L01+ module?
Here are my findings:
Here is an instructable explaining how to program Arduino wirelessly but this thing uses a BT module which shows up on PC as a COM port.
Here is something similar using Xbees.
However, these use another arduino attached to a PC on the other end. In my case, I am planning to use rPi hooked to another nRF24L01+ rather than PC.
This is an excerpt from the datasheet of Atmega chip:
In ATmega88A/88PA/168A/168PA/328/328P the Boot LoaderSupport provides a real Read-While-Write SelfProgramming mechanism for downloading and uploading program code by the MCU itself. This feature allows flexible application software updates controlled by the MCU using a Flash-resident Boot Loader program. The Boot Loader program can use any available data interface and associated protocol to read code and write (program) that code into the Flash memory, or readthe code from the program memory.
Here is what I planned as a strategy.
Master programmer = Raspberry Pi + nRF module.
Slave arduino = Arduino + nRF24L01 + external EEPROM
Once I have to upload a new code, I can transmit the compiled code to the arduino (I can do that, right?) and Arduino will save it in the external EEPROM for the time being.
When the transfer is complete, I will send a signal which will make the arduino reset and copy the code from EEPROM to its flash memory.
Is the strategy correct and feasible?
How should I proceed to achieve it?
Any other suggestions which you might have are welcome.