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

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

スタバカップアンプベンティ(2)

Posted by arms22 on 2010年02月28日 1  0

IMGP4753.jpg
2つ目のベンティカップを入手しました。部品代よりカップ代(ベンティラテ470円)のほうが高い場合もあります。。ダイソー行ってカップの底にTOKANって書かれたカップを探せば同じサイズのモノが安く買えます。真っ白なので自由にデザインできますけど、、それじゃ意味がないってことで。

二つ並べるとなかなか様になります。こうしてベンティカップをずっと眺めていると、他のカップが小さく感じてしまいます。ショートが試飲カップに、、、見えませんね。

スタバカップアンプベンティ

Posted by arms22 on 2010年02月23日 2  0

もういい加減にしろって声が聞こえて来そうだけど、またまたまた作ってます。スタバカップアンプ。もうこれで何個目?それは作った本人にも分からない。でも、空きカップがある限り作り続けます!たぶん。。
IMGP4595.jpg
ラチェット機構付きのコンパスカッターは作業が楽だ~。

IMGP4610.jpg
共立エレショップで買ったスピーカー(8Ω5W)はグランデ、ベンティにぴったり~。作っていて気がついたけど、ベンティの口の大きさはグランデと同じみたい。ベンティの大きさはグランデを縦にびろーんと伸ばした感じ。
最初、スタバカップアンプにするにはどんくさすぎると思ったけど、だんだん慣れて来て、これはこれで味があるなぁと思えて来た。

IMGP4627.jpg
中のアンプはグランデサイズを作った時と同じフィリップスのTDA1552QパワーアンプICを使用。丸くカットした超薄型ユニバーサル基板にICを実装。


わたしは冷蔵庫

Posted by arms22 on 2010年02月21日 2  0

reizouko_soto_2_21.jpg

今週は冷蔵庫の中をず~と撮影していました。

reizouko_naka_2_21.jpg

このカメラは画角が狭いので冷蔵庫の中の全体を撮るのは無理そう。携帯電話のカメラ用の広角レンズを使えばうまくいきそうな気がする。でもちょっと高い。ガラスのビー玉とかで代用できないかな。

リチウムポリマーバッテリーシールド

Posted by arms22 on 2010年02月14日 2  0

リチウムポリマーバッテリーシールド
超薄型プロトシールドを使ってリチウムポリマーバッテリーシールドを作ってみました。デジットで450円で買った3.7V、1000mAのリチウムポリマーを搭載しています。ON/OFFスイッチ付きです。

リチウムポリマーバッテリーシールド
リチウムポリマーの+端子はアルミタブなので普通の半田では半田付けで来ません。その為、+-端子のタブを7x20mmほどの小さな基板とシールドの基板で挟んで固定しています。


超薄型プロトシールド
http://arms22.blog91.fc2.com/blog-entry-304.html


超薄型プロトシールド

Posted by arms22 on 2010年02月13日 0  0

超薄型プロトシールド
超薄型ユニバーサル基板を使ってプロトシールドを量産しました。

超薄型円型基板
コンパスカッターを使って円形の基板も作ってみた。

OLFAの小型カッターで切り出し、ヤスリで仕上げています。一回切るとカッターの刃がボロボロになってしまうので、もっと硬い刃をもったカッターが欲しい。そろそろ電動の工具買わないとだめかなぁ。

厚さ0.4mmの超薄型ユニバーサル基板
http://arms22.blog91.fc2.com/blog-entry-292.html


ユニバーサル基板(黒) 超薄型t=0.4mm 230x390mm
プリント基板センターPB
売り上げランキング: 12284



イージースピーカー

Posted by arms22 on 2010年02月11日 0  0

IMGP4467.jpg
Make:09に掲載されていたイージースピーカーを作ってみました。インナーイヤー式ヘッドフォンを使ったお手軽スピーカーです。

IMGP4471.jpg
iPodに標準で付いてくるヘッドフォンは付け方を工夫する必要があります。ヘッドフォンはしっかりカップに固定し、カップに振動がうまく伝わる様にします。

IMGP4460.jpg
カップ2つを紐で繋げばヘッドフォンとして、より大きな音で音楽が楽しめます。



Make: Technology on Your Time Volume 09

オライリージャパン
売り上げランキング: 2232



Arduino用Wi-Fiシールド「WiShield」

Posted by arms22 on 2010年02月11日 8  0

asynclabs_wishild.png

Arduino用のWi-Fiシールドを検索中です。写真はasync_labsが開発したIEEE 802.11b対応のWi-Fiシールド「WiShield」。Liquidwareで販売されているけど、買って日本で使えるかどうか分からない。使っても大丈夫かな?

無線LANルータまたはAPとイーサーネットシールドを組み合わせれば無線化できるけど、それは最終手段かな。PLANEXのMZK-WNH-BKBLW-54CW3は安いけどちょっと大きいよね。MZK-MF150BはコンパクトでArduinoと同じようなサイズだけど、ちょっと高い。Arduinoより安い無線LANルータって一体。。


2010/4/2追記
WiShieldは技適認証を受けていないので国内では使用できません。


async_labs : WiShield 1.0
http://www.asynclabs.com/store?page=shop.product_details&flypage=flypage.tpl&product_id=17&category_id=6

WiShield 1.0
http://asynclabs.com/wiki/index.php?title=WiShield_1.0

Liquidware : WiShield
http://www.liquidware.com/shop/show/WIFI/WiShield


MOS FETを使ったマイコン周辺回路の電源の制御方法

Posted by arms22 on 2010年02月09日 4  0

マイコン周辺回路の電源の制御方法を検討中です。次の回路図の様にMOS FETを使って+側を制御する方式をハイサイドスイッチというようです。手持ちのPch型MOS FET「2SJ377」が使えそうです。
Pch型MOS FETを使ったハイサイドスイッチ回路
マイコンのポートを使ってFETのゲートを駆動する。ポートとゲートの間には100Ω程度の抵抗を入れる。マイコンのポート電圧でFETのゲートを駆動できない場合、トランジスタを追加したりする。

マイコン周辺回路の電源制御はこれで良いとして、周辺回路とつながっているポートの処理をどうすればいいだろう。ポートを入力に設定してそのまま?ポートを出力にしてL出力にする?

ゲート抵抗、トランジスタなどを1パッケージにした専用のICもあるみたい。こうゆうICがもっとお手軽に手に入ると回路設計が簡単になるんだけど、それは楽をしすぎかもしれない。。

ハイサイド・ロードスイッチ
http://www.micrel.jp/doc/products/analog/pwmg_highside-load-swich.html

MOS FETを使用したハイサイドスイッチ
http://todotani.cocolog-nifty.com/blog/2010/01/mos-fet-b7c9.html


ガリレオ・セブン!

Posted by arms22 on 2010年02月07日 2  0

IMGP4441.jpg

大阪でArduinoやオリジナルのArduinoシールドを開発・WEBで販売されているガリレオ・セブンさんのオフィスにおじゃましてきました。
今はまだ詳しいことは書けませんが、大阪でナニかがはじまろうとしています。。

galileo 7 (ガリレオ・セブン)
http://galileo-7.shop-pro.jp/

日本語の音声をリアルタイムに合成・発声することができるシールドや、気圧・温度・湿度・照度など測定できるお天気シールドなど面白アイテムがいっぱいあります。気になる人はぜひチェックしてみてください。


Arduinoで遊ぼう - GPSで現在位置を取得する

Posted by arms22 on 2010年02月04日 18  0

ls20031_w_arduino.jpg

SparkFun Electronicsの32 Channel LS20031 GPS 5Hz Receiverはアンテナ内蔵型の32チャンネルGPSモジュールで秒間最大5回、位置情報を出力する。消費電流が3.3V動作時に41mAと少なくバッテリー動作に最適のGPSモジュールだ。サイズも30x30mmとかなり小さい。

このモジュールの仕様は次の通り。

  • MediaTek MT3318チップ搭載
  • シリアルインターフェース
  • 32チャンネル対応
  • 秒間最大5回更新
  • ホットスタート2秒
  • コールドスタート32秒
  • 動作電圧3V~4.2V、消費電流41mA
  • 外形30x30mm

今回、このGPSモジュールから送られてくる位置情報をArduino経由して、パソコンに取り込んでみるよ。

※LS20031はスイッチサイエンスで取り寄せてもらいました。入荷までに少し時間がかかるけど、送料が気になる人は取り寄せてもらうといいよ。

LS20031のピンアサイン


LS20031ピン配置
このGPSモジュールはワイヤが接続されていませんが、パッドの間隔が2.54mmなので十分手で半田付けできます。

Arduinoに接続する


LS20031とArduino接続実体配線図

LS20031とArduino接続回路図

GPSモジュールとArduinoは次のように接続する。
3.3V --> VCC端子
2番 <-- TX端子
3番 --> RX端子
GND --> GND端子
例によって5V動作のArduinoと接続する時は、3番 --> RX端子の間に抵抗(R1=1.8KΩ、R2=3.3KΩ)を入れて接続する。

ライブラリをインストールする


GPSモジュールとの通信にはソフトウェアシリアルを利用する。その為、次のURLからソフトウェアシリアルライブラリをダウンロードしてください。Arduinoのハードウェアシリアル(0番、1番)はパソコンとの通信に使用する。

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

ダウンロードして解凍したフォルダを~/Documents/Arduino/librariesフォルダにコピーしてください。librariesフォルダがない場合は新しく作成してください。

サンプルスケッチ


#include <NewSoftSerial.h>
#include <ctype.h>

NewSoftSerial gps(2,3);

void setup()
{
  Serial.begin(9600);

  delay(2000);

  auto_detect_baud_rate();

  send_pmtk_packet("PMTK220,1000");
  send_pmtk_packet("PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0");
  send_pmtk_packet("PMTK251,9600");

  auto_detect_baud_rate();
}

void loop()
{
  if(gps.available()){
    Serial.print((char)gps.read());
  }
}

void auto_detect_baud_rate(void)
{
  const unsigned int bauds[] = {
    57600, 38400, 28800, 14400, 9600, 4800 };

  Serial.print("auto detect... ");

  for(int i=0; i<(sizeof(bauds)/sizeof(bauds[0]));i++){
    int p = 0;
    int r = 0;
    gps.begin(bauds[i]);
    gps.flush();
    do{
      if(gps.available()){
        if(isprint(gps.read())){
          p++;
        }
        r++;
      }
    }
    while(r < 20);
    if(p > 15){
      Serial.print(bauds[i]);
      Serial.println(" ok");
      return;
    }
    delay(100);
  }

  Serial.println("fail");
  while(1);
}

void send_pmtk_packet(char *p)
{
  uint8_t checksum = 0;
  gps.print('$');
  do {
    char c = *p++;
    if(c){
      checksum ^= (uint8_t)c;
      gps.print(c);
    }
    else{
      break;
    }
  }
  while(1);
  gps.print('*');
  gps.println(checksum,HEX);
}



setup()でGPSモジュールにいくつかのコマンドを送信します。
位置情報の出力間隔をミリ秒で指定します。
PMTK220,1000

出力する位置情報の種類を設定します。RMC(Recommended Minimum Specific GNSS Data)とGGA(Global Positioning System Fix Data)。
PMTK314,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

ボーレートを設定します。
PMTK251,9600

※注意※
このスケッチではgpsとのシリアル通信のボーレートを自動検出しています。このGPSモジュールのデフォルトのボーレートは9600bpsとデーターシートに書かれていますが、実際には57600bpsでした。他にも38400bpsだったりすることもあるみたいなので、自動検出できるようにしています。時々、間違ったボーレートにしてしまうので、予めボーレートが分かっている場合は、自動検出を使わず、直接ボーレートを指定してください。

loop()でgpsが出力したデータをパソコン側に送信します。シリアルモニタを開くと次のような文字列が送られてきます。これらの文字列はNMEA-0186フォーマットと呼ばれています。カンマで区切られた数値が測位時刻、経度、緯度、対地速度、進行方向などの情報です。詳しくは下記、URLを参照してください。

NMEA-0183フォーマット
http://bg66.soc.i.kyoto-u.ac.jp/forestgps/nmea.html

$GPRMC,145059.000,V,3445.7660,N,13531.3476,E,0.00,0.00,030210,,,N*78
$GPGGA,145100.000,3445.7663,N,13531.3474,E,0,1,,41.5,M,34.3,M,,*74
$GPRMC,145100.000,V,3445.7663,N,13531.3474,E,0.00,0.00,030210,,,N*74
$GPGGA,145101.000,3445.7655,N,13531.3480,E,0,1,,41.5,M,34.3,M,,*7B
$GPRMC,145101.000,V,3445.7655,N,13531.3480,E,0.00,0.00,030210,,,N*7B
$GPGGA,145102.000,3445.7656,N,13531.3479,E,0,1,,41.5,M,34.3,M,,*7D
$GPRMC,145102.000,V,3445.7656,N,13531.3479,E,0.00,0.00,030210,,,N*7D
$GPGGA,145103.000,3445.7653,N,13531.3481,E,0,1,,41.5,M,34.3,M,,*7E
$GPRMC,145103.000,V,3445.7653,N,13531.3481,E,0.00,0.00,030210,,,N*7E
$GPGGA,145104.000,3445.7660,N,13531.3476,E,0,1,,41.5,M,34.3,M,,*71
この文字列をGoogle Mapコンバータに入力するとGoogle Map上にその位置が表示されるよ。

GPS NMEA data to Google Map converter
http://www.gonmad.co.uk/nmea.php

電源投入直後、GPSモジュールから有効な位置情報が送られてくるまでに30秒以上かかります。空が見えるベランダにモジュールを出してしばらく待ちましょう。モジュールが衛星を補足し、有効な位置情報を送りだすとモジュール上のLEDが1秒間隔で点滅します。



SparkFun Electronics - 32 Channel LS20031 GPS 5Hz Receiver
http://www.sparkfun.com/commerce/product_info.php?products_id=8975

Leadtek NMEA Protocol Manual for MTK
ftp://ftp.leadtek.com.tw/gps/9023/LeadtekNMEAProtocolManualforMTKV1.0.pdf



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




x86 Android 2.0 a.k.a Eclair on VMware

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

android-eclair-screenshot.png

Android-x86プロジェクトのソースコードリポジトリにEclair 2.1のコードがマージされていたので、またVMwareで動かしてみた。以前、Android DonutをVM上で動かした時と同じ手順で、さっくり動かせた。今回、VM上で動作しているUbuntuでAndroidのフルコンパイルに挑戦した。コンパイルに半日程度かかったけど、うまくコンパイルすることができた。残念ながらUSBイメージは配布されていないので、自分でビルドする必要がある。

0.ビルド環境の構築
次のURLを参考にビルド環境を構築する。VMで動かしているUbuntuでも手順は同じだよ。

Get source (Android Open Source Project)
http://source.android.com/download

1.Android-x86ソースコードの取得

$ mkdir android-x86
$ cd android-x86
$ repo init -u git://git.android-x86.org/android-x86/platform/manifest.git
$ repo sync

2.ビルド
$ make -j4 usb_img TARGET_PRODUCT=eeepc

3.仮想ディスクの作成
$ qemu-img convert out/target/product/eeepc/eeepc_usb.img -O vmdk installer.vmdk
$ qemu-img create -f vmdk android.vmdk 4G

4.VMwareのIDEディスクの設定
vmxファイルを開いて次の行を追加。ide0:0がprimary master、ide0:1がprimary slave。
ide0:0.present = "true"
ide0:0.fileName = "android.vmdk"

ide0:1.present = "true"
ide0:1.fileName = "installer.vmdk"

5.Androidのインストール
手順4で編集したvmxファイルでVMwareを起動し、BIOS設定でIDE primary slaveから起動する。後はAndroidのインストール手順通りにインストールする。


x86 Android Donut on VMware
http://arms22.blog91.fc2.com/blog-entry-254.html


Arduino 0018 サードパーティ製ハードウェアのサポート

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

Arduinoソフトウェアのバージョン0018がリリースされました。細かな修正が殆どですが、一部気になる変更点も。船田戦闘機さんがリリースノートを翻訳されています。

指定した周波数を発するtone()関数とnoTone()関数を追加

以前このブログでも紹介したArduino-toneライブラリが組み込まれたようです。

Arduinoで遊ぼう - 圧電スピーカでチクタク

サードパーティ製ハードウエアをサポートするために、SKETCHBOOK/hardwareフォルダを追加し、従来のhardwareフォルダをミラーリング

SKETCHBOOK/hardwareにcoresとかboards.txtを置いとけば自動的にメニューに追加されるのかも。まだ試していないのでわかりません。

今年の夏とか秋ぐらいに1.0のリリースを予定しているとかしていないとか。。arduino.ccの動向が気になります。

Arduino Wiki - Arduino-0018リリース
http://www.musashinodenpa.com/wiki/

Arduino Software Release Notes
http://arduino.cc/en/Main/ReleaseNotes



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