LoginSignup
5
3

More than 1 year has passed since last update.

SPRESENSEのはじめかた

Last updated at Posted at 2021-11-25

 概要

==限定共有資料だったものを 2021/11/24改版 し公開します==
SPRESENSE開発をされる方、ハンズオン参加者向けの情報になります。
情報の取得先を結構探してしまったので、備忘録を兼ねて記載します。

SPRESENSE とは

SPRESENSEはソニーセミコンダクタソリューションズ株式会社が開発されたIoT向けボードコンピュータです。
乾電池で動作する省電力デバイスなのに、簡単な画像解析などAIモデルを実行できるというところ。
こちらが実現できるかも ということで興味を持ったのがきっかけです。郵便受け でエッジコンピューティング(IoTLT/RaspberryPiでエッジAI 郵便物認識/Tensorflow)
ハードとしては、GPS受信機能とハイレゾリューション・オーディオコーデックを搭載する等々、私なんぞには語り尽くせない、こだわりのデバイスとなっています。

製品仕様

製品仕様
- MCUは、1つのGPS受信コア、1つのArm® Cortex®-M0+コア、6つのCortex-M4コア(FPU機能搭載)を搭載
- 各コアの間はクロスバススイッチで接続(どのコアにどの処理をさせるかを選択可能)
- GPS受信機能は米国のGPSとロシアのGLONASSに対応、今後、中国のBeiDouや欧州のGalileoにも対応予定

私が購入した理由

SPRESENSEが、AIを利用可能な省電力エッジデバイスだと、Maker Faire Kyoto 2019で知ったからです。
Sonyが開発したニューラルネットワークを直感的に設計できるツールNeural Network Consoleで学習したモデルを、動作させることができるようになった(とのお話でした)。

開発者用サイト

Developer Tools - Sony Developer Worldを参照する必要があります。

開発環境の準備 IDE版

将来的な作業を考慮してIDE版の開発環境を、Spresense SDK スタートガイド (IDE 版)の通り導入します。
Virtual Box上にUbuntu Desktop 20.04.3 LTSを構築します。

Ubuntu Desktop 20.04.3 LTSをダウンロード

Ubuntuを入手するからUbuntu Desktop 20.04.3 LTSをダウンロードします
WS20211124_000006.JPG

Oracle VM VirtualBoxのインストールと準備

Oracle VM VirtualBoxからダウンロードし、インストールします
WS20211124_000008.JPG
Oracle VM VirtualBoxを起動し、仮想マシンを新規作成します
PCがインターネットに接続されていることを確認してください
WS20211124_000000.JPG
名前は何でも良いです
WS20211124_000009.JPG
メモリーサイズは4096M以上にしてください
WS20211124_000002.JPG
仮想ハードディスクを作成します
WS20211124_000003.JPG
ファイルタイプはVDIにします
WS20211124_000004.JPG
物理ハードディスクは可変サイズにします
WS20211124_000005.JPG
サイズは30GB以上にし、作成します
WS20211124_000014.JPG

仮想マシンへUbuntuをインストール

メディア設定と起動

新規作成した仮想マシンをクリック、設定ボタンを押します
WS20211124_000015.JPG
ストレージ > コントローラIDEの「空」> 属性の高額ドライブをIDEプライマリマスター へ変更(IDEセカンダリマスターになっている場合)
DVDアイコンボタン > ディスクファイルを選択
WS20211124_000022.JPG
ダウンロード済のUbuntu Desktop 20.04.3 LTSファイル(拡張子.iso)を選択します
WS20211124_000011.JPG
OKボタンで閉じます
WS20211124_000018.JPG

Ubuntuのインストール

★注意★普通に進めてしまうと画面の解像度が低く、インストールができません
起動Ubuntuのインストール画面が立ち上がりますので、Escボタンをすぐに押します

解像度の変更を行うため 一度、Ubuntu インストールを中止させる

仮想マシンが正しいことを確認し、起動ボタンを押します
WS20211124_000021.JPG
以下の画面になったらEscボタンをすぐ押し、インストールを中断します
WS20211124_000006.JPG
上手く行くと、この画面になります
画面上のポップアップは説明を読んだ後、×で消して構いません
WS20211124_000010.JPG

settings アプリを起動し解像度を変更

左下のボタンからアプリ一覧を表示させます
WS20211124_000010.JPG
検索欄にset と入力、settings アプリを起動します
WS20211124_000011.JPG
左側のメニューから Displays > Resolution を選択
Resolution を 1024 x 768(4:3) に変更し、右上の Apply ボタンを押します
WS20211124_000012.JPG
表示に問題がなければ Keep Changes を押します
WS20211124_000013.JPG

Ubuntu インストール

ディスクトップのアイコンからインストールを再開します
WS20211124_000014.JPG
左側のメニューから 日本語 を選択し、 続ける ボタンを押します
WS20211124_000016.JPG
japanese を選択し、 続ける ボタンを押します
WS20211124_000017.JPG
通常のインストール、 Ubuntuのインストール・・・ をチェックし、続ける ボタンを押します
WS20211124_000018.JPG
ディスクを削除してUbuntuをインストール を選択し、インストール ボタンを押します
WS20211124_000019.JPG
続ける ボタンを押します
WS20211124_000020.JPG
Tokyo を選び 続ける ボタンを押します
WS20211124_000021.JPG
それぞれの項目を記載し、後で必要になるためメモします、 続ける ボタンを押します
WS20211124_000022.JPG
インストールが開始されます
WS20211124_000023.JPG
今すぐ再起動 ボタンを押します
WS20211124_000024.JPG
メディアを取り出せと表示され再起動が止まりますが Enter をそのまま押します
WS20211124_000025.JPG
もし、駄目な場合は 仮想ドライブからディスクを除去 を試してください
WS20211124_000026.JPG
起動後、アカウント名を左クリックすることで、パスワード入力欄が出てきます
WS20211124_000000.JPG

 Ubuntu のセットアップ

ディスプレイ設定の変更

インストール時と同じ手順で、ディスプレイ設定を変更します

言語サポートのインストール

WS20211124_000001.JPG
WS20211124_000002.JPG
ユーザーパスワードを入力し、認証 ボタンを押します(以降、同様に対応下さい)
WS20211124_000003.JPG
システム全体に適用 ボタンを押し、閉じる ボタンを押します
WS20211124_000004.JPG
不完全な言語サポート のアップデート情報ウインドウを閉じてください

ソフトウェアの更新 を実行する

最新の状態に更新するため、今すぐインストールする ボタンを押します
WS20211124_000005.JPG
状況は左端のメニューからこのアイコンを左クリックするとわかります
WS20211124_000007.JPG
時間がかかるので、終わるまでしばらく待ちます。
WS20211124_000006.JPG
注意:snapdの更新処理が止まってしまったら、キャンセルまたは(×)ボタンで終了し、端末で以下のコマンドを入力します
WS20211124_000008.JPG
WS20211124_000009.JPG

手順記載についての説明:
以下の記載では、Ubuntu を起動 > 端末 アプリを起動 > 以下の入力コマンドの内容を入力します
$は入力しなくてよいです
先頭に$が無い行は入力後の応答・ログを参考のため記載している行です
この行は入力する必要はありません、また、個々の環境で出力される詳細は異なります

$ 入力コマンド
応答・ログ(参考情報)

入力するコマンド:

sudo fuser -vki /var/lib/dpkg/lock
sudo apt purge snapd
sudo dpkg --configure -a
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
sudo apt install snapd

実行例:

$ sudo fuser -vki /var/lib/dpkg/lock
[sudo] tag のパスワード:
                     USER        PID ACCESS COMMAND
/var/lib/dpkg/lock:  root      10420 F.... dpkg
プロセス 10420 をkillしますか? (y/N) y
$ sudo apt purge snapd
[sudo] tag のパスワード:
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
以下のパッケージは「削除」されます:
  snapd*
アップグレード: 0 個、新規インストール: 0 個、削除: 1 個、保留: 3 個。
この操作後に 134 MB のディスク容量が解放されます。
続行しますか? [Y/n] Y
(データベースを読み込んでいます ... 現在 193806 個のファイルとディレクトリがインストールされています。)
snapd (2.51.1+20.04ubuntu2) を削除しています ...
<省略>
$ sudo dpkg --configure -a
$ sudo apt update
<省略>
$ sudo apt upgrade
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています
状態情報を読み取っています... 完了
アップグレードパッケージを検出しています... 完了
以下のパッケージはアップグレードされます:
  python3-software-properties software-properties-common
  software-properties-gtk
アップグレード: 3 個、新規インストール: 0 個、削除: 0 個、保留: 0 個。
101 kB のアーカイブを取得する必要があります。
この操作後に追加で 14.3 kB のディスク容量が消費されます。
続行しますか? [Y/n] Y
<省略>
$ sudo apt dist-upgrade
<省略>
$ sudo apt install snapd
<省略>

Guest Additions のインストール (ホストOS用オプション機能)

Ubuntu起動画面 > デバイス > Guest Additions CDイメージの挿入...
WS20211124_000033.JPG
実行 ( 1回 実行 ボタンを押したら、次に立ち上がってきた場合はキャンセルで良い )
WS20211124_000034.JPG
WS20211124_000035.JPG
実行 ボタンを押すと 端末 アプリが立ち上がりインストールが開始します
Press Return ・・・が表示されたら、return キーを押して端末を閉じます
WS20211124_000036.JPG

Ubuntuを電源オフ、メディアを再起動

右上の電池マークを左クリック > 電源オフ します
Ubuntuが停止したら、取り外さないとUbuntuの起動ができなくなるため、設定 から Guest Additions CDイメージ を取り外します
WS20211125_000002.JPG
その後、Ubuntuの起動します。
ウインドウの拡大縮小などが出来るようになっているはずです

USBの設定

同様にシステムを停止します

ホストOSがWindowsの場合
Spresense ボードをUSBシリアルで接続するために、ドライバをインストール
Windows 7/8/8.1の場合 CP210x USB to serial driver for Windows 7/8/8.1
Windows 10の場合CP210x USB to serial driver (v10.1.3) for Windows 10
Windows 10の例:
ダウンロードファイルを解凍し、フォルダCP210x_Universal_Windows_Driverを開く
64bitの場合は CP210xVCPInstaller_x64.exe を起動
32bitの場合は CP210xVCPInstaller_x86.exe を起動
WS20211124_000038.JPG

SpresenseをUSBケーブルでホストPC(Windows)に接続します
デバイスマネージャーで Slicon Labs CP210・・・が認識されます
WS20211124_000039.JPG
VirtualBoxの仮想OS > 設定 > USB > 右端上から2つ目(USBと+のアイコン) を左クリック
WS20211125_000000.JPG
Slicon Labs CP210・・・を左クリック > USBデバイスフィルタに追加 される
OK ボタンで画面を閉じます
WS20211125_000001.JPG

開発環境 のセットアップ

開発用アプリケーションのインストール

makeなど開発に必要なものが無いため、インストールします

$ sudo apt-get install build-essential

シリアル通信の設定

ログイン中のユーザーを dialout グループに追加し、再起動します

$ sudo usermod -a -G dialout ログイン中のユーザー名
$ sudo shutdown -r now

例:

$ sudo usermod -a -G dialout tag

起動後、ログインし、Ubuntu 上でのシリアルポート名を確認
/dev/に出力されたttyUSB??を追加したものがシリアルポート名です
以下の例では シリアルポート名は /dev/ttyUSB0 になります

$ dmesg | grep "cp21.*attached"
[    7.306676] usb 1-2: cp210x converter now attached to ttyUSB0

Spresense 開発環境に必要なアプリケーションのインストール

必要なツールを以下のコマンドでダウンロード、インストールします
しばらく時間がかかります

$ mkdir -p ~/Dev/Spresense
$ cd ~/Dev/Spresense
$ wget https://raw.githubusercontent.com/sonydevworld/spresense/master/install-tools.sh
$ bash install-tools.sh

注意:Proxy設定が必要なネットワーク/ネットワークエラーになる場合、以下のコマンド投入後にwget を再実行すること

export http_proxy=http://プロキシーサーバー名/IPアドレス:ポート番号
export https_proxy=http://プロキシーサーバー名/IPアドレス:ポート番号

ツールを利用するための設定を反映

$ source ~/spresenseenv/setup
$ cp ~/.bashrc ~/.bashrc.org
$ echo "source $HOME/spresenseenv/setup" >> ~/.bashrc

Spresense SDK リポジトリからソースコードをダウンロードし、開発環境をビルド、インストールします

$ cd ~/Dev/Spresense
$ git clone --recursive https://github.com/sonydevworld/spresense.git

VSCode のインストール

VSCode は様々な環境で動作する開発者向けのツールです
編集、デバッグ、デプロイなどが、1つのアプリケーションで実施でき便利です

VSCodeのインストーラをダウンロード

注意) VirtualBoxのUbuntu にログインして作業します
画面左端からFireFox(Webブラウザ)アイコンをダブルクリックし起動します
WS20211125_000000.JPG
VSCodeウエブサイトのURL https://code.visualstudio.com/ を入力しアクセス
WS20211125_000001.JPG
Ubuntuは .deb の方を左クリック
WS20211125_000002.JPG
練習のために、今回はファイルを保存(ダウンロード)を選び OK ボタンを押します
WS20211125_000004.JPG
ダウンロードが完了後、完了しました表示が出ます
WS20211125_000005.JPG
ファイルを確認するため 端末 アプリを起動 (左下 > 端末 を検索)
WS20211125_000006.JPG
ダウンロードしたファイルを確認
英語と日本語の切替は control + space(controlとspaceを同時に押す)

$ cd ~/ダウンロード
tag@IoT-Ubuntu:~/ダウンロード$ ls
code_1.62.3-1637137107_amd64.deb

ダウンロードしたファイルから VSCode をインストール

$ sudo apt install ./code_1.62.3-1637137107_amd64.deb

VSCode の日本語化

Japanese Language Pack をインストールして表示内容やメニュー等を日本語にします

インターネットに接続した状態で VSCode を起動します 画面左下 > VSCode を検索
WS20211125_000008.JPG
起動後、しばらく待つと右下にJapanese Language Pack をインストールして再起動 が出ます
表示されない、消えた 場合は VSCode を × で終了後、再度起動してください
WS20211125_000010.JPG
自動的に VSCode が再起動され、表示が日本語に変わります
WS20211125_000013.JPG

VSCode に Spresense 拡張機能をインストール

Spresense 開発を VSCode で行えるようにSpresense 拡張機能をインストールします

VSCode 左端の 拡張機能 アイコンを押す
WS20211125_000014.JPG
spresense を検索し、インストール
WS20211125_000015.JPG
インストールが開始されます
WS20211125_000016.JPG

ワークスペースの作成

Spresense 拡張機能の Spresense: Workspace Setup Wizard を使って開発用のディレクトリを作成します
今回作成するワークスペースは以下の構成になります
・Spresense SDK パス
 ~/Dev/Spresense/spresense
・プロジェクトフォルダーパス(新規に作成します)
 ~/Dev/Spresense/myproject
・ワークスペースファイル(ワークスペース情報の保存先、後ほど作成)
 ~/Dev/Spresense/myproject.code-workspace

F1キーを押し、検索画面へSpresense Workspaceと入力
Spresense: Workspace Setup Wizardを選択し、起動します
WS20211125_000017.JPG
それぞれの 参照 ボタンを押し、ディレクトリを選択していきます
WS20211125_000020.JPG
Spresense SDK のデイレクトリを開き、右上の OK ボタンを押す
WS20211125_000021.JPG
プロジェクトフォルダーパス(新規に作成します)
~/Dev/Spresense に、myproject ディレクトリを新規作成
WS20211125_000029.JPG
プロジェクトフォルダーパス(新規に作成します)を開いた状態になるので、右上の OK ボタンを押す
WS20211125_000030.JPG
作成 ボタンを押します
WS20211125_000031.JPG
信頼しますか と聞かれるので はい ボタンを押します
WS20211125_000026.JPG
作成したワークスペースをメニューの ファイル > 名前を付けてワークスペースを保存 で、保存しておきます
WS20211125_000032.JPG
~/Dev/Spresense に、myproject.code-workspace で保存
WS20211125_000034.JPG

Hello Spresense!!! の表示

アプリケーションコマンドの追加

・追加対象プロジェクトフォルダー
 ~/Dev/Spresense/myproject
・アプリケーションコマンド名
myapps
F1キーを押し、検索画面へSpresense projectと入力
Spresense: Add to project holderを選択し、起動します
WS20211125_000035.JPG
次へ を押します (複数出る場合は、追加したい先を選択すること)
WS20211125_000036.JPG
アプリケーションコマンド を選択し、次へ ボタンを押します
WS20211125_000037.JPG
アプリケーションコマンド名 myapps を入力し、作成 ボタンを押します
WS20211125_000038.JPG
myapps_main.cが開きます
WS20211125_000039.JPG

プログラムを修正

myapps_main.c を全て削除し、以下のプログラムを記載します

myapps_main.c
#include <sdk/config.h>
#include <stdio.h>

int myapps_main(int argc, char *argv[])
{
  printf("Hello Spresense!!!\n"); 
  return 0;
}

WS20211125_000040.JPG
ファイル > 保存 もしくは ctrol + s で変更を保存します

ビルドのコンフィグレーション

ビルド( プログラムをコンパイルしSpresenseが実行できるデータにすること )を行うための事前設定をします

画面右下に Cにお勧めの拡張機能をインストールしますか? が出ている場合は、インストールしてください
WS20211125_000001.JPG
C/C++の拡張パックがインストールされます
WS20211125_000002.JPG

F1キーを押し、検索画面へ spresense sdk と入力
Spresense: SDK Config を選択し、起動します
WS20211125_000041.JPG
myprojectを選びます
WS20211125_000006.JPG
コンフィグレーションメニューの起動に少し時間がかかります
WS20211125_000007.JPG
コンフィグレーションメニューが表示されたら 新規追加 を左クリック
WS20211125_000008.JPG
何も選択せずに OK を左クリック
WS20211125_000009.JPG

プロジェクトのビルド

注意:修正したプログラム+Spresenseで動作するためのプログラムがビルド対象になるため、環境によっては数十分かかります
VSCode左端、一番上のアイコンを左クリックしエクスプローラーを開く
myproject (ビルドしたいプロジェクトフォルダー)の上で右クリック、プロジェクトメニューから Spresense: アプリケーションのビルド を選択
WS20211125_000012.JPG
VSCode右下に ビルドしています が表示されます
WS20211125_000013.JPG
こちらの画面は x で閉じても構いません
WS20211125_000014.JPG
ビルドが終了するまで ターミナルはタスクで再利用されます、閉じるには任意のキーを押して下さい。 が表示されるまで 待ちます
WS20211125_000015.JPG
VSCodeのウインドウを左クリックし、任意のキー(Enterなど)を押し、ターミナルを閉じます
エクスプローラーに out配下のファイルが作られたことを確認します
WS20211125_000016.JPG

Spresenseボードへの書き込みと動作確認

SpresenseをUSBケーブルでPC接に接続します
Ubuntu がシリアルポートを認識していることを確認

$ dmesg | grep "cp21.*attached"
[    7.306676] usb 1-2: cp210x converter now attached to ttyUSB0

F1キーを押し、検索画面へ spresense serial port と入力
Spresense: シリアルポートの選択 を選択し、起動します
WS20211125_000017.JPG
シリアルポートを選択します、Ubuntuが認識しているものと同じであることを確認
WS20211125_000018.JPG

Spresenseへのブートローダの書き込み

F1キーを押し、検索画面へ spresense bootloader と入力
Spresense: ブートローダの書き込み を選択し、起動します
WS20211125_000019.JPG
ブートローダのインストールには別途ダウンロード・・・ で OK ボタンを押します
WS20211125_000020.JPG
Webブラウザが起動され表示されたページからfirmwareをダウンロードします
WS20211125_000021.JPG
内容を確認し Accept ボタンを押します
WS20211125_000022.JPG
ダウンロード後に表示される画面で ファイルを保存する を選択し OK ボタンを押します
(~/ダウンロードに保存されます )
WS20211125_000025.JPG
画面左端のアイコンからVSCodeのウインドウに戻り、画面右下の ブートローダーのインストールを・・・の OK ボタンを押します
WS20211125_000026.JPG
~/ダウンロードにダウンロードしたファイルを選択し、画面右上の 開く を左クリック
WS20211125_000028.JPG
ブートローダがSpresenseにインストールされます
終了したらターミナル画面からメッセージが消えます
WS20211125_000030.JPG

ビルドバイナリの書き込み

VSCode左端、一番上のアイコンを左クリックしエクスプローラーを開く
myproject (ビルドしたいプロジェクトフォルダー)の上で右クリック、プロジェクトメニューから Spresense: ビルドと書き込み を選択
WS20211125_000031.JPG
右下のターミナルにビルドと書き込みのログが出力されます
WS20211125_000032.JPG
Spersenseへ書込み(インストール )中
WS20211125_000000.JPG
終了したら、シリアルターミナルが自動的に起動されます
WS20211125_000001.JPG
シリアルターミナルで myapps を入力しエンターキーを押すと
Hello Spresense!!! と表示されます
WS20211125_000003.JPG

参考

Developer Tools - Sony Developer World
Spresense SDK スタートガイド (IDE 版)

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3