Cuprins:

Tablou de bord pentru motociclete Raspberry Pi: 9 pași (cu imagini)
Tablou de bord pentru motociclete Raspberry Pi: 9 pași (cu imagini)

Video: Tablou de bord pentru motociclete Raspberry Pi: 9 pași (cu imagini)

Video: Tablou de bord pentru motociclete Raspberry Pi: 9 pași (cu imagini)
Video: BTT - Manta E3EZ - CB1 with EMMc install 2024, Decembrie
Anonim
Tablou de bord pentru motociclete Raspberry Pi
Tablou de bord pentru motociclete Raspberry Pi

Ca student la tehnologia multimedia și de comunicare în Howest Kortrijk, a trebuit să-mi fac propriul proiect IoT. Aceasta ar combina toate modulele urmate în primul an într-un proiect mare. Pentru că merg mult cu motocicleta în timpul liber, am decis să-mi folosesc abilitățile dobândite la MCT pentru a construi ceva pentru motocicleta mea: un tablou de bord inteligent.

MotoDash este un tablou de bord alimentat de Raspberry Pi, conceput pentru motocicliștii fanatici, care oferă călărețului posibilitatea de a-și urmări performanțele.

Care sunt caracteristicile acestui tablou de bord?

  • Vizualizarea unghiului actual de înclinare
  • Vizualizarea accelerației curente
  • Capacitatea de a monitoriza temperatura uleiului
  • Treceți automat la tema întunecată atunci când călătoriți pe întuneric
  • Înregistrați datele călătoriei dvs. și vizualizați propriile statistici

Provizii

Unitatea principală de calcul:

Raspberry Pi Acesta este controlerul principal al sistemului

Electronică:

  • Încărcător USB pentru motocicletă 12V-5V Alimentare principală pentru RPi
  • Releu fuzionat cu 4 pini 12V Comutați pentru a porni / opri circuitul de alimentare al RPi
  • Panou cu fire jumper (opțional) Pentru testare și prototipare
  • Un set de rezistențe

    Diferite culori de sârmă de 0,2 mm

  • Breakout Pi plus Aceasta este o placă de prototipare în care puteți lipi toate componentele. Este conceput pentru a se potrivi direct deasupra Raspberry Pi, astfel încât dimensiunile proiectului să rămână la minimum.

Senzori și module:

  • Senzor impermeabil DS18B20 cu 1 fir, senzor de temperatură a uleiului
  • 3 Axe Gyro Accelerometer MPU6050 Senzor de înclinare / accelere
  • Rezistor dependent de lumină (LDR)
  • MCP3008 - ADC pe 8 canale pe 10 biți cu interfață SPI

    Afișaj TFT SPI (sau orice alt ecran LCD care se potrivește nevoilor dvs.)

    LED RGB

Carcasă:

  • Cutie de plastic
  • Raspberry pi Case

Instrumente:

  • Fier de lipit și lipit
  • Șuruburi și distanțieri de 2,5 mm
  • Conectori impermeabili pentru cabluri
  • Super-lipici

Pasul 1: Prototipare

Prototipare
Prototipare
Prototipare
Prototipare

Înainte de a face totul permanent, vom pune împreună proiectul pe o placă de calcul. Acest pas poate fi omis dacă sunteți absolut sigur că nu veți face greșeli. Schema electrică / de panou poate fi găsită în PDF-ul de mai jos. Puneți circuitul împreună exact așa cum este descris. Asigurați-vă că utilizați doar pinul de 3,3V și nu pinul de 5V de pe RPi. De asemenea, înainte de a porni zmeura Pi verificați dublu circuitul. Asigurați-vă că nu există pantaloni scurți!

Pasul 2: Pregătirea Raspberry Pi

Pregătirea Raspberry Pi
Pregătirea Raspberry Pi

În primul rând, vom configura Raspberry Pi. Raspberry Pi este un mini computer capabil să ruleze propriul sistem de operare. Pentru acest proiect, este responsabil pentru procesarea sensordata, găzduirea site-ului web, rularea backend-ului și a bazei de date, …

1. Instalați Raspbian Image personalizat

Imaginea furnizată conține deja pachetele software necesare pentru a porni acest proiect:

  • Apache pentru frontend-ul site-ului web
  • MariaDB pentru baza de date
  • PhpMyAdmin pentru a manipula baza de date
  • Permisiuni personalizate pentru a evita problemele

Imaginea personalizată poate fi descărcată de aici.

Un tutorial pentru instalarea imaginilor poate fi găsit aici:

Odată ce imaginea este instalată, conectați Raspberry Pi la computer cu un cablu Ethernet. Acum puteți utiliza un client SSH pentru a vă conecta la adresa IP 169.254.10.1

Este o bună practică să setați imediat o nouă parolă folosind comanda passwd

2. Configurarea AP wireless

Când proiectul este terminat, dorim să ne putem conecta la RPi prin wifi, deci să-l transformăm într-un AP fără fir. Un tutorial pentru aceasta poate fi găsit aici.

Trebuie doar să urmați acest tutorial până la pasul 7. Pasul 8 nu este necesar, deoarece nu trebuie să punem o conexiune la internet, ci să creăm o rețea independentă.

3. Activarea interfețelor

Mergeți în raspi-config

sudo raspi-config

Accesați opțiunile de interfață și activați 1 fir, SPI și I2C și reporniți Pi

3. Configurarea driverelor pentru afișaj

Inițializarea afișajului

Editați fișierul / etc / modules

sudo nano / etc / modules

Adăugați următoarele 2 rânduri

spi-bcm2835fbtft_device

Acum editați /etc/modprobe.d/fbtft.conf

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

Adăugați următoarea linie

opțiuni fbtft_device name = tm022hdh26 gpios = reset: 25, dc: 24, led: 18 rotire = 90 viteză = 80000000 fps = 60

Reporniți Pi. Dacă vedeți că lumina de fundal a ecranului se aprinde, totul a decurs bine. Acest lucru va inițializa afișajul de fiecare dată când Pi pornește, însă va afișa doar un ecran negru acum. Pentru a afișa conținutul Pi pe afișaj, trebuie să copiem conținutul ecranului principal pe micul LCD. Pentru aceasta vom folosi un serviciu numit „fbcp”.

Instalarea serviciului fbcp

sudo apt-get install cmake

git clone

cd rpi-fbcp

mkdir build

cd build /

cmake..

face

sudo instalați fbcp / usr / local / bin / fbcp

Acum am instalat serviciul. Cu toate acestea, din moment ce folosim dispozitivul Pi fără cap, nu există un ecran disponibil pentru a copia conținutul. Pentru a forța Pi să afișeze conținutul ecranului, editați /boot/config.txt

sudo nano /boot/config.txt

Găsiți și decomentați sau adăugați următoarele linii în acest fișier:

hdmi_force_hotplug = 1

hdmi_cvt = 640 480 60 0 0 0 0

display_rotate = 0

hdmi_group = 2

hdmi_mode = 87

Reporniți RPi și testați serviciul fbcp tastând fbcp în consolă. Acum ar trebui să vedeți conținutul ecranului pe ecranul LCD.

Rularea fbcp la pornire

Editați /etc/rc.local și adăugați următoarea linie între adresa IP și linia de ieșire

fbcp &

Acum, afișajul ar trebui să pornească de fiecare dată când RPi pornește

Pasul 3: Baza de date

Bază de date
Bază de date

Pentru a înregistra și stoca sensordata, am creat propria mea bază de date care conține 4 tabele. Diagrama EER este prezentată în imaginea de mai sus.

1. Dispozitive

Acest tabel conține fiecare senzor. Acesta descrie numele senzorului, descrierea și unitatea de măsurare. Acest tabel are o relație unu-la-mulți cu acțiunile tabelului, deoarece în cazul meu, senzorul accelero poate îndeplini diferite sarcini.

2. Acțiuni

Acest tabel stochează acțiunile pentru senzori diferiți. O acțiune este întotdeauna legată de un anumit senzor. De exemplu: acțiunea „TEMP” este legată de dispozitivul care măsoară temperatura. Acesta ar fi senzorul de temperatură cu 1 fir.

3. Istorie

Acest tabel conține toate jurnalele senzorilor. Fiecare jurnal are un ID de acțiune, o valoare, un timestamp și un rideid

4. Plimbări

Acest tabel stochează diferite plimbări. De fiecare dată când utilizatorul începe o nouă călătorie, se face o nouă intrare în acest tabel

Pentru a obține această bază de date pe Raspberry Pi, mergeți la GitHub și clonați / descărcați depozitul. În baza de date veți găsi 2 fișiere.sql. Rulați-le în PhpMyAdmin sau MySQL workbench. Acum baza de date ar trebui să fie pe RPi.

Pasul 4: Backend

Dacă nu ați făcut-o deja, mergeți la GitHub și clonați / descărcați depozitul. Sub folderul Backend veți găsi backend-ul complet pentru proiect.

Dosarul conține clase pentru citirea senzorilor sub / ajutoare, fișiere pentru a comunica cu baza de date în / depozite, iar aplicația principală se află în rădăcină sub numele app.py.

Instalarea pachetelor Python

Înainte de a încerca să rulăm ceva, trebuie mai întâi să instalăm câteva pachete pentru python. Accesați terminalul RPi și tastați următoarele comenzi:

pip3 instalează mysql-connector-python

pip3 instalează flask-socketio

pip3 instalează flask-cors

pip3 instalează gevent

pip3 instalează gevent-websocket

NOTĂ IMPORTANTĂ: dacă v-ați schimbat parola Mariadb / Mysql, schimbați parola în config.py!

Testați backend-ul

Rulați app.py folosind interpretul python3 (/ usr / bin / python3). Asigurați-vă că nu există erori.

Rularea backend-ului la boot

Editați motoDash_backend.service și schimbați YOURFILEPATH pe calea în care este salvat depozitul.

Acum copiați acest fișier în / etc / systemd / system /

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

Acum backend-ul va porni automat de fiecare dată când RPi pornește.

Pasul 5: Frontend

În față
În față
În față
În față

Mergeți în GitHub Repo. Copiați conținutul directorului Frontend în / var / www / html.

Acesta este tot ce trebuie să faceți pentru ca frontendul să funcționeze. Acest folder conține toate paginile web, stilul și scripturile pentru interfața web. De asemenea, comunică cu backend-ul. Pentru a testa dacă totul funcționează așa cum ar trebui, asigurați-vă că sunteți conectat la RPi și introduceți adresa IP a RPi într-un browser. Ar trebui să vedeți pagina principală a interfeței web.

Notă: site-ul web este receptiv, deci îl puteți utiliza atât pe mobil, cât și pe desktop

Pasul 6: Afișarea tabloului de bord pe ecran

Afișarea tabloului de bord pe ecran
Afișarea tabloului de bord pe ecran

Frontend-ul are propria pagină web ascunsă utilizată doar pentru afișajul mic. Vom face boot-ul Pi automat pe acest site web în modul ecran complet.

Asigurați-vă că RPi este setat la desktop autologin în raspi-config sub opțiuni de boot

sudo raspi-config

Acum intrați în folderul de configurare ascuns și creați un nou fișier acolo

cd.config

sudo mkdir -p lxsession / LXDE-pi

sudo nano lxsession / LXDE-pi / autostart

Adăugați următoarele rânduri în acest fișier și salvați

@xscreensaver -no-splash

@xset s off

@xset -dpms

@xset s noblank

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

Acum, Pi ar trebui să pornească de fiecare dată pe această pagină web

Pasul 7: lipirea electronice

Lipirea electronice
Lipirea electronice
Lipirea electronice
Lipirea electronice
Lipirea electronice
Lipirea electronice
Lipirea electronice
Lipirea electronice

Luați placa de repartizare și așezați-vă componentele pe ea într-un mod structurat. Nu voi discuta despre modul în care am lipit componentele de pe el, deoarece am făcut o treabă destul de slabă pe el. Am folosit anteturi de pin separate pe tablă, astfel încât nu aveam nevoie decât să conectez senzorii și modulele la pinul drept. Asigurați-vă că știți care pin este pentru ce!

Câteva sfaturi în timpul lipirii:

  • Utilizați fire izolate atunci când traversați distanțe mai mari. Ultimul lucru pe care îl vrei este scurtcircuitele din circuitul tău
  • După lipirea unei componente sau a unui fir, verificați continuitatea acesteia cu un multimetru. De asemenea, verificați periodic dacă există scurtcircuite.
  • Nu folosiți prea mult sau prea puțin lipit!
  • Dacă nu știți cum să lipiți, practicați-l mai întâi pe o altă placă de prototipare. Un tutorial despre lipire poate fi găsit aici.

Acum, lipiți cablurile suficient de mult timp pentru senzori și puneți o înveliș care se micșorează în jurul lor, pentru a vă asigura că totul nu este scurtcircuitat și curat.

Când ați terminat, verificați de două ori scurte sau conexiuni defecte și verificați fiecare conexiune cu schema electrică dacă este conexiunea corectă. Odată ce sunteți sigur că totul este făcut corect, mergeți mai departe și puneți placa de rupere pe RPi, terminați-l cu niște șuruburi de 2,5 mm și standoff-uri.

Pasul 8: Alimentare

Pentru a alimenta Raspberry Pi, vom folosi un adaptor USB de 12V-5V. Acest adaptor va fi conectat la bateria motocicletei. Pentru a ne asigura că RPi se pornește când contactul este pornit, vom folosi un releu. Releul va închide circuitul de alimentare RPi atunci când detectează o tensiune din lumina din spate (lumina din spate se aprinde întotdeauna la pornirea contactului).

Pentru un tutorial mai detaliat despre acest lucru, consultați această pagină: https://www.hondagrom.net/threads/2017-gromsf-msx125sf-wire-up-auxiliary-power-for-pcv-wb2-and-other-fuel -controllers.16921 /

Pasul 9: Locuințe

Locuințe
Locuințe
Locuințe
Locuințe
Locuințe
Locuințe

Afișați carcasa

Pentru afișaj, apucați-vă o cutie de plastic dur de aproximativ dimensiunea afișajului. Tăiați o gaură pătrată în ea la fel de mare ca afișajul și găuri potrivite pentru a înșuruba afișajul. În față trebuie să faceți încă două găuri pentru LED-ul RGB și LDR.

Am montat această cutie deasupra unui suport pentru smartphone folosind un șurub.

Senzor de temperatura

Pentru adăpostirea senzorului de temperatură, am imprimat 3D un manometru care se potrivește motocicletei mele.

Raspberry Pi

Montați zmeura Pi în sine pe un loc sigur în interiorul motocicletei, am așezat-o sub una dintre aripi folosind niște curele de velcro. Și l-a protejat de elemente folosind o carcasă și niște plastic.

Accelerometru

Montați accelerometrul pe un loc sigur, de preferință pe cadrul motocicletei în sine.

Notă:

Nu trebuie să aveți exact aceeași carcasă ca și mine, sunteți liber să o terminați după cum doriți. Asigurați-vă că componentele electronice sunt protejate de ploaie și praf.

Recomandat: