PythonでTwitter解析して、Arduinoに接続したサーマルプリンターで内容を出力

色々応用が効きそうなので。

サーマルプリンターと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化して、なかなか楽しいことになっています。サーマルプリンターが英語しか印字できませんが、使いようによっては、有益な情報を自動でどんどん紙に印字してくれるという、夢が広がりますね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です