- Mon Jan 04, 2016 9:09 am
#37881
Thanks guys, these were the sorts of things I've wanted to hear.
I'm trying to check out the feasibility of avoiding the memory and resource limitiations of any single processor, by adding additional processors and resources as required. Technically it would be 'cluster processing', but achieved with deceptive simplicity using variable length strings for communications between cluster nodes over any multi-node topology such as RS485.
Imagine the scenario which requires multiple functionality such as IR transmit/receive, interupt driven multi-IO, SD file access, speech output etc - all of which is readily achievable on Arduino, but not all at the same time... so why not just add any required functionality when needed by adding mores nodes dedicated to that functionality.
At first glance it may seem like a communications nightmare, but I don't think it actually needs to be. Put different tradesmen of different nationalities into a workplace together and they don't need to understand and converse with each other, they only need to understand their relevent job instructions and ignore everything else.
Different tradesmen who need to coordinate simply need to know some common command instructions appropriate for their coordination.
New trade functionality could be easily added using the minimum command words necessary for the job, so for instance a new tea lady would only need to understand the common commands for tea and coffee along with any optional parameters like milk and sugar, to which she alone would respond to.
In this way, a cluster could be built up to include whatever functionality is needed. And it could easily be added to, ie: integrating a 'voice recognition' processor to the cluster would just be a matter of making it broadcast any appropriate IR and wifi action commands etc which those corresponding existing processors would probably already be looking out to respond to anyway from other nodes. And adding new sensors and triggers from new processors would just be a matter of including the appropriate new commands to be recognised into any required receiving nodes list of recognisable commands to parse through.
By communicating using variable length strings, any commands and parameter data structures could be broadcast to all, even though only recognised by some.
Receiving nodes could use a circular buffer so they could parse for and extract any recognised plain text commands in their own time... allowing the tea lady to finish serving or making a fresh pot without distraction, then shuffle on to serve the next.
Any of the processors could access any of the clusters resources simply by issuing an appropriate string command, and resources could similarly respond with any required data.
Returning to the cluster scenario, any triggered input from (say) IO, PIRs, wifi nodes, IR signals etc, could request an appropriate list of plain text responses from config file on SD, then broadcast those listed action commands to other relevent nodes for speech announcements, IR transmits, relay switching, etc.
It all seems such practical common-sense that I'm sure it must already have been done, but I haven't seen anything like it yet, so I'm a bit concerned I may be chasing a wild goose up a blind alley, and therefore would appreciate the thoughts of others regarding the feasibility.