コンテンツへスキップ

[レビュー] USBエンドスコープ

エンジンを弄っているとピストン&ヘッドの状態が気になるときがあります。素直にシリンダヘッドを取り外せばいいのですが、ちらっと見たいだけのときにそこまでするのはちょっと面倒です。そこで安価なUSBエンドスコープを購入してみました。これがあればスパークプラグを外すだけでシリンダヘッドの状態を観察できるハズです。

 

購入したエンドスコープ

ものは直径5.5mmの筐体にカメラとLED照明を収めた代物です。手術で用いる内視鏡のようなものを期待しているとがっくりくるかもしれませんが、私のようにちょっとプラグホールからシリンダーを見たいというような用途にはぴったりです。お値段は送料込みで約500円でした(ヤフオクでも同じような商品がありました。値段だけなら送料を考えるとAliexpressの方が安そう)。

なお、私が購入したサイトでは直径5.5mm/7mmのふたつが選べました。私はなるたけ狭い場所にも使えるよう5.5mmにしましたが、もしかすると7mmのほうがLED照明は明るいかもしれません。

USBエンドスコープ
届いたカメラ一式。カメラ本体と説明所、MicroUSBアダプタ等のオプションが含まれていました。
USBエンドスコープ
付属のオプションパーツ
USBエンドスコープ
カメラ部分はこんな感じになっています。一応防水対応の模様。カメラの直径は商品説明どおり5.5mmでした。

 

対応アプリケーション

PC(Windows10)に接続して使うなら標準のカメラアプリが使えます。他にもUSBカメラに対応したアプリなら大丈夫かと思います。

AndroidやiPhone等のスマートフォンに繋ぐ場合は対応ソフトをインストールする必要があります。私はAndroid端末にOTG Viewというアプリケーションをインストールして使いました(広告表示が無かったのでコレにしましたが、ほかにも同じようなアプリがあるので気に入ったものを使うと良いかと思います)。

USBエンドスコープ
スマートフォンに接続したところ。持ち運び出来るのが有難い。

 

カメラでエンジン内部を見る

早速エンジンのプラグ穴からカメラを突っ込んでみました。このカメラは対象が近いとピントが合わないのであらかじめピストンを引っ込めておきました。

USBエンドスコープとエンジン
プラグホールからカメラを挿入します

USBエンドスコープで撮影した画像
エンドスコープで撮影したエンジン内部。なんかオイルが滲んでいるような気が・・・ピストンリングが駄目になったのかなぁ。

こんな感じになります。解像度が640x480なので画質には期待出来ませんが、ピストン上面を観察するくらいなら問題なさそうです。続いてカメラの先に反射鏡オプションをつけて燃焼室側を確認してみました。

USBエンドスコープ
オプションの反射鏡。これをつけるとカメラの側面が撮影出来ますが鏡の品質はあまり良くない模様。
USBエンドスコープ
反射鏡をつけた状態で撮影したもの。バルブが写っていますが画質は良くないです。でかい異物が噛んでいたら気付けるくらいかな。

うーん、正直なところ単純にカメラを挿入するだけだと思ったように撮影出来ません。針金のようなものでカメラの位置を調整してやればもっと上手く撮れるかもしれません。続いてオイルキャップからいれてみました。

USBエンドスコープの画像
オイルレベルゲージを取り外して撮影したもの。プライマリードリブンギアの一部が写っています。

こちらもカメラの視野角が狭いので思ったように全体像を撮れません。まぁ、本当に気になるギアやクランクはここからは見れないのですが。。。うっかりカメラを突っ込みすぎてオイルに浸かってしまいましたが防水仕様ということで浸水(?)はしませんでした。

 

ディスクリプタテーブルを見る

USBViewを使ってこのマイクロスコープのディスクリプタテーブルを取得してみました。製品説明通り最大解像度は640x480(VGA)で、画像フォーマットはYUY2のみのようです。コントラスト等の調整機能はあるようですが手動のみで自動補正(オートフォーカスとか)は未対応でした。ピント調整はソフト側の機能次第かな。

USBView
ディスクリプタテーブルの取得はUSBViewを使用しました(Windows10環境)。

[Port6]  :  USB Composite Device

Is Port User Connectable:         yes
Is Port Debug Capable:            no
Companion Port Number:            0
Companion Hub Symbolic Link Name: 
Protocols Supported:
 USB 1.1:                         yes
 USB 2.0:                         yes
 USB 3.0:                         no

Device Power State:               PowerDeviceD3

       ---===>Device Information<===---
String Descriptor for index 2 not available while device is in low power state.

ConnectionStatus:                  
Current Config Value:              0x01  -> Device Bus Speed: High (is not SuperSpeed or higher capable)
Device Address:                    0x08
Open Pipes:                           1

          ===>Device Descriptor<===
bLength:                           0x12
bDescriptorType:                   0x01
bcdUSB:                          0x0200
bDeviceClass:                      0xEF  -> This is a Multi-interface Function Code Device
bDeviceSubClass:                   0x02  -> This is the Common Class Sub Class
bDeviceProtocol:                   0x01  -> This is the Interface Association Descriptor protocol
bMaxPacketSize0:                   0x40 = (64) Bytes
idVendor:                        0x1908 = APPOTECH LIMITED
idProduct:                       0x2311
bcdDevice:                       0x0100
iManufacturer:                     0x01
String Descriptor for index 1 not available while device is in low power state.
iProduct:                          0x02
String Descriptor for index 2 not available while device is in low power state.
iSerialNumber:                     0x00
bNumConfigurations:                0x01

          ---===>Open Pipes<===---

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
bmAttributes:                      0x03  -> Interrupt Transfer Type
wMaxPacketSize:                  0x000A = 1 transactions per microframe, 0x0A max bytes
bInterval:                         0x05

       ---===>Full Configuration Descriptor<===---

          ===>Configuration Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x02
wTotalLength:                    0x0155  -> Validated
bNumInterfaces:                    0x02
bConfigurationValue:               0x01
iConfiguration:                    0x00
bmAttributes:                      0x80  -> Bus Powered
MaxPower:                          0x80 = 256 mA

          ===>IAD Descriptor<===
bLength:                           0x08
bDescriptorType:                   0x0B
bFirstInterface:                   0x00
bInterfaceCount:                   0x02
bFunctionClass:                    0x0E  -> Video Interface Class
bFunctionSubClass:                 0x03  -> Video Interface Collection
bFunctionProtocol:                 0x00  -> PC_PROTOCOL_UNDEFINED protocol
iFunction:                         0x02
String Descriptor for index 2 not available while device is in low power state.

          ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x00
bAlternateSetting:                 0x00
bNumEndpoints:                     0x01
bInterfaceClass:                   0x0E  -> Video Interface Class
bInterfaceSubClass:                0x01  -> Video Control Interface SubClass
bInterfaceProtocol:                0x00
iInterface:                        0x02
String Descriptor for index 2 not available while device is in low power state.

          ===>Class-Specific Video Control Interface Header Descriptor<===
bLength:                           0x0D
bDescriptorType:                   0x24
bDescriptorSubtype:                0x01
bcdVDC:                          0x0100
wTotalLength:                    0x0033  -> Validated
dwClockFreq:                 0x02DC6C00 = (48000000) Hz
bInCollection:                     0x01
baInterfaceNr[1]:                  0x01
USB Video Class device: spec version 1.0

          ===>Video Control Input Terminal Descriptor<===
bLength:                           0x12
bDescriptorType:                   0x24
bDescriptorSubtype:                0x02
bTerminalID:                       0x01
wTerminalType:                   0x0201 = (ITT_CAMERA)
bAssocTerminal:                    0x00
iTerminal:                         0x00
===>Camera Input Terminal Data
wObjectiveFocalLengthMin:        0x0000
wObjectiveFocalLengthMax:        0x0000
wOcularFocalLength:              0x0000
bControlSize:                      0x03
bmControls : 0x00 0x00 0x00 
     D00 = 0   no -  Scanning Mode
     D01 = 0   no -  Auto-Exposure Mode
     D02 = 0   no -  Auto-Exposure Priority
     D03 = 0   no -  Exposure Time (Absolute)
     D04 = 0   no -  Exposure Time (Relative)
     D05 = 0   no -  Focus (Absolute)
     D06 = 0   no -  Focus (Relative)
     D07 = 0   no -  Iris (Absolute)
     D08 = 0   no -  Iris (Relative)
     D09 = 0   no -  Zoom (Absolute)
     D10 = 0   no -  Zoom (Relative)
     D11 = 0   no -  PanTilt (Absolute)
     D12 = 0   no -  PanTilt (Relative)
     D13 = 0   no -  Roll (Absolute)
     D14 = 0   no -  Roll (Relative)
     D15 = 0   no -  Reserved
     D16 = 0   no -  Reserved
     D17 = 0   no -  Focus, Auto
     D18 = 0   no -  Privacy
     D19 = 0   no -  Focus, Simple
     D20 = 0   no -  Window
     D21 = 0   no -  Region of Interest
     D22 = 0   no -  Reserved
     D23 = 0   no -  Reserved

          ===>Video Control Processing Unit Descriptor<===
bLength:                           0x0B
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bUnitID:                           0x02
bSourceID:                         0x01
wMaxMultiplier:                  0x0000
bControlSize:                      0x02
bmControls : 0x3F 0x05 
     D00 = 1  yes -  Brightness
     D01 = 1  yes -  Contrast
     D02 = 1  yes -  Hue
     D03 = 1  yes -  Saturation
     D04 = 1  yes -  Sharpness
     D05 = 1  yes -  Gamma
     D06 = 0   no -  White Balance Temperature
     D07 = 0   no -  White Balance Component
     D08 = 1  yes -  Backlight Compensation
     D09 = 0   no -  Gain
     D10 = 1  yes -  Power Line Frequency
     D11 = 0   no -  Hue, Auto
     D12 = 0   no -  White Balance Temperature, Auto
     D13 = 0   no -  White Balance Component, Auto
     D14 = 0   no -  Digital Multiplier
     D15 = 0   no -  Digital Multiplier Limit
iProcessing :                      0x00

          ===>Video Control Output Terminal Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x24
bDescriptorSubtype:                0x03
bTerminalID:                       0x03
wTerminalType:                   0x0101 = (TT_STREAMING)
bAssocTerminal:                    0x00
bSourceID:                         0x02
iTerminal:                         0x00

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x81  -> Direction: IN - EndpointID: 1
bmAttributes:                      0x03  -> Interrupt Transfer Type
wMaxPacketSize:                  0x000A = 1 transactions per microframe, 0x0A max bytes
bInterval:                         0x05

          ===>Class-specific VC Interrupt Endpoint Descriptor<===
bLength:                           0x05 
bDescriptorType:                   0x25
bDescriptorSubtype:                0x03
wMaxTransferSize:                0x000A = (10) Bytes

          ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x01
bAlternateSetting:                 0x00
bNumEndpoints:                     0x00
bInterfaceClass:                   0x0E  -> Video Interface Class
bInterfaceSubClass:                0x02  -> Video Streaming Interface SubClass
bInterfaceProtocol:                0x00
iInterface:                        0x00

          ===>Video Class-Specific VS Video Input Header Descriptor<===
bLength:                           0x0E
bDescriptorType:                   0x24
bDescriptorSubtype:                0x01
bNumFormats:                       0x01
wTotalLength:                    0x00E3  -> Validated
bEndpointAddress:                  0x82  -> Direction: IN - EndpointID: 2
bmInfo:                            0x00  -> Dynamic Format Change not Supported
bTerminalLink:                     0x03
bStillCaptureMethod:               0x02  -> Still Capture Method 2
bTriggerSupport:                   0x01  -> Hardware Triggering Support
bTriggerUsage:                     0x01  -> Host will notify client application of button event
bControlSize:                      0x01
Video Payload Format 1             0x00 
     D00 = 0   no -  Key Frame Rate
     D01 = 0   no -  P Frame Rate
     D02 = 0   no -  Compression Quality
     D03 = 0   no -  Compression Window Size
     D04 = 0   no -  Generate Key Frame
     D05 = 0   no -  Update Frame Segment
     D06 = 0   no -  Reserved
     D07 = 0   no -  Reserved

          ===>Video Streaming Uncompressed Format Type Descriptor<===
bLength:                           0x1B
bDescriptorType:                   0x24
bDescriptorSubtype:                0x04
bFormatIndex:                      0x01
bNumFrameDescriptors:              0x05
guidFormat:                        {32595559-0000-0010-8000-00AA00389B71} = YUY2 Format
bBitsPerPixel:                     0x10
bDefaultFrameIndex:                0x01
bAspectRatioX:                     0x00
bAspectRatioY:                     0x00
bmInterlaceFlags:                  0x00
     D0    = 0x00 Interlaced stream or variable: No
     D1    = 0x00 Fields per frame: 2 fields
     D2    = 0x00 Field 1 first: No
     D3    = 0x00 Reserved
     D4..5 = 0x00 Field patterns  -> Field 1 only
     D6..7 = 0x00 Display Mode  -> Bob only
bCopyProtect:                      0x00  -> Duplication Unrestricted

          ===>Video Streaming Uncompressed Frame Type Descriptor<===
          --->This is the Default (optimum) Frame index
bLength:                           0x22
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x01
bmCapabilities:                    0x00
wWidth:                          0x0280 = 640
wHeight:                         0x01E0 = 480
dwMinBitRate:                0x04650000
dwMaxBitRate:                0x08CA0000
dwMaxVideoFrameBufferSize:   0x00096000
dwDefaultFrameInterval:      0x00051615 = 33.333300 mSec (30.00 Hz)
bFrameIntervalType:                0x02
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00051615 = 33.333300 mSec (30.00 Hz)
dwFrameInterval[2]:          0x000A2C2B = 66.666700 mSec (15.00 Hz)

          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x22
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x02
bmCapabilities:                    0x00
wWidth:                          0x0160 = 352
wHeight:                         0x0120 = 288
dwMinBitRate:                0x01734000
dwMaxBitRate:                0x02E68000
dwMaxVideoFrameBufferSize:   0x00031800
dwDefaultFrameInterval:      0x00051615 = 33.333300 mSec (30.00 Hz)
bFrameIntervalType:                0x02
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00051615 = 33.333300 mSec (30.00 Hz)
dwFrameInterval[2]:          0x000A2C2B = 66.666700 mSec (15.00 Hz)

          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x22
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x03
bmCapabilities:                    0x00
wWidth:                          0x0140 = 320
wHeight:                         0x00F0 = 240
dwMinBitRate:                0x01194000
dwMaxBitRate:                0x02328000
dwMaxVideoFrameBufferSize:   0x00025800
dwDefaultFrameInterval:      0x00051615 = 33.333300 mSec (30.00 Hz)
bFrameIntervalType:                0x02
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00051615 = 33.333300 mSec (30.00 Hz)
dwFrameInterval[2]:          0x000A2C2B = 66.666700 mSec (15.00 Hz)

          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x22
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x04
bmCapabilities:                    0x00
wWidth:                          0x00B0 = 176
wHeight:                         0x0090 = 144
dwMinBitRate:                0x005CD000
dwMaxBitRate:                0x00B9A000
dwMaxVideoFrameBufferSize:   0x0000C600
dwDefaultFrameInterval:      0x00051615 = 33.333300 mSec (30.00 Hz)
bFrameIntervalType:                0x02
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00051615 = 33.333300 mSec (30.00 Hz)
dwFrameInterval[2]:          0x000A2C2B = 66.666700 mSec (15.00 Hz)

          ===>Video Streaming Uncompressed Frame Type Descriptor<===
bLength:                           0x22
bDescriptorType:                   0x24
bDescriptorSubtype:                0x05
bFrameIndex:                       0x05
bmCapabilities:                    0x00
wWidth:                          0x00A0 = 160
wHeight:                         0x0078 = 120
dwMinBitRate:                0x00465000
dwMaxBitRate:                0x008CA000
dwMaxVideoFrameBufferSize:   0x00009600
dwDefaultFrameInterval:      0x00051615 = 33.333300 mSec (30.00 Hz)
bFrameIntervalType:                0x02
===>Additional Discrete Frame Type Data
dwFrameInterval[1]:          0x00051615 = 33.333300 mSec (30.00 Hz)
dwFrameInterval[2]:          0x000A2C2B = 66.666700 mSec (15.00 Hz)

          ===>Still Image Frame Type Descriptor<===
bLength:                           0x0A
bDescriptorType:                   0x24
bDescriptorSubtype:                0x03
bEndpointAddress:                  0x00
bNumImageSizePatterns:             0x01
wWidth[1]:                       0x0280
wHeight[1]:                      0x01E0
bNumCompressionPattern:            0x00

          ===>Color Matching Descriptor<===
bLength:                           0x06
bDescriptorType:                   0x24
bDescriptorSubtype:                0x0D
bColorPrimaries:                   0x00
bTransferCharacteristics:          0x00
bMatrixCoefficients:               0x00

          ===>Interface Descriptor<===
bLength:                           0x09
bDescriptorType:                   0x04
bInterfaceNumber:                  0x01
bAlternateSetting:                 0x01
bNumEndpoints:                     0x01
bInterfaceClass:                   0x0E  -> Video Interface Class
bInterfaceSubClass:                0x02  -> Video Streaming Interface SubClass
bInterfaceProtocol:                0x00
iInterface:                        0x00

          ===>Endpoint Descriptor<===
bLength:                           0x07
bDescriptorType:                   0x05
bEndpointAddress:                  0x82  -> Direction: IN - EndpointID: 2
bmAttributes:                      0x05  -> Isochronous Transfer Type, Synchronization Type = Asynchronous, Usage Type = Data Endpoint
wMaxPacketSize:                  0x1400 = 3 transactions per microframe, 0x400 max bytes
bInterval:                         0x01

          ===>Additional Error Checking<===
PASS: number of uncompressed-frame frame descriptors (5) == number of frame descriptors (5) specified in uncompressed format descriptor(s)

所感

おひとつ500円、用途が決まっているならコストパフォーマンスはよいと思います。手元にあれば使う機会もあるかも?

値段が値段なので過度の期待は禁物ですが、狭くて中が見えないようの場所のちょっとした確認には便利かなと思います。私としてはプラグ穴からピストン表面が確認出来たので満足ですが、カメラケースはある程度の長さがあるので細くて折れ曲がったパイプだと難しいかもしれません。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください