DGCSet Ver1.00 DIYグッズコントローラーの設定値を調整、変更、動作確認できるツールアプリ

DGCSetとはDIYグッズコントローラー(DIY Goods Controller略してDGC)の設定変更をプログラムの書き換えをせずとも行えるようにするAndroid野良アプリです。
また、動作確認機能や設定値をリスト登録できる機能なども備えています。
対象は拙作UfoCtrlと同じくAndroid4.3以上。現時点ではAndroid15まで実機確認出来ております。

DIYグッズコントローラーとは汎用品のマイクロコントローラーとモータードライバと必要があれば昇圧回路を組み合わせてU.F.O. TWやU.F.O. SAのコントローラーような機能を実現させたものでして、U.F.O. TWやU.F.O. SAよりも性能が高く、バッテリー容量の制約もキツくなく、汎用品の組み合わせにも関わらず軽量小型に仕上がるご自身で作成していただくコントローラーでして、2025年初めより本格始動し、既に4種のマイクロコントローラーによる作例とマイクロコントローラー用のプログラム、及びそのプログラムの書き込み方法などを公開してきています。
当サイトの記事としては
昇圧回路基板を追加して5V以上のグッズに対応するDIYグッズコントローラーを作成
マイクロコントローラーSeeed Studio XIAO nRF52840とモータードライバTB6612を組み合わせてUfoCtrlで制御できる小型軽量なグッズコントローラーを作成する
U.F.O. SAコントローラーからの脱却 バッテリー容量不安からの開放 小型軽量DIYコントローラーで反応も改善
汎用品を組み合わせて作るオリジナルグッズコントローラーの動作確認
なぜ今グッズコントローラーをDIYしようとするのか
宇宙からの帰還を考える
辺りにDIYグッズコントローラー関連の紹介記事があり、
実際の作業説明やプログラム等は筆者のFANBOXにて開発支援してくださる方と共有しています。

汎用ですので自由度が高いこともメリットの1つでして、電圧の調整範囲などを簡単に変更できるようにプログラムを作成しており、グッズの特性に合わせて最適な電圧範囲に調整できるようにしております。
ただ、設定値の変更にはプログラムの冒頭に定義している値を変更したうえでプログラムの書き込み作業をやり直していただく必要があり、なるべく簡易に変更できるように配慮はしているものの、実際にそれで調整作業を密に詰めて行こうとするとかなり面倒臭いことになるという懸念がありました。
というのも、プログラムの書き換えにはPCとの接続が必要になります。しかし、実際にグッズを動かすときにはPCではないUSB充電器(ACアダプタ)やモバイルバッテリーに接続して使用することがほとんどでしょう。
細かいことを言うと電源が変わると電圧や出力特性が変わるので、PCと接続したまま調整しても他の電源にしたときに同じように動いてくれない可能性があります。
つまり、きっちり調整しようとしたら、プログラムの書き換えはPCと接続して行って、動作確認は普段使用する電源に繋いで行う必要があるわけで、あああ面倒ですねえ!ねえ?

というわけで、今回、この辺りの設定値をAndroidアプリからシュパッと変更できるようにしたら、DIYグッズコントローラーは普段使用する電源に繋いだままアプリで値を調整してその場でグッズの動作を確認できる!
ということでこの『DGCSet』なるAndroid野良アプリを開発したのですが……エラい大変でした。
やりたいことは設定値の変更と動作確認の補佐でそんなに難しいことをしようとはしていなかったのですが、無線通信って大変ですね。
筆者にはUfoCtrl開発の経験があるのだから、その経験を活かせば……とか思っていたら新たに勉強しなくてはならないことが意外に多くて時間が掛かってしまいました。
もちろん、UfoCtrl開発の恩恵もどっぷりあるのですが、DIYグッズコントローラー側のプログラムも4種開発しなくてはならなくて、その新規開発する4種のプログラムと『DGCSet』との連携を完全なものにしないとリリース出来ないものですから、仕様決めからUIデサインからああもう大変でした。
それでもUfoCtrlをここまで開発してきた苦労のトータルと比べると……大したこと無いか……。

DGCSet使用方法

いつもの筆者のアプリっぽい画面です。UfoCtrlを使用されている方には馴染み深いでしょう。(?)
このアプリで変更できる設定項目は
・デバイス名称(UfoCtrlで接続するときに出てくる名称です)
・BLEの送信出力BLEPower(通信不安定なときは強く、部屋の外等まで到達させたくないときは弱く調整できます)
・想定電源電圧InV(電圧制御する際に想定される電源電圧です。USBですと標準は5Vですが、実際にグッズを動かすときには相応の電圧降下が発生します)
・想定最大出力電圧OutMax(1〜100で制御する際の100のときに目標とする想定出力電圧です。実際の電圧を見ながら制御しているわけではないので計算上の想定値です)
・想定最小出力電圧OutMin(1〜100で制御する際の1のときに目標とする想定出力電圧です。実際の電圧を見ながら制御しているわけではないので計算上の想定値です)
以上の5項目です。
DIYグッズコントローラーでは想定電源電圧InVと想定最大出力電圧OutMax、想定最小出力電圧OutMinを用いてPWMデューティ比を算出決定しており、これらの値をグッズの特性に合わせて調整することでダイナミックレンジの広い強弱メリハリの付いたグッズ制御が可能になります。

あ、そうだ。縦に長くないスマホ等では画面内に全ての表示が収まりきらない場合があります。

その場合は縦スクロールしますので、一番下のスライダーまで見えていない場合は必要に応じてスクロールさせてくださいね。

それでは早速接続してみましょう。画面右上の「Connect」ボタンをタップしてください。
BLE接続にまつわる権限等についてUfoCtrlと同じ扱いにしています。
詳しくは過去記事『UfoSaCtrlTrip Ver4.00 U.F.O. SA TW A10サイクロンSA (+PLUS プラス) バッハスマート ROCKET+1D ランダムコントロールアプリ』の「大変更点(権限周りの整理)」をご参照ください。

接続可能なBLEデバイスが表示されますので、接続したいDIYグッズコントローラーのデバイス名称をタップして選択してください。(見ず知らずの他人のデバイスをタップしないように注意!)

実はここ、リリース直前まで完全自動で選択接続する方向でプログラムを組んでいたのですが、DGCSetの対象デバイスであることを検知するためにはとにかく一旦接続してDGCSetと通信可能な条件が揃っているか調査する必要があり、人口が密集しているような場所では他人の所持デバイスに対していきなり接続してしまう事象が発生し得るということに寸でのところで気付いて慌ててリリース前に改修したところだったりします。知らない近所の人がいきなりBluetooth接続されたランプとか通知とか見たら事案ですものね。危ない危ない。
なお、『じゃあUfoCtrlはどうなってんのさ?』と疑問を持たれた方もいらっしゃるかと思いますが、UfoCtrlではデバイス名称でフィルタリングを行っており、このデバイス名称は接続せずとも取得できるし、取得して問題無いものです。
例えば、一般にBluetooth接続の作業をしようとするときって接続対象の機器一覧を表示させて選択しますよね。あれと一緒です。
WiFiの接続設定作業をするときなんかもどの機器と接続するか機器一覧から選びますよね。あれと一緒です。
接続前に基本情報だけは取得出来るようにしておかないと接続作業すらままならないので、デバイス名称の取得については通常オープンにされているものです。
んで、『UfoCtrlがデバイス名称でフィルタリングしているならなぜ同じようにDGCSetでもフィルタリングしないのか?』とここは悩みどころではあるのですが、DGCSetではデバイス名称の変更が自由に行なえます。
するとフィルタリングに引っ掛からないような名称に変更することも簡単に出来てしまうんですね。
しかし、それをすると次からDGCSetで接続出来なくなります。
もちろん、フィルタリングの条件を変更出来るようにしておいて、合致するような条件にしてもらえば接続出来るようにはなるのですが、そんな仕組みにしていたら悩む人続出しないか? という疑念があります。
なので、現状はこのようにとりあえず拾えるBluetoothデバイスを全て表示して選択してもらう形式を取ったのですが、結局デバイス名称を適当に変更するとUfoCtrlでフィルタリングに引っ掛からなくて接続出来なくなり、UfoCtrlのフィルタリング条件を変更してもらう必要が生じるわけで、どこでそういう作業が必要であることに気付かせたら良いかという話になってしまいます。
DGCSetは馴染みが無いのであんまり敷居は高くしたく無く、UfoCtrlはもう開発当初からデバイス名称で接続判断してるからね!ってずっと言い続けているのでUfoCtrlで接続出来ない現象にぶち当たった方がデバイス名称のフィルタリング条件の問題に気付いてもらい易いかな? と思っております。

選択されたデバイスに対してBLE接続を行いDGCSetと通信が出来るだけの条件が揃っているか試験します。(具体的には必要なCharacteristicが全て揃っているか調査します。)
条件がクリア出来たら現在の設定値を自動で取得します。

取得中は左の画面のように「Connect」だったボタンが「Cancel」となっています。この状態のときに「Cancel」ボタンをタップすると情報取得を中断し接続を解除します。
情報が取得出来ると右の画面のように現在の設定値が画面内の左側に表示されます。
また、このときに選択式になっているBLEPowerの選択肢リストが更新されます。

上記で変更できる設定項目を5つ挙げていましたが、表示は6つあります。
一番上に(上の画像の例では『ESP32』と)表示されているものはデバイスタイプDeviceTypeと筆者が勝手に名付けたものですが、DIYグッズコントローラーに使用しているSocの種類を表しています。
なぜこんなものをわざわざ筆者が定義して表示させているのかと言いますと、SoCによって設定できるBLEPowerの選択肢が異なるからです。
設定可能な選択肢を決定するためにはSoCの情報が必要。それで、DeviceTypeという項目を新たに定義して接続時に読み込むようにしました。
このDeviceTypeはSoCにより一意で決定しますので変更出来ません。表示するのみです。(なのでグレーの水平線でエリアを分割しています)

情報の取得と表示が出来ましたら「Cancel」だったボタンは「DisConn」に変わります。「DisConn」ボタンをタップするとBLE接続を解除します。この辺のノリはUfoCtrlと同じです。

その左には「Type」というボタンが押せるようになっていますが、これは情報再取得用のボタンです。
DeviceTypeからOutMinまでの情報を再取得し、BLEPowerの選択リストを更新し直します。が、通常はこのボタンをタップする必要はほぼ無いかと思います。

開発中は接続してもデータ取得が出来ないという状況が多発していたのでこのボタンを設置したのですが、最終的にはほぼほぼデータ取得に失敗することはなくなりました。

この真ん中のボタン群は左に表示されている値を右側に反映(コピー)するボタンです。
左側に変更前の値表示を残しておき、右側で設定値を編集することで変更内容を一覧しながら作業することが出来ます。
上5つのボタンは項目単位でコピーするボタンで、一番下の「⇒」ボタンは5項目一括でコピーするボタンです。

ボタンの名称が簡略化し過ぎていて分かりにくいかもしれませんが、これ以上長くすると改行してしまうケースが発生するためこのように短くしています。「Name」で改行しちゃうスマホがあったんですよ。な〜にぃ!やっちま……

「Read」ボタンはDIYグッズコントローラーが現在保持している設定値の再読み込みです。
再読み込みは5項目だけでDeviceTypeの再読み込みはしないのでBLEPowerの選択肢リストはそのままで変更されませんので右側の編集状態を維持出来ます。
通常の再読み込みはこちらの「Read」ボタンを使用してください。

「Write」ボタンは右側で編集した値でDIYグッズコントローラーに対して設定値を書き込みます。
なお、制限としてデバイス名称は半角15文字以内。全角にしてもエラーにはなりませんが正常動作しなくなっても責任持てませんので基本的には半角のASCIIコード範囲に収めた方が良いと思います。いわゆる半角英数字記号辺りですね。PCだったらIMEを使用しなくても打てる英数字記号って感じで説明できるのですがAndroidだと難しいですね。まあ、一般にパスワードに使用できる文字程度にお考えください。
InV,OutMax,OutMinの3項目については従来単位をVとしていて小数で指定するようにしていたのですが、ここは一律整数でmVを単位とするように変更させていただきました。
また、InVは1〜65535mV、OutMaxは0〜InVと同値、OutMinは0〜OutMaxと同値の範囲に収める必要があります。

これはBLE通信や値の保持等の関係で整数値である方が好ましいため仕様変更させていただきました。
DeviceNameを半角15文字までとしたのは、あんまり長くてもそもそもUfoCtrlの画面にも表示しきれないので意味が無いというのと、BLE通信の制約です。
もちろん、BLE通信の拡張を行ったり複数回通信を行うようにすればこのような制限は要らなくなるのですが、せっかくシンプルに最低限なデフォルト通信1回でやり取りが完了するようなデータ量に収めることが出来る状況ですので、このような制限としました。
どうやらAndroidとの通信では標準でATUが22Bytesっぽいので、BLEPowerで1バイト、InV,OutMax,OutMinで各2バイト、DeviceNameが最大15バイトという振り分けでデータ通信をシンプルかつコンパクトにまとめています。

余談ですが、SoCにnRF52840を使用しているSeeed Studio XIAO nRF52840とProMicro nRF52840についてはOutMaxをInV以下ではなく未満にするようお願いしていましたが、今回その点についても再精査して改修しましたのでInV以下であればOKになります。つまりデューティ比100%にすることが可能です。

本当はnRF52840のPWMライブラリのプログラムが怪しくて最大でも65535/65536までしかデューティ比を上げられないのですが、PWMの周波数を3906Hzとしていることで結果的に3906/3906となるのか分かりませんが一応オシロスコープの波形で見る限りはデューティ比100%を達成出来ているっぽいです。

ちなみに、筆者のFANBOXの記事の方では何度か言及しているかと思いますが、本来はデューティ比のMaxとMinさえ指定すれば良いだけなのにわざわざInVとOutMaxとOutMinという項目を3つに増やしてまで電圧想定値で設定させようとしているのかという点については単に人間側の分かり易さ、想像し易さに重きを置いた仕様にしたというだけです。
デューティ比のMaxとMinを指定しろって難しいですよね?
電圧の仮定値でMaxとMin電圧を指定した方が感覚的に理解し易いです。
もっとも、全て仮定値でありますので、実際にその通りの駆動電圧になるわけではなく、あくまでも仮定値を元にデューティ比を決定してそれっぽく動かすというだけですので、実際の駆動電圧とは誤差が生じます。ご了承ください。

ここから下はせっかく設定を詰めても、アプリを終了したらまっさらに消えてしまうのは不便なので設定値を記憶して管理出来るようにしようとしているエリアになります。
まず、右側で編集した設定値5つセットで、タイトルを付けて「Add to List」ボタンをタップしますとそのタイトルで設定値が記録されます。
上の画像では「Base」というタイトルを付けてますね。

「Add to List」ボタンを押して記録されると、その下にリスト選択スピナーが更新されて、今回は初めてリスト登録したのでそのデータが選択された状態になり、さらにその下にデータ一覧が表示されます。
ここは複数登録するとリストから選択できるようになり選択が変わるたびにそのとき選択されたデータが下に一覧表示されるようになります。
選択しているデータを消去したいときは「Del from List」ボタンをタップしてください。

その下にある「↑」ボタンは現在表示している選択データを画面右上の設定データ編集エリアに反映するボタンです。
その右にある「DirectWrite」ボタンは画面表示状態を変えずに現在の選択データでDIYグッズコントローラーへ設定値変更の書き込みを行います。
つまり、一度登録したデータはわざわざ画面右上の編集エリアに反映させなくてもボタン一発で設定書き換えが出来るというわけです。

このリスト管理機能とダイレクト書き込み機能を上手く利用すると、制御したいグッズの特性に合わせた設定値をリスト登録しておいて使用したいグッズに合った設定値をリストから選択してDirectWriteするだけでそのグッズに最適な設定値にいつでも変更できる、とこういう目論見なわけですよ。どうです? ナニ?そんなにグッズ持っていない? 徐々に増やして行ってください。

あ、このリストはDeviceType(DIYグッズコントローラーのSoCの種類)毎に別リストとなります。
というのもBLEPowerの選択肢が共通ではないのでSoCの種類を跨いだ使い回しは出来ないのです。
ご了承ください。(なんかBLEPowerを変更できるようにしたことで余計な仕様が膨らんでますねえ。)

ようやっとこの画面の最下段の説明に到達です。
最下段エリアは動作確認のための機能の塊です。
実際に0(停止)1〜100のPower制御値を発行することが出来、それぞれ、どのPowerのときにグッズの動きがどうなるのか動作確認が出来ます。
特にチューニング中に良く使用することになるであろう0,1,50,100についてはワンタップで指示できるボタンを用意し、その下にスライダーも用意して任意のPowerでの動作確認も出来るようにしています。
ただし、スライダーについてはスライダーの動きに追従するものではなく、スライダーの動きを終わらせたときのタイミングでのみ指示するようにしています。
これはBLE通信能力やAndroidの処理能力等との兼ね合いで、追従するように発行指示を出そうとしても処理が間に合わないうえに最終的にスライダーの動きを終わらせたときのタイミングでは発行指示が出せないため、スライダーの位置と発行指示が出せたときの値とにズレが生じてしまい動作確認に支障が出るため追従はしないようにしました。ご了承ください。
あ、あとモーター回転方向の反転ボダンも左隅に付いています。


以上、メイン画面の説明は一応一通り済みまして、基本的にはこのメイン画面だけ使用方法が分かっていれば使えるようにはなっています。ここから先はメニュー機能について説明します。

DGCSetには3つの補助メニューが付いています。一番下の「Info」はDGCSetアプリの簡易説明ダイアログですので割愛します。

一番上の「List Edit」はメイン画面で記録したリストデータを直接編集したいときに使用します。

筆者のアプリでは良く見るただの編集エリアに登録されたリストのデータが表示されますので、ここの文字列を編集することが出来ます。
各DeviceTypeに対してリストのデータが羅列されます。
記載順序はリストのタイトル、DeviceName、InV、OutMax、OutMinで、これをリスト登録されたデータ分記載した後にそのDeviceTypeのデータの終了を表す「##」の行を記載します。
またDeviceTypeも今は3種類ですがいつでも増やせる仕組みにしていますので、全てのDeviceTypeに対する記述が終わった際にもデータの終了を表す「##」の行を記載する必要があります。上の画像の例ではDeviceType「nRF52840」に対するデータが無いのですぐに「##」が現れて、そこで全てのDeviceTypeが終了するのでもう1回「##」が現れて全データ終了となっています。

ここで直接値を書き換えて構わないのですがエラーチェックをまともに行っていないので間違った編集でこの画面を終わらせようとしないでください。最悪アプリが異常終了します。
また、例によって3つ分セーブ出来て呼び出し出来るようにしています。(UfoCtrlのSettingsと同じノリです)

メイン画面ではリストの登録順序を変更することが出来ないので、順序変更をしたい場合なんかもこの画面を開いてデータの順序をごっそり入れ替えてください。


次の「BLE Power」は通常ここを弄る必要はありません。
もし奇特な方が居て、今筆者の方でリリースしているESP32,ESP32C3,nRF52840以外のSoCを使ったDIYグッズコントローラーを作成してDGCSetで設定変更できるようにしたいといった場合に新たなSoC用のBLE Powerの選択肢を追記すると良いよ。という程度の意味で設置しているメンテナンスメニューです。
もっとも、DIYグッズコントローラー側のプログラムも移植する必要があるので、かなりマイクロコントローラーに精通している方でないと手を出し難いかとは思いますが。
あ、ノリは上記の「List Edit」と全く一緒で各DeviceTypeに対して設定可能なBLE Powerの値を羅列し終了は「##」最後に全体終了の「##」も書く形です。


最後の「Characteristic」ですが、これはDGCSetとDIYグッズコントローラーでデータのやり取りをする際に使用するCharacteristicを変更したい場合にここを弄れば対応出来ますよっていうだけで、筆者にはわざわざCharacteristicを変更したい理由が思い浮かばないので存在意義あるのかな?という気もするのですが、UfoCtrlでも一応Characteriticを判別する正規表現をSettingsに書いていて変更可能にしていますので、同じようにしておかないと万が一Characteristicを規定から変更しているという奇特な方がいらっしゃるとUfoCtrlは対応出来てるのにDGCSetが使えないという事態になってしまいますので一応変更できる機能を設けています。
4つの正規表現を記載しますが、上から2つのモーターへの出力指示Power(-100〜0〜+100)を行う用のCharacteristicを抽出する正規表現でここはUfoCtrlに記載のものと同じになるはずです。
次がDeviceType読み込み用のCharacteristicを抽出する正規表現。
BLEPower,InV,OutMax,OutMin,DeviceNameの現在データ読み込み用のCharacteristicを抽出する正規表現。
BLEPower,InV,OutMax,OutMin,DeviceNameの現在データ書き込み用のCharacteristicを抽出する正規表現。
となっています。

ここの設定を弄る場合は最後必ず改行させてください。上の画像で言うところの「.*8888.*」の後に改行が入っていないと読み込むときにゴミデータが山のように付いて来てしまうのでちゃんとした正規表現として扱えなくなってしまいます。

設定調整のコツ

BLE Powerは下げれば下げるほどDIYグッズコントローラーの消費電力が削減出来ますし、近い距離に他人が居るような環境ではあまり遠距離まで電波が届いてしまうような強度では使いたくないというのもあると思いますので出来るだけ下げたいところではありますが、通信不安定になるほど下げてしまうとUfoCtrlでまともに制御出来なくなる可能性がありますので、良きところを探ってください。
なお、変更できるのは出力に関してだけで受信に付いては変更のしようがありません。
すると、UfoCtrlではPower指示を出力する一方なので、DIYグッズコントローラー側の出力って関係無いのでは?って一瞬思ってしまいがちですが、ユーザーのデータ送信以外にネゴシエーション等陰で必要となるやり取りは多くありますのでそこそこ影響はあるものとお考えください。
ただ、BLE Powerが消費電力に対して支配的というほど変化があるわけではないので、他人への気遣いが不要な環境では特に気にして下げる必要は無いかと思います。

InVは電源電圧の想定値なのですが、筆者のデフォルト数値ではESP32では4000mV、その他のSoCでは4600mVとしています。
これはUSB経由で電力供給をしてグッズを実際に動かしたときにそれ相応の電圧降下が発生するため、このような値をデフォルトとしているのですが、当然使用する電源やグッズによっても変わって来ますし、なんならPWMデューティ比によっても平均電圧は変わってしまいますのであくまでも目安値です。
昇圧回路を噛ましている場合なんかでは大きく外れることになるので適宜調整した方が人間にとって分かり易いかと思います。
あくまで筆者の持っている機材での傾向ですが、PCのUSBを電源としているときは比較的安定して5Vに近いところをキープする印象ですが、USB充電器(ACアダプタ)なんかですと無負荷状態では5.2〜5.4Vくらい電圧がある製品が多く、しかし、実際にグッズを動かすとガクンと電圧が落ちて行きます。
電圧が低くなるだけでなくて、PWMで電圧オンなっている最中にもガンガン電圧が落ちますので波形で言うと右下がりになり、オンになった最初は5Vを超えるくらいでも4V強くらいまで落ちてしまうので平均するとまあ4600mVくらい?アバウトですけど。そんな感じです。
モバイルバッテリーでは無負荷状態で5Vちょうど近辺の製品が多いのですが、グッズを動かしてもさほど電圧は落ちません。PWMでオンになっている最中に電圧降下する現象は発生しますが結果的にはUSB充電器のときと似たような平均して4600mVくらいになる印象です。
ESP32だけ4000mVと低くしているのはESP32本体の消費電力が大きくて無負荷だのグッズだの以前に電力食ってしまうので電圧ダダ下がりなんです。

OutMaxはそのグッズでPower100にしても大丈夫な範囲に収めてください。例えば定格3Vのモーターを制御するなら3000mV以下に設定するのが無難です。
ただ、実際にグッズを動かすときにそんなに常にPower100で動かすのか?というとそんなことは無いと思うので、一時的に定格を超えてしまっても問題無いだろうと考えられる場合はそれ以上にしてもOKではあります。自己責任ですけど。
筆者は定格5VのグッズがMaxでもちょっと弱いと感じていたので7Vくらいに昇圧してInV,OutMaxともに6800mVにして使っていたりますけど、まあ、結構熱持つよね。モーターケース触って温かい程度で熱いまでは行かないけど。

OutMinはグッズがまともに動作する最低を探りながら設定すると良いと思います。Power1で動かしてまともに動かないならOutMinを上げて、強く動き過ぎると思ったらOutMinを下げて調整してください。
そうするとPower1〜100のこの100段階を有効活用した制御に出来ると思います。

トラブルシューティング

BLE接続は双方の機器の状態を一致させておかないと上手く行かなくなってしまいます。
例えば、DGCSetでは接続した状態のままでDIYグッズコントローラー側を一旦電源切って入れ直したとか、プログラム書き換えを行ったとか、リセットボタンを押したとかすると、DGCSetでは接続しているつもりで情報を保持しているのに対してDIYグッズコントローラーでは接続情報をすっかり忘れて未接続状態になってしまいます。
この接続状態の齟齬は検知するまでに数十秒という単位で時間が掛かったりしますし、DGCSetでDisConnして接続を解除したとしてもAndroidOS側で接続を維持しているつもりのままになってしまうことがあり、こうなってしまうとBluetoothそのものを一旦オフにして再度オンにするまで再接続が出来なくなったりします。
また、このBluetoothそのもののオフオンについても結構初期化に時間が掛かったりすることがありますので、オンにしてからすぐに接続しようとしてもいつまでも接続処理中で設定データの取得も出来ないままという状況に陥ってしまうことがあります。
AndroidOS上ではすぐにオンに出来ているようなフリをするのでDGCSetでもすぐに操作出来てしまうのですが、実際にはBluetoothのモジュールの初期化が済んでおらず中途半端に処理が破棄(?)されてしまうことがあるようです。

基本的にはDIYグッズコントローラーの電源を入れ直したりプログラムを書き換えたりリセットボタンを押すときはその前にDGCSet側から接続解除をしておいてください。
それを忘れて上記のようなBluetooth接続が上手く出来ない設定データが上手く取得できないような現象が発生しましたら、一旦DGCSetのアプリを終了してAndroidOSのBluetoothも一旦オフにして、そこからDGCSetアプリ起動と接続処理をやり直してください。
あんまり慌てて接続処理をやるとまたBluetoothモジュールの初期化が間に合わなくて正常に接続できない場合がありますので、そのような現象が続く場合はBluetoothをオンにしてからDGCSetで「Connect」ボタンの押すまでの間を長く待つようにしてみてください。
通常はBluetoothオンから即「Connect」ボタンを押しても大丈夫なのですが、一旦接続情報の齟齬が発生するとそれを修正出来るまでそれ相応の時間が掛かるっぽいです。AndroidOSの内部処理は良く分からんのですが。
AndroidOS起動したてで接続しようとしてもかなり待たされるかもしれません。Bluetoothモジュールが起動するのはAndroidOSが起動してからかなり後になるので、スマホの処理性能にもある程度左右されますが、OS起動直後はちょっと待った方が無難です。

ダウンロードファイル

勝手な再配布はしないでください。
また、このファイルのみへの直接リンクを貼ることもご遠慮ください。
特に、うちのサイトは弱小なので、検索で上位に表示されるサイトに勝手にコピーされると、盗まれたのとほぼ同じ状況に陥ります。
何かしらの問題が発覚して、こちらのサイトでファイルを差し替えても、それが皆さんの元には反映されなくなることにも繋がります。

DGCSetアプリ配布ページはこちらです。
DGCSet Ver1.00(UfoCtrl開発活動支援プラン)

また、DIYグッズコントローラー側でもDGCSetに対応したプログラムの書き込みが必要となります。
対応するプログラムはDGC Ver2.00以上です。
DGC(DIY Goods Controller) Ver2.00(筆者のFANBOX)にて開発を支援してくださる方と共有しています。

2026-01-15

この記事のタグ

U.F.O.

TW

SA

アプリ

制御

電動

自作

チクニー

開発