Предыстория: Сейчас имею контроллер (не adruino), самостоятельно собранный и настроенный для управления функционалом загородного дома (отопление, освещение, охрана периметра, пожарная сигнализация и т.п.). Столкнулся с проблемой масшатбирования - входы еще есть, а выходов уже не осталось, т.е. данные считывать можно, а вот применить их на исполнительных механизмах - увы, нет. Присматриваюсь к adruino. Привлекает гибкость управления / сборки (собственное программирование, и куча дополнительных модулей). Отсюда вопрос: приобретая, к примеру, модуль Arduino Uno, который имеет ограниченное количество входов / выходов (ну как и любой другой модуль), имеется ли возможность при возникшем дефиците входов или выходов этот модуль масшабировать с сохранением управления через первоначальный модуль?
Возьмите, лучше, Мегу и избавьтесь от своего вопроса радикально. Полагаю, что Вы можете себе это позволить (по средствам). Другое дело что ... У Вас в доме все притянуто проводами к одной железке??? Есть же, там, всякие шины, 1-Wire в первую очередь, и тем более беспроводные модули разных калибров?
А как именно радикально Mega избавит меня от этого вопроса? Только бОльшим количеством входов / выходов, или все же ее можно масштабировать? Просто в адруино я новичок, поэтому и хочу понять. Сам контроллер работает только с проводами, поэтому провода. Собственно, от них я пока отказываться не планирую, меня пока другой вопрос интересует.
Там ооооооочень много проводов можно подключить. Но можно и еще добавить разными способами. Digital I/O Pins - 54 (of which 15 provide PWM output) -мало? Если не секрет - сколько сейчас у Вас входов/выходов задействовано? Кстати, проблема ведь еще не только в количестве возможных соединений, а ресурсе контроллера со всем этим хозяйством управиться. Сейчас тенденция заключается в том, что каждый элемент умного дома действует самостоятельно, объединившись при этом с контроллером, который может давать ему наставления, но не управлять им на уровне логики. Это повышает устойчивость системы в целом.
Ну это я видел, да. 54 входа / выхода. По началу мне 16 входов / 5 выходов было много. Теперь уперся в потолок. Мне просто понять на будущее, дом еще не до конца оборудован (т.к. функционал уже не позволяет), а еще гараж, баня, хоз. пристройки.. Хочу приобрести именно такое устройство, которым смогу централизованно всем этим хозяйством управлять. И при необходимости - масшатбировать. Например, так, чтобы при условии, что я задействовал все 54 входа / выхода, я мог подключить доп. модуль, который дал бы мне прирост входов/ выходов, но при этом они так же управлялись бы централизованно с первого модуля. Вот в чем вопрос
Существуют микросхемы, которые, соединяясь с МК по одной из шин (UART, I2C, 1-Wire), выполняют задачи как приема данных так и передачи. Не знаю какое у Вас железо, но оно, скорее всего, поддерживает какую-то шину и, следовательно, Вы можете расширить и свои ресурсы на работающем контроллере. Если он уж совсем не специфический какой-то. Но, все таки, хотел бы обратить Ваше внимание, что это , ИМХО, ошибочный путь в принципе. На любом железе. Завешивание всей логики в одну программу как сильно усложняет программирование, так и снижает надежность.
http://a-bolshakov.ru/index/0-179 http://mk90.blogspot.ru/2010/01/arduino-2.html http://arduino.ru/Tutorial/registr_74HC595
Если я правильно понял, то под масштабированием понимается простое размножении входов и выходов. Это можно делать на любом МК. 1. Использовать для управления различные шины, допускающие подключение более одного устройства: I2C, SPI, RS422, RS485. Первые две реализованы непосредственно на ардуине. Также их можно реализовать на других пинах программно. Для последовательного порта потребуется дополнительный модуль. 2. Сдвиговые регистры, входные и выходные, позволяют при помощи четырех пинов управлять любым количеством цифровых входов и выходов. Можно подключить к шине SPI МК. 3. Различные модули расширения портов, некоторые из которых позволяют расширять аналоговые входы и ШИМ на выходах. 4. Объединение в одну систему нескольких МК, каждый из которых управляет своим набором устройств, согласуя свои действия по какой-либо шине с централным управляющим МК (централизованная система) или просто с соседними МК (одноранговая система). Данный вариант позволяет решить вопрос нехватки не только входов-выходов, но и вычислительной мощности, таймеров, прерываний и проч.
Все верно. Ну тем не менее подавляющее большинство устройств типа "Умный дом" и более серьезные промышленные комплексы работают под управлением одной программы и центрального модуля. Можно, конечно, подискутировать, но тема о другом Мне как раз подходят два варианта из 4, предложенных geher. Это 1 и 4. 4 вариант наиболее навороченный, и в настоящее время конечно не требуется. Главное, что из adruino его можно собрать (ведь так?). Мой контроллер, который сейчас, не имеет никакой шины. Он как бы "в себе". Что есть - то есть. Получается, что оптимально будет использовать первый вариант, предложенный geher, и описанный по ссылке http://arduino.ru/Tutorial/registr_74HC595.
Этот вариант я бы никогда не использовал. Но дискуссия на тему оптимальности связана с подходами к построению системы и программированию. Поэтому, просто ИМХО.
Думаю, схема (железно) и стабильна и отказоустойчива. Кстати, сдвиговые регистры - это не то что уважаемый geher в первом пункте описал. Это еще одно, которое само по себе. Но вот представьте - у Вас меняется какой-то выход. Один. Чтобы изменить его состояние, вы обрабатываете состояние всех остальных: ведь логика работы такова, что все они зависимы между собой. Понятно, что создав необходимый класс и написав правила работы с ним, это решаемая задача. Просто посмотрите примеры, которые там есть. Все они связаны с красивой и последовательной работой с лампочками. Это гуд. Но насколько это удобно для умного дома? Вопрос.
Да, это он в п.2. описал. Такие модули я планировал использовать во вспомогательном функционале. Типа управления поливом, включением праздничного уличного освещения.. Ну то что идет обработка и остальных выходов, как Вы правильно написали, это решается написанием класса. Т.е., например, по шине I2C можно соединить между собой два UNO, и управлять обеими через один? Или нет?
эм, насколько я знаю, первые два протокола - чисто межплатные и не предназначены для больших расстояний (более 0,8-2 м). А ТС надо организовать стабильное (свет - ладно, а если это управление реактором котлом?) общение между комнатами или даже этажами, причем в сложных условиях: параллельно уложенные силовые провода 220 В, возможные обрывы и прочие бытовые проблемы. А это уже 1-wire, RS4xx, DMX или LAN.
Естественно, не стоит ждать от SPI и I2C чудес. Данные шины позволят сэкономить на пинах только для близких к ардуине устройств (дисплей, локальные датчики). Для удаленных устройств нужны более другие шины. Но они обычно требуют дополнительных модулей или специализированных дуин с расширенным функционалом. Про 1-wire ничего не скажу, ибо никогда не работал с нею. LAN в смысле Ethernet? Если да, то это интересное решение, но требует "сетеватости" от датчиков. RS-422/485 - стандартное промышленное решение, часто используется в наше время, несмотря на засилье LAN, поскольку простое и с проверенной надежностью. От датчика потребуется только наличие UART, к которому надо будет приделать переход на RS.
Гуру, спасибо за ответы! Пока остановлюсь на Меге, а там по ходу дела уже буду подбирать варианты расширения, если потребуется.