<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://www.ccc-mannheim.de/mediawiki/index.php?action=history&amp;feed=atom&amp;title=TwitterKeyboard</id>
	<title>TwitterKeyboard - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://www.ccc-mannheim.de/mediawiki/index.php?action=history&amp;feed=atom&amp;title=TwitterKeyboard"/>
	<link rel="alternate" type="text/html" href="https://www.ccc-mannheim.de/mediawiki/index.php?title=TwitterKeyboard&amp;action=history"/>
	<updated>2026-04-18T01:26:02Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in C3MAWiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://www.ccc-mannheim.de/mediawiki/index.php?title=TwitterKeyboard&amp;diff=677&amp;oldid=prev</id>
		<title>Dome am 25. Juli 2012 um 14:03 Uhr</title>
		<link rel="alternate" type="text/html" href="https://www.ccc-mannheim.de/mediawiki/index.php?title=TwitterKeyboard&amp;diff=677&amp;oldid=prev"/>
		<updated>2012-07-25T14:03:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{beendetes Projekt|Kontakt=Pensoffsky|öffentlich=ja}}&lt;br /&gt;
&lt;br /&gt;
=== Überblick ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039; PS 2 Keyboard + Arduino Ethernet + Twitter&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Datei:WP 000126.jpg|280px]]&lt;br /&gt;
&lt;br /&gt;
=== Ziel ===&lt;br /&gt;
Das Projekt hat sich zum Ziel gesetzt eine Tastatur zu bauen die ihre Tastaturanschläge direkt nach Twitter schickt ohne dass ein PC angeschlossen sein muss. Man tippt blind auf der Tastatur, drückt Enter und tweetet damit die eingegebene Nachricht. Dem Benutzer wird kein Feedback über den Zustand des Systems gegeben.&lt;br /&gt;
&lt;br /&gt;
Das Keyboard verwendet aktuell folgenden Twitter Account: http://twitter.com/ardutweet2&lt;br /&gt;
&lt;br /&gt;
In die Tastatur wurde ein Arduino Ethernet [http://www.arduino.cc/en/Main/ArduinoBoardEthernet] eingebaut und intern mit der Elektronik der Tastatur verbunden. Der Arduino versorgt die Tastatur mit Strom und wertet die Tastaturanschläge aus. Die gedrückten Zeichen werden in einem Puffer gespeichert. Wenn der Benutzer die Taste Enter drückt wird der Puffer getweetet. Mit der Taste ESC kann der Puffer geleert werden.&lt;br /&gt;
&lt;br /&gt;
Wenn das Keyboard an Strom und LAN angeschlossen wird bezieht es über DHCP automatisch eine IP und ist nach wenigen Augenblicken bereit zu tweeten.&lt;br /&gt;
&lt;br /&gt;
Die Hardware und Software wurde im Rahmen eines Seminars während eines Abends von mehreren Personen erstellt.&lt;br /&gt;
&lt;br /&gt;
=== Bilder ===&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Datei:Twitterkeyboard2.jpg | Numblock abgeklemmt&lt;br /&gt;
Datei:Twitterkeyboard1.jpg | Arduinoboard eingebaut&lt;br /&gt;
Datei:WP 000121.jpg&lt;br /&gt;
Datei:WP 000122.jpg&lt;br /&gt;
Datei:WP 000123.jpg&lt;br /&gt;
Datei:WP 000124.jpg&lt;br /&gt;
Datei:WP 000125.jpg&lt;br /&gt;
Datei:WP 000126.jpg&lt;br /&gt;
Datei:WP 000127.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hardware ===&lt;br /&gt;
*Arduino Ethernet&lt;br /&gt;
**http://www.arduino.cc/en/Main/ArduinoBoardEthernet&lt;br /&gt;
&lt;br /&gt;
*altes PS2 Keyboard&lt;br /&gt;
&lt;br /&gt;
=== Software ===&lt;br /&gt;
*Arduino IDE&lt;br /&gt;
**http://arduino.cc/en/Main/Software&lt;br /&gt;
&lt;br /&gt;
*Twitter Library&lt;br /&gt;
**http://arduino-tweet.appspot.com/&lt;br /&gt;
**http://www.arduino.cc/playground/Code/TwitterLibrary&lt;br /&gt;
&lt;br /&gt;
*PS2 Keyboard Library&lt;br /&gt;
**http://arduino.cc/playground/Main/PS2Keyboard&lt;br /&gt;
**Die PS2 Tastatur kann ohne weitere Bauteile direkt an den Arduino angeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
=== Arduino Code ===&lt;br /&gt;
Der neueste Code ist bei [https://github.com/C3MA/TwitterKeyboard GitHub].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include &amp;lt;SPI.h&amp;gt; // needed in Arduino 0019 or later&lt;br /&gt;
#include &amp;lt;Ethernet.h&amp;gt;&lt;br /&gt;
#include &amp;lt;Twitter.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;PS2Keyboard.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
const int DataPin = 8;&lt;br /&gt;
const int IRQpin =  3;&lt;br /&gt;
&lt;br /&gt;
PS2Keyboard keyboard;&lt;br /&gt;
&lt;br /&gt;
// Ethernet Shield Settings&lt;br /&gt;
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };&lt;br /&gt;
&lt;br /&gt;
// If you don&amp;#039;t specify the IP address, DHCP is used(only in Arduino 1.0 or later).&lt;br /&gt;
byte ip[] = { 10, 23, 42, 177 };&lt;br /&gt;
&lt;br /&gt;
// Your Token to Tweet (get it from http://arduino-tweet.appspot.com/)&lt;br /&gt;
Twitter twitter(&amp;quot;TOKEN&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
// Message to post&lt;br /&gt;
char msg[141];&lt;br /&gt;
int msgPos = 0;&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  keyboard.begin(DataPin, IRQpin, PS2Keymap_German);&lt;br /&gt;
  &lt;br /&gt;
  delay(1000);&lt;br /&gt;
  //Ethernet.begin(mac, ip);&lt;br /&gt;
  // or you can use DHCP for autoomatic IP address configuration.&lt;br /&gt;
  Ethernet.begin(mac);&lt;br /&gt;
  Serial.begin(9600);&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  if (keyboard.available()) {&lt;br /&gt;
&lt;br /&gt;
   char c = keyboard.read();&lt;br /&gt;
    &lt;br /&gt;
    if(c == PS2_ESC){&lt;br /&gt;
      msgPos = 0;&lt;br /&gt;
      msg[0] = 0; &lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    if(c == PS2_ENTER){&lt;br /&gt;
      postTweet();&lt;br /&gt;
      msgPos = 0;&lt;br /&gt;
      msg[0] = 0;&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
    //append read charater&lt;br /&gt;
    msg[msgPos] = c;&lt;br /&gt;
    msgPos++;  &lt;br /&gt;
    msg[msgPos] = 0; &lt;br /&gt;
&lt;br /&gt;
   if(msgPos &amp;gt;= 139)&lt;br /&gt;
      postTweet();&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void postTweet()&lt;br /&gt;
{&lt;br /&gt;
  Serial.println(&amp;quot;connecting ...&amp;quot;);&lt;br /&gt;
  if (twitter.post(msg)) {&lt;br /&gt;
    // Specify &amp;amp;Serial to output received response to Serial.&lt;br /&gt;
    // If no output is required, you can just omit the argument, e.g.&lt;br /&gt;
    int status = twitter.wait();&lt;br /&gt;
    //int status = twitter.wait(&amp;amp;Serial);&lt;br /&gt;
    if (status == 200) {&lt;br /&gt;
      Serial.println(&amp;quot;OK.&amp;quot;);&lt;br /&gt;
    } else {&lt;br /&gt;
      Serial.print(&amp;quot;failed : code &amp;quot;);&lt;br /&gt;
      Serial.println(status);&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
    Serial.println(&amp;quot;connection failed.&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Dome</name></author>
	</entry>
</feed>