AM 14: Mäher-Interface: Unterschied zwischen den Versionen
(48 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
'''''[[Kategorie:Projekte]] | '''''[[Kategorie:Projekte]] | ||
Dieser Wiki-Beitrag ist Teil eines Projektes, welches im Rahmen vom [[Fachpraktikum_Elektrotechnik_(WS_16/17)|Fachpraktikum Elektrotechnik]] im 5. Semester [http://www.hshl.de/mechatronik-bachelorstudiengang/ Mechatronik] absolviert wurde. Ziel des Beitrags ist es, eine nachhaltige Dokumentation zu schaffen, welche die Ergebnisse festhält und das weitere Arbeiten am Projekt ermöglicht. | Dieser Wiki-Beitrag ist Teil eines Projektes, welches im Rahmen vom [[Fachpraktikum_Elektrotechnik_(WS_16/17)|Fachpraktikum Elektrotechnik]] im 5. Semester [http://www.hshl.de/mechatronik-bachelorstudiengang/ Mechatronik] in Kooperation mit dem Masterstudiengang Business and Systems Engineering absolviert wurde. | ||
Das Projekt beinhaltet den Aufbau und die Inbetriebnahme eines voll funktionsfähigen autonomen Mähroboters, wobei der ArduMower zum Vorbild genommen wurde. | |||
Um so ein Großprojekt innerhalb eines Semesters bewältigen zu können, wurde es in viele kleinere Teilprojekte für Zwei- bis Drei-Personen-Gruppen aufgegliedert. | |||
Ein Teilprojekt ist das Mäher-Interface. Mit dem Mäher-Interface soll eine Mensch-Mäher-Schnittstelle geschaffen werden, die leicht zu handhaben ist. | |||
Ziel des Beitrags ist es, eine nachhaltige Dokumentation zu schaffen, welche die Ergebnisse festhält und das weitere Arbeiten am Projekt ermöglicht. | |||
Autoren: [[Benutzer:Matthias_Maas| Matthias Maas]], [[Benutzer:Alexander_Soschnikow| Alexander Soschnikow]] | Autoren: [[Benutzer:Matthias_Maas| Matthias Maas]], [[Benutzer:Alexander_Soschnikow| Alexander Soschnikow]] | ||
Zeile 29: | Zeile 34: | ||
* Informatik: * | * Informatik: * | ||
= | = Projektdurchführung = | ||
Das | |||
== Projektplan == | |||
Das Teilprojekt Mäher-Interface gliedert sich in folgende Phasen: | |||
1. Phase : Sichten des Lastenheftes auf relevante Anforderungen | |||
2. Phase : Entwicklung einer Idee und Heraussuchen benötigter Bauteile | |||
3. Phase : Beschaffung der Bauteile durch die Hochschule | |||
4. Phase : Zusammenbau und Testen der Bauteile | |||
5. Phase : Entwicklung eines Software-Treibers zur Verwendung im ArduMower | |||
6. Phase : Integration und Test am ArduMower (Diese Phase musste entfallen, da bis jetzt kein funktionsfähiger ArduMower vorhanden ist.) | |||
== Verwendete Bauteile == | == Verwendete Bauteile == | ||
Um alle Anforderungen bestmöglichst in einem System zu vereinen, wurden folgende Bauteile ausgesucht: | |||
Keyfob 4-Button RF Remote Control | === Keyfob 4-Button RF Remote Control=== | ||
http://www.exp-tech.de/keyfob-4-button-rf-remote-control-315mhz | |||
Dieses Bauteil stellt eine einfache Fernbedienung mit vier Tastern dar. | |||
Bei dem Drücken eines Tasters wird ein entsprechendes Signal über eine 315 MHz Funkverbindung ausgesendet. | |||
Jeder Tastendruck wird dabei optisch durch das Aufleuchten einer roten LED an der Fernbedienung angezeigt. | |||
Link : http://www.exp-tech.de/keyfob-4-button-rf-remote-control-315mhz | |||
=== Simple RF T4 Receiver === | |||
Dieses Bauteil ist eine zur Fernbedienung gehörende Platine, die das Funksignal empfängt. Die Platine wird über sieben Pins angesteuert. Zwei Pins sind zur Spannungsversorgung, wobei die Platine mit 5 - 10 V auskommt. Vier Pins versorgen den ArduMower mit digitalen Signalen, die entwerder 0 V oder 5 V annehmen können (D0, D1, D2 und D3). Der letzte Pin (VT) kann als Interruptquelle am ArduMower verwendet werden, da sein Signal jedes mal eine steigende Flanke erzeugt, wenn sich einer der Datensignale ändert. | |||
Von der Platine gibt es drei Abwandlungen. Die Version "Momentary" setzt den entsprechenden Pin nur auf ein hohes Spannungsniveau, solange der zugehörige Taster gedrückt ist. Bei der Version "Selector" kann immer nur eins der vier Datensignale auf einem hohen Spannungsniveau sein und bei der Version "Toggle", für die sich das Team Mäher-Interface entschieden hat, werden entsprechende Signale durch Tastenbetätigung hin- und hergeschaltet. So wird eine Zustandsspeicherung auf der Platine möglich. | |||
Link : http://www.exp-tech.de/simple-rf-t4-receiver-315mhz-toggle-type | |||
= Ergebnis = | = Ergebnis = | ||
== Hardware Aufbau == | |||
Um die Funk-Platine mit der Hauptplatine des ArduMowers zu verbinden, müssen lediglich zwei Kabel, die im Rahmen des Praktikums selbst gelötet wurden, angeschlossen werden. Ein zweiadriges Kabel (rot,schwarz) verbindet die Spannungsversorgungspins der Funk-Platine mit 5 V und GND von der Hauptplatine des ArduMowers. Ein zweites, vieradriges Datenkabel verbindet die Datenausgänge der Funk-Platine mit vier beliebigen Pins der Hauptplatine. Einzige Voraussetzung ist hierbei, dass die verwendeten Pins als digitale Eingänge eingestellbar sind und nebeneinander liegen müssen. | |||
[[Datei:Hardwareaufbau des Mäher-Interface.png|Verbindung zwischen der Funk-Platine und der Hauptplatine des ArduMowers]] | |||
Um mit den angeschafften Bauteilen möglichst viele Funktionen realisieren zu können, wurden die ersten drei Taster der Fernbedienung (A,B und C) dazu angedacht, um einen Befehl vorzuwählen. Nachdem ein Befehl eingestellt wurde, wird dieser mit dem Taster D bestätigt. Dadurch ist es möglich, mit vier Tastern 2^3 = 8 Befehle einzugeben. Jeder Tastenkombination muss nur noch eine Mäher-Aktion zugeordnet werden. | |||
[[Datei:Eingabe eines Befehls.PNG|400px|Eingabeschema für das Mäher-Interface. Dabei wird jeder Tasterkombination eine Mäher-Aktion zugeordnet]] | |||
== Software-Treiber == | |||
Um eine möglichst einfache Integration in das Hauptprojekt zu gewährleisten, wurde die softwareseitige Logik in einem Modul, bestehend aus jeweils einer Source- und Header-Datei, gekapselt. Zur Benutzung dieses Moduls muss lediglich die Header-Datei im Hauptprojekt inkludiert werden. Danach kann die implementierte Funktion NaechsterFunkBefehl() innerhalb der ArduMower-Software aufgerufen werden, um den nächsten Befehl, der übertragen wurde, auszulesen. | |||
Die Funktion arbeitet wie folgt: | |||
Da die Speicherung eines gewissen Zustandes unumgänglich ist, wenn man die ganze Programmlogik in einer Funktion belassen möchte, werden zunächst statische Variablen angelegt und mit 0 initialisert. Diese Variablen behalten ihren Wert zwischen den einzelnen Funktionsaufrufen. Bei dem ersten Funktionsaufruf werden die Pins, an denen die Funk-Platine angeschlossen wurde, als digitale Eingänge konfiguriert und Pullup-Widerstände abgeschaltet. Anschließend wird ein Flag gesetzt, damit diese Aktion kein zweites Mal wiederholt wird. | |||
Danach wird der Wert des D-Tasters ausgelesen. Wenn sich dieser vom vorherigen Wert unterscheidet, wurde der D-Taster zwischenzeitlich betätigt (die Art der Funk-Platine ist "Toggle"). In diesem Fall werden die restlichen Pins ausgelesen und daraus der Befehl berechnet und zurückgegeben. Wenn der D-Taster seinen Wert nicht geändert hat, wurde noch kein vollständiger Befehl eingegeben. In diesem Fall gibt die Funktion "KEIN_BEFEHL" zurück. | |||
Gültige Befehle haben die Nummern 0-7. Zur Benutzung wurden in der Header-Datei dazu Makros angelegt, so kann durch die Konstante BEFEHL_0 auf den Befehl mit der Nummer 0 zugegriffen werden. Bei der Integration in das Hauptprojekt werden den Befehlen Aktionen des ArduMowers zugeordnet. Da 8 Befehle zur Verfügung stehen, können durch dieses Interface viele Mäh-Funktionen angestoßen werden. | |||
Der Programmablaufplan dazu sieht wie folgt aus: | |||
[[Datei:NaechsterFunkBefehl().png|400px|Programmablaufplan des Softwaretreibers]] | |||
= Zusammenfasung = | = Zusammenfasung = | ||
Im Rahmen des GET-Fachpraktikums wurde innerhalb des Teilprojektes Mäher-Interface ein Konzept zur Bedienung des ArduMowers erstellt und implementiert. | |||
Benötigte Bauteile wurden ausgesucht und an einer Arduino-Platine getestet. Dazu wurde ein spezielles Kabel gelötet. Zur einfachen Benutzung wurde ein Software-Treiber erstellt, mit dem eingegebene Befehle auf eine einfache Art und Weise im Programm ausgelesen werden können. | |||
Bei der Bearbeitung dieses Teilprojektes wurde systematisches Arbeiten im Team und das Zusammenarbeiten mit anderen Teams und der Projektleitung geübt, zum Beispiel durch das Einhalten eines vorgegebenen Zeitplans. Die Schwierigkeiten eines Großprojektes, wo viele Teams parallel an verschiedenen Aufgabenfeldern, die oft auch voneinander abhängen, arbeiten, haben die Erfahrung der Teammitglieder bereichert, sodass bewusst geworden ist, dass Kommunikation der Schlüssel zum Erfolg ist. | |||
== Ausblick == | == Ausblick == | ||
Da von Anfang an darauf geachtet wurde, dass dieses Teilprojekt möglichst einfach in den ArduMower zu integrieren ist, wird die Inbetriebname am ArduMower keine Probleme darstellen. | |||
= Unterlagen = | = Unterlagen = | ||
[[Medium:FunkInterface.h]] | |||
[[Medium:FunkInterface.c]] | |||
---- | ---- | ||
→ zurück zum Hauptartikel: [[Fachpraktikum_Elektrotechnik_(WS_16/17)|Fachpraktikum Elektrotechnik (WS 16/17)]] | → zurück zum Hauptartikel: [[Fachpraktikum_Elektrotechnik_(WS_16/17)|Fachpraktikum Elektrotechnik (WS 16/17)]] |
Aktuelle Version vom 14. Januar 2017, 14:11 Uhr
Dieser Wiki-Beitrag ist Teil eines Projektes, welches im Rahmen vom Fachpraktikum Elektrotechnik im 5. Semester Mechatronik in Kooperation mit dem Masterstudiengang Business and Systems Engineering absolviert wurde. Das Projekt beinhaltet den Aufbau und die Inbetriebnahme eines voll funktionsfähigen autonomen Mähroboters, wobei der ArduMower zum Vorbild genommen wurde. Um so ein Großprojekt innerhalb eines Semesters bewältigen zu können, wurde es in viele kleinere Teilprojekte für Zwei- bis Drei-Personen-Gruppen aufgegliedert. Ein Teilprojekt ist das Mäher-Interface. Mit dem Mäher-Interface soll eine Mensch-Mäher-Schnittstelle geschaffen werden, die leicht zu handhaben ist. Ziel des Beitrags ist es, eine nachhaltige Dokumentation zu schaffen, welche die Ergebnisse festhält und das weitere Arbeiten am Projekt ermöglicht.
Autoren: Matthias Maas, Alexander Soschnikow
Betreuer: Prof. Schneider
Aufgabe
Mäher-Interface zur manuellen Eingabe der Befehle
Erwartungen an die Projektlösung
- Einarbeitung in die bestehenden Ardumowers-Unterlagen
- Planung und Beschaffung der Bauteile gemäß Lastenheft
- Einbau und Inbetriebnahme des Interfaces
- Basisfunktionen
- Mähen
- Zurück zur Ladestation
- Begrenzungsdraht lernen
- Kartografierung neu beginnen
- Test der Funktion
- Erstellen Sie ein faszinierendes Video, welches die Funktion visualisiert.
- Test und wiss. Dokumentation
Schwierigkeitsgrad
- Mechanik: *
- Elektrotechnik: *
- Informatik: *
Projektdurchführung
Projektplan
Das Teilprojekt Mäher-Interface gliedert sich in folgende Phasen:
1. Phase : Sichten des Lastenheftes auf relevante Anforderungen
2. Phase : Entwicklung einer Idee und Heraussuchen benötigter Bauteile
3. Phase : Beschaffung der Bauteile durch die Hochschule
4. Phase : Zusammenbau und Testen der Bauteile
5. Phase : Entwicklung eines Software-Treibers zur Verwendung im ArduMower
6. Phase : Integration und Test am ArduMower (Diese Phase musste entfallen, da bis jetzt kein funktionsfähiger ArduMower vorhanden ist.)
Verwendete Bauteile
Um alle Anforderungen bestmöglichst in einem System zu vereinen, wurden folgende Bauteile ausgesucht:
Keyfob 4-Button RF Remote Control
Dieses Bauteil stellt eine einfache Fernbedienung mit vier Tastern dar. Bei dem Drücken eines Tasters wird ein entsprechendes Signal über eine 315 MHz Funkverbindung ausgesendet. Jeder Tastendruck wird dabei optisch durch das Aufleuchten einer roten LED an der Fernbedienung angezeigt.
Link : http://www.exp-tech.de/keyfob-4-button-rf-remote-control-315mhz
Simple RF T4 Receiver
Dieses Bauteil ist eine zur Fernbedienung gehörende Platine, die das Funksignal empfängt. Die Platine wird über sieben Pins angesteuert. Zwei Pins sind zur Spannungsversorgung, wobei die Platine mit 5 - 10 V auskommt. Vier Pins versorgen den ArduMower mit digitalen Signalen, die entwerder 0 V oder 5 V annehmen können (D0, D1, D2 und D3). Der letzte Pin (VT) kann als Interruptquelle am ArduMower verwendet werden, da sein Signal jedes mal eine steigende Flanke erzeugt, wenn sich einer der Datensignale ändert.
Von der Platine gibt es drei Abwandlungen. Die Version "Momentary" setzt den entsprechenden Pin nur auf ein hohes Spannungsniveau, solange der zugehörige Taster gedrückt ist. Bei der Version "Selector" kann immer nur eins der vier Datensignale auf einem hohen Spannungsniveau sein und bei der Version "Toggle", für die sich das Team Mäher-Interface entschieden hat, werden entsprechende Signale durch Tastenbetätigung hin- und hergeschaltet. So wird eine Zustandsspeicherung auf der Platine möglich.
Link : http://www.exp-tech.de/simple-rf-t4-receiver-315mhz-toggle-type
Ergebnis
Hardware Aufbau
Um die Funk-Platine mit der Hauptplatine des ArduMowers zu verbinden, müssen lediglich zwei Kabel, die im Rahmen des Praktikums selbst gelötet wurden, angeschlossen werden. Ein zweiadriges Kabel (rot,schwarz) verbindet die Spannungsversorgungspins der Funk-Platine mit 5 V und GND von der Hauptplatine des ArduMowers. Ein zweites, vieradriges Datenkabel verbindet die Datenausgänge der Funk-Platine mit vier beliebigen Pins der Hauptplatine. Einzige Voraussetzung ist hierbei, dass die verwendeten Pins als digitale Eingänge eingestellbar sind und nebeneinander liegen müssen.
Um mit den angeschafften Bauteilen möglichst viele Funktionen realisieren zu können, wurden die ersten drei Taster der Fernbedienung (A,B und C) dazu angedacht, um einen Befehl vorzuwählen. Nachdem ein Befehl eingestellt wurde, wird dieser mit dem Taster D bestätigt. Dadurch ist es möglich, mit vier Tastern 2^3 = 8 Befehle einzugeben. Jeder Tastenkombination muss nur noch eine Mäher-Aktion zugeordnet werden.
Software-Treiber
Um eine möglichst einfache Integration in das Hauptprojekt zu gewährleisten, wurde die softwareseitige Logik in einem Modul, bestehend aus jeweils einer Source- und Header-Datei, gekapselt. Zur Benutzung dieses Moduls muss lediglich die Header-Datei im Hauptprojekt inkludiert werden. Danach kann die implementierte Funktion NaechsterFunkBefehl() innerhalb der ArduMower-Software aufgerufen werden, um den nächsten Befehl, der übertragen wurde, auszulesen.
Die Funktion arbeitet wie folgt:
Da die Speicherung eines gewissen Zustandes unumgänglich ist, wenn man die ganze Programmlogik in einer Funktion belassen möchte, werden zunächst statische Variablen angelegt und mit 0 initialisert. Diese Variablen behalten ihren Wert zwischen den einzelnen Funktionsaufrufen. Bei dem ersten Funktionsaufruf werden die Pins, an denen die Funk-Platine angeschlossen wurde, als digitale Eingänge konfiguriert und Pullup-Widerstände abgeschaltet. Anschließend wird ein Flag gesetzt, damit diese Aktion kein zweites Mal wiederholt wird. Danach wird der Wert des D-Tasters ausgelesen. Wenn sich dieser vom vorherigen Wert unterscheidet, wurde der D-Taster zwischenzeitlich betätigt (die Art der Funk-Platine ist "Toggle"). In diesem Fall werden die restlichen Pins ausgelesen und daraus der Befehl berechnet und zurückgegeben. Wenn der D-Taster seinen Wert nicht geändert hat, wurde noch kein vollständiger Befehl eingegeben. In diesem Fall gibt die Funktion "KEIN_BEFEHL" zurück.
Gültige Befehle haben die Nummern 0-7. Zur Benutzung wurden in der Header-Datei dazu Makros angelegt, so kann durch die Konstante BEFEHL_0 auf den Befehl mit der Nummer 0 zugegriffen werden. Bei der Integration in das Hauptprojekt werden den Befehlen Aktionen des ArduMowers zugeordnet. Da 8 Befehle zur Verfügung stehen, können durch dieses Interface viele Mäh-Funktionen angestoßen werden.
Der Programmablaufplan dazu sieht wie folgt aus:
Zusammenfasung
Im Rahmen des GET-Fachpraktikums wurde innerhalb des Teilprojektes Mäher-Interface ein Konzept zur Bedienung des ArduMowers erstellt und implementiert. Benötigte Bauteile wurden ausgesucht und an einer Arduino-Platine getestet. Dazu wurde ein spezielles Kabel gelötet. Zur einfachen Benutzung wurde ein Software-Treiber erstellt, mit dem eingegebene Befehle auf eine einfache Art und Weise im Programm ausgelesen werden können.
Bei der Bearbeitung dieses Teilprojektes wurde systematisches Arbeiten im Team und das Zusammenarbeiten mit anderen Teams und der Projektleitung geübt, zum Beispiel durch das Einhalten eines vorgegebenen Zeitplans. Die Schwierigkeiten eines Großprojektes, wo viele Teams parallel an verschiedenen Aufgabenfeldern, die oft auch voneinander abhängen, arbeiten, haben die Erfahrung der Teammitglieder bereichert, sodass bewusst geworden ist, dass Kommunikation der Schlüssel zum Erfolg ist.
Ausblick
Da von Anfang an darauf geachtet wurde, dass dieses Teilprojekt möglichst einfach in den ArduMower zu integrieren ist, wird die Inbetriebname am ArduMower keine Probleme darstellen.
Unterlagen
→ zurück zum Hauptartikel: Fachpraktikum Elektrotechnik (WS 16/17)