Содержание
Роботизированная платформа AlphaBot2 для Raspberry Pi Zero WH от компании Waveshare, совместимая с микрокомпьютерами Raspberry Pi Zero WH. Имеет множество общих функций робота, включая слежение за линиями, устранение препятствий, ультразвуковое расстояние, дистанционное управление через Bluetooth / инфракрасный порт / WiFi, видеонаблюдение и т. д.
Игровой аркадный автомат Arcade-101-1P основанный на Raspberry Pi, это комплект включающий в себя все аксессуары и детали, необходимые для самостоятельной сборки собственного аркадного автомата, за исключением Raspberry Pi и SD-карты, которые у вас уже могут быть.
AlphaBot2 – обнавленная роботизированная платформа от компании Waveshare, совместимая с микрокомпьютерами Raspberry Pi.
Когда-нибудь думали о мониторинге качества воздуха в доме или за его пределами: там, где живёте и работаете? Этот проект, который мы окрестили balenaSense, представляет собой установку для снятия показаний температуры, влажности, барометрического давления и качества воздуха, а также панель мониторинга, к которой вы можете получить доступ из любого места, чтобы увидеть сводную статистику и отслеживать тенденции.
Для контроля качества воздуха и метеостанции требуется много проводов и различных датчиков, но ситуация стала проще после появления сенсоров, которые объединяют все показания на хорошей маленькой плате, с которой легко начать.
Рассмотрим мониторинг температуры, влажности, барометрического давления и качества воздуха с помощью сенсора «всё-в-одном», который подключается непосредственно к Raspberry Pi без дополнительных компонентов. Вам не нужен никакой опыт в электронике, но паяльник был бы кстати (хотя он тоже необязателен). Этот проект реализует базу данных для хранения исторических показаний вместе с графическим интерфейсом, чтобы просматривать текущие показания и сразу видеть тенденции.
Вот что нужно купить для этого проекта. В зависимости от того, хотите вы пользоваться паяльником или нет, мы выбираем плату датчика: некоторые работают сразу, другие требуют небольшой пайки.
Я не хочу паять
Если не хотите паять, вам потребуются:
Я хочу паять — дайте мне!
Если вы рады взять в руки паяльник, то вам понадобятся:
Другие датчики
Если у вас уже есть какой-то датчик, этот проект поддерживает Sense HAT с дополнительным бонусом: смайлик на светодиодной матрице (в зависимости от качества воздуха, конечно)!
Bosch BME680 с переходной платой можно заказать у разных поставщиков по разным ценам.
- Pimoroni BME680 £18,50 (может быть версия без пайки с их pHAT)
- Adafruit BME680 US$22,50
- Sparkfun SparkX BME680 US$19,95 (может быть версия без пайки с их pHAT)
- Безымянный BME680 US$9,92
Примечание. В статье мы используем Pimoroni: эта плата имеет то дополнительное преимущество, что контакты разбиты в правильном порядке для Raspberry Pi GPIO. При использовании других плат нужно проверять, что контакты питания, заземления и шины I2C (SDA и SCL) совпадают — это объясняется далее в руководстве.
Мы открыли на GitHub проект balena-sense, который содержит всё программное обеспечение, конфигурацию и код, которые вам нужны для рабочей системы. Мы собираемся развернуть этот проект на бесплатном аккаунте balenaCloud, чтобы распространять всё программное обеспечение для Raspberry Pi, а также обеспечить удалённый доступ. Поэтому вам понадобятся:
- Инструмент для записи флэш-карты SD, вроде balenaEtcher
- Бесплатный аккаунт balenaCloud
- Клонировать или загрузить наш проект с GitHub
На аппаратном фронте этого проекта мало работы. Наша цель состоит в том, чтобы подключить плату датчика к контакту GPIO на Raspberry Pi.
Датчик BME680 взаимодействует с Raspberry Pi по шине под названием I2C (eye-squared-see), которая является последовательной шиной с двумя проводами. Эти два провода называются линия синхронизации (SCK) и линия передачи данных (SDA). В дополнение к двум проводам необходимо подать на датчик питание (3.3V или 3V3) и заземлить.
Если вы выбрали вариант без пайки от Pimoroni или Sparkfun или используете Sense HAT, достаточно просто подключить блестящие новые компоненты к Raspberry Pi, и все соединения будут сделаны для вас: переходите к следующему шагу!
Если вы решили подключить датчик напрямую к Raspberry Pi с помощью Pimoroni или другой переходной платы, то главное обеспечить правильное подключение описанных выше контактов (SDA, SCK, 3V3 и GND).
Полезный сайт для работы с GPIO на Raspberry Pi — pinout.xyz; он ясно показывает, что нам нужны контакты 1 (3V3 питание), 3 (SDA), 5 (SCL) и 9 (земля). 40-контактный GPIO является стандартным для Pi 2 и более поздних версий. Если используете плату Pimoroni, то контакты находятся в правильном порядке для соединения плат. Обратите внимание, как надпись на плате соответствует диаграмме распиновки выше.
Но если подключить датчик таким образом, то на показания будет влиять тепло от процессора Raspberry Pi. Чтобы собирать более точные показания, нужно вынести датчик с платы: делаем это кабелями DuPont папа-мама (или Jumper Jerky), как показано ниже:
Аналогично, если вы используете другой датчик, где диаграммы распиновки не совпадают точно, то можете подключить эти платы к Pi тем же методом. Главное — обеспечить соответствие 3V3, SDA, SCL и GND. Если на плате есть контакты для SDI, SDO, CS — можете их игнорировать, поскольку они используются для альтернативного интерфейса SPI, который мы в этом проекте не используем.
На приведённых выше фотографиях у нас Raspberry Pi 3A+, но подходит и Pi Zero в качестве более дешёвого решения.
Мы собираемся прошить SD-карту операционкой balenaOS, привязавшись к облаку balenaCloud, добавить туда своё устройство и настроить проект таким образом, чтобы позже его можно было легко обновить.
Сначала требуется настроить учётную запись balenaCloud. Это значит регистрация, добавление приложения и добавление устройства.
Шаг 1. Зарегистрируйтесь в balenaCloud
Если у вас уже есть аккаунт GitHub или Google, его можно использовать для входа в систему минуя процесс регистрации.
Шаг 2. Cоздание приложения
Добавьте приложение, выбрав правильный тип устройства и Starter в качестве типа приложения, затем нажмите Create New Application . Этот тип поддерживает все микросервисы и бесплатен до десяти устройств.
Далее вы попадёте в панель мониторинга для вновь созданного приложения, где можете перейти к следующему шагу и добавить устройство. Можете дать приложению произвольное имя, но оно понадобится позже в руководстве, когда будем писать код.
Шаг 3. Добавьте устройство и загрузите ОС
После создания приложения можете добавить устройство в этом приложении, нажав зелёную кнопку Add Device. При добавлении устройства укажите правильный тип устройства. Если подключаетесь к беспроводной сети, можете установить свой SSID WiFI и парольную фразу.
Примечание: в анимации указан Raspberry Pi 3, не забудьте выбрать правильный тип своего устройства!
Этот процесс создаёт настраиваемый образ для приложения и типа устройства, который включает параметры сети, если они указаны.
Примечание: для начала лучше выбрать dev-образ, чтобы провести какие-то тесты и устранить неисправности. Более подробную информацию о различиях между образами development и production см. здесь. Если вы уверены, что можете приступить к развёртыванию производственного образа прямо сейчас — пожалуйста.
Шаг 4. Запись SD-карты и загрузка устройства
Когда образ ОС загружен, пришло время прошить SD-карту. Для этого можно использовать balenaEtcher.
После завершения процесса вставьте SD-карту в Raspberry Pi и подключите источник питания.
Когда устройство загружается в первый раз, оно подключается к панели мониторинга balenaCloud, после чего вы сможете увидеть его в онлайновом списке и перейти к следующему шагу.
Устранение неполадок: устройство должно появиться на панели через несколько минут. Если оно не отображается, что-то пошло не так. В документации есть обширное руководство по устранению неполадок с обильной информацией о том, почему так может произойти. Если документация не помогла, обращайтесь на форумы.
Когда ваш Raspberry Pi подготовлен, загружен и подключён к balenaCloud, вы готовы установить на устройство код приложения.
Установка инструментов balena CLI на рабочую станцию
BalenaCloud позволяет удалённо передавать на Raspberry Pi и другие устройства прикладное программное обеспечение/код. Чтобы это стало возможным, ваша рабочая станция (не Raspberry Pi) должна соответствовать неким минимальным требованиям по части программного обеспечения. Примечание: Для успешного развёртывания этого проекта вам не нужно запускать какие-либо команды на самом устройстве ни через SSH, ни с панели мониторинга balenaCloud. Всё делается удалённо!
Если у вас на компьютере уже есть (или вы можете настроить) npm, то это самый быстрый способ запустить инструменты CLI. Есть ещё бинарники для Windows, macOS и Linux. Примечание: если вы уже установили эти инструменты для других наших проектов, можете пропустить эту часть и перейти непосредственно к следующему шагу.
Документация для инструментов CLI описывает установку и настройку пакета npm, а также бинарников.
Когда у вас установлен и работает CLI, первый шаг — войти в balenaCloud, выполнив команду balena login :
Когда есть рабочий CLI, который зарегистрирован в учётной записи, вы готовы к установке программ на Raspberry Pi.
Загрузка проекта с GitHub
Синяя кнопка загрузит zip-файл проекта, но если вы уже знакомы с Git, то можете использовать git clone обычным способом.
Установка на Raspberry Pi
Поскольку CLI и последний код установлены, можно одной командой запушить этот код на balenaCloud. Там собирается и настраивается образ Docker, который запустится на вашем устройстве.
Если всё сделано правильно, через несколько минут информационный экран вашего устройства на панели управления должен показывать запущенные службы, по одной для каждого из программных компонентов, примерно так:
В первый раз загрузка может занять несколько минут (в зависимости от скорости вашего интернет-соединения), но потом загружаются только изменения в контейнере, поэтому всё происходит намного быстрее.
Примечание: когда приложение запускается впервые (и вы используете BME680, а не Sense HAT), датчик примерно пять минут выполняет ‘burn-in’. В течение этого периода показания не будут сниматься и вставляться в базу данных. Приложение будет записывать обратный отсчёт, что и отобразиться в панели balenaCloud:
Когда отсчёт достигнет нуля, вы увидите сообщение ‘Starting loop…`. После этого показания будут сниматься и вставляться в базу данных каждые 10 секунд.
Надеюсь, вы прошили устройство, подключили к сети и запустили без особых проблем. Одно из больших преимуществ использования бесплатного аккаунта balenaCloud — функция Public Device URL .
Активируйте этот переключатель и нажмите значок с синей стрелкой для доступа к панели мониторинга. Можете поделиться этой ссылкой или добавить её в закладки телефона или другого устройства. Пока устройство balenaSense подключено и работает, на панель мониторинга можно посмотреть откуда угодно!
Если не хотите включать публичный доступ, вы всё равно можете просматривать панель мониторинга из собственной локальной сети по IP-адресу, как видно на скриншоте вверху. Ваш будет отличаться, но достаточно ввести в браузере http:// , и вы всё равно получите доступ к панели мониторинга, если находитесь в той же сети, что и устройство. Например, для доступа к моему устройству я бы ввёл http://10.1.231.36 .
Если хотите войти в Grafana и поиграться с настройками, то учётные данные по умолчанию admin и admin .
У этого проекта три основных компонента, три сервиса. Эти названия есть на панели мониторинга balenaCloud:
- InfluxDB — база данных, используемая для хранения показаний датчика
- Sensor — библиотека Python и код для доступа к датчику, снятия показаний и сохранения их в БД
- Grafana — используется для создания панели мониторинга с графиками и отчётами
Датчик BME680 от Bosch определяет температуру, влажность, давление и газоустойчивость. Датчики температуры, влажности и давления работают сразу из коробки, но показания газоустойчивости сами по себе не очень полезны. Это индикаторы изменения состава воздуха. Когда датчик начинает работу, он устанавливает базис, а затем контролирует изменения. Индикативные показатели качества воздуха приведены в процентах и учитывают влияние влажности и газоустойчивости.
Если вы используете Sense HAT, где нет сенсора газоустойчивости, мы аппроксимируем показания качества воздуха на основе целевых значений температуры и влажности.
Надеюсь, теперь вы полностью запустили проект, получили доступ к панели мониторинга, сняли показания и начали заполнять свою базу данных. Упомянем ещё несколько важных вещей.
Измените пароль
Если открываете устройство для публичного доступа, рекомендуется изменить пароль для Grafana.
Мы установили систему с именем пользователя и паролем по умолчанию admin admin . Чтобы их изменить, войдите в Grafana с помощью кнопки в левом нижнем углу панели. Вам будет предложено изменить пароль при первом входе в систему.
Настройка на свой вкус
В программе Grafana для панели мониторинга и отчётов множество параметров конфигурации и настроек. Мы создали базовую панель, которая показывает диаграмму и график для каждого из четырёх параметров снятия показаний.
Можете настроить каждую панель Grafana, наведя курсор на заголовок и перейдя к редактированию. Рекомендую поиграться с параметрами — изменения в панели мониторинга не сохраняются автоматически, так что если сделаете ошибку, то достаточно просто перезагрузить страницу, и всё вернётся в исходный вид. Если хотите сохранить изменения, нажмите Save в верхней части панели управления, и все настройки будут сохранены на вашем устройстве.
Также можете настроить датчики. Например, на диаграмме манометра мы настроили несколько основных диапазонов и текстовые значения вместо цифр. Всё это меняется на ваш вкус!
Корпус
Такие датчики идеально подходят для размещения в метеорологической будке, которая защищает сенсоры от солнечного света и излучаемого тепла. Если вы контролируете окружающую среду в помещении, это не так важно, но если датчик установлен на открытом воздухе, то для получения точных показаний важны его позиционирование и защита.
Метеорологические будки есть в продаже, но они могут быть довольно дорогими, поэтому рассмотрите DIY-варианты.
Понадобилось железкой по имени Raspberry Pi считывать данные нескольких аналоговых датчиков. Для этого была в наличии микросхемка АЦП MICROCHIP mcp3008 (думаю, подключение mcp3004 выполняется похожим образом).
Поскольку первая найденная мной информация по работе с аналоговыми датчиками не позволяла разобраться "на коленке за 5 минут", а потребовала для неосведомленного человека нескольких часов жизни, делюсь изысканиями.
Первым делом о подключении. Подключается АЦП к SPI интерфейсу.
Схем подключения нашел несколько, заработала одна.
Схема расположения выводов на mcp3008:
И подключение к SPI:
Обратите внимание на расположение АЦП (ориентация надписи). Бывают схемы с перепутанными сторонами. Приведена правильная схема.
Датчики, соответственно цепляются выводом данных на один из 8 входов (ch0 .. ch7) АЦП.
Перед использованием MCP3008, необходимо инициализировать SPI интерфейс.
Для считывания использовал perl5 и набор библиотек HiPi.
Код библиотечки-обвязки для чтения данных с ножек (висит на SPI dev 0):
И вызов из скрипта обхода датчиков, соответственно (для примера, читаю ножки ch0 и ch3):
Значения получил инверсированные, т.е. если датчик показывает по максимуму – значение близко к 0, если датчик показывает по минимуму, значение 1023.
Такое наблюдал на 2-х совершенно разнотипных датчиках. С фоторезистором все понятно, он и должен наращивать сопротивление под действием света, т.е. снижать напряжение на выходе. Со вторым все не так очевидно.
Удачи в автоматизации.
Добавлено: в начале сего (2017) года решил обновить систему и библиотеки. SPI интерфейс отвалился. На образ откатываться не хотел, решил повозиться.
При попытке воспользоваться альтернативным методом считывания со SPI на стадии подготовки получил ошибку установки пакета библиотек WiringPi::API
Нечто вроде