Съдържание:

Табло за управление на мотоциклети Raspberry Pi: 9 стъпки (със снимки)
Табло за управление на мотоциклети Raspberry Pi: 9 стъпки (със снимки)

Видео: Табло за управление на мотоциклети Raspberry Pi: 9 стъпки (със снимки)

Видео: Табло за управление на мотоциклети Raspberry Pi: 9 стъпки (със снимки)
Видео: Control Position and Speed of Stepper motor with L298N module using Arduino 2024, Ноември
Anonim
Табло за управление на мотоциклети Raspberry Pi
Табло за управление на мотоциклети Raspberry Pi

Като студент по мултимедийни и комуникационни технологии в Howest Kortrijk, трябваше да направя свой собствен IoT проект. Това ще комбинира всички модули, последвани през първата година, в един голям проект. Тъй като карам мотоциклета си много в свободното си време, реших да използвам придобитите си умения в MCT, за да създам нещо за моя мотоциклет: Интелигентно табло за управление.

MotoDash е табло за управление на Raspberry Pi, предназначено за фанатични мотоциклетисти, което дава възможност на ездача да следи представянето им.

Какви са характеристиките на това табло за управление?

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

Консумативи

Основен изчислителен блок:

Raspberry Pi Това е основният контролер на системата

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

  • USB зарядно устройство за мотоциклет 12V-5V Основно захранване за RPi
  • 4 Pin Fused Relay 12V Превключете, за да включите/изключите захранващата верига на RPi
  • Платформа с джъмперни проводници (по избор) За тестване и прототипиране
  • Комплект резистори

    Различни цветове на тел 0,2 мм

  • Breakout Pi plus Това е прототипна платка, където можете да запоявате всичките си компоненти. Той е направен така, че да се побира директно върху Raspberry Pi, така че размерите на проекта остават до минимум.

Сензори и модули:

  • Водоустойчив 1-жичен температурен сензор DS18B20 Сензор за температура на маслото
  • Сензор за наклон/ускорение с 3 оси Gyro Accelerometer MPU6050
  • Резистор, зависим от светлина (LDR)
  • MCP3008-8-канален 10-битов ADC с SPI интерфейс

    TFT SPI дисплей (или всеки друг LCD дисплей, който отговаря на вашите нужди)

    RGB LED

Корпус:

  • Пластмасова кутия
  • Малина пи калъф

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

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

Стъпка 1: Прототипиране

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

Преди да направим всичко постоянно, ще сглобим проекта на макет. Тази стъпка може да бъде пропусната, ако сте абсолютно сигурни, че няма да направите грешка. Схемата за електричество/макет може да бъде намерена в PDF по -долу. Съберете веригата точно както е описано. Уверете се, че използвате само 3.3V щифт, а не 5V щифт на RPi. Също така, преди да включите малиновия 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 през wifi, така че нека го превърнем в безжична точка за достъп. Урок за това можете да намерите тук.

Трябва само да следвате този урок до стъпка 7. Стъпка 8 не се изисква, тъй като не е необходимо да свързваме интернет връзка, а да създадем самостоятелна мрежа.

3. Активиране на интерфейси

Влезте в raspi-config

sudo raspi-config

Отидете на опциите за свързване и активирайте 1-проводник, SPI и I2C и рестартирайте Pi

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

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

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

sudo nano /etc /модули

Добавете следните 2 реда

spi-bcm2835fbtft_device

Сега редактирайте /etc/modprobe.d/fbtft.conf

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

Добавете следния ред

опции fbtft_device име = tm022hdh26 gpios = нулиране: 25, dc: 24, led: 18 завъртане = 90 скорост = 80000000 fps = 60

Рестартирайте Pi. Ако видите, че подсветката на дисплея светва, всичко е наред. Това ще инициализира дисплея всеки път, когато Pi се стартира, но сега ще показва само черен екран. За да изведем съдържанието на Pi на дисплея, трябва да копираме съдържанието на главния екран на малкия LCD. За това ще използваме услуга, наречена „fbcp“.

Инсталиране на услугата fbcp

sudo apt-get install cmake

git clone

cd rpi-fbcp

mkdir build

cd компилация/

cmake..

направете

sudo инсталирате fbcp/usr/local/bin/fbcp

Сега инсталирахме услугата. Въпреки това, тъй като използваме Pi без глава, няма наличен екран за копиране на съдържанието. За да принудите Pi да извежда съдържание на екрана, редактирайте /boot/config.txt

sudo nano /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 в конзолата. Сега трябва да видите съдържанието на екрана на LCD дисплея.

Стартиране на fbcp при стартиране

Редактирайте /etc/rc.local и добавете следния ред между ip адреса и изходната линия

fbcp &

Сега дисплеят трябва да се включва всеки път, когато RPi се стартира

Стъпка 3: База данни

База данни
База данни

За да регистрирам и съхранявам сензорни данни, създадох собствена база данни, която съдържа 4 таблици. Диаграмата EER е показана на изображението по -горе.

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

Тази таблица съдържа всеки сензор. Той описва името на сензора, описание и измервателна единица. Тази таблица има връзка един към много с действията на таблицата, тъй като в моя случай сензорът за ускорение може да изпълнява различни задачи.

2. Действия

Тази таблица съхранява действия за различни сензори. Едно действие винаги е свързано с определен сензор. Например: действието „TEMP“е свързано с устройството, което измерва температурата. Това би бил 1-проводният температурен сензор.

3. История

Тази таблица съдържа всички регистрационни файлове на сензорите. Всеки регистър има идентификатор на действие, стойност, времева отметка и езда

4. Пътувания

Тази маса съхранява различни пътувания. Всеки път, когато потребителят започне ново пътуване, в тази таблица се прави нов запис

За да получите тази база данни на вашия Raspberry Pi, преминете към моя GitHub и клонирайте/изтеглете хранилището. Под базата данни ще намерите 2.sql файла. Стартирайте ги в работната маса на PhpMyAdmin или MySQL. Сега базата данни трябва да е във вашия RPi.

Стъпка 4: Бекенд

Ако все още не сте, преминете към моя GitHub и клонирайте/изтеглете хранилището. Под папката Backend ще намерите пълния бекенд за проекта.

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

Инсталиране на пакети на Python

Преди да се опитаме да стартираме нещо, първо трябва да инсталираме някои пакети за python. Влезте в терминала на вашия RPi и въведете следните команди:

pip3 инсталирайте mysql-конектор-python

pip3 инсталирайте flask-socketio

pip3 инсталирайте колба-кор

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: Frontend

Frontend
Frontend
Frontend
Frontend

Насочете се към GitHub Repo. Копирайте съдържанието на директорията 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 е изключен

@xset -dpms

@xset е празно

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

Сега Pi трябва да стартира тази уеб страница всеки път

Стъпка 7: Запояване на електрониката

Запояване на електрониката
Запояване на електрониката
Запояване на електрониката
Запояване на електрониката
Запояване на електрониката
Запояване на електрониката
Запояване на електрониката
Запояване на електрониката

Вземете пробивната дъска и подредете компонентите си върху нея по структуриран начин. Няма да обсъждам оформлението на това как запоявах компонентите върху него, тъй като свърших доста лоша работа по него. Използвах отделни щифтове на платката, така че имах нужда само да свържа сензорите и модулите към десния щифт. Уверете се, че знаете кой щифт е за какво!

Някои съвети при запояване:

  • Използвайте изолирани проводници, когато пресичате по -големи разстояния. Последното нещо, което искате, е къси панталони във вашата верига
  • След запояване на компонент или проводник проверете неговата непрекъснатост с мултицет. Проверявайте също редовно за късо съединение.
  • Не използвайте твърде много или твърде малко спойка!
  • Ако не знаете как да запоявате, първо го практикувайте на друга дъска за прототипи. Урок за запояване можете да намерите тук.

Сега запоявайте проводниците достатъчно дълго към сензорите и поставете около тях свиваща се обвивка, за да сте сигурни, че всичко не е късо и чисто.

Когато приключите, проверете два пъти за къси или лоши връзки и проверете всяка връзка с електрическата схема дали тя е правилната. След като сте сигурни, че всичко е направено правилно, продължете и поставете пробивната платка на RPi, завъртете я здраво с помощта на 2,5 мм винтове и стойки. Свържете сензорите към десните щифтове и ги тествайте с помощта на уебсайта.

Стъпка 8: Захранване

За захранване на Raspberry Pi ще използваме 12V-5V usb адаптер. Този адаптер ще бъде свързан към батерията на мотоциклета. За да се уверим, че RPi се включва, когато ключът за запалване е включен, ще използваме реле. Релето ще затвори силовата верига на RPi, когато открие напрежение от задната светлина (задната светлина винаги се включва при включване на запалването).

За по-подробен урок по този въпрос, вижте тази страница: https://www.hondagrom.net/threads/2017-gromsf-msx125sf-wire-up-auxiliary-power-for-pcv-wb2-and-other-fuel -контролери.16921/

Стъпка 9: Жилища

Жилища
Жилища
Жилища
Жилища
Жилища
Жилища

Показване на жилища

За дисплея вземете твърда пластмасова кутия около размера на дисплея. Изрежете квадратна дупка в него, голяма колкото дисплея, и съответстващи отвори, за да завиете дисплея. Отпред трябва да пробиете още 2 отвора за RGB LED и LDR.

Монтирах тази кутия върху държач за смартфон с помощта на болт.

Температурен сензор

За поставяне на сензора за температура, 3D отпечатах манометър, който пасва на моя мотоциклет.

Малина Пи

Монтирайте самия малинов Pi на сигурно място вътре в мотоциклета, поставих го под един от калниците с помощта на някои велкро ленти. И го защити от елементите с помощта на корпус и малко пластмаса.

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

Монтирайте акселерометъра на сигурно място, за предпочитане върху самата рамка на мотоциклета.

Забележка:

Не е нужно да имате точно същото жилище като мен, вие сте свободни да го завършите както искате. Просто се уверете, че електронните компоненти са защитени от дъжд и прах.

Препоръчано: