Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: HttpServer_snapshot_mbed-os
You are viewing an older revision! See the latest version
Homepage
GR-PEACHとAudio/Camera Shieldを使ったWeb Cameraサンプルプログラムです。WebブラウザからGR-PEACHにアクセスするとCamera入力画像が表示されます。
HTTPServer、および、RPCについて、こちらを参考にさせていただきました。/users/yueee_yt/code/HttpServerSample/
構成¶
GR-PEACH、Audio/Camera Shield、Camera、PC、イーサーネットケーブル。
サンプルプログラムではCameraにMT9V111を使用しています。MT9V111以外のCameraを使用する際は使用するCameraにあわせて設定を変更して下さい。
main.cpp (camera input config)
/* MT9V111 camera input config */
ext_in_config.inp_format = DisplayBase::VIDEO_EXTIN_FORMAT_BT601; /* BT601 8bit YCbCr format */
ext_in_config.inp_pxd_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing data */
ext_in_config.inp_vs_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing Vsync signals */
ext_in_config.inp_hs_edge = DisplayBase::EDGE_RISING; /* Clock edge select for capturing Hsync signals */
ext_in_config.inp_endian_on = DisplayBase::OFF; /* External input bit endian change on/off */
ext_in_config.inp_swap_on = DisplayBase::OFF; /* External input B/R signal swap on/off */
ext_in_config.inp_vs_inv = DisplayBase::SIG_POL_NOT_INVERTED; /* External input DV_VSYNC inversion control */
ext_in_config.inp_hs_inv = DisplayBase::SIG_POL_INVERTED; /* External input DV_HSYNC inversion control */
ext_in_config.inp_f525_625 = DisplayBase::EXTIN_LINE_525; /* Number of lines for BT.656 external input */
ext_in_config.inp_h_pos = DisplayBase::EXTIN_H_POS_CRYCBY; /* Y/Cb/Y/Cr data string start timing to Hsync reference */
ext_in_config.cap_vs_pos = 6; /* Capture start position from Vsync */
ext_in_config.cap_hs_pos = 150; /* Capture start position form Hsync */
ext_in_config.cap_width = 640; /* Capture width */
ext_in_config.cap_height = 468u; /* Capture height Max 468[line]
Due to CMOS(MT9V111) output signal timing and VDC5 specification */
サンプルプログラムではDHCP ServerからIPアドレスを取得します。固定IPアドレスを使用する場合は以下を変更してください。
main.cpp (IP address config)
printf("EthernetInterface Setting up...\r\n");
// if (eth.init() != 0) { //for DHCP Server
if (eth.init("192.168.0.2","255.255.255.0","192.168.0.3") != 0) { //for Static IP Address (IPAddress, NetMasks, Gateway)
printf("EthernetInterface Initialize Error \r\n");
return -1;
}
main.cppの最後にの下記のように関数を追加し、用意したMACアドレスを設定してください。
Specify MAC address
// set mac address
void mbed_mac_address(char *mac) {
mac[0] = 0x00;
mac[1] = 0x02;
mac[2] = 0xF7;
mac[3] = 0xF0;
mac[4] = 0x00;
mac[5] = 0x00;
}
操作方法¶
- GR-PEACHに電源を入れ、Terminalソフトを立ち上げます。
- イーサーネットケーブルを接続し、GR-PEACHをリセットします。
- Terminal上にIPアドレスが出力されます。
以降は取得(設定)したIPアドレスが"192.168.0.2"として説明します。
- PCのWebブラウザで”http://192.168.0.2/camera.htm”を開くと、カメラ画像が表示されます。
"Wait time"のスライダーバーで更新タイミングを変更できます。初期値は500msです。 - PCのWebブラウザで”http://192.168.0.2/led.htm”を開くと、LED操作画面が表示されます。
リセットスタート時のTerminal表示
| ********* PROGRAM START *********** EthernetInterface Setting up... IP Address is 192.168.0.2 NetMask is 255.255.255.0 Gateway Address is 192.168.0.3 Ethernet Setup OK |
”camera.htm”画面
”led.htm”画面

処理の流れ¶
- リセットスタート時
- "file_table.h"に書かれたWeb page用データをFileSystemに登録します。 "file_table.h"には".htm"ファイルと".js"ファイルがバイナリデータとして記載されています。
- GR-PEACH_videoライブラリを用いてCameraからの画像取得を開始します。
- "WebブラウザからLED操作とTerminal出力ができるように、mbed-rpcライブラリへの登録を行います。
- EthernetInterfaceを起動し、DHCP ServerからIPアドレスを取得します。(固定アドレスを設定することもできます)
以降は取得(設定)したIPアドレスが"192.168.0.2"として説明します。 - HTTPServerにSnapshotHandler(画像用)、FSHandler(Webページ表示用)、RPCHandler(操作用)を登録をします。
- camera.htmアクセス時
- Webブラウザで"http://192.168.0.2/camera.htm"を開くと、JavaScript "http://192.168.0.2/camera.js"内の関数が実行され、定期的にSnapshotHandlerへの画像取得要求を送信します。
- GR-PEACHはSnapshotHandlerへの画像取得要求を受けると、GR-PEACH_videoライブラリから取得したCamera画像をGraphicsFrameworkライブラリのJPEG ConverterにてJPEGに変換し、Webブラウザに応答します。
GR-PEACHが送信する画像サイズはQVGA(320 x 240)です。Webブラウザ上で最大VGA(640 x 480)まで拡大されます。
- Webブラウザで"http://192.168.0.2/camera.htm"を開くと、JavaScript "http://192.168.0.2/camera.js"内の関数が実行され、定期的にSnapshotHandlerへの画像取得要求を送信します。
- led.htmアクセス時
- Webブラウザで"http://192.168.0.2/led.htm"を開き、ボタンを操作すると、JavaScript "http://192.168.0.2/mbedrpc.js"内の関数が実行され、RPCHandlerへ"~http://192.168.0.2/rpc/led1/write 1"などの操作要求を送信します。
- GR-PEACHはRPCHandlerへの画像取得要求を受けると、mbed-rpcライブラリを通してLEDなどの操作を行います。
- Webブラウザで"http://192.168.0.2/led.htm"を開き、ボタンを操作すると、JavaScript "http://192.168.0.2/mbedrpc.js"内の関数が実行され、RPCHandlerへ"~http://192.168.0.2/rpc/led1/write 1"などの操作要求を送信します。
"file_table.h"内のファイル
RPC機能("led.htm"、"mbedrpc.js")については、こちらで紹介されているものを参考に一部変更しています。
/users/yueee_yt/code/HttpServerSample/