Azurit Firmware (Deutsch)

Aus www.wiki.ardumower.de
Version vom 3. Juli 2017, 20:06 Uhr von Alexanderg (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Programm downloaden und Arduino programmieren= <b>NOTE</b>: Wenn du noch nie mit Arduino gearbeitet hast, lies unser <b>[http://wiki.ardumower.de/index.php?t…“)

(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Programm downloaden und Arduino programmieren

NOTE: Wenn du noch nie mit Arduino gearbeitet hast, lies unser 'Arduino first steps' introduction.

Du hast zwei Möglichkeiten:

Zuletzt, downloade und starte Arduino IDE um das Programm auf dem Arduino zu speichern.

Arduino Version: Es ist wichtig, dass du die Version 1.6.3 oder höher der Arduino-Entwicklungssoftware benutzt und dass du das richtige Board auswählst (Mega 2560 or Due).

Warning.png Wichtig für Arduino IDE 1.6 oder höher: Falls sich Unterordner im Code-Ordner befinden (z.B. "unused"), diese bitte vor dem Kompilieren löschen! Vergewissere dich, dass die Pin-Belegung im Arduino-Code (config.h/mower.cpp) mit deinem aktuellen Schaltplan übereinstimmt.

Einstellungen

Der Roboter verwendet Grundeinstellungen die du für deinen Roboter und deine Umgebung anpassen kannst. Die Grundeinstellungen (factory settings) werden in der Konfigurationsdatei 'mower.cpp' gespeichert. In dieser Datei findest Du auch eine kurze Beschreibung aller Grundeinstellungen.

Diese Grundeinstellungen können später über ein Android-Handy verändert werden (pfodApp). Diese veränderten Einstellung haben dann höhere Priorität als die Grundeinstellungen. Alle geänderten Einstellungen können jederzeit auf Grundeinstellung (Werkseinstellung) zurückgesetzt werden.

Wichtig: Wenn du eine neue Softwareversion auf deinen Arduino lädst, setze alle Einstellungen über die pfodApp auf die Grundeinstellungen zurück (Settings->Factory reset). Das löscht alle vorhandenen Einstellungen. Alte Einstellungen können zu Fehlfunktionen führen, wenn sich das interne Einstellungsformat geändert hat.

Erste Inbetriebnahme

1. Alle Sensoren deaktivieren. Zunächst alle Sensoren deaktivieren - In 'mower.cpp' den Roboter auf folgende Grund-Einstellungen setzen:

bumperUse = 0;
dropUse = 0;
rainUse = 0;
sonarUse = 0;
perimeterUse = 0;
lawnSensorUse = 0;
imuUse = 0;
batMonitor = 0;
odometryUse = 0;
gpsUse = 0;
buttonUse = 1;
timerUse = 0;

2. Die Software bietet einen seriellen Konsole-Modus. Öffne die serielle Konsole in der Arduino IDE (Strg+Shift+M) und setze die BAUD-Rate auf 19200. Die Motor- und Sensorwerte sollten daraufhin ständig angezeigt werden. Erstmal löschen wir evtl. vorhandene Fehler:

Konsole:
press...
d for menu
e=delete all errors

3. Dann die ADC-Kalibrierung vornehmen, damit alle ADC-Signale einen Nullpunkt erhalten.

press...
d for menu
8=ADC calib (perimeter sender, charger must be off

4. Motor-Ansteuerung testen:

Konsole:
press...
d for menu
1=test motors

Warning.pngSicherheitshinweis: Aus Sicherheitsgründen sind die Mähmesser bei den ersten Tests nicht zu montieren!

Du solltest überprüfen ob die Antriebsmotoren richtig gesteuert werden und sich in die richtige Richtung drehen. Erhöhe 'motorAccel' in 'mega.cpp' falls die Motoren nicht schnell genug beschleunigen.

Starten des Mähroboters

Um den Mähroboter zu starten wird ein Taster und ein Piezo-Summer benötigt:

pinButton —o Taster o— GND (button for ON/OFF)
pinBuzzer —o Buzzer o— GND (Piezo buzzer)

Drücke nun den Taster, bis Du die Anzahl Pieptöne hörst, die dem Modus entspricht, den Du einstellen möchtest:

Modus (Drücke Taster bis du x Töne hörst):

1 Piep  : Normales mähen (verwendet, wenn verfügbar, Messermodulation)
2 Pieps : Normales mähen (ohne Messermodulation)
3 Pieps : Fahren mit Fernsteuerung (RC)
4 Pieps : Fahren ohne mähen
5 Pieps : Finde Perimeterschleife und folge ihr

Diagnose/Fehlerbehebung

Jedesmal, wenn ein Sensor anspricht, zählt ein korrespondierender Sensorzähler um 1 hoch. Die Zählerstände der Sensorzähler sowie die aktuellen Sensorwerte kann man in der seriellen Konsole oder mittels der App ansehen. Die folgenden Werte werden in der seriellen Konsole angezeigt:

  1. Zeit des state machine's Status (ms)
  2. Schleifendurchläufe pro sec
  3. gewählter Anzeige-Modus (0=Zählerstände/1=aktuelle Werte/2=aktuelle Werte)
  4. aktueller state machine Status (FORW, REV, ROLL usw.)
  5. Fährt in Ladestation? (1/0)
  6. "spd" - Ansteuerung/Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (RPM)
  7. "sen" - Überstromzähler der Motoren: links, rechts, Mähmotor
  8. "bum" - Bumper Zähler: links, rechts
  9. "son" - Ultraschall Abstandsschwelle unterschritten (Zähler)
  10. "pit/roll" - Neigung (berechnet von Beschleunigungssensor)
  11. "com" - Kompass Kurs
  12. "per" - Perimeterschleife erkannt: Zähler
  13. "bat" - Akku Spannung
  14. "chg" - Ladestrom

Mittels der Taste 'v' kann zwischen Sensor-Zählerständen und den aktuellen Sensorwerten umgeschaltet werden.

Warning.png Zusätzlich kannst du mit Hilfe der Android-App 'pfodApp' die Sensorenausgaben über die Zeit grafisch darstellen (Zählerstände und aktuelle Werte). Das ermöglicht die drahtlose Überwachung deines Mähroboters zur Fehlersuche. Es ist sehr zu empfehlen.

Fehlercodes und deren Behebung

http://wiki.ardumower.de/index.php?title=Fehlerbehebung

Fehlerzähler / Fehlertöne

Gibt es ein Kommunikationsproblem oder ein anderes ernstes Problem, zählt der entsprechende Fehlerzähler hoch. der Fehlerzähler kann über die pfodApp eingesehen. Zusätzlich Piept der Roboter beim starten.

Siehe Abschnitt Troubleshooting für Details zu allen Fehlern.

I2C Bus / Fehlertöne

Verschiedene Komponenten (Arduino Nano, RTC, IMU, usw.) kommunizieren über den I2C Bus (SDA/SCL Leitung). diese Leitungen sollten sehr kurz sein (evt. verdrillt) und sie sollten weit weg von DC/DC Wandlern und Motortreibern sein. Wenn es ein Kommunikationsproblem gibt, wird der Fehlerzähler erhöht und der Roboter piepst beim Starten. Der Fehlerzähler kann über die pfodApp eingesehen werden.


Fehlersuche

Hardwarefehler finden

Um Fehler beim Zusammenbau oder den elektronischen Bauteilen zu finden wird empfehlen ein Oszilloskop zu verwenden (z.B. Pocket-Oszilloskop DSO201). Ein Oszilloskop ermöglicht das Messen von kurzzeitigen Einbrüchen bei der Versorgungsspannung, des Senders und Empfängers der Induktionsschleife, Odometrie-Signale und mehr.

Dso201.jpg

Anleitung für ein Pocket-Oszilloskop: http://www.ardumower.de/index.php/de/forum/anleitungen-hilfe/142-bedienung-oszilloskop-dso201


Fehlercodes

Wenn dein Ardumower periodisch piepst (4 Töne - Pause), ist er in einem Fehler-Status. Um den genauen Fehler zu finden, kann man die serielle Konsole oder die APP ('pfodApp->Error Counters') benutzen. Mögliche Lösungsvorschläge für jeden Fehler werden nachfolgend gegeben. Detaillierte Angaben zu deinen Robotereinstellungen, siehe Einstellungen.

 ERR_CPU_SPEED           Fehler CPU Geschwindigkeit
                         * I2C-Kabel überprüfen (z.B. Kabellängen kürzen)
 ERR_MOTOR_LEFT          Fehler  linker Getriebemotor
                         * Überprüfe Motortreiber und linken Getriebemotor
                         * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist
                         * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern
 ERR_MOTOR_RIGHT         Fehler rechter GetriebemotorRight gear motor error
                         * Überprüfe Motortreiber und rechten Getriebemotor
                         * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist
                         * beim Fahren: veringere 'Motor-Max-PWM' und 'Tracking-P' um EMF zu veringern
 ERR_MOTOR_MOW           Mähmotor Fehler 
                         * Überprüfe Motortreiber und Mähmotor
                         * MC33926: stelle sicher, dass der SLEW Jumper nicht gesteckt ist
                         * Veringere Motor-Max-Power, damit Überstrom früher erkannt wird
 ERR_MOW_SENSE           Mähmotor Überstrom
                         * Überprüfe Mähmotor-Treiber und Mähmotor
                         * Vergrößere Motor-Max-Power, damit Überstrom später erkannt wird
 ERR_IMU_COMM            IMU Kommunikationsfehler
                         * Überprüfe die Verbindung zum IMU-Modul
 ERR_IMU_CALIB           IMU Abgleich-Fehler
                         * Start 'IMU Abgleich' (entweder über die Konsole oder über pfodApp->Settings->IMU)                     
 ERR_IMU_TILT            IMU Neigungsfehler
                         * Überprüfe IMU-Modul und Ausrichtung des Roboters
 ERR_RTC_COMM            RTC Kommunikationsfehler
                         * Überprüfe die Verbindung zum RTC-Modul, RTC-Batterie usw.
 ERR_RTC_DATA            RTC-Daten sind fehlerhaft
                         * stelle und speichere Datum und Zeit
 ERR_PERIMETER_TIMEOUT   Perimeter-Signal, Zeitüberschreitung 
                         * Überprüfe Perimeter-Sender, Schleife usw.
                         * Überprüfe die Polarität der Perimeterspule
                         * veringere 'Perimeter-smag', damit die Auszeit größer wird
                         * Erhöhe 'Perimeter-timeout-seconds', damit die Auszeit größer wird
                         * Überprüfe, ob das Signal-Rausch-Verhältnis größer 1 ist.
 ERR_TRACKING            Perimeter-Folge-Fehler 
                         * Überprüfe Perimeter-Sender, Schleife usw.
                         * Erhöhe 'Perimeter-tracking-timeout', damit die Auszeit größer wird
 ERR_ODOMETRY_LEFT       Odometrie-Fehler linker Motor 
                         * Überprüfe das linke Odometrie-Kabel
                         * Überprüfe die Drehrichtung des linken Motors 
 ERR_ODOMETRY_RIGHT      Odometrie-Fehler rechter Motor 
                         * Überprüfe das rechte Odometie-Kabel
                         * Überprüfe die Drehrichtung des rechten Motors
 ERR_BATTERY             Akku-Fehler 
                         * Überprüfe Akku-Verbindung
 ERR_CHARGER             Ladefehler 
                         * Überprüfe Verbindung zum Ladegerät 
 ERR_GPS_COMM            GPS Kommunikationsfehler 
                         * Überprüfe GPS-Kabel
 ERR_GPS_DATA            GPS Datenfehler 
                         * Überprüfe GPS-Antenne und -Kabel
 ERR_ADC_CALIB           ADC Abgleich-Fehler
                         * Starte 'ADC calibration' (entweder über Konsole oder pfodApp->ADC calibration)
 ERR_EEPROM_DATA         EEPROM Datenfehler 
                         * Speichere Benutzer-Einstellungen (entweder über Konsole oder pfodApp->Settings-Save)

Nach Behebung des Fehlers kann dieser gelöscht werden:

Konsole:
press...
d for menu
e=delete all errors

I2C Fehler

Der I2C Bus muss einwandfrei funktionieren. Eine Konsolenausgabe welche bei der Zeile 'initL3G4200D' anhält deutet auf einen fehlerhaften I2C Bus hin.

Serieller Monitor auf Android-App ausgeben

Für den mobilen Einsatz kann man den seriellen Monitor per USB auch auf einem Android-Smartphone oder Android-Tablett ausgeben.

  • Android-App "Simple Serial Monitor" von Bernard Bekker aus dem Playstore herunterladen
  • Smartphone oder Tablett mit der OTG-Funktion (Bereitstellung eines USB-Host)
  • passendes OTG-Kabel
  • USB-Kabel

Die USB-Schnittstelle des Arduino Mega mit dem USB-Stecker des OTG-Kabels verbinden und dann die Android-App "Simple Serial Monitor" aufrufen. Die Übertragungsgeschwindigkeit einstellen und den Button "Start" drücken.

Damit steht ein vollwertiger serieller Monitor analog zur Arduino-IDE zur Verfügung. Es werden alle Systemmeldungen ausgegeben. Über die Kommandozeile können die üblichen Befehle aufgerufen werden.

Deaktiviere alle Pins, die nicht angeschlossen sind

Stelle sicher, dass alle Pins und Eigenschaften die nicht angeschlossen sind (nicht verwendet werden), in der Roboter-Konfiguration deaktiviert sind.

Beispiel: Wenn du die Odometrie-Pins nicht beschaltet hast, muss Odometrie in der Roboter-Konfiguration deaktiviert werden. (mower.cpp):

odometryUse       = 0;       // use odometry?

Probebetrieb ohne Mähmotor-Treiber

Sofern man den Ardumower im Probebetrieb ohne Mähmotor-Treiber testen möchte, so ist der PIN "pinMotorMowFault" auf High zu setzen. Damit verschwindet die Fehlermeldung "Error: Motor mow fault" und der Mover kann getestet werden.

Drehen die Motoren richtig?

Führe einen Motortestlauf aus. Gehe in die serielle Konsole (Arduino IDE: STRG+SHIFT+M, 19200 Baud) drücke 'd' und ENTER um ins Menü zu gelangen. Dann drücke '1' und ENTER. Es startet der Motortest.

Unerwartete Sensorauslösung

Wenn dein Roboter etwas Unerwartetes tut, kann es an einem Sensor liegen, der fehlerhaft auslöst. Überprüfe das über die serielle Konsole:

Starte die serielle Konsole (Arduino IDE: CTRL+SHIFT+M, 19200 Baud), und schalte den Roboter ein. Jedes Mal, wenn ein Sensor auslöst, wird der Zähler dieses Sensors erhöht. Siehe Beschreibung der Sensoren weiter unten. Wenn sich also der Roboter nicht so verhält, wie er soll, dann schau dir die Sensor-Zähler an und stelle fest, welcher Zähler hochzählt, um das Problem zu lokalisieren.

Einige Sensoren lösen nicht aus?

...

Keine Verbindung über Bluetooth

  • Stelle sicher, dass die Baudrate des BT-Modules richtig eingestellt ist (verwende die Ardumower Konsole) - Aktiviere den Programmier-Modus des BT-Modules und stelle die Baudrate ein Bluetooth & App.
  • Stelle sicher, das das BT-Modul mit dem Handy "gepaart" ist
  • Überprüfe, dass der Arduino Mega nicht über USB mit Strom versorgt wird.

Roboter dreht sich im Kreis wenn er auf die Schleife trifft (Home Modus)

Zunächst sicherstellen, dass das Perimeter Tracking funktioniert: den Roboter manuell auf die Schleife setzen und via ArduRemote "Commands->Track" wählen und sicherstellen dass der Robote die Schleife abfährt. Falls dies nicht klappt könnte ein Tuning der Tracking PID-Parameter helfen.

Die Position der Spule sollte wie angegeben sein:

Wenn er über die Schleife fährt (Spule liegt dann also "außerhalb" der Schleife) muss er ja durch Drehen wieder mit der Spule nach "innerhalb" der Schleife kommen. Wenn das durch Drehen nicht klappt würde er nicht mehr aufhöhren mit dem Drehen.

Je weiter er drüber gefahren ist umso schlechter kann er die Spule durch Drehen wieder nach "innerhalb" bekommen. Die Fahrgeschwindigkeit zu reduzieren und die Positionierung der Spule nach weiter außen sollte helfen.

Folgender Test ist hilfreich: In der ArduRemote-App unter "Plot->Perimeter" lässt Du Dir den Schleifen-Plot anzeigen. Hier werden die einzelnen Werte erklärt: http://wiki.ardumower.de/index.php?title=Perimeter-Schleife#Problemanalyse_und_Fehlerbehebung_am_Empf.C3.A4nger

Dann setzt Du den Roboter mit der Hand manuell an die Position wo Du meinst dass er die Schleife erkannt hat ("mag" sollte dort von negativ zu positiv wechslen bzw. "in" zu "out"). Jetzt drehst Du den Roboter mit der Hand (also ohne Motor) und schaust ob "mag" wieder von positiv zu negativ wechselt (bzw. "out" zu "in"). Wenn das nicht klappt stimmt etwas mit der Position der Spule nicht bzw. der Roboter fährt zu weit über die Schleife (dann die Geschwindigkeit verringern).

Konsolen-Ausgabe

Beim Start des Roboters wird über die serielle Konsole beispielsweise folgendes ausgegeben:

 START 
 Ardumower rXXXX
 press...
   d zum Menü
   v um Konsolenausgabe zu ändern (Sensor-Zähler, Werte, Perimeter usw.)


t     0 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower
t     1 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower
t     3 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower


Wenn ein Sensor auslöst, wird sein Zähler erhöht. Beispiel (Mähmotor-Überstromsensor löst aus):

t     4 l177 v0 FORW spd   33   33    0 sen    0    0    0 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  0 Ardumower
t     5 l177 v0 REV  spd  -26  -26    0 sen    0    0    1 bum    0    0 dro    0    0 son   0 yaw   0 pit   0 rol   0 bat 20.8 chg 21.7  0.0 imu  0 adc  1 Ardumower


Hier ist eine Beschreibung jeder Spalte:

t - Zeit des akt. Maschinenzustands (ms)
l - Programmschleifen-Durchläufe/sek 
v - Anzeige-Modus des ausgewählten Sensors (0 = Zähler / 1 = Sensorwerte ​​/ 2 = Sensorwerte​​) 
- aktueller Status (FORW, REV, ROLL usw.) 
- Nachhause-Fahrt? (1/0) 
spd - Steuerung / Drehzahl der Motoren: links (PWM), rechts (PWM), Mähmotor (speed) 
sen - Motor-Überstromzähler:  links, rechts, Mähmotor 
bum - Bumperzähler: links, rechts 
son - Ultraschall- Distanz-Unterschreitung: Zähler 
pit, roll - inclination (berechnet mit Beschleunigungssensor) 
yaw - Kompass-Kurs
bat - Akkuspannung
chg - Ladespannung


---Befehle---

'd': Testmenü, Abgleich IMU, Bluetooth
'v': Anzeigemodus(zeigt Werte oder Zähler
'h': Fahr zur Ladestation
'p': Schleifenfahrt
'l': simuliert linken Bumper
'r': simuliert rechten Bumper
's': simuliert Rasensensor
'm': schaltet Mähmotor
'c': simuliert Laden
'+': drehen 90 Grad
'-': drehen 90 Grad 
'3': aktiviert Fernsteuerung
'0': Aus
'1': Automode, Mähmotor an

Wie melde ich einen Programmfehler/eine neue Eigenschaft/neuen Programmcode

Klicke auf 'this link' und erzeuge ein neues Thema - bitte teile uns folgendes mit:

   Deine Plattform (Arduino Mega 2560, Arduino Due)
   Deine Arduino IDE-Version (der letzte Programmcode erfordert 1.6.3)
   Dein genaues Betriebssystem (Windows 8, Linux usw.)
   Deine Ardumower-Programmversion  (eine Liste der Veröffentlichungen siehst du hier https://github.com/Ardumower/ardumower/releases)
   Jede andere Info, die brauchbar sein kann...

Weitere Links

  1. Diagnostic