I am brainstorming a project that will have a Particle Controller with Arduino Sensor Modules connected to it. I am wondering if it is possible to update the firmware on the Arduino modules from the particle? One of the modules I want to use is a Display to display Information, I would like to have the opportunity to upgrade the firmware from the Photon without having to flash the firmware from my computer to the arduino.
Just curious as to why you would want to put an arduino in between the sensor and Photon, since the Photon is generally more capable than an arduino? Why not use the photon directly as the main controller?
My current Idea is a Automatic Fish Tank Controller, with “Expansion” Models. These models could be anything from Chemistry Testers, to Light Controllers, to Motor Controllers. Depending on the Tank you could kinda add the devices you want to use. I would mainly use it for my own tank systems but have the possibility to make it into an actual product.
if price is not an issue for you, on these modules I would go with photons all over the place. Then you can re-flash all of them and code them using the same workflow offered by Particle, be it the Particle Build (on the cloud IDE) or local in your laptop with Particle VS Code.
The only problem with using Photons on each module is having the customer need to setup WiFi credentials for each module. On top of that, a Particle “product” can only have one firmware so multiple “products” would need to be associated to a single Customer. To program an Arduino directly typically requires a JTAG interface which can be emulated on a Photon but requires direct connection to the target module (more pins).
Having multiple Cloud-connected Photons is the “simple” but not necessarily most practical solution. Having fixed, non OTA-upgradable modules is easier but requires that the firmware for these modules be fully tested and validated before release.
With the Mesh devices, the entire module OTA issue goes away. However, the design of your product now requires a strong grasp of distributed processing principles since mesh communications are slower than an I2C or SPI connection.
Have you considered something like the Grove system where you have a bunch of female connectors on both the controller and sensor, and you can hook them up in various configurations? That way there’s only one controller, which you could OTA new code to, or enable/disable certain parts using function calls.