Sommario:

Cruscotto moto Raspberry Pi: 9 passaggi (con immagini)
Cruscotto moto Raspberry Pi: 9 passaggi (con immagini)

Video: Cruscotto moto Raspberry Pi: 9 passaggi (con immagini)

Video: Cruscotto moto Raspberry Pi: 9 passaggi (con immagini)
Video: Raspberry in barca OpenPlotter controllo volt batterie con Telegram - Video 3 (2021) 2024, Novembre
Anonim
Cruscotto moto Raspberry Pi
Cruscotto moto Raspberry Pi

Come studente di tecnologia multimediale e di comunicazione a Howest Kortrijk, ho dovuto realizzare il mio progetto IoT. Ciò combinerebbe tutti i moduli seguiti nel primo anno in un unico grande progetto. Poiché guido molto la mia moto nel mio tempo libero, ho deciso di utilizzare le mie competenze acquisite in MCT per costruire qualcosa per la mia moto: un cruscotto intelligente.

MotoDash è un cruscotto alimentato da Raspberry Pi progettato per motociclisti fanatici che offre al pilota la possibilità di monitorare le proprie prestazioni.

Quali sono le caratteristiche di questa dashboard?

  • Visualizzazione dell'angolo di inclinazione attuale
  • Visualizzazione dell'accelerazione attuale
  • Possibilità di monitorare la temperatura dell'olio
  • Passa automaticamente al tema scuro quando guidi al buio
  • Registra i dati delle tue corse e visualizza le tue statistiche

Forniture

Unità di calcolo principale:

Raspberry Pi Questo è il controller principale del sistema

Elettronica:

  • Caricabatterie USB per moto 12V-5VAlimentazione principale per RPi
  • Relè con fusibile a 4 pin 12VInterruttore per accendere/spegnere il circuito di alimentazione dell'RPi
  • Breadboard con ponticelli (opzionale)Per test e prototipazione
  • Un set di resistori

    Diversi colori di filo da 0,2 mm

  • Breakout Pi plusQuesta è una scheda di prototipazione in cui puoi saldare tutti i tuoi componenti. È fatto per adattarsi direttamente sopra il Raspberry Pi, quindi le dimensioni del progetto rimangono al minimo.

Sensori e moduli:

  • Sensore di temperatura a 1 filo DS18B20 impermeabileSensore di temperatura dell'olio
  • Accelerometro giroscopico a 3 assi MPU6050Sensore di inclinazione/accelerazione
  • Resistenza dipendente dalla luce (LDR)
  • MCP3008 - ADC a 10 bit a 8 canali con interfaccia SPI

    Display TFT SPI (o qualsiasi altro display LCD adatto alle tue esigenze)

    LED RGB

Involucro:

  • Scatola di plastica
  • Custodia Raspberry pi

Utensili:

  • Saldatore e saldatore
  • Viti e distanziali da 2,5 mm
  • Connettori per cavi impermeabili
  • Super colla

Passaggio 1: prototipazione

prototipazione
prototipazione
prototipazione
prototipazione

Prima di rendere tutto permanente, metteremo insieme il progetto su una breadboard. Questo passaggio può essere saltato se sei assolutamente certo di non commettere errori. Lo schema elettrico/breadboard è disponibile nel PDF sottostante. Metti insieme il circuito esattamente come descritto. Assicurati di utilizzare solo il pin da 3,3 V e non il pin da 5 V sull'RPi. Inoltre, prima di accendere il Raspberry Pi, ricontrolla il tuo circuito. Assicurati che non ci siano pantaloncini!

Passaggio 2: preparazione del Raspberry Pi

Preparare il Raspberry Pi
Preparare il Raspberry Pi

Prima di tutto, configureremo il Raspberry Pi. Il Raspberry Pi è un mini computer in grado di eseguire il proprio sistema operativo. Per questo progetto, è responsabile dell'elaborazione dei dati dei sensori, dell'hosting del sito Web, dell'esecuzione del backend e del database, …

1. Installa un'immagine Raspbian personalizzata

L'immagine fornita contiene già i pacchetti software necessari per avviare questo progetto:

  • Apache per il frontend del sito
  • MariaDB per il database
  • PhpMyAdmin per manipolare il database
  • Permessi personalizzati per evitare problemi

L'immagine personalizzata può essere scaricata da qui.

Un tutorial per l'installazione delle immagini è disponibile qui:

Una volta installata l'immagine, collega il Raspberry Pi al tuo PC con un cavo ethernet. Ora puoi utilizzare un client SSH per connetterti all'indirizzo IP 169.254.10.1

È buona norma impostare subito una nuova password utilizzando il comando passwd

2. Configurazione dell'AP wireless

Quando il progetto è finito, vogliamo essere in grado di connetterci all'RPi tramite Wi-Fi, quindi trasformiamolo in un AP wireless. Un tutorial per questo può essere trovato qui.

Devi solo seguire questo tutorial fino al passaggio 7. Il passaggio 8 non è richiesto poiché non è necessario collegare una connessione Internet, ma creare una rete autonoma.

3. Abilitazione delle interfacce

Entra in raspi-config

sudo raspi-config

Vai alle opzioni di interfaccia e abilita 1-wire, SPI e I2C e riavvia il Pi

3. Configurazione dei driver per il display

Inizializzazione del display

Modifica il file /etc/modules

sudo nano /etc/modules

Aggiungi le seguenti 2 righe

spi-bcm2835fbtft_device

Ora modifica /etc/modprobe.d/fbtft.conf

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

Aggiungi la seguente riga

opzioni fbtft_device name=tm022hdh26 gpios=reset:25, dc:24, led:18 ruotare=90 velocità=80000000 fps=60

Riavvia il Pi. Se vedi accendersi la retroilluminazione del display, tutto è andato bene. Questo inizializzerà il display ogni volta che il Pi si avvia, tuttavia ora visualizzerà solo una schermata nera. Per ottenere il contenuto del Pi sul display, dobbiamo copiare il contenuto della schermata principale sul piccolo LCD. Useremo un servizio chiamato 'fbcp' per questo.

Installazione del servizio fbcp

sudo apt-get install cmake

git clone

cd rpi-fbcp

build mkdir

creazione cd/

cmq..

fare

sudo install fbcp /usr/local/bin/fbcp

Ora abbiamo installato il servizio. Tuttavia, poiché stiamo utilizzando il Pi senza testa, non è disponibile alcuna schermata da cui copiare i contenuti. Per forzare il Pi a visualizzare il contenuto dello schermo, modifica /boot/config.txt

sudo nano /boot/config.txt

Trova e decommenta o aggiungi le seguenti righe a questo file:

hdmi_force_hotplug=1

hdmi_cvt=640 480 60 0 0 0 0

display_rotate=0

hdmi_group=2

hdmi_mode=87

Riavvia l'RPi e prova il servizio fbcp digitando fbcp nella console. Ora dovresti vedere il contenuto dello schermo sul display LCD.

Esecuzione di fbcp all'avvio

Modifica /etc/rc.local e aggiungi la seguente riga tra l'indirizzo IP e la riga di uscita

fbcp&

Ora il display dovrebbe accendersi ogni volta che l'RPi si avvia

Passaggio 3: banca dati

Banca dati
Banca dati

Per registrare e memorizzare i dati dei sensori ho progettato il mio database che contiene 4 tabelle. Il diagramma EER è mostrato nell'immagine sopra.

1. Dispositivi

Questa tabella contiene tutti i sensori. Descrive il nome del sensore, la descrizione e l'unità di misura. Questa tabella ha una relazione uno-a-molti con le azioni della tabella, poiché nel mio caso il sensore accelero può svolgere diverse attività.

2. Azioni

Questa tabella memorizza le azioni per diversi sensori. Un'azione è sempre collegata a un particolare sensore. Ad esempio: l'azione 'TEMP' è legata al dispositivo che misura la temperatura. Questo sarebbe il sensore di temperatura a 1 filo.

3. Storia

Questa tabella contiene tutti i log dei sensori. Ogni registro ha un ID azione, un valore, un timestamp e un rideid

4. Giostre

Questa tabella memorizza diverse giostre. Ogni volta che l'utente inizia una nuova corsa, viene effettuata una nuova voce in questa tabella

Per ottenere questo database sul tuo Raspberry Pi, vai al mio GitHub e clona/scarica il repository. Sotto il database troverai 2 file.sql. Esegui questi in PhpMyAdmin o MySQL workbench. Ora il database dovrebbe essere sul tuo RPi.

Passaggio 4: backend

Se non l'hai già fatto, vai al mio GitHub e clona/scarica il repository. Nella cartella Backend troverai il backend completo del progetto.

La cartella contiene le classi per la lettura dei sensori in /helpers, i file per comunicare con il database in /repositories e l'applicazione principale si trova nella radice con il nome app.py.

Installazione dei pacchetti Python

Prima di provare a eseguire qualsiasi cosa, dobbiamo prima installare alcuni pacchetti per Python. Entra nel terminale del tuo RPi e digita i seguenti comandi:

pip3 installa mysql-connector-python

pip3 install flask-socketio

pip3 install flask-cors

pip3 installa gevent

pip3 installa gevent-websocket

NOTA IMPORTANTE: se hai cambiato la tua password Mariadb/Mysql, cambia la password in config.py!

Prova il backend

Esegui app.py usando l'interprete python3 (/usr/bin/python3). Assicurati che non ci siano errori.

Esecuzione del backend all'avvio

Modifica motoDash_backend.service e cambia YOURFILEPATH nel percorso in cui è salvato il repository.

Ora copia questo file in /etc/systemd/system/

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

Ora il backend si avvierà automaticamente ogni volta che RPi si avvia.

Passaggio 5: frontend

Fine frontale
Fine frontale
Fine frontale
Fine frontale

Entra nel repository GitHub. Copia il contenuto della directory Frontend in /var/www/html.

Questo è tutto ciò che dovresti fare per far funzionare il frontend. Questa cartella contiene tutte le pagine web, gli stili e gli script per l'interfaccia web. Comunica anche con il backend. Per verificare se tutto funziona come dovrebbe, assicurati di essere connesso al tuo RPi e digita l'indirizzo IP di RPi in un browser. Dovresti vedere la homepage dell'interfaccia web.

Nota: il sito Web è reattivo, quindi puoi usarlo su dispositivi mobili e desktop

Passaggio 6: visualizzazione del dashboard sul display

Visualizzazione del dashboard sul display
Visualizzazione del dashboard sul display

Il frontend ha la sua pagina web nascosta utilizzata solo per il piccolo display. Faremo in modo che il Pi si avvii automaticamente su questo sito Web in modalità a schermo intero.

Assicurati che RPi sia impostato su desktop autologin in raspi-config sotto le opzioni di avvio

sudo raspi-config

Ora vai nella cartella di configurazione nascosta e crea un nuovo file lì dentro

cd.config

sudo mkdir -p lxsession/LXDE-pi

sudo nano lxsession/LXDE-pi/avvio automatico

Aggiungi le seguenti righe in questo file e salva

@xscreensaver -no-splash

@xset è spento

@xset -dpms

@xset s noblank

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

Ora il Pi dovrebbe avviarsi ogni volta su questa pagina web

Passaggio 7: saldatura dell'elettronica

Saldare l'elettronica
Saldare l'elettronica
Saldare l'elettronica
Saldare l'elettronica
Saldare l'elettronica
Saldare l'elettronica
Saldare l'elettronica
Saldare l'elettronica

Prendi la breakout board e disponi i tuoi componenti su di essa in modo strutturato. Non discuterò il layout di come ho saldato i componenti su di esso, poiché ho fatto un lavoro piuttosto scadente. Ho usato intestazioni pin separate sulla scheda in modo che dovessi solo collegare i sensori e i moduli al pin giusto. Assicurati di sapere quale pin è per cosa!

Alcuni suggerimenti durante la saldatura:

  • Utilizzare cavi isolati quando si attraversano distanze maggiori. L'ultima cosa che vuoi sono i cortocircuiti nel tuo circuito
  • Dopo aver saldato un componente o un filo, verificarne la continuità con un multimetro. Controllare regolarmente anche per cortocircuiti.
  • Non usare troppa o troppo poca saldatura!
  • Se non sai saldare, esercitati prima su un'altra scheda di prototipazione. Un tutorial sulla saldatura può essere trovato qui.

Ora saldare i fili abbastanza lunghi per i sensori e avvolgerli con un involucro termoretraibile per assicurarsi che tutto non sia cortocircuitato e pulito.

Al termine, ricontrolla eventuali cortocircuiti o collegamenti difettosi e controlla ogni collegamento con lo schema elettrico se è il collegamento corretto. Una volta che sei certo che tutto è stato fatto correttamente, vai avanti e metti la breakout board sull'RPi, avvitala saldamente con alcune viti da 2,5 mm e distanziali. Collega i sensori ai pin giusti e provali tutti usando il sito web.

Passaggio 8: alimentazione

Per alimentare il Raspberry Pi utilizzeremo un adattatore USB 12V-5V. Questo adattatore sarà collegato alla batteria della moto. Per assicurarci che l'RPi si accenda quando l'interruttore di accensione è acceso, utilizzeremo un relè. Il relè chiuderà il circuito di alimentazione RPi quando rileva una tensione dal fanale posteriore (il fanale posteriore si accende sempre quando si accende l'accensione).

Per un tutorial più dettagliato su questo, controlla questa pagina: https://www.hondagrom.net/threads/2017-gromsf-msx125sf-wire-up-auxiliary-power-for-pcv-wb2-and-other-fuel -controllori.16921/

Passaggio 9: alloggio

alloggiamento
alloggiamento
alloggiamento
alloggiamento
alloggiamento
alloggiamento

Alloggiamento display

Per il display, prenditi una scatola di plastica dura delle dimensioni del display. Taglia un foro quadrato grande quanto il display e abbina i fori per avvitare il display. Nella parte anteriore devi praticare altri 2 fori per il LED RGB e l'LDR.

Ho montato questa scatola sopra un supporto per smartphone usando un bullone.

Termometro

Per alloggiare il sensore di temperatura, ho stampato in 3D un indicatore dell'olio che si adatta alla mia moto.

Lampone Pi

Montare il Raspberry Pi stesso in un luogo sicuro all'interno della moto, l'ho posizionato sotto uno dei parafanghi usando delle cinghie in velcro. E lo ha protetto dagli elementi usando un alloggiamento e un po' di plastica.

Accelerometro

Montare l'accelerometro in un luogo sicuro, preferibilmente sul telaio della moto stessa.

Nota:

Non è necessario che tu abbia lo stesso identico alloggiamento che avevo io, sei libero di finirlo come preferisci. Assicurati solo che i componenti elettronici siano protetti da pioggia e polvere.

Consigliato: