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