Zer0 — cамодельный экспериментальный робот на Raspberry Pi + Linux + Python

Содержание

Хочу познакомить вас с одной вполне интересной разработкой — самодельным экспериментальным роботом, которого я назвал "Zer0". Эта статья является первой из цикла статей по самостоятельному изготовлению робота на основе Raspberry Pi, который будет управляться могущественной связкой Linux + Python.

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

Подготовка

Так сложилось, что я получил в подарок несколько маленьких электродвигателей со встроенными редукторами от какого-то медицинского аппарата для штучного дыхания — шестеренки металлические, хорошее передаточное число, жаль только что корпус из пластика, но думаю что он все нормально выдержит. Еще немного раньше я заполучил набор неплохих колес из резины с шипами от какой-то радиоуправляемой игрушечной машинки.

Малинка (Raspberry Pi 2B) у меня уже была в наличии, поэтому прикупив парочку Ni-MH аккумуляторов по 6В/6А*ч (позже купил еще один на 12В/2,3А*ч) окончательно решил что вполне можно собирать небольшого робота для обучения, экспериментов, развлечений и не только.

Набор деталей, которые дали начало самодельному роботу

Рис. 1. Набор деталей, которые дали начало самодельному роботу.

Поскольку двигатели оказались на рабочее напряжение +24В, а для питания малинки нужно +5В, то пришлось заказать несколько понижающих и повышающих DC-DC преобразователей на микросхемах LM2596 и XL6009.

Основой шасси для робота будет служить доска из дерева средней плотности, она легкая и на нее удобно крепить все детали при помощи маленьких шурупов-саморезов.

Ходовую часть решил делать трехколесную: два ведущих колеса спереди от игрушечной машинки и одно колесико — сзади, которое будет следовать направлению ведущих. Можно сделать ходовую часть и на 4 колеса, 2 из которых ведущие или же все 4, это уже дело вкуса и запчастей в наличии.

Заднее колесико с подшипником можно купить в мебельном магазине или же на базаре. Мне же просто повезло найти его у себя в кладовке, оно оказалось очень добротным, основа изготовлена из металла — похоже что от какого-то старого крепкого кресла.

Ведущие колеса для будущего робота можно извлечь из игрушечной машинки — новой или поломанной. Вот вам идея на заметку: поспрашивайте на базаре у продавцов игрушек нет ли у них на складе поломанных машинок с колесами и прочих электронных игрушек, такое добро скорее всего согласятся продать за копейки — будет польза и вам и продавцу, поскольку ему остается его или выбросить или кому-то подарить на окончательное уничтожение "маленькими исследователями". ))

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

Обо всем этом и многом другом я подробно расскажу в следующих статьях. А теперь давайте просто рассмотрим что в итоге получилось и как это можно использовать.

Из чего состоит робот

Основные составные части и возможности экспериментального робота Zer0:

  • Мозг робота — Raspberry Pi + Raspbian Linux;
  • Питание — аккумулятор на 12В/2,3А*ч + контроллер на ATtiny2313 + DC-DC преобразователи;
  • Перемещение — два электродвигателя на +24В с редукторами + модуль L298;
  • Воспроизведение звука — два широкополосных динамика 2×3 Вт/8 Ом + усилитель на TDA1517P;
  • Захват видео/фото/звук — Webcam Logitech C270 HD, 1280 x 720 пикселей + микрофон;
  • Управление углом обзора — два сервопривода S05NF;
  • Освещение — 6 ярких светодиодов + отражатель с фокусировкой;
  • Отображение информации — OLED дисплей 128×64 пикселя;
  • Связь — USB Wi-Fi + USB 3G
  • Другие возможности — пиродатчик, газовый анализатор воздуха, датчик температуры и влажности воздуха, 3-х осевой компас, ультразвуковой датчик препятствий, датчик освещения, мониторинг напряжения батареи питания, часы реального времени, 2-3 свободных USB порта для подключения разных устройств.

Все приведенные выше составляющие позволяют получить достаточно богатый и разнообразный набор функционала как для такой небольшой конструкции. Размеры и вес робота можно уменьшить еще больше если бы использовать батареи Li-Ion или Li-Pol, а также купив более миниатюрные микроэлектродвигатели с редукторами.

Я же отдал предпочтение батареи Ni-MH потому что она безопасна, недорога и проста в обслуживании, хорошо подходит для беспрерывного питания устройств с постоянной подзарядкой.

Для управления питанием был изготовлен несложный самодельный контроллер на основе ATtiny2313 + электронные ключи на полевых транзисторах. Благодаря ему робот умеет находиться в ждущем режиме (включение по кнопке), выполнять безопасное выключение компьютера с последующим полным отключением питания в случае подачи команды от Raspberry Pi или с кнопки.

Самая дорогая деталь в конструкции робота — это одноплатный мини-компьютер Raspberry Pi. Немного уменьшить его стоимость можно если купить к нему более простой корпус или же вообще изготовить корпус самостоятельно. Отказываться от корпуса для компьютера я бы не севетовал, поскольку он защищает плату компьютера от различного рода внешних воздействий.

Знакомьтесь: Zer0!

Zer0 — это самодельный работ, собранный на основе Raspberry Pi, который управляется операционной системой Linux (Raspbian). Название "Zer0" пришло в голову как-то сразу, это как начальная модель 0-й версии.

Ниже привожу несколько фотографий готового робота (все рисунки кликабельны) и описания к ним:

Самодельный робот Zer0 на Raspberry Pi и Linux - фронтальный вид

Рис. 2. Самодельный робот Zer0 на Raspberry Pi и Linux — фронтальный вид.

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

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

Самодельный робот Zer0 на Raspberry Pi и Linux - вид сзади

Рис. 3. Самодельный робот Zer0 на Raspberry Pi и Linux — вид сзади.

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

Еще на панели питания рамещен небольшой переключатель-замочек под ключик (как в старых компьютерах) для подачи питания на робота, кнопка включения и выключения, а также большая желтая кнопка с фиксацией, которую можно использовать на свое усмотрение, запрограммировав для нее какое-то событие или режим работы.

Самодельный робот Zer0 - вид с боковой стороны где размещен компьютер Raspberry Pi

Рис. 4. Самодельный робот Zer0 — вид с боковой стороны где размещен компьютер Raspberry Pi.

С левой стороны у робота находится компьютер, по сути для него отведена вся левая сторона. Здесь мы имеем удобный доступ ко всем разъемам и пинам GPIO, которые размещены на малинке. С передней части у нас есть доступ к Micro-SD карточке компьютера.

Также сзади за компьютером есть небольшая свободная площадка для удобного подключения и размещения различных Flash-накопителей, USB Wi-Fi, 3G-адаптеров и для подключения сетевого Ethernet-шнура в случае необходимости.

Робот Zer0 - вид со стороны где размещены датчики, контроллер движков и система питания

Рис. 5. Робот Zer0 — вид со стороны где размещены датчики, контроллер движков и система питания.

С правой боковой стороны у робота размещены: платка с набором датчиков, модуль управления электродвигателями на основе L298 + платка для конвертации сигналов на К561ЛА7, DC-DC преобразователи напряжения на +5В и +24В, плата контроллера питания на ATtiny2313 + ключи на полевых транзисторах и радиатор к ним, панель управления питанием.

Робот Zer0 - вид снизу на движки, акустичесике колонки и колесико с подшипником

Рис. 6. Робот Zer0 — вид снизу на движки, акустические колонки и колесико с подшипником.

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

Идеи по применению робота

Приведу несколько идей по использованию робота:

  • Периодические задачи на автомате, оповещение о наличии новой почты, комментариях на сайтах, курсах валют, погоде. о чем угодно (синтезатор речи + информация на дисплее). У многих есть каждодневные задачи, которые приходится выполнять вручную, это все можно запрограммировать и поручить роботу, настроив при этом время, условия и периодичность оповещений;
  • Эксперименты с искусственным интеллектом, нейросетями, логикой. Мощности 2-й и 3-й версии малинки уже хватит для некоторых вещей в этой сфере;
  • Платформа для обучения и работы с OpenCV (Open Computer Vision). Анализ информации с фото и видео для принятия каких-то решений, например распознавание лиц у людей, детектор наличия и перемещения каких-то предметов;
  • Сигнализация об утечке воды в помещении, появления вредных веществ (газов) в воздухе. Суть идеи проста: робот установлен (или же перемещается) в помещении и периодически измеряет уровень влажности воздуха, анализирует наличие паров вредных веществ и газа в воздухе. В случае отклонений от нормы можно подать звуковой сигнал, отправить куда-то письмо или СМС. ;
  • Напоминалка о том что нужно полить вазоны и/или проветрить помещение (анализ температуры, влажности и качества воздуха). Часто бывает что люди находясь в помещении привыкают и перестают замечать что по сути там уже нечем дышать, начинает болеть голова, появляется вялость и куда-то пропадают все силы — причиной может быть плохая проветриваемость помещения, низкая влажность воздуха из-за включенного на обогрев кондиционера или обогревателя, жаждущих полива растений и т.п. Можно запрограммировать робота на выполнение периодического контроля качества и влажности воздуха в помещении, с последующем оповещением, например: "откройте окно и освободите помещение на Х минут для его проветривания";
  • Удаленный просмотр и мониторинг помещений (интернет через Wi-FI/3G + управление движением + веб-камера). Полезная штука если на некоторое время нужно куда-то уехать, а дома некому остаться, можно будет удаленно увидеть состояние комнат и всего дома, убедиться что все на своем месте;
  • Система интерактивной охраны для квартиры или дома (фото + видео + перемещение + звуковой оповещение, сигнализация). Динамические и статические маршруты перемещения с автокорректировкой + логирование событий и значений с датчиков, запись видео и фото, отправка информации на почту или личный удаленный сервер в интернете;
  • "Скайп на колесах" (камера + звук + микрофон + перемещение). Возможность общаться и при этом перемещать камеру, меняя позицию и угол обзора удаленно. Возможно вы видели как Эдвард Сноуден удаленно (без физического присутствия) выступал на конференциях TED 2014 (Ванкувер) и CES 2016 в Лас-Вегасе используя робота, которого в сети назвали как "Сноубот"? — в моем случае получится почти то же самое, за исключением наличия большого дисплея на котором смогут видеть того кто "за роботом". Тем не менее, к роботу можно подключить дисплей на 4-7 дюймов используя HDMI выход;
  • Подбор и воспроизведение музыки (голосовые команды + удаленное управление). Можно воспроизводить музыку под настроение, отдавая простые голосовые команды или же просто по хлопкам. Также запрограммировав робота можно включать музыку или какое-то звуковое приветствие при срабатывании пиродатчика если кто-то вошел в помещение;
  • Управление электроприборами в квартире или доме (через радиомодуль). Здесь нужна доработка: передатчик на 433МГц встраиваем в робот, приемники с "умными" электронными реле подключаем к каждому устройству для управления их питанием и/или режимами;
  • Развлечение для детишек (перемещение + камера + звук + свет + удаленное управление). В робота можно заложить какую-то программу и научить его реагировать на какие-то голосовые команды, а также самому управлять и разговаривать через него удаленно. детишки будут в восторге;
  • Источник питания с напряжением 12В и током 4А (стоит предохранитель). В тыловой части робота установлена панель управления питанием с двумя клеммами на которых постоянно присутствует напряжение +12В даже если робот выключен, также через них сейчас выполняется заряд аккумулятора. Вполне можно использовать как источник питания для каких-то самоделок и экспериментов не покупая при этом дополнительного аккумулятора или БП;
  • и т.д. и т.п. . придумайте сами 🙂 .

Скомбинировав некоторые из приведенных выше идей можно получить достаточно функциональное устройство, которое может принести не мало пользы вам и вашим близким.

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

В заключение

Конструирование подобного робота — это очень увлекательное занятие, в процессе которого можно много чему научиться, много-чем поделиться с другими на основании своего опыта, создать интересное и полезное устройство которое поможеть избавиться о какой-то рутинной работы, обеспечить вам безопасность и немного поразвлечь. Создание чего-либо своими руками помогает нам понять что мы также Боги, мы можем творить, совершенствовать и любоваться.

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

Другие мои статьи по самодельному роботу Zer0:

Желаю вам творческих успехов и побольше позитива во всех ваших начинаниях!


Источник: ph0en1x.net