PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Asuro vs. Handy: Erste Eindrücke



trapperjohn
26.05.2008, 14:28
Ich bin gerade dabei, meine Diplomarbeit über die Anbindung eines (bzw. meines ...) Handys an den ASURO zu schreiben.

Vielleicht interessierts euch ja ein wenig ...

Es soll einerseits die Möglichkeit gegeben sein, per Software auf dem Handy den ASURO zu steuern und seine Daten abzufragen, um so bspw. Einsteigern die Möglichkeit zu bieten, direkt mit Java zu arbeiten anstatt sich mit dem Mikrocontroller und C rumzuschlagen ...

Andererseits soll es auch möglich sein, das Handy als Ein-/Ausgabegerät für bestehende ASURO Programme zu nutzen, um bspw. Statuswerte etc. anzuzeigen.

Eine letzte Funktionalität ist die Nutzung der Bluetooth-Schnittstelle im Handy, um mit einem PC Daten auszutauschen und so die Fernbedienung vom PC (sowie Anzeige von Daten des ASURO) zu ermöglichen.

http://farm3.static.flickr.com/2420/2523509671_22dda8e3a9.jpg (http://www.flickr.com/photos/nochancetogetacoolname/2523509671/sizes/o/)

Die grundlegende, einigermaßen vor Übertragungsfehlern sichere, Kommunikation mit dem Handy funktioniert schon recht gut. Als nächstes werde ich mich der PC Software widmen und mir dann auch endlich mal Gedanken über eine Befestigung des Telefons auf dem ASURO Gedanken machen ...

Wenn alles fix+fertig, abgegeben und bewertet ist, werde ich das Ganze dann auch zum Download und Nachbasteln anbieten O:)

Gruß,
Florian

oberallgeier
26.05.2008, 16:09
Könntest Du dann bitte auch mal die Rufnummer von Deinem Asuro posten?

Sternthaler
26.05.2008, 16:36
Hallo trapperjohn,

welche Schnittstelle nutzt du aktuell, wenn Bluetooth jetzt noch nicht aktiv ist?

Die Telefonnummer kann ich auch gebrauchen ;-)

Gruß Sternthaler

trapperjohn
26.05.2008, 17:00
Null-Neunhundert und sechs mal die sechs. Fragt nach Gabi! :-D

Ich habe IR-Diode und -Empfänger gegen Buchsenleisten getauscht. Zum Flashen und zum Testen der Handy-Software stecke ich einfach 2 Kabel in die RXD und TXD Buchse und gehe dann über einen Pegelwandler direkt in den PC.

Die Kommunikation zwischen Handy und ASURO findet über ein VDRIVE-Modul mit dem Vinculum (VNC1L) Chip statt. Der ermöglicht mit der passenden Firmware die serielle Verbindung zum Handy (über dessen USB Datenkabel).

radbruch
26.05.2008, 17:10
"nach Hause telefonieren" wollte der asuro sicher schon immer mal

Sternthaler
26.05.2008, 21:04
Hallo trapperjohn,
irgendetwas stimmt mit der Telefonnummer nicht. Gabi ist da nicht zu erreichen!

Nun, wo du mir auf die Sprünge geholfen hast, kann man die Verbindung auch auf deinem Foto identifizieren.
Zur Statusübertragung (und noch ein bisschen anderes) gibt es in diesem Thread (https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=31073) ein Asuro- und PC-Programm (Visualbasic).
Die Kommunikation wird natürlich Asuro-Typisch mit 2400 Baud gemacht. Keine Ahnung, ob am Handy diese Geschwindigkeit einstellbar ist, bzw. was man dann bei der eigentlichen USB-Kommunikation einstellen kann/muss.
=; Natürlich darfst du den Thread nicht besuchen. Schliesslich muss bei einer Diplomarbeit ja alles selber gemacht werden. :-#

Ich kann aber nicht so recht nachvollziehen, warum man sich nun nur noch mit Java und nicht mehr mit C und Mikrokontrollern rumschlagen sollte.

Viel Erfolg und vor allem auch viel Spaß mit deiner Arbeit.
Gruß Sternthaler

trapperjohn
27.05.2008, 08:12
Ich denke, für jemanden, der mit dem Programmieren anfängt (bspw. in einem Kurs in der Schule) ist der Einstieg der C-Programmierung mit dem ASURO ein ziemlicher Sprung ins kalte Wasser.

Einerseits die Hürden der Sprache selbst (Zeigerarithmetik etc. werden die wenigsten Siebtklässler verstehen, vom Umgang mit Strings will ich gar nicht anfangen ;) ) andererseits die Begrenzungen des Roboters selbst. Ich denke, allein die Nutzung der Handy-Anzeige ist schon eine große Hilfe - und sei es nur, um sich irgendwelche Variablenwerte anzuschauen.

Außerdem entfällt das ständige Neu-Flashen des ASURO und auf dem Mobiltelefon können gleichzeitig mehrere Programme installiert sein.
Das Testen der Software kann bequem direkt am PC erfolgen, da Suns Handyemulator auch die serielle Schnittstelle ansprechen kann.

Naja, mir würden sicher noch einige Gründe mehr einfallen, da ich von der Grundidee recht überzeugt bin :D

Sternthaler
27.05.2008, 17:12
Hallo trapperjohn, (gehört irgendwie dazu)

das bedeutet dann aber, wenn du keine Programme mehr auf den Asuro flashen willst, dass dort zumindest einmal ein Programm installiert ist, welches als 'eierlegende Wollmilchsau' dann nur noch Kommandos vom Handy/Schnittstelle entgegennimmt und diese Befehle in 'lustige' Aktionen auf dem Asuro umsetzt. Dazu gehört dann natürlich auch ein Kommandospeicher (Verbindung muss ja nicht permanent sein) und ein Kommandointerpreter.
Solche Dinge sind hier auch schon irgendwo im Forum für den Asuro vergraben. (Wieder ein Tipp, den du nicht nutzen darfst ;-) )

Zu guter Letzt bleibt also eine Programmierung in beliebiger Sprache für das Handy, bzw. den PC, übrig. Hier muss dann nur bekannt sein welche Kommandos mit welchen Parametern ein sinnvolles Agieren des Asuros erzeugen. Ja, nun ist das klar geworden.

Gruß Sternthaler (gehört irgendwie dazu)

trapperjohn
27.05.2008, 17:50
Heidiho,

der ASURO Anteil ist bereits so gut wie fertig - mit einem einigermaßen robusten Protokoll und dazugehörigem Zustandsautomaten ists da mit der Entwicklung ja auch fast schon getan. Das geht auch noch ohne Tipps ;)

Die Kommunikation auf Handy Seite ist da etwas kniffliger, da hier noch die Thread-Synchronisation dazukommt. Außerdem soll die API für das Handy sowohl blockierend als auch nicht-blockierend nutzbar sein (ersteres für den leichteren Einstieg). Aber bisher läufts ganz gut - nur eine verständliche UML Darstellung ist mir noch nicht richtig gelungen 8-[

Gruß,
Florian

Sternthaler
28.05.2008, 00:38
Hossa,

na, dann bin ich mal gespannt, was das Asuro/Handy-Gespann alles leisten wird.
Zur Thread-Synchronisation kann ich (ausnahmsweise mal ;-)) keinen Senf abgeben. Das ist ein Zeug von dem ich mich tunlichst fernhalte, da ich davon keine Ahnung habe(n will).

Bei verständlichen Darstellungen liegt man, meiner Erfahrung nach, sowiso immer falsch. Da kann man bestimmt auch einen Punktabzug bei der Arbeitsbewertung riskieren. Zum Glück sind ja textuelle Erklärungen und Fußnoten nicht ausgeschlossen bei UML ;-)

Noch frohes Schaffen wünscht
Sternthaler

damaltor
29.05.2008, 10:20
donnerwetter, das ist eine tolle idee. wo bekommt man diese schnittstelle her, und was kostet sie?

trapperjohn
29.05.2008, 12:04
Den Chip selbst gibts für ca. 13,- Eur bei Reichelt, allerdings nur in SMD Bauform und noch ohne Firmware. Für Hobbyanwendung und Prototypen gibt (bzw. gab es...) das VDRIVE1 Modul (Platine mit USB-Buchse und Stiftleiste) und VDIP1 (Platine im DIP Format mit USB-Buchse).
http://vinculum.com/products.html

Das VDIP1 gibts bspw. direkt in deren Webshop und kostet 13,60 Pfund.
VDRIVE1 gibt es ab und zu bei eBay von einem ungarischen Händler (da kommt meins auch her).

Sternthaler
30.05.2008, 01:11
Holla,

für diejenigen, die einen USB-Adapter für den Asuro haben, besteht ja dann auch die Möglichkeit dort ein Drähtchen bis zum Asuro anzulöten. (Stecker ginge zur Not ja auch noch.)
Und schon sind 13,60 Pfund gespart.

Gruß Sternthaler

@damaltor
Beruht deine Fußzeile auf Multiprozessoren, oder Multitasking?

Ceos
30.05.2008, 09:46
ich hab da was von visual basic gehört und threadsynchronisieren ... leider kann cih nur visual C#

aber von den bibliotheken her ist es dasselbe, vll. kannst du mit folgendem was anfangen



// SetRecieveText, wird in der EventMethode OnReceive des COM Port
// ausgeführt wenn ich daten in eine TEXTBOX schreiben will
// Parameter sind einmal der text und einmal das ziel
private void SetRecieveText(string text, TextBox target)
{
if (target.InvokeRequired)
{
SetTextCallback callback = new SetTextCallback(this.SetRecieveText);
if (closed || target.Disposing || target.IsDisposed) return;
target.Invoke(callback, new object[] { text, target });
}
else if (!closed)
{
target.Text = text;
}
reading = false;
}

// SetTextCallback ist die methode die in die qeque des window
// eingehängt wird und im kontext der oberfläche dann ausgeführt wird

public delegate void SetTextCallback(string text, TextBox target);



hoffe du kannst das iwie auf visual basic adaptieren

PS: Threads sind deine freunde, genauso wie timer-interrupts im Atmega, setze sie weise ein und vergiss nicht diene variablen gegen konkurrierende zugriffe abzusichern (C# macht das FAST von alleine >_<), dann werden sie dein leben erleichtern

EDIT: og. code kann auf ziemlich alle Threadobjects ausgeführt werden, die haben alle eine invoke methode in die eine passende delegate methode eingefügt werden muss, die dann im kontext des threads ausgeführt wird

trapperjohn
30.05.2008, 11:33
@Ceos: Ne, das trifft mein Problem nicht ganz ;-) Es geht um Java ME auf dem Handy - hier darf kein Aufruf den Hauptthread blockieren und im Augenblick sinds bei mir 4 Threads (Daten verschicken, Daten empfangen, Datenpakete verarbeiten und die Bedienoberfläche ...) die vernünftig miteinander kommunizieren müssen. Das Problem ist dabei nicht, wie man das sprachlich umsetzt sondern wie Deadlocks vermieden werden etc.

@Sternthaler:
Wie meinst du das mit dem USB-Adapter? Für die Kommunikation mit einem Handy benötigst du USB-Host-Fähigkeit sowie einen Treiber für generische USB-Modem. IIRC ist da der Vinculum derzeit die einzige Möglichkeit ...

Gruß,
Florian

johns
30.05.2008, 14:17
hallo,

es gibt auch einen freien usb-host stack für AVRs, ich glaube hier: www.embedded-projects.net

interessantes projekt, hab ich auch mal gemacht, allerdings für symbian/c++ und ohne notwendikeit eines usb-hosts, da es für das smartphone ein serielles datenkabel gab :) allerdings wurde das projekt dann eingestellt, wegen schlechter und nicht vorhandener api dokumentation von kamera und gps des handies :( ausserdem war das handy (motorola a925) fast schon zu gross/schwer für den kleinen asuro...

hast du auch vor das handy über gprs/oÄ alternativ zu bluetooth mit dem steuer-pc zu verbinden? und auch das übermitteln von kommandos per (gratis web-)sms macht viel spass :)

lg und viel erfolg

Sternthaler
30.05.2008, 17:19
Hallo zusammen,

wird ja richtig voll hier ;-)

@trapperjohn
Ich dachte daran, dass ich die Masse-, TxD- und RxD-Leitungen auf dem Asuro-USB-Adapter 'anzapfe' und diese 3 Leitungen dann am Asuro anbringe.
Übrig bleibt am Asuro-USB-Adapter die 'andere Seite'. Und das ist USB.
Das an's Handy gestöpselt und alles ist schön.
Host oder was auch immer ist dann das Handy.

@johns
Gratis SMS?
Es wird Zeit, das wir die blöde Handynummer rausbekommen. Die von trapperjohn angegeben Nummer funktioniert immer noch nicht. Gabi scheint Urlaub zu haben, oder ist überarbeitet ;-).

Gruß Sternthaler

johns
30.05.2008, 17:57
@sternthaler
ist schon ein paar jahre her... damals gab's sowas zumindest hier in österreich zb auf sms.at und auf den websites der mobilfunk provider. keine ahnung wie es jetzt aussieht.
und leider haben handies in der regel keinen usb-host controller :(
aber mit einem bluetooth modul am asuro kann man sich die ganze host geschichte schenken. das ist einfacher zu implementieren und bietet den vorteil dass so das handy einerseits als fernsteuerung dienen kann, oder auch als proxy für steuerung via mobilfunk. zusätzlich kann man dann auch ganz ohne handy mit einem pc kommunizieren. und man erspart sich den nicht zu unterschätzenden volumens overhead des datenkabels ;)
bei gabi komm ich auch nicht durch :( aber ich glaube gabi hat sowieso für anrufer aus österreich und der schweiz eine eigene nummer ;)

lg
lg

trapperjohn
31.05.2008, 07:48
@sternthaler: Das funktioniert leider nicht, da einerseits das Handy nicht als Host fungieren kann und man andererseits immer noch den Treiber für USB-Modem selbst implementieren müsste.

@johns: Die Lösung, ein Bluetooth-Modul direkt anzubringen, ist natürlich nicht verkehrt. Mir geht es aber nicht nur um Bluetooth, sondern dass das Handy quasi eine Hardware-Erweiterung des ASURO ist (Display, Tasten, Prozessor, evtl. Kamera). Und wenn das Mobiltelefon sowieso auf den ASURO montiert wird, ist eine Funkverbindung nicht wirklich notwendig ...

Außerdem tippe ich, dass der Stromverbrauch des Vinculum unter der eines Bluetooth-Moduls liegt.

johns
31.05.2008, 09:52
die BT variante war natürlich nicht an dich gerichtet, ich wollte nur für andere interessierte eine alternative zum uU schwer beschaffbaren vinuculum chip und firmware aufzeigen. die handy hardware kann dabei genauso verwendet werden, beim stromverbrauch tippst du mit sicherheit richtig.

lg

Ceos
31.05.2008, 13:19
java hat genauso invoke methoden

http://krum.rz.uni-mannheim.de/java/jthreads.html

http://www.fh-wedel.de/~si/vorlesungen/java/OOPMitJava/Multithreading/Synchronisation.html

have fun ^^

trapperjohn
31.05.2008, 13:41
@Ceos: Du hast mich nicht ganz verstanden: Ich weiß, wie man Threads und deren Synchronisation in Java sprachlich umsetzt - das vermeiden von Deadlocks und das korrekte Timing bei der Kommunikation zwischen den Threads ist die Herausforderung.

Ceos
31.05.2008, 17:45
achso, ich dachte es gäbe probleme die threads zu synchronisieren XD tut mir leid

aber hey, herausforderungen sind da um sie zu bezwingen ^^

trapperjohn
06.06.2008, 11:33
Servus,

hier mal ein paar weitere Eindrücke:

Die provisorische Befestigung auf dem Asuro schaut zur Zeit so aus, das Handy selbst liegt nur lose auf.

http://farm4.static.flickr.com/3091/2555139729_e4a1578cd0.jpg (http://www.flickr.com/photos/nochancetogetacoolname/2555139729/sizes/l/)

Das billige gekürzte Datenkabel ist leider zu steif, sodass das Kabel derzeit in recht weitem Bogen vom Asuro absteht. Die beste Lösung wäre hier imho, statt eines VDRIVE ein VDIP Modul einzusetzen, dann auf USB-Stecker/-Buchse zu verzichten und direkt die einzelnen Adern an das Modul zu löten.

Am Datenkabel werde ich auf jeden Fall noch versuchen, den Knickschutz und einen Teil der äußeren Isolierung zu entfernen ..

Eine Frage habe ich noch: Einer der beiden Liniensensoren liefert bei mir immer wieder starke Ausreißer nach oben, hier als rote Linie im Bild zu sehen:

http://farm4.static.flickr.com/3269/2555966374_3bc8c8ee12.jpg (http://www.flickr.com/photos/nochancetogetacoolname/2555966374/sizes/o/)

Kann das evtl. einfach ein Wackelkontakt am Fototransistor sein? Die sind ja nur in die WireWrap Buchsen eingesteckt.

Außerdem stimmen bei mir die Werte von Battery() nicht - sie liegen meist ungefähr im Bereich zwischen 880 und 930 (also zwischen 4,8 V und 5,1 V) obwohl ich Eneloop Akkus (also max. 4,8V möglich..) nutze. Gibts da irgendein Bauteil, das typischerweise für so eine Macke in Frage kommt?

Gruß,
Florian

oberallgeier
06.06.2008, 12:23
Hi, Florian,


... das Handy selbst liegt nur lose auf...... so kommen die guten, alten Zeiten wieder: der Ausdruck "Telefon auflegen" ist ja in Zeiten der portablen Endgeräte und der mobilen Telefone ziemlich unsinnig geworden - da aber ist er wiederbelebt :).

Es sieht schick aus - und wahrscheinlich montiert radbruch bald noch nen Akustikchip auf so was, damit der dann das klagende "... haus telefonieren ..." mitliefert. (Obwohl das ja wohl der integrierte MP3 kann).

Sehe ich richtig, dass Du bei dem Ding, das wie der Elko bei meinem asuro aussieht, seltsamerweise schon eine Kernschmelze hast . . . . :-b . . . jedenfalls glüht das schon mit rund 900 °C . . . .

Ceos
06.06.2008, 13:25
das ist doch nur ne reflektion der LED, bei 900° würdest schon rauchsignale sehen und riechen würdest es sicher auch XD

von vorne gesehen links, hast du auf deiner platine 3 pins, womit sind die verbunden ? wenn die an einem der foto-transistoren hängen, beeinflusst es vielleicht deine liniendaten ??

kann auch ne freuquente störung von deinem handy aus sein ?!

ferner könnte es auch lichteinwirkung von aussen sein ?! dann könntest du mit moduliertem licht bessere werte bekommen

trapperjohn
06.06.2008, 13:36
Die 3 Pins sind nur für die Befestigung der Trägerplatine auf den Wirewrap-Leisten und mit nichts verbunden (auch nicht untereinander). In meiner letzten Testrunde trat das Problem auch nicht mehr auf ... sieht relativ stark nach Wackelkontakt aus. Die merkwürdigen Batteriewerte sind aber weiterhin vorhanden.

Und ja, der Elko reflektiert nur die LEDs vom Vinculum ;)

Ceos
06.06.2008, 14:17
dann kontrollier lieber mal nach ner brücke, wenn die werte so nach oben ausbrechen, tritt vermutlich n kurzer zwischen den beinchen oder auf der platine auf, wenn der kontakt fehlt müssten die werte nach unten ausbrechen .... obwohl, wenn nichts angeschlossen ist, sind die werte glaube eher undefiniert oder ?!

trapperjohn
06.06.2008, 15:36
Mir ist beim Rumspielen aufgefallen, dass GoTurn() ja verdammt problematisch ist, wenn der Wert für speed zu klein ist. Der Asuro fährt dann gar nicht los und das GoTurn() hängt auf ewig in der Schleife fest ...

Ich denke, hier wäre es nicht verkehrt, wenn entweder ein irgendwie gearteter Timeout zuschlägt oder einfach für speed eine Unterschwelle festgelegt wird (150 oder sowas ...). Super langsam wird das vermutlich eh niemand aufrufen.

robo.fr
06.06.2008, 17:07
Halo trapperjohn,

das Bild mit dem Handy sieht super aus.

Gruß,
robo

damaltor
09.06.2008, 08:32
das mit der batterie könnte an folgendem liegen:

der asuro misst ja die batteriespannung über einen spannungsteiler, mit referenz von 2,56V die der ADC intern produziert. such mal nach diesem spannungsteiler, vermutlich sind auch hier diese billigen widerstände drin welche bei dir evtl so geartet sind, dass der massewiderstand größer ist als der vcc-widerstand. dann wäre eine zu hohe spannung am pin des adc.

trapperjohn
12.06.2008, 15:05
Ich habe noch keine Zeit gefunden, das Problem weiter zu erforschen - mir ist aber aufgefallen, dass auch hier die Werte schwanken. Mal liegen die Werte im oben genannten Bereich und 2 Messungen später bei knapp 750 (was ja besser aussieht ...). Merkwürdig.

Dafür hab ich für meine Dokumentation ein paar neue Bilder geknipst ;)
VDRIVE mit sanft umgeknickten Anschlusspins:
http://farm4.static.flickr.com/3030/2573151490_107aabc216.jpg (http://www.flickr.com/photos/nochancetogetacoolname/2573151490/sizes/o/)

IR-Bauteile auf Buchsenleisten:
http://farm4.static.flickr.com/3152/2573151332_b05c248dd4.jpg (http://www.flickr.com/photos/nochancetogetacoolname/2573151332/sizes/o/)

Sternthaler
12.06.2008, 17:35
Hallo trapperjohn,

die Akkus können mehr als die aufgedruckten 1,2 Volt liefern. Prüfe das mal mit einem 'echten' Voltmeter.
Zusätzlich zu den schon von damaltor angegeben Ungenauigkeiten der Widerstände kommt noch die Ungenauigkeit der internen Referenzspannung.
Wichtig ist auch, das die Software überhaupt diese Messung mit eingeschalteter interner Referenz macht.
Dann kommt noch hinzu, dass die gemessenen Spannung einbrechen kann, wenn irgendwelche anderen Stromverbraucher geschaltet werden. Ich mittel immer 4 Messwerte, die in einem Abstand von ca. 1,5 Sekunden, vom Timer-Interrupt angestossen, gemacht werden. (Liefert somit aber erst nach 4 * ca.1,5 Sekunden einen sehr konstanten Wert.)

Oh je, das mit dem GoTurn() und hängenbleiben ist ja wirklich möglich. Ob aber eine Mindestgeschwindigkeit sinnvoll ist, glaube ich kaum, da die Asuros doch sehr unterschiedlich 'anlaufen'. Eventuell auch in der LIB in der myasuro.h hinterlegen?
Oder doch lieber das Ganze so umbauen, dass GoTurn() die Geschwindigkeit selber hochfährt bis eine Bewegung erreicht wird.

Gruß Sternthaler
P.S.: Ich schliesse mich allen Lobern an. Das sieht echt gut aus.

trapperjohn
15.06.2008, 15:53
Mist, bei meinen Liniensensoren ist irgendetwas grundsätzlich verkehrt. Nachdem ich mich beim Rumprobieren über die Werte gewundert habe, habe ich jetzt einmal einen der beiden Transistoren rausgenommen und den anderen gegen eine Brücke getauscht.

Theoretisch würde das ja bedeuten, eine Seite liefert einen Maximalwert (=1023) und die andere Seite 0. Ich bekomme aber auf beiden Seiten 1023.
Auch ein Seitenwechsel bringt keine Besserung (immer 1023). Wenn ich ganz normal die Fototransistoren bestücke, scheint immer der "stärkste" (also hellste) zu gewinnen.

Dann hab ich das Messgerät geschwungen und mal hier und da auf Verbindungen geprüft. Und siehe da: laut Schaltplan müsste der Emitter der beiden Fototransistoren mit GND verbunden sein. Bei mir sind sie zwar untereinander verbunden, aber ich kann keine Verbindung zu GND (als Prüfgegenstelle habe ich PIN 8 und 22 des ATmega genommen) feststellen.

Ich kann auf der Platine leider nicht erkennen, wo genau es (also welche Leiterbahn) auf GND gehen müsste. Kann mir da jemand beim Lokalisieren helfen? Evtl. mit Bild?

Danke und Gruß,
Florian

edit: Ich hab natürlich Quatsch erzählt und im Schaltplan die Transistoren mit denen der Odometrie verwechselt ... der Fehler ist natürlich trotzdem noch da ;)

trapperjohn
15.06.2008, 17:25
Um auszuschließen, dass ein komplettes Offenlassen der Kontakte Probleme macht, habe ich mal einen 10kOhm Widerstand eingesteckt, der dann Werte von ca. 1023/2 liefern sollte.

Hier der Code für die Auswertung



void sensorData(unsigned int* left, unsigned int* right)
{
static unsigned int leftBright, leftDark;
static unsigned int rightBright, rightDark;

FrontLED(OFF); Msleep(1);
leftDark = ReadADC(IR_LEFT, 7*36);
rightDark = ReadADC(IR_RIGHT, 7*36);
FrontLED(ON); Msleep(1);
leftBright = ReadADC(IR_LEFT, 7*36);
rightBright = ReadADC(IR_RIGHT, 7*36);

*left = leftBright-leftDark;
*right = rightBright-rightDark;


SerPrint("\nDark: "); PrintInt(leftDark); SerPrint(" / "); PrintInt(rightDark);
SerPrint(" Bright: "); PrintInt(leftBright); SerPrint(" / "); PrintInt(rightBright);

}


Ich benutze hier zum Test direkt ReadADC() um etwas längere Sleep-Zeiten zu haben. Sicher ist sicher.

Ergebnis:

Wenn ich die Kurzschlussbrücke und den Widerstand einstecke, bekomme ich für beide Seiten 1023. Wenn ich nur den Widerstand einstecke und die andere Seite offen lasse, bekomme ich ca. 1023/2 (meist so 514) - auch auf beiden Seiten.

Die Seite, in die man etwas einsteckt, ist dabei egal, es tritt immer das gleiche Phänomen auf: Nur der höhere ADC-Wert kommt an.

Ich hab seit Stunden alle Verbindungen durchgemessen und kann keine Kurzschlüsse o.ä. feststellen. Jetzt weiß ich nicht mehr weiter ... :(

trapperjohn
15.06.2008, 18:35
So, ich kann meinen Monolog schließen, es war reine Doofheit meinerseits ...

Ich hab zum Testen immer eine leere Erweiterungsplatine aufgesteckt (mit 2 Pins um Strom abzunehmen). Was ich nicht gesehen habe ist, dass die Erweiterungsplatinen die Emitter der Fototransistoren fröhlich miteinander verbinden ... ](*,)

Naja, vielleicht sollte man Sonntags einfach nicht so lange arbeiten ...

trapperjohn
27.08.2008, 19:36
Ich hab mal ein kleines Video hochgeladen, in dem man die Bluetooth-"Fernsteuerung" angucken kann:

http://www.youtube.com/watch?v=HyoDoWmEJVg

Dank Youtube-Komprimierung kann man zwar nicht mehr viel lesen, aber das meiste sollte einigermaßen klar sein ...

Sternthaler
27.08.2008, 20:32
Wahnsinn,

herzlich Glückwunsch zu der Fernbedienung.

Ist ja die Härte, was du nach dem entfernen vom Emitter-Kurzschluss geschafft hast.

Kannst du eventuell nochmals den Datenweg durch die einzelnen Geräte und Übertragungswege aufführen?
So vom Knopfdruck am PC, über das dort laufende Programm, auf die ???-Schnittstelle, über die Telekom, ...., Asuro- Programm, Aktion

Gruß und stabile Flatrate
Sternthaler

trapperjohn
28.08.2008, 11:32
Ich stell das ganze Zeugs demnächst mal online, erst muss ich noch die Verteidigung meiner Diplomarbeit überstehen.

Die Lösung sieht so aus:
Auf dem ASURO läuft eine Software, die über die serielle Schnittstelle spezielle Telegramme empfangen kann, welche einen Zugriff auf die Funktionen der ASURO Lib ermöglichen.

An der seriellen Schnittstelle des ASURO ist ein Vinculum Chip angeschlossen, der den seriellen Zugriff auf die USB-Schnittstelle des Handys ermöglicht.

Auf dem Handy läuft eine Java Anwendung, die die Telegramm-Kommunikation mit dem ASURO übernimmt und auch nach außen über die Bluetooth-Schnittstelle zur Verfügung stellt.

Auf dem PC läuft eine Anwendung (wie im Video zu sehen), die per Bluetooth eine Verbindung zum Handy aufbaut und über dieses dann den Roboter fernsteuern, Sensorwerte abfragen, etc. kann.

Also Knopfdruck am PC erzeugt ein Telegramm, welches per Bluetooth an das Handy geschickt wird. Dieses leitet das Telegramm über dessen Datenkabel an den Vinculum und dann weiter an den Mikrocontroller, welcher es auswertet, "ausführt" und "beantwortet".

Das Handy kann natürlich nicht nur als Bluetooth-Brücke dienen sondern auch direkt den Roboter steuern - ich hab bspw. eine ganz einfache Linienverfolgung mal durch das Handy steuern lassen.

Sternthaler
28.08.2008, 19:26
Dank dir trapperjohn,

genau das faste mein 'nicht durchblicken' perfekt zusammen.

Viel Erfolg bei der Verteidigung
Gruß Sternthaler

trapperjohn
10.11.2008, 17:08
Oh mann, ich komme einfach zu gar nix mehr, seit das Studium vorbei ist ...

Naja, hier erst mal meine Diplomarbeit selbst, falls es jemanden interessiert:
Anbindung eines Mobiltelefons an den Experimentierroboter ASURO

PDF-Format, knapp 2,5 MB

Inhaltsverzeichnis:
1 Kurzüberblick 13
2 Aufgabenstellung 15
3 „Edutainment“ Roboter 17
3.1 Beispiele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.1 LEGO Mindstorms NXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.1.2 Fischertechnik Computing . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1.3 AREXX RP6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.1.4 Weitere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4 Grundlagen und Umfeld 23
4.1 ASURO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1.1 Mikrocontroller und Programmierung . . . . . . . . . . . . . . . . . . . . 24
4.1.2 Liniensensoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1.3 Motoren und Odometrie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4.1.4 Taster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1.5 Leuchtdioden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.1.6 Infrarot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
4.2 Erweiterungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.3 Vinculum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4.4 Mobiltelefon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.4.1 Java ME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5 Lösungsansatz 35
5.1 Hardwareanbindung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
5.1.1 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
5.2 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.1 Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
5.2.2 Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.3 Software: ASURO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.3.1 ASURO API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.3.2 Ein-/Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4 Software: Mobiltelefon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4.1 Steuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.4.2 Ein-/Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4.3 Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4.4 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5 Software: PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6 Lösungsbeschreibung 51
6.1 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.1.1 Pegelwandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.2 Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6.2.1 Ablauf der Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.3 Software: ASURO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.3.1 Unterschiede zur ASUROLib . . . . . . . . . . . . . . . . . . . . . . . . . . 58
6.4 Software: Mobiltelefon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.4.1 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
6.4.2 API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.4.3 Benutzeroberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.5 Software: PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.5.1 Kommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.5.2 Benutzeroberfläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6.6 Test . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.6.1 Test-Software . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
6.6.2 Pegelwandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.6.3 Datenkabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.6.4 Nullmodemkabel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
6.6.5 Testergebnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7 Fazit und Ausblick 81
Literaturverzeichnis 83
(http://data.florianhaskamp.de/diplomarbeit.pdf)



Vielleicht schaffe ich es ja auch noch mal, die Quellen irgendwo hochzuladen ...

oberallgeier
10.11.2008, 17:19
Na ja, eigentlich interessant, aber eigentlich schade: so viele Seiten und so viel leeres Papier. Interessant wieviel Leere man in 2,5 MB heutzutage unterkriegt.

trapperjohn
10.11.2008, 17:23
Leeres Papier?

Die Arbeit war für doppelseitigen Druck (also Vorder- und Rückseite) konzipiert, wobei neue Kapitel immer auf der rechten Seite beginnen. Daher ab und zu leere Seiten. Oder was meinst du?

Am besten zu lesen, wenn man den PDF Reader auf Anzeige von 2 Seiten stellt.

P.S.: Du musst es nicht lesen!

Daher sicherheitshalber auch noch die Warnung für alle weiteren Leser: ACHTUNG, obiges Dokument enthält auch *leere* Seiten! Wer Angst vor leeren Seiten hat, sollte daher den Link *nicht* anklicken! Ich garantiere für nichts!

damaltor
11.11.2008, 12:16
schöne arbeit. ich glaube ich werde das bei gelegenheit mal versuchen nachzubauien...

pinsel120866
11.11.2008, 17:02
Gratuliere herzlich zur Diplomarbeit!

Tolle Sache, bin beeindruckt - und wieder gibt es eine neue "Facette" des ASUROS!

=D> =D> =D> =D> =D> =D> =D>

Sternthaler
12.11.2008, 20:52
Und von mir auch viele Glückwünsche zum Abschluss.

Für den Fall, dass noch leere Seiten gefüllt werden müssen, kannst du ja mal ein Bild von Gabi dort unterbringen.
Wie war noch mal die Nummer?
Ach ja: Null-Neunhundert und sechs mal die sechs.

Nun aber wieder ernst.
Wie pinsel120866 ja schon schreibt, ist es immer wieder erstaunlich, was man mit Ideen, eigener Energie und dem kleinen Asuro alles anstellen kann.
Ich hoffe, dass dich nun 'das echte Leben' nicht so weit treiben wird, dass wir nichts mehr von dir im Forum sehen würden.
Fände ich Schade.

Gruß Sternthaler

und wichtig: "Hoch die Tassen: Auf trapperjohn, seinen Abschluss und auf Gabi"

trapperjohn
12.11.2008, 21:18
Danke danke, ich hoffe, ich finde zwischendurch noch die Zeit ;-)

trapperjohn
18.11.2008, 05:57
8-[

Aaaah, mein Link da oben zeigte ja auf eine alte und total unfertige Version. Ich hatte zwar die aktuelle Variante hochgeladen, aber an die falsche Stelle \:D/

Also falls ihr noch einen Blick auf eine Version mit etwas weniger leeren Seiten blicken wollt ...

oberallgeier
18.11.2008, 09:22
Hi trapperjohn,

sieh da, sieh da - und nun sind auf einmal wirklich viel Buchstaben zum Lesen und weniger weißes "Papier" da. Macht mich froh, dass ich doch ein gewisses Gefühl dafür hatte, "dass da was fehlte". Jetzt auch von mir herzlichen Glückwunsch zu diesem sehr pfiffigen Projekt.

@Sternthaler: Nu hat er ja viel mir drin - aber Gabis Adresse fehlt immer noch. Das ist schon deswegen bedauernswert, weil das Forum irgendwie an Hemingways "First Forty-Nine Stories" erinnert, an diesen Abschnitt "Men Without Women". Oder kann es sein, dass Gaby auf Tau Ceti lebt? Bei so einem schicken Projekt von fast interstellarer Größe gut möglich.