Cuprins:
- Provizii
- Pasul 1: Prototipare
- Pasul 2: Pregătirea Raspberry Pi
- Pasul 3: Baza de date
- Pasul 4: Backend
- Pasul 5: Frontend
- Pasul 6: Afișarea tabloului de bord pe ecran
- Pasul 7: lipirea electronice
- Pasul 8: Alimentare
- Pasul 9: Locuințe
Video: Tablou de bord pentru motociclete Raspberry Pi: 9 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:42
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
-
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.
Un set de rezistențe
Diferite culori de sârmă de 0,2 mm
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
Î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
Î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
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
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
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
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
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:
Tablou de bord Bluetooth al bateriei Li-ion: 4 pași (cu imagini)
Tablou de bord cu baterie Li-ion Bluetooth: Introducere Proiectul se bazează pe instructabilele mele din ultimul an: Tablou de bord Bluetooth pentru tenis de masă Tabloul de bord este dedicat fanilor sportului amator și jucătorului de tenis de masă, dar nu se aplică doar tenisului de masă. Poate fi folosit pentru alte
Construiți un tablou de bord meteo folosind Dark Sky API: 5 pași (cu imagini)
Construiți un tablou de bord meteo folosind Dark Sky API: Dark Sky este specializat în prognoza și vizualizarea vremii. Cel mai tare aspect al Dark Sky este API-ul meteo pe care îl putem folosi pentru a prelua datele meteo de aproape oriunde în lume. Nu este doar vreme ploioasă sau însorită, ci temperat
Tablou de bord tenis de masă: 16 pași (cu imagini)
Tablou de bord pentru tenis de masă: Prea leneș pentru a ține evidența scorului dvs. de tenis de masă / Ping Pong? Sau poate că v-ați săturat să îl uitați mereu? Dacă da, este posibil să fiți interesat să construiți acest tablou de bord pentru tenis de masă digital. , jocuri, server și p
Guino: Tablou de bord pentru Arduino: 4 pași (cu imagini)
Guino: Tablou de bord pentru Arduino: Acest proiect face parte din experimente făcute în timp ce făceai un artist în reședință la Instructables. Celelalte proiecte le puteți vedea aici. Poate fi o sarcină dificilă depanarea și vizualizarea datelor în timp real pe placa Arduino. Sunteți de obicei blocați cu s
Tablou de bord și monitor al bateriei pentru biciclete electrice (EBike): 12 pași (cu imagini)
Tablou de bord și monitor al bateriei pentru biciclete electrice (EBike): Acest proiect este un circuit Arduino care monitorizează tensiunea și curentul bateriei cu un modul ACS 712. Măsurătorile sunt comunicate prin Bluetooth cu un modul HC-05 către un dispozitiv Android. Practic, reconectați conexiunea negativă dintre y