TOPPERS 活用アイデア・アプリケーション開発
コンテスト

部門

： 活用アイデア部門

アプリケーション開発部門

作品のタイトル：ネットワークカメラ サーバ＆クライアント システム

作成者

：松浦光洋

対象者

：カメラ画像とネットワークに興味がある人

使用する開発成果物：TOPPERS/ASP カーネル

目的・狙い
外出先から自宅の室内等，離れた場所の様子をネットワーク経由で確認・撮影する装置を開発した．撮影画像を SD カードに保存して PC で動画として高速再生する事も出来る．FPGA 等の特別なハードウェアを使わず，個人で安価に容易に入手できる部品と無償のオープンソース・ソフトウェアを組み合わせてどこまで出来るかの挑戦として製作した．

アイデア/アプリケーションの概要
サーバ機は CMOS カメラをマイコンの GPIO に直結して DMA で取り込み，libjpeg(オープンソースの JPEG ライブラリ)を使って圧縮，それを uIP(オープンソースの TCP/IP プロトコルスタック)を使ってイーサネットに送信する．また JPEGは FatFs（オープンソースのファイルシステム）を使って SD カードに動画として保存する．クライアント機は uIP で JPEG ファイルを受信し，それを libjpeg でデコードして 2.6 インチ QVGA サイズのカラーLCD 画面に表示する．サーバー機のカメラは模型用サーボモータ 2 個をマイコンの PWM で制御して向きを変えることが出来る．
使用したマイコンは CQ 出版インターフェース誌 2012 年 6 月号付録の FM3，
コアは ARM Cortex-M3 である．

サーバ機

クライアント機

１．ハードウェア構成(ア) マイコン基板

CQ 出版インターフェース誌 2012 年 6 月号付属基板① マイコン

Spnsion(Cypress)FM3/MB9BF618T② ROM

１M バイト

③ RAM

128K バイト④ 動作クロック

144MHz⑤ LAN コントローラ

マイコン内蔵(イ) 拡張ベースボード

自作(ウ) 外部 RAM

２M バイト SRAM(エ) イーサネット PHY

http://www.ejigu.com/ca28/62/p-r28-s/(オ) LCD モジュール

http://www.aitendo.com/product/3866(カ) SD カードスロット

http://akizukidenshi.com/catalog/g/gC-01865/(キ) タクトスイッチ×4 個

http://akizukidenshi.com/catalog/g/gP-03647/(ク) CMOS カメラ

http://www.aitendo.com/product/1784(ケ) サーボモータ

http://akizukidenshi.com/catalog/g/gM-05035/（ク）（ケ）はサーバ機のみ

２．ソフトウェア構成(ア) 1msec 周期ハンドラ（FatFs，キー押下検出）(イ) 1 秒タイマ割り込みハンドラ（時計）(ウ) LAN 受信割り込みハンドラ（OS 管理外）
(エ) 外部割込みハンドラ（OS 管理外）
(オ) セマフォ(カ) データキュー(キ) uIP タスク（待ち無し最低優先度でループ）(ク) NTP タスク（日時合わせ）(ケ) カレンダタスク（生成ファイルのタイムスタンプ用）(コ) 制御タスク(サ) カメラタスク(シ) サーボタスク（シ）（ス）はサーバ機のみ３．使用したオープンソースソフトウェア(ア) TOPPERS/ASP STBEE（Strawberry Linux）簡易パッケージ
https://www.toppers.jp/download.cgi/asp_stbee_gcc-20141201.tar.gz(イ) FatFs

http://elm-chan.org/fsw/ff/00index_j.html(ウ) uIP

http://sourceforge.net/projects/uip-stack/(エ) libjpeg

http://www.ijg.org/(オ) TLSF

http://www.gii.upv.es/tlsf/

４．使用した開発ツール(ア) ビルドツール

GCC(イ) 統合開発環境

EclipseCodeSourcery（arm-2010q1-188）(ウ) デバッグツール OpenOCD(エ) JTAG デバッガ

秋月電子通商の AE-FT2232 を使用した自作

http://akizukidenshi.com/catalog/g/gM-02990/(オ) 開発環境構築手順は下記にて公開中
http://homepage3.nifty.com/fpga/files/board/WX-MP3PLCD-F-001/

５．動作説明(ア) サーバ機① NTP サーバから時刻取得（以後は周期的に再取得）② HTTP サーバ起動③ カメラ初期化④ カメラ画像を AVI 動画ファイル（motion Jpeg）として保存しながらクライアント機及び PC 等ブラウザからの HTTP リクエストを待ち受ける⑤ 動画ファイルは 10 分単位で分割⑥ HTTP リクエストを受け付けたら web ページと静止画像を送信する⑦ 静止画像の作成手順
1.

カメラから画像を QVGA サイズ 16 ビット RGB565 形式で取得

2.

データを LCD に DMA 転送して画面に表示

3.

LCD から RAM に転送して JPEG 形式に圧縮

4.

リクエスト元に送信⑧ SD カードがセットされていたら JPEG データを AVI コンテナ形式で保存⑨ 4 個のタクトスイッチの何れかが押されたらマイコンの PWM 出力により 2個のサーボの角度を変えてカメラの向きを変える⑩ クライアント機から HTTP にてサーボ操作のリクエストを受け付けたら同様にカメラの向きを変える(イ) クライアント機① NTP サーバから時刻取得（以後は周期的に再取得）② 周期的にサーバ機に JPEG ファイルを要求③ 受信したら RGB565 に伸張して LCD 画面に表示④ タッチパネルがタッチされたら SD カードに JPEG ファイルとして保存⑤ 4 個のタクトスイッチの何れかが押されたらサーバ機に対して HTTP 経由でカメラの向きを動かすコマンドを送信する⑥ タッチパネルが押されたら JPEG 静止画像を一枚 SD カードに保存する

６．製作結果
TOPPERS 等の様々なオープンソースを使う事で高度な処理を簡単に実装する事が出来た．
しかしこのクラスのマイコンにこれだけの処理は荷が重く，画像のフレームレートは 1枚／１秒程度であった．とりあえず屋内の監視カメラとしては使えるレベルである．
７．公開資料(ア) http://homepage3.nifty.com/fpga/files/toppers_ac2015/① プログラムソースファイル② 回路図③ 動画(イ) TOPPERS/ASP 用 FM3 ターゲット依存部① http://dev.toppers.jp/trac_user/contrib/wiki② svn co http://dev.toppers.jp/svn_user/contrib/asp-fm3(ウ) 開発環境の構築手順① http://homepage3.nifty.com/fpga/files/board/WX-MP3PLCD-F-001/
以上