Mein Ardumower

TobyLorenz

New member
Ich wollte mal etwas frustriert den Stand meines Ardumowers präsentieren.
Gekauft habe ich die Teile als Winterprojekt, damit der Roboter im Frühling dann einsatzbereit ist. Leider hat es bisher noch immer nicht geklappt.

Man muss dazu sagen, dass ich immer mal wieder sporadisch daran weiter arbeite und nicht viele Möglichkeiten habe, die Elektronik zu diagnostizieren. Kein Oszi oder so. Deswegen versuche ich rein über die Software raus zu bekommen, was alles nicht geht. Nach meinem Empfinden macht die Software für eine reine Inbetriebnahme aber schon viel zu viel. Deswegen habe ich mir eine eigene Inbetriebnahmesoftware geschrieben.

Ergebnis:
- ESP8266 WiFi und HC-05 Bluetooth haben noch nie funktioniert.
- Die GY-80 IMU geht nur teilweise: BMP180, ADXL345 und L3G4200D gehen. Der HMC5883L Kompass geht nicht. Schon kaputt?
- Die TinyRTC (DS1307 und AT24C32) geht, wobei der Zeitabgleich natürlich noch nicht geklappt hat.
- GPS geht nicht. Zumindest hat das Modul mal geleuchtet. Dann habe ich gelesen, dass man die TX/RX Pins verdrehen muss. Seither leuchten die LEDs gar nicht mehr. Wieso gibt es nicht schon längst eine PCB 1.4, die den Fehler korrigiert?

Natürlich könnte ich jetzt einfach alle nicht funktionierenden Module (GPS, Bluetooth, WLAN, IMU) neu bestellen. Aber ob dass das Problem löst, weiß ich nicht.

Mechanisch stellen sich immer wieder Fragen:
- Wie sind denn die Perimetersensoren gedacht? Kann ja nicht sein, dass man die Platinen außen drauf klebt. Was wenn da mal Feuchtigkeit dran kommt?
- Etwas umständlich ist schon, dass man zum Flashen/Monitoren jedes Mal den Deckel aufschrauben muss. Die Adern sind so kurz, dass man den Deckel auch nicht sinnvoll daneben stellen kann. Wieso ist da nicht standardmäßig eine externe USB-Buchse im Bausatz dabei?

Beruflich bin ich Softwarearchitekt/-programmierer. Mit der Arduino IDE arbeite ich erstmals und wirklich toll ist die nicht, wenn man mal QtCreator, Visual Studio oder etwas vergleichbares benutzt hat. Auch fehlt der Arduino-Umgebung einfach massiv normale C++ Unterstützung. Wieso gibt es keine std::string Klasse, dafür aber eine stark limitierte String Klasse. Gleiches mit Console/Serial oder ähnliches. Wieso kann Arduino nicht einfach eine normale std::stream Klasse nutzen? Kurzum: Wieso wurde das Projekt nicht einfach mit einer richtigen Linux-basierten Hardware (Raspberry Pi oder ähnlich) gemacht? Da könnte man Web-Server zur Bedienung drauf bringen, die Sensoren/Aktoren über MQTT (wie auch bei IoT üblich) anbinden oder sogar ROS direkt darauf laufen lassen und von allen vorhandenen Bibliotheken (Sensor Fusion, SLAM) profitieren. Ich hätte Lust den Arduino raus zu schmeißen und alles mit Raspberry und ROS neu aufzubauen. Aber dann bin ich wahrscheinlich nächstes Jahr noch nicht fertig.

Gibt es jemanden, dem ich den ganzen Kram schicken kann und der mir das fertig baut? Ich überlege schon, mir übergangsweise einen richtigen Rasenmähroboter (Husqvarna oder so) zu kaufen, wobei dann die Motivation den Ardumower fertig zu bauen weg ist.

Soweit so gut...
 
Ich habe in der Software jetzt mal alle Optionen ausgeschaltet, wo m.E. die Hardware dahinter nicht geht.

Über den seriellen Monitor kann ich zumindest jetzt die Motoren drehen lassen und sehe auch irgendeine Odometry. Wobei ich nicht weiß, wie weit das Rad für eine Umdrehung zählen muss. Sei es drum.

Auf der Konsole sehe ich erwartungsgemäß einige I2C Devices:
12:12:36.828 -> Scanning for I2C devices...
12:12:36.828 -> I2C device found at address 0x50 (probably AT24C32)
12:12:36.828 -> I2C device found at address 0x53 (probably ADXL345B)
12:12:36.828 -> I2C device found at address 0x68 (probably DS1307)
12:12:36.860 -> I2C device found at address 0x69 (probably MPU6050/9150 or L3G4200D)
12:12:36.860 -> I2C device found at address 0x77 (probably BMP180)
12:12:36.860 -> done

Trotzdem zeigt er mir dann auch folgende Fehlermeldungen an:

"IMU comm error": Was sagt mir das? Auf der IMU gehen zumindest Accel, Gyro und Baro-Sensoren, nur halt der Kompass nicht. Aber die Option habe ich gerade abgeschaltet. Wieso gibt es einen comm error, wo die Kommuníkation doch funktioniert?

"Error: perimeter too far away": Ja, ist ja auch normal, weil ich den Roboter mitten auf der Wiese aussetze. Wieso ist das ein Fehler und kein normaler Betriebszustand, dass der Roboter nicht am Perimeter gestartet wird?

Wie starte ich den Roboter jetzt? Piepsen tut er ja schon, wenn er nicht gerade am USB-Kabel hängt. Nur der Taster macht halt gar nichts.

Was bedeuten die verschiedenen Piep-Signale?
 
Hi Toby,

I too am in the middle of building my robot, I haven't yet put it to work, but I have gotten it to drive around in my livingroom. I think that the "perimeter too far away" error happens if you have the perimeter sensor enabled in the software. From what I've figured out, the robot needs to be able to "hear" the perimeter wire signal the whole time that it is mowing, or else it refuses to move.

I think that you can disable the Perimeter sensor option in the software "perimeterUse", which might make the robot start moving when you start it.

Regarding your issues with the bluetooth pairing .... I wonder if any of my comments in https://forum.ardumower.de/threads/anfänger-fragen-hilfe-benötigt.23775/# post-40782 might be helpful in getting that working? I have ArduRemote on my android phone working well now. (I haven't gotten my IMU installed / enabled yet)

One of the confusing things for me when changing the software, is that I believe that changing settings like "perimeterUse = 1" doesn't do anything unless I do a factory reset, because there's a flash memory store of "overridden values" for these settings ....

I look forward to hearing what you get. I'm in the "excited" phase of building my mower.
 
Oben