micor:bitは教育用のワンボードコンピュータで、多くの開発用言語が提供されている。特に、Pythonでさくさくと組めるがありがたい。だけど、、Pythonだとメモリ空間がパツパツで?bluetoothのライブラリがもう乗らないらしい。bluetooth(BLE)を使いたい場合はJavascriptを選ぶ必要がある。そこは残念。だったら、Pythonとかよくできた上等なインタプリタを使わず、また、何層にもなっている、ランタイムライブラリも使わず、素*1でハード直叩きで動かしたらどうなのか?
内蔵されているメインのマイコンは、Nordic SemiconductorのnRF51822で、フラッシュ:256KB、RAM:16KBと広大?なメモリ空間が使える。。はず。。
今作ってる俺VTLがコンパクトに作れたら、micro:bitに乗せて、あれこれ動かしてみたいが。。どうなることか。。続ける意味があるかどうかは、今のmicro:bitに搭載されている、Pythonインタプリタ+ランタイムライブラリよりも俺VTLがコンパクトに作れるかどうか(サイズで負けたら置き換える意味なし)。さらに、、最後まで飽きずに続けられるかどうかが課題。。
Wikiを見ていたら、すでにmicro:bit用Forthもあるらしい。Forthもなかなかお茶目な言語だけど、、micro:bitでForthを使う人いるのだろうか。。VTLもさらにキワモノなのだが。こんなことやって何の意味があるのか。。ふと我に返る。。しかし他にやることもないし。。(リカレントネットニューラルワークのスクラッチテーマもあるが、簡単に取り組むには自分の頭のレベルとしては超難しい。。だから。。少しずつ時間をかけて壁を崩す必要あり。。)
■補足
ランタイムを使わずにハードじか叩きと書いてるけど、BLEを動かすには正しいプロトコルが必要で、さすがにそれにはランタイムライブラリのお世話になる必要あり。だから、、Lチカとか、I2C経由で加速度センサーの値読むとかその程度なら、ライブラリに頼らず素で組めるけど、通信をしたいなら、最低、Nordic nRF51822 SDKのレイヤーは入れる必要があると思う。自分で書いておきながらすでに自己矛盾だが。。まぁ仕事じゃないから自己矛盾もOK
ライブラリ使いながらBLEを動かすとかなり勉強になるのだろうなーーと思いつつ、、
■追記
以下のJELLYWARE様のBLE超入門を読んでると、ライブラリの苦労はおいといて、BLEってのは、使うだけならめちゃ簡単なのか??と思い始めて、、だったら最低限のランタイムは入れてBLE通信させてみるか。。と。。いきなり方針転換。
http://jellyware.jp/kurage/bluejelly/ble_guide.html
■開発環境構築
Interface誌(2018/6 P82)を参考に、Segger Embedded Studioをインストールして、簡単なサンプルを走らせてみた。左の画面が開発統合環境(IDE)のEmbedded Studioで、プロジェクトの作成・ビルド・デバッグが可能。個人利用なら無料、SeggerのサイトからDLできる。
Seggerのサイトで、J-Linkの最新版モジュールリリースと、それに合わせて、micro:bit用のLEDブリンクサンプルが付いていたのでそれを走らせてみた。
ちなみに、、単なるLEDブリンクサンプルの場合、スタートアップが0.9K、メインのコードが0.1Kで、コード領域は合計1KB程度に収まっているようである。ただ、デバッグ用のライブラリも組み込まれているようだけど、そちらはサイズがちと分からず。
ご参考:
最初、デバッガとJ-LINK(micro:bit)との接続時、下記のエラーが出て正常に接続できなかった。
Segger Failed connect to target no idcode detected
どうもこれはツール間のバージョン不整合によるもののようで、原因を切り分けようと、JLINKツール(JLink_Windows_V632i.exe)をインストールした際に、V6.31i of J-Link Software(DLL V6.32i)に更新しますとメッセージが出て、バージョンが更新された後、接続エラーは発生しなくなった。この教訓として、ツール類はすべて最新に揃えること。
■ご参考URL
micro:bitの回路図
https://github.com/bbcmicrobit/hardware
nRF51822のまとめサイト
https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822
nRF51822ダウンロードまとめ
https://www.nordicsemi.com/eng/Products/Bluetooth-low-energy/nRF51822#Downloads
nRF51822の仕様書(ダウンロードされます)
Product Specification v3.3
https://www.nordicsemi.com/eng/nordic/download_resource/62726/14/45133233/13358
nRF51 Series Reference Manual Version 3.0
https://www.nordicsemi.com/eng/nordic/download_resource/62725/13/73681728/13233
SDK(softdevice) DLリンク
https://www.nordicsemi.com/eng/nordic/download_resource/53724/11/69706129/95150
SeggerのIDEダウンロードサイト
https://www.segger.com/products/development-tools/embedded-studio/
micro:bit用J-Link最新版DLサイト(お試しプロジェクト(Lチカ)もあり)
https://www.segger.com/products/debug-probes/j-link/models/other-j-links/bbc-microbit-j-link-upgrade/
getting_started_ses.pdf
http://infocenter.nordicsemi.com/pdf/getting_started_ses.pdf
さすがにマイコンの仕様書だけ見ながらI/Oを叩くのはつらすぎるので、、SDKのサンプルをちゃっかり参照。。(チートというやつでしょうか)
http://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk5.v15.0.0%2Findex.html&cp=4_0_0
BLEの説明資料(よくまとまっている印象)
https://www.slideshare.net/edy555/ble-deospart1