Hey Arduino Community,
This is my first post here so please be kind lol. I am quite a few years removed from circuitry and programming, but not complete green...more turquoise. My experience is more than a decade ago with a (don't laugh) a BASIC stamp (I said don't laugh) and in one of my projects, I used the BASIC stamp to control lights via an X-10 interface...ok now you can laugh. I also have used visual basic programming, mainly access databases.
So my plan is quite ambitious and may take some time, but I am fine with that.
My goal is to build an aquarium controller. I know there are already a few posts on here in regards to various aquarium controllers and a few more complete solutions using the Pi. I think this approach is a little different. What I would like to do is to build smaller modular controllers using Arduino that control specific parts of the aquarium. Then I would build a master controller using Raspberry Pi that would communicate with the individual Arduinos.
Before I can get into specific Arduino controller designs, I need some input on what kind of serial interface would I used between the main controller and the Arduino modular controllers. My initial though was USB, but I'm concerned that would limit the number of modular units I can use. My next through was to use networking where everything connects to a common switch. Any thoughts on this?
The individual Arduino Modules I was thinking of are:
- RO/DI Controller
- HO Lighting Controller (0-10vdc outputs)
- LED Lighting Controller(s) (PWM outputs)
- Wave Maker (0-10vdc outputs)
- Sump Water Level Controller
- Skimmer Controller (0-10vdc outputs)
- Algae Scrubber Controller
- Calcium Reactor Controller
- Water Temperature Controller
- Cabinet Temperature Controller
- Return Pump Controller (0-10vdc outputs)
- Auto Topoff Controller (0-10vdc outputs)
- Water Change Controller (0-10vdc outputs)
- Dosing Controller
Each of these modular controls would have their own local inputs, outputs and a basin user interface with about 4-6 buttons and an LCD screen with some indicator LEDs. Exact inputs and outputs would vary by the purpose of each unit. Each unit would be locally configurable and independent as well.
The master unit would be there to centralize status, allow for communication between the units and push out configuration updates from one location. For one example, the main unit would calculate sunrise/sunset and moonrise/moonset times and send this information out to each of the light controllers and the wave controller as opposed to having several controllers calculate this same information. But the local controllers would determine how to respond to this data individually. To further define that scenario, Im envisioning 1 dimmable HO controller (2 channels), 4 LED controllers (6 channels) and one wavemaker controller (4 channels) in the setup. Programming a single device send out incremental updates to 30 channels across six devices would be wiring and programming nightmare. But if each of the six Arduino modules could control their relative parts, then the only communication between the devices is what are the times (from master), what are the manual overrides (from master) and what are the statuses (from modules).
So before I get too far into the weeds on how to design and build each of these units, I need to determine the best approach for communication so I reserve the appropriate channels.
For power, I would prefer to power the Arduinos over the same wire as the communication, so USB or POE for example. I could also use some non-proprietary, such as a 4-pin or 6-pin modular plug. Power for the units being controlled by the aurduino would be provided separately, be it 12vdc, 24vdc, 36vdc, or 48vdc via DC barrel connectors or 120 vac via standard outlets. My goal is to standardize everything to 24vdc, but there will be some exceptions.
My first module to tackle will be an Arduino RO/DI controller, similar to this approach here: RODI Controller - Project Guidance - Arduino Forum
There is a lot of parts and pieces to this one so probably not the easiest one to start with, but its the one part of my system that is currently not already on a controller and one I need help with. But before I can jump in, I think I need to figure out the master communications approach so I dont paint myself into a corner.
Thanks,
Chris