Посмотри паттерны проектирования итератор и команда - для твоей задачи они зайдут как по-маслу. А архитектура очень простая: каждый датчик у тебя будет объектом структуры с одним единственным элементом - указателем на функцию измерения и записи в ethernet-пакет результатов измерения. Таким образом ты сможешь поддерживать совершенно разные типы датчиков (аналоговые с измерением через АЦП и цифровые с итерфейсами I2C, SPI, UART and etc.) В своем коде можешь реализовать любой алгоритм обхода и формирования пакета (от структуры пакета будет зависит порядок обхода датчиков). Как сформировал пакет сразу отправляешь его в контроллер на отправку (можешь делать через буферизацию и прерывания либо ждешь пока контроллер отправит предыдущий пакет, а вообще самый лучший способ отправки - через DMA). Отправка третьим способом займен несколько наносекунд, а всю остальную работу возмет на себя железо. Во втором случае - чуть дольше, в первом - на скорости в 10 мбит/с 150 мкс, на скорости 100 мбит/с 15 мкс, на скорости 1 Гбит/с - 1.5 мкс.
По кнопке здесь тоже все достаточно просто - заводишь внешнее прерывание и делаешь что должна делать кнопка. А можешь применить паттер команда и сможешь буферизировать операции от целой приборной панели.
P.S. Имхо писать под микроконтроллеры на python - это не лучшая идея. Куда проще на чистом Си, так как у тебя есть доступ ко всем возможностям железа и ты не ограничем расками языка и библиотек.
P.P.S. Написание программ для микроконтроллеров практически ничем не отличается от написания программ под обычные компьютеры - код он и в африке код будет. Разница в том, что на микроконтроллере тебе придется напрямую работать с железом и понимать как оно работать и понимать физику работы коммуникационных интерфейсов. А сайты - благо их навалом: easyelecronics, microsin, osdev. Короче гугл в помощь