SPRESENSEで始めよう!

日本製マイコンを世界のスタンダードにしようぜ

SPRESENSEで音を奏でよう・・・序章

今宵も見よう見まねで何かする

こんばんは。MYONです。今夜はSpresenseでビートボックスを作ろう。そうしよう。

元記事はys_taroさんのブログから

makers-with-myson.blog.ss-blog.jp

いいですね。息子さんも喜ぶでしょう。父は全然電気の事が分からない、家族親戚ほぼ文系ということで、何かあるたびに呼ばれて「俺は電気屋じゃねぇ!」となったことがありますが、修理することも趣味なのでヨシとしましょう。

さて、今回から工作もしていきます。ゴッドハンダのサイトでハンダ付けの腕を磨く日々ですが、今回はブレッドボードで再現してみましょう。

ちなみに、上記のサイトの必要なデータはGithubにあるのですが、もちろんアカウントは持ってないので、サクッと作りました、ええ。

まぁアカウントはなんぼあってもいいですからね。

今回は先にメインボードに書き込みしていきましょうか。

拡張ボードに繋がるGPIOを何に割り当てるかはこのスケッチで決まるわけで、そう、Spresenseにも心の準備をしてあげないと、いきなり繋げると悲鳴を上げるかもしれないですからね。

ではZIPで落とした一式の中からスケッチを入れて、と。

はい、SDカードに最初にMP3を入れておけと。直下でいいのかな。

コピー開始。完了。

さてArduinoIDEでスケッチを書きこ・・・めないですね。

何かアプリケーションでハンドルされていると。ええ、前回のスケッチ、自動演奏が動いている状態のままでございます。

これどうすればいいのよ。

とりあえずArduinoIDE再起動が吉ですね。

ほら、次へ進んだ。さっきよりド派手な真っ赤なメッセージを貰うことが出来ました。

'SDClass'does not name a type

なんですか、これは。穏やかじゃないですね。

SDClassってなんじゃ。そんなクラスメートはおらん。検索しまくり、

garretlab.web.fc2.com

このライブラリを使うためには、以下を宣言する。

#include <SPI.h>
#include <SD.h>

なるほど、分からんが、恐らくSpresense用のライブラリはほぼ導入済のはずなので、宣言出来てるかソースを見てみよう。この宣言通りでいいかはともかく。

#include <Audio.h>

SDClass theSD;
AudioClass *theAudio;

うむぅ。確かに宣言されておらぬ。間違って消してしまったのかな、記憶にないが。

それともSpresenseの場合はAudioライブラリを呼び出せば含まれているとか。

で、Audioライブラリが未導入である、と。

分からん~(泣)

ほならね、これでどうだ?!

f:id:MYON:20220215221847j:plain

SDライブラリinclude

おほほほ・・・!!!進みましたわ!んで、一難去ってまた一難。お次のお客様は

'reference to "File"is ambigyous'

ちょっと何言ってるか分からない。ボーイズビーアンビシャス?

「「ファイル」への参照はあいまいです」

はい。左様でございますか。

同様に、Fileなるライブラリがあったのでインクルード。これでどうだ!!!

ダメじゃ。あいまいってことはだ、何か欠けておるのだな。

定義っぽいところが

File file, rFile, lFile;

で、エラーが出るのは

File& soundOpen(char* name) 

ということはですよ、そう、分からん(笑)ライブラリのリファレンス検索開始!

Arduinoライブラリにはないな、うん、「提供された」とあるから、Spresenseの方のリファレンスを探すべきということね。

2.6. File ライブラリ

 2.6.1. 概要

File ライブラリは各種ストレージから共通に利用されるライブラリです。 File オブジェクトは、SDHCIFlasheMMC ライブラリから open() 関数によって生成されます。 本ライブラリは、オープンされた File オブジェクトに対してファイル操作を行う機能を提供します。

Spresense Arduino 開発ガイド

あったあった。

2.6.2. 機能

各種APIの詳細は、APIリファレンスマニュアル File Library API を参照してください。

File インスタンス名が myFile のとき、次のようにファイルをオープンします。

#include <SDHCI.h>
SDClass SD;
File myFile;

  myFile = SD.open("test.txt");

んん??!!FileじゃなくてSDHCIをインクルードすればええの?やってみよう。

だ、ダメだ・・・

リファレンス見てもFileにはsoundOpen()関数は提供されてないし?

いい感じにドツボにハマった。今日は寝よう!おやすみなさい~

【重要】Spresenseは拡張ボードから(力づくで)外さない

もう二度とお前を離さないぜ

とても重要なこと。日本語の「ハードウェアについて」だと

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

  メインボードと拡張ボードを着脱する際は負荷がかからないように慎重に行ってください。

Spresense について

となっていて、拡張ボードとメインボードは脱着可能のように思えます。

が。

Please confirm the mating of the B-2-B connector by pressing the Spresense main board and Spresense expansion board from the top and bottom again after completing the installation etc. Please note that the function on the Spresense expansion board such as the micro SD card and the audio function may not work if the mating is incomplete.

  Do not separate the Spresense main board from the extension board by force once mounted.

Hardware overview - Spresense - Sony Developer Worl

英語版だと、二度と離すな!と❣マーク付きで警告されているのでありんす。

f:id:MYON:20220215073632j:plain

Do not separate the Spresense

どっちが正しいのだ?!悲しいかな、やっぱり先行するのは英語ドキュメント。

論文でも何でも英語読めってことよ。というわけで、英語の方を信頼してみる。

慎重になるに越したことはないですからね。

バリバリ付け外しして平気な方を見つけたらまた考えを改めます(笑)

ん・・?いやまて

「by force」・・・力づくで

あー、無理やり離すんじゃねーぞ、と。日本語と同じですね!ちゃんちゃん(笑)

SPRESENSEでシンセサイザー(習作)後編

今日こそはSPRESENSEで音を出します?!

こんばんは。MYONです。最高の夜ですね?音を出しましょう、音を。

試そうとしている、習作を作ろうとしているのはmiya's Websitさんのサイト

miya's Lair

から、

cellspe.matrix.jp

私もやってみよう!ということです。

スケッチをコピペするだけっしょなんて言わないで。初めて扱うボードは電源入るかどうかもドキドキしたんですから。ワクワクね。まぁボードに何か書き込んだこともないし。ハンダ付けしたり配線したりはするんだけど、中身はまだノータッチだったので。

振り返りますと

①届いた!アンボックス(静電気の季節だから怖いね。※カメラパーツは特に注意とのこと

②IC4に遮光シールを貼る(ピンセットや拡大メガネが欲しい今日この頃

Spresense について

③スタートガイドに従ってSpresenseArduinoIDE環境を準備

・ArduinoIDEインストール、Spresenseボードマネージャインストール、

 ブートローダー書き込みなど

Spresense Arduino スタートガイド

④スタートガイドに従えばLチカまで完了

⑤拡張ボードを追加(スペーサはおまけで付いてきます・・・買っちゃったよw

Spresense について

⑥SDカード認識(やらんでも良かったかも知れない・・・

とりあえずSDHCI ライブラリから3 つのスケッチのサンプルを実行

Spresense Arduino 開発ガイド

DSPコーデックをSDカードのBINディレクトリ以下にインストール

Spresense Arduino IDE デベロッパーガイド - Spresense - Sony Developer World

さて、準備は万端。メインボードにUSBつなげて、ArduinoIDEを立ち上げよう。

miya'sさんのサイトからソースコードをスケッチにコピペして。

拡張ボードのイヤホン端子から音を拾えるようにして。

さて、書き込み完了!オートリブートされ、4つのLEDが点滅を始めた・・・

聞こえる!聞こえる!カッコイイ!これはスゴイ。

miyaさんありがとうございます!これはいろいろ楽しいことが出来そうですね。

youtu.be

SPRESENSEでシンセサイザー(習作)中編・ArduinoIDEでDSPインストール

習うより慣れよ 学ぶは真似るから と言う訳で

無事SDカードも認識されましたね?次はどうするのさ。

DSPコーデックをSDカードのBINディレクトリ以下にインストール、でした。

方法ははい、こちら。

Spresense Arduino IDE デベロッパーガイド - Spresense - Sony Developer World

3.1.3. DSP Codec バイナリのインストール

オーディオの再生・録音機能を動かす際に、適切な DSP バイナリファイルを下記の手順に従ってインストールしてください。

表 1. DSPの種類

DSPファイル名

DSP インストーラ

説明

MP3DEC

mp3_dec_installer

MP3 オーディオ再生で使用します

WAVDEC

wav_dec_installer

WAV (PCM) オーディオ再生で使用します

MP3ENC

mp3_enc_installer

MP3 オーディオ録音で使用します

SRC

src_installer

WAV(PCM) オーディオ録音で使用します

DSP バイナリのインストール先は、SD カード、もしくは、フラッシュを選択できます。インストール手順は、単純に PC を使って SD カードへファイルをコピーする方法と、DSP インストーラーと呼ばれるスケッチを用いた方法の二通りがあります。

えーと、なんでしょう。全部入れとくか!SDカードなら32Gもあるし。大丈夫や。

「SD カードへ DSP ファイルをコピーしてインストールする場合」ってのを読んだけど

ArduinoIDEのインストーラー使った方が断然楽な気がする・・・

batファイルはまぁいいとして、

pickup_dsp.bat をダブルクリックで実行するとDSPファイルが dsp_ver1.x.x にコピーされます。

????いやそれ、どこに出来るん?全然分からん。分からんので、試してみる。

なんぞこれ、同じフォルダ内に「dsp_ver」なるフォルダが現れたぜ。

中を見るぜ!空だぜ!(笑)
そもそも

%userprofile%\AppData\Local\Arduino15\packages\SPRESENSE\hardware\spresense

この場所にArduino以下が存在しないのよね。何かまたやってないことがあるのね。

ってことはArduinoIDEでも見つからない気もするけど、そっちにしてみよう。

f:id:MYON:20220213233528j:plain

ArduinoIDEインストーラ

?!おるね。既にSPRESENSEは接続してあるので、よし、上から順にinstall開始だ。

うむ。スケッチが出てきたので、コンパイル&書き込み「⇒」ポチっとな。

シリアルモニタ起動・・・

f:id:MYON:20220213234120j:plain

DSPをインストール

よしよし順調。SDカード「1」を選んで、送信・・・

f:id:MYON:20220213234430j:plain

DSPコーデックインストール成功

やったぜ。これでUSBをメインから拡張につなぎなおせばPCからもファイルが見えるだろう。確かめずに次へ行くぜ。あと3つ。

おっとエラーだ。「COMポートが開けません」って、あぁ、シリアルモニター起動したままのせいかな?閉じて、再トライ。成功。なるほどそういうことね、完全に理解した(笑)

4つ完了した。めんどくさがりだけどUSBつなぎなおしてSDカードの中を確かめてみようじゃないの。あれ?SDカードリーダーになってくれない。

前回書き込んだスケッチは消えてしまうのか?

その辺の仕組みは後から調べるとして、カードリーダーで読んでみよう。

f:id:MYON:20220213235614j:plain

SDカードのBIN直下

やったぜ。自動演奏スケッチ書き込んで試すつもりだったけどもう眠いぜ。

毎日一歩ずつ。地道に行こう。徹夜してロクなことはないからね。

えー、次回こそFMシンセ自動演奏まで行きますぞ。おやすみなさいませ。

 

SPRESENSEでシンセサイザー(習作)前編・先ずSDカードを認識させよう

SPRESENSEでシンセサイザーを作りたい!

あのSONYが作るSPRESENSEなら、やっぱり音楽。
シンセサイザーメーカーではないけれど、やれば出来るっしょ。

ということで、SPRESENSE シンセサイザーで検索してみると。

makers-with-myson.blog.ss-blog.jp

おおおおおお!!!!!!!!!!!!!これこれ。

デモ演奏もかなりグッとくるサウンド。もしや内部生成?ん、MP3を使う

ダブルプレイヤー機能かな。録音機能も優れているから、これ応用したらサンプラーにもなりそうね。とにかく楽しげなので作ってみよう。Githubもあるし。

さらに検索。

cellspe.matrix.jp

おおおおおお!!!!!!!!!!!!!こちらは内部生成したりいろいろしてる。

こちらは工作不要なので、まずこちらから試してみる。

必要なのは

  1. PRESENSEメインボード、
  2. 拡張ボード、
  3. USBケーブル、
  4. ステレオヘッドホン(ミニプラグ)、
  5. microSDカード。

ArduinoIDE等の準備に加えて、DSPコーデックをSDカードにインストール。

DSPコーデック、内臓SPIフラッシュにも書き込めるみたいだけど、やっぱり処理速度変わるのかな。低レイテンシが必要なエフェクター等に応用する時は比較検討してみよう。

ではFMシンセから作ってみる。その前に・・・

SDカードの読み書き、認識が出来るようにしよう

まずSDカードが認識できるようにしないと始まらない。以下の作業で、PCから読み書きできるようになる・・・のか?

Spresense Arduino IDE デベロッパーガイド - Sony Developer World

eMMC ライブラリは eMMC Add-on ボード (今後発売予定) の eMMC デバイスにアクセスするためのライブラリです。

eMMC ライブラリは、Arduino SD ライブラリ に類似した API 構成となっており、オブジェクト名を SD から eMMC へ置き換えることで、SD ライブラリと同じインターフェースを用いて eMMC デバイスへアクセスすることができます。

また、追加機能として、USB MSC (Mass Storage Class) 機能をサポートしています。 Spresense 拡張ボードにある USB と PC を接続し、beginUsbMsc() を呼び出すことで、PC から eMMC デバイス上のファイルに直接アクセスすることができます。

なるほど、分からん(笑)多分早い話、これを入れればSPRESENSEをSDカードリーダーとしてもつかえるようになるってことよ。知らんけど。(のちに間違いに気付く)

うん、良いサンプルがある

f:id:MYON:20220213011139j:plain

USB MSC機能のサンプルスケッチ

一通り試してみる。ArduinoIDEを立ち上げる。
USBはどっちにつけるんだ。とりあえず拡張ボードではなくメインボードに挿す。

フォーマットサンプルを新規スケッチにコピペ。コンパイル。ボードに書き込み。

書き込み成功。リブートされた。さて・・・

フォーマットサンプル。出来てるのか?PCからは見えない。

読み書きサンプル。よく分からん。

USB MSC 機能のサンプル。eMMC デバイスが PC 上のドライブとしてマウントされ、PC から eMMC デバイスに直接アクセスすることができ・・・おお、これだこれ。

いや、変わらん。

最後のサンプル・・・USB MSC 機能とファイル操作を組み合わせた複合アプリケーション

ここで気付く。いや、SDカード関係ないよね?「SD ライブラリと同じインターフェースを用いて」つまりSDとは違うって意味だ(笑)

物理的問題があるかも知れない?

検索してみよ。よし、これだ

spresense - SPRESENSEに接続したSDカードが認識できない - スタック・オーバーフロー

結論。メインボードを拡張ボードに強く押し込め。ほんまかいな。

絶縁袋に包んで、ギュッと押す。「カチッ!」めっちゃいい音するやん。気持ちいいやん。間違いない、挿せてなかったねコレ・・・

何しろこのコネクタ、小さい癖に100Pだものね。しかし・・・

やっぱダメか・・・もう一回ライブラリを探そう。

SDのための正しいライブラリを発見

「SDHCI ライブラリは Spresense 拡張ボードにある micro SD にアクセスするためのライブラリです」・・・これだよこれ、なにやってんだもう・・・

こっちのSDHCI ライブラリにある3 つのスケッチのサンプルを全て書き込み。

Spresense Arduino IDE デベロッパーガイド - Sony Developer World

これでダメならもうダメよダメダメ。ダメなのよ・・・(懐

動かない。SD読めない。あ、メインボードにUSB挿したままか。これを拡張ボードに変えると?認識した!

ふぅ~・・・。SDカード認識させるだけでこんなことに(笑)

何はともあれ大成功!やったぜ。

次はちゃんと自動演奏まで行きたい。ではまた。

 

今回のまとめ

SPRESENSEにSDカードを認識させPCからも読み書きできるようにするには

  1. 拡張ボードにメインボードをしっかり挿す(カチッて鳴る)
  2. SDHCIライブラリのサンプルスケッチをボードに書き込む
  3. ボードへの書き込み時はメインボードにUSBケーブルを挿す
  4. SDカードへのアクセスは拡張ボードのUSBポートを使う

 

 

SPRESENSEリンク集のリンク集

SPRESENSEリンク集

SPRERSENSEが発売されたのが2018年7月31日。4年目。
Arduinoが構想含めて2005年~なので17年目。

ラズパイが2012年ということでちょうど10年。

まだまだこれから。いやもっと盛り上がっていこうぜ。半導体不足だけど。

というわけで

SPRESENSE|製品情報|ソニーセミコンダクタソリューションズグループ

本家本元。まずはここをチェック、一通り目を通そう。

リンク集を作ってみた : SPRESENSEに興味あり

とっても便利。ありがとうございます。

spresense.livedoor.blog

上記ブログの中にあるリンク集ですが。かなりいろいろな取り組みをされています。

で、ここでも紹介されている、

makers-with-myson.blog.ss-blog.jp

ys_taroさんのビートボックス。これを習作してみたいと思う次第。次回。

 

追記

完全自作でアナログ・デジタル両方のシンセを作成されている方。

Lチカから始めて1年でこんなすごいことに!とても良い刺激を受ける。

ありがとうございます。Spresenseに応用していければいいなぁ。

note.com

 

SPRESENSEでLチカを試してみる

SPRESENSEでとにかく何かやってみる

 こんばんは。MYONです。

というわけで、マイコンを始めるなら先ずLチカ、そして先人方先輩方の作られた作品群の習作から始めます。

 

SPRESENSEでLチカ

 

メインボードには既にユーザが使用可能な緑色LEDが4つも表面実装されているので、これを光らせます。はい、チュートリアル通りにやればいいのです。

Spresense Documents 

ここにある

Spresense Arduino スタートガイド

上記の通りやればOK。

メインボードの他に必要なものはPCとmicroUSBだけです。

Arduino IDE をダウンロードしてインストール、特に問題なし

次にUSB シリアルドライバをダウンロードしてインストール・・・

いや、これZIP解凍したけどどうするねん?!

f:id:MYON:20220212225100j:plain

USBドライバ

インストーラー見当たらない?しゃーないからtext読みます。

INSTALLING
----------
The VCP driver is automatically installed by Windows Update for CP210x with
alternate PID values of 0xEA63, 0xEA7A, and 0xEA7B.  These are not default
values.

Otherwise, unzip the .zip file and you will have a directory containing the
driver installer files.

### Prompted install ###

If Windows prompts you to install a driver for a CP210x device
(for example, if you plug a CP210x into your computer):

1. Use the dialog to browse for the driver location
2. Locate the driver folder (that you previously unzipped)
3. Follow the instructions

### Manual install ###

1. Using Windows File Explorer, locate the driver folder
   (that you previously unzipped)
2. Right click on the silabser.inf file and select Install
3. Follow the instructions

 

読めない(笑)えー、自動翻訳して

インストール
----------
VCPドライバーは、Windows Update for CP210xによって
、0xEA63、0xEA7A、および0xEA7Bの代替PID値で自動的にインストールされます。これらはデフォルト
値ではありません。


それ以外の場合は、.zipファイルを解凍すると、ドライバーインストーラーファイルを含むディレクトリが作成されます。

###プロンプトインストール###

WindowsがCP210xデバイス用のドライバーをインストールするように要求した場合
(たとえば、CP210xをコンピューターに接続した場合):

1.ダイアログを使用してドライバーの場所を参照し
ます2.(以前に解凍した)ドライバーフォルダーを見つけます
3.指示に従います

###手動インストール###

1. Windowsファイルエクスプローラー
を使用して、    (以前に解凍した)ドライバーフォルダーを見つけます
。2。silabser.infファイルを右クリックし、[インストール]を選択します。3
。指示に従います。

 

ということは、もうインストール済?いや、つなげば要求されるのか。ええい、手動だ!infファイルを右クリックして[インストール]・・・シーン。

さて、全然手応えがなく不安なまま、とりあえず進んでみる。行けば分かるさ。

Arduino IDE無事起動。Spresense Arduino board package のインストールOK。

そしてSPRESENSEメインボードにmicroUSB typeBをぶっさしPCとつなぐ。

おお、青色LED点灯。通電は成功。

次はArduino IDEからブートローダーをインストール。OK。

よし、ではLED サンプルスケッチを動かしてみよう。

非常に丁寧なチュートリアルなので、誰でも出来ると思います。そして・・・

・・・良かった動いた!😊