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

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

Arduino EthernetとArduino MEGA ADK

Posted by arms22 on 2011年07月18日 0  0

Arduinoチームから新しいボードのご紹介。Arduino EthernetとArduino MEGA ADKです。

Arduino Ethernet, ADK Available for purchase
http://arduino.cc/blog/2011/07/13/arduino-ethernet-adk-available-for-purchase/

Arduino Ethernetはつい先日、SparkFunから発売されたEthernet Proと同じコンセプトのボードでEthernetシールドとArduino Unoが合体したようなボードだ。Arduino EthernetはEthernet ProとおなじくUSBシリアル変換のチップがついていないのでスケッチの書込みには別途、USBシリアル変換ボードが必要だ。Arduino EthernetはPoE(Power over Ethernet)に対応している。PoEはイーサーネットケーブルを介して電源を供給する仕組みで、PoEを利用するには別途、PoEモジュールをつける必要がある。

Arduino Ethernet
Arduino Ethernet
http://arduino.cc/en/Main/ArduinoBoardEthernet


続いてArduinoチームオフィシャルのADKボード、Arduino MEGA ADKです。USBホストシールドとArduino MEGAが合体したようなボードで、Androidにつないでナニかしたい時に使います。折角、USBホストの機能がついているのだからAndroid以外でも使いたいところ。安価なPC用USB機器が使えると楽しそうだ。USBマウスとかキーボード、Bluetooth、カメラ、etc

Arduino MEGA ADK
Arduino MEGA ADK
http://arduino.cc/en/Main/ArduinoBoardADK


最後はAndroidでナニかしたい時に便利なセンサーキット。はんだづけ不要でLEDやボタン、リレー、タッチセンサ、スライドボリュームなどを追加できる。

ADK Sensor Kit
ADK Sensor Kit
http://store.arduino.cc/ww/index.php?main_page=product_info&cPath=2_23&products_id=140



スポンサーサイト

Ethernet Pro

Posted by arms22 on 2011年07月08日 0  0

ethernet_pro.jpg

SparkFunの新製品「Ethernet Pro」。こいつはArduino Unoとイーサーネットシールドを合体したような製品で、イーサーネットシールドのWiznet W5100チップとATmega328が搭載されている。USBシリアルのチップは搭載されていないので、スケッチの書き込みには別途、USBシリアルアダプタが必要だ。またEthernet ProにはArduino Unoと同じブートローダ「Optiboot」が書き込まれているので、ボードタイプはArduino Unoを選択して、スケッチを書き込む。

これでArduino Unoとイーサーネットシールドをスタックさせて、ものすごく高いタワーを作る必要がなくなったね!


スイッチサイエンス/商品詳細 Ethernet Pro
http://www.switch-science.com/products/detail.php?product_id=650

SparkFun - Ethernet Pro
http://www.sparkfun.com/products/10536


Arduinoで遊ぼう - JPEGカメラで撮った写真をTwitPicにポストする

Posted by arms22 on 2010年01月09日 1  0

JPEGカメラモジュール+イーサーネットシールド /w Arduino
TwitPicに画像をポストするライブラリの応用編。JPEGカメラモジュールで撮った写真を直接TwitPicにポストしてみるよ。

接続する



c328r_2led_1sw.png
今回、JPEGカメラモジュールとの通信にはソフトウェアシリアルを使わず、ハードウェアシリアルを使います。ArduinoのTX、RX端子にJPEGカメラモジュールを接続します。JPEGカメラモジュールが接続されているとスケッチのアップロードに失敗するので、スケッチをアップロードする時はJPEGカメラモジュールを外して下さい。

ハードウェアシリアルをJPEGカメラモジュールとの通信に利用した為、処理中のメッセージを表示することができなくなりました。処理中を表すLEDとエラーを表すLEDを追加します。処理中は青色LED(digital 6番)を点灯させ、エラーが発生した場合(ポストに失敗など)には赤色LED(digital 5番)を点灯させます。

シャッターボタンをdigital 4番に接続します。ditital 4番の内蔵プルアップ機能を有効にします。スイッチを押した時のLOWレベルを検知して写真を撮影し、TwitPicにポストします。


ライブラリのインストール


次のライブラリをダウンロードし、Arduinoのlibrariesフォルダにコピーしてください(~/Documents/Arduino/libraries)。

画像サイズを取得できるよう改造したカメラライブラリ(CameraC328R)
http://arms22.googlecode.com/files/CameraC328R_002.zip

TwitPic-003.zip
http://code.google.com/p/arms22/downloads/detail?name=TwitPic-003.zip
TwitPicライブラリ
http://arms22.googlecode.com/files/TwitPic_002.zip


Arduiniana - NewSoftSerial
http://arduiniana.org/libraries/newsoftserial/


スケッチ


EthernetとSerialを初期化した後、シャッターボタンが押されるの待ちます。シャッターボタンのLOWレベルを検出したらJPEGカメラモジュールとの通信を開始し、スナップショットコマンドを送ります。
撮影に成功したら撮影した画像のサイズを取得し(camera.getJPEGPictureSize)、TwitPicへ画像のアップロードを開始します(twitpic.upload)。
upload関数に指定したc328rImageTransfer関数がコールされたら、撮影した画像の取得を開始します(camera.getJPEGPictureData)。撮影した1枚の画像はJPEGカメラモジュールから分割して送られてきます。分割された画像データが届く度にgetJPEGPicture_callbackがコールされるので、client->write関数を使ってTwitPicに分割された画像データを送信します。


#include <Ethernet.h>
#include <TwitPic.h>
#include <CameraC328R.h>
#include <NewSoftSerial.h>

#define SNAPSHOT     4
#define ERROR_LED    5
#define PROGRESS_LED 6

#define CAMERA_BAUD 57600

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

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

CameraC328R camera;

uint16_t pictureSize = 0;
Client *targetClient;

/**
 * This callback is called EVERY time a JPEG data packet is received.
 */
void getJPEGPicture_callback( uint16_t pictureSize, uint16_t packageSize, uint16_t packageCount, byte* package )
{
  targetClient->write(package,packageSize);
}

uint32_t c328rImageTransfer(Client *client)
{
  if(client){
    targetClient = client;
    camera.getJPEGPictureData( &getJPEGPicture_callback );
  }
  return pictureSize;
}

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

  pinMode( PROGRESS_LED, OUTPUT );
  digitalWrite( PROGRESS_LED, HIGH );

  pinMode( ERROR_LED, OUTPUT );
  digitalWrite( ERROR_LED, HIGH );

  pinMode( SNAPSHOT, INPUT );
  digitalWrite( SNAPSHOT, HIGH ); // pull-up

  delay(10000);

  digitalWrite( PROGRESS_LED, LOW );
  digitalWrite( ERROR_LED, LOW );
}

void loop()
{
  do {
    if( digitalRead(SNAPSHOT) == LOW ){

      digitalWrite( PROGRESS_LED, HIGH );
      digitalWrite( ERROR_LED, LOW );

      if( !camera.sync() ){
        goto camera_error;
      }

      if( !camera.initial( CameraC328R::CT_JPEG, CameraC328R::PR_160x120, CameraC328R::JR_640x480 ) ){
        goto camera_error;
      }

      if( !camera.setPackageSize( 64 ) ){
        goto camera_error;
      }

      if( !camera.setLightFrequency( CameraC328R::FT_50Hz ) ){
        goto camera_error;    
      }

      if( !camera.snapshot( CameraC328R::ST_COMPRESSED, 0 ) ){
        goto camera_error;    
      }

      pictureSize = 0;
      if( !camera.getJPEGPictureSize( CameraC328R::PT_SNAPSHOT, PROCESS_DELAY, pictureSize) ){
        goto camera_error;    
      }

      if(twitpic.upload(&c328rImageTransfer) < 0){
        goto camera_error;
      }

      camera.powerOff();
      break;

camera_error:
      digitalWrite( ERROR_LED, HIGH );
    }

    digitalWrite( PROGRESS_LED, LOW );
    delay(100);
  }
  while(0);
}




Arduinoで遊ぼう - TwitPicに画像をポストするライブラリ(OAuth対応)
http://arms22.blog91.fc2.com/blog-entry-354.html
Arduinoで遊ぼう - TwitPicに画像をポストするライブラリ
http://arms22.blog91.fc2.com/blog-entry-287.html


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



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



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



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






該当の記事は見つかりませんでした。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。