DARC P07 Arduino Roboter V1.0

Transcrição

DARC P07 Arduino Roboter V1.0
Bauanleitung für den P07 BOT Arduino Roboter
DARC e. V. P07 Reutlingen
Tübingerstr. 21
72770 Reutlingen
e
Mail:
[email protected]
Bauanleitung für den P07 BOT
DARC e.V. P07 Reutlingen
1/20
V1.0 20.04.2013
1
Bauanleitung für den P07 BOT
Der P07-BOT beruht auf dem System Arduino. Arduino ist eine open-source EntwicklungsPlattform basierend auf einer flexiblen und einfach zu benutzenden Hardware und Software.
Sie ist gedacht für Hobbyisten, und jeden, der daran interessiert ist, einfach (inter)aktive Objekte zu erstellen.
1.1 Die Baustufen des P07 BOT
Die einzelnen Baustufen des P07 Bot sind:
1. Arduino-Board
das „Gehirn“ des P07 BOT
2. Chassis
für die Bewegung und als Trägersystem für die einzelnen Baugruppen
3. Motorplatine
steuert die Motoren und enthält Kontaktleisten für weitere Baugruppen
4. LCD Display
zeigt Meldungen an
5. Lautsprecher
gibt Morsetöne und RTTTL-Melodien aus
6. Sensorplatine
enthält die „Line Follower“- und „Border Line“-Sensoren
7. Sonar
Ultraschall-Abstandssensor auf Servo zur Abstandsmessung
8. Odometer
misst die zurückgelegte Wegstrecke pro Rad
9. RF TRX
überträgt Daten per Funk und empfängt Kommandos
10. Magnetkompass erkennt die Richtung in die P07-BOT orientiert ist
1.2 Die Programme zum P07 BOT
Die einzelnen Programme und Aktivitäten für den P07 Bot sind hier aufgeführt (Auszug)::
1. A1-1
SimpleMovement
lernt sich zu bewegen
2. A1-2
CircleShape
fährt im Kreis
3. A1-3
SquareShape
fährt im Rechteck
4. A2-1
CollisionDetect
5. A2-2
TrappedIn Corner
6. A3-1
SimpleLCD
das “HelloWolrd”-Beispiel
7. A4-1
RunningText
gibt Lauftext auf dem LCD aus
8. A5-1
SensorAnalogRead
liest die Sensorwerte aus
9. A6-1
BlackBorderMove
fährt nur innerhalb einer Begrenzung
10. A7-1
PingPongMove
fährt zick-zack-artig zwischen zwei Linien
11. A8-1
SimpleLineTracking
folgt einer schwarzen Linie
12. A9-1
LineCrossingDetect
folgt einer Linie und erkennt Kreuzungen
13. A10-1
LineCrossingDetect
folgt einer Linie und biegt an der Kreuzung ab
14. A11-1
MultiLineCrossingDetect
erkennt mehrere Kreuzungen
15. A12-1
WhiteLineDetect
erkennt weisse Linien
16. A13-1
EdgeDetect
erkennt eine Ecke und reagiert entsprechend
17. A14-1
SonarLCD
misst den Abstand mit einem Sonar
18. A15-1
TouchlessObjectRobot
weicht Objekten aus
19. A16-1
SimpleServo
bewegt den ServoMotor
20. A16-2
SwitchControlServo
das Servo kann mit Schaltern gesteuert werden
21. A17-1
SeekingObjectTest
Radarartiges Suchen nach Objekten
22. A18-1
BallSeekerRobot
der Roboter fährt auf ein gesuchtes Objekt zu
23. B5-1
SimpleTone
gibt Töne aus
24. B5-2
Morse
gibt Texte in Morse Code aus
25. B5-3
RTTTL
spielt Handy Klingelton Melodien
26. B6-3
DirectionBlinker
zeigt den Richtungswechsel mit Blinken an
27. B6-4
KnightRider
das berühmte „Knightrider“ Lauflicht
28. B9-1
OdometerTest
zeigt Wegstrecke pro Rad und Geschwindigkeit
DARC e.V. P07 Reutlingen
2/20
V1.0 20.04.2013
2
Zusammenbau des Arduino-Boards
In dieser Baustufe wird die Hardware des Arduino aufgebaut und die Software zur Programmierung des Arduino installiert. Es wird auch beschrieben, wie man Programme auf den Arduino lädt. Damit habt Ihr alle Voraussetzungen, dass es mit der Programmierung und dem
Roboterbau richtig weitergehen kann Nach Aufbau des Arduino-Boards und Installation der
Arduino-Softwareentwicklungsumgebung kann der P07 BOT die ersten einfachen Funktion
ausführen. Mit jeder weiteren Baugruppe erweitern sich die Möglichkeiten des Roboters und
ihr lernt die unterschiedlichen Möglichkeiten und Funktionen eines modernen Mikrokontrollers kennen.
2.1 Aufbau des Arduino-Boards
Der in diesem Roboter verwendete Typ des Arduino ist der Arduino Severino (S3V3,
http://arduino.cc/en/Main/ArduinoBoardSerialSingleSided3). Dieser Typ verwendet eine einseitig bestückte Leiterplatte und ist daher leichter aufzubauen. Die Zusammenbauschritte
sollten in der angegebenen Reihenfolge erfolgen:
1. kleine Dioden (1N4148), auf die Polarität achten
2. Widerstände 10k (braun, schwarz, orange), 1k (braun, schwarz, rot), 4k7 (gelb, violett, rot)
3. große Diode (!N4004)
4. Stiftleisten gewinkelt (RS232, Autoreset), gewinkelte Stifte in die Platine
5. Quarz, liegend einbauen, Beschriftung nach oben
6. IC-Fassung, auf die Orientierung achten
7. Spannungsregler, liegend einbauen
8. Keramikkondensatoren 22pF, 100nF
9. Leuchtdioden, Taster, auf Polarität achten
10. Transistoren, Typ und Orientierung beachten
11. Elektrolyt-Kondensatoren, Polarität beachten
12. Stecker und Buchsenleisten (2x3pol, 6pol, 8pol.), senkrecht, kein Abstand zur Platine
13. Mikrokontroller in die Fassung stecken (vorher Board auf Kurschluss prüfen)
Die folgende Zeichnung gibt die Lage der Bauteile an:
Bild 2.1 Bestückungsplan des Arduino Severino
DARC e.V. P07 Reutlingen
3/20
V1.0 20.04.2013
Wenn alles richtig aufgebaut ist, sollte die Platine ungefähr so aussehen:
Jetzt könnt Ihr die Spannungsversorgung anschließen: die LED13 sollte kurz aufleuchten
und dann im Sekundentakt 5 mal blinken. Damit signalisiert der Bootloader (das Ladeprogramm auf dem Arduino, dass er bereit ist Programme aufzunehmen Ist das der Fall, ist alles
richtig aufgebaut und funktioniert (es ist schon das Beispiel-Programm „Blink“ installiert).
2.2 Installation der Software
Dieses Kapitel ist eine Einführung in das Arduino-Entwicklungssystem (IDE = engl. Integrated Development Environment). Es beginnt mit der Installation der Entwicklungssoftware und
erklärt danach die Arduino IDE Komponenten.
(1) Rufe die Seite www.arduino.cc im Webbrowser auf, gehe dort auf die Download-Seite
und lade die aktuelle Arduino-SW-Version für das Betriebssystem herunter.
(2) Installiere die SW in einem geeigneten Verzeichnis auf dem Computer.
(3) Installiere ggf den USB-Treiber für den Arduino (der Treiber für Windows befindet sich im
Verzeichnis ../arduino-1.0.x/drivers/FTDI USB Drivers/i386)
2.3 Arduino Entwicklungsumgebung
Nachdem die SW installiert ist, starte die Arduino-Entwicklungsumgebung, es sollte folgendes Fenster erscheinen:
Bild 2.2 Startseite der Arduino Entwicklungsumgebung
DARC e.V. P07 Reutlingen
4/20
V1.0 20.04.2013
Die Arduino Entwicklungsumgebung hat folgende Bereiche:
• Menu :
dort wählt man die Funktionen aus
• Toolbar :
enthält die wichtigsten Funktionen als Icons
• Tabs
erlaubt Programme (sketches) mit mehreren Dateien zu handhaben
• Text editor
Text Editor Bereich in dem ein Sketch (Programm) erstellt wird
• Message area : zeigt den Status wie z.B. Kompilierungsergebnisse
• Text area :
enthält die Kompilerinformation oder serielle Daten
2.4 Menu - Leiste
In der Welt des Arduino nennt man den Programmkode “Sketch”. Alle Erläuterungen im Detail hierzu und zu den weiteren Menu-Punkten finden sich unter dem Menu-Punkt „Help“ und
dort unter dem Unterpunkt „Environment“. Die Erklärungen gibt es bisher nur in englischer
Sprache.
2.4.1 File
Das „File“-Menu enthält Funktionen wie „open“, „save“, „close“ und einige weitere.
• New :
erzeugt einen neuen Sketch mit dem Namen "sketch_<akt. Datum>“
• Sketchbook
zeigt die bisher erzeugten Sketches an
• Open
öffnet einen existierenden Sketch
• Save
speichert den aktuellen Sketch aus dem Editorfenster
• Save as
speichert den aktuellen Sketch unter einem anderen Namen
• Upload
Lädt den Programmkode auf das Arduinoboard (der Sketch sollte
vorher immer gespeichert sein
• Preference
Erlaubt die Bearbeitung der Voreinstellungen der Arduino-IDE
• Quit
Beendet die Arduino DIE
2.4.2 Edit
Das “Edit” Menu stellt eine Reihe von Kommandos für das Editieren von Arduino-Dateien zur
Verfügung:
• Undo :
Macht das letzte Kommando oder die letzte Eingabe rückgängig
• Redo
Macht das letzte “Undo” rückgängig, Diese Option gibt es nur, wenn
vorher ein „Undo“ abgesetzt wurde
• Cut
Entfernt und kopiert die selektierten Zeichen in das Clipboard
• Copy
Kopiert den selektierten Text in das Clipboard
• Paste
Fügt den Inhalt des Clipboards an der Cursorstelle ein und entfernt
dabei ggf. selektierten Text
• Select All
Selektiert den gesamten Text der im Texteditor geöffneten Datei.
• Find
Sucht nach einer Zeichenkette in der Datei im Texteditor und bietet die
Option an, diese mit einem anderen Text zu ersetzen.
• Find Next
Findet da nächste Auftreten einer Zeichenkette in de rim Editor
geöffneten Datei
2.4.3 Sketch
Dieses Menü bietet eine Reihe von Kommandos um Programmcode zu kompilieren und
Programm-Bibliotheken zu verwalten:
• Verify/Compile
Überprüft und kompiliert den Programmcode
• Stop
Stoppt die laufenden Aktivität
• Add file
Öffnet den Dateinavigator, selektiert eine Codedatei fügt sie zu einem
Sketch hinzu
• Import Library
Importiert eine Bibliothek
• Show Sketch folder
Öffnet den Ordner des aktuellen Sketch
DARC e.V. P07 Reutlingen
5/20
V1.0 20.04.2013
2.4.4 Tools
Dieses Menü beinhaltet Kommandos für Werkzeuge zur Entwicklung von Arduino Sketches
und zur Einstellung der Arduino Hardware:
• Auto Format
Versucht den Programmcode in eine besser lesbare Form zu bringen
• Archive Sketch Wandelt den aktuellen Sketch in eine ZIP-Datei um
• Export Folder
Öffnet den Ordner der den aktuellen Sketch enthält
• Board
Wählt die Arduino Hardware aus, wähle Arduino Uno für den P07 BOT
• Serial Port
Wählt den seriellen Port für das Upload aus oder die Zeichen die vom
Arduino kommen. Die Daten, die vom Arduino kommen, werden im
Zeichenformat im Textbereich der Kommunikationskonsole angezeigt.
2.4.5 Help
Dieses Menu beinhaltet Informationen im HTML Format um den Arduino Anwender zu unterstützen:
• Getting Start
öffnet die erste Schritte mit Arduino Anleitung “How to start Arduino”.
• Troubleshooting Solltest Du Dir ansehen wenn es Probleme mit dem Arduino gibt
• Environment
Beschreibt die Arduino Entwicklungsumgebung
• Reference
Öffnet die Referenzbeschreibung im Standard Web Browser
• Frequently Asked Question
Typische Fragen und Antworten rund um den Arduino
• Visit www.arduino.cc
Öffnet die Arduino Homepage im Standard Web Browser
• About Arduino
Gibt einige Information zum aktuellen Software Stand
2.5 Tools bar
Hier einige Erläuterungen zu der Tools Leiste:
• Verify/Compile
Überprüft den Programmkode auf Fehler.
• Stop
Hält den seriellen Monitor an oder setzt Kommandos zurück.
• New
erzeugt einen neuen Sketch.
• Open
Zeigt die Liste der Sketche im Sketchbook an
• Save
Speichert den aktuellen Sketch
• Upload to I/O Board
Läd den aktuellen Kode in den Arduino, Du solltest vorher
immer den Sketch speichern
• Serial Monitor
Zeigt die seriellen Daten die vom Arduino an den PC gesendet werden
2.6 Laden eines Programms auf das Arduino-Board
2.6.1 Arduino Hardware Konfiguration
Wähle im Menu „Tools“ unter „Board“ die Einstellung „Arduino Duemilanove w/ ATMega328“.
Anschließend wähle unter „Port“ den USB-Port oder den virtuellen COM-Port des RS232USB-Wandlers, die Nummer des virtuellen COM-Ports ist dabei größer oder gleich COM3.
Der Arduino unterstützt nur COM-Port-Nummern kleiner oder gleich COM10 (z.B. COM4).
Im Hardware-Manager sollte für diesen COM-Port 115000 Baud als Geschwindigkeit und
Hardware.Fluss-Steuerung gewählt werden.
Wenn ein Programm (Sketch) im Editorfenster eingegeben wurde, kann man über den „Verify/Compile“ - „button“ den Programmkode auf Fehler überprüfen. Anschließend wird über
den „Upload“-„button“ der kompilierte Programmkode in den Mikrokontroller geladen.
In der Statusleiste am unteren Rand des Fensters erscheint der Status der Kompilation. Falls
der Kode ohne Fehler übersetzt wird, erscheint „done“ als Status und die zugehörige Programmgröße.
DARC e.V. P07 Reutlingen
6/20
V1.0 20.04.2013
3
Zusammenbau des Chassis
Das Chassis des P07 BOT besteht aus zwei kreisrunden 4mm starken Holzbrettern mit
20cm Durchmesser, die durch Abstandshalter miteinander verbunden sind. Es enthält zusätzlich die beiden Gleichstrom-Getriebemotoren, den Batteriehalter und das Stützrad.
Die Maß-Zeichnungen / Bohrschablonen der beiden Chassisbretter findet Ihr im Anhang.
Nun die Zusammenbauschritte für das Chassis:
1. Zuerst werden die beiden kreisrunden Holzbretter ausgesägt. Zur Vereinfachung und
damit die Holzbretter später gut zusammenpassen, ist es ratsam vorher die 4 Befestigungslöcher für die Abstandshalter zu bohren und die beiden Bretter zusammen zuschrauben und gemeinsam kreisrund auszusägen.
2. Danach könnt Ihr die Aussparungen für die Räder ausschneiden
3. Jetzt schraubt ihr Ober- und Unterseite auseinander und fahrt mit der Unterseite fort
4. Das Loch für das Stützrad bohren
5. Die restlichen Löcher entsprechend der Bohrschablone auf Ober- und Unterseite bohren.
6. Sind die Holzbretter fertig bearbeitet, könnt Ihr sie nach Eurem Geschmack farbig anmalen. Am besten eignet sich hierfür Sprühfarbe aus dem Baumarkt. Anschließend mindestens 1 Tag trocknen lassen. Diesen Schritt könnt Ihr auch auslassen, wenn die Bretter
unlackiert bleiben sollen.
7. Danach geht es an die Montage der beiden Getriebemotoren: dazu müssen die beiden
Plastikwinkel bearbeitet werden und die Löcher laut Zeichnung angebracht werden.
8. Anschließend werden die beiden Kabel an die Motoren gelötet (rot jeweils oben damit die
Räder beide in die gleiche Richtung laufen) und mit Isolierband fixiert.
9. Die Halter werden an das obere Brett montiert.
10. Sodann bringt Ihr die Motoren an.
Bild 3.1 6Volt-DC-Getriebemotoren (links) und Rollkugel (rechts)
Jetzt erfolgt die Fertigstellung des unteren Chassisbretts:
11. Ihr bringt das Stützrad hinten an.
12. Dann wird der Hohlstecker an den Batteriehalter angelötet
13. Ihr befestigt den Batteriehalter an der vorgesehenen Stelle auf dem Brett.
14. Die beiden Chassisbretter mittels der Distanzhalter aneinander befestigt.
DARC e.V. P07 Reutlingen
7/20
V1.0 20.04.2013
Das Chassis sollte jetzt so aussehen:
Bild 3.2 Zusammengebautes Chassis des P07-BOT
DARC e.V. P07 Reutlingen
8/20
V1.0 20.04.2013
4
Die P07 Bot Motor-Multifunktions-Platine
Die Motorplatine dient zu Steuerung der beiden Motoren des P07-BOT, aber nicht nur das.
Die Motorplatine erfüllt gleich mehrere Funktionen, um nicht allzu viele Zusatzplatinen zu
haben und doch die wesentlichen Funktionen des Mikrokontrollers, aber auch von mechatronischen System zu demonstrieren. Dazu sind die entsprechenden Schnittstellen und Anschlüsse auf der Platine mit untergebracht.
Zuerst wird aber die zentrale Funktion der Platine nämlich die Ansteuerung der DC Getriebemotoren erläutert: Damit die Motoren mit unterschiedlicher Geschwindigkeit laufen, werden sie nicht dauerhaft sondern nur zeitweise bestromt. Dazu nutzt man die PWM-Einheit
(PWM = Pulsweitemodulation) auf dem Arduino. Der Prozessor der Arduino (ATmega328)
besitzt drei Timer mit jeweils einer 2-kanaligen PWM-Einheit. Für den Motorantrieb wird die
des Timer 1 benutzt (Pins 9 und 10). Das nachfolgende Diagramm zeigt schematisch den
Spannungsverlauf an den Pins, wenn die PWM-Einheit aktiv ist:
Bild 4.1 PWM-Ansteuerung eines DC-Motors
Um verschiedene Geschwindigkeiten einzustellen, wird das Tastverhältnis zwischen An-Zeit
und Aus-Zeit variiert. Volle Geschwindigkeit erreicht man bei einem Tastverhältnis von 100%
(Fall D), d.h. die Ausgänge sind die ganze Zeit durchgeschaltet, eine mittlere Drehzahl wird
mit 50% Tastverhältnis erzielt (Fall B). Bei 0% Tastverhältnis, d.h. Ausgänge sind die ganze
Zeit gesperrt, steht der Motor. Mit geeigneten Zwischenwerten können alle Drehzahlen zwischen 0 und Maximaldrehzahl eingestellt werden (Fall A oder C). Das nachfolgende Diagramm (Bild 4.2) illustriert diese Fälle.
Bei den Motoranschlüssen ist auf die richtige Polarität zu achten, damit die Laufrichtung der
beiden Räder stimmt. Die Stellung des Jumpers an JP5 bestimmt die Betriebsspannung der
Motoren (5V, Ubat). Der Jumper sollte in Stellung Ubat sein, wenn Ihr das Akku-Pack bestehend aus 6xMignon-Akkus verwendet, damit der auf der Platine befindliche Spannungsregler
nicht so sehr belastet wird. Bei höheren Betriebsspannungen (9V, aber nur kurzzeitig empfohlen) sollte der Jumper in der 5V Stellung stehen, sonst die Motoren Schaden nehmen
können.
DARC e.V. P07 Reutlingen
9/20
V1.0 20.04.2013
Bild 4.2 Illustration von 4 verschiedenen Tastverhältnissen
Der Arduino hat insgesamt 14 Digital-Ausgänge und 6 AD-Wändler Eingänge. Die damit verbundenen Funktionen sind in der nachfolgenden Tabelle aufgelistet. Die Funktionen werden
in den nachfolgenden Baustufen sukzessive genutzt und dabei genauer erklärt:
Pin
0
1
2
3
4
5
6
7
8
9
10
11
12
13
0
1
2
3
4
5
Description
RX
TX
INT L
INT R
Speaker
DIR L
DIR R
Servo 2
Servo 1
PWM L
PWM R
SR04
SR04
LED
Line L
Line R
Border L
Border R
I2C
I2C
Baugruppe
9 RF TRX
9 RF TRX
8 Odometer
8 Odometer
5 Lautsprecher
3 Motor Shield
3 Motor Shield
unused
7 Sonar
3 Motor Shield
3 Motor Shield
7 Sonar
7 Sonar
unused
6 Sensor
6 Sensor
6 Sensor
6 Sensor
4 LCD
4 LCD
DARC e.V. P07 Reutlingen
Stecker
JP7
JP7
JP8
JP8
JP9
Bemerkung
JPx siehe Text
JPx siehe Text
JP4 siehe Text
JP4 siehe Text
Vorwiderstand auf der Platine
JP10
JP11
JP12
JP12
JP4
JP4
JP5
JP5
JP6
JP6
Abschlusswiderstand 4k7
Abschlusswiderstand 4k7
10/20
V1.0 20.04.2013
Im Folgenden sind die Ports mit den zugehörigen Funktionen aufgelistet:
• JP6
an JP6 wird das RF-Modul angeschlossen
• JP7
der Odometer-Anschluss
• JP8
Lautsprecheranschluss
• JP9, JP10 hier werden die beiden Servos (#0, #1) angeschlossen, das Servo #1 ist für
den Ultraschall-Sensor vorgesehen
• JP11
hier wird der Ultraschallsensor angeschlossen
• JP12
Anschluss Motor links, bzw. Servomotor links
• JP13
Anschluss Motor rechts, bzw. Servomotor rechts
• JP14
Anschluss für den I2C-Bus
• JP15
Anschluss für den „Line Follower“-Sensor
• JP16
Anschluss für den „Border Detect“-Sensor
• JP17
LCD-Display, hier wird ein 16x2 LCD Charakter-Display angeschlossen
• JP18
8Bit-Extension-Port
• JP19
LED-Port, die Anschlüsse von JP18 sind über Widerstände herausgeführt
Ein 16x2 Charakter-Display kann direkt auf die Platine gesteckt werden. Für weitere Ergänzungen zur Ansteuerung über I2C-Bus ist der Port JP14 vorgesehen. Die benötigten Abschlusswiderstände befinden sich schon auf der Platine.
Mit JP4 kann das Odometer zugeschaltet werden, dazu müssen zwei Unterbrechungsroutinen (Interrupt-Serviceroutinen) programmiert werden, die die Interrupts bedienen. In den
nachfolgenden Kapiteln werden jeweils die Funktionen mit den an diesen Ports angeschlossenen Modulen oder Sensoren näher erklärt.
Auf die Buchsenleisten JP0 bis JP3 kann ein weiteres Arduino kompatibles Shield (so werden die Zusatzplatinen beim Arduino genannt) gesteckt werden (Arduino Formfaktor). Achtet
aber dabei auf eine mögliche Doppelbelegung der Ports. Es ist vor allem als Möglichkeit vorgesehen, eigene Erweiterungen für den P0T BOT zu realisieren wie z.B. Funkmodul,
Sprachausgabe, Spracheingabe, LED-Array, Color-LED, Infrarot-Steuerung, eine Reihe von
Sensoren wie optischer Sensor, Beschleunigungssensor, Drucksensor, Temperatursensor,
Lichtsensoren, uvm. ….
Anschlüsse
für Servos
Anschluss für
Lautsprecher
Anschluss für
BluetoothModul
Anschluss für
US-Sensor
Anschluss für
Odometer
Anschlüsse
für Motoren
Anschluss für
LEDs
Anschluss für
I2C-Bus
Anschluß für
Display
Anschlüsse für Linienverfolger und Begrenzungserkennung
Abb. 4.3 Teilweise aufgebaute Motor-Multifunktionsplatine
DARC e.V. P07 Reutlingen
11/20
V1.0 20.04.2013
5
LCD Display
Der P07 Bot besitzt ein chices LCD-Display mit 4 Zeilen je 20 Zeichen und blauem oder
grüngelbem Hintergrund. Auf dem Display werden Statusmeldungen und Messwerte des
P07 Bot abgezeigt. Das Display wird über die so genannte I2C-Schnittstelle angesprochen.
Diese Schnittstelle ist eine serielle Schnittstelle und benötigt daher nur 2 Leitungen: Takt und
Daten.
oder
Das Display wird auf vier Distanzbolzen mit je 15mm Länge montiert (siehe Bauplan). Ein
vierpoliges Kabel verbindet das Display mit dem JP14-1 auf der Motor-Platine, dabei muss
unbedingt auf die richtige Polarität geachtet werden, andernfalls wird das Display zerstört.
Um das Display ansprechen zu können, wird die Bibliothek LiquidCrystalI2C eingebunden.
Das Modul hat die Busadresse 0x27. Im Folgenden sind die Befehle und die Zeichentabelle
aufgelistet.
Das auf der Motorplatine installierbare LCD-Display hat die Busadresse 0x20. Zur Montage
wird auf die Motorplatine eine 16pol. Buchsenleiste gelötet (JP17) und das Potentiometer für
den Kontrast montiert. An das LCD-Modul wird entsprechend eine 16pol. Stiftleiste gelötet,
damit das LCD-Modul direkt eingesteckt werden kann, ggf, kann das Modul mit 3 Distanzbolzen mechanisch fixiert werden. Alternativ kann auch ein paralleles 16x2 …..20x4 Display mit
Kabel an JP17 angeschlossen werden. Dazu müssen Spannungsversorgung, Kontrollleitungen, Datenleitung (4Bit) und Hintergrund-LED angeschlossen werden. Dieses Modul erfordert dann die Einbindung der Bibliothek LiquidCrystal.
Neben dem Display können auch Leuchtdioden angesteuert werden. Dazu ist der Port JP18
vorgesehen. Die für den Betrieb der Leuchtdioden notwendigen Vorwiderstände sind auf der
Platine schon vorgesehen. Am Chassis werden dazu mit dünnem Plexiglas vorne und hinten
jeweils 15cm lang und 3 cm breite Streifen montiert. In diese Streifen werden Löcher gebohrt
und dort die Leuchtdioden eingeklebt. Die Farben können jeweils individuell gewählt werden.
Die Ansteuerung der Leuchtdioden erfolgt mit der Bibliothek Wire, das Modul befindet sich
dabei auf der Busadresse 0x21.
DARC e.V. P07 Reutlingen
12/20
V1.0 20.04.2013
6
P07-Bot Lautsprecher
Der P07 BOT erhält auch einen Lautsprecher. Auf der Motor-Mulitfunktionsplatine ist dazu
schon ein Vorwiderstand vorgesehen, den Ihr jetzt einlötet. Der Vorwiderstand verhindert,
dass der Ausgang des Mikrokontrollers überlastet wird. Der Lautsprecher wird direkt über
den Widerstand an den Ausgang P4 des Arduino angeschlossen, dafür ist auf der Motorplatine die Stiftreihe JP8 vorgesehen. Der Lautsprecher wird auf oder besser unter dem oberen
Brett des Chassis mit einem Klett-Klebeband befestigt. Mit dem Arduino ist es dann möglich,
Töne zu erzeugen. Er kann damit sowohl Morsezeichen senden, wie auch Melodien erzeugen. Besonders interessant ist es, Handy-Klingeltöne zu nutzen, denn davon gibt es Tausende im Internet zum kostenlosen Download.
7
Sensor-Platine
Die Sensorplatine des P07-BOT enthält optische Sensoren vom Typ TCRT5000 – so genannte Reflexkoppler. Mit diesen Sensoren kann der P07-BOT Helligkeitsunterschiede auf
dem Untergrund detektieren und somit Linien erkennen und diesen folgen oder diese vermeiden. Mit Hilfe von vier Sensoren können Linien in Fahrtrichtung und quer dazu unterschieden werden und ermöglichen so komplexere Reaktionsschemata auf Linienmuster. Die
Sensorplatine wird über 2 vierpolige Kabel mit der Motorsteuerungsplatine verbunden. Die
inneren Sensoren mit der Bezeichnung „Line Follower“ werden JP15 und die äußeren Sensoren mit der Bezeichnung „Border Detect“ werden an JP16 angeschlossen. Es muss auch
hier wieder auf die richtige Polarität geachtet werden. Die Kabel werden dabei durch die Öffnungen auf dem unteren und oberen Chassis-Brett an die Multifunktionsplatine herangeführt.
Mit dem Sketch SensorTest wird die Funktion der Sensoren getestet. Befinden sich die Sensoren über einem schwarzen Untergrund werden Werte unter oder um 100 angezeigt. Befinden Sich die Sensoren über einer weißen Fläche bewegen sich die Werte um 900 oder darüber.
Abb. 7.1 Funktionsweise der Reflexkoppler auf hellen (links) und dunklen (rechts) Unterlagen
DARC e.V. P07 Reutlingen
13/20
V1.0 20.04.2013
8
Das Sonar
Eine Reihe von weiteren Funktionsmöglichkeiten des P07 BOT ergibt sich, wenn man einen
Ultraschall-Distanzsensor verwendet. Dieser Sensor wird dazu auf ein Modellbau-Servo
montiert. Der dafür nötige Haltewinkel ist der Zeichnung xx.xx dargestellt.
Abb. 8.1 Modellbau-Servo (links) und Ultraschalldistanzsensor HC-SR04 (rechts)
Das Servo wird an Port JP12 (Servo #1) und der US-Sensor vom Typ HC-SR04 an Port
JP14 angeschlossen. Um den US-Sensor benutzen zu können, muß die Bibliothek NewPing
eingebunden werden, das Servo wird über die Bibliothek Servo angesprochen.
Der US-Sensor arbeitet nach der Laufzeitmethode – ähnlich wie ein Echolot. Die Laufzeitmessung beruht darauf, dass sich akustische Wellen mit endlicher, bekannter Geschwindigkeit nämlich der Schallgeschwindigkeit ausbreiten. Der Sensor sendet einen kurzen Ultraschallpuls mit einer Frequenz von ca. 40kHz und von ca. 1ms Länge zu einem Messobjekt,
von dem es reflektiert wird, und misst die Zeit, die es für den Hin- und Rückweg benötigt, so
kann man aus der Laufzeit
und der Ausbreitungsgeschwindigkeit des Signals, das ist
die Gruppengeschwindigkeit der Welle, die Objektentfernung berechnen:
Die Messungen werden von der Umgebung beeinflusst. Sind die Medieneigenschaften temperaturabhängig oder anisotrop, werden Messungen der Laufzeit von Änderungen der Temperatur oder der Orientierung gestört. Beispielsweise ist die Schallgeschwindigkeit in Luft
stark temperaturabhängig (ca. 2% pro 10°K).
Für unseren Fall ist c die Schallgeschwindigkeit also c = 340 m/s bei 0° C. Bei einem Objekt
in 1m Abstand ergibt sich somit eine Laufzeit von ca. 7ms.
Abb. 8.2 Prinzip der Ultraschallentfernungsmessung
DARC e.V. P07 Reutlingen
14/20
V1.0 20.04.2013
9
Das Odometer
Das Odometer versetzt den P07-BOT in die Lage, die pro Rad zurückgelegte Wegstrecke zu
messen und aus diesen Informationen Geschwindigkeit und Richtung des P07-BOT abzuleiten. Dazu wird je ein Impulsgeber (siehe Bild) pro Rad eingesetzt. Der Impulsgeber gibt 24
Pulse pro Umdrehung ab. Er besitzt zwei Ausgänge, die um 90° versetzte Signale ausgeben
– ein so genanntes Quadratursignal.
Abb. 9.1 Impulsgeber
Aus einem Quadratursignal lässt sich Geschwindigkeit und Richtung ermitteln. Die Odometer-Signale triggern zwei Unterbrechungs-Routinen (Interrupt-Service-Routinen), die die vorgenannten Berechnungen durchführen.
Die Impulsgeber werden mit Buchsen an die jeweils hintere Welle der Motoren geschraubt.
10 Bluetooth-Transceiver
Der Arduino erhält nun die RF-Baugruppe. Mit dem Bluetooth-Modul ist der P07 BOT in der
Lage, Daten an einen PC bzw. Mobiltelefon zu senden und Kommandos von dort zu empfangen. Die Daten können mit dem Programm „Processing“ oder einer „Handy“-App visualisiert werden. Die Reichweite des Moduls beträgt ca. 10 Meter.
Abb. 10.1 Bluetooth RF-Transceiver
11 Kompassmodul
Das Kompassmodul erlaubt dem P07-BOT festzustellen, in welche Richtung der P0/-BOT
orientiert ist und in die er fährt. Dies ist wichtig, wenn der P07-BOT autonom seinen Weg
suchen soll. Das Kompassmodul wird über den I2C-Bus-Anschluß auf die MotorSteuerungsplatine gesteckt.
DARC e.V. P07 Reutlingen
15/20
V1.0 20.04.2013
12 Stücklisten
Nr.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
Kategorie
Baugruppe
Mechanik
1 Chassis
Mechanik
1 Chassis
1 Chassis
Mechanik
Mechanik
1 Chassis
1 Chassis
Mechanik
Mechanik
1 Chassis
1 Chassis
Mechanik
Mechanik
1 Chassis
1 Chassis
Elektronik
Elektronik
1 Chassis
2 Arduino
Mechanik
Mechanik
2 Arduino
2 Arduino
Mechanik
Elektronik
2 Arduino
2 Arduino
Elektronik
Elektronik
2 Arduino
Elektronik 3 Motor Shield
Elektronik 3 Motor Shield
Elektronik 3 Motor Shield
Elektronik 3 Motor Shield
Elektronik 3 Motor Shield
Elektronik 3 Motor Shield
4 LCD
Mechanik
Mechanik
4 LCD
4 LCD
Mechanik
Elektronik
4 LCD
4 LCD
Elektronik
Elektronik
4 LCD
Elektronik 5 Lautsprecher
Elektronik 5 Lautsprecher
Elektronik 5 Lautsprecher
Mechanik
6 Sensor
Mechanik
6 Sensor
Mechanik
6 Sensor
6 Sensor
Elektronik
Elektronik
6 Sensor
Elektronik
6 Sensor
Elektronik
6 Sensor
Elektronik
6 Sensor
Mechanik
7 Sonar
Mechanik
7 Sonar
Mechanik
7 Sonar
Mechanik
7 Sonar
7 Sonar
Mechanik
Mechanik
7 Sonar
Mechanik
7 Sonar
Elektronik
7 Sonar
Elektronik
7 Sonar
8 Odometer
Elektronik
Elektronik
8 Odometer
Elektronik
8 Odometer
Elektronik
8 Odometer
DARC e.V. P07 Reutlingen
Anzahl
1
2
2
1
4
8
4
24
2
0
3
3
3
1
1
1
1
1
1
1
1
0
4
4
4
1
1
1
1
1
1
2
2
2
4
2
1
1
8
1
1
4
2
2
2
8
1
1
1
1
2
4
Bezeichnung
Holzbrett 40x20x4
Plastikwinkel 5cm
Getriebemotor mit Rad
Heckrad / -rolle
Distanzbolzen 30mm M3
Schrauben M3x10
Schrauben M3x25
Unterlegscheiben
Kabel 2PIN
Schalter
M3x6
M3x8
Distanzbolzen 15mm
Arduino
Batteriehalter
Hohlstecker 5,5/2,1/9mm
CD4030 XOR
L293D
Pinheader 40x1 (4,3x2,4x4,2x3)
Platine
Widerstände
CD4082
Distanzbolzen 15mm
M3x6
M3x8
Interface IIC LCD
LCD 2004
Kabel 4PIN
Kabel 2PIN
Kleinlautsprecher
Widerstände 47 Ohm
Distanzbolzen 5mm
M3x6
M3 Muttern
TCTR 5000
Kabel 4PIN
Platine
Pinheader 6x1
Widerstände
Plastikwinkel 5cm
Servo
Distanzbolzen 30mm
Distanzbolzen 10mm
M3x6 Nylon
M3x6
M3x8
Ultraschall Sensor
Kabel 4PIN
Kabel 5PIN
CD4030
Drehimpulsgeber
Widerstände
16/20
V1.0 20.04.2013
53
Elektronik
8 Odometer
DARC e.V. P07 Reutlingen
1
Pinheader 5x1
17/20
V1.0 20.04.2013
13 Schaltbilder
Abb.13.1 Schaltplan des Multifunktions-Motor-Shields
DARC e.V. P07 Reutlingen
18/20
V1.0 20.04.2013
14 Bilder
Diverse Bilder zu P07 BOT:
DARC e.V. P07 Reutlingen
19/20
V1.0 20.04.2013
15 Referenzen
[1]
Arduino Homepage: www.arduino.cc
[2}
Reichelt Elektronik www.reichelt.de
[3]
Pollin Elektronik www.pollin.de
[4]
Baumarkt z.B. Bauhaus, OBI, Hornbach oder Praktiker
[5]
Bauanleitung ArduBot, DARC e.V.P12, OVV Axel Tüner, DF9VI
DARC e.V. P07 Reutlingen
20/20
V1.0 20.04.2013

Documentos relacionados