Spresense Header CodeSpresense Header Code

Spresense - エッジコンピューティングを低消費電力で

Spresense で乾電池でも動く本格的なエッジコンピューティングを体験してみませんか?

Spresense について

1. はじめに

Spresense は、Arduino 互換のソニーのボードコンピュータで、ソニー独自のセンシングプロセッサ CXD5602 を搭載しています。 CXD5602 は、GPSによる測位機能、ハイレゾリューションオーディオの再生・録音機能、低消費電力のマルチコアを内蔵したハイパフォーマンスのIoT向けプロセッサです。

overview hardware both

ここでは、以下の2つの章に従って、Spresenseのハードウェアとソフトウェアについて、その概略を説明します。

早速、Spresenseを使ってプログラミングをお楽しみいただきたい方は、以下の章をご覧ください。

また、 CXD5602 についての詳しい情報は、

をご覧ください。

2. Spresense ハードウェアについて

2.1. Spresense ボードについて

Spresense ボードは2つのボードから構成されています。

Spresense メインボードには、ソニーが開発したIoT向けのセンシングプロセッサが搭載されており、Spresense メインボード単独でも動作することができます。

  • CXD5602 センシングプロセッサ

  • CXD5247 パワーマネージメント&オーディオアナログIC

Spresense拡張ボードは、Spresenseメインボードのインターフェイスの拡張を行う基板になります。 Spresense メインボードとSpresense 拡張ボードは Board-to-Board (B-2-B) コネクタで接続されており、 Spresense拡張ボードは、この拡張ボードをメインボードに接続することで、Arduino Uno互換のピン形状を構成することができます。 ただ、Spresense 拡張ボードのピン仕様について、Arduino Uno と一部異なる部分があります。詳細については、Spresense と Arduino Uno の違い を参照してください。

overview hardware both
図 1. Spresenseメインボード 上の基板、Spresense拡張ボード 下の基板

2.1.1. Spresenseメインボード

Spresense メインボードは次のような特徴があります。

  • センシングプロセッサ CXD5602 搭載

  • 8 MB フラッシュメモリ

  • フットプリントの小さな基板

  • Camera 専用コネクタ

  • GNSS (GPS)アンテナ

  • 拡張性を備えたコネクタ、機能

    • 各種GPIO (UART, SPI, I2C, I2S)

    • ADC 2チャンネル

    • アプリケーション用 LED x 4 (緑)

    • 通電表示用LED(青)

Spresense メインボードの基準I/O電圧は1.8Vです。1.8V以上の電圧を加えると Spresense のチップセットが破壊される可能性があります。取扱いには十分注意してください。
overview hardware mainboard signal
図 2. Spresense メインボード

メインボードに配置されるコネクタならびにスイッチなどの回路上の名称を以下に示します。

表 1. メインボードコネクタ、スイッチ
各部名称 説明

[PWR] Power LED

電源LED。電源供給されているときに青色に点灯します。

[RST] Reset button

リセットボタン

[LED0] - [LED3]

アプリケーションから使える4つのビルトインの緑色LED

[CN2]

micro USB Type-B コネクタ。Sketchなどプログラムのロードやデバッグの目的で利用するUSB/UART用のコネクタになります。

[CN4]

B-2-Bコネクタ 拡張ボードと接続するための100pinのコネクタ(裏面に配置)

[CN5] Camera Connector

Spresenseカメラボードと接続するためのカメラ専用コネクタ

[BR] Boot Recovery Button

工場出荷状態へ復旧する際に利用し、通常は使用しません。

メインボードのブロックダイアグラムを以下に示します。

block diagram mainboard
図 3. Spresense メインボードブロックダイアグラム

メインボードの回路図のPDFは次のリンクから入手できます。 Spresenseメインボード回路図

2.1.2. Spresense拡張ボード

Spresense 拡張ボードは Arduino Uno 互換のピンソケットに加えて、次の端子を備えています。

  • ヘッドホンジャック

  • micro SD カードスロット

  • USB コネクタ

  • マイク接続用ピンヘッダー

overview hardware extboard signal
図 4. Spresense 拡張ボード

拡張ボードに配置されるコネクタならびにスイッチなどの回路上の名称を以下に示します。

表 2. 拡張ボードコネクタ・ジャンパ
端子・ジャンパ名 説明

CN3

B-2-Bコネクタ メインボードと接続するための100ピンのコネクタ

CN4

microSD カードスロット

CN6

microUSB Type-B コネクタ。USBのMSC(Mass Storage Class)機能を提供することが可能で、拡張ボードのSDカードにPC から直接アクセスできます。

CN7

ヘッドフォンジャック 3極 3.5mmコネクタ

JP1

デジタル入出力端子基準電圧設定 5V or 3.3V

JP10 - pin 3 to 16

マイクを接続するためのピンになります。これらのピンはアナログマイク、もしくはデジタルマイクが接続できます。詳しくは、マイクの使用方法を参照してください。

JP10 - pin 1, 2

UART2 端子(D00, D01)をメインボードで使うか、拡張ボードで使うかを選択します。ショートすると メインボード上の UART2 端子 (1.8V) が有効になります。

JP14

ショートすることでJP10をデジタルマイク端子用に設定が出来ます。詳しくは、マイクの使用方法を参照してください。

Spresense 拡張ボードで使用できるmicroSDカードはFAT32でフォーマットされている必要があります。

メーカー出荷時にFAT32でフォーマットされているmicroSDカードは "SDHC" だけとなります。

他のファイルシステムでフォーマットされているカードは、あらかじめPC等でSDカード用のフォーマットツールなどを使用してFAT32にフォーマットしなおしてください。

拡張ボードのブロックダイアグラムを以下に示します。

block diagram extboard
図 5. Spresense 拡張ボードのブロックダイアグラム

拡張ボードの回路図のPDFは次のリンクから入手できます。 Spresense拡張ボード回路図

2.1.3. Spresenseカメラボード

Spresenseカメラボードにはカメラモジュールが搭載されています。このカメラモジュールはソニー製イメージセンサISX012とレンズから構成されており、Spresenseから の指示でカメラとして起動します。

イメージセンサISX012は有効画素数 511万画素の画像センサでJPEGエンコーダを搭載しているため、RAW、Y/C、RGBに加えJPEG形式の画像を Spresenseに送ることができます。

HW camera board
図 6. Spresenseカメラボード

ISX012の仕様表を下記に記載いたします。

表 3. イメージセンサISX012スペック
イメージサンサー

センサータイプ

1/4型 CMOSイメージセンサー

有効画画素数

511万画素

記録画素数

504万画素

カメラ制御

ISO感度

ISO 40~800

シーンセレクション

12パターン

露出制御

自動、シャッター優先、ISO感度優先、長時間AEモード

測光モード

マルチパターン、中央重点、画面全体平均、スポット

露出補正

±2EV、 1/3EVステップ

シャッタースピード

1/8 s(長時間AEモード)~1/42000 s

ホワイトバランス設定

オートホワイトバランス、太陽光、曇天、蛍光灯、ランプ

フォーカス制御

オート、 シングルAF、連続AF、マニュアル

画像フォーマット

出力画像フォーマット

JPEG(4:2:2)、Y/Cb/Cr、YUV、RGB、RAW、JPEG+YUV(サムネイル)

静止画データレート

5M pixel 15 frame/s JPEG output

動画データレート

SVGA 30 frame/s YCbCr output

HDビデオ出力

1080p(1920×1030 30 frame/s)、720p(1208×720 60 frame/s)
JPEG output、JPEG+YCbCr output

また、レンズの仕様表を下記に記載いたします。

表 4. カメラモジュールレンズ仕様表
機能 性能

レンズ構成

1/4インチ 4枚

有効焦点距離

2.74mm

F値

2.0±5%

画角

78°±3°

主光線角

<33.5°

歪曲収差

<1.5%

解像度

中心1100本、四隅900本

焦点距離

1.5m

焦点範囲

77.5~237.06cm

カメラボードの回路図のPDFは次のリンクから入手できます。 Spresense カメラボード回路図

2.2. Spresense ボードの使用方法について

2.2.1. Spresense メインボードへの遮光シールの貼付方法

Spresense メインボードをご使用の前には付属の遮光シールを下図のIC4を覆うように貼付してください。

HW shading seal
図 7. 遮光シールの貼付位置
shading seal picture
図 8. 付属の遮光シール
太陽光の当たる場所や強い光の下などでご使用いただくと誤動作の原因となりますので、遮光シールを必ず貼付してください。

再貼付の際は下記の遮光シールを推奨します。

製造会社 品名

シュアーテープ

CP-743

2.2.2. SpresenseメインボードとSpresense拡張ボードの接続方法

ここでは、Spresense拡張ボードとSpresenseメインボードの取り付け方法を説明します。

Spresense 拡張ボードには、メインボードと接続するためのスペーサーが4つ付属しています。

overview spacer
図 9. Spresense スペーサー

このスペーサーを Spresense 拡張ボードのスルーホールに差し込みます。スルーホールの場所に注意してください。

overview spacer through hole
図 10. スペーサーを差し込むスルーホールの位置

Spresense拡張ボードにスペーサーを取り付けた後に、Spresenseメインボードを取付ます。

overview spacer connection
図 11. Spresense 拡張ボードとスペーサーとSpresenseメインボードの位置関係
取付の際は、メインボードの向きに注意してください。USBコネクタを同じ方向にしてください。
overview spacer direction
図 12. Spresense 拡張ボードとメインボードの方向

USBコネクタが同じ方向に向いていれば、Spresenseメインボードと、Spresense拡張ボードの接続は完了です。

overview spacer finish
図 13. Spresense 拡張ボードとメインボード

取り付け終了後、再度SpresenseメインボードとSpresense拡張ボードを上下から指で押さえるなどして、B-2-Bコネクタの嵌合をご確認ください。 嵌合が不完全な場合、micro SDカードやオーディオ機能などのSpresense拡張ボード上の機能が動作しないことがありますのでご注意ください。

接続後はメインボードと拡張ボードを無理に取り外さないように注意してください。

2.2.3. SpresenseメインボードとSpresenseカメラボードの接続方法と準備

ここでは、SpresenseメインボードへのSpresenseカメラボードの取り付け方法を説明します。

カメラモジュールは静電気に非常に弱いため、カメラボードを取り扱う前には十分に接地された金属やコンクリート、アスファルト、木材、クロス紙などに 触れ、人体から静電気を除去してください。静電気が発生するとカメラモジュールの故障の原因となります。

カメラボードのフラットケーブルを下図のようにメインボードのカメラ専用コネクタ(CN5)に奥までしっかりと挿し込んでください。フラットケーブルには裏表があります。 電極の向きが下図と同じ向き(microUSBコネクタ側)になるように挿しこんで下さい。

HW camera setting ja
図 14. Spresense カメラボードの接続方法

なお、このカメラのレンズは小さな半透明の青いプラスチックフィルムで覆われています。これはレンズを保護するためのものですので、ご使用前には取り除いてください。 取り除く際は慎重にはがしてください。

2.2.4. Spresenseカメラボード側のフラットケーブルについて

カメラボードのフラットケーブルが挿し込まれているコネクタは破損しやすいため、カメラボードからフラットケーブルは極力取り外さないでください。 フラットケーブルを挿抜する際には、以下の指示に従ってください。

  • フラットケーブルを抜く場合

    • A. コネクタのレバーの両サイドに均一の力をかけて、基板と水平にゆっくりとレバーをスライドさせ押し出します。

    • B. フラットケーブルを引き抜きます。

  • フラットケーブルを挿す場合

    • C. コネクタにフラットケーブルを奥までしっかり挿入します。フラットケーブルの電極側が下記の図の場合、上を向くようにして下さい。

    • D. コネクタのレバーの両サイドに均一の力をかけて、基板と水平にゆっくりとレバーをスライドさせ押し込みます。

HW FFC camera side
図 15. Spresense カメラボード側のフラットケーブルの挿抜方法
カメラボードのコネクタのレバー操作はゆっくり慎重に行ってください。 レバーの両サイドに別々の力をかけたり、基板に対して水平方向以外の向きに動かすとレバー破損の原因となります。

また、カメラ用フラットケーブルが破損してしまった場合に代替品として使用できるフラットケーブルを以下に示します。できるだけ短いフラットケーブルをご使用下さい。

表 5. 代替えフラットケーブルリスト
製造会社 品名 長さ

Molex

15166-0211

102mm

Molex

15166-0213

127mm

Wurth Electronics

687620100002

100mm

2.2.5. Spresense ボードへの電源供給方法

Spresense ボードに電源供給する方法はいくつかあります。

spresense musb connect
図 16. Spresense USBポートからの電源供給
  • メインボード上にある micro USB コネクタによる電源供給がもっとも一般的な使用方法です。PCとメインボードを接続することで、電源供給とプログラミングの両方を行うことができます。この micro USB ポートは、PCからシリアルポートとして認識されます。

  • 拡張ボードのVOUTピンに5V±0.25V電源する方法で、他の基板などから電源を供給する場合に便利です。ただし、5V±0.25Vの範囲に満たない電圧の電源を接続した場合、CXD5602が破壊される恐れがありますので、取り扱いには十分に注意してください。

  • 拡張ボードが取り付けられていた場合、拡張ボード上にある micro USB コネクタからも電源供給をすることができます。拡張ボード側の micro USB ポートは、PCからは MSC(Mass Storage Class) と認識され、例えば、拡張ボード上のSDカードをストレージとして活用でき、データのやりとりを行うことができます。

Spresense ボードへのUSBコネクタからの電源供給には、USBモバイルバッテリーをご利用いただくことも可能です。ただし、オートパワーオフ機能を有するUSBモバイルバッテリーを使用した場合、Spresenseボードの消費電力が非常に小さいことから、オートパワーオフが有効になり、動作しない場合があります。確実に動作を期待する場合は、「常時ON」機能をもつUSBモバイルバッテリーをご利用ください。

上記の電源供給は複数から同時に行うことが可能です。

また micro USBコネクタを経由して電源を供給する場合には、できるだけ太く短い micro USBケーブルをご使用ください。

3. Spresense ソフトウェアについて

Spresenseソフトウェアでは、2つの開発環境を提供しています。

  • Spresense Arduino Libraryを用いた開発環境

    • Arduino IDEを用いたSpresenseのソフトウェアを開発環境です。Spresense Arduino Libraryを使うことで、比較的容易にソフトウェア開発を行うことが出来ます。

  • Spresense SDKを用いた開発環境

    • Spresense SDKは、NuttXが提供しているビルド環境(GNU Make)をベースとしたソニー独自の開発環境です。低レベルなAPIを提供し、省メモリや省電力、マルチコアの制御など、Spresenseが持つ性能を最大限引き出すことが出来ます。

ここでは、これら2つの開発環境の特徴や構造について説明します。

3.1. Spresense Arduino Libraryを用いた開発環境

Spresense Arduino Libraryは、Spresenseのアプリケーションソフトウェアを Arduino IDEを用いて開発するためのソフトウェアライブラリです。 Arduinoの標準APIと互換性があり、既に存在する多くのArduinoスケッチを利用することが出来ます。 そのため、Spresenseに馴染みのないユーザーでも、Arduinoでソフトウェア開発を行った経験がある方なら、簡単にSpresenseソフトウェア開発を始めることが出来ます。

このライブラリは、Arduino互換APIだけではなく、Spresenseの特徴的な機能であるGPS測位機能やハイレゾリューションオーディオ機能など、ソニー独自のAPIも提供しており、Arduino IDE を使って高機能なアプリケーションを 実現できます。

Spresense Arduino Libraryを用いて、ソフトウェア開発を行ってみたい方は、

を参照してください。

3.1.1. Spresense Arduino Libraryの構造

Spresense Arduino Library は、Spresense SDK を Arduino IDE から簡単に使えるように設計された拡張ラッパーライブラリです。内部では、NuttXが提供するTaskが動作しており、ArduinoのSketchはこのTaskの一つとして動作しています。Arduino IDEでのソフトウェア開発を行う場合、このNuttXを全く意識することなくプログラミングを行うことが出来るように設計されています。

overview software SDK structure
図 17. Spresense Arduino Library の構造

3.1.2. Spresense Arduino Library の特徴

Spresense Arduino Libraryは、Arduino 標準APIを備えており、 digitalReaddigitalWriteなどのAPIをSpresense上で利用することが出来ます。

また、SPIやSoftware SerialなどのArduino Libraryと同等のライブラリも準備しています。

Spresense Arduino Libraryは、Arduino APIとは互換性がありますが、ハードウェアの制約により全てのAPIが同一に利用できるわけではありません。詳細については、 Spresense Arduino Library でスケッチを書く際の注意事項について を参照してください。

Spresense Arduino Library は更に Arduino Library にはない以下のような機能を提供しています。

表 6. Spresense Arduino Library固有ライブラリ

Audio

ハイレゾリューションオーディオの再生・録音機能

GNSS

GPS測位機能

3.2. Spresense SDKを用いた開発環境

Spresense SDKはリアルタイムオペレーティングシステムの一つである NuttXをベースに、Spresense独自の機能を追加した開発環境です。 低レベルなAPIを提供しており、省メモリや省電力、マルチコアの制御など、Spresenseの性能を最大限引き出すことが出来ます。 マルチコアプログラミングや省電力、メモリの有効的な活用をしてみたい方は、Spresense SDK の利用を検討して見てください。

Spresense SDKを用いて、早速ソフトウェア開発を行ってみたい方は、

を参照してください。

3.2.1. Spresense SDKの構造

Spresense SDKは NuttXをオペレーティングシステムとして利用し、CXD5602 の機能を最大限利用するためのミドルウェアを備えたソフトウェアになります。

sdk overview
図 18. SDK 概要図

NuttXが持つドライバフレームワークに準じて実装された各種ドライバとその上に実装された各種ミドルウェアから構成されています。

3.2.2. Spresense SDKの特徴

Spresense SDKの特徴は以下の通りです。

オペレーティングシステムに NuttXを採用していることから、以下のような特徴を持っています。

  • マルチタスクRTOS

  • Kconfigを用いたコンフィグレーションによるプットプリントの最適化

  • 標準Cライブラリのサポート

  • C++言語のサポート

  • 各種ファイルシステムのサポート

  • 各種デバイスドライバのサポート

  • フラッシュメモリのサポート

  • USB機能(MSC 及び CDC)のサポート

また、これに加えて CXD5602 が持つ様々な機能をミドルウェアとして提供しています。

  • オーディオ録音再生機能

  • 非対称型マルチコアプログラミングライブラリ

  • GPSによる測位機能

  • パワーセーブ機能

そのほかにも、DMAコントローラ用ドライバなど、 CXD5602 が持つほぼ全ての機能を利用することが出来ます。

Spresense SDKが持つ代表的な機能は、サンプルコードとしてNuttXのBuiltInアプリ形式で提供されています。

詳しくは、

を参照してください。

4. リポジトリの構成について

Spresense はオープンソースプロジェクトです。関連するソースコードやドキュメントは、ローダーなどのプリコンパイルバイナリーを除き、GitHub にストアされます。

Spresense プロジェクトチームはあなたのコントリビュートを大いに歓迎します。各リポジトリにはコントリビューションガイドラインがあり、コントリビュートする方法が記載されていますのでコントリビューションを始める際に是非お読みください。そして、あなたのコントリビューションを心よりお待ちしております。

このドキュメントは、Spresenseプロジェクトに関連したリポジトリの構成について記述しています。

Spresenseボードの使い方については、次のリンクを参照してください。

4.1. 各リポジトリの概要

グループ リポジトリ名 サブリポジトリ 説明

Spresense Arduino Library
リポジトリ

Spresense Arduino Library のベースリポジトリです

spresense-sketches

Spresense Arduino Library のためのサンプルスケッチです

Spresense SDK
リポジトリ

Spresense SDK のベースリポジトリです

spresense-nuttx

Spresense NuttX のクローンリポジトリです

ハードウェア設計書 リポジトリ

あなた独自のボードを設計する為の、Spresense 基板回路図、部品リストなどへのリポジトリ

4.1.1. ソースコード取得の仕方

Spresense Arduino Library ソースコードの取得
$ git clone https://github.com/sonydevworld/spresense-arduino-compatible.git
$ git clone https://github.com/sonydevworld/spresense-sketches.git
Spresense SDK ソースコードの取得
$ git clone --recursive https://github.com/sonydevworld/spresense.git