2021/07/25

G84-4100PPAUS KEYBOARD + nRF51822


 nRF5x のデバイス2号機。Cherry 純正の薄型・小型・メカニカル・キーボードをワイヤレスに改造。古いキーボードなので制御基板も大きいし、マトリクスとも、キレイに分割できるので改造は楽。

 ケースの底面を切って、単4電池仕様に変更。HTPC のキーボードとして使おうと思う。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/07/14

PC-9801n-23 TEN KEYBOARD + nRF51822



 nRF5x のデバイス1号機。ボタンを押したとき、離したときにボタン番号を送信するだけ。処理は、レシーバが行う。今後もつくるデバイスは、すべて同じレシーバに繋がる予定。

 この古いテンキーのメカニカルスイッチは、チャタリングがほとんど起こらない。分解できないから、掃除も出来ないのが困るとこではある。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/07/11

nRF5x キーボードもどき、その2


 Windows 側で処理していたキーボードの処理を、ATmega32u4 上で行う。とうぜん、USB-HID のキーボードとしてハードウェア認識される。アプリによって入力できない、なんてことも無くなる。

 汎用性を無視して、マクロとかも Arduino プログラム内でゴリゴリ出来る。ま、ATmega32u4 は、あまりメモリが無いから複雑な処理は難しいけど。

 ネイティブなキー入力とは別に、Windows上でも自由に割り当てられるようにする。rmx は、KODI用だったが、若干、範囲が広がって、複数デバイスを一括管理するリモートセンタ的な役割を担うことになる。

 本来なら、BLEデバイスで統一出来ればいいのだけど、Win7のPCも現役だし、レシーバ・デバイス式も現実的な選択かと。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/07/10

nRF5x キーボードもどき、その1

 キーボードマトリクス → nRF51822 → 無線 → nRF52832 → USB Serial → キーエミュレーション。OSが立ち上がらないと機能しないキーボード。


 デバイスは、送信側も、受信側もボタンデータの受け渡しだけ、実際に何をするのかはWindows 側のソフトしだい。これなら、レシーバは1個で、複数デバイスを処理出来ると思うんだ。


 Cherry ML4100 キーボードの制御基板を外して、マトリクスを乗っ取った。チャタリングが酷い以前に、同時押しできないのは駄目だな。キーの入れ替えとかも自由に出来ないし。

 TOSHIBA J-3100GT キーボード、こっちのほうがマシだな。配列的に使えないのが惜しい。

 この方式だと、ゲームとかじゃなく、リモートデスクトップでも、キー入力できないのか。やっぱり、32u4 を挟まないと駄目だな。RAW HID の代わりにSerialが使えるのは確認した。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/06/15

nRF5x 同士の通信

 しばらく試行錯誤したので、多少は nRF5x の扱いが分かってきた。やはり、Arduino IDE での開発は邪道気味なよう。それでも、出来ないわけでもない。

 仕様的に、BLE デバイスをつくるべきなんだろうけど、作りたいものが思いつかない。とりあえず、BLE じゃない、2つの nRF5x を使った通信を調べてみた。
参考リンク
 RadioHead nRF5x 同士で通信できるシンプルなライブラリ
 mysensors nRF24 へも接続できる! でも高機能すぎて使いづらい
 nRF24 の代わりも出来る、というかプログラムも出来るから、nRF24 + マイコンの置き換えだね。BLE のように余計な通信はしないから、省電力なのは間違いなし。

 例えば、無線のキーボードを作るとすると、↑のような構成で、受信側は、マイコン2つとか贅沢なことになる。BLEキーボードとするのなら、右側の送信部だけで完結する。残念ながら、Arduino でのBLEキーボードは、Windowsでは使えない。修正される気配も無い。というか、Windows の場合、Bluetooth 自体が、かなり怪しい。なので、レシーバを挟むのも有りかと。

 nRF52840 のドングルでプログラムできるなら、受信側もシンプルになるんだが、結局、僕のような素人にはライブラリがないと現実的に使えないわけで、んー、悩ましい。


 USB-HID のための、32u4 は、場合によっては、Digispark でも、Raspberry Pi Pico でもかまわないが、安定度という点では、32u4 がずば抜けている。半導体不足かなんか知らないが、マイコンの値段が倍ぐらいになっているので、データを渡す用途だけなら、安い USB-Serial と組み合わせてもいい気がする。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/06/02

ESP8266 + nRF24 で WOL


 ESP8266 の D1 mini もどきに、nRF24 モジュールつけたもの。最近使っているPCは、3台共、サーバっぽいのばかりで、USBデバイスで、電源復帰できない。毎回、本体の電源ボタンを押すのも面倒になってきたので、WOL(Wake On LAN)デバイスをでっち上げた。5Vの電源があれば、単独で動くので、部屋に転がしておけばいい。

 HTPC のリモコンから、2.4G 信号を受け取って、無線ルータ(WIFI)経由で、マジックパケットを送信する。ハード側が対応していれば、スリープどころか、電源オフからも起動できる。

 最初、電源スイッチの無線化をすればいいかと思ったが、それだと必要PC分だけ作業を繰り返さなくちゃいけないわけで、WOLなら、これ1台で済むんだわ。
参考リンク
 a7md0/WakeOnLan WOL ライブラリ
 dparson55/NRFLite nRF24L01+ ライブラリ


追記 2021-06-07
 接続したままにしてたら、やたら熱くなっていたので、常時接続は諦めて、その都度ルータに接続することに。10秒くらい待たないといけないが、頻繁に使うものでもないし。ただ、動いているのか分かりづらいので、ブザーを付けて確認音を鳴らすようにした。

 WOL だけじゃ芸がないので、電源が入っているときには、逆にシャットダウンするよう、Windows のサービスプログラムを追加した。サービスプログラムは、Delphi に雛形があるので簡単につくれる。

※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/05/07

シナ通販の話 #3

 めっきり送料が高くなったので、ほとんど使わなくなった Aliexpress。品物がまだ届いていないのに、「配達済み」のステータスに変わっていた。なんで?

 理由としては、追跡番号が間違っている(当然、届け先も変わってくる)わけだが、Aliexpress のページの中では、「配達済み」なので取り合ってもらえない。自分で、追跡情報を調べて、コレコレで違う所にいってますよ、とクレーム付けないといけない。しかし、配達情報が省略されている。



 お手上げかと、思っていたら、Universal Parcel Tracking - Global Package Trackingで、細かい情報が確認できた。やれやれ。

 Aliexpress の最大の問題は、売り手側の追跡番号の入力がでたらめでも通ってしまうこと。分かっててやってる悪質な業者がいる。そもそも、別の住所なのに、同じ追跡番号が付くわけがない。Aliexpress の中の注文だけでも、ダブりのチェックぐらい機械的に出来るだろう。


追記 2021-05-14
 ショップは認めなかったが、Ali の裁定で返金されることになった。別件でも、2月の注文分で、全く更新されない追跡情報のが、返金になった。こいつら、そもそも発送してないだろ。屑業者はどうしようもない。


追記 2021-06-20
 又、偽番号教えてきて配達済みになってるわ。なにやら言い訳して発送できない、とか連絡してきたくせに、しれっと期限ぎりぎりに嘘発送手続きして、もちろん、偽番号なので、違うところに配送される。恥知らずというか、人としてどうなのよ。


追記  2021-09-15
 6月に、偽番号を教えてきたやつは、さらに、別の偽番号を教えてきた。登録日付的にもありえない番号なので、紛争手続きをしたが、業者はだんまりなのになぜか却下。発送していないんだから届くわけが無い。それでも、Ali側で、フォローするらしく、4度ほど期限延長されたのち、ようやく裁定が覆った。どいつもこいつもクズすぎ。Ali の裁定係も酷い。

2021/05/06

Bluetooth LE の消費電流

 EBYTE の nRF51822 モジュールは、電波発信せずにループさせると、4mA程度で動いている。スリープらしきコードを埋め込むと、なるほど下がったが、それでも、1mA台で、これでは、ボタン電池で何ヶ月も持つなんてことはない。なんか細かいことをしないと、きちんと止まらないのかな。いかんせん、Arduino で使うのはそもそもイレギュラーなのか資料が少ない。

 接続した後は、ビビビ、と剣山みたいな通信が始まる。データを送っても極端に消費は増えないが、ビビビは切断まで続く。待ち時間は、徹底的に消費を抑えるのが、BLEデバイスなんだな。

EBYTE E73-2G4M04s1D nRF51822 SoC

 ちなみに、前に紹介したBLEモジュールで試してみると、なるほど、スリープ時には、かなり消費が少ない。
JDY-19 BLE 4.2 モジュール

 きちんとスリープが出来るコードが書けないと、話にならない。うーん、何とかなりそうにないな。


追記 2021-05-10

 プログラムを書き込んだ後、一度リセットしないと、デバッグモード?とかのままで、余計に電気が流れるらしい。電源にスイッチを挟んで、リセットの代わりにした。立ち上げ直すと、0mA付近になった。ま、テストだけなので、実際に動かすとどうかは分からないが。

 BLE が低消費電力と言われているのは、主に、未接続のアドバタイズ状態のことを言っているのであって、接続し余計な通信し続けるならば、必ずしも低消費とは言えないだろう。ボタン電池で、何ヶ月も動く!っていったところで、要は発信時間、つまり電気消費を、ひたすら少なくするって話。

 リアルタイム性が必要なデバイスは、接続した後、リンクが切れないよう最低限の通信を定期的に行うスリープを使い、割り込みで処理するのだろう。

 非リアルタイムデバイスの場合は、アドバタイズデータ自体に、データも埋め込めばいい。アドバタイズデータを受信するだけなら、接続しなくても済む。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/05/02

Lazarus のプログレスバーの不具合?対策

 プログレスバーが、MAX値まで設定されても、目盛りいっぱいまで描画されない不具合。

 1つ増加させるには、
ProgressBar1.position := ProgressBar1.position + 1;
ProgressBar1.StepIt;
では、ダメ。

 一度マイナス方向に設定すると正しく表示される。
ProgressBar1.StepBy(-1); // 1つ戻って
ProgressBar1.StepBy(2); // 2つ進む

 今まで分からなくて、別の部品で描画してた。長年の疑問がとけた。

2021/04/28

windows10 + Delphi + Bluetooth LE

 Bluetooth LE(Bluetooth Low Energy)は、Bluetooth バージョン 4.0 から追加になった低消費電力の通信モードで、それまでの、Bluetooth(クラシック)とは、全くの別物。最近、実験している無線デバイスは、この BLE を使ったもの。

 nRF51822 の実験デバイスが動いてるらしいのは、nRF Connect というソフトで確認できるが、実際に何か作った時には、自前で応答するソフトを作らないといけない。Delphi(RAD Studio 10.3)には、TBluetoothLE というコンポーネントがあるので、これを使えば、楽チンに出来上がるのかと思ったが、どうやら怪しい。

 ネットでさっくりと調べてみるに、BLEのプログラムというのは、iOS だったり、Android 向けであり、Windows用ではない。Delphi のページをみると、さも、Windows10以降なら、対応しているかのように見えるが、そう単純なものでもなさそう。


 以下、怪しい開発メモ、正しいかは保障しない。

1)デバイス取得
 BluetoothLE1.DiscoverDevices(2500); で検索開始して、onDiscoverLEDevice にて、目的のデバイスが見つかるまで、一つづつ確認する。

2)サービス取得
 先にWindows 上で、ペアリングしておく必要がある。BLE は、ペアリング不要と思っていたが、アドバタイズ(定期発信されるデータ)のみで完結しているデバイス(ブロードキャスト)は、その先の情報は必要ないからペアリング不要という意味であって、データをやり取りするなら、一度、ペアリング操作をしておかないといけないのだろう。

 デバイス側で仕様を変えた時は、一度ペアリングを削除して、再度ペアリングしておかないと駄目かも。追加したキャラクタリスティックが見つからず難儀した。

 って、Delphi が問題というより、BLE の仕組みが判っていない僕が悪いのかも。

 この間まで頑張ってた 2.4GHz の無線デバイスと違って、特別な受信デバイスが不要っていうのが一番のポイント。PC側が、bluetooth 対応してあれば、あとはソフトでいかようにもなる、はずなんだな。

2021/04/22

EBYTE E73-2G4M04s1D nRF51822 SoC


 Nordic の nRF51822 が乗った裸モジュール。1.27ミリピッチなので、2.54ミリのヘッダピンを互い違いに付けて、実験してみた。あー、これは異次元の難しさだわ。Lチカするのに、一日掛かりだ。Bluetooth以前の問題。
 ESP32 は、なんでも出来てすごいんだけど、根本的に燃費悪すぎて、バッテリー駆動には不向きだと思うんだ。なんで、Nordic チップの無線モジュールを使いたいわけ。でも、こちらは素人の手には負えない感じ。


追記 2021-04-23
 訳分からない Rust じゃなくて、Arduino IDE でも動いた!

 led_switch というサンプルプログラム。接続先の USBドングルから、LEDのオン・オフ切り替え、ボタン操作で、NOTIFY も飛んでる。電池2本で普通に動くのがいいね。



追記 2021-04-26
 Serial と、i2c の OLED(ssd1306)が動いた。大きいほうの OLED は駄目だった(謎)。肝心の BLE HIDが、コンパイルも書き込みも出来るが、Windows上で接続すると、ドライバエラーとか出て機能せず、ぐぬぬぬぬ。たぶん、Windows側の問題であって、Android とかでは普通に動くと思われる。枯れたデバイスだと思っていたが、開発者達は、Windows なんぞ使っていないんだろうなぁ。

※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/04/13

Real Arcade VF 改 #5

 前に改造したゲームキューブ用(といっても、Wii で使う)のアーケードスティック、久々に使おうとしたら動かなかった。どこか配線切れているんだろうけど、面倒になったので、この間見つけたライブラリを使ってArduino で組み替えてみた。ゲームキューブ用のコントローラの読み込みや、コントローラの代わりも出来る優れもののライブラリ。
参考リンク
 NicoHood / Nintendo Arduino 用 ゲームキューブ・ライブラリ
 裸のATmega8 を、外部クロック 16Mhz で動かす。電源は、ゲーム機側からの5V。データは、1ピンだけ、3.3Vらしいので、ロジックレベルコンバータを挟んだ。ボタン入力のピンも小細工せずに足りた。


 既にグチャグチャの配線を作り直すのは、新規に作るより大変。最初、動かなくてあせったが、クロック指定の Fuse の書き換えが出来ていなかった。
avrdude -p m8 -c usbtiny -D -u -U hfuse:w0xC9:m

 インジケータの2色LEDと、赤ボタン・オルタネイトスイッチを追加して、レバーでのアナログ入力(上下左右)に切り替えられるようにした。十字ボタンで入力できない場合に使う。

 前のゲームキューブの本物コントローラの基板を乗っ取るよりもスマート。使い道無く余っていた ATmega8 を有効利用できて良かった。ボタンが劣化しているので、そのうち、同時押しや、連射回路無しのシンプル版を、新たに作ることにしよう。

2021/04/12

rmx 電波式リモコン #12


 ATtiny・電池版の調子が良さそうだったので、より反応よくするため 8Mhz 版を作った。まだ、実験中だが、ひと月くらい電池が持てば十分だと思う。

 ひとまず、2.4GHz の無線リモコンとしては、これで一区切り。最終的には、実にシンプルな形となった。尤も、試行錯誤したうえでの結果であって、屍となった赤外線リモコンは、二十個近く。マイコンその他部品も、大分無駄にしてきたが、趣味として考えれば、それほど金がかかったわけでもないし、そのまま実用品なわけで。

 次は、ESP32 じゃない、Bluetooth デバイスをやろうと思う。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。

2021/02/23

wii VGA mod(Wii用VGAケーブルをつくる)


 ノーマルだと、コンポジット、S端子に、コンポーネント(D端子)接続だけの wii に、VGA出力させる改造の話。HDMI のアダプタを調べていたら見つけた。
 ゲーム用に、S端子入力の小さなモニタは確保してあるが、パソコンのモニタに接続できれば、動画観ながらとか、攻略サイト見ながらとか便利なはず。プロジェクタで大画面てのも出来る。wii 本体は大量に確保してあるので、駄目元で作業してみた。

 上記の参考ページは、wii の基板の一部を切り取ってポータブルwii を作るプロジェクトの一部らしい。基板のVersion が色々あって、僕が分解したのと、参考ページの写真の物とは少々違った。




 作業の肝は、未配線の VSyncと HSync を追加すること。後は、コンポーネント信号をソフト的に、RGB化して、640x480 のネイティブVGA信号を出力させるってことらしい。AVEチップへの2箇所の半田付けが、難易度高い。実物を見ると、これは無理wってなる。



 コンポジットで、BBLoaderをインストール後、VGAに切り替えて、PCモニタでチェック。とりあえず、表示された。「USBメモリ版・ゲームキューブ・VGA仕様」って感じ。ぶっちゃけ、単純に VGAに切り替えるだけのプログラムが欲しい。

 VGAコネクタを新設するより、D端子ケーブルを流用してコネクタを交換するほうがスマートかな。ポータブル化や、遅延とか気にしないなら、wii 専用のHDMIアダプタが安く売っているので、そちらの方が手軽だろう。

 ちなみに、ノーマルだと、コンポーネント(D端子)+プログレッシブ設定が最高画質。ブラウン管モニタなら、S端子で十分キレイだし、逆に大きいサイズの液晶は粗が目立つか、ボケるだけ。PC用のアナログモニタは、捨ててしまったのでテスト出来ない。


追記 2021-03-30



 D端子ケーブルのコネクタを付け替えた。D端子独自の信号を切って、代わりにVSyncと HSync に使う。本体にディスプレイ端子を追加するよりスマート。プロジェクターに、720x480 で映った。あれ、コンポジットの方が、ワイドじゃないけど、きれいな気が?

2021/02/22

作業PC入れ替え


 前に買ったExpressサーバの片方が使い物にならず、パーツで新しく組むのも面倒なんで、中古サーバを購入。リース落ちのが流れてきて割りと安い。メーカのじゃないから、汎用パーツで構成されているので、使いまわしも容易。

 4個ある交換式のドライブベイの一つをシステム・ドライブで使ってしまうのはもったいないので、1つをUSB変換にして空いたポートに、SSDを接続した。USB接続分は、ホットスワップ可能。

 マザボのビデオ出力じゃさすがにつらいので、安いグラボを新調した。ゲームやるわけでもないし、4Kモニタで普通に使える。

 4Kモニタは、Full HDが4個分で、Web閲覧とかは圧倒的に見やすい。31.5インチのにしたが、これより小さな27インチとかはスケールを変えるなりしないと見えない。

2021/01/31

rmx 電波式リモコン #11


 ここの所、リポバッテリーではなくて、ニッケル水素電池(エネループ等の普通サイズの充電池)で動かそうとあれこれ頑張っていた。で、これは、単4 x 2 の元のリモコンを壊さず埋め込んだ版。外見は、赤外線LEDが無くなって、インジケータの小穴を開けただけでノーマル同然。マイコンは、ATTiny84A を使った。

 いつも使っていた ATMega8A は、2.7V までしか動かないらしい(今頃、気づいたのかよ)。確かにデータシートでは、そうなっているが、動作保証しないだけで、クロックを落とせば、ATMega328 などのように、1.8V まで動くものだと勘違いしていた。

 ニッケル水素電池は満充電で、1.4V ぐらいなので、最初は、1.4 x 2=2.8V で動作するが、すぐに、2.7V を割ってしまうので動作不能に。高価なDCコンバータでも挟めばいいのかもしれないが、そんなの本末転倒というか、腹立たしいw。そもそも、ニッケル水素電池は、空になるまで使うのはよくない(高価なエネループが、大して使っていないのに使えなくなるのは、そのせいかと)。

 ATTiny84A は、データシートに、0~4MHz/1.8~5.5V とあるので、クロック 4Mhz で組んで、電池直結。うん、これで正解かも知れない。電圧が低いせいか、電波が弱いような気がしないでもないが、ニッケル水素電池は、1.2V あたりで粘るらしいし期待できるかも。


追記 2021-02-10
 リセットボタン追加して、起動時に電圧測定して表示できるようにした。


※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。