[[
hardware:bl600breakout
]]
Physicaloid Wiki
トレース:
文書の表示
最近の変更
サイトマップ
ログイン
メディアファイル
====== BL600 Breakout Board ====== BL600単体のモジュールではそのままピンアウトができないのでBLE開発をしやすくするためにBreakoutボードを作りました。 このページではBL600のハードとソフト(Android/BL600ファーム)について解説していきます。 {{:hardware:bl600front.jpg?direct&300 |}}{{:hardware:bl600back.jpg?direct&300|}} ===== BL600 Brakout Board特徴 ===== * 出力ピン:**アナログ入力 4ch、I2C、SPI、UART、GPIO** * **仮想シリアル通信**をサポート、BLE経由で任意の文字列を通信可 * **ファーム開発には3.3V USB-シリアルモジュールがあればおk**(J-Link Lite不要)\\ ※ただしJ-Link Liteがない場合ベースとなるファームのアップデート不可 * 開発ボード(16,000円程度)なしでも開発環境が整うのでリーズナブル * 公式からダウンロードできるsmartBASIC開発環境で開発可 * githubでsmartBASICサンプルコード公開 https://github.com/ksksue/BL600Breakout * Androidソースコードあり(Bluetooth SIGからダウンロード) * 外部リセットボタンを付けれるようリセットをプルアップしピンアウト * 外部電源スイッチを付けれるよう電池(BAT)と電源(VCC)を分離しピンアウト * J-Link Lite用ピンアウト ===== 使用時の注意点 ===== * 電圧保護などは弱いらしく、5V系のシリアルなどをつなぐと即アウト(経験済)。接続する機器の電圧は要チェック。 * 使用時にはVCCとBATをショートさせることをお忘れなく。 ===== 回路図 ===== {{:hardware:bl600bbrev1.0schm.png?direct&1000|}} ===== ピン ===== {{:hardware:bbbpin.png?direct|}} ^silk^pin^description^ |VCC|Power|3.0-3.3V ※BATとショートさせなければ電源が入らない| |BAT|Battery|CR2032 3.0V| |1|sio1/AIN|IOもしくはアナログ入力選択可| |2|sio2/AIN|IOもしくはアナログ入力選択可| |3|sio3/AIN|IOもしくはアナログ入力選択可| |4|sio4/AIN|IOもしくはアナログ入力選択可| |RST|nReset|リセットさせる場合はGNDへショート| |8|sio8/I2C SDA|IOもしくはI2CのSDA選択可、I2Cとして使用する場合は要プルアップ抵抗| |9|sio9/I2C SCL|IOもしくはI2CのSCL選択可、I2Cとして使用する場合は要プルアップ抵抗| |10|sio10/SPI MOSI|IOもしくはSPIのMOSI| |11|sio11/SPI MISO|IOもしくはSPIのMISO| |12|sio12/SPI CLK|IOもしくはSPIのCLK| |TX|sio21/TX|IOもしくはUART TX| |RX|sio22/RX|IOもしくはUART RX| |RTS|sio23/RTS|IOもしくはUART RTS| |CTS|sio24/CTS|IOもしくはUART CTS| |AR|sio28/nAutoRun|IOもしくはnAutoRun。AutoRunをオンさせる場合はGNDへショート。AutoRunオン時は電源投入後$autorun$という名前のファームが自動的に実行される。| |GND|Ground| | より詳細な仕様は公式資料 BL600 - Hardware Integration Guide を参照のこと。 ===== クイックスタート - Androidアプリ ===== このクイックスタートではBL600の仮想シリアルを使ってBL600 Breakout Boardのアナログ/デジタルピン情報をAndroidに表示させます。 表示させるAndroidアプリにはBluetooth SIGが提供しているBLEDemoを使います。 前提として * BLEに対応しているAndroid端末必須 * Android端末にAndroid 4.3(API 18)以上が搭載されている といったことがあるので、BLE対応Androidを持っていない人は購入を検討してください。 ちなみにNexus 4,5,7(2013) などが対応しているようです。 ==== AndroidのBLEDemoソースコードをダウンロード ==== Bluetooth SIGがApplication Acceleratorという名前でAndroidアプリのソースコードを公開しています。 https://developer.bluetooth.org/Pages/Bluetooth-Smart-Developers.aspx submitをクリックするとe-mailが送られてくるので、送られてきたメールの here をクリックするとダウンロードできます。 ※「あれ?表示が変わらないな」と思って何回もやるとe-mailが大量に送られてきます(経験済) AndroidのBLEDemoのプロジェクトファイルがあるのでeclipseでimportします。(.apk単体では無いようです) そのままRunさせると以下の画面になります。この画面ではBLE未検出の状態です。 {{:hardware:bledemo.png?direct&300|}} ==== ピンの状態を取得する ==== BL600 Breakout BoardにはあらかじめIOの値を表示させるファームを仕込んでいます。 BL600 Breakout Boardの * **GNDピンとAR(nAutoRun)ピンがショートされている** * **VCCピンとBATピンがショートされている** ことを確認してください。 この状態でボタン電池を入れます。 するとBLEが検出されます。 {{:hardware:bledemoscan.png?direct&300|}} BBB_IOCHECをタップすると下の画面になります。 Unknown Serviceをタップします。ちなみにUnknownになっているのはAndroidのソースコードにUUIDが登録されていないため。 {{:hardware:bledemoselect.png?direct&300|}} 次に出てきた画面の上側のUnknown Characteristicをタップします。 NortificationをONにします。 するとBL600上のアナログ入力ピン(1,2,3,4)のアナログ値と デジタルピン(8,9,10,11,12,AR)の値が交互に表示されます。 アナログ値が表示されたところ {{:hardware:bledemoain.png?direct&300|}}\\ ADCの精度は10bitです 1ピンとVCCをショートさせると 1023,xxx,xxx,xxx, 4ピンとVCCをショートさせると xxx,xxx,xxx,1023, になります。 デジタル値が表示されたところ {{:hardware:bledemodin.png?direct&300|}} 8ピンとGNDをショートさせると 0,1,1,1,1,1, 10ピンとGNDをショートさせると 1,1,0,1,1,0, ARピンとGNDをショートさせると 1,1,1,1,1,0, になります。 これら文字列の送信はBL600の仮想シリアル通信という仕組みを使っています。 BLEにはClassic BluetoothにあったSPP(シリアル通信プロファイル)がありませんが BL600は仮想シリアル通信をサポートしています。 BL600の仮想シリアルを実装しているsmartBASICコードはgithubに上げています。 serialio.serial.sb : https://github.com/ksksue/BL600Breakout/blob/master/serialio.serial.sb \\ smartBASICコード開発を進めるには クイックスタート - ファームウェアプログラミング を読み進めてください。 ===== Android開発のノウハウ ===== ==== 挙動がおかしくなったらBLEDemoを終了、BluetoothをOff ==== どうやらBLEDemoはプロファイル情報をキャッシュしているらしく BLEのファーム開発をしはじめるとそのキャッシュが邪魔になる場合があります。 つまりBLEモジュール側でプロファイルを変更してもすぐにBLEDemoに反映されず、しかも挙動もおかしくなります。 そういった場合は、BLEDemoを終了し、TaskKillerでkill、BluetoothをOff→On、そして再度BLEDemo起動する必要があります。 ===== クイックスタート - ファームウェアプログラミング ===== ファームウェア開発にはsmartBASICと呼ばれる言語を使います。言語仕様はまんまBASICです。 例えばHelloWorldはこんな感じです。 <code>dim n for n = 1 to 5 print "Hello world\n" next </code> smartBASICで書いたソースをUwTerminalというツールでコンパイル&アップロードします。 UwTerminalはWinツールです。一応wineを使ってUbuntuでも動作確認しています。 以下、開発環境の構築手順と簡単な開発手順を書いていきます。 {{:hardware:uwterminal.png?direct|}} ==== 開発環境構築 ==== UwTerminalとサンプルコードが含まれている BL600 Series - Firmware Files をダウンロードします。 ダウンロードは http://www.lairdtech.com/Products/Embedded-Wireless-Solutions/Bluetooth-Radio-Modules/BL600-Series/ \\ ここから、Documentation タブから BL600 Series - Firmware Files をクリックします。 ただし、ダウンロードするにはユーザ登録が必要で、ユーザ登録はLiard社に直接メールをする必要があります。 以下のような簡単なメールでOKです。送るとナタリーさんからLogin IDとパスワードが返信されてきました。 <box 100% round> Hi \\ BL600 is a good BLE module. I want to login to download the BL600 Series - Firmware Files. \\ Best Regards. </box> ファームウェア開発にはログイン無しでダウンロードできるUwTerminalと自分の書いたコードがあれば実質開発はできるのですが サンプルコード内に使い回しの効くライブラリが多数あるのでログイン登録してダウンロードすることをオススメします。 ==== ファームダウンロードまでの流れ ==== 準備 * BL600 Breakout Board * CR2032 ボタン電池を入れる * VCCとBATをショート * 3.3VのUSBシリアルモジュール(**5V系使うとIC死ぬので注意**) * USBシリアルモジュールとBL600 Breakout Boardをつなぐ * USBシリアル TX <=> RX BL600 Breakout Board * USBシリアル RX <=> TX BL600 Breakout Board * USBシリアル GND <=> GND BL600 Breakout Board {{:hardware:bl600serial.jpg?direct&300|}} これで準備はおk。この状態で - UwTerminalを起動 - AboutタブでAcceptをクリック - ConfigタブでCOM番号(USBシリアルのCOM番号)、Baudrate 9600、Handshaking Noneを選択しOKをクリック - Terminalタブで黒い画面を右クリック、Compile + Load + Runを選択 - 適当な .sb サンプルファイルを選択 - アップロード開始、完了すると実行される サンプルファイルはまずは hw.hello.world.sb でも実行しておけばいいかなと思います。 ファームダウンロードについての公式資料は UWTerminal smart BASIC Quick Start Guide です。 ==== コレだけ覚えておけばOK 3つのATコマンド ==== BL600とインタラクティブに通信するにはシリアルでATコマンドを使います。 私が使っているATコマンドは以下の3つくらいです。 ^AT command^Desctiption^ |AT+DIR|アップロードしたファイルをリストします| |AT+RUN "filename"|ファイルを指定して実行します| |AT&F 1|アップロードしたファイルをすべて消します。ファイルをたくさんアップロードしてサイズ制限に引っかかてしまった場合使用| 開発手順としては - UwTerminalの右クリックでCompile + Load + Runでコードをうp - 実行、結果確認 - 基板のResetをGNDと1回ショートしてアプリを止める - コード書きなおしてCompile + Load + Runでコードをうp - もう書き込めない、というエラーがでたら AT&F 1 コマンドでフラッシュ内のアプリをクリア - 以下繰り返し これらATコマンドについては 公式資料smartBASIC User Manualの 3. Interactive Mode Commands に書いてあります。 ==== 電源投入時アプリを自動実行させるには ==== 上記の方法だと、RUNを手動でコマンドしてやらないと走りません。 電源投入時アプリを自動実行させるには * smartBASICのファイル名を$autorun$.hogehoge.sb にする * nAutoRunをLOWにする でおkです。 BL600 Breakout Boardでの手順 - アップロードするファイル名を $autorun$.hogehoge.sb にする - UwTerminalで Compile + Load でコードをうpする - AT+DIRコマンドで$autorun$がうpされているのを確認する - 基板のAR(nAutoRun)とGNDとショートさせたままの状態にする - 基板のResetをGNDと1回ショートさせる、もしくは電源をOFF->ONさせる - $autorun$が自動的に実行される ===== BL600ファーム開発のノウハウ ===== 主にバッドノウハウ的なこと。 ==== わかりにくいサンプルコードその原因は・・・ ==== BL600はサンプルコードがわかりにくいです。 結論から言うとLiard社が用意しているサンプルコードは **BL600単体ではなく外部MCUがアナログ・デジタル値を取得してBL600を通してBLE通信に流す** といった使い方を想定しているからです。 最初にこれを念頭にサンプルを見て行かないとちんぷんかんぷんです。 おそらくBLEモジュールを手に入れた人がまず最初に思うことは 「よしBL600を使ってBLE経由でLEDをチカチカさせよう」 といったことが多いと思うのですが、残念ながらBL600にはそういったたぐいのサンプルがありません。 ※執筆時 BL600_R2_Firmware_v1_2_54_0-r6 例えばどういったサンプルがあるのかと言うと、 * ボタンを押した(IOの値が変化した)イベントを取得しシリアルポートに結果表示する btn.button.led.test.sb ※BLE通信は全く使わないので普通のMCUと変わらない * BLE通信を使う場合は、外部MCUがBL600をUARTコマンドで操作するCLI(Command Line Interface)のサンプルがほとんど しかし、BL600にはARM Cortex-M0が搭載されているので、外部MCU無しでBL600単体でできることがたくさんあります。 それら機能をつかうためのサンプルを用意していくつもりです。 ==== マニュアルの関数誤記 ==== 基本的な関数はsmartBASIC User Manualにすべて書いてあります。 ただし、時々**関数の引数がマニュアルと実際と異なる場合があります(何**\\ どうしてもコンパイルエラーが取れない場合はコンパイルが通っているサンプルコードを探すのが早いです。 ※一応気づいたら公式に報告していますがマニュアル修正の対応は早くありません。 ===== BL600とBLE112はどっちがいいの? ===== BL600とBLE112はどっちがいいの?という点について個人的に思うところを書くと * BL600の良い点 * 今バンバン売りだしているNordic社のチップを使っている。業界標準になりそうな気がしてる。(BLE112はTI社のチップ) * Nordic社のネイティブの開発環境に移行しやすい。他のNordic系のBLEモジュールに移行しやすい。 * 開発ボードがすこし安い(BL600 DEV KIT 16,000円、BLE112 DEV KIT 24,000円)※BL600 Breakout Boardを使う分には特にいらない * BL600の悪い点 * GATTプロファイルを作りにくい(BLE112はXMLで簡単に作れるけど、BL600はゴリゴリBASICで書く) * サンプルコードわかりにくい(わかりやすいコードをgithubにうpしていく予定) そんな感じです。 ===== 参考資料 ===== 公式資料はここの Documentation をクリック http://www.lairdtech.com/Products/Embedded-Wireless-Solutions/Bluetooth-Radio-Modules/BL600-Series/ \\ ※サンプルコードなどを手に入れるにはメール登録でのログインID取得が必要 ===== コンタクト ===== Twitter : @ksksue ===== 頒布・プレオーダ ===== <del>BL600 Breakout board 完成品 3700 yen BL600 Breakout board 生基板 500 yen 送料 200 yen(メール便) 支払方法 東京三菱UFJ銀行 or ゆうちょ銀行 ksksue at gmail dot com まで</del>
人間の証明として、ボックス内の全ての文字を入力してください。
F U U F Q
この項目は空のままにして下さい:
編集の概要
注意: 本ページを編集することは、あなたの編集した内容が次のライセンスに従うことに同意したものとみなします:
CC Attribution-Share Alike 3.0 Unported
hardware/bl600breakout.txt
· 最終更新: 2014/05/23 12:40 by
ksksue
文書の表示
以前のリビジョン
メディアマネージャー
文書の先頭へ