😸

リモートID(日本版ドローンID)をnrf52840(arduino)で作れるかな検討編

2022/09/17に公開4

https://qiita.com/hsgucci/items/8a79745c6af41c3e0a0d
のクローンというか別実装というかをやっていこうと思います。

使うのは MDBT50Q でarduinoでできたらいいな。

環境セットアップは下記記事で
https://qiita.com/kleus_balut/items/882a0754e6db374df458
AdafruitのAPIになってしまうが致し方なし。

BLEのサンプルが充実していた。
https://github.com/adafruit/Adafruit_nRF52_Arduino/tree/master/libraries/Bluefruit52Lib/examples/Peripheral

日本版の仕様書は下記(以下RID仕様書と略す)
https://www.mlit.go.jp/koku/content/001444589.pdf
一部でなんでこんな仕様にと騒がれていたが、友人が多くない私でも「マンションの外でドローンがこっち向いてた」と女性から相談されることがあったので、警察さんは切実だろう。

私は怠惰なのでいるところだけやりたい。
アドバタイズパケットに乗せるメッセージパック周りは海外で誰か作るだろうから
日本オリジナルなところから手を付ける。

C++の実装は下記にある。日本版と並びが違うのでそのままは無理そうだけどメッセージパックだけはもってこれるだろうか。
https://github.com/sxjack/uav_electronic_ids/tree/main/id_open
RID仕様書の通りだとアドバタイズパケットに必須なのは下記の4つ

Basic Messageが2つあるのとAuthentication MessageのAuth Typeが3と指定があり、互換性のある実装あるか不明
RID仕様書の原文は下記

RID仕様書に定義されている必要なGATT周りの一覧はこれ…。

valueが交差する表は中々しびれますけど、まぁ必要なことは、ある程度読み取れるので深くは突っ込まない。

ざっとまとめると
Service は 一つで UUID f9ed6165-faa8-4f2d-8b82-dc67d3444b0f のサービスの中に下記の表のキャラクタリスティックをもっていること。

Description UUID Properties Permission
RID Auth aacf388f-0e69-4802-8067-3508b1b50c3a Write Encryption
Write
RID Command 2d67083e-5291-4dfa-a357-8ae4317413f5 Write Encryption
Write
RID Response d98c42d8-3013-462e-8d35-2b5b61eea94d NOTIFY Encryption
Read/Write

大きく分けて作業は

  • bluefruitで拡張アドバタイズが出せるか
  • bluefruitでLong rangeの設定できるか
  • どれか実機で実装詳細の確認
  • アドバタイズに乗せるメッセージパックのうち日本オリジナルのやつの実装
  • GATのコマンドとレスポンスの実装

GATTの雛形までは作っておいたが続きをいつやるかなぁ…。
https://github.com/bols-blue/DroneIDJP

Discussion