Bauen Sie Ihre eigene Android-Selbstfahr R

Foto von Dimitris Platis
In diesem Tutorial werde ich Sie durch die Schritte, die ergriffen wurden, ein Android autonomes Fahrzeug zu bauen. Die zugehörige Software, die in der Plattform läuft auf GitHub in den / Examples / AndroidCar Ordnern der AndroidCar Bibliothek. Bevor auf die Konstruktionsdetails fortfahren, lassen Sie mich auf die Argumentation dahinter einen kurzen Überblick geben.
In meinem Projekt, priorisiert ich die folgenden Überlegungen:
- Modularität: Die Fähigkeit, ein großes Problem in kleinere zu unterteilen. Um dies zu erreichen, wird das Fahrzeug in drei Kammern oder Stufen unterteilt.
- Minimale sichtbare Verkabelung: Je weniger Kabel, desto geringer ist die Wahrscheinlichkeit von Unfällen (Kurzschluss, unterbrochene Verbindungen usw.).
- Deployability: Durch einen modularen Aufbau der Annahme, die Fähigkeit, das Fahrzeug leicht zu implementieren erhöht.
- Wartbarkeit: Machen Sie das System einfach zu ändern, zu verbessern oder zu reparieren.

1/10-Skala R / C car
Wir verwenden einen R / C Car von einer Marke HSP Racing genannt. Alles, was mit ähnlicher Chassis sollte auch funktionieren.


Bluetooth-Modul (HC-05)
Dieses preiswerte Bluetooth-Modul ermöglicht es den Arduino Mega, um bequem mit dem Handy zu kommunizieren. Was auch immer über eine serielle Verbindung mit der Bluetooth-Modul gesendet wird drahtlos zu übertragen wird je nachdem, was Gerät derzeit mit dem Bluetooth-Modul verbunden ist. Auf der HC-05, gibt es auch einen Stift, ob zur Zeit eine aktive Verbindung gibt, die wir verwenden, um nur zu holen und zu übertragen Daten von dem Arduino, wenn das notwendig ist.
Elektronische Drehzahlregler
Der elektronische Drehzahlregler ist die Komponente, die Motoren entsprechend ein PWM-Signal treibt sie von der Arduino empfängt. Es ist mit einer 7,2 V Batterie angeschlossen.
Der Servomotor, der durch die Arduino über ein PWM-Signal gesteuert wird, bestimmt den Winkel der Vorderräder des Fahrzeugs. Es ist mit der Batterie verbunden und nicht der Arduino 5V Ausgang aus Sicherheitsgründen, da sie eine große Last von Strom ziehen können.

Ultraschall-Abstandssensoren (HC-SR04) (3)
Die Ultraschallsensoren berechnen Abstand durch einen Ultraschallwellenimpuls zu übertragen und die Messung, wie viel Zeit es zurück nahm zu, nachdem sie auf einem Objekt reflektiert. Jeder Sensor ist mit zwei gemeinsamen (digital) Arduino Stiften.

SHARP Infrarotsensoren (SHARP GP2D120) (3)
Die Infrarot-Sensoren arbeiten in einer ähnlichen Weise wie die Ultraschall diejenigen. In Abhängigkeit von der Entfernung des Objekts, dass sie gegenüberstehen, sie kehren die äquivalente Menge an Spannung. Jeder von ihnen ist mit einem Analog-Pin auf der Arduino. Beachten Sie, dass die spezifischen Sensoren zuverlässig Abstände zwischen 4 und 25 Zentimeter messen kann.


Α Komponente, die Rückmeldung über die Bewegung des Autos in dem dreidimensionalen Raum zur Verfügung stellt. Es besteht aus einem Mikrocontroller (ATmega328P) besteht, ein Beschleunigungssensor, ein Gyroskop und einen Magnetometer. Durch magnetische Störungen von den Motoren, sind die Messungen nicht sehr zuverlässig, aber das mit Filterung durch Software verbessert werden könnte. Es sind leider momentan nicht nutzen ihre Lesungen.
Das Gyroskop wird verwendet, um die Winkelverschiebung des Fahrzeugs oder in unserem Fall die Gier zu berechnen. Dies ist besonders hilfreich für das Parken könnte aber auch verwendet werden, um eine Karte des Pfades zu erstellen, die wir gereist sind.

Infrarot-Arrays (2)
Der Infrarot-Arrays ist besteht aus drei Infrarot-Sensoren jeweils das ein HIGH-Signal zurück, wenn sie eine weiße Fläche zu erkennen. Wir benutzen sie, um zu erkennen, wenn das Fahrzeug über die mittlere gestrichelte Linie Straße gefahren ist, um die Überholvorgang Leistung und Genauigkeit zu verbessern. Die vier Signale (zwei aus jedem Infrarot-Array) werden in ODER-Gattern kombiniert, und die zwei Ausgänge sind auf dem Arduino auf Interrupts angebracht.
R / C-Empfänger (optional, aber sehr nützlich)
Wir haben das Auto Standard-R / C-Receiver mit dem Arduino verbunden, um die Kontrolle über das Auto mit der R / C-Controller im Fall eines Notfalls zu behalten. Dies hat sich als besonders wertvoll, wenn es um die Prüfung der autonomen Funktionen des Autos, aus offensichtlichen Sicherheitsgründen kommt. Die R / C-Empfänger weist üblicherweise drei Kanäle. Ein Steuersignal, das definiert, ob die Fernsteuerung ein- oder ausgeschaltet ist, eine für die Motoren, und ein anderes für das Lenkrad. Zum Beispiel in unserem Fahrzeug immer dann, wenn die Fernbedienung eingeschaltet ist.
LEDs, ATtiny85, Widerstände, Transistoren (Optional)
Die obigen Komponenten werden für eine LED-Treiber-Platine benötigt. Es blinkt die entsprechenden LEDs, je nachdem, ob das Fahrzeug bewegt, drehen, oder gestoppt wird.

In dem obigen Schema können Sie sehen, wie die verschiedenen Verbindungen hergestellt werden. Noch wichtiger ist, habe ich deutlich gemacht, wie ich die verschiedenen Kompartimente sichtbar gemacht haben.

Ein anderer Weg, um die Sensorverdrahtung des autonomen Android Autos zu visualisieren.
Das Bluetooth-Modul und das 9DOF IMU könnte Mitglieder des Bodenfach betrachtet werden, da sie direkt an dem Chassis befestigt sind. Aber weil sie leicht zugänglich und nicht direkt unter der Mittelschicht sind, sind sie nicht mit den Komponenten des unteren Faches gruppieren.
Schließlich wird das am wenigsten zugängliche Fach (aus gutem Grunde), zusammengesetzt aus Komponenten, die auf dem Fahrzeugchassis montiert sind, wie beispielsweise die Batterie, die Motoren, die ESC, der Drehzahlgeber und Infrarot-Arrays. I entworfen absichtlich all diese Fächer, so dass es keine Verbindungen zwischen nicht benachbarten Schichten. Auf diese Weise ist die Schaltung einfacher zu modifizieren, zu reparieren und einsetzen.
Das untere Fach besteht aus Komponenten, die Sie kaum mit nach der Ersteinrichtung Geige müssen. Dazu gehören die DC-Motor, der ESC, um den Servomotor, der Drehzahlgeber, und die Infrarot-Arrays. Es ist auch eine gute Praxis, eine Ein / Aus-Schalter, der zwischen der Batterie und dem Rest der Komponenten hinzuzufügen.

Der Infrarot-Arrays ermöglicht es dem Fahrzeug zu erkennen, wenn es in der Mitte gestrichelte Straße Linie kreuzt, die Überholvorgang zu verbessern.

Der Drehzahlgeber seinen Zustand ändert, je nachdem ob der Infrarotstrahl aussendet, es zurück zu ihm reflektiert wird. Die schwarzen Flächen reflektieren nicht den Strahl zurück. Beachten Sie die Streifen aus schwarzem Klebeband auf der Innenseite des Rades.
Für das mittlere Fach positionierte I-Komponenten auf einer Kunststofffolie, die I geschnitten, um die Abmessungen des Fahrzeugs zu passen. Vier Löcher wurden in dem Blatt gebohrt, die Sie Kabel darunter passieren lässt. Das Arduino Mega, Bluetooth-Modul, R / C-Override-Empfänger, Anschlussklemmen, die ODER-Gatter, das Gyroskop und die 9DOF IMU sind verschraubt oder auf das Blatt geklebt, der sich auf der Oberseite des Chassis eingeschraubt ist. Glücklicherweise hatte das Fahrzeug zur Verfügung Schraubenschlitze auf dem Chassis, um die Dinge einfach zu machen.

Von rechts sind folgende Komponenten nach links zu sehen: Das Bluetooth-Modul, das Arduino Mega, das Gyroskop, das Anschlussterminal, das ODER-Gatter und die 9DOF IMU. Ein scharfes Auge könnte auch ein Barebone ATmega328P Mikrocontroller-Board vor Ort, aber es ist für eine experimentelle Funktion, die noch nicht vollständig integriert ist.

Die Bluetooth-Modul HC-05

Der Verbindungsanschluss. Umfasst ein 5 V-Spannungsregler, Erdungsstifte sowie einen Kommunikationsbus zum oberen Kompartiment. Verbindungen zwischen Komponenten der gleichen Kammer durchgeführt werden, nicht-transparent, wenn möglich, die Kabel unter der Kunststofffolie verläuft.

Die ODER-Gatter, die Eingaben von den Infrarot-Arrays und deren Ausgang geht zum Arduino empfangen.

Der Kommunikationsbus zwischen dem mittleren und dem oberen Fach. Zwei Leitungen für Strom und Masse. Der Rest ist für Sensordaten und die seriellen Verbindung mit der LED-Treiber-Platine.
Das obere Fach ist an der Innenseite des R / C Rohkarosserie Fahrzeugs montiert. Darauf habe ich montiert die verschiedenen Abstandssensoren und die LED-Treiber-Platine. Dieses Fach wird auf der mittleren Ebene verbunden ausschließlich über den Kommunikationsbus, die Verdrahtung zu halten relativ sauber hilft.
Das Android-Gerät, das die Sensordaten und analysiert das Kamerabild interpretiert wird, auf der Außenseite der Schale angebracht ist, einen gemeinsamen Telefonhalter verwenden.

Das obere Fach Layout, in dem die Lage der verschiedenen Abstandssensoren, die LED-Treiber-Platine und die verschiedenen Statusanzeigen dargestellt sind. Die orangefarbenen Lichter sind die Blinker, die roten zeigen, wenn das Auto angehalten wird, und die blaue auf der Oberseite leuchtet auf, wenn wir die Bedienelemente des Fahrzeugs über die R / C-Controller außer Kraft setzen.

Die beiden Ultraschallsensoren in der Vorderseite. Die LED-Leuchten hinter ihnen dienen nur ästhetische Zwecke und sind ständig auf.

Die Ultraschallsensoren angebracht sind (mit Hilfe von Heißkleber) durch ein Loch in den Ummantelungs machen, so dass ihre Stifte durchlassen.

Die Infrarot-Abstandssensoren, die auf der rechten Seite des Fahrzeuges festgestellt werden, werden verwendet, Parklücken zu erfassen, sowie um zu bestimmen, ob ein Hindernis auf der Straße überholt worden ist.


Ein Überblick über das obere Fach. Auf dem Papier sah es einfach, aber viele Verbindungen hergestellt werden müssen. Ich schlage vor, Kleben Kabel auf der Schale, um zu vermeiden, dass sie verwirrt mit Kabeln im mittleren Fach zu bekommen.
Fahren mit Android
Das zusammengesetzte Auto wird gesteuert, um eine Android-Anwendung, die über Bluetooth in Verbindung steht. Die App spricht mit den On-Board-Mikrocontroller, die Motoren und Antriebsdaten Parsen von den Sensoren. Petroula Theodoridou sollten die meisten der Kredit für die App intuitive grafische Schnittstelle und Bluetooth-Konnektivität.

Die Android-Anwendung, die wir CARduino genannt. erfolgreich läuft auf Jelly Bean, KitKat und Lutscher, und wurde auf folgende Handys getestet: JiaYu G4S, XIAOMI Mi3 und OnePlus One.

Sie können die verschiedenen Funktionen versuchen (überprüfen Sie die verschiedenen Zweige) in der OpenDaVinci Testumgebung, die Ressourcen in diesem Repository gefunden werden. Es enthält ein Bild der OpenDaVinci Umgebung, mit unserem Bildprozessor und ein Antriebslogik-Funktionen (Parken, Überholmanöver, Fahrspurfolge). kompilieren und ausführen einfach.