hiro99ma blog

何か技術的なこと

BLE基礎 (12)

2024/08/23

Lesson 4

Exercise 2

Exercise 1 では LBS に Button の Read、LED の Write を付けた。
今回は Notify と Indicate を付けるようだ。 LBS は Button の Indicate だけなのだが、別の Characteristic “MYSENSOR” を追加してダミーデータを定期的に notify するところまでこの Exercise に入っている。

Exercise 3

LBS をサンプルにするのは前回までで、これは NUS(Nordic UART Service)を使う。 USBのバルク転送みたいなもので、適当にデータの送受信がをするだけの service である。 BLEなのでそこまで速度は出せないだろうが、115kbps みたいな通常の UART よりも速いだろう。

RX の方が Write/Write without Response で、TX の方が Notify になっている。
普通の UART だとお互いの RX と TX をクロスして接続するのだが、ここは BLE だ。

image

このサンプルは USB を使うようになっている。 また UART0 は Nordic DK では SEGGER MCUを介して USB-CDC につながっているらしい。 ログも USB-CDC で出力しているのだがどうなるんだ? いや、そもそも UART0 とつながっていないからいいのか。 そもそも、NordicDK からは UART になっているならアプリで USB を使うようにする必要はないのでは? いろいろわからんが、SEGGER を接続すると USBシリアルポートも増える理由は分かった。

UART

その代わり、評価ボードnRF5340 MDBT53-1Mモジュールピッチ変換基板には LED とボタン以外接続していないので、そちらの準備が必要か。 P0.13を TxD、P0.15を RxD として使うことにした。 ブレッドボードの都合である。

image

USBシリアル変換は確か秋月通商で購入したものだ。 5Vピンがあったので入力かと思ってしまったが、USBケーブルを接続するからその 5Vから電源を取れるようになっていた。 MDBT53ボードにも USB接続をしているので不要だとは思うが GND はつないでおく。

これに USBシリアルの接続だけするとなぜか MDBT53ボードが動き出す。。。 どこから電源取ってるの?
抜き差ししてみたが、USBシリアルの TxD と MDBT53ボードの P0.15 だった。 RxD は 2.5Vくらい、TxD は 3.2V くらいで、RxD の方を P0.15とつないでも動作しなかったし、TxD の方を P0.13とつなぐと動作した。 なので単に電圧だけなんだろうが、それだとアクティブHIGH のピンだと電源が入ってしまうよなあ。

Devicetree Visual Editor で見てみたが、特にそれらがどうということもなさそうだ。

image

信号の IN と OUT を間違えたとかならそこまで心配しないけど、電源関係はちょっとねぇ。 回路図を見る限りP0.15などは Nordic のピンと直結しているだけだから大丈夫だとは思うが。

本編

UART のことはいったん忘れて Exercise に戻る。

NUS は ncs に CONFIG_BT_NUS=y を追加することで使えるようだ。 そういえば LBS はそういう設定無しで使えるのだが、この違いは何だろう? と思ったら、LBS も CONFIG_BT_LBS があるのだね。記憶から抜けていた。。。

zephyr_sources_ifdef(CONFIG_BT_NUS nus.c)
zephyr_sources_ifdef(CONFIG_BT_NUS_CLIENT nus_client.c)
zephyr_sources_ifdef(CONFIG_BT_LBS lbs.c)

それにしても prj.conf に最初から書いてある設定が多い。 Exercise では CONFIG_BT_NUS しか追加しないが、CONFIG_BT_NUS_AUTHENCONFIG_BT_NUS_SECURITY_ENABLED など NUS関係と思われる設定が既にある。 CONFIG_FLASHとかCONFIG_FLASH_PAGE_LAYOUTとか、急になんで出てくるかね。

ビルドは通ったのだが起動しない。。。

今日は疲れたので後日!

< Top page