Webカメラの首振り 開発記録 (その4) [06年09月27日 16時15分]
#00000801


今回はファームウェア(マイコンのソフトウェア)作成です。また、動作確認のためのプログラムをパソコン側に作成しました。

■ファームウェアの仕様

(1)初期化処理
マイコンに電源が投入された直後に各軸の位置を中立の位置に戻します。また、LEDは消灯します。

(2)制御パルスを生成
2軸機構部を制御するための制御パルスを生成します。ラジコン用サーボの仕様に従って、20mS周期で1mS-2mS幅のパルスです。

(3)制御コマンド処理
パソコンから送信される制御コマンドを受信しそれに応じた処理を実行します。制御コマンドは本装置独自のもので、すべて次の形式です。

  コマンド文字<改行文字>

制御コマンド一覧
コマンド文字処理内容
Qこのコマンドを受信すると本装置は次の一行をパソコンへ送信します。

Homebrew<改行文字>

P# パン(首を左右に振る)。#は0から127までの値。
T# チルト(首を上下に振る)。#は0から127までの値。
H初期位置へ戻す。P63 T63 と同じ。
Sこのコマンドを受信すると本装置は次の一行をパソコンへ送信します。

装置番号(0-7) 現在のパン位置(0-127) 現在のチルト位置(0-127)<改行文字>

ELEDを点灯します。
DLEDを消灯します。


(4)可動範囲制限
ラジコン用サーボの仕様上各軸は機構や電気的に可動範囲が制限されていないために過度な角度指令をすると壊れます。そこで、ソフトウェアで可動範囲を±60度程度に制限しています。制御指令は0から127の範囲なので制御の分解能は120度/127≒1度ということになります。

■開発環境

使用したPICライター

使用したPICライター

ファームウェアの開発環境はPICマイコンの開発元Microchip社MPLAB IDE v7.40 (現時点で最新版)です。開発言語はこの開発環境に含まれているアセンブラ言語MPASMです。今回使用したPICはフラッシュマイコンなのでパソコンで作成したプログラムを最終的にマイコンに書き込まなければいけません。書き込みに用いたソフトウェアはPIC Writer for Windows Ver 2.37です。なお、フラッシュ書き込みに用いたハードウェア(PICライター)は自作です。さらにパソコン側の動作確認用のプログラムはMicrosoft Visual Studio.NET C# 2005で作成しました。

    開発したファームウェア(アセンブラ)

■動作確認

動作確認用のプログラム

  • 本装置を自動的に発見し装置番号を表示します。
  • 現在の首の位置を表示します。
  • ▼や▲で首をフルスイングします。
  • ■で初期位置に戻ります。
  • 縦横のスライダーを動かすと上下左右に首を振ります。
  • LEDボタンを押すとLED点灯/消灯します。
 

■結果

パルス周期を15mS以下にすると電源投入時つまりUSBプラグを差し込んだ時サーボが発振してしまうので微調整しましたが、後は何のトラブルも無くこのとおり首を振るようになりました。

  videocam 映像1 フルスイング 可動範囲一杯まで振る (1.4MB)

  videocam 映像2 クイックモーション スライダーでグリグリ (2.1MB)

前(カメラはまだ取り付けていない)

前(カメラはまだ取り付けていない)

後(電源とUSBコネクタ)

後(電源とUSBコネクタ)




さて、次回はいよいよHomebrewのソフトウェア部分を作成します。Ajaxで行くか?それともAppletの改造で済ませるか?アイデアはいろいろです。





(投稿者:管理人)