eDroid: Требования к системе
Создание робота казалось нам таким простым делом, что хотелось уже прямо сейчас взять какую-нибудь программу, быстро набросать в ней плату, потом сделать программу микроконтроллера и управляющего компьютера. И только ясное понимание того, насколько обманчива это простота, остановило дружный коллектив.
Что мы хотим
Хотим мы, чтоб оно ездило и управлялось через Интернет. Да чтобы еще и запас по модернизации был. Что же, попробуем как-то формализовать наши пожелания. Что должен уметь наш робот:
- Двигаться вперед и назад
- Поворачивать влево и вправо
- Светить лампочками
- Обладать каким-нибудь эффектором — водяной или пневматической пушкой, манипулятором
- Обладать расширяемым набором датчиков, например, датчиком освещенности
- Перезагружать компьютер при его зависании
- Принимать пакет байт от гипотетического устройства
- Передавать изображение с web-камеры в режиме реального времени по WiFi
- Получать по WiFi команды с сервера и выполнять их
Посмотрим, что нам нужно с точки зрения схемотехники для реализации этих умений
- Все, связанное с web-камерой и WiFi берет на себя компьютер, от нас никак аппаратных доработок не требуется. Будем считать, что камера у нас закреплена стационарно либо же используется готовая управляемая камера.
- Движение робота вперед и назад, повороты — требуют одного двигателя для ведущих колес и одного двигателя для рулевого привода. Конечно, можно обойтись и электромагнитами, тогда у руля будет всего три положения — левое, правое и среднее.
- Иллюминация требует транзисторных ключей, либо же микросхем, специально предназначенных для управления лампами.
- Какой бы эффектор мы не использовали, он будет требовать управления приводами. Чтобы не увеличивать количество электродвигателей, скорее всего это будут электромагниты. Значит, нужно заложить некоторое количество силовых ключей, к которым мы будем подключать требуемое по мере необходимости.
- Датчики могут быть весьма многообразными. Мы решили не создавать себе проблем с компараторами и аналоговыми устройствами, и заложить некоторое количество цифровых входов. А уж на них можно будет навешивать любые датчики по мере необходимости. Например, датчик в переднем бампере (разомкнут — нет препятствия, замкнут — уперлись в стену) и т.д.
- Перезагрузка компьютера — весьма сомнительная функция, появилась исключительно из-за инерции мышления «объект автономный, должен уметь сам себя перезапускать, если что“. Ну ладно, поставим оптрон, перемыкающий RESET на плате компьютера.
- Прием байт от гипотетического устройства — это задел на очень далекое будущее. Например, мы когда-нибудь сделаем второго робота, оснастим их стыковочными узлами и станут они собираться в Вольтрона — защитника Вселенной… Кстати, неплохо бы тогда оставить и какие-нибудь логические выходы, чтобы можно было не только принимать байты, но и отправлять их.
Более-менее определившись, что мы хотим от робота, в итоге получили примерно такой список того, что будет на плате:
- Микроконтроллер.
- Два драйвера шаговых двигателей, они же могут управлять и двигателями постоянного тока, изменяя направление их вращения.
- Микросхема управления лампами, до трех ламп. Строго говоря, это могут быть любые устройства с током потребления не более 500 мА, но в нашем случае — лампы. Выбор в сторону специализированной схемы сделан исключительно потому, что запаивать схему приятнее, чем отдельные транзисторы (а на самом деле — просто та же инерция мышления).
- Полевые транзисторы на ток порядка 10А, что позволит подключать всякие приятные штуки (например, метатель дротиков).
- Пара мультиплексоров на 8 каналов — так мы сможем подключить аж 16 цифровых датчиков. Перефразируя Билла Гейтса — "16 цифровых входов будет достаточно всем».
- Оптрон, перемыкающий контакты RESET на материнской плате. Конечно, можно и без оптрона — но, если хотите, это тоже инерция мышления.
- Для приема цифровых данных от других устройств и передачи их можно было воспользоваться встроенными средствами микроконтроллера… Можно, но мы будем этого делать. Какие там будут устройства — еще неизвестно, потому оставим один вход и один выход, а по мере необходимости реализуем любой желаемый протокол.
Итоги
Мы решили, что будет уметь наш робот и какие элементы будут на плате. Количество силовых транзисторов определим, когда займемся интерфейсом и платой, к ним у нас жестких пожеланий нет. Ясно, что будет их больше одного, но меньше 16. Пора приниматься за интерфейс взаимодействия «компьютер-контроллер».