Aliニップルローターの制御をUfoCtrlに取り込めるか?
昨年末に購入しまして過去記事『某AliExpressで購入したニップルローター2品 実使用レビュー (乳首責めグッズ)』にてレビューしましたニップルローターの出来の良い方をコネクタ化改造しまして、どのような制御を行っているのかオシロスコープで解析してみました。

こちらのブツですね。
これまで筆者は既製品の制御パターンはやっつけでつまらないものばかりという評価をしてきたのですが、こちらの製品で初めて『お?なんじゃこのパターンは!?』と感銘を受けました。
オンオフを繰り返しているだけというのは他と変わらないのですが、その時間間隔が絶妙で、その製品の形状やモーターの特性とも相まって『クイックイッ』とひねるような動きが出来ており、『所詮ローターは振動を起こすだけ』という諦観に対して『いやいやこんな動きも出来る』と目から鱗の動きを提示してくれました。
んで、この動きは是非拙作UfoCtrlにも取り入れたいなあと思いつつも、恐らく既存のUfoCtrlの仕組みでは実現不可能だと思っているのですが、まあとりあえずどんな制御なのか可視化してみようと思い、いつものコネクタ化改造を行い、そこにオシロスコープの端子を挟みまして確認してみました。
コネクタ化改造
いつものなんですが、一応ね。
U.F.O. SAにしろDIYグッズコントローラーにしろコントローラー側の配線を同じ形状のコネクタに改造し、また、グッズ側はグッズ側でコントローラーのコネクタに勘合するようなコネクタ化をすることでコントローラーとグッズを好きなだけ取っ替え引っ替え出来るようになります。

早速、配線をニッパーでぶちりと切断。
なお、結局オリジナルも1個所持しておきたいと思って追加でもう1個発注してしまいました。(執筆時点で配送中)
今回はいろんな都合で160円ほどの出費をしております。

あー、このグッズの配線はエナメル線を何本か束ねているみたいですね。(筆者素人なので間違っていたらゴメンナサイ)
筆者の知らない繊維みたいなフィラメント?って言うんですか?ちょっとCopilotに尋ねてみたところだと、と一緒に何本かが赤色で何本かオレンジと色が別れているので、この色違いで電極を分けてコネクタ化します。

うん。はんだ付けし難いなぁ。
ビニール被膜はビニール被膜でハンダゴテ当て過ぎるとどんどん溶けて行ってしまうという難しさがあるのですが、エナメル線の膜はなかなか融けてくれません。
一応、一気にくっつけようとはしないでまずは各線にハンダを乗せて線にハンダがくっついている状態を作って、それから線同士を繋げるという手順で作業しました。
なお、今回はコントローラー側の制御を知りたいのでコントローラー側もコネクタ化改造します……が、もう、筆者やらかしてます。ええ、いつものです。学習能力無いです。数ヶ月空くとすっぽり記憶から落ちるんですね。サルです。

ショートしないように2つの配線の間に絶縁テープを挟み込みましてぐるぐる巻きにします。
今回使用している絶縁テープは自己融着性のモノです。

こんな感じに巻いた後、まだちょっと隙間とかあったりしますが、ビニールボンドで上から覆いました。
なお、やらかしの答え合わせ。は、コネクタのカバーを先に配線に通しておくのを忘れてた。でした。
力と気力と集中力が途切れたので、今回はこのまま。いずれ直すことにします。とほほ。
制御可視化
ここでは全てのパターンは提示せずに筆者が気になったところだけ抜粋でお届けします。

オシロスコープの縦のマス目は2V、横のマス目は200msです。
オンオフ半々くらいで繰り返しているのですが、だいたい1秒に6回くらいの周期です。オシロスコープではFreq:5Hzと写っていますが波形をみると6Hzの方が近く、恐らくぎりぎり6に届かず切り捨て表示されているのかなと思います。
ここで分かることはオンオフがだいたい80msくらいで切り替わるということです。
現状、拙作UfoCtrlでは200msくらいで1回指示が出せますので、現在のUfoCtrlではこのパターンは再現できません。
ちなみに、UfoCtrlの設定でこの間隔は100msに下げることが出来る作りにはなっているのですが、これをやると少なくともU.F.O. SAのコントローラーでは処理が間に合わずに頻繁に応答不能に陥ってしまうので、100msをやるとしたらU.F.O. SA以外……スミマセンよくよく考えたらU.F.O. SA以外でテストしてなかったですわ。もしかしたら他のコントローラーでは正常動作する可能性もあるんですね。ちなみに、DIYグッズコントローラーは楽勝で追随します。
というわけで、DIYグッズコントローラーと今回のグッズとを接続して100msでオンオフを繰り返させてみたのですが、うーん、高々20ms程度の差とはいえ、80msだと『クイックイッ』だけど100msだと振動のオンオフなんだよなあ。
少なくとも今のUfoCtrlでは再現不可能です。

このパターンは筆者が特に感銘を受けたというわけではないのですが、1周期ごとに地味にデューティ比を減らすという制御をやっていて、これも現在のUfoCtrlではやれたとしても100ms毎なのですが、このグッズだと75msくらいの周期の中でオンの時間を36,34,32,30,28,26,24,22,20,18,16,14,12,10,8,6,4,2msと毎回変更してきているような動きですので、全くUfoCtrlでは再現できません。

これなんかもう訳わかめですよね。
んで、見ているとこのグッズの制御は特にPWM周波数とかいう概念は無さそうで、シンプルに幾つクロックを経過したらオンにするかオフにするかという制御をしているだけのように見えます。
これはまあ考えてみれば当然なんですけど、シンプルな何通りかのパターンを持っているだけのコントローラーでわざわざPWM制御の仕組みを導入する必要などなく、と言いますか、PWM制御のロジックだって元を辿ればPWM用のクロックでカウンタ回して閾値超えたらオンにしたりオフにしたりといった仕組みですので原理は全く同じなのですが、そのオンオフの周期を一定のものにする必然性がシンプルなグッズコントローラーには必要無いんです。
なので、このコントローラーはパターンが変わると、というか同じパターンの中でもPWM周波数が一定ではなく(というかPWM周波数という概念が無い)ガンガン周波数が変化して行きます。
逆に言うとUfoCtrlはPWM制御の概念を使って電圧コントロールをし、さらにオンオフ制御は200ms単位を基準として行っているため、刻々とオンオフの時間比率が変化していくみたいな制御は全くもって出来ないです。仕組み的に無理。

これ気を付けていただきたいのは、この画像では横軸が1マスで20msです。200msじゃなくて20msです。
オンオフの周期が10ms強というレベルですので、ここまで来ると振動のオンオフというよりは電圧コントロール(振動の強弱のコントロール)という意味合いに近くなって来ます。
が、このコントローラーではこのように電圧コントロール(振動の強弱のコントロール)と振動そのもののオンオフのコントロールとの境目がありません。十把一絡げになってる。
だから、PWM制御の概念は持っていなくて単純にクロック積み上げてオンオフ切り替えているだけというふうに筆者は捉えたんですね。
ちなみにDIYグッズコントローラーではPWM制御の周波数を3,906Hzとしているため、オンオフ周期は0.256msくらいと非常に細かくしていて、これは完全に電圧コントロールとしてのPWM制御となっており、振動あるいは回転動作のオンオフとしては200ms毎に1回指示出来るBLE通信によりオンオフもしくはその程度を-100〜0〜+100で指示しているということになります。
このグッズのコントローラーはそこまで細かい周期にはしていないため電圧コントロールという意味では大して機能していないのですが、オンオフ制御としては結構緻密にガンガン切り替えている、そんな感じです。

なので、こんな感じに頻繁にオンオフを切り替えて電圧コントロールっぽくなっている部分と少し粗目に切り替えて振動オンオフっぽくなっている部分とか混在するパターンとかもあったりするんですよね。
あ、時間軸は200msに戻ってますので要注意です。

オンであることが主体となるパターンだとこんな波形になったりもするんですね。こちらも時間軸は200msに戻ってます。
今後のUfoCtrlの課題
というわけで、振動ローターのオンの時間を80msあるいはそれ以下にすると振動というよりはクイッとひねるような動きになるという目から鱗の制御は是非DIYグッズコントローラーでも取り込みたいと思っている次第なんですが、とにかく現在のUfoCtrlの作りでは全く対応出来ないという驚愕の事実が判明しましたので、今回の結果を踏まえて、今後のUfoCtrlをどうして行こうか、というのが筆者の当面の課題としたいと思っております。(もしかしたら、チクニーのみならず、亀頭マッサージャー等の振動系グッズの制御にも有効かもしれないと思っています。)
BLE通信は最短で7.5ms間隔で通信出来るので、大胆に通信間隔を詰めて対処するという案も無くはないのですが、恐らくDIYグッズコントローラー以外の既製品の+1D対応製品のコントローラーが追随出来ないであろうということと、そんなに頻繁に通信することが是か?という話と、処理能力の低いAndroid機では7.5ms以内に次の指示値を算出が間に合わないかもしれない問題もありますので、うーんなかなか難儀ですねぇ。
んで、ちょっと脱線するんですけど、BLE通信の間隔って7.5msの倍数なので100msとか200msってBLE通信間隔からすると半端な数字なんですよね。それも今回気になりました。
DIYグッズコントローラーで100ms毎にオンオフ繰り返すパターンを実施してみたところ、ときどきリズムがズレるんですよ。
ただ、それには他の要因もあって、そもそも現在のUfoCtrlの仕組みって指示値の算出からBLE通信の指示までやって次200msあるいは指示値の変更が無いっていう場合は次に指示値の変更がある時刻まで休むような仕組みにしているので、実は200msきっかりではなくて『200ms+指示値算出とBLE通信指示に掛かった時間』が通信間隔になっているんですよね。
つまり、パターン設定では100ms単位で時間指定できるようにしていますが、実際にはそれに計算処理時間がほんのり追加されてます。
処理能力の高いAndroid機では気にするまでも無い時間かとは思いますが、筆者みたいにいまだにMT6580とか使っていると結構影響あったりなかったり……ってのも、ちょっと筆者個人的に気になるようになってしまいました。
ただ、AndroidのアプリってあくまでもAndroidOSに対して『お願い』しか出来ないので、そこをあんまり厳密にプログラム組んだとしてもAndroidOS側が厳密に汲み取ってくれるとは限らないので、あんまりそこを厳密に追求しても意味は無いのですが。
BLE通信の指示出したってそれが即時にBLEモジュールから発信されるなんて保証は無いわけですし、200ms後に実行ってタイマー掛けたところでAndroidOS側の処理遅延でちょっと遅れるとかそういう可能性もあるわけですし……。
UfoCtrlの仕組み、DIYグッズコントローラー側の分担等も含めて、検討が必要であり、場合によってはかなり大掛かりな修正、もしくはDIYグッズコントローラーの制御はUfoCtrlから独立とかも考えなくてはいけなくなるかも知れません。
が、今回のこのUfoCtrlでは出来ないくらいの短い時間でのオンオフ制御というものは、振動系のグッズを制御する際には是非取り入れたいものですし、またもしかしたら回転系のグッズにも新たな感覚をもたらしてくれるかもしれないので、ちょっとお時間は掛かるかもしれませんが、ちまちまと歩みを進めて行けたら、と思っております。
チクラッシュ 'N
乳首ローター 'N
挟乳痴態
乳首責めローター 'N
CHICKRO-
(チクロー) 'N
激感
ニップルバイブ
レッド 'N
激感
ニップルバイブ
ブラック 'N

Chick Rush
チクラッシュ 'm

百戦錬磨シリーズ
乳首ローター 'm

CHICKRO-
チクロー 'm
Chick Rush 'F
乳首ローター 'F
CHICKRO-
ブラック 'F
CHICKRO-
ピンク 'F
挟乳痴態
乳首責めローター 'F