2017年7月23日日曜日

nRF52モジュール比較

nRF52モジュールを複数種入手しました。
ANTに対応できないものがあることが判明しています。



左から
ーRigado製
ーsparkfun製
ーebay large version
ーebay mini version
ーDynastream製

すべてプログラムの書き込み方法は一緒です。
VCC, GND, SWDCLK, SWDIOの4線をST-LinkかnRF52-DKにつなげば書き込めます。




ただし、RigadoとDynastreamのモジュールは、あらかじめfirmwareが書き込まれ、かつプログラムが読みだせないようプロテクトがかけられています。
これを、nRFgo Studioかコマンドラインで、erase allやRecoverしたり、mbedフォルダにfirmwareを上書きすることで、消去する必要があります。

ST-Linkでは、この消去を行う機能がないため、RigadoやDynastreamのモジュールを使う際は、誰かにプロテクトを解除してもらう必要があります。

ST-Linkをj-linkに変身させるファームもリリースされていますが、なぜかST Microのチップをターゲットとしてのみ使用可で、他のチップに使うことは禁止する、絶対禁止すると表示されます。
実際は、技術的にはnRF52をターゲットとして使用可能にもかかわらず「使用するなよ、絶対するなよ」と言われるとダチョウ倶楽部を思いだいし「絶対するな=すぐにやってよい」と解釈してしまいがちですが、やはりまずいと思います。

nRF52モジュールにnRF52-DKから書き込みを行う場合、以下のように配線します。

ポイントは、ピンヘッダのVTGにVDDをGND DctにGNDを接続することです。
これにより、書き込みチップが、外付けのnRF52モジュールに書き込みを行うよう設定変更され、オンボードのチップに書き込まれなくなります。

私は、ボードの真ん中にDIPスイッチを付け、書き込み先を外付けnRF52モジュールとするか、オンボードのチップとするか、選択できるようにしています。




nRF52モジュールがnRFgo Studioに認識されると、以下のように表示されます。

この例では、Region1にSoftdeviceが書き込まれていることがわかります。
Addressが0x1f000までがSoftdeviceなので、s132(BLE用)のSoftdeviceが書き込まれてるとわかります。
Softdeviceを書き換えるには、右欄のProgram Softdeviceのタブから任意のSoftdeviceファイル(ANTの場合はS212)を選択し、ProgramボタンをせばOKです。
S212のSoftdeviceはwww.thisisant.comからダウンロードできます。



つづいて、Softdevice上で動くアプリケーションをプログラムします。
Program Applicationタブから書き込みアプリの.hexファイルを選択し、Programボタンを押せばOKです。

話を戻しますと、RigadoとSparkfunのnRF52モジュールは、ANT対応ではありません。

どうやら32khzの発振子の精度が悪いようで、BLEはなんとかOKですが、シビアなANTには対応できてませんでした。

Sparkfunのものは、32khzの発振子のパターンをカットできます。
パターンカットのうえ、秋月で買った水晶発振子に付け替えたところANTもOKとなりました。





11 件のコメント:

  1. rigadoのmoduleちっこいですねぇ。ANT+ うまく動かないんですかorz
    安心のdynastreamのヤツだとまだちょっとサイズ大きくて、有線SRMに内蔵できないんですよねー。ぐぬぬ…。
    ゆーてまだちょっとまだ触れてません(スミマセン

    返信削除
  2. SRM内蔵、面白そうですね。
    Rigadoはダブルチェックしましたが、s212を書き込んでANT送信を試みるも何も受信できませんでした。
    Rigadoと同じサイズのものがDynastreamからUS向けには出荷されています(D52MD2M8IA)。
    US向けのDigikey.comではUS居住者は購入可能で、しばらくすると日本にも出荷してくると思います。

    返信削除
  3. そーなんすよね。
    『D52Mよいやん!』
    ってカートに入れては買えない繰り返して発狂してましたw
    ただANT+ モジュール内蔵は目指すは良いんですが、こんどは電池スペースがなくなります(本末転倒)
    あとサンプルプログラムにCTF(SRM用/page20)が用意されてなさげなのが気になりますね。

    まぁその前に書き込みやってモノこさえろって話ですが。

    返信削除
  4. D52M、ご存じでしたか。失礼いたしました。
    CTFのプロファイルは初めて知りました。
    製作された有線SRM-ANTのコンバータは、Basic PowerOnlyのプロファイルを使われてると誤認しておりましたが、ご自身でCTFを実装されていたのですね。
    すごいです。
    悩みの大きさも理解できた気がします。

    返信削除
  5. DgradeDIY様 信州MAKERS管理人です。MFTブースへお出でいただき誠に有り難うございました。直接お話しをお聴きして、想像通り、能力とロジックの優れたお方だと理解いたしました。更に、nRF2モジュールを使ったクランクのパワーメーター開発のコラボの可能性のお話しも有り難くいただきました。BLE,ANT+など訳が判らないで困っていたところでした。これから、貴ブログで勉強させていただいて、初歩的な質問を何度もさせていただきます。お忙しいところ申し訳ございませんが、宜しくお願いいたします。
    信州MAKERS 

    返信削除
    返信
    1. http://maru-yo.net/shinshu_makers/
      の管理人様

      こちらこそ昨日は、ありがとうございました。

      受賞された実績のある、ご自身の発明に基づく特許を拝見しました。

      この発明は、革新的技術で、現在でも世界中の人々がその恩恵にあずかっています。

      技術で世の中にない革新的なものを提供する、という、
      まさに、日本のすべての技術者のお手本となる事例だと思いました。

      私ごときが、業界の大先輩の方のお役に立てるか、心配ではございますが、ご不明な点があれば、なんなりとお申し付けください。

      nRF52は、プログラムを書き込むこと自体は簡単です。
      ただ、Keil等でプログラムを書く際に使うSDKがかなり不思議な挙動をするため、Arduinoのようには使いこなせず、私も困っていたりします。

      今後とも、よろしくお願いいたします。

      削除
  6. 信州MAKERS様

    ANT関連のご質問ありがとうございました。
    WEBで公開すると炎上しそうな内容が含まれるため、信州MAKERS様のWEBサイトにコメントさせていただきました。

    ANT+のソースコードは、Arduino用とnRF52用はいくつか保有しておりますので、必要に応じてお送りいたします。何なりとお申し付けください。

    返信削除
  7. ご無沙汰です。
    こんな感じで昔取り掛かったヤツ(有線SRM☞ANT+コンバ-タ)を動くところまでもってきました。あと一息(のはず

    ところで質問です。nRF52の開発にKEILを使ってたんですが、無料verではsoftdeviceが必要なアプリは容量オーバーになってしまいます。実質開発不可💢

    しかたないのでeclipseで環境構築しようとしてるんですが、なにか参考になるサイトor資料ご存知ないですか?
    STM32の環境ならWEB上にもいくつか前例あったんですが、nRF52で何をどうセッティングするのかよく分からず…
    (とりあえずgccとsuggerは噛ませたつもり)

    とりとめなくてスミマセン

    返信削除
  8. 無事に開発を進められているようで、何よりです。

    私は、Eclipseを使いこなせないため、GCC+SDKの環境をWindows上で構築しております。
    ファイルサイズが大きくなるプロジェクトでは、Makefileのあるディレクトリに移動し、コマンドラインから“make”とタイプして、バイナリを生成しております。
    40年前と変わらないコンパイル環境です。
    お役に立てず、すみません。

    GCC+SDKに必要なツールは、↓こちらで解説されております。
    https://devzone.nordicsemi.com/tutorials/7/
    ただ、SDKのPathの設定をあれこれ変更しないと何一つコンパイルできませんでした。
    本当にこのSDKは・・・


    Softdeviceを使ってもほとんどKeilの32Kb制限には引っかからないと思っております。

    s332を使う以下のような大きなプロジェクトでは、確か32Kbを超えているとlinkerがエラーを吐きます。

    ...\nRF5_SDK_13.1.0_7c\examples\multiprotocol\ble_ant_app_hrm\pca10040\ser_s332_uart

    The code size of this image (42940 bytes) exceeds the maximum allowed for this version of the linker.
    Finished: 0 information, 0 warning, 0 error and 1 fatal error messages.

    その他のSoftdeviceプロジェクトでは、Softdevice関連のpre-compileされた部分はカウント対象外とのことで、ANTのPowerOnlyProfileでデータを送信する程度では、.HEXファイル自体は32Kbを超えるものの、カウント対象のバイナリは20Kb程度と小さいです。

    従って、私のプロジェクトでは、ほとんどが、Keilの32Kb制限にひっかからない(Linkerがエラーを吐かない)で、バイナリを作成できております。

    返信削除
  9. 初めまして。
    シミズと申します。
    信州MAKERSさんからこのブログを教えて頂きました。

    質問です。
    開発環境の導入が分かる資料などありませんでしょうか。

    次作自転車デバイス作成のためにANT+・BLEによる無線技術を習得しようとD52 STATER KITを購入したのですがKEILのコンパイルで躓きました。

    以下のプロジェクトをビルドしたのですが、
    nRF5_SDK_15.0.0_a53641a\examples\ant\ant_io_demo\ant_io_tx\d52_starterkit\s212\arm4\ant_io_tx_d52_starterkit_s212.uvproj

    "nrf_error.h": No such file or directory
    "core_cm4.h": No such file or directory
    というエラーが出てしまい、ファイルを探しても見つかりませんでした。

    そもそものインストールファイルが足りないのか、使おうとしているSDKが見当違いなのか…
    自分の環境が正しい状態にあるのかよく分かりません。

    何か開発環境導入の資料がありましたら教えて頂きたいです。

    以上、よろしくお願い致します。

    返信削除
  10. SDK15をダウンロードし、最新のKeilでご指摘のANT_IO_DEMOのサンプルをコンパイル完了しました。

    KeilやSDKは、D52 Starter Kitのマニュアル(ANT SoC Module Starter Kit User Manual, Rev 1.0)に従い、インストールしました(私は、D52 starter Kitは持っていませんが)。
    マニュアルの記載に従い、一項目づつ確実にインストールすればOKです。

    ご指摘のエラー表示から推測すると、S212 SoftDeviceをSDKに入れる作業が完了してないと思われます。
    マニュアルの2.1 Installing the Software Toolsの項目にしたがってインストールが完了されてますでしょうか。

    SDKの環境構築後は、以下のサイトで細かい使い方情報を私は入手してました。
    https://devzone.nordicsemi.com/

    ただいづれにしても、このSDKはクセがあり、全然思うように動きませんでした。(v12当時)
    Version15になって、少しは、良くなってるとよいのですが。

    すぐにSDKを使いこなせればよいのですが、ダメであれば、メイン機能はArduino(AVR)をベースで実装し、無線通信機能のみ渋々このSDKのサンプルをちょこっと修正しながら実装する、というのが効率的かと個人的に思いました。
    日本を背負って立つ現役エンジニアの方が、ロードバイクのトレーニングをしながら開発されるのであれば、相当に時間的な制約が大きいと思いますので。

    返信削除