なんでも作っちゃう、かも。

Arduino/Make/フィジカルコンピューティング/電子工作あたりで活動しています。スタバの空きカップを使ったスタバカップアンプなど製作。最近はもっぱらArduinoと3Dプリンタの自作に興味があります。

Arduinoで遊ぼう - TwitPicに画像をポストするライブラリ

Posted by arms22 on 2010年01月02日 6  0

Twitter上で画像を共有するサービス「TwitPic」にArduinoから画像をポストするライブラリを作ったよ!ArduinoからTwitterにつぶやきをポストするライブラリはあったけど、画像をポストするライブラリはなかったでしょ?

JPEGカメラモジュールと組み合わせれば定点観測カメラなんかも簡単に作ることができるよ!ご利用は計画的にね!

追記2010/1/5
そうそうArduinoをインターネットに接続するにはイーサネット・シールドが必要だよ。

Arduinoと接続する



JPEGカメラモジュール接続図

Arduinoで遊ぼう - JPEGカメラモジュールで写真を撮る
http://arms22.blog91.fc2.com/blog-entry-261.html

ライブラリをダウンロードする


TwitPicライブラリ
http://arms22.googlecode.com/files/TwitPic_001.zip
http://arms22.googlecode.com/files/TwitPic_002.zip

ダウンロード+解凍してできたTwitPicフォルダをArduinoフォルダのHardware/librariesにコピーしてください。Mac用のArduino IDEでバージョンが0017以上の場合~/Documents/Arduino/librariesにTwitPicフォルダをコピーしてください。librariesフォルダがない場合は新規作成してください。


サンプルスケッチ


サンプルを実行させると次のような画像とメッセージをポストするよ。
※IPアドレスやMACアドレスはあなたの環境に合わせて変更してください。

twitpic_sample_shot.png


#include <Ethernet.h>
#include <TwitPic.h>
#include "SampleImage.h"

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte ip[] = { 10, 0, 0, 177 };

TwitPic twitpic("Yourname","Password");

uint32_t sampleImageTransfer(Client *client)
{
  if(client){
    for(uint32_t i=0; i<sizeof(sampleImage); i++){
      client->print(pgm_read_byte(sampleImage+i));
    }
  }
  return sizeof(sampleImage);
}

void setup()
{
  Ethernet.begin(mac, ip);
  Serial.begin(9600);

  delay(3000);

  int ret = twitpic.uploadAndPost("Sample Image Post from Arduino", &sampleImageTransfer);
  if(ret < 0){
    Serial.print("post failed : err code = ");
    Serial.println(ret);
  }
  else{
    Serial.println("OK.");
  }
}

void loop()
{
}


Ethernet.hとTwitPic.hをインクルードします。あなたの環境にあわせてMACアドレス、IPアドレスを変更します。TwitPicクラスのインスタンスを作成します。この時、あなたのTwitterIDとパスワードを指定します。setup関数でEthernetライブラリの初期化を行います。

画像のポストにはuploadAndPost関数またはupload関数を使います。uploadAndPost関数はTLにメッセージを流しますが、upload関数は画像のポストのみ行います。

uploadAndPost関数の第1引数にはポストするメッセージ、第2引数には画像を転送するユーザ関数のポインタを渡します。

ユーザ関数は2つの機能をライブラリに提供する必要があります。1つは転送する画像サイズをライブラリに通知すること、もう1つは画像の転送を行うことです。

ライブラリは最初に引数0を渡しユーザ関数を呼び出します。この時ユーザ関数はこれから転送する画像のサイズを返します。次に引数にClientクラスのポインタを渡して呼び出します。この時ユーザ関数はClientクラスを使って画像を転送します。

画像の転送が完了しポストに成功したらuploadAndPost関数は0を返します。失敗した場合、負の値を返します。-1は致命的なエラー。-1001はTwitterIDまたはパスワードが無効です。-1002は画像が見つかりません。-1003は無効な画像タイプです。-1004は画像サイズが4MB以上です。

今のところこのライブラリはJPEG画像のポストにしか対応していません。



Arduinoイーサネット・シールド
スイッチサイエンス
売り上げランキング: 8652



Arduinoをはじめようキット
スイッチサイエンス
売り上げランキング: 2539






Ads by Google

6 Comments

船田戦闘機 says..."うお!"
すごいですね。夢がふくらみますね。あ、あけましておめでとうございます。
2010.01.03 01:53 | URL | #- [edit]
arms22 says..."No title"
船田さん

あけましておめでとうございます。
今年もよろしくお願いします。

いろいろ組み合わせていくと楽しそうですけど、そろそろArduinoだとメモリとか厳しそうです。
2010.01.04 00:07 | URL | #j7sy4omY [edit]
says..."管理人のみ閲覧できます"
このコメントは管理人のみ閲覧できます
2010.05.24 15:01 | | # [edit]
says..."管理人のみ閲覧できます"
このコメントは管理人のみ閲覧できます
2010.05.24 15:12 | | # [edit]
arms22 says..."Re: 質問です!"
twitpicのAPI仕様が大きく変わったようです。
後日対応しようと思います。
2010.05.24 23:52 | URL | #- [edit]
m_wakayama says..."ReRe:質問です!"
申し訳ありません....対応していただけると助かります。
宜しくお願いします。
2010.05.25 01:40 | URL | #4kI1SnbY [edit]

Leave a reply






管理者にだけ表示を許可する

該当の記事は見つかりませんでした。