最近、趣味でマイコンをいじりはじめたので、いろいろ作ってみようかなと思い立ちました。
せっかくなので、自分が経験したことを共有したいと思います!!
開発環境
開発環境としては、昨年発売された高性能マイコンボードSpresenseを使ってみようと思います!
Spresenseとは?
- Arduino 互換のソニーのボードコンピュータ
- マルチコアを内蔵したハイパフォーマンス
- GPSによる測位機能、ハイレゾリューションオーディオの再生・録音機能、低消費電力
- DNNを動かせるライブラリが存在
などの特徴を持ちます。
なんでSpresense?
勉強のために、RTOSとかArduinoをいじってみたかったのが一番です!あとは、画像処理、ディープラーニングに興味があって、それを動かせる性能がある手ごろなものがSpresenseでした。
たぶんこれを買う人はみんな同じような動機な気がします笑
苦労したこと
情報が全然ない!!知識がある方だったら大丈夫だと思うんですが、私のような初心者には厳しかったです。。。
サンプルコードなんてのも、全然ないので手探りでしたね。もっといろいろサンプルアプリがあれば楽だったのになぁ。
今回作りたいこと
ここからが本題です、今回は、”ひっくり返すと音楽が止まるプレイヤー”を作ってみました。着想は、加速度センサとAudio機能を使って何かできないか、というところです。
使用するモジュール類はこんなものを使いました。
このRohmのAdd onボードに加速度センサがくっついています。
さあやってみよう
こんな流れで、実装まで行ってみました。
- 機能決め
- ざっくり設計、実装
- 結果
どんな機能をもたせる??
今回は、初めて触るマイコンのお勉強なので、簡単な機能に絞ります!
- 本体が上向きで、音楽が再生できること
- 初めから再生されること
- 本体が下向きで、音楽が停止できること
- 音楽が最後までいったら、ループすること
調べてみると、ひっくり返すと止まる目覚ましがあるみたいですね。
LEXON レクソン 置き時計 アラームクロックFLIP amazon リンク
どんな設計??
やたらめったらやっても失敗するので、それっぽい状態遷移図だけ書いてみました。
どうやって実装する??
今回はArduino IDEを利用するため、ポーリングのみとしました!(加速度センサから割り込み発生させるやりかたもよくわからないし。。。)
SpresenseのAudio APIをどうもうまく使いこなせず、今回はFileのopenとcloseを音楽の停止と再生と同時に行っています。
うごかしてみると・・・?
こーんな感じに動作します。いろんな曲をランダム再生とかだったら案外つかえるかも?
github
最後に
これからもいろいろSpresenseをいじっていこうと思っています!
SpresenseでOpenPoseとか動かしてみたいなぁ。。。