NT京都行ってきた。
Posted by arms22 on 2010年03月27日

京都は西院、春日神社で行われたニコニコ技術部のイベント、NT京都に行ってきました。関西で行われるのは今回で3回目かな?以前にも増して沢山の人が参加していました。
春日神社。巫女さんが超美人。
HDDを再利用した時計。ピカピカのディスクが綺麗。
WiiフィットのボードでコントロールされるLEGOのロボット。顔がかわいい。
レーザーハープ。レーザの光を遮ると音がなります。これはカッコいい。Make:のvol6でも紹介記事が載ってたね。
hsgwさんのLEDキューブ。512個のLEDが圧巻です。立体的に光るLEDはナニか可能性を感じさせられる。
羽ばたく飛行機「オーニソプター」。本当にぱたぱたと羽ばたいて飛びます。キットも発売されていました。買えばよかったかなぁ。
初音ミクカラーのカブ。アマゾンロゴ入りの荷台が良い。
NT京都201003
http://j.nicotech.jp/ntkyoto2010
N:KM(Nico-TECH:Kyouo Meeting)参加してきました。
http://arms22.blog91.fc2.com/blog-entry-225.html
N:TM(Nico-TECH : Takatsuki Meeting)参加してきました。
http://arms22.blog91.fc2.com/blog-entry-176.html
Arduino Fio
Posted by arms22 on 2010年03月23日

(via arduino.cc -> Hardware -> Fio)
Arduino互換機FIOが正式にArduinoのラインアップに加わったようです。Arduino FioはIAMASの小林さんとSpark Funが共同で開発したArduinoボードで、XBee用のソケットとリチウムポリマー充電回路が搭載されています。従来、ATmega168pだったマイコンはATmega328Pに変わってROM/RAM容量が2倍になりました。XBee用のソケットは基板の裏側についています。
主な仕様
マイコン | ATmega328P |
動作電圧 | 3.3V |
入力電圧 | 3.35 -12 V |
充電電圧 | 3.7 - 7 V |
デジタル入出力 | 14本 |
アナログ入力 | 8本 |
フラッシュメモリ | 32KB(うち2KBはブートローダ) |
SRAM | 2KB |
EEPROM | 1KB |
クロック周波数 | 8MHz |
スケッチのアップロードはXBee経由かFTDIケーブル、またはSparkFunのブレイクアウトボードを使う。オンボードのUSBミニBコネクタはリチウムポリマー充電用でシリアル通信には使えません。
ん?アナログ入力が他のボードと比べて2つ多い。
Arduino - Arduino Fio
http://arduino.cc/en/Main/ArduinoBoardFio
Arduino - Arduino Fio Programming
http://arduino.cc/en/Main/ArduinoBoardFioProgramming
エンジニア 精密圧着ペンチ PA-09
Posted by arms22 on 2010年03月22日

エンジニアの精密圧着ペンチPA-09を買いました。これで好きなだけコンタクトピンを圧着できます。シリコンハウス共立でもらった「コンタクトピン圧着のススメ」を読みながら、圧着の基礎を学びました。
グリップの赤がカッチョ良すですな。でも変なにおいがします。。
リード線の皮膜を剥いで、コンタクトピンにセットします。ぶきっちょなのでこの状態に持っていくのに結構苦労します。この状態のまま圧着ペンチにコンタクトピンを載せて圧着します。これ慣れるまでなかなかうまくできません。先にコンタクトピンを圧着ペンチにセットしてから、リード線をコンタクトピンにセットした方が簡単でした。
リード線、皮膜の順に圧着します。まぁまぁうまくできました。数をこなせばもっと綺麗にできると思います。
日本橋ストリートフェスタに行ってきた。
Posted by arms22 on 2010年03月21日

リアルダンボー。勝手に本日のMVPに決定。
惜しくもMVPを逃したけどひときわ目立っていた、ナビタイムの中の人。
他にもジャックスパロウやテトリスバー(三倍早い)、マリオブラザース、キレたピカチュウ、ムックの遺影を持ったガチャピンなど、沢山のコスプレイヤーの方々がいました。来年はサザエさん一家のコスプレで参加してみたい、かも。
Make: Tokyo Meeting 05
Posted by arms22 on 2010年03月20日

Make: Tokyo Meeting 05の開催日時と場所が決まりました!5月22日(土)と23日(日)の二日間、会場は前回と同じ東京工業大学大岡山キャンパス。太平洋を挟んでサンフランシスコでもMaker Faire Bay Areaが催されるそうです。ここは一つUSTREAMで同時中継でもしてほしいところですね。
出展申し込みは来週3月24日から。さてさて今回は何をもって行きましょうかね。
開催日:2010年5月22日(土)、23日(日)
会場:東京工業大学 大岡山キャンパス(東京都目黒区大岡山2-12-1)
入場:無料
交通:東急大井町線・目黒線「大岡山駅」徒歩1分
主催:株式会社オライリー・ジャパン
共催:東京工業大学、多摩美術大学 情報デザイン学科
Make: Tokyo Meeting 05 - 日時と場所決定!
http://jp.makezine.com/blog/2010/03/mtm05_announce.html
GPS付きArduinoカメラ(2)
Posted by arms22 on 2010年03月14日

スタイリングワックスの空き箱でArduinoカメラのケースを作った。左側の青マルは電源オン/オフ兼用シャッタースイッチ、右側のニョキっと飛び出した部分はカメラのレンズ、上側の丸の部分からはGPSのアンテナが見えている。
箱の内側に貼付けた1mmの厚紙で箱の強度を上げている。GPS、カメラモジュール、シャッタースイッチは両面テープで固定し、基板は中に入れるだけという超テキトー仕上げ。
最近は作品をケースに入れて仕上げることを心がけてきたけど、これからは壊れにくい物の作り方も考えて行きたいと思う。基板に半田付けしたワイヤが根元から折れては困るからね。これはコネクタを使って部品同士を繋げるようにすれば大丈夫だと思う。壊れにくい物作りのノウハウみたいなことがまとめて書かれた本とかWEBページないかな?
GPS付きArduinoカメラ
http://arms22.blog91.fc2.com/blog-entry-311.html
圧着ペンチ買わないと!
Arduinoで遊ぼう - GPSを使った高精度な時計
Posted by arms22 on 2010年03月13日

GPS衛星から発信される信号には、衛星に搭載された原子時計の時刻情報が入っている。GPS受信機はこの時刻情報をもとにGPS受信機に搭載されている時計の時刻を校正することで、高精度な時刻情報を得ている。この時刻情報を使って高精度なGPS時計を作った。
GPS受信機をArduinoに接続し、1秒周期で送られてくる時刻情報をLCDに表示している。赤く光っている部品がGPS受信機「LS20031」。このGPS時計は電池一本で何年も動かすことはできないし、屋内ではGPS衛星からの信号を受信することもできない。GPS受信機から送られてくる時刻情報は確かに正確だが、Arduino間の通信時間やArduinoの処理時間などでLCDに表示される時間は数100ms秒遅れる。
Arduinoと接続する

キャラクタLCDとArduinoは次のように接続する。
RS→アナログ0番GPS受信機とArduinoは次のように接続する。
R/W→GND
E→アナログ1番
DB4→アナログ2番
DB5→アナログ3番
DB6→アナログ4番
DB7→アナログ5番
VCC→3.3V
RX→(未接続)
TX→デジタル2番
GND→GND

バックライトLEDのアノード端子は基板上のJ3をショートさせてVCCと接続し、カソード端子は110Ω(R9)抵抗をかいしてGNDに接続している。
ライブラリのインストール
GPS受信機からはNMEAフォーマットと呼ばれるテキスト形式のデータが送られてくる。
$GPGGA,125333.000,3444.4637,N,13532.4905,E,1,5,1.41,32.7,M,34.4,M,,*62
$GPRMC,125333.000,A,3444.4637,N,13532.4905,E,0.09,1.94,110310,,,A*63
NMEAフォーマットは人が理解するには都合が良いが、マイコンのプログラムで扱うには都合が悪い。そこでNMEAパーサー「TinyGPS」ライブラリを使ってNMEAフォーマットをプログラムで扱いやすい形に変換する。
次のURLからライブラリをダウンロードし、Arduinoのライブラリフォルダにコピーする。
TinyGPS | Arduiniana
http://arduiniana.org/libraries/tinygps/
GPS受信機との通信にソフトウェアシリアルを使うので、次のライブラリもダウンロードする。
NewSoftSerial | Arduiniana
http://arduiniana.org/libraries/newsoftserial/
サンプルスケッチ
#include <NewSoftSerial.h>
#include <TinyGPS.h>
#include <LiquidCrystal.h>
// NMEAパーサー TinyGPS
TinyGPS gps;
// ソフトウェアシリアル(RX=2, TX=3)
NewSoftSerial nss(2, 3);
// LCD(RS=14, E=15, DB4=16, DB5=17, DB6=18, DB7=19)
LiquidCrystal lcd(14, 15, 16, 17, 18, 19); // analog 0, 1, 2, 3, 4, 5
void setup()
{
// LCD初期化(16文字、2行)
lcd.begin(16,2);
// PCとのシリアル通信初期化
Serial.begin(115200);
// 最初のメッセージ表示
lcd.print("No GPS Signal.");
// ソフトウェアシリアル初期化(9600bps)
nss.begin(9600);
}
void loop()
{
int year;
byte month, day, hour, minute, second, hundredths;
bool newdata = false;
// GPS受信機から送られたデータがある間
while(nss.available()){
char c = nss.read();
// シリアルモニタに受信した文字を送る
Serial.print(c);
// encode()で1文字ずつ解析
if(gps.encode(c)){
newdata = true;
}
}
if(newdata){
// 画面をクリア
lcd.clear();
// 日付、時間を取得
gps.crack_datetime(&year, &month, &day, &hour, &minute, &second, &hundredths);
// 1行目、1文字目にカーソルを移動
lcd.setCursor(0, 0);
lcd.print(static_cast<int>(year));
lcd.print("/");
lcd.print(static_cast<int>(month));
lcd.print("/");
lcd.print(static_cast<int>(day));
// 2行目、3文字目にカーソルを移動
lcd.setCursor(2, 1);
// GPSの時間はUTC(協定世界時)なので+9時間してJSTにする
lcd.print(static_cast<int>((hour + 9) % 24));
lcd.print(":");
lcd.print(static_cast<int>(minute));
lcd.print(":");
lcd.print(static_cast<int>(second));
lcd.print(".");
lcd.print(static_cast<int>(hundredths));
}
}
オライリージャパン
売り上げランキング: 3176
自作レーザーカッターの実現可能性
Posted by arms22 on 2010年03月10日

最近、レーザーカッターを自作できないか考えている。ハサミやカッターによる加工では複雑な形や綺麗な曲線の切り出しが行えないからね。レーザーカッターを自作することができたら、どんなに複雑な形でも短時間に大量に作ることができる!まぁ、自作できたらの話だけど・・・
レーザーカッターはレーザー光を使って材料をカットする機械だ(そのまんま!)。レーザー光はレーザー発振器(2枚の向かい合った鏡で光を増幅する装置)を用いて人工的に作られる光だ。このレーザー光をレンズを使って直径数μm以下の微小スポットに集光することで材料を瞬時に発熱、燃焼、蒸散させる。
紙とスチレンボードがカットできたらいいので、精度や速度を割り切ってしまえば1~2万円程度で作れると思う。たぶん。レーザーカッターを自作する上で課題となる項目をあげてみた。
- 光学系
レーザーやレンズ。レーザーはDVDやBlu-rayの半導体レーザーが使えるみたい。レンズは虫眼鏡で代用? - 駆動系
ステッパ制御。XYの移動をドウスルか?取り敢えずレゴか? - 制御系
制御マイコンはArduinoかMAKE Controllerかな。PCからどうやってCADデータを送るか?取り敢えずビットマップを送って黒い所を焼くとか、そうゆう簡易制御でいいと思う。
スキャナを2つ使って作った簡易レーザーカッター。レーザー光の直径が2~3mmあるので精度度外視だけど、取り敢えず動いている。
レーザー - Wikipedia
http://ja.wikipedia.org/wiki/レーザー
Laser cutter, start slicing stuff for under 50 dollars
http://www.instructables.com/id/Laser-cutter-start-slicing-stuff-for-under-50-dol/
Laser Diodes - PSXBOY.COM
http://www.psxboy.com/catalog_123.html
―レーザ・ダイオードの発光原理
および諸特性とその展望 (基礎解説シリーズ)
CQ出版
売り上げランキング: 93624
GPS付きArduinoカメラ
Posted by arms22 on 2010年03月07日

GPSロガーを作るつもりでしたが、GPS付きカメラを作ることになりました。カメラ付きGPSロガーともいう。。
左からリチウムポリマーシールド、自作Arduino(Arduino Pro互換機)、SDカード+GPS+カメラシールド。カメラとGPSはまだ半田付けしていませんが、ハードウェアはほぼ完成。
こんな感じでシールドを重ねます。60x60x60mmの立方体紙ケースに収納予定。
主な仕様はこんな感じで。
- マイコン:Arduino Pro 3.3V 8MHz 328互換
- カメラ:JPEGカラーカメラC328
- GPS:LS20031
- 電源:リチウムポリマーバッテリー 3.7V 1000mA
- メディア:SDカード
- ディスプレイ:なし
Arduino camera and geotagger
http://jarv.org/sdcam.shtml
4Motors ShieldとWATTMETER Shield
Posted by arms22 on 2010年03月06日

またまたガリレオ・セブンさんのオフィスにおじゃまして来ました。今日は3/8発売の「4Motors Shield」と「WATTMETER Shield」を見せてもらいました。他にも開発中のシールドの情報などいろいろ面白いお話が聞けました。
4Motors Shield。4つのモーターが制御できるシールドです。モーターの代わりにLEDも使えるようです。
WATTMETER Shield。U_RD社のクランプ型電流センサーを使用しています。キットには2つセンサーが付いて来ます。最大5つまでセンサーを追加できるようです。配電盤に埋め込んで使うのかな?
風量や雨量も計測できるよう改良されたWeatherDuinoです。
謎の紙ロボを組み立てていたのでお手伝い。
ベシ○もびっくり!紙ア○モ!
がんばればちゃんと立ちます。
galileo 7 (ガリレオ・セブン)
http://galileo-7.shop-pro.jp/
Arduinoで遊ぼう - 動作クロックを切り替えて省電力制御
Posted by arms22 on 2010年03月04日

Arduinoの動作クロックを変更するライブラリ「Prescaler」を作った。普段、Arduinoは16MHz(Proは8MHz)で動いている。このライブラリを使えば8MHz、4MHz、2MHz、1MHzと動的に動作クロックを切り替えることができる。USB電源やDC電源を使って動作させている場合はそれほど省電力に気を使う必要はないだろう。でも、電池やソーラーセルで動作させたい場合は別だ。動作クロックを切り替えて、積極的に省電力制御を行おう。
次の図はATmega168Pの動作クロックと消費電流の関係を表している。当然、動作クロックが低いほど消費電流は少なくなる。
(ATmega168Pのデータシートより)
次の関数・ライブラリはArduinoが16MHz(Proは8MHz)で動いていることを前提に作られている。その為、Prescalerで動作クロックを切り替えると正しく動作しなくなる。
- Serialライブラリ
- tone()
- analogRead()
- micros()
- millis()
- delayMicroseconds()
- delay()
delay()/millis()については代替関数を用意しているので、これらを使う。
- scaledMillis()
- scaledDelay(ms)
ライブラリのインストール
次のURLからPrescalerライブラリをダウンロードし、Arduinoのライブラリフォルダにコピーする。
Prescalerライブラリ
http://arms22.googlecode.com/files/Prescaler001.zip
サンプルスケッチ
#include <Prescaler.h>
const int led_pin = 13;
void setup()
{
pinMode(led_pin, OUTPUT);
Prescaler.set(clock_div_8);
}
void loop()
{
scaledDelay(500);
digitalWrite(led_pin, HIGH);
scaledDelay(500);
digitalWrite(led_pin, LOW);
}
Prescaler.set()でSystem Clock Prescalerの分周比を設定する。Arduino Pro 3.3V 8MHz 168を使って分周比1から256まで設定した時の消費電流を計測してみた。
div1 | 8MHz | 5.0mA |
div2 | 4MHz | 3.4mA |
div4 | 2MHz | 2.5mA |
div8 | 1MHz | 1.8mA |
div16 | 500kHz | 1.5mA |
div32 | 250kHz | 1.3mA |
div64 | 125kHz | 1.2mA |
div128 | 62.5kHz | 1.2mA |
div256 | 31.25kHz | 1.1mA |
※実は Arduino playground 全く同じようなライブラリがすでにあったりする。。
Arduino playground - Prescaler
http://www.arduino.cc/playground/Code/Prescaler
オライリージャパン
売り上げランキング: 107826