Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Робот для наблюдения Roomberry:Roomba + Pi Zero + камера

Roomberry is робот наблюдения на базе Roomba, использующий Raspberry Pi Zero W и модуль камеры. Несколько лет назад я начал проводить некоторые тесты для удаленного управления Roomba с помощью Arduino One с модулем RN-VX WiFly.

В прошлом месяце я решил оживить эту идею, но с новой целью:превратить Roomba в робота-наблюдателя с возможностью снимать фото и видео. Первая идея заключалась в том, чтобы продолжать использовать Arduino в качестве микроконтроллера, используя модуль Arducam для захвата изображений. Однако я быстро обнаружил, что возможности Arduino по обработке изображений были слишком ограничены для моих интересов. Второй вариант заключался в смене платформы и использовании Raspberry Pi Zero W с модулем камеры. Эта альтернатива означала некоторые проблемы, особенно в отношении питания, но также предлагала больше возможностей. В этом посте я объясню, как построить Roomberry, робота для наблюдения на основе Roomba, используя Raspberry Pi Zero W и модуль камеры.

Демонстрация возможностей Roomberry и веб-интерфейса . разработан для взаимодействия с ним, можно увидеть в следующем видео.

iRobot Roomba

Roomba iRobot предлагает открытый интерфейс (OI) для взаимодействия с роботом через разъем mini DIN. OI - это программный интерфейс, разработанный для Roomba Creator 2 (адаптация серии 600). Однако он полностью совместим с сериями 500 и 700. Тем не менее, есть некоторые ошибки в зависимости от платформы и используемой версии прошивки. Программный интерфейс позволяет управлять поведением робота Roomba и считывать данные с датчиков. Полное описание его возможностей можно найти в этом документе.

Разъем Mini DIN

разъем mini DIN для Roomba расположен в передней правой части Roomba серии 700 и имеет 7 контактов. Его положение немного отличается в серии 600, расположенной в задней правой части Roomba, под отрывным пластиковым кожухом. Mini DIN 7 Штекерные соединители сложно купить, однако более распространенный мини-разъем 8-контактный штекер DIN также совместим.

Чтобы обеспечить плавное и надежное подключение / отключение порта, я припаял 5-контактный кабель (предназначенный для светодиодных лент) с гнездовым разъемом к 8-контактному мини-штекеру DIN с помощью контактов 1-2. (питание), 6-7 (земля), 3 (RxD), 4 (TxD) и 5 ​​(BRC). Однако, как отмечалось позже, в конечном итоге в соединении питания и заземления не было необходимости. Полученный кабель можно увидеть на следующих рисунках.


Последовательный порт Roomba

Чтобы использовать OI, команды должны быть отправлены через двухстороннюю последовательную связь создается в mini DIN 7 контактов 3 (RxD) и 4 (TxD). Этот порт UART работает на уровнях TTL . (0 - 5 В). Это напряжение идеально подходит для микроконтроллеров, использующих логику 5 В, как и для большинства плат Arduino. Однако это не подходит для тех, у кого логические уровни более низкого напряжения (например, Raspberry Pi).

Теоретически контакт 3 (RxD) принимает 3,3 В в качестве высокого логического уровня. Но Roomba будет выдавать 5 В на свой контакт 4 (TxD), что может повредить Raspberry Pi Zero. Чтобы обеспечить безопасность оборудования, используйте переключатель логического уровня . должен быть использован. Самый простой способ сделать это - использовать резисторный делитель, как это уже было реализовано в моем предыдущем проекте Calduino, но он может не работать на высоких скоростях (последовательный порт Roomba работает на скорости 115200 бод).

Вместо этого предпочтительнее активный переключатель уровня. Если вы хотите построить свою собственную схему, используйте полевой транзистор AN10441, как описано здесь. Гораздо более простой вариант - использовать один из существующих двунаправленных преобразователей логического уровня, например, от Adafruit. Это устройство может обрабатывать до 4 сигналов и безопасно понижать их с 5 В до 3,3 В. В то же время он увеличивает сигналы с 3,3 В до 5 В.

Питание Raspberry Pi от Roomba

Есть несколько альтернатив для обеспечения питания от аккумулятора Roomba:

Питание от Mini DIN 7

Mini DIN 7 обеспечивает нерегулируемое прямое соединение в контактах 1/2 (Vcc) - 6/7 (Gnd) к батарее Roomba. Соединение ограничено до 200 мА . через самовосстанавливающийся предохранитель PTC . Он предлагает напряжение от 20,5 до 10 В, ограниченное до 0,2 А при мощности 2 Вт. Непрерывный ток от этих двух контактов вместе не должен превышать 200 мА. Пиковое значение тока более 500 мА приведет к сбросу предохранителя.

Raspberry Pi Zero W должен уметь работать с этим источником. Raspberry Pi Foundation оценивает типичное активное потребление тока пустой платы в 150 мА. В этом тесте оно находится в диапазоне 120 мА . в режиме ожидания статус и 180 мА при стрессе (например, при воспроизведении FullHD-видео). Однако здесь не учитывается лишний расход камеры. Согласно моим измерениям, камера (я использую эту, с тем же датчиком, что и официальная камера Pi версии 1) увеличивает энергопотребление до более чем 300 мА с пиковым значением 450 мА. Во время моего теста предохранитель несколько раз срабатывал при записи видео.

В заключение, существующий термопредохранитель исключает использование этого соединения для питания Raspberry Pi Zero W. Мне не удалось выяснить, возможно ли и безопасно удалить предохранитель с платы. без повреждения других компонентов.

Питание от внешнего блока питания

Есть несколько альтернатив, чтобы обойти это ограничение предохранителя. С одной стороны, более простым решением было бы использовать внешний аккумулятор . для обеспечения внешнего питания Raspberry Pi Zero. Однако пользователю потребуется периодически заряжать его. Другой вариант - разработать последовательное соединение между источником питания mini DIN 7 и блоком питания. С парой электронных компонентов должно быть возможно использовать аккумулятор Roomba для зарядки power bank. Чтобы упростить свою конструкцию, я решил избегать использования каких-либо дополнительных источников энергии.

Питание от батареи

Я наконец решил обойти предохранитель установив прямое соединение к аккумуляторной батарее . Аналогом этого варианта является то, что вам придется частично разобрать робота . . В Roomba серии 600 есть две большие подушки, напрямую подключенные к аккумуляторной батарее под кнопкой док-станции. В Roomba серии 700/800 вам придется разбирать еще пару компонентов. Просмотрите следующее видео до минуты 6, чтобы узнать, шаг за шагом, как получить доступ к материнской плате робота . . После этого просто припаяйте пару кабелей к батарейному отсеку, как показано на следующих рисунках.


Эти кабели обеспечат прямое соединение с аккумулятором без каких-либо предохранителей. Они обеспечивают напряжение от 20,5 до 10 В в зависимости от уровня заряда аккумулятора. Однако Raspberry Pi Zero W требуется регулируемый источник питания 5 В. Чтобы уменьшить напряжение, сделайте понижение используется. Для этого есть много вариантов, начиная от использования дешевого линейного регулятора . (например, 7805 TO-220) с парой конденсаторов для установки импульсного регулятора .

Благодаря более высокой эффективности , и учитывая, что он всегда будет подключен, я бы посоветовал использовать / купить хорошее качество (избегайте китайских имитаций) понижающий импульсный регулятор . Я использовал понижающий стабилизатор Pololu D24V5F5, который принимает входное напряжение до 36 В и снижает его до 5 В для максимального выходного тока 500 мА. Его эффективность составляет от 85% до 90% и имеет очень низкое падение напряжения. Вы также можете использовать UBEC (универсальная схема устранения батареи), такая как та, которая обычно используется в мире RC. Я поместил свой регулятор напряжения в свободное пространство в центре с правой стороны робота.

Соединения были должным образом защищены термоусадочной пленкой, а модуль D24V5F5 был покрыт изолирующим пластиком (я не делал никаких фотографий). Я припаял выход модуля к кабелю micro-USB, что позволяет мне подключать его напрямую к входу питания Raspberry Pi Zero W.


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

Режимы Roomba OI

Roomba OI имеет четыре режима работы:выключен, пассивный, безопасный и полный.

Выключенный режим :После замены батареи или при первом включении OI находится в выключенном состоянии. В этом состоянии Roomba прослушивает порт со скоростью передачи по умолчанию (115200 бод), ожидая команды запуска. Команды сброса и остановки могут быть отправлены в любое время и также переведут OI в режим выключения.

Пассивный режим: После отправки команды "Пуск" Roomba переходит в пассивный режим . . В этом состоянии вы можете запрашивать и получать данные датчика, используя любую из команд датчика. Однако вы не можете изменить текущие параметры команд для исполнительных механизмов (двигателей, динамика, света, драйверов нижнего уровня, цифровых выходов). Roomba перейдет в пассивный режим . также, если отправлена ​​одна из команд режима очистки (Spot, Clean, Seek Dock и т. д.).

В пассивном режиме Roomba перейдет в выключенный режим . после пяти минут бездействия для экономии энергии и сохранения заряда батареи. Согласно документации iRobot, спящий режим можно отключить, просто периодически понижая уровень сигнала на выводе BRC до истечения этих пяти минут. Каждый импульс должен сбрасывать этот пятиминутный счетчик. В тестах, которые я провел (с Roomba 780), снижение BRC только разбудит робота, но не помешает ему перейти в режим энергосбережения. Робот издаст звуковой сигнал, когда проснется (если он не заряжается в док-станции).

Безопасный режим :Roomba перейдет в безопасный режим . если отправлена ​​команда Safe. Безопасный режим дает вам полный контроль над роботом и выключает все моторы и светодиоды. Однако, если условие, связанное с безопасностью, не выполняется, робот автоматически переходит в пассивный режим . . Эти условия безопасности:обнаружение обрыва при движении вперед, падение колеса и подключение зарядного устройства. В этом режиме Roomba не заряжается (хотя находится в док-станции) и не будет экономить электроэнергию, перейдя в режим выключения после 5 минут бездействия. Этот момент очень важен:вы можете в конечном итоге разрядить аккумулятор робота и повредить его, если не переключитесь в пассивный или выключенный режим.

Полный режим :Когда вы отправляете полную команду на OI, Roomba переходит в полный режим . . Робот будет вести себя точно так же, как в безопасном режиме, но он не будет учитывать ранее прокомментированные условия безопасности, поэтому имейте в виду риски!

Меры предосторожности при использовании аккумулятора :Как уже говорилось, в пассивном режиме Roomba перейдет в спящий режим через 5 минут бездействия для экономии заряда аккумулятора. В безопасном и полном режимах Roomba никогда не перейдет в спящий режим, и если оставить его в этом состоянии на длительный период времени, он полностью разрядит аккумулятор, даже если он подключен к зарядному устройству. Зарядное устройство будет питать Roomba во всех режимах, но не будет заряжать аккумулятор в безопасном или полном режиме. Важно вернуть Roomba в пассивный или выключенный режим после завершения работы и / или при низком уровне заряда батареи, чтобы защитить его.

Raspberry Pi Zero W

Raspberry Pi Zero W это обновленная версия Raspberry Pi Zero с беспроводной локальной сетью и Bluetooth . Модель включает в себя одноядерный процессор с тактовой частотой 1 ГГц, 512 МБ оперативной памяти, mini-HDMI, порт micro-USB OTG, micro-USB для питания, 40-контактный разъем, композитное видео, заголовки сброса, разъем камеры, а также новые беспроводные функции. Он использует беспроводной чип Cypress CYW43438, который поддерживает 802.11b / g / n Wi-Fi (только 2,4 ГГц) и Bluetooth 4.0 (тот же чип, что и Raspberry Pi 3 Model B). Купил в Пиморони с разъемами (не припаянными) и переходниками за 16 €.

Камера

Разъем камеры Raspberry Pi Zero W CSI меньше, чем у Pi 3. Если у вас уже есть камера, вам придется купить адаптер, чтобы использовать ее. В противном случае я бы рекомендовал купить этот модуль камеры, который включает в себя 5-мегапиксельный датчик (такой же, как официальная камера Pi версии 1) и может записывать видео с разрешением 1080p. Стоит 18 €. Я выбрал широкоугольную камеру с ИК-вырезом. Я знаю, что ночью я ничего не смогу увидеть, но использование ИК-светодиодов увеличит потребление энергии, которое я хотел снизить. Вы всегда можете использовать светильники Philips HUE для удаленного управления домашним освещением.

Питание Raspberry Pi Zero W

В отношении источника питания Pi Zero следует сделать несколько замечаний. Прежде всего, и в отличие от более крупных моделей, Pi Zero не имеет никаких регуляторов или предохранителей . для защиты от перенапряжения или скачков тока. Это означает, что вы должны предоставить стабильный источник питания . с напряжением 5 В. Источник питания можно подключить к правому разъему micro-USB (Pwr In) или к контакту 5V на разъеме GPIO. Оба они одной линии. Убедитесь, что при подаче неправильного напряжения или скачке тока в линии вы, вероятно, повредите ваш Raspberry Pi навсегда .

Как уже отмечалось, пики потребления в 400 мА с подключенной камерой были измерены во время выполнения стресс-тестов. Raspberry Pi Foundation рекомендует источник питания минимум на 1,2 А. Однако 0,5 А, обеспечиваемые понижающим стабилизатором, мне хватило. До сих пор проблем с блоком питания не обнаружил.

Снижение энергопотребления

Учитывая, что Raspberry будет работать от батареи Roomba, будет интересно уменьшить потребляемая мощность насколько это возможно. Например, зная, что Pi Zero будет работать без головы (без подключенного монитора) и будет доступен только через SSH, нет необходимости включать схему дисплея. Отключение порта HDMI может сэкономить до 25 мА. Для этого просто запустите / usr / bin / tvservice -o (или с -p для повторного включения). Я поместил короткий скрипт в /etc/rc.local, который проверяет, подключен ли кабель HDMI или нет, и соответственно отключает порт HDMI.

# Получить текущий тип вывода видео и удалить ненужные биты
video =«$ (tvservice -s | sed« s /^.*\[\([^] * \). * $ / \ 1 / »)«

если [«$ video«! =«HDMI»]; затем
printf «HDMI не обнаружен. Выключение. \ N »
tvservice -off> / dev / null
else
printf« Обнаружен HDMI. \ N »
fi

Другой способ снизить энергопотребление - отключить светодиоды Pi. У Raspberry Pi Zero есть только один индикатор активности, который мигает каждый раз при доступе к SD-карте. Его потребление составляет примерно 5 мА. Чтобы полностью отключить его, добавьте следующие строки в свой файл /etc/rc.local:

# Установите триггер Pi Zero ACT LED на «none»
echo none | Судо тройник / система / класс / светодиоды / светодиод0 / триггер

# Выключите индикатор Pi Zero ACT
echo 1 | sudo tee / sys / class / leds / led0 / яркость

Вы также можете сделать это, отредактировав файл /etc/config.txt:

# Отключить светодиод ACT на Pi Zero

dtparam =act_led_trigger =none
dtparam =act_led_activelow =on

Я не уверен, что это приведет к реальному сокращению потребления, но, поскольку он не будет использоваться, вы можете отключить модуль bluetooth Pi Zero, добавив следующую строку в / etc / config .txt:

# Отключить Bluetooth на Pi Zero

dtoverlay =pi3-disable-bt

Наконец, попробуйте уменьшить количество программного обеспечения, установленного и работающего в Pi Zero. Например, используйте Raspbian lite вместо настольной версии и не устанавливайте дополнительное программное обеспечение, если оно вам действительно не нужно. Чем больше процессов запущено на вашем компьютере, тем больше будет потребление.

Другие соображения

Создание Roomberry

После того, как все части будут описаны, давайте посмотрим, как создать и запустить Roomberry, ваш интерфейс Raspberry с Roomba.

Моей целью было инкапсулировать компоненты (Raspberry Pi Zero, модуль камеры, преобразователь логического уровня и кнопку переключения) в стабильный корпус с легким доступом ко всем портам и SD-карте. Единственный вариант, который я нашел, кроме печати собственного 3D-дизайна, был этот. Этот чехол удовлетворяет всем требованиям и позволяет мне прикрепить HAT (Hardware Attached on Top), дополнительную плату с парой необходимых электронных компонентов. На следующем изображении показана схема печатной платы. Обратите внимание, что контакты Run расположены в Pi Zero, а не в HAT. Для его сборки достаточно будет части печатной платы размером 12 x 10 контактов. Чтобы вырезать печатную плату, я использовал вращающийся инструмент.

преобразователь логического уровня потребуется как высокое, так и низкое напряжение, которое можно получить от GPIO (Pi Zero включает понижающий преобразователь с 5 до 3,3 В под названием PAM2306AYPKE). Я разместил кнопку переключения в середине Pi Zero, поскольку он был продолжением HAT. При этом стержень кнопки выделяется из корпуса, поэтому на нее можно нажимать извне. Вам нужно будет просверлить в корпусе пару отверстий:одно для кнопки пара, а другое (и более крупное) отверстие для камеры. Более того, мне пришлось тщательно отшлифовать пространство корпуса, предназначенное для разъема CSI, чтобы освободить место для поворота кабеля на 180 градусов. Следующие изображения показывают результаты:


Настройка Raspbian Stretch

Перед подключением Roomberry к разъему mini DIN 7 на Roomba необходимо выполнить несколько шагов настройки. Предполагается, что Raspberry Pi Zero W работает под управлением последней версии Raspbian и уже настроен без управления.

Подключите блок питания micro USB . построенный ранее для Pi Zero. Через несколько секунд система должна заработать. Откройте SSH-соединение с вашим Pi Zero.

По умолчанию последовательный порт Pi настроен на использование ввода / вывода консоли . . Для связи с Roomba через этот порт необходимо отключить вход через последовательную консоль. Вы можете сделать это с помощью raspi-configchoosing menu 5 - Interfacing options и P6 - Serial. Ответ Нет на вопрос «Хотите, чтобы оболочка была доступна через последовательный порт?» и Да на «Вы хотите, чтобы оборудование последовательного порта было включено?». Пока не перезагружайте систему. В качестве альтернативы вы также можете прокомментировать определение консоли и добавить в конец файла / boot / config следующую строку:

# Определение консоли поиска и комментирования
# console =serial0,115200
...
enable_uart =1

Если вы еще не сделали этого, включите модуль камеры . . Опять же, вы можете сделать это через raspi-config, выбрав меню 5 и опцию P1. С другой стороны, вы также можете отредактировать файл / boot / config и включить эти изменения (отключение светодиода камеры не требуется, но рекомендуется для экономии энергии):

start_x =1
gpu_mem =128
disable_camera_led =1

Я не уверен, какое количество ОЗУ является оптимальным для назначения gpu_memory при использовании модуля камеры. До сих пор я не обнаруживал ошибок «Не хватает ресурса» при работе с камерой, поэтому считаю, что 128 МБ - хороший выбор.

Отключить все свопинг и каталог mount / tmp на RAM Disk с 50 мегабайтами пространства. Это место будет использоваться для хранения временных файлов, таких как снимки камеры и файлы состояния Roomba. Увеличьте время фиксации в etc / fstab до 30 минут и включите параметр noatime в раздел SD. Найдите команды в этом сообщении.

Теперь пора проверить, все ли работает правильно. Выключите Pi и подключите последовательный порт к Roomba. Установите Roomba на зарядную док-станцию ​​. . Загрузите систему и убедитесь, что все работает должным образом (и что робот не делает ничего странного).

Тестовое чтение через последовательный порт :Я использовал minicom для чтения данных, отправленных Roomba. Чтобы установить его, просто введите:

sudo apt-get minicom

Подключитесь к последовательному порту Roomba, выполнив следующие действия:

minicom –b 115200 -o -D / dev / serial0

Если ваш Roomba заряжается, вы должны увидеть текст, похожий на следующее изображение, сообщающее о состоянии зарядки Roomba каждую секунду. Press CTRL + A and X to exit minicom.

Read More Detail  :Roomberry Surveillance Robot:Roomba + Pi Zero + Camera


Производственный процесс

  1. Как создать платформу для роботов Arduino + Raspberry Pi
  2. Читалка BrickPi
  3. Робот-бокс для компакт-дисков Raspberry Pi
  4. Робот с подвижной сигнализацией
  5. Создайте робота Minecraft Creeper
  6. Архимед:ИИ-робот-сова
  7. Робот для наблюдения Roomberry:Roomba + Pi Zero + камера
  8. Робот для открытия резюме
  9. Робот ROS
  10. Простой робот Pi