手軽に開発できる Bluetooth LE 対応の開発ボード比較

# 前提

Bluetooth LE を使った開発をしたいけど、どんな開発ボードを使えばいいのかわからない、オススメを教えてくれという人のための記事です。

[Web Bluetooth](https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API) や [LINE Things](https://engineering.linecorp.com/ja/blog/line-things-developer-trial/) など、面白そうな Bluetooth LE 対応プラットフォームが登場しています。
これらの開発を始めるには、どのような開発ボードを使えばいいのかを紹介します。

今回は、電子工作やプロトタイピング向けを対象としているため、C でガリガリ書かなきゃいけないような環境しかないボードは対象外としています。
Arduino, mbed, micropython など、そういうお手軽系開発環境が使えるボードを紹介します。

# オススメの開発ボード

とりあえず、個人的なお気に入りの3種類を紹介します。

## Adafruit Feather nRF52 Bluefruit LE - nRF52832 

<img src="https://qiita-image-store.s3.amazonaws.com/0/29906/52fe74dc-5650-33c5-0852-d5fed47f8939.jpeg" width="320">

[Adafruit Feather nRF52 Bluefruit LE [nRF52832]](https://www.adafruit.com/product/3406)

Nordic nRF52832 チップを利用した Raytac MDBT42Q モジュールを搭載しています。
Arduino と CircuitPython を使った開発が可能です。

特に、Arduino 系では Blutooth LE ライブラリが独自のもので、とても安定しているイメージです。
~~Adafruit 製品なので、CircuitPython も対応していて、純正サポートなので Python 好きの方にもオススメ。~~
※ CircuitPython のサポートは、Native USB 対応の nRF52840 以降からとなりました。

Nordic 系のチップは、UART 経由で書き込むのが標準ではなく通常 JLink が必要なのですが、Adafruit の nRF52 系のボードは独自のブートローダーを搭載して、UART 経由の書き込みを実現しています。
すごい！ありがとう、Adafruit！

リチウムポリマー電池向けの充電回路とコネクタが搭載されているので、外付け部品なしで電池駆動が可能です。省電力で長期館電池稼働できることがウリの Bluetooth LE なので、いきなり電池で動かせるのはとても便利です。

唯一の難点は、価格と入手性かな... 本家の価格は $25 なので、3000円弱ぐらいです。

- https://www.switch-science.com/catalog/3277/
- http://eleshop.jp/shop/g/gH91316/

後継の、**Adafruit Feather nRF52840 Express** も発売されていて、今から買うならこちらが良さそう。
Native USB に対応しているので、CircuitPython も対応していて性能も向上しています。
スイッチサイエンスから購入できます。

- [Adafruit Feather nRF52840 Express](https://www.adafruit.com/product/4062)
- https://www.switch-science.com/catalog/5400/

Adafruit Feather nRF52840 Express とほぼ同等製品の、SparkFun Pro nRF52840 Mini もあります。
千石電商で購入できます。

 - https://www.sparkfun.com/products/15025
 - https://www.sengoku.co.jp/mod/sgk_cart/detail.php?code=EEHD-5CP8

## ESP32-DevKitC (とその他 ESP32 系開発ボード)
<img src="https://qiita-image-store.s3.amazonaws.com/0/29906/bc16983c-beae-ddfe-bd1f-6b9e5f9e29ae.png" width="320">

https://www.espressif.com/en/products/hardware/esp32-devkitc/overview

Wi-Fi と Bluetooth LE 対応の Espressif ESP32-WROOM32 というモジュールを搭載した開発ボードです。
Arduino を使って開発している人が多いですが、MicroPython も使えます。
Espressif という、ESP32 のチップ自体を開発しているメーカーが出しているボードです。

両方乗ってて便利のように見えますが、消費電力的な点で Wi-Fi とデュアルコア高性能 CPU というのは完全に足枷でして、電池駆動で長期稼働はほぼ期待できません。
電源投入時に、レギュレーターの能力不足で電圧ドロップが起きるぐらい電気を食います。

さらに、肝心の Bluetooth LE についてですが、BLE は重要視されてないのか、Arduino のライブラリが悪いのか、Paring, Bonding を行った際の接続安定性・全体的な動作が、Nordic 系のモジュールと比べて良くないです。
また、デュアルコアというのが悪いのか、タイミングに敏感なアプリケーションはうまく動かないことが多いです。(個人的な感想)

そして、プロトタイピングで最大の難点は、ブレッドボード上で開発すると、どちらか片方の側に1列しか自由に使えるポートが無く、特殊なブレッドボードが必要とされる点です。
この点は、"ESP-32S NodeMCU 開発ボード" として Amazon などで売られている ESP32-DevKitC とピン配列互換の開発ボードでは、1列分改善されます。(つまり両側のポートが使えるようになる)

価格は、1500円前後で入手可能です。
お手頃でまず初めて見るのには良いと思いますが... ちゃんと動かそうとすると、苦労するかも。

- 本家 DevKitC: http://akizukidenshi.com/catalog/g/gM-11819/
- Node MCU: https://www.amazon.co.jp/dp/B0718T232Z

液晶付きの [M5Stack](https://m5stack.com/), Grove コネクタ搭載の [Nefry BT](https://dotstud.io/shop/nefry-bt-single/), JavaScript で開発可能な [Obniz](https://obniz.io/) といった、ESP32 搭載の開発キットは結構充実しているので、こちらも検討してみてください。

## BBC micro:bit

<img src="https://qiita-image-store.s3.amazonaws.com/0/29906/e5ee7b6f-3b5e-38be-984f-d9fbba6fb6fd.jpeg" width="480">

https://microbit.org/ja/guide/

お子様向けだろバカにするんじゃねぇ、と思うかもしれませんが、実によくできた懐の深いボードです。

Nordic nRF51822 が搭載されています。USB 経由の書き込みを実現するチップが別に乗ってます。
nRF52 と比べると、RAM も CPU も非力で、できることが限られていますが必要十分です。
加速度センサー、磁気センサー、LED マトリックス、ボタンが標準搭載です。
電池だって使えます。(LiPo はダメ)

開発環境は、基本的にブロックプログラミングとなりますが、拡張機能は C でゴリゴリ書くことができます。
また、Arduino や mbed に対応した開発環境も一応存在するので、使えないことはないです。
ただし、Python はサポートされているものの、Bluetooth LE 機能を使うことができません。(RAM が...)

欠点としては、IO ポートが微妙に使いにくくブレッドボードやユニバーサル基板にそのまま刺せないことと、Arduino や mbed のサポートが公式ではないので、きちんとサポートされているわけではないということです。
例えば、Arduino だと BLE ライブラリのバグが多く、Bonding 情報も1クライアントまでしか記憶できません...

でも、Bluetooth LE でやりたいことなんて、そんなに大したことじゃないでしょう？プロトタイピングでしょ？
それならこれで十分です。価格は2000円前後。

- https://www.amazon.co.jp/dp/B074M58PL7

# その他、気になる開発ボード

特にオススメというわけでもなく、難点も合ったりするけど場合によっては使えそうなもので知ってるものを並べます。

後でなんか気になったら追記するかも。

## Puck.js

https://www.puck-js.com/

とにかく小さく行きたいなら Puck.js がオススメです。
Espruino 対応で、JavaScript で開発できます。Arduino や mbed などの開発には公式では対応していません。

中のモジュールは、Raytac MDBT42Q です。
JTAG 端子は一応出ていますが、スルーホールではないので何らかの工夫が必要なので、JTAG 経由でなんか書き込んでやろうっていうのは、万人向けではありません。

(追記) 全然お手軽ではありませんが、Puck.js で Adafruit の Arduino ライブラリを動かす方法を書いてみました。
[Puck.js を Arduino IDE で開発できるようにしてみる](https://qiita.com/hktechno/items/254ff58522b5bb512305)

CR2032 で動作して、電池駆動できます。小さいです。拡張性は殆ど無いです。ただし見た目がいいです。
国内での入手性は悪いですが...

その他、Espruino 系のボードも、Puck.js と同じように手軽に使えます。

## AE-TYBLE16

http://akizukidenshi.com/catalog/g/gK-12339/

もっと小さく行きたいなら、秋月電子通商で取り扱っているこのモジュールが良いです。
なんと、DIP16 ピンの IC とほぼ同じサイズ。マジで小さい。

太陽誘電の EYSGJNAWY-WX というモジュールが乗っていて、この中身は Nordic nRF51822 です。
このモジュールは、シリアル経由で設定できるファームウェアが乗っていて、基本的に書き換え不可。
まあ、Bluetooth LE で通信するためのモジュールとして使うなら良いのですが、外付けでマイコンが必要なのも微妙ですよね。せっかく nRF51 乗ってるんだし。

そんなあなたは、このサイズであえてちゃんと JTAG 用のポートを外出ししてくれている秋月様の恩恵に預かりましょう。
一応、Arduino と mbed での開発方法が、非公式ですがあります。

- [小型 Bluetooth LE モジュール AE-TYBLE16 で LINE Things Starter してみる](https://qiita.com/hktechno/items/f594f87493fbe11de3fb)
- [TYBLE16 Module will become a Mbed family (mbedlization)](https://os.mbed.com/users/kenjiArai/notebook/tyble16-module-will-become-a-mbed-family--mbedliza/)

## RN4020

http://akizukidenshi.com/catalog/g/gK-11102/

シリアル通信で設定できるモジュール、LINE Things とかも一応動かせる。

ただし、シリアルってのがなぁ。ESP32 と値段そんな変わらないし。
秋月で気軽に手に入るというところがメリット。

## MDBT50Q-DB

http://www.raytac.com/product/ins.php?index_id=81

Raytac MDBT50Q の公式開発ボード。Nordic nRF52840 搭載。

Nordic の公式開発ボード使えばいいじゃん？って思うかもしれませんが、Nordic 公式の開発キットはすべて技適マークがついてません。よって日本国内での使用は基本的にできません。

そこで、Raytac という技適マークつき Nordic チップのモジュールを使っているメーカーのものを利用しましょう。
Adafruit Feather nRF52 向けの Arduino ボードライブラリも、Nordic 開発ボード設定で利用できました。

eBay で入手可能です。\$20 + 送料\$8 で入手できます。

- https://ebay.us/aKSbCz


# その他、持ってないけど気になる

- Koshian 3.0
 - Konashi はお手軽すぎて Web Bluetooth 対応とかいじれないのと、Koshian は JTAG コネクタが微妙かつお手軽開発環境はないので却下
 - 値段は1000円とお安い
 - https://www.switch-science.com/catalog/3820/ 
- STmicro SPBTLE-RF とか
 - mbed がいけるはず、持ってるけどちゃんと検証してない
 - https://www.st.com/ja/wireless-transceivers-mcus-and-modules/spbtle-rf.html 
- Cypress の BLE 開発キット
 - Arduino ピン五感のボードが多いが、たぶん Arduino では開発できない
 - https://japan.cypress.com/products/ez-ble-and-ez-bt-bluetooth-modules

## 技適なし

- Nordic nRF52840 Dongle
 - Mouser で 1165 円... お買い得！！
 - 技適〜〜〜  
 - https://www.mouser.jp/new/nordicsemiconductor/nordic-nrf52840-usb-dongle/
- Arduino Uno WiFi Rev2
 - ESP32 のチップが乗った u-blox の技適なしモジュールが乗っている Arduino... 
 - https://store.arduino.cc/usa/arduino-uno-wifi-rev2
- Arduino MKR WiFi 1010
 - 同じく u-blox の ESP32 が乗ってる Arduino 
 - https://store.arduino.cc/usa/arduino-mkr-wifi-1010 
- Particle Xenon
 - nRF52840 搭載で $15
 - https://store.particle.io/products/xenon 
- Waveshare BLE400
 - nRF51822 搭載
 - https://www.waveshare.com/wiki/BLE400 
- TI CC2541 搭載の安価 BLE モジュール
 - 海外の通販サイトでよく見るけど、書き換え可能なんだろうか？
 - CC debugger があればいけそう？しかし技適。
 - HM-10, HM-11 など

## 番外編

- ダイソー 300円 シャッターボタン
 - 300円で技適通って BLE 飛ばせてちゃんと繋がる (ビーコンではない)
 - https://japanese.engadget.com/2017/10/26/bluetooth/
 - 書き換えは不可能
 - この値段が実現できるのは、ワンタイム書き込みだからかもしれないが...

# 結論

- USB ついて
- LiPo つなげられて長時間駆動
- 技適ついてて
- Arduino や Python で開発できる
- 2000 円以下の (できれば Nordic nRF52840 Dongle と同じぐらい)
- Bluetooth LE 開発ボード

こんな開発ボードが あったら、売れるんじゃないかなぁ...

Nordic nRF52840 とかあたりで誰か作ってくれませんかね？
(MDBT50Q を使っても、モジュール単価は1000円は余裕で切ってくるので...)

すでに良さそうなものがあったら誰か教えてください。