blog.kur.jpスマートフォン用の表示で見るblog.kur.jpバイオリンと山、自転車をこよなく愛するkurのチラシの裏。技術的なことを書いたりするかも知れません。Energyを使う事になり、そのプロトタイピングというか特性を把握する事を兼ねて諸々触ってみたのでメモ。国内で流通している(つまり技適の問題がクリアされている)BLEモジュールはいくつかあるのだけれど秋月電子等で入手容易なもののひとつがmicrochip社製のRN4020を実装した物である。SemiconductorのRF51822などに代表されるnRF5Xシリーズもあるが、とりあえず今回はRN4020を使ってみることに。Arduinoで検索すると、やってみたブログが多く出てくるので、それらを参考にすれば良いだろうと思っていたのだけれど、何故かうまくいかない。RN4020を制御する事にする。シリアル接続で直接制御するとは言え、手元にUSBシリアル変換器のような便利なものは無いので、Arduinoに空のスケッチ(つまりsetupとloopのみ)を書き込み、0ピンと1ピンをRN4020に接続する。Macでターミナルを立ち上げて下記コマンドでRN4020に接続。115200このまま接続しても良いのだけれどEchoがあったほうがわかりやすいので、+を入力してエンターすることでEchoを有効にできる。+その後、とりあえず工場出荷時の状態にリセットをかけておく。SF,1を送信するとAOKが返ってくる。初期化これで準備がOK。BLEは仕様として、バッテリ情報や心拍数、体温計、サイクリングケイデンス等、いくつかの典型的なサービスが定義されているのだけれど今回は独自サービスを定義したいので、下記のようなコマンドで独自サービスかつ子機(ペリフェラル)として動作するように設定する。再起動なお、上記で設定した内容は下記コマンドで確認出来る。LSここで設定した内容通りに設定が出来ているかはスマホやPCからBLEで接続してみるのが早い。私はとりあえずAndroidのB-BLEを使用したが、iPhone用でもAndroidでもアプリストアを見るといくつかの種類のアプリがあるので適当なものを使用すると良いと思う。ちなみに上記設定したキャラクタリスティックに値を書き込むには下記のようにしてやる。SHW,<書込み対象のハンドル>,<任意のデータ>書込み対象のハンドルはLSで取得出来る。ここまで確認出来たのでArduinoから同様にRN4020でコマンドを発行してやれば良い。Serialを使用しているのだけれど、このボーレートが高すぎたのがうまくいかない原因では?ということ。Unoは9600bpsぐらいが無難です。言うことで、RN4020を初期化及びボーレートを9600bpsに落とす部分などは上記のように直接シリアル接続で行い、その後、ArduinoのSoftwareSerialで制御する事にした。すると、Arduino側のコードは大変シンプルになる。参考までに極限までシンプルにしたサンプルコードはこんな感じ。通信自体はこれで出来るので、エラー処理をどうするかとか、そもそもアプリケーション的なコードは追加しなければならないのだけれど。Design(CIID)に留学。DESIGNを立ち上げ大企業やスタートアップにて新規事業、製品。サービス等の創出に従事。このブログでは主にテクノロジーに関する諸々について書いています。kur.jp)までお気軽にどうぞ。Unoで使う月別アーカイブはてなブログをはじめよう!mikio-kさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。