Projekt-Beschreibung
Die Grundidee des Projekts ist ein elektronisches Fahrtenbuch. Hierzu wird der RaspberryPi mit zusätzlicher Hardware im Auto platziert und sendet die gefahrene Strecke an einen Webserver. Der Fahrer identifiziert sich über eine RFID-Karte. So kann die Fahrt einer Person zugeordnet werden. In einem Webinterface können die Fahrten eingesehen werden. Start- und Ziel-Punkt der Fahrten werden mit einem Adressbuch verknüpft. So soll der Grund der Fahrt (Weg zu Arbeit, Weg zum Kunden, privat) sowie die angefahrenen Orte/Personen automatisch generiert werden. Mit diesen Informationen lässt sich anschließend je Fahrzeug ein Fahrtenbuch erstellen.
Architektur
Hardware
Im Zentrum steht der RaspberryPi. An diesen wird über die GPIO-Schnittstelle ein RFID-Sensor, das GSM- uns GPS-Modul sowie eine RGB-Led angeschlossen. Für die Stromversorgung wird das Bordnetz des KFZ verwendet, auf das mittels USB zugeriffen wird. Um das Senden der Daten im abgestellten KFZ zu ermöglichen, wird eine Puffer-Batterie per Relais zugeschaltet.
Stückliste
Nr. | Rubrik | Beschreibung | Lieferant | Artikelnummer | Anz. | Preis |
1 | Systemboard | Raspberry Pi 3 B | Reichelt | RASPBERRY PI 3 | 1 | 31,90 €* |
2a | Erweiterungsboard | Waveshare GSM GPRS GNSS Bluetooth HAT | Welectron | 402551 | 1 | 29,90 €* |
2b | Erweiterungsboard | SIM 808 GPRS/GSM Shield | az-delivery.de | 1 | 29,99 € | |
2c | Erweiterungsboard | mini type SIM808 module IPX SMA | aliExpress | 1 | $22,80* | |
3 | Device | ACS ACR122U A9 RFID / NFC Reader | Identible | ACR122UW | 1 | 33,00 €* |
3a | Erweiterungsboard | Joy-IT RFID Modul MFRC-522 | Reichelt | DEBO RFID RC522 | 1 | 9,70 €* |
3b | Erweiterungsboard | RPI EXPLO NFC WW – Raspberry Pi Shield – NFC-konform mit NFC-Karte | Reichelt | RPI EXPLO NFC WW | 1 | 22,95 €* |
4 | Erweiterungsboard | Joy-IT DEBO LED 8 RGB – LED, 8 mm, RGB | Reichelt | DEBO LED 8 RGB | 1 | 3,80 €* |
5 | DC-DC Spannungswandler 12V auf 5V 3A | Amazon | AM0021CL | 1 | 8,59 € | |
6 | Power Bank, Kinps 10000mAh Portable Externer Akku (Dual Port, Total 5V/3.5A) | Amazon | KS5-002 | 1 | 11,88 € | |
7 | 2 Kanal Relais Modul 5V | Amazon | RBS11615 | 1 | 2,45 €* |
* eventuell fallen zusätzliche Versandkosten an
Hardware-Skizze
Datenbankstruktur
Serverseitig werden die Adressen, Fahrten (directions), Fahrzeuge und Benutzer in einer Datenbank gespeichert. Zudem wird eine View über die Tabellen erzeugt, welche die Daten mit JOINs verbindet.
Folgend sind die SQL-Exporte der Tabellen-Strukturen dargestellt.
CREATE TABLE `adressen` (
`id` int(11) NOT NULL,
`name` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`typ` tinyint(1) NOT NULL,
`address` varchar(80) COLLATE utf8_unicode_ci NOT NULL,
`lat` double DEFAULT NULL,
`lng` double DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;CREATE TABLE `directions` (
`id` int(11) NOT NULL,
`direction` longtext COLLATE utf8_unicode_ci NOT NULL,
`starttime` datetime NOT NULL,
`user` int(4) NOT NULL,
`fahrzeug` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;CREATE TABLE `fahrzeuge` (
`id` int(11) NOT NULL,
`kennzeichen` char(9) COLLATE utf8_unicode_ci NOT NULL,
`modell` tinytext COLLATE utf8_unicode_ci NOT NULL,
`farbe` char(6) COLLATE utf8_unicode_ci NOT NULL,
`fuel` tinyint(1) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;CREATE TABLE `users` (
`id` int(11) NOT NULL,
`lname` varchar(50) COLLATE utf8_unicode_ci NOT NULL,
`fname` varchar(30) COLLATE utf8_unicode_ci NOT NULL,
`role` int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;CREATE ALGORITHM=UNDEFINED DEFINER=`user`@`%` SQL SECURITY DEFINER VIEW `getDirections` AS select `d`.`id` AS `id`,`d`.`direction` AS `direction`,`d`.`starttime` AS `starttime`,`d`.`fahrzeug` AS `fahrzeug`,`f`.`kennzeichen` AS `kennzeichen`,`d`.`user` AS `user`,`u`.`lname` AS `lname`,`u`.`fname` AS `fname` from ((`directions` `d` left join `fahrzeuge` `f` on((`d`.`fahrzeug` = `f`.`id`))) left join `users` `u` on((`d`.`user` = `u`.`id`))) ;
ALTER TABLE `adressen`
ADD PRIMARY KEY (`id`),
ADD KEY `id` (`id`);ALTER TABLE `directions`
ADD PRIMARY KEY (`id`),
ADD KEY `id` (`id`),
ADD KEY `id_2` (`id`);ALTER TABLE `fahrzeuge`
ADD PRIMARY KEY (`id`),
ADD UNIQUE KEY `id_2` (`id`),
ADD KEY `id` (`id`);ALTER TABLE `users`
ADD PRIMARY KEY (`id`),
ADD KEY `id` (`id`);ALTER TABLE `adressen`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `directions`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `fahrzeuge`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
ALTER TABLE `users`
MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
Das sieht ja schon sehr gut aus. 🙂 Habt ihr auch noch das Dokument mit der ausführlichen Projektbeschreibung für mich? 😉
Pingback:Fahrtenbuch (4): Web-Oberfläche – IoT/Embedded-Workshop 2018