☆ボードオレンジ:「活用事例3:wiiヌンチャクを使ってチョロQを運転しよう!」

Languages

English version is here : StarBoard Orange : "Application example No.3 : Drive a CHORO Q with wii nunchuck!"

概要

☆ボードオレンジ:「活用事例2:赤外線リモコンで楽々操作しよう!」では赤外線受信に対応し、リモコンを使ってmbedを制御する事例を御紹介しました。

赤外線リモコンでmbedを制御するのは十分に楽しいものでしたが、受信ができるとなると送信をしたくなります。

私たちの家庭には数多くの赤外線で操作可能な機器が存在します。

テレビ、コンポ、エアコン、照明など様々な機器をmbedから制御できれば、これほど楽しいものはありません。

そこで、活用事例3では赤外線送信機能を使った楽しい活用事例としてチョロQを運転するデモを御紹介します。

後述するサンプルプログラムには他の用途に転用可能なクラスライブラリも含まれますので、是非ご活用下さい。

用意するもの

物品

  1. ☆ボード
  2. mbed NXP LPC1768
  3. 赤外線LED (OSI5FU5111C-40あるいは相当品)
  4. トランジスタ (2SC2883あるいは相当品)
  5. wiiChuckアダプタ(SparkFun製 - スイッチサイエンスさんで購入可能)

環境

  1. wiiヌンチャク
  2. CHORO Q HYBRID

プログラム

以下のプログラムをインポートして下さい。

StarBoardOrangeExample3

準備

赤外線送信回路

赤外線LEDのデータシートを確認します。

今回はOSI5FU5111C-40を使用しています。指向性が高いので今回は複数個を並べて使用することにしました。

順方向電流の絶対最大定格は100[mA](DC時)、1000[mA](パルス幅100us以下、デューティー比1/100以下時)です。

時間的に短いパルスを発生する場合にはDC時よりも10倍の絶対最大定格がとれるようになっています。

赤外線通信などで遠くまで送信したい場合、この特性を使うこともできます。

駆動用トランジスタのデータシートも確認しておきましょう。

2SC2883はコレクタ電流の絶対最大定格が1.5[A]と比較的多くとれます。

上記を元に今回は以下の回路を構成しました。

PWMOUTはp21を使用します。

今回はLEDの実装面積も考慮し、☆ボードオレンジにユニバーサル基板を合体させて構成してみました。

トランジスタは手元にあった表面実装タイプのものを使いました。

実装は汚いです。まさにQuick and dirtyです。今回は気にしません。

上記のようにユニバーサル基板を使った実験にも最適なのが☆ボードオレンジです。

wiiヌンチャク回路

wiiヌンチャクはSparkFunが提供しているwiiChunkを使ってmbedへ接続します。

日本ではスイッチサイエンスさんから購入することができます。

基板は以下のように接続します。

mbed 変換基板
GND -
+3.3V +
I2C SDA (p9) d
I2C SCL (p10) c

wiiヌンチャクを接続する場合、上下を間違えないように接続して下さい。

全体像

回路を準備すると以下のような感じになります。

ちょっとぐちゃぐちゃですけど、チョロQを走らせるまで我慢しましょう!

動作させてみる

wiiヌンチャクを接続して制御してみましょう。

プログラムをコンパイルしてmbedにコピーします。

操作方法

操作は簡単です。

ジョイスティックを上下左右に操作すると操作した方向にチョロQが走り出します。

Zボタンを押すとダッシュします。

動画

動作の様子を以下でご覧いただけます。

赤外線送信クラスの使い方

使い方の概要

赤外線送信クラスの使い方は簡単です。

コンストラクタに対して、赤外線LEDを接続したピン名を与えます。例えば以下のような感じです。

#include "TransmitterIR.h"

TransmitterIR ir_tx(p21);

後はgetState()を呼んでTransmitterIR::Idle状態になっていればデータを書き込みます。

RemoteIR::Format format = RemoteIR::SONY;
uint8_t buf[] = { 0x80, 0x00 };
int bitcount = 12;
if (ir_tx.getState() == TransmitterIR::Idle) {
    bitcount = ir_tx.setData(format, buf, bitcount);
}

formatには送信時に用いるプロトコルを指定します。setDataの最後の引数は与えたバッファに格納されているデータビット数です。上記のように2つのAPI(getState, setData)のみで赤外線送信処理を行うことができます。

赤外線送受信について更に詳しく知りたい場合には実用ライブラリシリーズ:赤外線送受信ライブラリも参考にして下さい。

まとめ

  • 赤外線LEDを1つ取り付けるだけで沢山の赤外線インターフェースを持つ装置を制御できます。
  • 離れた場所から沢山の機器を操作できるので、ホームオートメーションを楽しむことができるようになりました。
  • アプリケーションに用いた赤外線送信処理は再利用可能なクラスとして設計実装しました。

関連情報

基本情報

活用事例

関連文書

更新履歴

バージョン 日付 更新内容
1.0.0 2010/08/23 初版。
1.0.1 2010/08/27 IR回路図に赤外線LEDが入っていなかったバグを修正。
1.0.2
2010/09/10
活用事例を更新。
- - -
- - -
- - -
- - -
- - -
- - -


1 comment

mbedのストレージ内に「SETUP.CFG」という名のテキストファイルを用意し,その中に「Ch=A」のように書いておくと設定できます

You need to log in to post a comment