Inhaltsverzeichnis:

Raspberry Pi Motorrad-Dashboard - Gunook
Raspberry Pi Motorrad-Dashboard - Gunook

Video: Raspberry Pi Motorrad-Dashboard - Gunook

Video: Raspberry Pi Motorrad-Dashboard - Gunook
Video: DIY 3d Printed Motorcycle Dashboard (Android Tablet with Battery Removed) Tenere 700 2024, November
Anonim
Raspberry Pi Motorrad-Dashboard
Raspberry Pi Motorrad-Dashboard

Als Student Multimedia & Kommunikationstechnologie in Howest Kortrijk musste ich mein eigenes IoT-Projekt machen. Damit würden alle im ersten Jahr befolgten Module zu einem großen Projekt zusammengefasst. Da ich in meiner Freizeit viel Motorrad fahre, habe ich mich entschlossen, meine bei MCT erworbenen Fähigkeiten einzusetzen, um etwas für mein Motorrad zu bauen: Ein smartes Armaturenbrett.

MotoDash ist ein Raspberry Pi-betriebenes Dashboard, das für fanatische Motorradfahrer entwickelt wurde und dem Fahrer die Möglichkeit gibt, seine Leistung zu verfolgen.

Was sind die Funktionen dieses Dashboards?

  • Anzeigen des aktuellen Neigungswinkels
  • Aktuelle Beschleunigung anzeigen
  • Möglichkeit, die Öltemperatur zu überwachen
  • Beim Fahren im Dunkeln automatisch zum dunklen Thema wechseln
  • Protokollieren Sie Daten Ihrer Fahrten und sehen Sie sich Ihre eigenen Statistiken an

Lieferungen

Hauptrechnereinheit:

Raspberry Pi Dies ist der Hauptcontroller des Systems

Elektronik:

  • USB-Ladegerät für Motorrad 12V-5VHauptstromversorgung für den RPi
  • 4-poliges abgesichertes Relais 12VSchalter zum Ein- und Ausschalten des Stromkreises des RPi
  • Steckbrett mit Überbrückungsdrähten (optional)Zum Testen und Prototyping
  • Ein Satz Widerstände

    Verschiedene Farben von 0,2 mm Draht

  • Breakout Pi plusDies ist ein Prototyping-Board, auf dem Sie alle Ihre Komponenten löten können. Es passt direkt auf den Raspberry Pi, sodass die Abmessungen des Projekts auf ein Minimum beschränkt bleiben.

Sensoren und Module:

  • Wasserdichter DS18B20 1-Wire TemperatursensorÖltemperatursensor
  • 3-Achsen-Gyro-Beschleunigungsmesser MPU6050Neigungs-/Beschleunigungssensor
  • Lichtabhängiger Widerstand (LDR)
  • MCP3008 - 8-Kanal 10-Bit-ADC mit SPI-Schnittstelle

    TFT-SPI-Display (oder jedes andere LCD-Display, das Ihren Anforderungen entspricht)

    RGB-LED

Gehäuse:

  • Kunststoff-Box
  • Raspberry Pi-Gehäuse

Werkzeuge:

  • Lötkolben und Lot
  • 2,5 mm Schrauben und Distanzstücke
  • Wasserdichte Kabelanschlüsse
  • Sekundenkleber

Schritt 1: Prototyping

Prototyp entwickeln
Prototyp entwickeln
Prototyp entwickeln
Prototyp entwickeln

Bevor wir alles dauerhaft machen, werden wir das Projekt auf einem Steckbrett zusammenstellen. Dieser Schritt kann übersprungen werden, wenn Sie absolut sicher sind, dass Sie keine Fehler machen. Das Elektro- / Steckbrett-Schema finden Sie im PDF unten. Bauen Sie die Schaltung genau wie beschrieben zusammen. Stellen Sie sicher, dass Sie nur den 3,3-V-Pin und nicht den 5-V-Pin des RPi verwenden. Auch bevor Sie den Raspberry Pi einschalten, überprüfen Sie Ihre Schaltung. Stellen Sie sicher, dass es keine Shorts gibt!

Schritt 2: Vorbereitung des Raspberry Pi

Vorbereitung des Raspberry Pi
Vorbereitung des Raspberry Pi

Als erstes richten wir den Raspberry Pi ein. Der Raspberry Pi ist ein Mini-Computer, der ein eigenes Betriebssystem ausführen kann. Für dieses Projekt ist es verantwortlich für die Verarbeitung von Sensordaten, das Hosten der Website, den Betrieb des Backends und der Datenbank, …

1. Installieren Sie ein benutzerdefiniertes Raspbian-Image

Das bereitgestellte Image enthält bereits die Softwarepakete, die zum Starten dieses Projekts erforderlich sind:

  • Apache für das Website-Frontend
  • MariaDB für die Datenbank
  • PhpMyAdmin, um die Datenbank zu manipulieren
  • Benutzerdefinierte Berechtigungen, um Probleme zu vermeiden

Das benutzerdefinierte Bild kann hier heruntergeladen werden.

Eine Anleitung zum Installieren von Images finden Sie hier:

Sobald das Image installiert ist, verbinden Sie den Raspberry Pi mit einem Ethernet-Kabel mit Ihrem PC. Jetzt können Sie sich über einen SSH-Client mit der IP-Adresse 169.254.10.1 verbinden

Es empfiehlt sich, mit dem Befehl passwd sofort ein neues Passwort zu setzen

2. WLAN-AP konfigurieren

Wenn das Projekt abgeschlossen ist, möchten wir uns über WLAN mit dem RPi verbinden können, also verwandeln wir es in einen drahtlosen AP. Eine Anleitung dazu finden Sie hier.

Sie müssen diesem Tutorial nur bis zu Schritt 7 folgen. Schritt 8 ist nicht erforderlich, da wir keine Internetverbindung überbrücken müssen, sondern ein eigenständiges Netzwerk erstellen.

3. Schnittstellen aktivieren

Gehe in die raspi-config

sudo raspi-config

Gehen Sie zu den Schnittstellenoptionen und aktivieren Sie 1-Wire, SPI und I2C und starten Sie den Pi. neu

3. Treiber für das Display einrichten

Anzeige initialisieren

Bearbeiten Sie die Datei /etc/modules

sudo nano /etc/modules

Fügen Sie die folgenden 2 Zeilen hinzu

spi-bcm2835fbtft_device

Bearbeiten Sie nun /etc/modprobe.d/fbtft.conf

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

Fügen Sie die folgende Zeile hinzu

Optionen fbtft_device name=tm022hdh26 gpios=reset:25, dc:24, led:18 rotieren=90 Geschwindigkeit=80000000 fps=60

Starten Sie den Pi neu. Wenn Sie sehen, dass die Hintergrundbeleuchtung des Displays aufleuchtet, ist alles gut gegangen. Dadurch wird die Anzeige jedes Mal initialisiert, wenn der Pi hochfährt, jedoch wird jetzt nur ein schwarzer Bildschirm angezeigt. Um den Inhalt des Pi auf das Display zu bekommen, müssen wir den Inhalt des Hauptbildschirms auf das kleine LCD kopieren. Dazu verwenden wir einen Dienst namens 'fbcp'.

fbcp-Dienst installieren

sudo apt-get install cmake

git-Klon

cd rpi-fbcp

mkdir-Build

CD-Build/

cmake..

machen

sudo install fbcp /usr/local/bin/fbcp

Jetzt haben wir den Dienst installiert. Da wir jedoch den Pi Headless verwenden, steht kein Bildschirm zum Kopieren von Inhalten zur Verfügung. Um den Pi zur Ausgabe von Bildschirminhalten zu zwingen, bearbeiten Sie /boot/config.txt

sudo nano /boot/config.txt

Suchen und auskommentieren oder folgende Zeilen zu dieser Datei hinzufügen:

hdmi_force_hotplug=1

hdmi_cvt=640 480 60 0 0 0 0

display_rotate=0

hdmi_group=2

hdmi_mode=87

Starten Sie das RPi neu und testen Sie den fbcp-Dienst, indem Sie fbcp in die Konsole eingeben. Jetzt sollten Sie den Inhalt des Bildschirms auf dem LCD sehen.

Ausführen von fbcp beim Start

Bearbeiten Sie /etc/rc.local und fügen Sie die folgende Zeile zwischen der IP-Adresse und der Exit-Zeile hinzu

fbcp&

Jetzt sollte sich das Display jedes Mal einschalten, wenn das RPi hochfährt

Schritt 3: Datenbank

Datenbank
Datenbank

Um Sensordaten zu protokollieren und zu speichern, habe ich meine eigene Datenbank entworfen, die 4 Tabellen enthält. Das EER-Diagramm ist im Bild oben gezeigt.

1. Geräte

Diese Tabelle enthält jeden Sensor. Es beschreibt den Sensornamen, die Beschreibung und die Maßeinheit. Diese Tabelle hat eine 1:n-Beziehung mit den Tabellenaktionen, da der Beschleunigungssensor in meinem Fall verschiedene Aufgaben ausführen kann.

2. Aktionen

In dieser Tabelle werden Aktionen für verschiedene Sensoren gespeichert. Eine Aktion ist immer mit einem bestimmten Sensor verknüpft. Beispiel: Die Aktion 'TEMP' ist mit dem Gerät verknüpft, das die Temperatur misst. Dies wäre der 1-Draht-Temperatursensor.

3. Geschichte

Diese Tabelle enthält alle Sensorprotokolle. Jedes Protokoll hat eine Aktions-ID, einen Wert, einen Zeitstempel und eine Fahrt-ID

4. Fahrten

Diese Tabelle speichert verschiedene Fahrten. Jedes Mal, wenn der Benutzer eine neue Fahrt beginnt, wird ein neuer Eintrag in dieser Tabelle erstellt

Um diese Datenbank auf Ihrem Raspberry Pi zu erhalten, gehen Sie zu meinem GitHub und klonen/laden Sie das Repository herunter. Unter Datenbank finden Sie 2.sql-Dateien. Führen Sie diese in PhpMyAdmin oder MySQL Workbench aus. Jetzt sollte sich die Datenbank auf Ihrem RPi befinden.

Schritt 4: Backend

Wenn Sie es noch nicht getan haben, gehen Sie zu meinem GitHub und klonen/laden Sie das Repository herunter. Unter dem Ordner Backend finden Sie das vollständige Backend für das Projekt.

Der Ordner enthält Klassen zum Auslesen von Sensoren unter /helpers, Dateien zur Kommunikation mit der Datenbank unter /repositories und die Hauptanwendung befindet sich im Root unter dem Namen app.py.

Python-Pakete installieren

Bevor wir versuchen, etwas auszuführen, müssen wir zuerst einige Pakete für Python installieren. Gehen Sie in das Terminal Ihres RPi und geben Sie die folgenden Befehle ein:

pip3 installiere mysql-connector-python

pip3 installflakon-socketio

pip3 install Flask-Cors

pip3 install gevent

pip3 install gevent-websocket

WICHTIGER HINWEIS: Wenn Sie Ihr Mariadb/Mysql-Passwort geändert haben, ändern Sie das Passwort in config.py!

Testen Sie das Backend

Führen Sie app.py mit dem Python3-Interpreter (/usr/bin/python3) aus. Stellen Sie sicher, dass keine Fehler vorliegen.

Ausführen des Backends beim Booten

Bearbeiten Sie motoDash_backend.service und ändern Sie YOURFILEPATH in den Pfad, in dem das Repository gespeichert ist.

Kopieren Sie nun diese Datei nach /etc/systemd/system/

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

Jetzt startet das Backend jedes Mal automatisch, wenn das RPi bootet.

Schritt 5: Frontend

Vorderes Ende
Vorderes Ende
Vorderes Ende
Vorderes Ende

Gehen Sie in das GitHub-Repository. Kopieren Sie den Inhalt des Frontend-Verzeichnisses nach /var/www/html.

Dies ist alles, was Sie tun sollten, damit das Frontend funktioniert. Dieser Ordner enthält alle Webseiten, Stylings und Skripte für das Webinterface. Es kommuniziert auch mit dem Backend. Um zu testen, ob alles wie gewünscht funktioniert, stellen Sie sicher, dass Sie mit Ihrem RPi verbunden sind, und geben Sie die IP-Adresse des RPi in einen Browser ein. Sie sollten die Startseite des Webinterface sehen.

Hinweis: Die Website ist responsive, sodass Sie sie sowohl auf Mobilgeräten als auch auf Desktops verwenden können

Schritt 6: Anzeige des Dashboards auf dem Display

Anzeige des Dashboards auf dem Display
Anzeige des Dashboards auf dem Display

Das Frontend hat eine eigene versteckte Webseite, die nur für das kleine Display verwendet wird. Wir werden den Pi automatisch im Vollbildmodus auf diese Website booten lassen.

Stellen Sie sicher, dass das RPi in raspi-config unter Boot-Optionen auf Desktop-Autologin eingestellt ist

sudo raspi-config

Gehen Sie nun in den versteckten Konfigurationsordner und erstellen Sie dort eine neue Datei

cd.config

sudo mkdir -p lxsession/LXDE-pi

sudo nano lxsession/LXDE-pi/autostart

Fügen Sie die folgenden Zeilen in diese Datei ein und speichern Sie

@xscreensaver -no-splash

@xset ist aus

@xset -dpms

@xset s noblank

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

Jetzt sollte der Pi jedes Mal auf diese Webseite booten

Schritt 7: Löten der Elektronik

Löten der Elektronik
Löten der Elektronik
Löten der Elektronik
Löten der Elektronik
Löten der Elektronik
Löten der Elektronik
Löten der Elektronik
Löten der Elektronik

Nehmen Sie das Breakout-Board und legen Sie Ihre Komponenten strukturiert darauf an. Ich werde nicht auf das Layout eingehen, wie ich die Komponenten darauf gelötet habe, da ich einen ziemlich schlechten Job gemacht habe. Ich habe separate Stiftleisten auf der Platine verwendet, so dass ich nur die Sensoren und Module an den richtigen Pin anschließen musste. Stellen Sie sicher, dass Sie wissen, welcher Pin für was ist!

Einige Tipps beim Löten:

  • Verwenden Sie isolierte Drähte, wenn Sie größere Entfernungen überqueren. Das Letzte, was Sie wollen, sind Kurzschlüsse in Ihrem Stromkreis
  • Überprüfen Sie nach dem Löten eines Bauteils oder Kabels dessen Durchgang mit einem Multimeter. Kontrollieren Sie auch regelmäßig auf Kurzschlüsse.
  • Verwenden Sie nicht zu viel oder zu wenig Lot!
  • Wenn Sie nicht wissen, wie man lötet, üben Sie es zuerst auf einem anderen Prototyping-Board. Eine Anleitung zum Löten finden Sie hier.

Löten Sie nun Drähte lang genug an die Sensoren und legen Sie etwas Schrumpffolie um sie, um sicherzustellen, dass nicht alles kurzgeschlossen und sauber ist.

Wenn Sie fertig sind, überprüfen Sie noch einmal auf Kurzschlüsse oder schlechte Verbindungen und überprüfen Sie jede Verbindung mit dem Elektroschema, ob es die richtige Verbindung ist. Sobald Sie sicher sind, dass alles richtig gemacht wurde, setzen Sie das Breakout-Board auf das RPi, schrauben Sie es mit einigen 2,5-mm-Schrauben und Abstandshaltern fest. Schließen Sie die Sensoren an die richtigen Pins an und testen Sie sie alle über die Website.

Schritt 8: Netzteil

Um den Raspberry Pi mit Strom zu versorgen, verwenden wir einen 12V-5V USB-Adapter. Dieser Adapter wird an die Motorradbatterie angeschlossen. Um sicherzustellen, dass das RPi beim Einschalten der Zündung hochfährt, verwenden wir ein Relais. Das Relais schließt den RPi-Stromkreis, wenn es eine Spannung vom Rücklicht erkennt (das Rücklicht schaltet sich immer ein, wenn die Zündung eingeschaltet wird).

Ein ausführlicheres Tutorial dazu finden Sie auf dieser Seite: https://www.hondagrom.net/threads/2017-gromsf-msx125sf-wire-up-auxiliary-power-for-pcv-wb2-and-other-fuel -Controller.16921/

Schritt 9: Gehäuse

Gehäuse
Gehäuse
Gehäuse
Gehäuse
Gehäuse
Gehäuse

Displaygehäuse

Für das Display schnappen Sie sich eine Hartplastikbox von etwa der Größe des Displays. Schneiden Sie ein quadratisches Loch in der Größe des Displays und passende Löcher zum Verschrauben des Displays. An der Vorderseite müssen Sie 2 weitere Löcher für die RGB-LED und den LDR bohren.

Ich habe diese Box mit einer Schraube auf einem Smartphone-Halter montiert.

Temperatursensor

Für die Unterbringung des Temperatursensors habe ich eine Ölstandsanzeige 3D gedruckt, die zu meinem Motorrad passt.

Himbeer-Pi

Montieren Sie den Raspberry Pi selbst an einem sicheren Ort im Motorrad, ich habe ihn mit einigen Klettbändern unter einen der Kotflügel gelegt. Und mit einem Gehäuse und etwas Plastik vor Witterungseinflüssen geschützt.

Beschleunigungsmesser

Montieren Sie den Beschleunigungsmesser an einem sicheren Ort, vorzugsweise am Motorradrahmen selbst.

Notiz:

Sie müssen nicht genau das gleiche Gehäuse wie ich haben, Sie können es nach Belieben fertigstellen. Achten Sie nur darauf, dass die elektronischen Komponenten vor Regen und Staub geschützt sind.

Empfohlen: