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/28
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本で普通に動くのがいいね。
参考リンク
Nordic Semiconductor nRF51822
Arduino Core for Nordic Semiconductor nRF5 based boards
arduino-BLEPeripheral
Nordic Semiconductor nRF51822
Arduino Core for Nordic Semiconductor nRF5 based boards
arduino-BLEPeripheral
追記 2021-04-26
Serial と、i2c の OLED(ssd1306)が動いた。大きいほうの OLED は駄目だった(謎)。肝心の BLE HIDが、コンパイルも書き込みも出来るが、Windows上で接続すると、ドライバエラーとか出て機能せず、ぐぬぬぬぬ。たぶん、Windows側の問題であって、Android とかでは普通に動くと思われる。枯れたデバイスだと思っていたが、開発者達は、Windows なんぞ使っていないんだろうなぁ。※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。
2021/04/13
Real Arcade VF 改 #5
前に改造したゲームキューブ用(といっても、Wii で使う)のアーケードスティック、久々に使おうとしたら動かなかった。どこか配線切れているんだろうけど、面倒になったので、この間見つけたライブラリを使ってArduino で組み替えてみた。ゲームキューブ用のコントローラの読み込みや、コントローラの代わりも出来る優れもののライブラリ。
裸のATmega8 を、外部クロック 16Mhz で動かす。電源は、ゲーム機側からの5V。データは、1ピンだけ、3.3Vらしいので、ロジックレベルコンバータを挟んだ。ボタン入力のピンも小細工せずに足りた。
既にグチャグチャの配線を作り直すのは、新規に作るより大変。最初、動かなくてあせったが、クロック指定の Fuse の書き換えが出来ていなかった。
インジケータの2色LEDと、赤ボタン・オルタネイトスイッチを追加して、レバーでのアナログ入力(上下左右)に切り替えられるようにした。十字ボタンで入力できない場合に使う。
前のゲームキューブの本物コントローラの基板を乗っ取るよりもスマート。使い道無く余っていた ATmega8 を有効利用できて良かった。ボタンが劣化しているので、そのうち、同時押しや、連射回路無しのシンプル版を、新たに作ることにしよう。
裸の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 デバイスをやろうと思う。
※ 技適マーク無しの無線デバイスの実験は、日本国外で行いましょう。
登録:
投稿 (Atom)