> у atmega328 не хватает выходов
это можно легко увеличить. По i2c протоколу подключаете микрухи которые дают еще до 16 выходов, а подключить можно их несколько.
>RS485
это однозначно неподходящий вариант. в вашем случае все как и у меня упрется на регулярный опрос клиентов. и чем больше клиентов тем больше задержка при опросе.
i2c предназначен для внутрисхемного соединения
Я думаю лучший вариант для вас это Ethernet. Это уже готовый и отлаженный протокол сверху которого вам проще будет реализовать свой протокол.
Плюс еще за него — то что если вы выбирите его то вам проще будет добраться до вашей мечты, потому что пока вы будете курить разные маны и набивать себе лоб, вы поймете что Ваша идея жрет ваше время или станет вам неинтересна по другой причине.
В общем я считаю для домашних дел Вам лучше подойдет именно Ethernet
Что касается клиентов я бы реализовал сборщики данных на Arduino платформе или stm, а логику вынес на RPi, которая опрашивает сборщики через Ethernet.
Звук: однозначно на отдельный контроллер.
Резюмирую: делайте как можно больше независимых модулей. Хотя система будет выглядеть более громоздкой в плане архитектуры, она будет более удобна в отладке. Для своих проектов я думаю стоит начинать именно с простоты.