色々応用が効きそうなので。
サーマルプリンターとArduinoの接続は、ここを参照してください。
まずはPythonのコード。Python-Twitterを使っています。コードはあまり上手じゃないな…
import twitter import sys import socket import datetime import locale import getpass import sys import telnetlib import time api = twitter.Api(consumer_key='***************************', consumer_secret='***************************', access_token_key='***************************', access_token_secret='***************************') host = '192.168.10.88' port = 10000 tn = telnetlib.Telnet(host) while True: statuses = api.GetFriendsTimeline(count=100,retweets=True,since_id=id) for status in statuses: if 'Lytro' in status.text: #もしつぶやきにLytroという文字列があれば、 #telnetで送信。 print status.user.screen_name , status.text , status.id d = datetime.datetime.today() send_msg = d.strftime("%Y-%m-%d %H:%M:%S")+" " +status.user.screen_name+" "+status.text+"\n" unicode_msg=send_msg.encode('utf-8') tn.write(unicode_msg) time.sleep(60);
続いて、Arduinoのスケッチ。
//http://arduino.cc/en/Tutorial/ChatServerをご参照ください。 #include // needed for Arduino versions later than 0018 #include #include int printer_RX_Pin = 2; int printer_TX_Pin = 3; Thermal printer(printer_RX_Pin, printer_TX_Pin, 19200); // Enter a MAC address and IP address for your controller below. // The IP address will be dependent on your local network: byte mac[] = { 0x90, 0xA2, 0xDA, 0x00, 0x00, 0x00 }; IPAddress ip( 192 , 168 , 10 , 88 ) ; // IPAddress gateway(192, 168, 10, 1); IPAddress subnet(255, 255, 255, 0); EthernetServer server(23); boolean gotAMessage = false; // whether or not you got a message from the client yet void setup() { Ethernet.begin(mac,ip,gateway,subnet); server.begin(); Serial.begin(9600); printer.justify('L'); //印字の色を濃くする。 printer.setHeatInterval(255); printer.setHeatTime(255); } void loop() { // if there's data available, read a packet EthernetClient client = server.available(); // when the client sends the first byte, say hello: if (client) { if (!gotAMessage) { Serial.println("We have a new client"); client.println("Hello, client!"); gotAMessage = true; } // read the bytes incoming from the client: char thisChar = client.read(); // echo the bytes back to the client: server.write(thisChar); // echo the bytes to the server as well: Serial.print(thisChar); //受信した文字列をプリンターに出力。 printer.print(thisChar); } }
1分間おきに、自分のタイムラインを監視して、もし、”Lytro”という文字列があるツイートがあれば、Telnetで記録時間やアカウント名、内容をArduinoに送信、印字されるという仕組みです。
ArduinoとMZK-MF300Dを接続し、Arduinoを無線LAN化して、なかなか楽しいことになっています。サーマルプリンターが英語しか印字できませんが、使いようによっては、有益な情報を自動でどんどん紙に印字してくれるという、夢が広がりますね。