Tools module

In onze opdeling staat de module portautomation-tools centraal, dit is een module die meerdere utility klassen bevat en ook een aantal algemene implementaties beheert. Deze module kan dus ook nooit opstarten als zelfstandig programma. Als voorbeeld voor een implementatie kan je de klasse nemen die verantwoordelijk is voor het verbinding maken met sentry.io, dit is een online fout opsporingsdashboard, en het doorgeven van alle fouten die tijdens de runtime opduiken. Ook is de module portautomation-tools verantwoordelijk voor het correct inladen van alle klassen en het schrijven van informatie, fouten en waarschuwingen naar de console.

Communications module

Zoals je kan zien heeft de module portautomation-communications ook een belangrijke functie in het totaalplaatje, deze module is verantwoordelijk voor het opstellen, beheren en modereren van de full-duplex communicatielijn tussen de server en alle verbonden voertuigen. De module is opgedeeld in een client en server versie. De server versie zal dan ook draaien in onze portautomation-server module en de client versie zal dan ook alleen maar draaien op de portautomation-client module.

Download of bekijk de flowcharts

Server module

Het hart van onze software ligt bij de portautomation-server module. Deze module is verantwoordelijk voor het besturen van het hele project. Zo bevat deze module alle algoritmes en functies die verantwoordelijk zijn om onder andere routes te berekenen, aanrijdingen op voorhand te detecteren, voertuigen te besturen, data over een voertuig op te halen, het opstarten van de webserver die verantwoordelijk is voor het online dashboard en de REST API. Voor dit project hebben we ervoor gekozen deze software te draaien op een cloud server. Op deze manier kunnen wij altijd ons voertuig gebruiken waar we maar willen zonder dat we iets nodig hebben.

Download of bekijk de flowcharts

Vehicle module

De module portautomation-client is het stukje software dat uiteindelijk gecompileerd zal worden als uitvoerbaar bestand en op onze Raspberry Pi van het voertuig uitgevoerd zal worden. Je kan deze module zien als een slave module, hij voert eigenlijk alleen maar de commando’s uit die hij van de server ontvangt via de opgestelde full-duplex communicatielijn. Zo zal hij bijvoorbeeld bij het ontvangen van een nieuwe route deze zonder enige andere verwerkingen uitvoeren. Ook kan de server een packet naar het voertuig sturen met de vraag naar informatie over zijn huidige staat. Bijvoorbeeld in welke richting het voertuig zich momenteel bevindt of op welke locatie hij zich bevindt.

Download of bekijk de flowcharts

Hardware module

In de module portautomation-hardware wordt alle hardware aangestuurd. Deze module bevat alle logica die te maken heeft met het communiceren naar componenten via het I2C protocol en die verworven informatie om te zetten naar digitale informatie.