Поворотная вебкамера на Arduino

В этой статье рассказывается о том, как установить веб камеру на сервопривод, установленный в каркас из конструктора и управлять ей при помощи Arduino.

Недавно я озадачился вопросом, как ещё можно применить Arduino кроме мигания светодиодов.
Эта идея пришла ко мне во время утренней беседы с коллегами по Skype, и я решил сделать так, чтобы они при помощи веб камеры могли смотреть, что происходит в нашем офисе. В один дождливый воскресный день я склонил к этому своего приятеля, и мы построили Arducam.

Перед созданием этого проекта я прочел несколько подобных статей, в некоторых из которых использовался джойстик. Имея джойстик от старого пульта к PS3, я также решил использовать его.

Каркас из конструктора

Мы использовали старый конструктор, который я купил в комиссионном магазине для построения каркаса. Мы построили каркас и закрепили его на основе.

Соединение с валом сервопривода

Для соединения вала сервопривода с шестерней мы использовали холодную сварку. Я выбрал крестообразную передачу на вал, потому что она мне практически не понадобиться для будущих проектов, в отличии от других деталей полученных вместе с сервоприводом.

Необходимо установит её точно прямо. Я сделал это при помощи уровня. Нам повезло, что расстояние между сторонами каркаса было почти такой же ширины, как наш сервопривод. Вы можете прикрепить сервопривод к основанию при помощи двустороннего скотча.

Монтаж веб-камеры

Веб-камера
Я использовал веб-камеру фирмы Logitech.
Вероятно, полезно будет удалить с неё противовес, чтобы сделать её легче, но это не моя веб камера, а из офиса, поэтому я не стал этого делать.

Распределение веса
Я добавил 2 толстых прокладки, чтобы избежать давления вала на камеру. Они смещают вес камеры на весь каркас с вала сервопривода.

Монтаж веб-камеры
Крепежный элемент веб-камеры состоит из круга с отверстием, совпадающим с валом по центру. Это позволяет обеспечить тягу между валом и кругом.
Некоторое пространство создается за счет прокладки, которая предотвращает нажатие на вал.  

Проблемы:
— Камера не закреплена в каркасе, и она будет падать, если её максимально наклонить.
— Отверстия в конструкторе над сервоприводом большие, и позволяют сервоприводу делать значительные горизонтальные движения из-за нагрузки.
— Вращающий момент камеры вызывает чрезмерное вращение, что в свою очередь, деформирует  сервопривод. Я хочу попробовать исправить это путём вращения камеры на 1 градус назад после периода непрерывного движения, но я предпочитаю механические решения. Возможно это можно исправить путем добавления передачи и установки веб камеры на отдельный вал с ременным приводом?
— … Или использовать более мощный сервопривод.

Электроника

Подключение сервоприводов и светодиодов
Сервопривод имеет 3 провода:
— GND
— +5V
— Сигнал
Я использовал 9 контакт для управления сервоприводом.
Светодиод подключен к +5В и GND с резистором на линии +5В и будет светиться при подаче питания.

Подключение джойстика
У меня был старый сломанный моим сыном джойстик от PS3.
Мне помогли статьи от Finnio и jhoffnun, чтобы понять как работает джойстик и его электроника.

Управление сервоприводом

Arduino
Программу для Arduino как и все файлы проекта можно скачать ниже или взять на github.
Программа позволяет управлять веб камерой при помощи USB и джойстика.
Можно использовать модем-контроль / эмулятор терминала приложений, таких как Minicom или Putty для связи с USB-порт.

Установка по центру:
— Программа будет устанавливать сервопривод на 90 градусов при запуске.
— И при нажатии «m»

Поворот влево и право
— Когда джойстик перемещается в горизонтальной плоскости.
— Влево при нажатии ‘F’
— Вправо при нажатии «J»

Node.js
Кроме того, мы реализовали веб-сервер в node.js чтобы облегчить контроль над arducam.
Инструкцию можно найти на сайте gihub проекта.

Возможные улучшения:
— Обеспечить поворот камеры кнопками со стрелками.
— Сделать поворот на 1 градус  назад для облегчения нагрузки на сервопривод, возникающей при вращающем моменте у тяжелых веб камер.

Оригинал статьи

Прикрепленные файлы:

Добавить комментарий

Ваш адрес email не будет опубликован.