2024年最新版
SPRESENSEとは?
SPRESENSEとは2018年夏にソニーが初めて?製品化した開発用ボードです。ソニー製の低消費電力マルチコアプロセッサ「CXD5602」が搭載されています。ソニーというとイメージセンサーの印象が強いですが、プロセッサも健在なのは嬉しいですね。「Cell」を作ったソニーらしく、このプロセッサーもかなりユニークです。
名前の由来
日本語の呼び方は、”スプレセンス”、”エス・プレゼンス”など諸説ありますが、”スプレッセンス”と呼ぶのが正しいようです。なんでこんな名前なのか気になりますが、FAQによると「Spresense の名称に特に意味はありません。」だそうです(笑)。
主要機能
- ARM Cortex-M4Fを6つ搭載した低消費電力マルチコアCPU搭載
- ニューラルネットワークコンソールに対応したAI機能
- ハイレゾリューションオーディオの入出力
- カメラインターフェース搭載
- 「みちびき」に対応したGPSモジュール内蔵
- LTE低消費電力通信(LTE-M)に対応(LTE拡張ボードが必要)
ソニー純正の周辺機器
ソニーからは次の3つの周辺機器が出ています。
- 拡張ボード(Arduino形状)
- カメラボード
- HDRカメラボード
- LTE拡張ボード
- GNSSアドオンボード
その他の周辺機器
ソニー以外の各社からも多くの周辺機器が出ています。ただ、SPRESENSEはArduinoに対応しているので、ここで紹介されている他にも、Arduino対応のセンサーや通信モジュールはほぼ流用できます。私はWiFiにはESP8266をよく利用しています。
開発環境
SPRESENSEの開発環境は、今現在知る限り次の4つです。Circuit Python は、英語版にしかドキュメントがありませんでした。
ソフトウェア構成
SPRESENSE は「NuttX」というオープンソースのRTOSがベースとなっています。NuttX はPOSIX準拠のOSで、いわばリアルタイム版Linuxと言えるものですが、起動が高速でフットプリントが小さいというRTOSの良さを残しています。
組み込みLinuxに慣れている人にとっては、取り組みやすいOSだと思います。
何ができるの?
SPRESENSEは機能がてんこ盛りの割には、通信機能がメインボードに搭載されていない。おまけに少々お高めと、少しちぐはぐな印象を持ちます。しかし使いこなせば使いこなすほど味が出るボードです。その特徴と応用例を少しあげてみました。(かなり手前味噌)
マルチコア・コンピューティング
コンピュータ・サイエンスに興味を持っている人には、SPRESENSEは非常に面白い研究対象になると思います。SPRESENSEは、SMP, AMP 両方に対応しています。AMPではそれぞれのコアに対してArduino IDEでプログラミングができますので並列処理プログラミングを手軽に試すことができます。
また、SDKを使うと、SMP、AMPを組み合わせて利用することもできます。
NuttX はオープンソースなので、マルチコアを扱うOSの仕組を学習するのも面白いでしょう。
オーディオ機能
SPRESENSEはハイレゾのオーディオ再生機能があります。「世界ゆるミュージック協会」というところと、「ゆる楽器」というユニークな楽器を作るプロジェクトが進んでいるようです。さらに簡単に楽器を開発できるライブラリも提供しているようです。サウンドフォントも使えるようなので結構本格的な楽器が作れそうです。
- Audioチュートリアル
- ゆる楽器 x Spresense
- Spresenseで簡単に楽器を開発するライブラリ
- Spresenseで楽器を作る第一歩
- SPRESENSEでビートボックスを作ってみた
- SPRESENSEでデジタルエフェクターを作ろう!
- Spresense e-Violin
- 音楽弱者を救え! ソニーミュージック「ゆる楽器ハッカソン」に行ってきた
マイク機能
SPRESENSEは4系統のマイク入力がありハイレゾでも録音ができるようになっています。
- SPRESENSE用のアナログマイクを作ってみた!
- SPRESENSEでMP3録音をしてみた
- SPRESENSEでマイクのゲインを変えて録音してみた
- SPRESENSE でステレオ録音を試してみた
- SPRESENSEでハイレゾ録音対決
- Talking Web Radio with ESP8266 and Sony Spresense
このマイク入力は、192kHz/24ビットまで対応できるADCとして使うこともできます(ほぼ測定器並)。ここにアナログセンサーをつなげれば、高速信号処理可能なセンシングプロセッサーとして使うことができます。(センシングプロセッサーの由来はココ?)
さらに再生機能とマイク機能を応用すれば音響通信も可能になります。通信の基礎に取り組みたい人には良い実験材料になると思います。
カメラ機能
カメラは、ソニー製のCMOSイメージセンサーを搭載したカメラボードが利用できます。ライブラリは非常に使いやすいのでさくっとアプリケーションが作れます。
- カメラチュートリアル
- SPRESENSE用 HDR VR220 カメラボード(レンズ交換可能)
- SPRESENSEの新型カメラボードで写真を撮ってみる
- Spresense_HDRCamera_M12Adapter
- SPRESENSEのカメラのモニターをProcessingで作る
- SPRESENSEでLowPowerカメラ
- SPRESENSEでAVI動画をサポートしてみた
- SPRESENSEでサーマルカメラを作ろう
- SPRESENSEでタイムラプスカメラを作ろう
ハードウェアの仕様やソフトウェアはオープンソースになっているので、OV7670などつなげられるのではないかと妄想しています。
GPS機能
SPRESENSEにはGPSチップアンテナが搭載されているので、メインボードだけで利用できます。みちびきにも対応しているのでサブメーター級測位も利用できます。チップアンテナですが、思いのほか精度が高いのでサイクルコンピュータ用によさそうです。
- GPSチュートリアル
- SPRESENSE GNSSアドオンボードを試してみた
- 100均のソーラーパネルとSPRESENSEでバッテリーレスロガー製作
- SPRESENSE の CircuitPython が "GPS"をサポート
- SPRESENSEでDeepSleepからGPSをホットスタート
- SPRESENSEのRTCをGPS時計に設定して時報アプリ
- SPRESENSEのNMEA出力をNMEAモニターで確認
- SPRESENSEで高精度GPSロガーをつくる
- GNSS(GPS)の電波をCPUコアを使わずに解析し、位置情報を算出する
その他、SPRESENSEには「みちびき」が提供する「災害危険情報」をデコードする機能もあります。SPRESENSEを使って防災システムを作ってみるのも面白いと思います。
AI機能
SPRESENSEの目玉といえばAI機能。とは言っても、あまりサンプルとかがないのが残念。チュートリアルはかなりあっさりとしていてもう少し情報が欲しいところ。自分なりの理解をまとめたものをあげておきますので参考にしてください。
- AIチュートリアル
- Get started with Google's TensorFlow on Spresense
- SPRESENSEでSony Neural Network Console を使ってみた!
- SPRESENSE で小型AIカメラ
-
Neural Network Libraries (Nnabla) で作った AI を SPRESENSE で動かす
ロボティクス機能
ロボティクス関連も応用が広がっています。特にマルチコアはロボット制御には非常に適しています。制御ループが正確に時間管理できるのは大きな利点ですね。
- SPRESENSE™とmicro-ROSで始めるロボットプログラミング
- Spresense-microROS-Seminar
- Wheel-Legged Robot
- SPRESENSEでrviz2上のUDRFモデルを動かす
- Spresense猫モーラー
関連書籍
チュートリアル動画
ソニー公式などから、さまざまなチュートリアルが用意されています。SpresenseのAI機能はソニー公式のSpresenseチュートリアルがよさそうです。
- Spresense|チュートリアル動画【ソニー公式】
- Neural Network Cosole【ソニー公式】
- Edge Impulse チュートリアル(Spresense編)
- Spresenseのサブコアを使うプログラムを自動生成し、デバッガで確認 | APS-WEB
- SPRESENSEに搭載されているCPUコアをSMP×ASMPとして構成 | APS-WEB
公式アカウント
公式SNSも用意されています。最新情報をウォッチできます。
- SPRESENSEツイッター公式アカウント
- SPRESENSEフェイスブック公式アカウント
- SonyDevWorldツイッター公式アカウント(英語)
- SonyDevWorld公式Githubリポジトリ(英語)
その他の非公式情報
ブログ