Vorwerk Kobold VR100 einbinden - XBee?

Hallo,

ich plane im Zuge meines bevorstehenden Umzugs, auch den Staubsaugerroboter zu wechseln. Bislang hat bei mir ein Roomba 560 diesen Deinst verrichtet und mich auch insgesamt immer zufrieden gestellt. Allerdings dürfte dieser mit den 100qm der neuen Wohnung überfordert sein, außerdem halte ich das „chaotische“ Navigationsverhalten inkl. hässlicher „Lighthouses“ in jeder Tür für nicht mehr zeitgemäß. Es gibt mittlerweile besseres, nämlich nach allem was ich herausfinden konnte, beispielsweise den Vorwerk Kobold VR100. Dieser kostet dann auch eine Kleinigkeit mehr als mein alter Roomba, dafür navigiert das Gerät per Laser (eine Art rotierender Laser-Abstandssensor scannt quasi zweidimensional den Raum, und das soll nach einhelliger Meinung von Kunden, Testzeitschriften und natürlich von Vorwrk auch sehr gut funktionieren).
Hauptvorteil ist, dass dieses Gerät keine Lighthouses o.ä. benötigt, die jeweils Batterien brauchen und im Weg herumstehen.

Nun ist es wohl so, dass der Kobold auf der Plattform des Neato-Roboters basiert, dem man eine exzellente Navigation, aber eher mittelmäßige Saugleistung nachsagt. Hier hat dann Vorwerk wohl nachgebessert und insgesamt ist anscheinend ein brauchbares, zeitgemäßes Gerät entstanden. Ob das so ist, werde ich dann feststellen wenn ich das Gerät mal selbst ausprobiert habe. Ich werde die Tage noch mal einen Besuch im Vorwerk-Ladengeschäft hier in Hamburg abstatten und dann wohl den Kobold mitnehmen.

Den Roomba hatte ich natürlich damals standesgemäß per XBee an meine Automatisierung angebunden, was vor Allem wegen der so realisierbaren Funktion „Start bei Abwesenheit“ sehr attraktiv war. Das Leben von meiner Frau und mir verläuft eher nicht nach Zeitplänen, so dass eine reine Zeitplanung für uns nicht wirklich praktikabel ist, es sei denn man möchte dauernd so eine kleine Flunder zwischen den Füßen herumflitzen haben.

Den Kobold kann man offenbar auch mit dem PC steuern, denn er verfügt über eine USB-Schnittstelle. Zum Neato habe ich das hier gefunden, eine Art Befehlsreferenz. So wie es aussieht ist das Protokoll geradezu kinderleicht. Alles was man zum Testen braucht ist ein serielles Terminalprogramm und einen Treiber um die serielle Schnittstelle zu emulieren. Ich traue mir prinzipiell zu, meine Roomba-Anbindung auf den Kobold zu portieren, das scheint von der Programmierung nicht sonderlich kompliziert zu sein.

Was schon schwieriger ist, ist die Frage wie man es hinbekommt dass die Fernsteuerung drahtlos erfolgen kann. Man kann den Kobold ja schlecht mit USB-„Nabelschnur“ herumflitzen lassen. Möglicherweise gibt es intern eine ganz normale RS-232-Schnittstelle, die man irgendwo „anzapfen“ kann, so dass sich mit dem XBee arbeiten lässt. Dazu müsste man das Gerät dann aber wohl öffnen, und so erstmal schön die Garantie sausen lassen. Das fällt einem natürlich nicht so leicht bei einem teuren Neugerät.

Ansonsten gibt es wohl ein paar Lösungen für Wireless USB, denen aber in meiner Erfahrung nur eines gemein ist, nämlich dass sie bei allem was nicht Drucker oder Festplatte ist, ihren Dienst versagen.

Daher möchte ich das Thema als Bastelwilliger hier erst einmal in die Runde werfen, vielleicht fällt ja jemandem etwas gescheites ein. Für mich spricht erstmal nichts dagegen mir so ein Ding demnächst zu besorgen und es zur Not auch zu zerlegen, im Dienste der Erkenntnisfindung. Nur was interne Umbauten betrifft, würde ich mich überwinden müssen…

Und schon habe ich etwas spannendes gefunden, ganz ohne Kaufen und Garantieverlust (könnte aber sein dass dieser Fund bei mir noch zu beidem führen wird :wink: ):

Abgreifen der seriellen Schnittstelle beim Neato

Sieht aus als gäbe es da bald mal wieder etwas zu basteln…

Habe gerade ein Gerät namens Silex SX-2000WG WLAN USB 2.0 Netzwerk-Server entdeckt, das wohl prinzipiell einen USB-Anschluss per WLAN Windows-Rechnern zugänglich machen kann. Ist allerdings ein kleines Kästchen das die Frage der Unterbringung und Stromversorgung aufwirft. Ein XBee wäre deutlich kleiner und ließe sich wohl im Innern des Roboters unterbringen (war beim Roomba kein Problem). Allerdings weiß ich nicht ob der XBee die hohe Übertragungsrate (115200 8N1) packt. Meine, hier im Forum mal gelesen zu haben dass das nicht so einfach möglich ist.

Mich wundert ja ehrlich gesagt fast, dass die bei Neato nicht selbst ein entsprechendes Modul haben und anbieten…

Hat schon jemand den VR100 irgendwie automatisch über IPS gestartet bekommen?
Da ich seit einigen Wochen so ein Gerät besitze liegt es natürlich nahe den Vorwerk VR 100 automatisiert bei Abwesenheit in Bewegung zu setzen.

Hallo!

Ich bin auch grad dabei. Ich melde mich bei Erfolg;)

http://www.robotreviews.com/chat/viewtopic.php?t=15349&f=4
http://www.neatorobotics.com/programmers-manual/

Die Neato API geht auch beim Vorwerk, das konnte ich schon testen…

Gruss, Michael

Das ist ja prima. Wollte ich auch gerade mal testen…

ich bin gespannt wer zuerst ein Ergebnis hat.

Das Thema steht bei mir auch noch auf der To-Do-Liste, allerdings momentan nicht so weit oben. Der Kobold verrichtet bislang ja auch ohne direkte Anbindung ganz gut seinen Dienst.

Ich wäre allerdings niemandem böse, der hier seine Lösung für IPS präsentierte :smiley:

Geht mir auch so.
Werde immer mal wieder am Wochenende etwas weiter tüfteln.

Hallo!

So, der erste Schritt ist gemacht. Der Kobolt redet mit mir - drahtlos. Ich hatte mir zwar extra ein Wlan Modul besorgt, aber leider musste ich feststellen, das das Modul nicht ohne externe Reset Logik auskommt. Da mir die Lust zum weiterbasteln fehlte, ist es nun ein Bluetooth Modul geworden, das noch in der Ecke lag. Das klappt auch Problemlos. Gestern Abend habe ich ihn per Shell zur Ladestation gefahren :smiley:

Als naechstes geht es dann um die Einbindung in IPS. Das sollte nicht so schwer werden…

Anscheinend kommt man an die Lidar Daten (laser scanner) nur ueber den USB Port. Aber was solls, ich weiss ja wie meine Räume aussehen… Vielleicht verpasse ich ihm irgendwann ja noch mal einen Gumstick MiniPC - who knows. Für einen RasperryPi ist es zu eng.

Gruss, Michael

Da warst du ja fleißig.
Bluetooth ist ja schonmal sehr gut. Vielleicht sogar die bessere Wahl? Auf jedenfall Platz sparend.

Toll! :slight_smile:

Wirft natürlich gleich Fragen auf:
-was für Module sind das auf Kobold- und Rechnerseite?
-haben die genug Reichweite, damit es auf ca. 100qm keine Funklöcher gibt?
-ist mit Störungen durch/von Eingabegeräte(n) etc. zu rechnen? Sprich, geht da dauernder Traffic rüber, der das Frequenzband zumüllen könnte?

und natürlich:
-gibt es mehr Fotos?

Freude!

Hallo!

-was für Module sind das auf Kobold- und Rechnerseite?
-haben die genug Reichweite, damit es auf ca. 100qm keine Funklöcher gibt?
-ist mit Störungen durch/von Eingabegeräte(n) etc. zu rechnen? Sprich, geht da dauernder Traffic rüber, der das Frequenzband zumüllen könnte?

Also, auf der Rechnerseite steckt ein normaler Bluetooth Stick (Class1, 100m Reichweite). Der PC sieht das Bluetooth Modul im Kobolt als virtuellen Comport. Reichweitenprobleme solltest du bei 100m2 nicht haben, aber Nagel mich nicht drauf fest;) Störungen gibt es nicht. Bluetooth macht Frequenz Hopping.

Mehr Fotos habe ich nicht, aber die ersten Zeilen Code.

Zyklisch Pollen:

<?
if($IPS_SENDER == "TimerEvent" )
{
	$poll = array('getcharger', 'getmotors', 'getdigital');
	$cnt = getvalue(26704 /*[Technik\Playground\Neato\poll\poll_cycle_cnt]*/ );
	
   $result = CSCK_SendText(21593 /*[Client Socket Neato]*/ , $poll[$cnt] ."\r");

	$cnt++;

	if ($cnt >= count($poll)) $cnt = 0;
	
	setvalue(26704 /*[Technik\Playground\Neato\poll\poll_cycle_cnt]*/ , $cnt);

	define ( "DelayOn" , 3 , true ); 
	IPS_SetScriptTimer ( $IPS_SELF , DelayOn );
}
?>

RegisterVariable triggert dies Scipt:

/*
0 = bool
1 = int
2 = float
3 = string
*/
$charger_vars =array('FuelPercent' => 1,
							'BatteryOverTemp' => 0,
							'ChargingActive' => 0,
							'ChargingEnabled' => 0,
							'ConfidentOnFuel' => 0,
							'OnReservedFuel' => 0,
							'EmptyFuel' => 0,
							'BatteryFailure' => 0,
							'ExtPwrPresent' => 0,
							'ThermistorPresent[0]' => 0,
							'ThermistorPresent[1]' => 0,
							'BattTempCAvg[0]' => 1,
							'BattTempCAvg[1]' => 1,
							'VBattV' => 2,
							'VExtV' => 2,
							'Charger_mAH' => 1,
							'MaxPWM' => 1,
							'PWM' => 1,
							'lithiumChargeEnabled' => 0,
							'lithiumChargeDone' => 0);
							
							
$motor_vars = array('Brush_MaxPWM' => 1,
							'Brush_PWM' => 1,
							'Brush_mVolts' => 1,
							'Brush_Encoder' => 1,
							'Brush_RPM' => 1,
							'Vacuum_MaxPWM' => 1,
							'Vacuum_PWM' => 1,
							'Vacuum_CurrentInMA' => 1,
							'Vacuum_Encoder' => 1,
							'Vacuum_RPM' => 1,
							'LeftWheel_MaxPWM' => 1,
							'LeftWheel_PWM' => 1,
							'LeftWheel_mVolts' => 1,
							'LeftWheel_Encoder' => 1,
							'LeftWheel_PositionInMM' => 1,
							'LeftWheel_RPM' => 1,
							'RightWheel_MaxPWM' => 1,
							'RightWheel_PWM' => 1,
							'RightWheel_mVolts' => 1,
							'RightWheel_Encoder' => 1,
							'RightWheel_PositionInMM' => 1,
							'RightWheel_RPM' => 1,
							'Laser_MaxPWM' => 1,
							'Laser_PWM' => 1,
							'Laser_mVolts' => 1,
							'Laser_Encoder' => 1,
							'Laser_RPM' => 1,
							'Charger_MaxPWM' => 1,
							'Charger_PWM' => 1,
							'Charger_mAH' => 1);
							
$digital_vars = array('SNSR_DC_JACK_CONNECT' => 0,
							'SNSR_DUSTBIN_IS_IN' => 0,
							'SNSR_LEFT_WHEEL_EXTENDED' => 0,
							'SNSR_RIGHT_WHEEL_EXTENDED' => 0,
							'LSIDEBIT' => 0,
							'LFRONTBIT' => 0,
							'RSIDEBIT' => 0,
							'RFRONTBIT' => 0);

$response = explode("
", $IPS_VALUE);

switch (trim($response[0])){
	case 'getcharger': $resp_type = 'charger'; $var_type = $charger_vars; break;
   case 'getmotors': $resp_type = 'motor'; $var_type = $motor_vars; break;
   case 'getdigital': $resp_type = 'digital'; $var_type = $digital_vars; break;
	}



if ($resp_type == 'charger' || $resp_type == 'motor' || $resp_type == 'digital')
{
	foreach($response as $line)
	{
		if(trim($line) != "")
		{
			$var = explode(",", $line);

			if(count($var) > 1)
			{
				$var[1] = trim($var[1]);

				if(array_key_exists($var[0], $var_type))
				{
					switch ($var_type[$var[0]]){
					   case 0: $val = (bool)$var[1]; break;
					  	case 1: $val = (int)$var[1]; break;
						case 2: $val = (float)$var[1]; break;
						case 3: $val = (string)$var[1]; break;
						}
					SetValue(CreateVariableByName($IPS_SELF, $resp_type ."_" .$var[0], $var_type[$var[0]]), $val);
				}
			}
		}
	}
}

function CreateVariableByName($id, $name, $type)
{
   global $IPS_SELF;
   $vid = @IPS_GetVariableIDByName($name, IPS_GetParent($id));

   if($vid===false) {
      $vid = IPS_CreateVariable($type);
      IPS_SetParent($vid, IPS_GetParent($id));
      IPS_SetName($vid, $name);
      IPS_SetInfo($vid, "This Variable was created by Script #$IPS_SELF");
   }
   return $vid;
}
?>

Mit dem Putzen beginnen:

$result = CSCK_SendText(21593 /*[Client Socket Neato]*/ , "clean\r" );

Als nächsten werde ich die interessanten Variblen verlinken und auswerten.

Bei mir steckt der Bluetooth Stick nicht am Server, deshalb der Client Socket im Code.

Der Kobolt läuft auf 115200baud, 8n1.

Gruss, Michael

Das sieht toll aus, vielen Dank fürs Teilen!

Kannst du mir den Typ dieses Moduls bzw. eine Bezugsquelle nennen?

:slight_smile:

Hallo,

ich verwende folgendes Modul (liegt schon ein paar Jahre hier):

Free2Move F2M03GXA

dies hier ist sogar Pinkompatibel:

Sparkfun bluetooth SMiRF Gold

btw. ich fahre den Kobolt grad durchs haus:

Gruss, Michael

Super, habe ich mir mal bestellt.

Ich will das Ding ja eigentlich nur fernstarten und -stoppen können, aber wenn man natürlich irgendwie herausbekäme, in welchem Raum er gerade ist und das im Webfront anzeigen könnte träum… wird allerdings wohl mangels LIDAR-Daten schwierig. Ich hatte sowas damals schon beim Roomba versucht anhand der IR-Sensoren und Lighthouse-Pakete, aber das hat auch schon nicht geklappt.

Insgesamt scheint mir die API des Kobolds etwas vielseitiger zu sein. Weißt du schon, ob man den Testmodus auch im normalen Betrieb einschalten kann, oder funktioniert dann nur noch die direkte Ansteuerung von Aktoren und nicht mehr z.B. ein normales Reinigungsprogramm?

Und braucht man bei dem Modul noch irgendeine Pegelanpassung o.ä.?

Danke auf jeden Fall für die Infos schonmal!

Hi,

ich möchte das Thema gerne noch mal hervorholen. Bei mir steht auch der Kauf eines Saugroboters an und als langjähriger Vorwerkkunde kommt dieser schon mal in die engere Auswahl.

Wie sind denn eure Erfahrungen was Saugleistung, Qualität, Akkuleistung, etc angeht ? Auch im Vergleich zum Roomba oder anderen Herstellern.

Wie sieht es mit der IPS Anbindung aus ? Funktioniert das genannte BT Modul problemlos, auch auf 100 m² (ich hab 130, aber auf 2 Ebenen und würde evtl einen 2. Empfänger platzieren) ? Im Prinzip will man doch nur, dass er Zeit- oder Eventabhängig startet, in die Ladestation fährt und er Probleme meldet, oder ?

Viele Grüße
Martin

Durchweg besser als beim Roomba. Der Kobold fährt wesentlich planvoller und nicht so chaotisch wie der Roomba. Saugleistung ist sehr gut und im Gegensatz zum Roomba muss man nicht nach jeder Reinigung die Bürsten säubern. Lautstärke ist bei beiden Geräten ähnlich. Einziger Wermutstropfen ist, dass der Kobold etwas „zickiger“ in Bezug auf herumliegende Kabel und während des Betriebs umgestellte Hindernisse ist.

Ich bereue die Anschaffung kein Stück weit. Nur das mit der Anbindung habe ich bislang aus Zeitgründen noch nicht in Angriff nehmen können.

Danke !

Dann werde ich mich mal auf die Suche nach dem günstigsten Angebot machen… :slight_smile:

Generelle Erfahrungen mit dem VR100
Also der Saugroboter überzeugt mich bis jetzt in allen Disziplinen. Verarbeitung und Saugleistung wirklich super. Insbesondere die sehr intelligente Navigation überzeugt. Ich habe auch einen Scooba (ähnlich wie Roomba, nur halt ein Wischroboter) aber die Zufalls-Navigation ist absolut nicht überzeugend. Ich würde mir den VR100 auf jeden Fall wieder kaufen und kann das Gerät auch weiterempfehlen.

Einbau BT Modul in VR100
Fragen: Muß ich zum Einbau des BT-Moduls das Gehäuse öffnen (Garantieverlust?) oder kann man das BT-Modul auch von außen über den USB-Anschluß betreiben? Bzw. lässt sich das Gehäuse problemlos öffnen?

Einbau WiFi/WLAN in VR100
Gibt’s hierzu Einbaubeschreibungen und Kaufempfehlung für WLAN Modul?
Ich persönlich würde ein WLAN Modul bevorzugen.

Danke

Ich weiß nicht, was mich geritten hat, aber ich habe es heute mal probiert, meinen Kobold mittels BlueSMIRF eine Bluetooth-Schnittstelle zu verpassen. Im Prinzip war das sehr einfach, denn wie bereits bemerkt wurde ist dieses Modul pinkompatibel, man kann es also direkt 1:1 so einbauen ohne zusätzlichen Pegelwandler o.ä…

Knifflig war natürlich wieder mal, den Roboter auseinanderzunehmen und danach korrekt wieder zu montieren. Ich persönlich finde den Kobold in der Hinsicht fast noch nerviger als den Roomba. Na ja, immerhin ist mir dabei aufgefallen dass das Gummiringchen um die Seitenbürste aufgrund von Korrosion gerissen war. Ich werde also, wenn die bestellten Ersatzgummiringe da sind, das Aufschraubspielchen nochmal wiederholen dürfen… so gewinnt man Übung. :wink:

Das allernervigste - und insoweit deckt es sich mir vorhergegangenen Erfahrungen - war tatsächlich die Einbindung in Windows. Als Mac-User bin ich, was Bluetooth angeht, ziemlich verwöhnt, aber unter Windows 7 war es einmal mehr eine Katastrophe. Weder mit den normalen Bluetooth-Tools von Windows, noch mit dem unsäglich hässlichen BlueSoleil ließ sich eine stabile Serial-over-Bluetooth-Verbindung konfigurieren, die nicht nach kurzer Zeit mit irgendwelchen Systemfehlermeldungen abriss und sich auch nach Verbindungsunterbrechung wieder herstellen ließ.

An dem Punkt hängt es jetzt also bei mir. Den Roboter Bluetooth-fit zu machen und mit ihm zu sprechen (mit einem Terminal unter OSX) war quasi Plug&Play. Aber nun suche ich dringend ein Bluetooth-Modul (Hardwareinterface), mit dem man unte WIndows 7 stabile und nach Abbruch wieder herstellbare Verbindungen hinbekommt.

So wie es jetzt ist, muss ich nach jedem Serverneustart mich anmelden, BlueSoleil starten, dort von Hand die Verbindung herstellen, was meistens nach ca. 3 Versuchen klappt. Das gleiche ist nötig, wenn der Roboter sich zwischendrin mal abgeschaltet hatte oder außer Reichweite war. :mad:

Wie dem auch sei, niemand hier kann etwas für die lausige BT-Implementierung unter Windows. Dir, mibu, auf jeden Fall vielen Dank für die Hinweise und die Empfehlung des Moduls für den Roboter; Der Tipp war sehr gut und hätte sich Vorwerk ordentliche Gummiringe geleistet, müsste ich das Ding nie wieder aufmachen :wink:

Für Hilfe bzgl. des Bluetooth-Zugs in Win7 wäre ich sehr dankbar!