Skip to the content
2 layers65 × 25 mmWcc, the printed circuit board in 3D

usb web camera converter with PIC32MZ

Size
65 × 25 mm
Copper layers
2
Thickness
1.6 mm
Parts
63
Nets
49
Pads
276
Tracks, vias
855, 46
Pours
9
Routed
Yes
KiCad
KiCad 5 (file 20171130)
Created
6 Feb 2022
Updated
6 Dec 2022

Overview

Wcc is an open-source printed circuit board by meerstern, from the meerstern/Usb_Camera_Converter repository on GitHub. It is a 2-layer board of 65 × 25 mm with 63 parts on 49 nets, routed with 855 tracks and 46 vias.

It is built around the PL2303SA LF, RV-8803-C7 and BAV170, with the CR1220-2 among its other parts. Its parts include 23 capacitors, 13 resistors, 7 connectors, 5 ICs and 4 diodes. It belongs with the PIC boards of this library.

Main components

4

README

README.md

USBカメラ変換基板

Usb_Camera_Converter

This board with PIC32MZ is a converter that captures from a UVC(Usb Video Class) standard Usb camera and converts it to a BMP or JPG image.

  • 10秒間隔インターバル記録した映像をコマ送り編集で動画化した例

概要

  • 本変換基板はUVC規格のUsbカメラからキャプチャしてBMPもしくはJPG画像に変換する基板です
  • シリアルUARTコマンドもしくは基板上のボタンを押すことで画像ファイルとして記録されます
  • インターバル設定をすることで設定した秒数間隔(1秒~最長6か月程度)で自動的にインターバル記録できます
  • 変換した画像はTFカード(microSD互換)もしくはXmodem、Ymodemでマイコン等に転送できます
  • 時刻管理(RTC)を内蔵しており、自動的に日付のフォルダを生成し、日付日時のファイル名で保存されます
  • 保存可能なファイル形式(BMP/JPG)および解像度は接続するUsbカメラによって異なります
  • PCを介したシリアルコンソール上でインターバル設定やファイル形式、解像度等の設定が可能です
  • 高フレームレートを要求しない、簡易的な記録や監視に適しています

仕様

  • 電源電圧5V、電流800mA(microUSBもしくはピンヘッダから供給)以上の電源
  • 時刻管理用電池CR1220搭載
  • PIC32MZ USB HighSpeed(480MHz) Host機能によるUVCホスト(USBタイプA)
  • PCを介したシリアルコンソール上から変更できるパラメータ:
    記録インターバル、ファイル形式、画像解像度、日付時刻、
    代替インタフェース設定、データフレームインターバル
  • microTFカード対応(microSD、microSDHC、microSDXC互換)、128GBまで動作確認済
  • 3色状態表示LED(青:電源、緑:ストリーミング中、赤:ストリーミングエラー)
  • シリアルコンソールボーレート9600bps、データサイズ8bit、パリティ無、ストップ1bitが既定値です
  • シリアルコンソール用のUsbドライバ(PL2303GL)はWindows版、Mac版して使用してください
  • Linux版のシリアルコンソール用のUsbドライバはKernel 2.4.31以降、標準で組み込まれています
  • microTFカードを介したファームウェアアップデート対応
  • 各設定パラメータ情報は時刻と一緒に保持されます
  • 基板サイズ25mm x65mm、穴M3x4(間隔19mm x43mm)

シリアルコンソール

  • インタラクティブなシリアルコンソールから各種設定を変更することができます
  • ボーレート9600bps、データサイズ8bit、パリティ無、ストップ1bitが既定値です
  • 日時コマンド一覧は下記の通りです
コマンド名コマンド引数例
時刻設定tim=hhmmsstim=220212(Enterキー)
時刻確認tim?なしtim?(Enterキー)
日時設定day=YYMMDDday=220305(Enterキー)
日時確認day?なしday?(Enterキー)
  • カメラ機能コマンド一覧は下記の通りです
コマンド名コマンド引数例
条件取得dspsなしdsps(Enterキー)
条件設定idx=インデックス番号idx=12(Enterキー)
 条件確認idx?なしidx?(Enterキー)
 画像取得(TFカード)trg!なしtrg!(Enterキー)
 画像取得(xmodem)xmd!なしxmd!(Enterキー)
 画像取得(ymodem)ymd!なしymd!(Enterキー)
インターバル設定int=秒数int=5(Enterキー)
インターバル確認int?なしint?(Enterキー)
代替インタフェース設定alt=インデックス番号alt=2(Enterキー)
代替インタフェース確認alt?なしalt?(Enterキー)
データフレームインターバル設定dfi=インデックス番号dfi=2(Enterキー)
データフレームインターバル確認dfi?なしdfi?(Enterキー)
Bmp形式白黒変換モード設定mon=0 or 1mon=1(Enterキー)
Bmp形式白黒変換モード確認mon?なしmon?(Enterキー)
  • インターバル記録しない場合はint=-1を設定します
  • 代替インタフェース設定を自動にする場合はalt=0を設定します(既定値)
  • 代替インタフェースは1回のデータ転送のサイズを決定します
  • 1回のデータ転送サイズが小さすぎる場合は画像フレームのタイミングに間に合わない可能性があります
  • 1回のデータ転送サイズが大きすぎる場合は処理しきれない場合があります
  • カメラの機種によって設定可能な代替インタフェース数やサイズが異なります
  • Bmp形式白黒変換モードはファームバージョンv1.1.0以降で対応しています
  • Bmp形式白黒変換モードはデフォルトでは無効化されています
  • Bmp形式白黒変換モードは電源再投入やリセット等で設定が無効化されます

  • データフレームインターバルを自動にする場合はdfi=0を設定します(既定値)

  • データフレームインターバルはデータ転送の間隔、カメラのフレームレートを決定します

  • データフレームインターバルが短かすぎる場合、処理が間に合わない可能性があります

  • データフレームインターバルが長すぎる場合、トリガを掛けてから保存されるまで時間を要する場合があります

  • カメラの機種によって対応するデータフレームインターバルの数や大きさが異なります

  • システム機能のコマンド一覧は下記の通りです

コマンド名コマンド引数例
ボーレート設定brt=ボーレートbrt=9600(Enterキー)
ボーレート確認brt?なしbrt?(Enterキー)
ソフトリセットrst!なしrst!(Enterキー)
一時停止pus!なしpus?(Enterキー)
再開rsm!なしrsm?(Enterキー)
ファームアップデートfup!なしfup?(Enterキー)
ヘルプ確認helpなしhelp(Enterキー)

使い方

a.単体で使用する場合

  1. 本変換基板のmicroUSBをPC等に接続し、Teraterm等からシリアルコンソールにアクセスします
  2. Usbカメラを変換基板のUsbコネクタに接続します
  3. 初期設定状態で動作開始します(初期設定ではエラーメッセージが出る場合があります)
  4. dspsコマンドで設定可能な条件を表示します
  5. 設定したいファイル形式、解像度の条件をインデックス番号でidxコマンドを用いて設定します
  6. rst!コマンドでソフトリセットさせて設定した内容を反映させます
  7. microTFカードを挿入します
  8. ストリーミング中を示す緑ランプが点灯したことを確認します 点灯しない場合は5.で別の番号を設定します
  9. trg!コマンドもしくはボタンを押すと画像が保存されます

b.連携して使用する場合

  1. 事前にPC等からa.の設定したいファイル形式、解像度の条件を設定します
  2. 本変換基板の外部電源に5Vを供給し、TX、RXをマイコン等に接続します
  3. Usbカメラを変換基板のUsbコネクタに接続します
  4. microTFカードを挿入します
  5. ストリーミング中を示す緑ランプが点灯したことを確認します
  6. trg!コマンドもしくはtrgピンをGNDに接続することで画像が保存されます
  7. xmd!コマンドを送信後、xmodem(チェックサム有効)で受信できます
  8. ymd!コマンドを送信後、ymodemで受信できます
  9. ユーザ側でコードを実装することでSPI等を介して外部機器と通信できます

c.日付/時刻設定する場合

  1. 本変換基板のmicroUSBをPC等に接続し、Teraterm等からシリアルコンソールにアクセスします
  2. day=コマンドで日付を設定します 例 22年3月14日の場合はday=220314(Enter)と入力します
  3. tim=コマンドで時刻を設定します 例 午後1時23分34秒の場合はtim=132334(Enter)と入力します
  4. day?コマンド、tim?コマンドで設定された日付、日時を確認します  
  • 日付、時刻が1桁の場合は0で桁を埋めてください

d.ファームウェアアップデートする場合

  1. アップデートしたいファームウェアをTFカードのディレクトリ直下にいれます
  2. ファイル名をimage.binに変更します
  3. 変換基板にTFカードを挿入し、電源を供給します
  4. Teraterm等からシリアルコンソールからfup!コマンドを実行します
  5. 自動的に再起動し、ファームウェアアップデートが開始されます
  6. Update Successを確認するかシリアルコンソールに表示されるバージョンを確認してください

注意点

  • マイコン上で処理する都合上、完全なUVC規格でありません
  • カメラによって動作しないor不安定な場合があります
  • 動作確認済のUsbカメラはTestedCamera.csvをご確認ください
  • ハイビジョン対応等の高機能カメラよりも200万画素程度の単機能カメラの方が安定して動く傾向があります
  • 動画を切り出して画像に変換するため、最高でも1FPSです 高フレームレートを要求する用途には適しません
  • ボタンやコマンドから取得命令後、ストリーミングデータから切り出し処理の都合上、タイムラグがあります
  • BMP形式の場合、メモリの制約によって最大解像度は320x240です
  • JPG形式の場合、解像度によって動作、非動作の場合があります
  • 動画ファイル形式の記録はできません
  • 電源不安定や電流が足りない場合、動作確認済のカメラであっても正常に動作しない場合があります
  • 電流が足りない場合、microUSBとJ5 5Vピンの両方から5V電源を供給することで動作する場合があります
  • フォーマット、解像度のインデックス番号はカメラ機種によって番号や設定可能な条件数が異なります
  • カメラによってはBMPをサポートしていないカメラがあります
  • モードによって動作しない場合、下記の設定を変更することで動作する場合があります
    -代替インタフェース設定(altコマンド)
    -データフレームインターバル設定(dfiコマンド)
  • 設定を変更することで必ず動作できる保証はありません
  • Xmodem/Ymodemによる転送は9600bpsの場合、1枚の画像で数10分前後転送に要します
  • 各設定はソフトリセット後もしくは電源再投入後に反映されます
  • 時刻管理電池の消耗や交換した場合、各設定パラメータ、時刻はリセットされます
  • ファームウェアアップデート時はボーレート9600bpsで固定です

ファームウェアビルド方法

  • MPLAB X v5.45/XC32 v2.50/Harmoney3以降を用いてビルドしてください
  • ブートローダ用のAppファームをビルドする際はリンカファイルにp32MZ2048EFG100withBOOTLD.ldを選択します
  • 生成されたAppファームの*.binファイルをimage.binに変更してSDカードから更新コマンドを用いて更新してください
  • デバッグ等でブートローダ未使用でファームをビルドする際はリンカファイルにp32MZ2048EFG100.ldを選択します
  • 再度、ブートローダを書き込む際にはUsbCamBoot_v.XX_XXXXXX.hexをIPE等から書き込んでください

応用編

  • LCDファームに書き換えることでSPI対応LCD(160x128、ST7735S)でモニタすることが可能です
  • LCDモニタはBMPの場合、160x120解像度のみ対応しています
  • ENABLE_JPGDECODEを有効化することでTJPGD3ライブラリを用いてJPGからBMPにデコードして描画できます
     解像度幅160、320、640、1280のみ、一部のカメラは未対応
  • コードを公開しています 改造することで他の機器とすることが可能です
  • UART(XMODEM/YMODEM)に比べてSPIを介して高速に転送できます
LCDピン変換基板ピン
VCC,LEDJ7 3.3V
GNDJ7 GND
CSJ7 CS
SCKJ7 SCK
SDAJ7 MOSI
AOJ3 PGED
RSTJ3 PGEC

販売サイト

Parts

63
QtyValueFootprintReferences
150.1uCapacitor_SMD:C_0603_1608MetricC1, C6, C7, C9, C10, C11, C12, C13, C14, C15, C16, C17, C19, C20, C21
410uCapacitor_SMD:C_0805_2012MetricC2, C8, C18, C23
4MountingHole_3.2mm_M3MountingHole:MountingHole_3.2mm_M3REF1, REF2, REF3, REF4
310kResistor_SMD:R_0603_1608MetricR1, R4, R6
31kResistor_SMD:R_0603_1608MetricR7, R8, R9
327Resistor_SMD:R_0603_1608MetricR10, R11, RX1
3LEDDiode_SMD:D_0603_1608MetricD2, D3, D4
210pCapacitor_SMD:C_0603_1608MetricC3, C4
2330Resistor_SMD:R_0603_1608MetricR2, R5
2FBInductor_SMD:L_0603_1608MetricFB1, FB3
10.01uCapacitor_SMD:C_0603_1608MetricC5
11.5kResistor_SMD:R_0603_1608MetricR12
110Resistor_SMD:R_0603_1608MetricR13
112MHzFA238V:FA238VX1
11AFuse:Fuse_1210_3225MetricF1
1220uCapacitor_SMD:CP_Elec_6.3x5.4_NichiconC22
1BAV170Package_TO_SOT_SMD:SOT-23D5
1BOOTTestPoint:TestPoint_Pad_D1.0mmTP1
1CR1220CR1220_2895:2895BT1
1ICD3Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_VerticalJ3
1LD3985M33R_SOT23Package_TO_SOT_SMD:SOT-23-5U2
1LDSW_SiP32431Package_TO_SOT_SMD:SOT-363_SC-70-6U1
1Micro_SD_Card_Det_Hirose_DM3ATConnector_Card:microSD_HC_Hirose_DM3AT-SF-PEJM5J2
1PIC32MZ***EF*100Package_QFP:TQFP-100_12x12mm_P0.4mmU5
1PINConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ5
1PINConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ6
1PL2303SAPackage_SO:SOIC-8_3.9x4.9mm_P1.27mmU3
1RV-8803-C7RTC_3215:RV-8803-C7U4
1SW_PushSMD_PUSHSWITCH:SKRPACE010SW1
1USB_AUSBHOST:USBHOSTJ4
1USB_B_MicromUSB:CONN-10118194-0001LF-FCIJ1
1exSPIConnector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_VerticalJ7

Similar boards

  • 2 layers83.5 × 45 mmArducon, the printed circuit board in 3D

    Arducon

    OpenARDF/Arducon

    A transmitter controller for Amateur Radio Direction Finding (ARDF). Based on the Arduino Pro Mini.

    114 parts7MIT
  • 2 layers22 × 26.4 mmConverter, the printed circuit board in 3D

    Converter

    meerstern/USBSerial_I2C_Converter

    USBSerial I2C Converter

    26 parts3
  • 2 layers100 × 50 mmEsp12e devboard, the printed circuit board in 3D

    Esp12e devboard

    EspIt/Hardware

    The EspIt PCB and Schematic

    117 parts
  • 2 layers150 × 53.5 mmDiy smu, the printed circuit board in 3D

    Diy smu

    sverrham/diy-smu

    DIY Source Measurement Unit, four quadrant powersupply and ?.? digit volt/current meter.

    209 parts2
  • 4 layers68.6 × 56 mmCartridge, the printed circuit board in 3D

    Cartridge

    coco-chameleon/chameleon-hardware

    TRS-80 Color Computer cartridge emulator

    95 partsCERN-OHL-W-2.0
  • 4 layers30 × 30 mmNikon GPS, the printed circuit board in 3D

    Nikon GPS

    MaizeShark/Nikon-NMEA-Pro

    low-power GNSS logger and BLE remote shutter for Nikon cameras

    79 parts
  • 4 layers100 × 100 mmCheap version, the printed circuit board in 3D

    Cheap version

    nikolajevs/ai

    Открыть PCBV1.kicadpro в KiCad 10. После обновления репозитория перечитать открытый проект с диска перед сохранением.

    170 parts

Questions

How big is the Wcc PCB?

It measures 65 × 25 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Wcc use?

63 parts, built around the PL2303SA LF, RV-8803-C7, BAV170 and CR1220-2. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.

Where can I download the Wcc KiCad files?

From the meerstern/Usb_Camera_Converter repository on GitHub, at the commit this page was made from: the board is PCB/wcc.kicad_pcb. PCBKit opens the board in the browser, with nothing to install.

Can I use the Wcc design in my own project?

Its repository states no licence, so its author keeps all rights: ask meerstern before reusing the design.