3duilab が 2021年12月13日11時10分05秒 に編集
コメント無し
本文の変更
# 自己紹介 はじめまして、3duilab(スリーディーユーアイラボ)と申します。電子回路、ソフトウェア、品質保証のエンジニアです。54歳、バツイチ、発達障害、転職11回、昔冬山で凍傷になって指先を失いました。 若い頃は電子機器メーカーで電子回路の設計とか楽しかったですが今はほとんど外国製です。 エンジニアとして活躍できるのはあと10年くらい、それまでに魅力的な新しいデバイスを開発し次世代に残したいです。:smile: # 双方向ハンドセンサー @[youtube](https://youtu.be/P5jK-uTZFfs) 垂直非接触センサーによる紙飛行機コントロール センサーの検出距離は20cm以上なので中央値も推測出来ます ## 概要 - ユーザーインターフェイスに特化した製品 - 20cm以上、高速、ピンポイントで検出 - 手の位置、速度、方向を検出 - レーザーを使わないので安全
- 開発は2019年から、2020/7発売
- 開発は2019年から、2020年7月発売
## リンク imgur動画のまとめ https://imgur.com/user/3duilab/posts Website技術と応用 https://interactive-hand-sensor.com/root/ 発売中 https://www.switch-science.com/catalog/6495/ Instagram開発履歴 https://www.instagram.com/3duilab/?hl=ja ==紹介する画像や動画の緑の基板は色以外は製品と同じ試作品です。**製品は黒色**で、不要な赤外線を吸収させています。 オープンソースとしてwebsiteのユーザーマニュアル(https://interactive-hand-sensor.com/root/user-manual)から回路図を公開しています。ユーザーマニュアルを読んでご自由にお使いください。== # きっかけの電子工作 @[youtube](https://youtu.be/eQRSIeAO48I) 光に見立てた生物が鉛筆に反応して逃げたり近寄ったりするおもちゃ、センサーにはフォトリフレクタで1cmの距離まで反応します。このセンサーをもっと遠くで反応させたいと思ったのがきっかけです。 # スイッチングフォトリフレクタ ## フォトリフレクタと能動型センサー  非接触センサーには光(音)を測定するだけの「受動型センサ」と光を放射して反射光を測定する「能動型センサ」があります。**フォトリフレクタは図右の能動型センサ**で赤外線を放射して反射光を測定します。 普通フォトリフレクタの検出距離は1〜2cmです。**20cm以上の距離を検出するにはどうすればよいでしょう**:question: ## テクノロジーの核心  答は**めっちゃ電流を流して強く発光させる**:dizzy_face:です。最大1.5Aほど赤外線LEDに流します:collision:**10uS(マイクロ秒)だけ発光させ**反射光をADコンバータで数値化します。このタイミングがテクノロジーの核心です。 1年以上の連続動作で壊れたり劣化しないことを確認しています。普通は**赤外線LEDに1A以上の電流を流すと煙が出て壊れます**:fire::scream:が、ギリギリのタイミングで安全にセンシングしています。 ==これはブラシレスモーター短絡保護回路の経験から。上下短絡(ショート)でMOSFETが壊れる時間が約1mS、これより十分小さい時間でOFFすれば壊れません。昔と比べて半導体が強くなってるので他にも応用できると思います:smirk:== # ソフトウェアセンシング @[youtube](https://youtu.be/Gzwj8hwjZAo) これはセンサーを8枚並列接続したキューブ型です。64個のセンサーは7mS(ミリ秒)毎に距離データを更新してマイクロコントローラには**3次元グラフアニメーションのように変化する距離データ配列**が出来ます。この時間変化をソフトウェアで分析すると上空の状態が分かり物体の動く速度や方向を推測することが出来ます。:smile: # 本体基板 詳細は[ユーザーマニュアル](https://interactive-hand-sensor.com/root/user-manual)をダウンロードして下さい。  |PIN番号|PIN名|説明| |---|---|---| |1|+5V|Vcc 5V| |2|GND|GND| |3|A|channel 0bit※1| |4|B|channel 1bit※1| |5|C|channel 2bit※1| |6|SS|SPI Slave-Select 並列接続の基板選択※2| |7|MOSI|SPI Input| |8|MISO|SPI Output (3.3V/5V切り替えJP2)| |9|SCLK|SPI Clock| |10|SEL_SEN|SPIの出力先選択 High:Sensor / Low:CLED ※CLED:カラーLED| |11|OE_ILED|ILED Output Enable ILED:ON / OFF ※ILED:赤外線LED| |12|FIX_CLED|CLED Shift Register Latch シフトレジスタの値を出力に反映する| |13|OE_CLED|CLED Output Enable CLED ON / OFF CLEDは13pinと14pinのANDで制御| |14|PWM_CLED|CLEDのPWM(Pulse Wide Modulation)制御で明るさを調節するPWMを使わないときは13pin又は5Vにショート| ※1: センサー0-7chを3ビットで選択 ※2: SSはactive-Low、SS以外はactive High  # センサー基板   # インターフェイス センサー読み取り手順を図で示します。カラーLEDの書き込みや詳細は[ユーザーマニュアル](https://interactive-hand-sensor.com/root/user-manual)をご覧下さい。 - SPIインターフェイスでADコンバータMCP3208を読むとフォトトランジスタの値が分かります。 - この時自動的に赤外線LEDが発光します。 - 赤外線LEDを発光させずに光の状態を読むことも出来ます。両者の差から距離を推測します。  1.SPIインターフェイス設定 - SPI-MODE:0 - CLOCK:2MHz※1 - SSとCLOCK開始の間隔は2uS〜4uS(多くのマイコンでデフォルト設定)※1 - 1サイクル(同じILEDへのアクセス時間間隔)は1.2mS以上※2 ※1この値から外れると感度が下がる。 ※2 ILEDの品質を確保するため。 2.センサー読み取り手順 1.A,B,C:ILEDチャンネル設定 *** a 2.SEL_SEN:HIGH センサー選択 *** b 3.OE_ILED:LOW ILED OFF設定 *** c 4.SPI-read ILED OFFでPhTr電圧読み取り 5.OE_ILED:HIGH ILED ON設定 *** d 6.SPI-read ILED ONでPhTr電圧読み取り 7.SEL_SEN:LOW CLED選択 *** e 8.OE_ILED:LOW ILED OFF設定 *** f 9.ソフトでADコンバータの電圧読み取り 10.基準配列criをにより値を0-6に分割:Sensor値1-6※ ※基準配列criはサンプルプログラムSensor class内で定義、0-12に分割の場合あり 3.SPI-read ADコンバータMCP3208の読み取り 3bitチャンネル値 xyz x:2bit, y:1bit, z:0bit 送信値 3byte (unsigned char) a,b,c 1. SS:LOW *** p 2. a binary :0000 011x 式:6 | (xyz >> 2) write (a) read(8bit):r0 *** q 3.b binary :yz00 0000 式:xyz << 6 write (b) read(8bit):r1 *** r 4.c binary :0000 0000 cは定数0 write (c) read(8bit):r2 *** s 5.SS:HIGH *** t 6.AD変換値:((r1 & 0x0f) << 8) + r2 r1下位4bit+r2(8bit) 合計12bit # 応用例 @[youtube](https://youtu.be/1X_uN54GhAY) 実際のスイッチと置き換え可能な非接触スイッチのテスト これは実現させたいです:confounded:スイッチに触りたくない --- @[youtube](https://youtu.be/nAIFRf44h8w) 非接触空間センサーで2軸サーボモータ制御 --- @[youtube](https://youtu.be/l6WDZNTxZgk) じゃんけん検出 --- # 終わりに このセンサーを見て「それで何ができるの?」と言う人には「わかってないな:sweat_smile:」と思います。展示会で子供や若者はそんな事聞かずに遊んでくれます。アートのようにこのセンサーで未来感を楽しんで下さい:smile: