BLE開発
BLEの構造
- BLEデバイス
Bluetoothチップ。1または複数のservieを持つ。識別子としてMACアドレスのようなバイト列を持つ。 - service
個々のAPIをまとめた概念。1または複数のcharactiristicを持つ。識別子としてUUIDを持つ。e.x. C3FF0001-1D8B-40FD-A56F-C7BD5D0F3370 - chatactirictics
バッテリーの残量確認やシリアル通信など、個別の機能を提供する識別子としてUUIDを持つ。e.x. C3FF0005-1D8B-40FD-A56F-C7BD5D0F3370
BLEデバイス(ハードウェア) ∋ service ∋ charactiristic の包含関係となる。
UUIDなどの簡単な確認
nRF Connect for Mobile (Android)
が便利。
Windows10でのBLE利用(未完)
windows上でBLE+Pythonに対応したライブラリは少ない・・・・。 bleakは唯一対応しているようだが、うまく行かない。 Pythonライブラリ bleakでWindows10/macOS/Linux上でtoioコア キューブを動かしてみる - Qiita
まず、TapStrap2とPCは接続した状態でスクリプトを実行するのが正しいのか、ペアリングせずに実行するのが正しいのかわからず。
マイコンの開発のフレームワークの検討
LPC1763の開発フレームワークについて調査した結果
調査動機
ライントレースカーの開発に対して、
- n秒間ブザーを鳴らす
- n秒進んだ後にm秒バック
などを実装していると状態変数がどんどん増えてきてソースコードの見通しが悪くなってきたため。
もっと全体を見通しよく開発できる環境を作りたかった。
見つけた候補たち
1.組み込みRUST
RUSTはC、C++の置き換えを狙った、低レベル部分の制御が行える高級言語。
言語仕様自体は新しいようで、C++などと比べてもリスト型の操作などはしやすそう。
ただし、マイコンに実装した例があまりなく、使うとなると人柱の覚悟いりそう。
レジスタのメモリマップについても、メーカーの提供するsvdファイルから変換できるらしいが、トラブルある模様。
https://qiita.com/tatsuya6502/items/7d8aaf3792bdb5b66f93
2.FreeRTOS
端的に言うと、関数をスレッドとして並列処理することがで着るので、通常のように大きな無限ループを回し続けて状態を管理するのでなく、
細かな無限ループを作って情報を共有できるイメージ。
例えば5秒間ブザーを鳴らしながら走行するとき、
通常ではブザー鳴動開始時刻と現在時刻を比較して状態を管理する必要があるが、
スレッドとしておけば5秒間ならす、と処理を書くだけですむ。
実行の流れが複雑になってデバッグは大変になるのかな・・・?不明
https://www.aps-web.jp/academy/rtos/ex2/
3.mbed
IoT用OS。マイコンをレジスタをたたくことなく、Arduinoのように機能設定のメソッドを呼び出すことで使える。
このmbedの機能の一つとしてRTOSの機能がある。
公式のボードはLPC1769だが、LPC1763にもちょこちょこいじれば使えそう。
以前はLPCXpressoで扱うときはWEB版でエクスポートしたプロジェクトを読み込まないとmbed用のローカル環境を作れず面倒だったりしたけど、今はどうなんだろう。
MCUXpressoになって変わったりしたのかな。
http://erias00.blogspot.com/2016/04/mbedlpc.html
候補
使えそうなのは、FreeRTOSかmbedあたり。
MCUXpressoで扱いやすい方を使うのが良さそう。
kaggle挑戦: Santander Customer Transaction Predictionのkernel読み
データサイエンスの実践的な知識が欲しい。 あとKaggleメダルが欲しいのでKaggleに挑戦する。
Santander Customer Transaction Prediction
概要
Santanderという会社で、顧客が取引を行うかを予測する(2クラスの分類問題)。 入力データは200列。 列名はすべて匿名化されていて正直何が何やらわからない。
カーネル読み
一番vote数が多かった以下カーネルから手続きを抜粋。 www.kaggle.com
確認手続き
- 欠損値の確認
- → 無し
- 重複の確認
- → 無し
- trainをx,testをyとして散布図作成。円or正方形に分布するか確認 - → 問題なし(季節周期性とかがあると歪な形になる?)
クラス0とクラス1で、それぞれの変数の正規分布の形状が一致しているか確認
- var_0, var_1, var_2, var_5, var_9, var_13, var_106, var_109, var_139 やその他多数でtrainとtestの分布形状が違う。
- var_2, var_13, var_26, var_55, var_175, var_184, var_196などが二変量分布の模様
変数同士の相関係数確認 - → ほとんど相関なし
特徴量作成
- 各行のsum, min, max, mean, std, skew, kurt, medを追加
予測
- StratifiedKFoldでCVようにデータを分割
- lightgbmで予測