« 12
  1. #11
    FanGamers größter Fan

    Registriert seit
    23.03.2005
    Beiträge
    1.935
    Mir da jetzt gerade eine simple, schon fast dämliche Idee gekommen... xD

    Du kannst dir den Mikrocontroller auch sparen wenn du eine serielle Schnittstelle (RS232) hast. Die kannst du mit ein paar Zeilen C-Code ansteuern und damit ganz einfach dein Lämpchen leuchten lassen. Das Ding hat steuerbare Signalleitungen, also warum nicht einfach die benutzen? Sollte eigentlich gehen, müsste man nur mal kurz ausprobieren. Meine Befürchtung ist allerdings, dass der Strom zu Beginn zu hoch für die Schnittstelle ist. Aber das würde man auch mit keinem großen Aufwand in den Griff bekommen.

    Oder halt über eine Relaiskarte, damit klappt es definitiv: Klick mich!
    Das schöne daran wäre, du könntest z.B. eine "echte" Lampe benutzen, sprich deine Schreibtischlampe oder was weiß ich.
    Was hältst von der Idee?

    Wenn es doch ein Mikrocontroller sein darf:
    Ja, das wäre so ein µC den du benutzen könntest. Das Board setzt aber eine serielle Schnittstelle voraus! Das schöne an diesem wäre, er würde mit deinen Anforderungen wachsen. Es ist so, dass es eigentlich mit Kanonen auf Spatzen geschossen ist, wenn du den Controller nur dazu benutzt, ein Lämpchen leuchten zu lassen. Hier könntest du, wenn du die Lust und die Zeit hast z.B. noch ein LCD-Display integrieren welches dir deine momentan gespielte Musik anzeigt oder um beim Messenger zu bleiben wer dich gerade anscheibt, oder, oder, oder... Du könntest auch irgendwas damit steuern wenn du möchtest. Möglichkeiten hast du fast unendlich viele. Aber Achtung, das Board hat keinen Programmieradapter! Das heißt, du kannst den Controller nicht direkt programmieren sondern brauchst nochmal ein spezielles Board.

    Wobei ich jetzt auch eher so etwas in der Art im Auge gehabt hätte: Klick mich nochmal!
    Das ist ganz ähnlich wie mein Board und lässt sich direkt programmieren.

    Was genau müssen denn eigentlich für Schnittstellen vorhanden sein? Muß es unbedingt USB sein oder hast du auch eine serielle Schnittstelle und LPT-Port?

    Ich hab mich gestern Abend noch etwas mit USB beschäftigt und mir dann auch mal den Quellcode eines generischen Gentoo-Treibers angeschaut. Das ganze ist doch etwas komplexer als ich dachte wenn ich ganz ehrlich bin. ^^" Ich bin davon ausgegangen, damit könnte man ähnlich hantieren wie mit einer RS-232 Schnittstelle, aber es ist doch viel schwieriger als ich erwartet hab. Das schafft man nicht an einem Tag wie ich gehofft hatte. Eventuell kann man das auch über USB simulieren, aber was diese Adapter da im Einzelnen machen weiß ich auch nicht. Müsste man sich auch mal mit beschäftigen. Wobei es z.B. auch für Windows entpsrechende Programme gibt, mit denen man sich seine USB-Deskriptoren mit wenigen Mausklicks zusammenstellen kann, was es dann wieder etwas einfacher macht. Sowas wäre vermutlich sinnvoll, wenn man unbedingt USB benutzen möchte.

    Lange Rede, kurzer Sinn, USB ist nicht ganz so optimal für den Anfang, eine serielle Schnittstelle wäre da imho doch viel besser, da einfach viel einfacher zu handhaben.

    Wenn du aber nur USB hast, wäre vielleicht so etwas passender:Klick mich zum dritten mal!

    Ein Freund hat mal mit einer Drehzahlsteuerung über USB hantiert, am Mittwoch seh ich ihn wieder, dann frag ich ihn mal nach der Doku. Damit kann man vermutlich einiges anfangen. Im Prinzip ist es ja nur ein Flag in deinem Programm das du setzen musst um das Lämpchen leuchten zu lassen. Trotz allem, das kann eigentlich auch über USB nicht so unglaublich schwierig sein... Mal schauen...


    EDIT:
    Ja, scheint man auch unter Linux benutzen zu können...
    http://www.faqs.org/docs/Linux-mini/Lego.html

  2. #12

    Registriert seit
    11.07.2003
    Beiträge
    4.023
    Danke für deine Ausführungen. USB dachte ich anfangs eigentlich auch nur da die Ports ja ne Spannung besitzen und durch Ein-Ausschalten von Strom ganz easy ansteuerbar gewesen wären. Da das aber leider nicht geht also die anderen Ideen.

    Ich habe sowohl ne Serielle Schnittstelle (COM) als auch einen LPT-Port. Woher weiss ich ob die Serielle Schnittstelle eine R232 ist?

    EDIT: Ja, scheint man auch unter Linux benutzen zu können... http://www.faqs.org/docs/Linux-mini/Lego.html
    schaue ich mich gerade um. mir fehlt nur noch ein verdammter 9-V Block für den Infrarot-Sender...

  3. #13
    FanGamers größter Fan

    Registriert seit
    23.03.2005
    Beiträge
    1.935
    Das ist eine RS-232, keine Sorge. Was anderes kommt bei einem "normalen" PC eigentlich nie zum Einsatz. Es gibt natürlich noch diverse andere Standards, aber nicht beim Heim-PC. Okay, das ist streng genommen natürlich Bullshit, PS/2 oder USB zum Beispiel sind ja auch serielle Schnittstellen/Bussysteme, aber das was da an deinem PC mit COM beschriftet ist, wird umgangssprachlich als serielle Schnittstelle bezeichnet, wobei eigentlich immer eine RS-232 gemeint ist.

    Du kannst es testen, indem du mit cat die Schnittstelle in /dev ausliest. Dabei ist ttyS0 die erste serielle Schnittstelle. Verschwindet der Prompt bei einem cat /dev/ttyS0 hat der Kernel die Schnittstelle erkannt und alles sollte funktionieren.
    Oder du fragst den Ringpuffer des Kernels ab, das ist die elegante Lösung: dmesg | grep ttyS0
    Die erste RS-232 liegt dabei auf der Adresse 0x3F8.

    Ich hab jetzt mal ein klein wenig gespielt, es ist kein Problem die Signalleitungen zum steuern zu verwenden. Folgendes kleine Beispiel in C würde funktionieren:

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    #include <sys/io.h>
    
    int main (void)
     {
     if (ioperm (0x3F8,7,1))                         	//Schnittstelle testen
       printf("Schnittstelle ist nicht bereit\n"),exit (1);
    
     outb(1,0x3FC);					        //Data Terminal Ready, PIN4=high
    
     return 0;
     }
    Damit hättest du Pin 4 auf high gesetzt und könntest damit steuern.

    Es ist aber in meinen Augen unschön, da damit das DTR-Signal, also die Bereitschaftsmeldung des PCs, einfach missbraucht wird. Das ganze funktioniert auch nur unter Linux!
    Also du kannst damit auf jeden Fall das machen was du vor hast, aber es ist eigentlich eine ziemlich bescheidene Lösung, wenn auch mit Sicherheit die einfachste und schnellste.

  4. #14

    Registriert seit
    11.07.2003
    Beiträge
    4.023
    ich bin jetzt so weit gekommen das ich weiss, welches das signal ausgehend vom chat-programm ist. jetzt wird von mir verlangt das ich ein programm schreibe das dieses dbus-signal erkennt (shell/python). das wird jetzt die erste hürde sein.
    Da werde ich dann einfachheitshalber erstmal den Drucker ansteuern und etwas ausdrucken lassen. Später dann die sache mit der Lampe - aber erstmal das mit dem Symbol hinbekommen.

    Code:
    signal sender=:1.23 -> dest=(null destination) path=/im/pidgin/purple/PurpleObject; interface=im.pidgin.purple.PurpleInterface; member=DisplayedImMsg
       int32 3748
       string "absender"
       string "<html xmlns='http://jabber.org/protocol/xhtml-im'><body xmlns='http://www.w3.org/1999/xhtml'>nachricht</body></html>"
       int32 93349
       int32 1

  5. #15
    FanGamers größter Fan

    Registriert seit
    23.03.2005
    Beiträge
    1.935
    Das wird knifflig... Also zumindest mit einem Shell-Script wirst du die serielle Schnittstelle so wie in dem obigen Beispiel mit C ganz sicher nicht ansteuern können. Gut, du könntest ein entsprechendes C-Programm vom Script aus aufrufen, aber die Lösung ist auch hässlich.

    Mit Phyton kann ich dir leider überhaupt nicht helfen, mit der Sprache hab ich nichts am Hut. Wobei, warum ausgerechnet Python?

    Natürlich ist das sehr interessant, mit dem D-Bus hab ich mich auch noch nie großartig beschäftigt. Trotzdem, die Interprozesskommunikation ist natürlich ein sehr interessantes, wenn auch komplexes Feld. Es wäre wirklich nett, wenn du deine Erkenntnisse darüber posten würdest. Würde mich sehr interessieren.

  6. #16

    Registriert seit
    11.07.2003
    Beiträge
    4.023
    Das heisst für mich jetzt aber auch erstmal: lesen, lesen, experimentieren!
    Habe darüber keine Ahnung.
    Zum Glück hab ich noch nen Onkel, der von sowas mehr Ahnung hat

  7. #17
    FanGamers größter Fan

    Registriert seit
    23.03.2005
    Beiträge
    1.935
    Hm... Mir ist gerade etwas eingefallen. Vielleicht ein anderer Ansatz, bei dem du um das C-Programm herum kommst. Es gibt bei der RS-232 das Request to Send Signal, das bedeutet, der Gegenstelle wird signalisiert ob sie senden darf oder nicht.
    Dabei bedeutet eine 0, dass Daten gesendet werden dürfen, eine 1, dass dies momentan nicht möglich ist.
    Sprich, sendet dein PC selbst Daten über die Schnittstelle, müsste der Pin 7 auf high liegen. Damit könntest du deine Lampe ja auch ansteuern.

    Dazu müsstest du nur mit einem Shell-Skript sinnlose Daten in /dev/ttyS0 schreiben. Solange du das machst, sollte das RTS-Signal anliegen. Das wäre ja über eine Schleife kein Problem. Fällt das Signal von Pidgin über den D-Bus weg, wird die Schleife beendet.
    Das wäre eigentlich kein allzu großer Aufwand. Allerdings weiß ich nicht genau, ob das jetzt so funktioniert wie ich mir das vorstelle. Müsste man einfach mal ausprobieren.

  8. #18

    Registriert seit
    11.07.2003
    Beiträge
    4.023
    hab mir grad ma erst ein serielles kabel bestellt. bin aber noch nicht weiter

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Anmelden

Anmelden