エンジンを弄っているとピストン&ヘッドの状態が気になるときがあります。素直にシリンダヘッドを取り外せばいいのですが、ちらっと見たいだけのときにそこまでするのはちょっと面倒です。そこで安価なUSBエンドスコープを購入してみました。これがあればスパークプラグを外すだけでシリンダヘッドの状態を観察できるハズです。
購入したエンドスコープ
ものは直径5.5mmの筐体にカメラとLED照明を収めた代物です。手術で用いる内視鏡のようなものを期待しているとがっくりくるかもしれませんが、私のようにちょっとプラグホールからシリンダーを見たいというような用途にはぴったりです。お値段は送料込みで約500円でした(ヤフオクでも同じような商品がありました。値段だけなら送料を考えるとAliexpressの方が安そう)。
なお、私が購入したサイトでは直径5.5mm/7mmのふたつが選べました。私はなるたけ狭い場所にも使えるよう5.5mmにしましたが、もしかすると7mmのほうがLED照明は明るいかもしれません。
- Aliexpress – 2017 Newest 5.5/7mm Waterproof Mini Android Endoscope USB Wire Snake Tube Inspection Borescope Compatible Android Smartphone PC
https://ja.aliexpress.com/item/2017-5-5-7-android-usb-android-pc/32841045162.html
対応アプリケーション
PC(Windows10)に接続して使うなら標準のカメラアプリが使えます。他にもUSBカメラに対応したアプリなら大丈夫かと思います。
AndroidやiPhone等のスマートフォンに繋ぐ場合は対応ソフトをインストールする必要があります。私はAndroid端末にOTG Viewというアプリケーションをインストールして使いました(広告表示が無かったのでコレにしましたが、ほかにも同じようなアプリがあるので気に入ったものを使うと良いかと思います)。
カメラでエンジン内部を見る
早速エンジンのプラグ穴からカメラを突っ込んでみました。このカメラは対象が近いとピントが合わないのであらかじめピストンを引っ込めておきました。
こんな感じになります。解像度が640×480なので画質には期待出来ませんが、ピストン上面を観察するくらいなら問題なさそうです。続いてカメラの先に反射鏡オプションをつけて燃焼室側を確認してみました。
うーん、正直なところ単純にカメラを挿入するだけだと思ったように撮影出来ません。針金のようなものでカメラの位置を調整してやればもっと上手く撮れるかもしれません。続いてオイルキャップからいれてみました。
こちらもカメラの視野角が狭いので思ったように全体像を撮れません。まぁ、本当に気になるギアやクランクはここからは見れないのですが。。。うっかりカメラを突っ込みすぎてオイルに浸かってしまいましたが防水仕様ということで浸水(?)はしませんでした。
ディスクリプタテーブルを見る
USBViewを使ってこのマイクロスコープのディスクリプタテーブルを取得してみました。製品説明通り最大解像度は640×480(VGA)で、画像フォーマットはYUY2のみのようです。コントラスト等の調整機能はあるようですが手動のみで自動補正(オートフォーカスとか)は未対応でした。ピント調整はソフト側の機能次第かな。
[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円、用途が決まっているならコストパフォーマンスはよいと思います。手元にあれば使う機会もあるかも?
値段が値段なので過度の期待は禁物ですが、狭くて中が見えないようの場所のちょっとした確認には便利かなと思います。私としてはプラグ穴からピストン表面が確認出来たので満足ですが、カメラケースはある程度の長さがあるので細くて折れ曲がったパイプだと難しいかもしれません。












コメント