Оглавление:
- Запасы
- Шаг 1: прототипирование
- Шаг 2: Подготовка Raspberry Pi
- Шаг 3: База данных
- Шаг 4: бэкэнд
- Шаг 5: интерфейс
- Шаг 6: Отображение информационной панели на дисплее
- Шаг 7: Пайка электроники
- Шаг 8: Источник питания
- Шаг 9: жилье
Видео: Панель управления мотоциклом Raspberry Pi: 9 шагов (с изображениями)
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:50
Будучи студентом Мультимедиа и коммуникационных технологий в Ховесте Кортрейке, мне пришлось создать свой собственный проект IoT. Это позволит объединить все модули, выполненные в первый год, в один большой проект. Поскольку в свободное время я много катаюсь на мотоцикле, я решил использовать свои навыки, полученные в MCT, чтобы построить что-нибудь для своего мотоцикла: умную приборную панель.
MotoDash - это приборная панель с питанием от Raspberry Pi, разработанная для фанатичных мотоциклистов, которая дает гонщику возможность отслеживать свою работу.
Каковы особенности этой панели?
- Просмотр текущего угла наклона
- Просмотр текущего ускорения
- Возможность контролировать температуру масла
- Автоматически переключаться на темную тему при езде в темноте
- Регистрируйте данные о ваших поездках и просматривайте свою собственную статистику
Запасы
Главный вычислительный блок:
Raspberry Pi Это главный контроллер системы
Электроника:
- Зарядное устройство USB для мотоцикла 12В-5ВОсновное питание RPi
- 4-контактное реле с предохранителем 12 В Переключатель для включения / выключения силовой цепи RPi
- Макетная плата с перемычками (опция) Для тестирования и прототипирования
-
Breakout Pi plus - это макетная плата, на которой вы можете паять все свои компоненты. Он предназначен для установки непосредственно на Raspberry Pi, поэтому размеры проекта сведены к минимуму.
Набор резисторов
Разные цвета проволоки 0,2 мм
Датчики и модули:
- Водонепроницаемый 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 - это мини-компьютер, на котором установлена собственная операционная система. В этом проекте он отвечает за обработку сенсорных данных, размещение веб-сайта, запуск серверной части и базы данных,…
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 в безопасное место внутри мотоцикла, я поместил его под одно из крыльев, используя ремни-липучки. И защищал его от непогоды с помощью корпуса и пластика.
Акселерометр
Установите акселерометр в надежном месте, желательно на самой раме мотоцикла.
Примечание:
Вам не обязательно иметь такой же корпус, как у меня, вы можете закончить его как хотите. Просто убедитесь, что электронные компоненты защищены от дождя и пыли.
Рекомендуемые:
Панель управления НАСА для детей: 10 шагов (с изображениями)
Панель управления НАСА для детей: я построил ее для своей невестки, которая работает в детском саду. Она увидела мой лагер, который я построил почти три года назад для компании-производителя, и он мне очень понравился, поэтому я построил его для нее в качестве рождественского подарка. Ссылка на другой мой проект здесь: https: //www
Панель управления ВОЗ COVID-19: 8 шагов (с изображениями)
Информационная панель ВОЗ по COVID-19: в этой инструкции показано, как использовать ESP8266 / ESP32 и ЖК-дисплей для построения информационной панели ВОЗ о ситуации с COVID-19
Панель управления космическим кораблем - лазерная резка Arduino Toy: 11 шагов (с изображениями)
Панель управления космическим кораблем - Laser Cut Arduino Toy: несколько месяцев назад я решил стать участником местного производственного пространства, так как я давно хотел изучить инструменты ремесленного мастерства. У меня был небольшой опыт работы с Arduino, и я прошел курс Fusion здесь, на Instructables. Однако я ч
KerbalController: настраиваемая панель управления для ракетной игры Программа Kerbal Space: 11 шагов (с изображениями)
KerbalController: настраиваемая панель управления для ракетной игры Программа Kerbal Space: зачем строить KerbalController? Ну, потому что нажатие кнопок и переключение физических переключателей кажется намного более существенным, чем щелчок мышью. Особенно, когда это большой красный предохранительный выключатель, когда нужно сначала открыть крышку, щелкнуть выключателем
Настенная панель управления для всей семьи и дома с сенсорным экраном: 7 шагов (с изображениями)
Настенная панель управления для семьи и дома с сенсорным экраном. У нас есть календарь, который ежемесячно обновляется с учетом событий, но делается это вручную. Мы также склонны забывать о том, что у нас закончилось, или о других мелочах. В то время я думал, что было намного проще иметь синхронизированный календарь и систему типа блокнота, которая могла бы