[組み込み] SparkFunの赤外線コントロールキットを買ってみた

Adafruitの315MHz微弱無線モジュールに続いて、今度はSparkFunの赤外線コントロールキットを買ってみた。

IR Control Kit Retail – RTL-11761 – SparkFun Electronics
https://www.sparkfun.com/products/11761

赤外線コントロールキットの内容

キットの内容は以下の通り。

  • 赤外リモコン 完成品 (1個)
  • 赤外線リモコン用 ボタン電池 CR2025 (1個)
  • 赤外線レシーバーモジュール TSOP38238 三端子 (2個)
  • 赤外線LED (2個)
  • 330オーム抵抗 (25本)

524c5cf4757b7fe9068b4568524b3e48757b7f476d8b4567

赤外線リモコンには9個のボタンがあり、それぞれ異なる4バイトのデータを送信する。レシーバーが38KHzの赤外線シグナルを受信してパルスに複合化し、それをマイコンで読み取ればどのボタンが押されたかを識別できる。赤外線LEDも付属しているので、自前で赤外線発信機を作ることもできそうだ。

公式チュートリアルをなぞってみる

とりあえずはSparkFunのサイトに載っているチュートリアルをなぞって、赤外線レシーバーを繋いだArduinoを赤外線リモコンからコントロールしてみる。

IR Control Kit Hookup Guide – Learn.SFE
https://learn.sparkfun.com/tutorials/ir-control-kit-hookup-guide/example-1-using-the-remote

Arduinoへの結線は、赤外線レシーバーとリモコンのA/B/Cボタンに割り当てるLEDのみ。チュートリアルではフルカラーLEDを1個だけ使っているが、僕はフルカラーLEDを持っていないので3個のLEDで代用。Arduino側の赤外線シグナルの処理はKen Shirriff氏が公開しているIRemoteライブラリのお世話になった。

shirriff/Arduino-IRremote · GitHub
https://github.com/shirriff/Arduino-IRremote

SparkFunのサンプルプログラムをコピーしてコンパイルし、Arduinoへ焼き込む。

IMG_2500IMG_2493

チュートリアルとは違ったLEDを使ったのでLEDの明るさの変化は若干違うものの、総じて期待通りに動作することを確認。Arduinoのシリアルモニターを開いておくと、ArduinoからPC側にシリアルで上がってくる状態メッセージを表示できる。リモコンから放射される赤外線はいい感じに拡散されるようで、距離にも因るだろうけどリモコンがレシーバーと直角方向を向いていても受信に問題は無し。LEDの代わりにリレーモジュールを接続すれば100V機器の制御も可能だろう。

SparkFunのサイトには、もう1つのチュートリアルとして、家電などの赤外線リモコンの信号を中継するサンプルも用意されている。テレビなどの家電製品のリモコンデータを解析するのは面白そうだし、C言語で簡単にArduinoをプログラムできるのも楽しい。できれば時間を作っていろいろ遊んでみたい。

[組み込み] Adafruitの315MHz微弱無線モジュールを買ってみた

無線による遠隔操作を伴う実験の必要があったので、Adafruitの315MHz無線モジュールを買ってみた。

1095-001096-00

送信機は自動車のドアリモコンのような体裁で、ボタンが4つあってボタン電池で駆動する。受信機は40x23mmの基板にリード線をコイル状にしたアンテナが付いていて、動作が異なる3種類の製品が売られている。それぞれの動作に関しては、以下YouTubeにアップされているデモ動画を参照のこと。

製品ウェブサイトによると到達距離は最長25フィート(7.62メートル)とのこと。アンテナを調整すればもっと飛びそうなものだが、微弱無線製品なのでやりすぎは禁物か。デモ動画同様にブレッドボードにLEDと共に取り付けて動作させてみたところ、近距離で操作したせいもあり反応はすこぶる良く、3種類の受信機はそれぞれ仕様通りの振る舞いをしてくれた。

photo3photo2

この無線リモコンで100V機器をオンオフをさせるため、LEDの代わりにリレーモジュールを接続してみた。このリレーモジュールはネットで1個$1.30ほどで売られていた中国製で、10A/250VACを駆動可能なリレーが搭載されている。入力は5Vなので受信機の出力をそのまま突っ込める。100V機器の代わりにとりあえずの導通チェック用にテスタを接続しておいたのだが、リモコンのボタンに合わせて小気味良いリレー動作音と共に導通状態の変化が確認できた。

photo5photo6

受信機とリレーを電池と一緒にケースに入れればお手軽に無線リモコンスイッチが完成する。ちょっとした実験には重宝しそうだ。

Simple RF T4 Receiver – 315MHz Toggle Type (ID: 1097)
https://www.adafruit.com/products/1097

Simple RF L4 Receiver – 315MHz Latching Selector Type (ID: 1098)
https://www.adafruit.com/products/1098

Simple RF M4 Receiver – 315MHz Momentary Type (ID: 1096)
https://www.adafruit.com/products/1096

Keyfob 4-Button RF Remote Control – 315MHz (ID: 1095)
https://www.adafruit.com/products/1095

[組み込み] Arduinoのプログラミング環境をセットアップする

ちょっとした機器の試作にArduinoが使えそうなので、Arduino UNO R3をネットで購入してみた。価格は1枚$13.71なり。中国のショップみたいだけど米国内で発送されたので1週間ほどで到着。以下、プログラミング環境のセットアップ手順の覚え書き。

Arduino プログラミング環境のセットアップ

1.Arduino IDE/Arduino 1.0.5/Windows Installerをダウンロード (52.6MB)

Arduino – Software
http://arduino.cc/en/Main/Software

2. インストール

[Installation Options]は全コンポーネントを選択する。

Arduino01

USBドライバのインストール確認が表示されたら[インストール]を押下する。

Arduino02

3. ArduinoとPCをUSBケーブルで接続

ドライバの検索でWindows Updateをスキップ。ドライバがインストールされると以下のメッセージが表示される。

Arduino03

4. サンプルプログラムBlinkを実行

Arduinoに通電され、焼かれているサンプルプログラムBlinkが実行される。13pinとGNDにLEDを接続すると点滅する。

IMG_2213a

初めてのプログラミング

  1. Arduino IDEを起動
  2. [File]-[Open…]メニューを選択
  3. examples1.BasicsBlinkBlink.inoを開く
  4. Uploadボタンを押す

正しくプログラムが焼けて実行されればOK。

[組み込み] 初心者の組み込み開発覚え書き

仕事で組み込み開発のオファーが来る頻度は多くない。時間が許せば個人的にマイコンを使った電子工作をやりたいけど正直時間が無い。そんな中、今回PICを搭載した流体系のコントローラーの開発に参加する機会があり、組み込み開発初心者であるが故にさまざまな問題に直面した。今思えば、ある程度経験があれば避けられた問題ばかり。自分の戒めの意味をこめて、今後同じ間違えを犯さないように覚え書き。

1) ハードを受け取ったら、まずハードの動作確認を

ハード担当者から受け取ったプロト基板は正しく動作するという前提でソフトのデバッグ作業を始めてしまったために、ハード的な実装や配線のミスにより周辺機器が動作しないことをソフトのせいだと思い込み、ソフトの確認に散々時間を費やした挙句にやっと「もしかしてハードの不備?」と気づく始末で、結果として途方もなく時間を浪費してしまった。ハードを受け取ったら、その見栄えや実装がどんなに美しくても、必ず基本動作をチェックしてからソフトのデバッグを開始するべき。簡単なテストプログラムを作成し、入力ポートに接続されているスイッチやセンサからステータスが取り込めるか、出力ポートに接続されているLEDやリレーが駆動できるか、シリアルポートにキャラクタが出力できるか、など、ハードの基本動作に限った確認を最初に行い、「ハードは問題ない」と確信を持ってからソフトのデバッグ作業に入ること。

2) ソフトのデバッグを始める前にマイコンの基本機能を確認する

今回マイコンとして40ピンのPICを使ったけど、発注元の都合で開発途中でチップの種類が変更された。これは僕の手落ち以外の何者でもないけど、プログラマは変更されたチップに合わせて設定変更したものの、コンパイラ側の設定は以前のチップのままだったため、アナログポートを読む組み込み関数を呼ぶと戻ってこないという問題に直面。最初は原因がわからず途方にくれましたが、一晩徹夜しても理由がわからずに設定を疑い始めたところでチップの種類が誤っていることに気づき、設定変更したところ動くようになった。実際のソフトのデバッグを始める前には、簡単なテストプログラムを作成してタイマーやA/D入力、割り込みを使っているならば割り込みの動作を事前に確認しておいたほうがよい。

3) 上級言語を使う場合にはコンパイラのクセを知ること

僕は組み込みでもC言語やBASICを使いたいと思うけど、心配なのはコンパイラのクセ。実績があるコンパイラならば、コンパイラ自体のバグは少ないだろうけど、上級言語をどのようにアセンブラに展開するかはコンパイラ次第。初期の段階で必ずリストを生成して目を通し、ステップ数が多いアセンブラに展開されている命令は「遅い処理」として自覚する必要あり。特に製品としてのフェイルセーフを考えると、トラブル検知に時間がかかったり、周辺機器を安全に停止させるのに時間がかかったのでは、その間に不慮の事態に陥る危険性が生ずるので危険。今回は流体系の処理で異常高圧を検知してシステムを緊急停止させる処理があったけど、停止までの時間が数百ミリ秒もかかっていることが判明し、上級言語で書いた数行の命令がアセンブラでかなりのステップ数に展開されていることに起因していることがテスト段階になって露呈した。

4) 作成したテストケースに漏れがないか、これでもかというぐらい確認する

基板には複数のボタンが載った操作パネルが接続されるけど、順番にボタンを押す組み合わせに漏れがあって、その漏れているところがバグった。全ての組み合わせがテストケースで網羅されているか、チャートなどを作成してこれでもかというぐらい確認することが大事。テストに時間を掛けてもケースが漏れていたのでは意味がない。

[ソフト] Paragon HFS+ – WindowsからMacのハードドライブを読み書きできるユーティリティドライバ

関係先から大容量のデータが外付けハードドライブで提供されたんだけど、調べてみるとMacでフォーマットされたもの。最初はMacに接続して作業用のネットワークドライブにコピーしていたんだけど、どうもMacとLANの接続状況がよくない。どういう理由かわからないが、頻繁にネットワークが切れるので、これでは必要なファイル全てがキチンとコピーされたかどうか信用できない。何度もやり直したために、無駄に時間ばかり使ってしまった。

もしMacでフォーマットされたドライブをWindowsで読むことができれば、今後はWindowsマシンを使って作業できる。というわけで、ネットで調べてみたところ、そういう製品がリリースされているのを発見。以下はちょっと古いけど、窓の杜の紹介記事 (10/11/08)。

窓の杜 – 【NEWS】WindowsからMacのHFS/HFS Plusへアクセス可能にするソフトのフリー版が公開
http://www.forest.impress.co.jp/docs/news/20101108_405537.html

この製品はドイツのParagon Software Groupが開発販売しているらしい。日本法人のウェブサイトにも説明がある。

Paragon HFS+ for Windows – 製品の概要
http://www.paragon-software.com/jp/home/hfs-windows/

サイトでは、商用目的の利用を不可としたフリー版 (Read-Only 読込のみ) がダウンロード可能となっている。

Paragon HFS+ for Windows 8 - 無償ダウンロード
http://www.paragon-software.com/jp/free/hfs-win8.html

試しにダウンロードして、実際にWindows (Windows 7 Ultimate) からMacのドライブにアクセスしてみた。ドライブをUSBケーブルに挿してから認識されるまでには若干時間が掛かるけど、認識された後は問題なくディレクトリのリストやファイルの読み出しが行えた。体感的な速度は上々だ。製品版は2,160円でダウンロード販売されている。今後必要になればお世話になるかもしれない。

[ソフト] Dynamic Draw – 使い勝手が良いフローチャート描画ソフト

組み込み開発の案件でフローチャートを描く必要あり。これまでMS-WordやCaccoなどを使ってフローチャートを描いたことがあるけど、どれも一長一短で満足いく使い勝手ではなかった。今回もまずはネットでツールを探してみたところ、Dynamic Drawという日本語フリーウェアが見つかった。期待しないでダウンロードして試したところが、えらく使い勝手が良かったので紹介しておく。

Dynamic Draw
http://www.dynamicdraw.com/jp/

これまで使ったソフトに感じた不満は「折れ線ラインが美しく描けない」ということ。処理と処理を直線で繋げずに折れ線で迂回しないといけない場合、ソフトごとに癖があってなかなか思ったように折れ線が描けなかった。しかしDynamic Drawだと、オブジェクトの近くにマウスを移動すると端子を示すガイドが表示され、端子を選んだ後は曲げたい箇所をマウスでクリックすることで手軽に綺麗な折れ線を描くことができる。

メニューやツールパレットは一般的なWindowsアプリとは若干見栄えが違うが、迅速な操作が出来るようにと工夫されている様子が伺える。自分にとって昨今フローチャートを描く機会はあまり多くないけど、この先もDynamic Drawのお世話になりそうだ。

CTemptestmdpf-Dynamic-Draw_00

[ソフト] Live HTTP Headers – HTTPヘッダを確認できるFirefoxプラグイン

ブラウザとサーバーの間のやり取りを確認するためにHTTPヘッダを見たいときがある。そんなときに役立つのがこのプラグイン。

インストール

Mozilla Japan の公式アドオン紹介サイトからインストールすると簡単。

Live HTTP Headers | Firefox アドオン | Mozilla Japan の公式アドオン紹介サイト
https://addons.mozilla.jp/firefox/details/3829

mozdev.org – livehttpheaders: index (公式サイト)
http://livehttpheaders.mozdev.org/

使い方

プラグインが有効な状態では、Firefoxの[ツール]メニューに[Live HTTP headers]という項目が表示される。このメニュー項目を選択すると、[Live HTTP headers]という別ウィンドウが開く。この状態で通常通りサイトにアクセスすると、サーバーから受信したHTTPヘッダがこのウィンドウ内に表示される。

livehttpheaders

公式サイトではCVS Repository経由でソースコードも公開されているので、必要ならばカスタマイズもできそう。

[ソフト] Caesium – ウェブサイト用画像を軽くするのに役立つ画像サイズ最適化ソフト

ウェブサイトを制作していて気になるのは、ページに埋め込まれている画像の点数。画像が多いと、どうしてもロード時間が気になってしまう。画像を減らせればよいのだけど、商品画像など減らせない場合もあるし、デザイン上そうもいかない場合もある。というわけで、画像ファイルのサイズを見直す必要性が出てくる。

見直す点は2つ。1つは画像に余計な情報が含まれていないかどうか。たとえばデジカメ画像にはExif情報が付加されているのが当たり前だけど、ウェブサイトの商品画像として使うならばExif情報は必要ないだろう。もしExifに画像のサムネール画像が格納されているならば、それを削除することで画像サイズはかなり縮小できるかもしれない。もう1つは画像サイズの圧縮率。フォトレタッチソフトでは、画像ファイル保存時に圧縮率を指定できるものが多いが、試してみると圧縮率を高めても見た目の画質はほとんど変わらなかったりする。見た目が変わらないなら圧縮率を高めに設定しておくことでファイルサイズは縮小できるはずだ。

そういう試行錯誤をするのに以下のフリーソフトが便利。このソフト、複数の画像ファイルを一括して処理できる機能を備えているのだけど、極端に多くのファイル(数千ファイルのオーダー)を処理しようとするとハングアップ状態になるので注意 (恐らく ListView へのアイテム追加処理が遅いのだと予想)。数百ファイルぐらいなら全然問題ないけど念のため。

Caesium – Image Compressor
http://caesium.sourceforge.net/

screen3

[ソフト] Copy Fixer – ウェブサイトのブックマークをEvernoteに記録するのに便利なForefox/Chrome用プラグイン

最近はブラウザのブックマーク機能を使わずに、気になったサイトはタイトルとURLをEvernoteにコピペするようになった。Evernoteの機能を使えば、ウェブサイトを分類してノートに整理できるし、検索することでブックマークが埋もれてしまうことも防げる。

ウェブサイトのタイトルとURLをコピペするためには、以下のブラウザのプラグインのお世話になっている。このプラグインを入れておくと、ブラウザの画面で何も選択(ハイライト)されていない状態でCtrl+Cを押下するだけで、閲覧中のウェブサイトのタイトルとURLをクリップボードにコピーできる。そしてEvernoteでCtrl+Vすれば、ウェブサイトのタイトルとURLを簡単にノートにペーストできる。まさにブックマークをEvernoteに記録するのに打って付けのプラグイン。

Copy Fixer (Chrome版)
https://chrome.google.com/webstore/detail/copy-fixer/gkpoieconkiifjafemnnohlegmfpipaa

Copy Fixer (Firefox版)
https://addons.mozilla.org/ja/firefox/addon/copy-fixer/?src=api

[ソフト] Opanda IExif – 画像のExif情報を見る

画像のExif情報を見るにはどうしたらいいか。

ファイルの[プロパティ]で見る

特別なソフトをインストールしなくてもWindowsの標準機能で見れる。Windowsエクスプローラでファイルを右クリックして[プロパティ]を選択。そして、[プロパティ]ダイアログボックスが表示されたら[詳細]タブを選ぶと、画像の基本情報に交じってExif情報も表示されている。

properties

Opanda IExif (フリーソフト) を使う

もっと便利に使えるフリーウェアがないかと探したらOpanda IExifというフリーソフトがヒット。

Opanda IExif (英語版)
http://www.opanda.com/en/iexif/index.html

Exif情報を編集する有償ソフト「Opanda PowerExif Editor」の体験版も同梱されているが、インストール時にスキップするように指定可能。インストールしたら実行して画像ファイルをドラッグすれば、以下のようにExif情報が一覧表示される。「Opanda PowerExif Editor」がインストールされていると、連携してExif情報の編集ができるようになるらしい。僕は今の所はExif情報が見れるだけでよいので編集ソフトは必要なし。

opanda_iexif