.NET Gadgeteer デモ ~ 簡易 監視カメラ(簡単ロジック版)

.NET Gadgeteer のデモ、今回は監視カメラもどきです。

なぜ “もどき” かというと、撮影した画像は保存せずに捨ててしまっているので。ほんとは SDカードに保存したり、時々クラウドなどに送ったり、がほしいところですよね。

このデモは先日の組み込みセッションで見ていただいたものです。画像が表示されたり、ライトが点いたり・・・というのはやっぱり参加者も盛り上がりますね。
まずは組み込み初心者向けのロジックが簡単なバージョンです。その代わりパフォーマンスが出ないのですが、コードは短くて分かりやすいものです。

接続はこんな風にします。

image

カラー LCD を接続したいので、今回のメインボードは Spider です。ディスプレイだけでソケットを4つ使ってしまうので、ソケットの多いメインボードを使います。
LCD の他には CCD カメラ(監視カメラなので当然です)と深度センサーを接続します。

監視カメラといえば普通は赤外線センサーなんでしょうが、勉強会では人がたくさんいると動作が分かりづらいので代わりに深度センサーを使いました。人 or 何かまでの距離を測ってくれます。

コードは以下の通りです。

  1. using System.Threading;
  2. using Microsoft.SPOT;
  3.  
  4. namespace DistCameraDemo01
  5. {
  6.     public partial class Program
  7.     {
  8.         private int _dist = 0;
  9.  
  10.         // This method is run when the mainboard is powered up or reset.   
  11.         void ProgramStarted()
  12.         {
  13.             camera.PictureCaptured += (sender, picture) => display_T35.SimpleGraphics.DisplayImage(picture, 5, 5);
  14.  
  15.             new Thread(GetDistance).Start();
  16.             new Thread(TakePicture).Start();
  17.  
  18.             // Use Debug.Print to show messages in Visual Studio's "Output" window during debugging.
  19.             Debug.Print("Program Started");
  20.         }
  21.  
  22.         private void GetDistance()
  23.         {
  24.             while (true)
  25.             {
  26.                 _dist = distance_US3.GetDistanceInCentimeters(3);
  27.                 Debug.Print(_dist.ToString());
  28.                 Thread.Sleep(1000);
  29.             }
  30.         }
  31.  
  32.         private void TakePicture()
  33.         {
  34.             while (true)
  35.             {
  36.                 if (_dist > 10 && _dist < 100 && camera.CameraReady)
  37.                 {
  38.                     _dist = 0;
  39.                     camera.TakePicture();
  40.                 }
  41.                 Thread.Sleep(500);
  42.             }
  43.         }
  44.     }
  45. }

 

定期的に距離を測定するスレッドと、障害物までの距離がある範囲に入っているか(上のコードでは 10cm~100cm)を確認しつつカメラ撮影をするスレッドの二つのスレッドを作るだけです。それぞれのスレッドの処理も簡単ですね。
もう一つ、カメラ撮影が完了したときにディスプレイに撮影した画像を描画するイベントハンドラーも必要です。

これだけです。

 

 

深度センサーを遮ると写真撮影してくれるのが分かります。(友情出演、バリーさんw)

動画を見ていただくと分かるように、このデモはコードが簡単な代わりに動作が “もっさり” しています。
初心者の方はまずはこれを見て組み込みに親しんでください、といった感じでしょうか。

次回は もう少し高速な監視カメラ もどきを紹介します。

広告
カテゴリー: .NET Micro Framework タグ: , パーマリンク

.NET Gadgeteer デモ ~ 簡易 監視カメラ(簡単ロジック版) への1件のフィードバック

  1. ピンバック: .NET Gadgeteer デモ ~ 簡易 監視カメラ(高速版) | 技術との戯れ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中