Интересные платы расширения для Raspberry Pi. Делаем модуль расширения для Raspberry Pi с Arduino на борту

01.06.2019

Raspberry-Pi становится действительно универсальным мини-компьютером.
Предлагаем вашему вниманию доступный по цене и простой в обращении и установке модуль расширения X100, превращающий Ваш Raspberry в мощнейший инструмент, благодаря насыщенной коммуникативности данного модуля и наличия на борту часов реального времени.

Вид X100 сверху: назначение разъёмов и выводов.


Вид платы X100 снизу: место микро SD карточки и Rpi RESET.

Описание интерфейсного модуля X100

Плата расширения X100 предназначена для использования на Raspberry Pi (RPI), которая устанавливается в верхней части Raspberry Pi, имеет стабилизатор питания 5 вольт для RPI, от источника напряжения с широким входным диапазоном и несет на себе: выход VGA, RTC, три USB порта, слот SD карты, слот карты памяти, разъем RS232 DB9, и 8 портов для сервомашинок.


Главное и неоспоримое достоинство это видео-вывод VGA и множество других возможностей Х-100.

ОСНОВНЫЕ ХАРАКТЕРИСТИКИ платы расширения X100

Непосредственно вставляемый сверху Raspberry Pi, используя модуль использует GPIO разъем, и не требует проводов, и пайки
.Дублированный 26-контактный разъем R-Pi, позволяет чтобы устанавливать существующие платы расширения
.Входное напряжение от 6 В до 23 В преобразуется в 5 В, 3 А через понижающий DC / DC преобразователь для питания Raspberry Pi

VGA - HDMI конвертер для VGA с поддержкой до UXGA (1600 x 1200) и 1080p с 10-битным ЦАП
.USB - автономный концентратор USB с 3 портами
.Хранение - SD и микро SD разъемы для карт
.RTC - На основе NXP PCF2127AT / PCF2129AT с вставленной батареей CR2032
.Отладка - RS232 DB9 разъем (на чипе MAX3232), используется с нуль-модемным кабелем
.I / O - Кнопка сброса для RPI , контакты для доступа S1 & S5 на вершине Raspberry Pi
.Servo поддержка - 8-канальный чип драйвер (ULN2803)
.Разное - DIP переключатель для подключения контактов RPI
.Размеры - 85 х 56 мм (Точно как Raspberry Pi)
. Этот Модуль подходит для Raspberry Pi Rev 2 модели B .

ПИТАНИЕ

X100 поставляется с встроенным стабилизатором +5 В через разъем GPIO с впаянным 2 A авто восстанавливающимся предохранителем. С широким диапазоном входного напряжения. Стабилизатор может получать питание от широкого спектра внешних источников, таких как батареи, 12 V адаптеры питания, солнечных источников батареи и т.д. Дополнительные +5 В выходы также доступны на серво портах.
Рекомендуемые источники питания: 110 ~ 240 В входного переменного тока, 12 VDC 2 ~ 3 A выходного тока.
Размер выходного отверстия (Блок: мм)

HDMI TO VGA

Описание доступно на http://elinux.org/RPi_Screens#RGB_analog.2FVGA
Любой HDMI в VGA адаптер без внешнего блока питания может работать не большое время, но потом сожжет D1, поэтому не используйте преобразователи HDMI с питанием от порта HDMI! Проблема решается использованием преобразователей только с внешним питанием.
X100 не использует питание от RPI HDMI порта и имеет множество функций.
Характеристики:
. Простота в использовании: Нет необходимости кабеля и установки
. Конверсия: Она может конвертировать полный HDMI в VGA видео
. Поддержка 165 MHz / 1,65 Гбит на канал (6.75 Gbps весь канал) для входа HDMI
. Поддержка выхода Аналоговый видео до UXGA и 1080p с 10-битный ЦАП

RS232 MASTER PORT

Порт RS232 соединен с портом UART на Raspberry Pi с использованием интерфейса MAX3232. MAX3232 преобразует порт 3,3 В UART к RS232 напряжениям и позволяет устанавливать связь с RS232 совместимыми устройствами по последовательному кабелю DB9 или с использованием нуль-модемного кабеля, плата обеспечивает терминальный доступ с Linux на Raspberry Pi, используя приложение терминала. Порт RS232 может быть доступен через порт DB9.

Терминальное приложение - конфигурация PuTTY (COMx, X = Серийный номер порта)

ЧАСЫ РЕАЛЬНОГО ВРЕМЕНИ (RTC)

Предназначены для использования в Raspbian. Это очень точные часы реального времени, которые соединяются через порт GPIO на Raspberry Pi. Они используют контакты GND, SDA и SCL.
Они используют высокоточный чип / PCF2129AT и NXP PCF2127AT:
. Очень точный хронометраж (обычно ± 3 ppm или <2 минуты отклонения в год)
. Интегрированный кристалл, компенсирует температуру и возраст
. Поставляемый аккумулятор будет держать время в течение очень долгого времени, если устройство не используется.
. 512 байт статического ОЗУ, защищенные резервной батареи
. Батарея в комплекте!

ULN2803 8-канальный RC SERVO PORT

Этот чип Драйвер содержит 8 выходов, которые могут обеспечивать 500 мА от выбираемого входного напряжения питания 5 В или постоянного входного тока и имеет на всех выходах диоды включенные внутри для управления катушками. Это позволяет вашим маленьким микроконтроллером или микрокомпьютером питать соленоиды, двигатели постоянного тока (в одном направлении) и униполярные шаговые двигатели.ULN2803 подключаются к входам GPIO через коммутатор DIP, с его выводов собирается два массива Wire-To-Board заголовке. Кроме того, эти порты могут быть использованы для питания +5 В или входного напряжения для другой внешней схемы, или встроенных устройств.
Пожалуйста, обратите внимание, что этот драйвер с «открытым коллектором» - его можно использовать только для подключения нагрузки к земле и будет 1 Вольт (или более) падение напряжения через внутренние транзисторы.

USB HUB И КАРТРИДЕР

Полностью протестированы на совместимость с Raspberry Pi
. Полностью совместим с USB-концентратор спецификации версии 2.0 и обратно совместим со спецификацией USB-концентратор 1.1
. Поддержка трех автономным питанием входных порта
. Очень низкое энергопотребление
. USB класса устройств для Mass Storage, Bulk-транспортного V1.0
. Поддержка SD спецификации до версии. 2.0 (SDHC)
. Оборудование DMA драйвера интегрировано для повышения производительности
Примечание: SD-карта и Micro-SD карта не могут производить чтение / запись одновременно.
X100 также может быть подключен к USB-порту компьютера при помощи прилагаемого USB кабеля, чтобы записать образ ОС на карту SD.

Инсталляцию модуля производите согласно этим картинкам:

HDMI адаптер и USB адаптер поставляются в комплекте.

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

Raspberry Pi – одноплатный компьютер, то есть различные части компьютера, которые обычно располагаются на отдельных платах, здесь представлены на одной.

Первый проект будущей Raspberry Pi был представлен в 2011 г., промышленное производство началось в 2012 г. В названии продукта объединены Raspberry — малина и Pi — число Пи. Изображение малины стало логотипом проекта.

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

Для чего нужны одноплатные компьютеры?

Одноплатные компьютеры обычно небольшого размера, энергоэффективны и имеют относительно небольшую стоимость. Все это относится и к Raspberry Pi. Многие пользователи используют Raspberry Pi как сервер, ведь она потребляет мало энергии и совершенно бесшумна. Благодаря небольшому размеру ее можно встроить в различные корпусы и использовать, например, как мозг для робота. Поэтому проект «Занимательная робототехника» и обратился к рассмотрению этого устройства. В целом с Raspberry Pi можно сделать основную массу всего того, что вы делаете на обычном настольном компьютере, но с некоторой спецификой, в основном связанной с несовместимостью со многими операционными системами.

Выглядит Raspberry Pi так, размер платы схож с кредитной картой:

Плата Raspberry Pi

Сегодня Raspberry Pi популярен не только в обучении, но и среди взрослых и вполне серьезных дяденек, которые создают иногда такие вот безумные проекты — всего каких-то 64 Raspberry Pi, немного -деталей и супер-компьютер готов!

Немного технических деталей Raspberry Pi

Размеры Raspberry Pi: 85,6x56x21 мм, вес 45 г.

RaspberryPi выпускается в двух версиях — A и B. Версия В на сегодняшний день более популярна.

Сравнение версий и основные характеристики Raspberry Pi:

  • Процессор ARM11,Broadcom BCM2835,700 МГц;
  • Оперативная память — 256 Мб у А, 512 Мб у В;
  • USB входы/выходы — 1 у А, 2 у В;
  • SD вход;
  • RCA выход (“тюльпан”);
  • HDMI выход;
  • Ethernet вход/выход — есть только у В;
  • Audio выход;
  • GPIO контакты.

Как видно, Raspberry Pi имеет только оперативную память. В качестве постоянной памяти предполагается использование SD-карт.

Стоимость и где купить Raspberry Pi?

Официальный дилер и некоторые другие интернет-магазины в России продают модель B в районе 2300-2500 рублей + доставка.

Самый экономичный способ купить Raspberry Pi в России — это по-прежнему крупные китайские интернет-магазины (я сам делаю именно так).

По состоянию на момент написания статьи модель B на сайте AliExpress стоит $44 , на DealExtreme — $49. И там, и там бесплатная доставка. Если нет времени ждать посылку из Китая — рекомендуем интернет-магазины и DESSY .

Цены этих магазинов постоянно меняются, появляются какие-то скидки и спецпредложения. Сам я заказывал на DealExtreme недавно за $54 и тогда это было лучшее предложение. Поэтому, если вы раздумываете о покупке, то текущий вариант на AliExpress очень выгодный.

Что касается работы почты и таможни, то от заказа до получения в этот раз у меня прошло чуть меньше месяца. Предыдущие посылки из Китая приходили недели за три. Т.е. сроки вполне адекватные.

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

Что еще нужно для начала работы с Raspberry Pi?

Чтобы начать работу с Raspberry Pi помимо самой платы вам понадобиться:

  • SD-карта, с которой вы загрузите операционную систему; производитель рекомендует использовать карту от 8 до 32 Gb, реально работают и на меньших картах;
  • монитор или телевизор с разъемами HDMI, DVI или RCA («тюльпан») (VGA не подходит), и, соответственно, кабель HDMI-HDMI, HDMI-DVI или RCA-RCA;
  • USB-клавиатура;
  • USB-мышь.

Я подключил Raspberry Pi к 24-дюймовому телевизору, выглядит это так (сама Raspberry Pi выделена овалом):

Raspberry Pi, подключенная к телевизору

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

Мегагерц много не бывает — процессор Raspberry Pi 3 B+ разогнан до 1,4 ГГц. Ускорились сетевые интерфейсы, а ещё появилась поддержка Power over Ethernet.

Область применения Raspberry Pi ограничена лишь вашими знаниями и фантазией.

Автоматизируйте дом или воспользуйтесь этим крошечным компьютером для создания:

  • робота с управлением по Wi-Fi или обладающего компьютерным зрением
  • эмулятора игровой консоли
  • домашней метеостанции
  • охранной системы с распознаванием лиц

Компьютер размером с банковскую карту имеет на борту привычные ПК составляющие: процессор, оперативную память, разъём HDMI, композитный выход, USB, Ethernet, Wi-Fi и Bluetooth.

Главное преимущество Raspberry Pi — 40 контактов ввода/вывода общего назначения (GPIO). К ним вы сможете подключать периферию для взаимодействия с внешним миром: исполнительные устройства, любые сенсоры и всё, что работает от электричества.

Штатной операционной системой для Raspberry Pi является Linux. Она устанавливается на microSD карту, а та — в специальный слот на плате. Если вы не знаете Linux, не пугайтесь. Этот компьютер — прекрасная возможность во всём разобраться. Потерять данные или сильно напортачить с настройками не так страшно, образ на SD-карте можно восстановить за считанные минуты. После этого — смело продолжайте эксперименты!

Версия платы

Raspberry Pi 3 Model B+ это модернизированная версией Raspberry Pi 3 Model B.

64-х битным четырёхядерным процессором ARM Cortex-A53 разогнан с 1,2 ГГц до 1,4 ГГц. На борту модернизированные беспроводные интерфейсы Wi-Fi 802.11n и Bluetooth 4.2/LE.

Кроме того, процессор имеет архитектуру ARMv53, а значит вы сможете использовать любимую операционную систему: Debian Wheezy, Ubuntu Mate, Fedora Remix и даже MS Windows 10 IoT.

Raspberry Pi 3 Model B+ наделили 1 ГБ оперативной памяти, но эта память делится с графической подсистемой. Графический двухъядерный процессор VideoCore IV® поддерживает стандарты OpenGL ES 2.0, OpenVG, MPEG-2, VC-1 и способен кодировать, декодировать и выводить Full HD-видео (1080p, 30 FPS, H.264 High-Profile).

Подключение периферии

Для подключения монитора или телевизора используйте композитный видеовыход или разъём HDMI. Разрешение варьируется от 640×350 (EGA) до 1920×1200 (WUXGA) для HDMI. Композитный выход работает в форматах PAL и NTSC.

Колонки или наушники подключаются через стандартное гнездо 3,5 мм. Также звук может передаваться по HDMI.

Raspberry Pi 3 Model B+ предоставляет 4 USB-порта, объединённых внутренним хабом. К ним, помимо прочего, можно подключить клавиатуру и мышь.

Для экономии ресурсов центрального процессора, Raspberry Pi предлагает подключения штатных модулей через 15-пиновые слоты:

  • CSI-2 — для подключения камеры по интерфейсу MIPI
  • DSI — для подключения штатного дисплея

В качестве низкоуровневых интерфейсов доступны:

  • 40 портов ввода-вывода общего назначения
  • UART (Serial)
  • I²C/TWI
  • SPI с селектором между двумя устройствами
  • пины питания: 3,3 В, 5 В и земля

Для коммуникации на Raspberry Pi 3 Model B доступны интерфейсы:

Ethernet на 10/100/1000 Мбит с выходом на стандартное гнездо 8P8C (RJ45); Wi-Fi 802.11n и Bluetooth 4.2.

Питание

Питание Raspberry Pi 3 осуществляется от 5-вольтового адаптера через разъём micro-USB или пины питания. Рекомендуем использовать источник питания с силой тока не менее 2,4 А, чтобы иметь возможность подключать к USB-портам более энергоемкие устройства.

Аппаратный выключатель питания на плате отсутствует. Для включения компьютера достаточно подключить кабель питания. Для выключения используйте штатные функции операционной системы.

Габариты

Размер платы: 85×54 мм. USB-порты, Ethernet-гнездо, HDMI, аудио-гнездо выступают за обозначенные рамки на несколько миллиметров.

Программное обеспечение

Вместо традиционного для обычных компьютеров жёсткого диска, Raspberry Pi использует microSD флеш-карту. Она должна быть предварительно подготовлена — на неё следует установить операционную систему. Имея несколько флеш-карт, вы можете поочерёдно использовать их, получив несколько изолированных образов компьютеров.

Флеш-карта в комплект не входит.

Характеристики

  • Процессор: 64-битный 4-ядерный ARM Cortex-A53 с тактовой частотой 1,4 ГГц на однокристальном чипе Broadcom BCM2837
  • оперативная память: 1ГБ LPDDR2 SDRAM
  • цифровой видеовыход: HDMI
  • композитный выход: 3,5 мм (4 pin)
  • USB порты: USB 2.0×4
  • беспроводная сеть: WiFi 2,4/5 ГГц, 802.11n
  • Ethernet: 10/100/1000 Мб RJ45
  • Bluetooth: Bluetooth 4.2, Bluetooth Low Energy
  • разъем дисплея: Display Serial Interface (DSI)
  • разъем видеокамеры: MIPI Camera Serial Interface (CSI-2)
  • карта памяти: MicroSD
  • порты ввода-вывода: 40
  • габариты: 85x56x17 мм
  • Электроника для начинающих
  • У нас в хакспейсе есть много разных Raspberry Pi, с помощью которых мы учим детей программировать на python, делать роботов и разные полезные гаджеты. Разумеется, все то же самое делаем и на Arduino. За три года жизни душа в душу с этими крайне отличающимися платформами, у нас появилось несколько идей о том, как правильнее сделать учебного робота, учитывая плюсы и минусы каждой железки. Все эти мысли материализовались в новом устройство, о котором речь и пойдет далее.

    По сути, мы спроектировали Arduino-совместимый модуль расширения для RPi, который содержит драйвер двигателя и стабилизатор питания. Понятно, что этот модуль является самодостаточным контроллером для учебного робота, но именно сэндвич RPi+Arduino демонстрирует идеологически правильный подход к созданию роботов. Как эта штука выглядит, какими характеристиками обладает, и где её можно применить читаем далее.


    Немного истории

    Уже прошло 4 года с момента выпуска в серию Raspberry Pi Model B. В свое время, именно шумиха вокруг RPi отчасти сподвигла нас на создание нашего хакспейса. Ведь первое, что мы начали делать - учить детей робототехнике на RPi. Уже после первых уроков со старшеклассниками на базе Уральской компьютерной школы имени Н.Н.Красовского, мы задумались о своей мастерской-лаборатории, открытой для всех страждущих.

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

    Первый наш робот на базе RPi был создан именно как пособие для работы со школьниками. Это был двухколесный робот, на котором ребята отрабатывали работу с двигателями и разного рода датчиками, попутно готовясь к соревнованиям. В качестве шасси использовался мотор-редуктор фирмы tamiya. Драйвером двигателей служил drv8833 от TI. В варианте для робота LineFollower стояло два самодельных датчика отражения. На верхней палубе робота была установлена беспаечная макетная плата на 400 точек.

    Робот показал себя отлично, так что с течением времени платформа примеряла разный обвес. Кроме LineFollower-а, который мы кстати называем следопытом на наш лад, робот носил оптические датчики отражения, ультразвуковые дальномеры, рисовал фломастером на ватмане, наконец, управлялся через wifi, передавая изображение с веб-камеры.

    Со временем пришло понимание того, что мотор-редуктор был выбран не самый популярный, да еще и очень шумный. Корпус робота не вмещал всех хотелок, и не был совместим с распространенными конструкторами. А самое главное, появилась идея сделать модуль расширения для RPi, который бы избавил робота от лишних «рутинных» коммуникаций и устройств. Так начался проект колесного робота под кодовым названием MR-K-1, а вслед за ним и MR-K-2. С самого начала мы стали предусматривать посадочные отверстия под обе платформы, и ниже представлена модель робота с Arduino на борту.

    Это модификация для битвы, на которой школьники управляя роботом по bluetooth стремятся лопнуть воздушные шарики, закрепленные на вражеской машине. Раму увеличили, мотор-редуктор заменили на распространенный китайский двигатель желтого цвета (а иногда белого). Корпус адаптировали под конструктор multiplo, так что теперь он покрылся квадратными отверстиями. Всё это заняло несколько недель. А вот работа над модулем расширения немного затянулась. И проблема была не столько в сложности реализации, сколько в нехватки времени, усугубленной перфекционизмом:)

    Модуль расширения RPiDuino

    Главным разработчиком модуля стал Александр Васильев, ведущий крайне полезный блог alex-exe.ru . Ко времени старта проекта у него уже был огромный опыт в разработке драйверов двигателей, стабилизаторов питания, и многих других интересных для роботостроения устройств. Плату было решено назвать RPiDuino, ибо она должна была обеспечить симбиоз Raspberry Pi и Arduino.

    Итак, что мы решили разместить на плате.

    Модуль должен был взять на себя прямое управление драйвером двигателя, сервоприводами и датчиками. Все это предполагает наличие микроконтроллера. А поскольку мы делаем учебного робота и контроллер этот должен легко прошиваться нашими школьниками, то выбор пал на всем известную atmega328 с arduino-загрузчиком на борту. Наличие atmega делает модуль самодостаточным контроллером для управления небольшими учебными роботами.

    Раз на плате появилась атмега, понадобился и USB-UART мост, в качестве которого мы поставили CP2102. Еще одним признаком Arduino-совместимости стали привычные разъемы по бокам платы, позволяющие насаживать сверху модули расширения.

    Модуль должен управлять двигателям, поэтому появился соответствующий драйвер. Современные драйверы стали совершенно микроскопических размеров, так что их можно легко уместить на плате без особого ущерба соседним компонентам. Выбрали DRV8833 от Pololu, так как с ними уже был какой-никакой опыт. Драйвер двухканальный, с рабочим током канала - 1А.

    Наконец, на плате был просто необходим стабилизатор напряжения. Изначально предполагалось сделать раздельное питание для вычислительной части и для сервоприводов, но мы испытали небольшие проблемы с компоновкой. Так что остался только один стабилизатор LM2596, который питает RPi, микроконтроллер, логическую часть драйвера двигателей и датчики.

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

    RPiDuino вставляется а GPIO разъем Raspberry Pi, как и все подобные ему модули. Связь atmega328 и RPi осуществляется через UART.

    Остальные ноги GPIO выведены насквозь, так что их можно использовать на свое усмотрение.

    Таблица ключевых характеристик RPiDuino

    Питание
    Напряжение питания 7.5-24В (без драйвера двигателей)
    7.5-10.5В (с драйвером двигателей)
    Входной ток От 0,5 до 4А, зависти от нагрузки, напряжения питания, драйвера двигателей
    Стабилизатор напряжения
    Выходной напряжение
    Выходной ток: рабочий/максимальный/пиковый 1.5А/2А/3А
    Пульсации выходного напряжения 1%
    Разъём питания 5.5х2.1мм и клеммник
    Драйвер двигателя
    Напряжение питания 2,7-10,5В
    Ток на канал рабочий/пиковый 1А/2А
    Частота ШИМ 50кГц
    Габариты
    Размеры 85х56х22мм
    85х56х33мм (с разъёмом для RaspberryPi)
    Вес 49г

    Телеуправляемый робот на основе RPi+RPiDuino

    Хорошей демонстрацией возможностей RPi служит телеуправляемый робот. На нем можно показать согласованную работу RPi и Arduino, где старшая платформа занимается обработкой видеосигнала и интерфейсом пользователя, а вторая выполняет свои рутинные робозадачи.

    Сейчас на роботе стоит веб-камера с аппаратной поддержкой mjpg сжатия, соединенная с Raspberry по USB. Робот цепляется к WiFi посредством USB-роутера TL-WN722N. Двигатели стоят усиленные, с отношением 1:120. Колеса большие с мягкой резиной, чтобы цепляться за линолеум у нас в хакспейсе. Энкодеры на двигателях помогают нивелировать разброс в тяге двигателей. Питается все это от двух LiIon аккумулятором типоразмера 18650.

    Как все это работает

    На RPiDuino крутится программа, которая слушает из UART-а команды на движение и отправляет обратно кое-какую телеметрию. В своих проектах я использую библиотеку SerialFlow , написанную еще для моего первого квадрокоптера. Код программы для RPiDuino также можно найти на github.

    На стороне Raspberry Pi все устроено несколько сложнее. Во-первых, управление роботом осуществляется через web-интерфейс, так что пришлось поднять небольшой web-сервер на python. Экран управления имеет стрелки для задания направления движения, регулятор скорости, телеметрию, и окно для отображения потока с веб-камеры. Для трансляции видео я традиционно использую mjpg-streamer.

    Если захочется повторить нечто подобное на своем роботе, алгоритм установки будет следующим.
    1) Устанавливаем mjpg-streamer, и настраиваем передачу видеопотока в http.
    2) Устанавливаем пакет pyserial.
    3) Качаем и распаковываем архив с серверной частью управляющей программы.
    4) Заливаем на RPIDuino скетч управления.
    5) Настраиваем wifi на RPi.
    6) Настраиваем автозапуск управляющей программы на RPi.

    RPiDuino и ROS

    Еще одна причина, по которой нам стал нужен этот модуль расширения - это возможность показать нашим ученикам правильную концепцию роботов. Сейчас это звучит примерно так: «Смотрите, ребята, у робота есть главный компьютер, который управляет сложными вычислениями. Он может распознавать изображения, строить карту с помощью лидара и SLAM. Все это отнимает у него много ресурсов, так что он больше не может чутко управлять колесами наземного робота, и не дай бог, стабилизацией квадрокоптера в полете. Для этих операций на уровне спинного мозга имеется другой компьютер, специализирующийся на конкретных простых задачах и не отвлекающийся ни на что другое. Эти два вычислителя связаны шиной данных, по которой они общаются друг с другом и прочими модулями.»

    Тут-то и выплывает понятие ROS. В данном случае ядро системы крутится на RPi, а RPiDuino - есть узел ROS. Мы, кстати, уже сделали небольшой пакет для управления RPIDuino через ROS. Скоро опубликуем отдельную статью на эту тему.

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

    Некоторое время назад появилась в моем распоряжении плата Raspberry Pi3. Ее возможности действительно впечатляют: и быстрый четырехядерный процессор, и встроенные аппаратные кодеки/декодики аудио/видео/jpeg, сеть Ethernet/WIFI, USB2, HDMI… Прямо настоящий компьютер. Очень круто, что есть разъем GPIO, который позволяет разным умельцам подключать что-то свое нестандартное и особенное. Существует огромное число различных плат расшрения, которые устанавливаются на этот разъем: дисплеи, светодиодные экраны, адаптеры для двигателей, платы АЦП…

    Я хотел бы немного рассказать об FPGA плате Марсоход2RPI, которая, как и другие платы расширения, подключается к разъему GPIO распберри, и добавляет нашему микрокомпьютеру совершенно новые свойства.

    Плата довольно проста. На ней установлены:

    1. FPGA Cyclone IV EP4CE6E22C8
      • логических элементов 6272;
      • встроенная память 270Кбит;
      • Умножителей 15 (18x18);
      • PLL 2;
    2. Четыре светодиода;
    3. Три кнопки;
    4. Кварцевый генератор 100Мгц;
    5. Возможность установки чипа EPCS4 (для случая, если плата будет использоваться автономно);
    6. Разъем JTAG (для случая, если плата будет использоваться автономно);
    7. Два 40 пиновых разъема на каждом по 28 пользовательских GPIO - разъемы совместимые с Raspberry;
    8. Один 40 пиновый разьем для подключения к Raspbery, на котором можно использовать 24 или 20 GPIO (в зависимости от того, установлен чип EPCS4 или нет).
    Плата Марсоход2RPI устанавливается не над платой Raspberry Pi, а сбоку, через специальный переходник. Это сделано умышленно. Raspberry Pi3 и так довольно сильно греется при загрузке 4-х ядер, накрывать плату сверху кажется не очень гуманным с точки зрения охлаждения.

    Так можно подключить плату Raspberry Pi2/ Pi3:

    А вот так Pi-zero:

    Возможно (но это не точно), эту же плату расширения можно будет использовать с OrangePi.

    Самое первое применение этой платы, которое приходит на ум - это увеличение количества GPIO сигналов в два раза: был один разъем, а стало два. Нужно только создать и загрузить в ПЛИС нужный проект, ну и управлять входами выходами придется каким-то особым образом, тут вариантов много: последовательный порт, SPI, GPIO, можно задействовать DMA…

    Загружать ПЛИС платы Марсоход2RPI можно прямо из Raspberry через JTAG сигналы, которые, конечно, отображаются в GPIO

    • tck → GPIO7
    • tms → GPIO0
    • tdi → GPIO11
    • tdo ← GPIO1
    Есть такой open source проект OpenOCD, отладчик и дебагер, который позволяет использовать Raspberry как JTAG программатор. OpenOCD - это сервер, его можно запустить, а потом подключаться к нему хоть удаленно телнетом и выполняя команду «svf» можно загрузить образ скомпилированного проекта в ПЛИС. .

    Вот тут как раз видеодемонстрация:

    Самый первый «тестовый» проект для платы Марсоход2RPI уже готов, хотя пока не очень впечатляет своей функциональностью. Первый проект для ПЛИС - это обычно всегда «моргание светодиодом», такой своего рода «hello World!» мира микроконтроллеров и FPGA.
    Его исходники можно взять на github: github.com/marsohod4you/m2rpi_first

    Но и тут, даже в этом простом случае уже есть взаимодействие ПЛИС и микрокомпьютера. Из raspberry можно посылать через последовательный порт в ПЛИС байты, которые меняют скорость моргания светодиода. Более того, первый «тестовый проект» ПЛИС принимает байт из последовательного порта, модифицирует его (добавляет единицу), и отправляет назад. Конечно, довольно примитивное, но уже взаимодействие двух систем ПЛИС и процессора.

    Видеодемонстрация:

    Это мой первый опыт доступа к ПЛИС из Raspberry. Я думаю, что было бы интересно попробовать делать действительно сложные проекты, как, например, захватывать в распберри кадры от видеокамеры и передавать их по DMA в ПЛИС для обработки. Думаю интересных проектов с этой платой расширения может быть много.