Оглавление:

Панель управления мотоциклом Raspberry Pi: 9 шагов (с изображениями)
Панель управления мотоциклом Raspberry Pi: 9 шагов (с изображениями)

Видео: Панель управления мотоциклом Raspberry Pi: 9 шагов (с изображениями)

Видео: Панель управления мотоциклом Raspberry Pi: 9 шагов (с изображениями)
Видео: Основы цифровой электроники с Raspberry Pi и Python 2024, Ноябрь
Anonim
Панель управления мотоциклом Raspberry Pi
Панель управления мотоциклом Raspberry Pi

Будучи студентом Мультимедиа и коммуникационных технологий в Ховесте Кортрейке, мне пришлось создать свой собственный проект IoT. Это позволит объединить все модули, выполненные в первый год, в один большой проект. Поскольку в свободное время я много катаюсь на мотоцикле, я решил использовать свои навыки, полученные в MCT, чтобы построить что-нибудь для своего мотоцикла: умную приборную панель.

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

Каковы особенности этой панели?

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

Запасы

Главный вычислительный блок:

Raspberry Pi Это главный контроллер системы

Электроника:

  • Зарядное устройство USB для мотоцикла 12В-5ВОсновное питание RPi
  • 4-контактное реле с предохранителем 12 В Переключатель для включения / выключения силовой цепи RPi
  • Макетная плата с перемычками (опция) Для тестирования и прототипирования
  • Набор резисторов

    Разные цвета проволоки 0,2 мм

  • Breakout Pi plus - это макетная плата, на которой вы можете паять все свои компоненты. Он предназначен для установки непосредственно на Raspberry Pi, поэтому размеры проекта сведены к минимуму.

Датчики и модули:

  • Водонепроницаемый DS18B20 1-Wire Датчик температуры Датчик температуры масла
  • 3-х осевой гироскопический акселерометр MPU6050 Датчик наклона / ускорения
  • Светозависимый резистор (LDR)
  • MCP3008 - 8-канальный 10-битный АЦП с интерфейсом SPI

    TFT SPI-дисплей (или любой другой ЖК-дисплей, соответствующий вашим потребностям)

    RGB светодиод

Корпус:

  • Пластиковая коробка
  • Чехол Raspberry Pi

Инструменты:

  • Паяльник и припой
  • Винты 2,5 мм и распорки
  • Водонепроницаемые кабельные разъемы
  • Супер клей

Шаг 1: прототипирование

Прототипирование
Прототипирование
Прототипирование
Прототипирование

Прежде чем сделать все постоянным, мы соберем проект на макете. Этот шаг можно пропустить, если вы абсолютно уверены, что не ошибетесь. Электрическую / макетную схему можно найти в PDF-файле ниже. Соберите схему точно так, как описано. Убедитесь, что вы используете только вывод 3.3V, а не вывод 5V на RPi. Также, прежде чем включать Raspberry Pi, дважды проверьте свою схему. Следите за тем, чтобы не было шорт!

Шаг 2: Подготовка Raspberry Pi

Подготовка Raspberry Pi
Подготовка Raspberry Pi

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

1. Установите собственный образ Raspbian

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

  • Apache для веб-интерфейса
  • MariaDB для базы данных
  • PhpMyAdmin для управления базой данных
  • Пользовательские разрешения, чтобы избежать проблем

Пользовательский образ можно скачать здесь.

Учебное пособие по установке образов можно найти здесь:

После установки образа подключите Raspberry Pi к компьютеру с помощью кабеля Ethernet. Теперь вы можете использовать SSH-клиент для подключения к нему по IP-адресу 169.254.10.1.

Рекомендуется сразу же установить новый пароль с помощью команды passwd.

2. Настройка беспроводной точки доступа

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

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

3. Включение интерфейсов

Зайдите в raspi-config

sudo raspi-config

Перейдите к параметрам интерфейса и включите 1-wire, SPI и I2C и перезагрузите Pi.

3. Настройка драйверов для дисплея

Инициализация дисплея

Отредактируйте файл / etc / modules

Судо нано / и т.д. / модули

Добавьте следующие 2 строки

spi-bcm2835fbtft_device

Теперь отредактируйте /etc/modprobe.d/fbtft.conf

sudo nano /etc/modprobe.d/fbtft.conf

Добавьте следующую строку

опции fbtft_device name = tm022hdh26 gpios = reset: 25, dc: 24, led: 18 rotate = 90 speed = 80000000 fps = 60

Перезагрузите Pi. Если вы видите, что подсветка дисплея загорается, все прошло хорошо. Это будет инициализировать дисплей каждый раз при загрузке Pi, однако теперь он будет отображать только черный экран. Чтобы отобразить содержимое Pi на дисплее, нам нужно скопировать содержимое главного экрана на небольшой ЖК-дисплей. Для этого мы воспользуемся сервисом под названием «fbcp».

Установка службы fbcp

sudo apt-get install cmake

git clone

cd rpi-fbcp

mkdir build

cd build /

cmake..

делать

sudo установить fbcp / usr / local / bin / fbcp

Теперь мы установили сервис. Однако, поскольку мы используем Pi без головы, нет экрана, с которого можно было бы копировать содержимое. Чтобы заставить Pi выводить содержимое экрана, отредактируйте /boot/config.txt

судо нано /boot/config.txt

Найдите и раскомментируйте или добавьте в этот файл следующие строки:

hdmi_force_hotplug = 1

hdmi_cvt = 640 480 60 0 0 0 0

display_rotate = 0

hdmi_group = 2

hdmi_mode = 87

Перезагрузите RPi и протестируйте службу fbcp, набрав fbcp в консоли. Теперь вы должны увидеть содержимое экрана на ЖК-дисплее.

Запуск fbcp при запуске

Отредактируйте /etc/rc.local и добавьте следующую строку между IP-адресом и строкой выхода.

fbcp &

Теперь дисплей должен включаться каждый раз при загрузке RPi.

Шаг 3: База данных

База данных
База данных

Для регистрации и хранения сенсорных данных я разработал свою собственную базу данных, которая содержит 4 таблицы. Диаграмма EER показана на изображении выше.

1. Устройства

В этой таблице указаны все датчики. Он описывает название датчика, описание и единицу измерения. Эта таблица имеет отношение «один ко многим» с действиями таблицы, так как в моем случае датчик ускорения может выполнять разные задачи.

2. Действия

В этой таблице хранятся действия для разных датчиков. Одно действие всегда связано с определенным датчиком. Например: действие «ТЕМП» связано с устройством, измеряющим температуру. Это будет 1-проводной датчик температуры.

3. История

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

4. Аттракционы

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

Чтобы установить эту базу данных на свой Raspberry Pi, перейдите на мой GitHub и клонируйте / загрузите репозиторий. В базе данных вы найдете 2 файла.sql. Запустите их в рабочей среде PhpMyAdmin или MySQL. Теперь база данных должна быть на вашем RPi.

Шаг 4: бэкэнд

Если вы еще этого не сделали, перейдите на мой GitHub и клонируйте / загрузите репозиторий. В папке Backend вы найдете полный бэкэнд проекта.

Папка содержит классы для чтения датчиков в / helpers, файлы для связи с базой данных в / repositories, а главное приложение находится в корне под именем app.py.

Установка пакетов Python

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

pip3 установить mysql-connector-python

pip3 установить flask-socketio

pip3 установить flask-cors

pip3 установить gevent

pip3 установить gevent-websocket

ВАЖНОЕ ПРИМЕЧАНИЕ: если вы изменили свой пароль Mariadb / Mysql, измените пароль в config.py!

Протестируйте бэкэнд

Запустите app.py с помощью интерпретатора python3 (/ usr / bin / python3). Убедитесь, что ошибок нет.

Запуск бэкэнда при загрузке

Отредактируйте motoDash_backend.service и измените YOURFILEPATH на путь, по которому сохранен репозиторий.

Теперь скопируйте этот файл в / etc / systemd / system /

sudo cp motoDash_backend.service /etc/systemd/system/motoDash_backend.service.

Теперь серверная часть будет запускаться автоматически при каждой загрузке RPi.

Шаг 5: интерфейс

Внешний интерфейс
Внешний интерфейс
Внешний интерфейс
Внешний интерфейс

Зайдите в репозиторий GitHub. Скопируйте содержимое каталога Frontend в / var / www / html.

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

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

Шаг 6: Отображение информационной панели на дисплее

Отображение приборной панели на дисплее
Отображение приборной панели на дисплее

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

Убедитесь, что RPi настроен на автоматический вход на рабочий стол в raspi-config в параметрах загрузки.

sudo raspi-config

Теперь перейдите в скрытую папку конфигурации и создайте там новый файл.

cd.config

sudo mkdir -p lxsession / LXDE-pi

sudo nano lxsession / LXDE-pi / автозапуск

Добавьте в этот файл следующие строки и сохраните

@xscreensaver -no-splash

@xset s выкл.

@xset -dpms

@xset s noblank

@ chromium-browser --noerrors --disable-session-crashed-bubble --disable-infobars --kiosk --incognito

Теперь Pi должен каждый раз загружаться с этой веб-страницы

Шаг 7: Пайка электроники

Пайка электроники
Пайка электроники
Пайка электроники
Пайка электроники
Пайка электроники
Пайка электроники
Пайка электроники
Пайка электроники

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

Несколько советов при пайке:

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

Теперь припаяйте к датчикам провода достаточной длины и оберните их термоусадочной пленкой, чтобы убедиться, что все не закорочено и не чистое.

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

Шаг 8: Источник питания

Для питания Raspberry Pi мы будем использовать USB-адаптер 12В-5В. Этот адаптер будет подключен к аккумуляторной батарее мотоцикла. Чтобы убедиться, что RPi включается при включении зажигания, мы воспользуемся реле. Реле замыкает силовую цепь RPi, когда обнаруживает напряжение от заднего фонаря (задний фонарь всегда включается при включении зажигания).

Более подробное руководство по этому поводу можно найти на этой странице: https://www.hondagrom.net/threads/2017-gromsf-msx125sf-wire-up-auxilary-power-for-pcv-wb2-and-other-fuel -controllers.16921 /

Шаг 9: жилье

Корпус
Корпус
Корпус
Корпус
Корпус
Корпус

Корпус дисплея

Для дисплея возьмите жесткую пластиковую коробку размером примерно с дисплей. Вырежьте в нем квадратное отверстие размером с дисплей и соответствующие отверстия для ввинчивания дисплея. На передней панели вам нужно просверлить еще 2 отверстия для светодиода RGB и LDR.

Я закрепил эту коробку на держателе для смартфона с помощью болта.

Датчик температуры

Для размещения датчика температуры я напечатал на 3D-принтере датчик уровня масла, который подходит для моего мотоцикла.

Raspberry Pi

Установите Raspberry Pi в безопасное место внутри мотоцикла, я поместил его под одно из крыльев, используя ремни-липучки. И защищал его от непогоды с помощью корпуса и пластика.

Акселерометр

Установите акселерометр в надежном месте, желательно на самой раме мотоцикла.

Примечание:

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

Рекомендуемые: