Hi all,
I am new to Ardunio, but not to programming and am working on a home project for which I would appreciate views and advice from established users. Let me start by saying that this is not a commercial project, I have no plans to distribute it or sell it in anyway, shape or form. I have the concept of what I want to achieve, and how I want it to work so am about to start on the circuitry design and ardunio programming.
To give some background, I am looking to create a design using the Ardunio system, that is in essence a standalone board incorporating an Ardunio Nano. The board will have various sensors as inputs and be networked to other identical boards to share data. In terms of output from EACH board, there will be various LEDs, an I2C connection to power a bespoke text only display using four 7x5 character modules, and digital outputs to other boards and/or servo controls, and the ability to control a DC motor. So quite a bit going on and some aspects (such as the text display may yet get moved to a separate self-contained PCB).
Once I have got the board and software working, I'll then create another two identical boards, using the same ardunio and components to test the networking communication and how each board reacts to data from the others. Once that is right, my plan is to use the ardunio circuit plans and my own circuity from the test boards to create a bespoke PCB that I can have made to create all the boards for the final project, of which there may be 50-60 needed.
I appreciate that is a fairly non-descriptive, high-level background, but where I am seeking the input is on the best way to do things with Ardunio, for example:
a) the boards will need to store some data as a result of the power being lost. Is it best to use EEPROM (which could be updated numerous times in an operating session) or to incorporate some form of SD card reader/writer? The latter would add to the cost and potentially slow the data transfer of course. Presumably there could be a capacitor in the circuit so if the board detects a loss of power, the variable contents get written to EEPROM at that point only, while it is being powered from the capacitor/backup battery, before shut down?
b) with the above number of boards, is it viable to have them on a common power source, or because of interference or any other electrical aspect is it best to limit the number of boards being powered from the same source? I appreciate the overall power requirement of the board would need to be established to accurately answer that question, but my question is in theory at this point.
c) there is likely to be a need to update the ardunio software on each board once the project is up and running - either to provide additional features or bug fixes. From a best practice point of view, is this likely to involve having to plug into a USB socket on each board, or is there a permitted way to put ardunio into an 'update' mode and 'broadcast' the new over the existing network that would link the boards together?
d) for space requirements, the four character displays will be situated on a information panel, hence my thought for taking these off onto a separate and dedicated PCB. Is there a better way (ardunio, RPi, PIC) of purely controlling the display?
e) I was originally looking at using PIC chips and designing the circuitry to purely what was needed for this project, but was pursuaded that prototyping and final design could be easier/quicker with Ardunio. Can anyone with experiencing of using the Ardunio circuit design in a final PCB project offer any insights, aspects to watch or avoid?
Any thoughts, good sources to read, advice would be welcomed. Thanks in advance.
Rich