For my bus system, I'm currently developing (planning) the master module and noticed there is no AVR with enough memory for my needs.
I have to store at least 3-5 bytes of data for 4096 modules each and store data about modules grouped together. Each module and group should have several presets if memory allows, so I guess something around 512kB to 1MB should be enough memory for this.
Now the question: which memory should I choose? I don't want to waste many pins for the memory, so something with I2C bus or an equivalent would be fine. I found EEPROM and SD-Cards to look promising although any SD-Card is way too large for this project. Are there other options? And which one would you -for ease of storing/retrieving data- suggest to use?
And in case you have the time and are interested: the generic module is done and running. It still needs some tests and a little bugfixing but it does already accept values and set PWM and IOs right. Input from IO to the bus should also work fine, I haven't tested that one yet. The dumb modules are done. More intelligent modules that understand fading commands will follow.
I'm currently planning to set up a µC for the master module, it will communicate with the bus (control it) and with a very small linux server which does all the GUI stuff and can control the bus indirectly through the µC. I need a web interface and as webservers on AVRs are possible but not with dynmic pages, I chose a small ext. server. The bus will run without the attached webserver as it just modifies groups and module values stored in the master module.
Later-on, modules with touchscreen interface are planned that can directly change values in master storage too. Touchscreens on the wall that control lighting, sound etc. - isn't that cool? ;-)