Inhoudsopgave:

Raspberry Pi Motorcycle Dashboard - Ajarnpa
Raspberry Pi Motorcycle Dashboard - Ajarnpa

Video: Raspberry Pi Motorcycle Dashboard - Ajarnpa

Video: Raspberry Pi Motorcycle Dashboard - Ajarnpa
Video: Motorcycle DIY TFT Dashboard - Mounting 2024, Juli-
Anonim
Raspberry Pi-motordashboard
Raspberry Pi-motordashboard

Als student Multimedia & Communicatietechnologie in Howest Kortrijk moest ik mijn eigen IoT-project maken. Hiermee worden alle modules die in het eerste jaar zijn gevolgd samengebracht in één groot project. Omdat ik in mijn vrije tijd veel motorrijd, heb ik besloten om mijn verworven vaardigheden bij MCT te gebruiken om iets voor mijn motor te bouwen: een slim dashboard.

MotoDash is een door Raspberry Pi aangedreven dashboard dat is ontworpen voor fanatieke motorrijders en waarmee de rijder zijn prestaties kan volgen.

Wat zijn de kenmerken van dit dashboard?

  • Huidige kantelhoek bekijken
  • Huidige versnelling bekijken
  • Mogelijkheid om de olietemperatuur te controleren
  • Schakel automatisch over naar het donkere thema bij het rijden in het donker
  • Log gegevens van uw ritten en bekijk uw eigen statistieken

Benodigdheden

Belangrijkste rekeneenheid:

Raspberry Pi Dit is de hoofdcontroller van het systeem

Elektronica:

  • USB-oplader voor motorfiets 12V-5VHoofdvoeding voor de RPi
  • 4-pins gezekerd relais 12V Schakel om het stroomcircuit van de RPi. in/uit te schakelen
  • Breadboard met jumperdraden (optioneel)Voor testen en prototyping
  • Een set weerstanden

    Verschillende kleuren van 0,2 mm draad

  • Breakout Pi plus Dit is een prototyping board waar je al je componenten op kunt solderen. Het is gemaakt om direct op de Raspberry Pi te passen, dus de afmetingen van het project blijven tot een minimum beperkt.

Sensoren en modules:

  • Waterdichte DS18B20 1-draads temperatuursensorOlietemperatuursensor
  • 3-assige Gyro-versnellingsmeter MPU6050 Tilt/accel-sensor
  • Lichtafhankelijke weerstand (LDR)
  • MCP3008 - 8-kanaals 10-bit ADC met SPI-interface

    TFT SPI-scherm (of een ander lcd-scherm dat aan uw behoeften voldoet)

    RGB-LED

Behuizing:

  • Plastic doos
  • Raspberry pi-behuizing

Gereedschap:

  • Soldeerbout en soldeer
  • 2,5 mm schroeven en afstandhouders
  • Waterdichte kabelconnectoren
  • Superlijm

Stap 1: Prototyping

Prototyping
Prototyping
Prototyping
Prototyping

Voordat we alles permanent maken, stellen we het project samen op een breadboard. Deze stap kan worden overgeslagen als u er absoluut zeker van bent dat u geen fouten zult maken. Het elektrische / breadboard-schema is te vinden in de onderstaande PDF. Zet de schakeling precies in elkaar zoals beschreven. Zorg ervoor dat u alleen de 3.3V-pin gebruikt en niet de 5V-pin op de RPi. Controleer ook uw circuit voordat u de Raspberry Pi inschakelt. Zorg ervoor dat er geen korte broeken zijn!

Stap 2: De Raspberry Pi voorbereiden

De Raspberry Pi voorbereiden
De Raspberry Pi voorbereiden

Allereerst gaan we de Raspberry Pi instellen. De Raspberry Pi is een minicomputer die zijn eigen besturingssysteem kan draaien. Voor dit project is het verantwoordelijk voor het verwerken van sensordata, het hosten van de website, het runnen van de backend en database, …

1. Installeer aangepaste Raspbian-afbeelding

De meegeleverde afbeelding bevat al de softwarepakketten die nodig zijn om dit project een vliegende start te geven:

  • Apache voor de website frontend
  • MariaDB voor de database
  • PhpMyAdmin om de database te manipuleren
  • Aangepaste machtigingen om problemen te voorkomen

De aangepaste afbeelding kan hier worden gedownload.

Een tutorial voor het installeren van afbeeldingen is hier te vinden:

Nadat de afbeelding is geïnstalleerd, sluit u de Raspberry Pi met een ethernetkabel aan op uw pc. Nu kunt u een SSH-client gebruiken om er verbinding mee te maken op het IP-adres 169.254.10.1

Het is een goede gewoonte om direct een nieuw wachtwoord in te stellen met het commando passwd

2. Draadloze AP configureren

Wanneer het project is voltooid, willen we via wifi verbinding kunnen maken met de RPi, dus laten we er een draadloos toegangspunt van maken. Een tutorial hiervoor vind je hier.

Je hoeft deze tutorial alleen te volgen tot stap 7. Stap 8 is niet nodig omdat we geen internetverbinding hoeven te overbruggen, maar een standalone netwerk moeten creëren.

3. Interfaces inschakelen

Ga naar raspi-config

sudo raspi-config

Ga naar interface-opties en schakel 1-draads, SPI en I2C in en start de Pi. opnieuw op

3. Stuurprogramma's voor het display instellen

Het scherm initialiseren

Bewerk het bestand /etc/modules

sudo nano /etc/modules

Voeg de volgende 2 regels toe

spi-bcm2835fbtft_device

Bewerk nu /etc/modprobe.d/fbtft.conf

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

Voeg de volgende regel toe:

opties fbtft_device name=tm022hdh26 gpios=reset:25, dc:24, led:18 roteren=90 snelheid=80000000 fps=60

Start de Pi opnieuw op. Als u de achtergrondverlichting van het display ziet oplichten, is alles goed gegaan. Dit initialiseert het scherm elke keer dat de Pi opstart, maar het geeft nu alleen een zwart scherm weer. Om de inhoud van de Pi op het scherm te krijgen, moeten we de inhoud van het hoofdscherm naar het kleine LCD-scherm kopiëren. Hiervoor gebruiken we een dienst genaamd 'fbcp'.

Fbcp-service installeren

sudo apt-get install cmake

git kloon

cd rpi-fbcp

mkdir bouwen

cd bouwen/

cmake..

maken

sudo install fbcp /usr/local/bin/fbcp

Nu hebben we de service geïnstalleerd. Omdat we de Pi headless gebruiken, is er echter geen scherm beschikbaar om de inhoud van te kopiëren. Om de Pi te dwingen scherminhoud uit te voeren, bewerk je /boot/config.txt

sudo nano /boot/config.txt

Zoek en verwijder commentaar of voeg de volgende regels toe aan dit bestand:

hdmi_force_hotplug=1

hdmi_cvt=640 480 60 0 0 0 0

display_rotate=0

hdmi_group=2

hdmi_mode=87

Start de RPi opnieuw op en test de fbcp-service door fbcp in de console te typen. Nu zou u de inhoud van het scherm op het LCD-scherm moeten zien.

Fbc uitvoeren bij opstarten

Bewerk /etc/rc.local en voeg de volgende regel toe tussen het ip-adres en de exit-regel:

fbcp&

Nu moet het scherm elke keer dat de RPi opstart, worden ingeschakeld

Stap 3: Database

Database
Database

Om sensordata te loggen en op te slaan heb ik mijn eigen database ontworpen die 4 tabellen bevat. Het EER-diagram wordt weergegeven in de afbeelding hierboven.

1. Apparaten

Deze tabel bevat elke sensor. Het beschrijft de sensornaam, beschrijving en meeteenheid. Deze tafel heeft een een-op-veel-relatie met de tafelacties, omdat in mijn geval de accelerosensor verschillende taken kan uitvoeren.

2. Acties

Deze tabel slaat acties op voor verschillende sensoren. Een actie is altijd gekoppeld aan een bepaalde sensor. Bijvoorbeeld: de actie 'TEMP' is gekoppeld aan het apparaat dat temperatuur meet. Dit zou de 1-draads temperatuursensor zijn.

3. Geschiedenis

Deze tabel bevat alle sensorlogs. Elk logboek heeft een actie-ID, een waarde, een tijdstempel en een rideid

4. Ritten

Deze tafel slaat verschillende ritten op. Elke keer dat de gebruiker een nieuwe rit start, wordt er een nieuwe invoer in deze tabel gemaakt

Om deze database op je Raspberry Pi te krijgen, ga je naar mijn GitHub en kloon/download je de repository. Onder database vindt u 2.sql-bestanden. Voer deze uit in PhpMyAdmin of MySQL workbench. Nu zou de database op uw RPi moeten staan.

Stap 4: Backend

Als je dat nog niet hebt gedaan, ga dan naar mijn GitHub en kloon/download de repository. Onder de map Backend vindt u de volledige backend van het project.

De map bevat klassen voor het lezen van sensoren onder /helpers, bestanden om te communiceren met de database onder /repositories, en de hoofdtoepassing bevindt zich in de root onder de naam app.py.

Python-pakketten installeren

Voordat we iets proberen uit te voeren, moeten we eerst enkele pakketten voor python installeren. Ga naar de terminal van je RPi en typ de volgende opdrachten:

pip3 installeer mysql-connector-python

pip3 install flask-socketio

pip3 installeer flask-cors

pip3 installeren gevent

pip3 installeren gevent-websocket

BELANGRIJKE OPMERKING: als u uw Mariadb/Mysql-wachtwoord hebt gewijzigd, wijzigt u het wachtwoord in config.py!

Test de back-end

Voer app.py uit met behulp van de python3-interpreter (/usr/bin/python3). Zorg ervoor dat er geen fouten zijn.

De backend uitvoeren tijdens het opstarten

Bewerk motoDash_backend.service en verander YOURFILEPATH naar het pad waar de repository is opgeslagen.

Kopieer dit bestand nu naar /etc/systemd/system/

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

Nu start de backend automatisch elke keer dat de RPi opstart.

Stap 5: Frontend

Voorkant
Voorkant
Voorkant
Voorkant

Ga naar de GitHub Repo. Kopieer de inhoud van de Frontend-map naar /var/www/html.

Dit is alles wat u moet doen om de frontend te laten werken. Deze map bevat alle webpagina's, styling en scripts voor de webinterface. Het communiceert ook met de backend. Om te testen of alles werkt zoals het hoort, moet je ervoor zorgen dat je verbonden bent met je RPi en typ je het IP-adres van de RPi in een browser. U zou de startpagina van de webinterface moeten zien.

Let op: De website is responsive, dus je kunt hem zowel op mobiel als op desktop gebruiken

Stap 6: Het dashboard op het display weergeven

Het dashboard op het display weergeven
Het dashboard op het display weergeven

De frontend heeft zijn eigen verborgen webpagina die alleen wordt gebruikt voor het kleine scherm. We laten de Pi automatisch opstarten naar deze website in de modus Volledig scherm.

Zorg ervoor dat de RPi is ingesteld op desktop autologin in raspi-config onder opstartopties

sudo raspi-config

Ga nu naar de verborgen configuratiemap en maak daar een nieuw bestand aan

cd.config

sudo mkdir -p lxsession/LXDE-pi

sudo nano lxsession/LXDE-pi/autostart

Voeg de volgende regels toe aan dit bestand en sla op

@xscreensaver -no-splash

@xset is uitgeschakeld

@xset -dpms

@xset is noblank

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

Nu zou de Pi elke keer naar deze webpagina moeten opstarten

Stap 7: De elektronica solderen

De elektronica solderen
De elektronica solderen
De elektronica solderen
De elektronica solderen
De elektronica solderen
De elektronica solderen
De elektronica solderen
De elektronica solderen

Pak het breakout board en leg je componenten er gestructureerd op neer. Ik zal niet ingaan op de lay-out van hoe ik de componenten erop heb gesoldeerd, omdat ik het behoorlijk slecht heb gedaan. Ik heb aparte pin-headers op het bord gebruikt, zodat ik alleen de sensoren en modules op de juiste pin hoefde aan te sluiten. Zorg ervoor dat je weet welke pin waarvoor is!

Enkele tips tijdens het solderen:

  • Gebruik geïsoleerde draden bij het oversteken van grotere afstanden. Het laatste wat je wilt is kortsluiting in je circuit
  • Controleer na het solderen van een onderdeel of draad de continuïteit met een multimeter. Controleer ook regelmatig op kortsluiting.
  • Gebruik niet te veel of te weinig soldeer!
  • Als je niet weet hoe je moet solderen, oefen het dan eerst op een ander prototypebord. Een tutorial over solderen vind je hier.

Soldeer nu de draden lang genoeg aan de sensoren en doe er wat krimpfolie omheen om er zeker van te zijn dat alles niet kortgesloten en schoon is.

Als je klaar bent, controleer dan nogmaals op kortsluiting of slechte verbindingen en controleer elke verbinding met het elektrische schema of het de juiste verbinding is. Als je er zeker van bent dat alles correct is gedaan, ga je gang en plaats je het breakout-bord op de RPi, en schroef je het vast met een paar 2,5 mm schroeven en afstandhouders. Sluit de sensoren aan op de juiste pinnen en test ze allemaal met behulp van de website.

Stap 8: Voeding

Om de Raspberry Pi van stroom te voorzien gaan we een 12V-5V usb-adapter gebruiken. Deze adapter wordt aangesloten op de motoraccu. Om ervoor te zorgen dat de RPi opstart wanneer het contact wordt aangezet, gaan we een relais gebruiken. Het relais sluit het stroomcircuit van de RPi wanneer het een spanning van het achterlicht detecteert (het achterlicht gaat altijd aan wanneer het contact wordt aangezet).

Bekijk deze pagina voor een meer gedetailleerde tutorial hierover: https://www.hondagrom.net/threads/2017-gromsf-msx125sf-wire-up-auxiliary-power-for-pcv-wb2-and-other-fuel -controllers.16921/

Stap 9: Huisvesting

huisvesting
huisvesting
huisvesting
huisvesting
huisvesting
huisvesting

Behuizing weergeven

Pak voor het display een harde plastic doos van ongeveer de grootte van het display. Snijd er een vierkant gat in zo groot als het display, en bijpassende gaten om het display in te schroeven. Aan de voorkant moet je nog 2 gaten boren voor de RGB-led en de LDR.

Ik heb deze doos met een bout op een smartphonehouder gemonteerd.

Temperatuursensor

Voor het huisvesten van de temperatuursensor heb ik een oliemeter 3D geprint die op mijn motor past.

Raspberry Pi

Monteer de Raspberry Pi zelf op een veilige plek in de motor, ik heb hem met wat klittenband onder een van de spatborden geplaatst. En beschermde het tegen de elementen met behulp van een behuizing en wat plastic.

Versnellingsmeter

Monteer de versnellingsmeter op een veilige plaats, bij voorkeur op het motorfietsframe zelf.

Opmerking:

Je hoeft niet exact dezelfde behuizing te hebben als ik, je bent vrij om het af te werken zoals je wilt. Zorg ervoor dat de elektronische componenten beschermd zijn tegen regen en stof.

Aanbevolen: