MorseTweeter V 0.7 laeuft

  • Hallo,


    es hat ein etwas gedauert, aber so langsam tut der Arduino was er machen soll:
    1. Gehe zu Twitter
    2. Sieh nach ob es einen neuen Tweet mit dem Wort "Morse" gibt
    3. Hol den Tweet
    4. Übersetze den Tweet in Morsecode
    5. Gib ihn als akustisches Signal aus.


    Jetzt morst es in der Bude und ich muss nicht mehr auf den Bildschirm sehen. Naeheres in meinem Blog:
    http://hajos-kontrapunkte.blog…eter-v-07-is-running.html


    Natürlich ist er noch nicht fertig. Der Parser für den HTML-Code muss noch optimiert werden, ... In der Endstufe wird der Text zusätzlich auf einem kleinen Display angezeigt (ist noch auf dem Luftweg) und später soll der Arduino eine einfache Handtaste ansteuern.


    Mal was voellig sinnfreies ...


    72/73 de Hajo

  • Hallo Hajo,
    eine sinnfreie? Frage: der Arduino steuert die Handtaste oder steuert die Handtaste den Arduino?


    73 de Addi / DC0DW

  • Hallo,

    Hallo Hajo,
    eine sinnfreie? Frage: der Arduino steuert die Handtaste oder steuert die Handtaste den Arduino?


    73 de Addi / DC0DW

    im Moment troetet er nur selber, aber das Signal sollte die Handtaste steuern (Magnet), die wiederum völlig sinnfrei einen 10 mW TRX tastet und ich im Nebenraum die Morserei auch noch mit einem RX hören kann. Umständlicher gehts nimmer ;) Oder vielleicht lässt er doch noch die Puppen tanzen oder so ...
    Mal sehen wie lange ich das durchhalte - aber die Programmiererei mit dem Arduino macht Spass


    72 de Hajo

  • Danke Hajo,


    für den kleinen Hinweis...µC steuert Handtaste
    73 de Addi

  • Und wenn ich schon dabei bin,


    Auf der Seite http://raronoff.wordpress.com/2010/12/16/morse-endecoder/ hat Raron noch einen Morsedecoder vorgestellt.


    Eigentlich sind es zwei Arduinos: Der eine sendet, der andere empfängt. Sehr gut erklärt ist der Aufbau der binären Codierung des Morsebaums und die entsprechende Umsetzung. Der Sourcecode ist wie immer frei.


    72 de Hajo

  • Hallo,


    so mein MorseTweeter kommt auch ein Stückchen voran. Er hat jetzt außerfahrplanmäßig ein LCD-Shield bekommen. Es gab die üblichen Schwierigkeiten, aber was macht man nicht alles für die Kunst. Einen kleinen Film gibts auch in meinem Blog.


    Aber so langsam habe ich die Softwareteile zusammen.


    72 de Hajo

  • Hallo Hajo...


    wie sieht ein LCD-shield aus?


    73 de addi /DC0DW

  • Hallo Addi,


    die Arduinogemeinde hat eine eigene Sprache entwickelt. So sind Shields genormte PCBs, die direkt auf den Arduino gesteckt werden können. Diese Shields werden direkt mit Spannung versorgt, angesteuert etc.Das LCD-Shield ist bei mir eine LCD-Anzeige 16x2 Zeichen und 5 Pushbuttons. Ansehen kannst Du Dir das in einem kleinen Video, das ich auf meinem Blog verlinkt habe.


    Dieser Modulaufbau (z.B. LCD, Ethernet, Breakout, MP3, Midi, Motor, Servo ...) des Arduino ist schon genial, da man sich (fast) keine Gedanken machen muss, die einzelnen Komponenten anzusteuern, da die genormten Shields von entsprechenden Bibliotheken direkt unterstützt werden. Will sagen: Man muss sich nur Gedanken um das (inhaltliche) Programm machen und kann einen Großteil der technischen (Kommunikations-) Probleme ausblenden.


    72 de Hajo

  • Hallo Hajo,


    so kann es gehen ..ich hatte shield mit Abschirmung übersetzt! :) . Ist fast zwangsläufig, die meistens manualls bzw. pdf's im Beruf sind nur auf English.


    73 de Addi

  • Hallo,


    MorseTweeter v 0.9 morst, aber ich glaube ich mache mal wieder etwas anderes. Die Software läuft, aber ich hätte einen ausgewachsenen Parser schreiben müssen, um die Twitterantworten von den Tags zu befreien. Und das war nicht das Ziel der Veranstaltung.


    Einzelheiten: http://hajos-kontrapunkte.blog…v-09-and-perhaps-end.html


    Spass hats gemacht, auch wenn die Puppen zum Schluss nicht tanzten.


    Auf zum nächsten Projekt : Einem Theremin, aber damit werde ich dieses Forum nicht belästigen :D

  • Hallo,


    das Problem liegt bei der Verbindung zu Twitter. Verbindung zu search.twitter, dann GET ..., geht nicht mehr und die 0auth war mir zu kompliziert.
    Die Suche muss als String formuliert werden: search.twitter.com/query... und das bekam ich nicht gebacken, da ich ueber dns etc gehen muss. Deswegen laufen die alten Arduinoprojekte nicht mehr und keiner konnte mir eine Lösung aufzeigen. So kam ich auf die Idee mit dem php-script ... na ja - war auch nicht so erfolgreich. Oder gibt es einen Weg, dass der Apache/php ohne ueber eine Html-seite zu gehen den String an den Arduino weiterleitet?


    Man lernt nie aus.


    Hajo

  • Ich habe dein Problem nur überflogen, also Schuss ins Blaue. Habe ich es richtig verstanden, dass du erst die Domain auflöst und dann an die IP-Adresse den HTTP GET schickst? Das kann nicht gehen:


    Code
    $ wget http://199.16.156.11/search.atom?q=morse
    --2011-02-18 09:25:12--  http://199.16.156.11/search.atom?q=morse
    Verbindungsaufbau zu 199.16.156.11:80... verbunden.
    HTTP Anforderung gesendet, warte auf Antwort... 301 Moved Permanently
    Platz: http://search.twitter.com/search.atom?q=morse [folge]
    --2011-02-18 09:25:12--  http://search.twitter.com/search.atom?q=morse
    Auflösen des Hostnamen »search.twitter.com«.... 199.16.156.11
    Verbindungsaufbau zu search.twitter.com|199.16.156.11|:80... verbunden.
    HTTP Anforderung gesendet, warte auf Antwort... 200 OK
    Länge: 20938 (20K) [application/atom+xml]


    Du siehst, dass du von der IP-Adresse erst zur Domain umgeleitet wirst und dann dort deine Antwort bekommst. Es fehlt also in deinem HTTP GET die Domain. Lies mal bitte eine Dokumentation über HTTP 1.1 und die Angabe der Domain. Wahrscheinlich ist es das, was du suchst:


    Code
    GET /search.atom?q=help HTTP/1.1
    Host: search.twitter.com:80
  • Danke Thomas fuer Dein Interesse.


    Es ist noch etwas komplizierter:
    http://arduino.cc/forum/index.php/topic,45921.0.html


    Hier wurde die Diskussion schon mal gefuehrt. Die Kernfrage:


    Zitat

    So my question: How could I encode the URL "http://search.twitter.com/search.atom?q=help" in the Arduino programm so that the string provokes the connection to twitter and triggers the search?


    konnte keiner beantworten und laesst sich scheinbar auch nicht codieren, deswegen meine grossen Umwege :whistling: Inzwischen habe ich auch verstanden, dass in den Browsern eine Routine eingebaut ist, die die Verbindung aufbaut und 'gleichzeitig?' den String weiterleitet. Aber ich bin halt kein Browser 8o


    Na ja ist auch nicht so wichtig - obwohl es mich schon fuchst. Der HTML-Parser war auch nicht das grosse Problem: Es waren die URL-Auflösungen bei verkuerzten Links im Body der Tweets. Die Kiste kann alles morsen, aber es macht keinen Spass, wenn sie statt das Zeichen '#' zu verschlucken, das Wort 'Hashtag' morst.


    Hajo

  • Sag mal bitte exakt, was du willst. Die HTTP-Anfragen im arduino-Board sind alle falsch, nämlich HTTP 1.0 statt HTTP 1.1, und können nicht gehen.


    Wenn du die Anfrage nicht hinbekommst, kannst du einen kleinen Webspace mit PHP als Proxy nehmen. Der muss dann aber eine eigene IP-Adresse haben, sonst hast du das gleiche Problem wieder.


    Code
    <?
    readfile("http://search.twitter.com/search.atom?q=help");
    ?>


    Was meinst du mit gleichzeitig? Ein Browser löst die Domain auf, stellt über die IP-Adresse eine Verbindung zum Webserver her, schiebt sein GET rüber und bekommt die Antwort. Wirklich gleichzeitig läuft da nichts.


    Was haben die URLs in den Tweets mit Hashtags zu tun? Die einen sind was mit # davor, die anderen mit http://.

  • Hallo Thomas,


    bei deinem PHP-Script bekomme ich im Browser die bekannte Antwort inc. HTML ohne Ende. Bei dem VersuchWebspace, php-Proxy, bin ich noch am Lesen.

    Bei der Anfrage (nicht URLcodiert):


    Code
    byte server[] = { 128, 242, 240, 148 }; // search twitter
    client.println("GET /search.atom?q=LeseLaster&rpp=1 HTTP 1.1");


    erhalteich folgende Antwort:



    Wenn ich die Frage ohne "HTTP 1.1" mache verbindet er sich, gibt aber kein Ergebnis aus und verabschiedet sich.


    72 de Hajo

  • Hallo,


    für heute stecke ich es erst einmal. Der Fehlercode war schon mal auf 400 aber ...


    Der Code sieht jetzt so aus:


    Code
    client.println("GET /search.atom?q=Morse&rpp=1 HTTP/1.1 ");
        client.println("Host: search.twitter.com");
        client.println("Accept: text/xml;q=0.9");



    Und die Antwort von Twitter:


    Schoenen Abend noch
    72 de Hajo