PHS経由でネットに接続できるEthernetアダプタのファームウェアをハック・後編 ―― 画像付きメールを利用した遠隔監視システムの製作事例

中本伸一

tag: 組み込み

技術解説 2007年11月27日

●前回のメール自動返信システムを改造する

 メールにJPEGデータを添付するためには,バイナリ・データであるJPEGデータをBASE64でエンコードしてテキスト・データに変換する必要があります.BASE64は前回(中編)のSMTP認証のときにも利用しました.BASE64というファイルのソース・コードを見れば,すぐに動作を理解できると思います.

 基本的なアルゴリズムは,3バイトのバイナリ・データを6ビットずつ四つに分割します.6ビットのデータは文字列に変換されます.こうして3バイトのバイナリ・データはBASE64変換にて4バイトの文字列に変換されて,メールの文章として送られます.

 前回作成したメールの自動返信システムを少しだけ改造して,カメラ画像を添付するようにしてみましょう.SMTP CAMというファイルのソース・コード(リスト1)を見れば,動作を理解できると思います.カメラから60バイトのJPEGデータを受け取ってデバイス・ドライバ内部で80文字のBASE64文字列を生成し,1行ずつSMTPサーバへ送出しています.この部分を改造すれば,JPEGデータに限らずあらゆるバイナリ・データをメールで送信できると思います.

 メールで送信するということは,すなわちメール・サーバに蓄積するということにほかなりません.IMAP(Internet
Message Access Protocol)プロトコルを利用すれば,メールをサーバに残したまま複数のユーザから自由にアクセスできる環境を構築できます.

 そのほかの部分も少しだけ改造しています.カメラのドライバの初期化やメールの件名に数字を記入することで,送られてくる画像の解像度を切り替えられるようにしています.詳しい解説はここでは割愛しますが,もし興味があればhttp://www.silentsystem.jp/download.htmからダウンロードしたソース・コードをチェックしてみてください.

● 実際に動作させてみる

 シリアル・ターミナルからSilentCにログインしてrunコマンドでプログラムを実行します.完全に動作するまでは,POPの14行目のデバッグ用表示を有効にするとよいでしょう.まずはPOPサーバにアクセスしてメールをきちんとチェックしているかを確認します.Mainの6行目を書き換えることで,どれくらいの頻度でメールをチェックするかを設定できます.この間隔は5分程度が適当ですが,デバッグ時には数秒程度にするとよいでしょう.

 携帯電話からメールを送ると,そのメールをPOPサーバから取り出して,メール・アドレスを抽出してメールを削除する,という動作がデバッグ表示で確認できると思います.次にSMTPCAM(リスト1)の20行目のデバッグ用表示を有効にしてください.抽出したメール・アドレスに返信する様子が表示されるはずです.

 メールを送信する際には多少の時間が必要です.VGA画面をJPEGで圧縮すると,15Kバイト程度の容量になります.そのデータを60バイトずつ区切ってBASE64で文字にエンコードし,テキストとして送信する処理を250回程度繰り返す必要があります.メールとしては相当長いメールを送信する処理なので,ネットワークのスピードによっては1分程度の時間がかかってしまう場合もあります.

 無事に送信が完了すると,画像ファイル付きのメールが返信されるはずです.携帯電話などできれいなVGA画像が確認できると思います.また,件名の先頭に数字の1を書くと160ピクセル×128ピクセルの画像を,数字の2を書くと320ピクセル×240ピクセルの画像を返信するので実験してみてください.

 なお,ここまでのステップについては,LAN環境を利用してデバッグを完了させておきます.

● フィールドに持ち出す

 LAN環境で十分に動作をチェックした後,実際にOSX-1と組み合わせてみます.LAN環境ではOS-1に192.168.1.10などの固定のIPアドレスを設定して利用していました.OSX-1と組み合わせる場合にはIPアドレスはダイヤルアップのたびに変わるので,OS-1側はDHCP(Dynamic
Host Configuration Protocol)でIPアドレスを取得しなければなりません.ポイントは,まずOSX-1でダイヤルアップを開始してインターネットへの接続を完了させます.その後,OS-1側を起動してIPアドレスを取得させることで,OS-1側に無事にグローバルなIPアドレスがセットされます.

 次に,携帯電話からこのシステムに対してメールを送信します.VGAサイズのJPEGデータを送信するにはやや時間がかかりますが,問題なく画像が戻ってきました(写真6).業務用に利用するためには,回線への接続/切断の処理やエラー処理,タイムアウト処理などを追加する必要がありますが,この簡単なシステムで携帯電話から遠隔監視が可能なことを検証できたと思います.W-SIMによるインターネットへのダイヤルアップ機能が利用できるので,電源さえあればこのシステムが利用可能です.

pic06_01.jpg
写真6 本システムで送り返された画像
温度計を監視している.

 今後の改造としては,件名や本文に記述した文字列でリレーを動作させたり,メールへの返信ではなく現場で何らかのイベントが発生した場合に(あるいは定期的に)メールを送信させたりすることなどが考えられます.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日