2018年5月3日木曜日

RedBear BLE nano v2 始めました。問題発生と解決

/*
問題というかクセというか、知らないと出来ないことがありました。
一つは、書き込み用のボード(DAPLink)のファームウェアの更新について。もう一つはスケッチのアップロードについて。
解決策は下の方にあります。前半は個人的にやりたいこととその思考過程なので、RedBear BLE nano v2 のファームウェアを正しくアップデートする方法だけご覧になりたい方はくるっとスクロールして下さい。
*/

~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
いやはや。
時の経つのは早いもので、前回の更新から2年近く経っています。
本当に恐ろしい。
でも、まあ、生存は、していました。会社と自宅の往復+αですが、このブログから引っ越した趣味の方ではそれなりに幸せです。

さて、やりたいことが出来ました。
ロボットの眼球を動かしたい。
上下左右の動きと、物を見る距離に応じて寄り目にしたりしたいので、3軸(yaw軸×2、pitch軸×1)欲しい。ちなみにヒトの眼球ではroll軸まで少しだけど動きます。ちょっと首をかしげたりしてもブレずに見えるのはこのお陰です。上下の動きを作る筋肉はもちろん左右の目で独立しているので、もしかしたら、訓練すれば右目は上、左目は下とか可能なんでしょうか。それともそんな動きは全く不要なので支配している神経やコントロールしている脳の段階で統合されているのでしょうか。

難しく小さなモーターとポテンショメーターを使って自前のサーボモーター的な物を作ってしまうところからやりたい気持ちを抑えて、ちっこいサーボモーターを3台を使うつもりで「RCサーボ ASV-15」を3台購入済み。

スマホのアプリで目の角度を設定したい。←Bluetooth or BLEを使おう。

やることがサーボモーター3台のコントロールだけで人工知能的な要素は皆無。なのでマイクロコントローラに計算パワーは不要かと←Arduinoでいいかな。ラズパイでももっと小さいボードがあればいいんですけど、まぁ今回はArduinoで。

と、いうわけで、「スマホで動かすArduino-AndroidとBLEで電子工作-」という本を購入済み。

で、「RedBearLab BLE Nanoキット V2」を注文、到着済み。

構造部分については、なんと「Phrozen Make: LCD 3D Printer」を発注済み、到着するのを待っている状態。

で、RedBear BLE nano v2 を開封、GitHubのredbear/nRF5xページからnRF52832に行き、そのREADME.mdにあるGetting Startedの記載に従ってやってみる。

やれた気がするので、Arduino IDEのメニューから、ファイル→スケッチ例→BLE_Examples→SimpleChat をnano v2 に書き込んでみる。
Arduino IDEのメニューから、ツール→シリアルモニタ を開く。

android で、BLE Controller という赤地に白抜きのクマの顔のようなアイコンのアプリをダウンロードし、開く。一番上に Simple Chat の文字があるのでそのまま Scan ボタンをタップする。
     ・
     ・
     ・
   No BLE device was found.
     ・
     ・
     ・
!?(・_・;?

いやぁ、焦りました。あちこちイジって諦めて一晩塩漬けにして翌日一万歩歩いてからググルの神にお伺い奉ると、解決策が見えてきました。
まず、この状態になってからは、簡単なLチカさえできなくなる。つまり、Arduino IDE は書き込んだというけれど、書けてない可能性がある。または、書けているけどブートしていないという状態になって可能性。そもそもファームウェアが正しくヴァージョンアップできていないというのもあり得る。
まずはファームウェアの更新をやる。そしたら残る可能性は、前のスケッチが残っているせいか、ブートローダーが壊れているか、の一つまたは両方ということになると考えられました。

調べて実験した結果、次の手順で解決しました。
  1. DAPLink_V1.0_Interface_nRF52.bin のようなbinファイル(ファームウェア)は、GitHubからウェブブラウザでダウンロードすると壊れるというか正常に働かないファイル(?)が手に入ることがある(?)らしく、MAINTENANCE モードで MAINTENANCE ドライブにコピーしたあとで DAPLink ドライブにFAIL.TXTがあるときは、これを疑ってみる。hexファイルも同様に壊れていることがあるらしい。
    解決策としては、
    1. この記事でaustin944さんが言っていることを解読すると、GitHubを丸ごとダウンロードすると良いみたいだ。なので、あちこち調べて、GitHubを「フォーク」してからそれをzipでダウンロードし、その中からbinファイルを発見した。ブラウザからダウンロードしたものとファイルサイズが違うので、何かが違っていたのでしょう。
    2. DAPLinkボードの裏に白い文字で書いてあるヴァージョンと一致する正しいファームウェアbinファイルをMAINTENANCE ドライブにコピーして、ファームウェアの更新は完了。
  2. 新しいスケッチを書き込む前に、今入っているものを削除して、さらにブートローダーを書き直す必要があるようだ。スケッチをアップロードする度に以下の手順を繰り返す必要がある。
    1. 1つ目でダウンロードしたファイルの中に nRF52832/test/nRF52_EraseChip.hex というのがあるので、これをDAPLink ドライブにコピーする。
    2. 一旦DAPLink ドライブが消えたあとで再度出現したら、arduino IDE の「ツール」→「ブートローダーを書き込む」を行い、落ち着いて完了するまで待つ。
    3. ここでやっと新しいスケッチを書き込む準備ができたので、書き込む。

以上、これでやっと先に進める。。。