/*
更新情報
2014/04/09 開始
2014/04/13 試作開始 シャッターを切るまで
2014/04/14 文章手直し
2014/05/06 文章書き
2014/05/06 センサーをつかった試作機制作
*/
概要
このレビューではインテルGalileo開発ボードを用いて試作機をつくります。
これから書くこと
- Galileoって何?
- Galileoで何ができるの?
- Galileoの開封
- 今回やりたい事
- 機能実現に必要な物
- 実際につくってみる
- 発展させてつくってみる
- まとめと感想
Galileoって何?
GalileoはマイコンボードとしておなじみArduinoと互換性がある開発ボードです。
しかも、あのIntelが作ったArduino互換ボードです。
Galileoで何ができるの?
いろいろ(笑)
GalileoにはプロセッサーとしてQuark X1000、Mini PCI Express、Ethernet、microSDカードスロット(SDIO)、USB 2.0(ゲスト/ホスト)、UART、JTAGなどが搭載されています。
これだけ色々と搭載されていれば思いついたデバイスをつくる際に役に立つことは間違いありません。しかもArduino用の拡張シールドやスケッチの流用ができるようです。
Galileoの開封
早速箱を見てみましょう。
パッケージにはダンディーなおじさんの顔とWhat will you make?とあります。
おじさんのかけているサングラスが宇宙模様なのは無限の可能性を秘めているという意味でしょうかね。(憶測)
上面
底面
いざ開封。
内容物すべて
各国用のプラグがあるのがIntelぽい(?)。そしてIntelロゴがかっこいい
本体
大きさ比較をします。
上からArduino,Raspberry Pi,Galileo
Galileoの上にArduino2つ
驚いたことにGalileoはArduinoを2つ並べた大きさとほぼ同じでした。
今回やりたい事
今回やりたい事は、
-
- 一眼レフカメラだけでは撮影が不可能なインターバル撮影
- センサの入力に反応してシャッターを切る
などの、Galileoと一眼レフカメラ、赤外線センサなどを使用してそれぞれが連携し動作するオリジナル試作機を製作すること。
機能実現に必要な物
- インテル(R) Galileo 開発ボード
- 一眼レフカメラ
- リモートレリーズ
- フォトカプラ
- 抵抗(1kΩ)
- ブレッドボード
- ジャンパーコード
実際につくってみる
動作確認
とりあえずGalileoと仲良くなるためにも、お決まりのHelloWorldならぬLED点滅まで行ってみたいと思います。
今回、私はGarileoをArduino互換機として使用するので、そのための環境を構築してみます。
まずはソフトウェアのダウンロードです。Intel Makers Communityからダウンロードできます。
https://communities.intel.com/docs/DOC-22226
私の環境はwindows7 64bitなので「Intel Galileo Arduino SW 1.5.3 on Windows」をダウンロードしました。
これはお使いの環境に合わせてダウンロードしてください。
そしてダウンロードしたzipファイルを"C:\"にGalileoというフォルダを作成して解凍します。
(※私は解凍ソフト Lhaplusv1.59を使用した際にファイルに不具合が発生したため、windows7標準の解凍ソフトを使用しました。)
そしてGalileoを必ずACアダプタ、USBの順番で接続します。
(※順番に従わない場合、故障する恐れがあるので注意)
接続後
次に、デバイスマネージャからGadget Serial v2.4を選択してドライバの更新をします。
ドライバの更新ボタンををクリックし、さきほど解凍したフォルダ"C:\Galileo"を選択してドライバを更新。
更新が完了すると、Galileoが認識されます。
更新が完了後に、デバイスマネージャーのポートでGalileoの接続されているポートを確認しておきます。私の場合はCOM4でした。
ドライバインストール完了
そしてGalileo用のArduino IDEを起動しツールから先ほど確認したシリアルポートを選択しヘルプからファームウェアアップデートを選びアップグレードをします。(アップグレードは数分かかります。気長に待ちましょう。)
アップグレード中
そして下記の画面が表示されたらアップグレードは完了です。
アップグレード完了
LED点滅のスケッチを書き込みます。
Galileo用Arduino IDEを起動して、ファイルから スケッチの例 01.Basic Blinkを選びGalileoに書き込んで....
Blinkのスケッチ
13番ピンとGNDにLEDの足を突っ込んで....
動かしてみた。
これでテストは完了!
思ったより簡単にArduino互換機として動作しました。
シャッターを切る実験
Canon 40D用互換リモートレリーズを分解してピントとシャッターを切る実験をしてみます。
リモートレリーズ外観
リモートレリーズ内部構造
ここで、キヤノン40D
にリモートレリーズを接続し、緑と青を接触させるとピントが、赤と青を接触させるとシャッターがきれました。
実験が成功したのでブレッドボードで回路を作ってみます。
しかしリモートレリーズの先端はより線なのでブレッドボードに接続できません。そのため、より線の先端にジャンパーコードをハンダ付けし、ブレッドボードに接続しました。
先端をジャンパーコードに変更
改造したリモートレリーズを使用して回路を組みます。
回路に使用するのは、フォトカプラK10101Dと1kΩの抵抗、ジャンパーコードです。
回路図
回路を組んだ
インターバル撮影をしてみる
作った回路でインターバル撮影をするためのスケッチを作成します。
インターバル撮影のスケッチ
書き込んだスケッチ
Interval_Shutter.ino
#define PINTO_PIN (2)
#define SHUTTER_PIN (3)
void setup() {
pinMode(PINTO_PIN, OUTPUT);
digitalWrite(PINTO_PIN, LOW);
pinMode(SHUTTER_PIN, OUTPUT);
digitalWrite(SHUTTER_PIN, LOW);
}
void loop() {
// フォーカス
digitalWrite(PINTO_PIN, HIGH);
delay(1000);
// 撮影
digitalWrite(SHUTTER_PIN, HIGH);
delay(2000);
// オフ
digitalWrite(PINTO_PIN, LOW);
digitalWrite(SHUTTER_PIN, LOW);
delay(2000);
}
スケッチの説明
#define PINTO_PIN (2)
#define SHUTTER_PIN (3)
void setup() {
pinMode(PINTO_PIN, OUTPUT);
digitalWrite(PINTO_PIN, LOW);
pinMode(SHUTTER_PIN, OUTPUT);
digitalWrite(SHUTTER_PIN, LOW);
}
以上の部分で2番ピンをPINTO_PIN、3番ポートをSHUTTER_PINとして共に出力ピンとして使います。またそのピンの初期状態はLOWです。ということを指示しています。
void loop() {
// フォーカス
digitalWrite(PINTO_PIN, HIGH);
delay(1000);
// 撮影
digitalWrite(SHUTTER_PIN, HIGH);
delay(2000);
// オフ
digitalWrite(PINTO_PIN, LOW);
digitalWrite(SHUTTER_PIN, LOW);
delay(2000);
}
以上の部分で
loop(){
}
に囲まれている部分はずーっとループしています。
波括弧の中の説明
digitalWrite(PINTO_PIN, HIGH);
delay(1000);
で2番ピンにHIGHが出力されてフォーカスが合い、少し待値時間を挟んでから
digitalWrite(SHUTTER_PIN, HIGH);
delay(2000);
で3番ピンにHIGHが出力されてシャッターが切れて、少し待値時間を挟んでから
digitalWrite(PINTO_PIN, LOW);
digitalWrite(SHUTTER_PIN, LOW);
delay(2000);
2、3番ピンの出力をLOWにして、少し待機時間を挟んで一周目が終わる
というプログラムになっています。
動作している様子
インターバル撮影
とりあえずここまで。
発展させてつくってみる
前回まででシャッターを切ることはできたので、赤外線センサーの入力に対してシャッターが切れるように改造してみたいと思います。
これで監視カメラができる!?
まずは、赤外線距離センサーをGalileoにさせるようにするためにジャンパピンをはんだづけしショート防止のテープを張ります。
赤外線距離センサー
そして接続をします。
赤外線距離センサー接続後
<動作のようす>
<スケッチ>
surveillance camera.ino
#define PINTO_PIN (2)
#define SHUTTER_PIN (3)
int AValue = 0;
void setup() {
pinMode(PINTO_PIN, OUTPUT);
digitalWrite(PINTO_PIN, LOW);
pinMode(SHUTTER_PIN, OUTPUT);
digitalWrite(SHUTTER_PIN, LOW);
}
void loop() {
AValue = analogRead(0);
if(AValue > 150){
// フォーカス
digitalWrite(PINTO_PIN, HIGH);
delay(100);
// 撮影
digitalWrite(SHUTTER_PIN, HIGH);
delay(100);
// オフ
digitalWrite(PINTO_PIN, LOW);
digitalWrite(SHUTTER_PIN, LOW);
}else{
digitalWrite(PINTO_PIN, LOW);
digitalWrite(SHUTTER_PIN, LOW);
}
delay(30);
}
<スケッチの説明>
上記のシャッターを切るスケッチを改造しています。
AValue = analogRead(0);
の部分で赤外線距離センサーの入力をアナログ値として読み取って
if(AValue > 150)
の部分で赤外線距離センサーの入力、つまり物体までの距離が一定の値を超えたならば
// フォーカス
digitalWrite(PINTO_PIN, HIGH);
delay(100);
// 撮影
digitalWrite(SHUTTER_PIN, HIGH);
delay(100);
// オフ
digitalWrite(PINTO_PIN, LOW);
digitalWrite(SHUTTER_PIN, LOW);
でピントを合わせて、シャッターを切る
という動作になっています。
また、
else{
digitalWrite(PINTO_PIN, LOW);
digitalWrite(SHUTTER_PIN, LOW);
}
なので、センサーの入力が一定以下の場合、つまり物体を感知していないならば、そのまま待つという流れになっています。
まとめと感想
Intel Galileo開発ボードはArduino互換機として使いやすく、電子工作時に不満なく使うことができました。
今回の試作機を作って、Arduino互換ボードの楽しさや良さというのを感じました。
私が作った今回の試作機ではIntel Galileo開発ボードの5%くらいのごく一部の機能しか使えていません。今後さまざまな発展をすることができると思います。
電源の接続方法など、Arduinoに比べて気にしなければいけない点があるのはマイナスですが、それを上回る拡張性や、性能などを感じることができました。
ZIGSOWにログインするとコメントやこのアイテムを持っているユーザー全員に質問できます。