So-net無料ブログ作成

SPRESENSEカメラのモニターをProcessingで作ってみた! [SPRESENSE]

前回、SPRESENSEとProcessingを使ってタイムラプスカメラを作ってみました。そこに、いつもチェックしているスタックオーバーフローで次のような問いかけが!



カメラのリアルタイムのプレビューをPCの画面に表示する方法

SPRESENSEのカメラで現在映しているプレビューを、PCの画面に表示させることは可能でしょうか。接続方法は、できれば、USB(メインボード側のSerial)が良いです。




ん!?これは、できそうな気がするぞ。SPRESENSEとProcessingを使えば…。

ということでチャレンジしてみました!

接続はリクエスト通りシリアルケーブル一本で。SPRESENSE からプレビュー画像を転送し、PC上の Processing でデータを受けて画像を表示します。


Spresense_monitor_s.png


余談ですが、少し前に3Dプリンタで作ったカメラホルダをつけてみました。カメラとUSBケーブルの干渉がなくなり、少しすっきりしました。


sDSC_0711.jpg


今回作成したスケッチです。すごくシンプルなのですが、Processing のシリアルはなかなか使いこなすのが大変で苦労しました。Windows + Java のためか、リアルタイムには程遠く、安定した通信をするために、ところどころ工夫が必要でした。


SPRESENSEのスケッチ
#include <Camera.h>

#define BAUDRATE       2000000

void CamCB(CamImage img) {

  if (img.isAvailable() == false) return;
 
  while (Serial.available() <= 0); 
  // taking a picture is started by receiving 'S'
  if (Serial.read() != 'S') return;
  delay(1); // wait for stable connection
  
  digitalWrite(LED0, HIGH);
  img.convertPixFormat(CAM_IMAGE_PIX_FMT_RGB565);
  char *buf = img.getImgBuff();
  for (int i = 0; i < img.getImgSize(); ++i, ++buf) {
    Serial.write(*buf);
  }
  digitalWrite(LED0, LOW);
}

void setup() {
  
  Serial.begin(BAUDRATE);
  while (!Serial) {};

  theCamera.begin();
  theCamera.startStreaming(true, CamCB);
  theCamera.setAutoWhiteBalanceMode(CAM_WHITE_BALANCE_DAYLIGHT);
}

void loop() {
  /* do nothing here */
}



Processingのスケッチ
import processing.serial.*;
import java.io.*;
Serial myPort;

PImage img;
final static int WIDTH = 320;
final static int HEIGHT = 240;
boolean started = false;
int serialTimer = 0;
int total = 0;
int x = 0;
int y = 0;

void setup() {
  size(320, 240); 
  background(0);
  img = createImage(WIDTH, HEIGHT, RGB); 
  myPort = new Serial(this, Serial.list()[0], 2000000);  
  myPort.clear();
  println("setup finished");
  delay(2000); // wait for stable connection
}

void draw() {

  if (started == false) {
    started = true;  
    println("start");
    myPort.write('S');
    myPort.clear();
    total = 0;      
    delay(10);
    return;
  }

  // To get stable connection, please adjsut this interval
  final int interval = 1;
  if (millis() - serialTimer > interval) {
    serialTimer = millis();   
    if (myPort.available() <= 0) return;
    
    while (myPort.available() > 0) {       
      char lbyte = (char)myPort.read();
      char ubyte = (char)myPort.read();
      x = total % WIDTH;
      y = total / WIDTH;
      int value = (ubyte << 8) | (lbyte); // RGB565 format
      char r = (char)(((value & 0xf800) >> 11) << 3);
      char g = (char)(((value & 0x07E0) >> 5)  << 2);
      char b = (char)((value & 0x001f) << 3);
      color c = color(r, g, b);
      img.set(x, y, c);
      ++total;

      if (total >= WIDTH*HEIGHT) {
        println("end");
        myPort.clear();
        started = false;
        total = 0;
        image(img, 0, 0);
        break;
      }
    }
  }
}



動かしてみると、パフォーマンスは、おおよそ 0.9-0.8fps 。理論的には、 (2000000/8) bytes / 153,600 bytes / =1.6 fps 位のはずですが、Processing の応答性が思いのほか悪く、あまり良い数字は出ませんでした。

実際の動きはこちらの動画で見ることができます!





パフォーマンスはいまいちですけど、この小さなカメラで画面を見れるのはいいですね。次はプレビューではなくて、もう少し大きな画像を転送してみようかな…。
(^^)/~


<参考記事>
SPRESENSEとProcessingでタイムラプスに挑戦! 
https://makers-with-myson.blog.so-net.ne.jp/2019-08-17






nice!(32)  コメント(1) 
共通テーマ:趣味・カルチャー

SPRESENSEメインボードだけでサーボモータを動かしてみた! [SPRESENSE]

SPRESENSEでサーボモータを動かそうとすると拡張ボードが必要ですが、拡張ボードをつけると大きくなってしまいます。サーボモータのシグナル信号が5Vのためです。


sDSC_0699.jpg


せっかく小さなSPRESENSEなのでメインボードだけでサーボモータを動かせないかなと思い、ダメ元でつなげて動かしてみることにしました。


sSpresense_SG90.png


実際に接続してみました。


sDSC_0706.jpg


スケッチはSPRESENSEのサンプルスケッチの”Servo”を少し改変した簡単なものです。


#include <Servo.h>

static Servo s_servo; 

void setup() {
  s_servo.attach(PIN_D16);
  s_servo.write(90);
  delay(5000);
}

void loop() {
  s_servo.write(0);
  delay(1000);
  s_servo.write(180);
  delay(1000);
}



さて、動いたでしょうか?常識的に考えれば動きませんが…
その結果は次の動画を参照ください!




(^^)/~




デジタル・マイクロサーボ SG90 (5個)

デジタル・マイクロサーボ SG90 (5個)

  • 出版社/メーカー: 梅本合同会社
  • メディア: おもちゃ&ホビー



nice!(38)  コメント(2) 
共通テーマ:趣味・カルチャー

SPRESENSEとProcessingでタイムラプスに挑戦! [SPRESENSE]

Spresense と Processing を使ってタイムラプス映像にチャレンジしてみました。次のような手順でやってみることにしました。

(1) カメラを接続した Spresense メインボードのUART2 をPCに接続
(2) Processing から撮影を開始を指示
(3) Spresense が撮影後に、UART2で画像をPCヘ送信
(4) Processing が受信し、ファイル保存ならびに画面を表示
(5) いくつか画像を取得したら ffmpeg で動画に変換

例によって動画にしていますので、お時間のある方はこちらをどうぞ。





Spresense と PC の接続にはFTDI製のUART-USB変換チップを乗せた変換ボードを使っています。PCには、Spresense用のスケッチを流し込むためと画像転送のための2つUSBケーブルを接続することになります。


Spresense_FTDI2.png


Spresenseのコードは比較的シンプルです。Processingから’S'が来ると撮影が開始するようになっています。Arduinoだとカメラを扱おうとすると大変ですが、Spresenseだと楽なもんですね。

#include 

#define BAUDRATE                (115200)
#define BAUDRATE2            (2000000)

void setup()
{
  Serial.begin(BAUDRATE);
  Serial2.begin(BAUDRATE2);
  while (!Serial) {};
  while (!Serial2) {};

  Serial.println("Prepare camera");
  theCamera.begin();

  Serial.println("Set Auto white balance parameter");
  theCamera.setAutoWhiteBalanceMode(CAM_WHITE_BALANCE_DAYLIGHT); 
  theCamera.setStillPictureImageFormat(
     CAM_IMGSIZE_QUADVGA_H,
     CAM_IMGSIZE_QUADVGA_V,
     CAM_IMAGE_PIX_FMT_JPG);
}

void loop()
{
  while (Serial2.available() <= 0);
  // taking a picture is started by receiving 'S'
  if (Serial2.read() != 'S') return;
 
  Serial.println("call takePicture()");
  CamImage img = theCamera.takePicture();

  if (!img.isAvailable()) {
    Serial.println("take image failure");
    return;
  }

  Serial.println("start transfer");
  char* buf = img.getImgBuff();
  for (int i = 0; i < img.getImgSize(); ++i, ++buf) {
    Serial2.write(*buf);
  }
  Serial.println("end transfer");
}



Processing のスケッチは若干複雑です。キーボードを押すとSpresenseが撮影を開始し、マウスを押すと画像をセーブし表示するようにしています。

import processing.serial.*;
import java.io.*;
Serial myPort;

OutputStream output;
PImage img;
String filename;
boolean started = false;
int file_number = 0;
int serialTimer = 0;
int nodata_counter = 0;

void setup() {
  size(1280, 960); background(0);
  printArray(Serial.list());
  // when debugging, you may have 2 serial ports
  myPort = new Serial(this, Serial.list()[1], 2000000);
  // myPort = new Serial(this, Serial.list()[0], 2000000);
  myPort.clear();
}

void draw() {
  try {
    if (started == false) return;
    
    // The serial of Processing communicates every 50msec
    if (millis() - serialTimer > 50) {
      serialTimer = millis();
      if (myPort.available() <= 0) {
        ++nodata_counter; 
        return;
      }
      while (myPort.available() > 0) {
        output.write(myPort.read());
      }
      nodata_counter = 0;
    }
  } catch (Exception e) {
    e.printStackTrace();
    return;
  }
}

void keyPressed() {
  started = true;
  filename = "foge" + String.format("%03d", file_number) + ".jpg";
  output = createOutput(filename);  
  ++file_number;
  myPort.write('S');
  myPort.clear();
}

void mousePressed() {
  println("nodata_counter: " + String.format("%d", nodata_counter));
  // wait 100msec after receiving all jpg data
  if (nodata_counter < 2 || started == false) {
    return;
  }

  try {
    output.flush();
    output.close();
  } catch (Exception e) {
    e.printStackTrace();
    return;
  }  
  
  img = loadImage(filename);
  image(img, 0, 0);
  started = false;
}



複雑になってしまっている原因は、Processing のシリアルが50msec 毎に処理するようになっているためです。連続でデータを受けとらないため、バッファが空になったのを転送終了と判定できません。

画像の転送が終わったかどうかは、バッファが”しばらく”空になったかどうかで判定しています。

台風の影響で雲の流れが速かったので、雲の様子をとることにしました。二つもUSBをつなぐのは面倒なので電池駆動にしました。


DSC_0701.JPG


実際にとれた画像がこちらです。このような雲の画像を約80枚ほど撮影しました。台風通過後だったので流れる雲の良い画がとれました。


foge12.jpg


これを動画にするには、ImageMagick に含まれる ffmpeg を使います。以下のコマンドで変換できます。ImageMagick はこちらで入手できます。


$ ffmpeg -f image2 -r 5 -i foge%03d.jpg -r 30 -s 1280x960 -vf format=yuv420p -vcodec libx264 -an video.mp4



動画はこちらで確認できます。短い時間しか撮っていませんが、思ったよりも楽しいものですね。





これでPCとの連携ができたので、次は動体検出などもっと高度なことができるようになるかも知れません。
(^^)/~


<関連記事>
SPRESENSEカメラのモニターをProcessingで作ってみた!
https://makers-with-myson.blog.so-net.ne.jp/2019-09-08






FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

  • 出版社/メーカー: スイッチサイエンス(Switch Science)
  • メディア: おもちゃ&ホビー



nice!(37)  コメント(0) 
共通テーマ:趣味・カルチャー

SPRESENSE in ラズパイゼロケース! [SPRESENSE]

部屋を漁っていたら、ラズパイゼロのケースを見つけました。全く使っていなかったので、すっかり忘れていたのですが、せっかくなので使ってみることにしました。


sDSC_0594.jpg


表をみるとまったく変哲のないカメラ付きのラズパイゼロですが…。裏をみると!


sDSC_0593.jpg


ケースを改造してSPRESENSEを収めてみました!。各種アドオンボードもつけられるようピンソケットも出しています。我ながら会心の出来栄え。こんなことができるのも、SPRESENSEカメラ と ラズパイカメラ の基板形状がまったく同じだからなんです。

中をあけてみるとこんな感じ。


sDSC_0595.jpg


一つ難点なのは、プログラムの書き換えと電源の供給。カメラフレキがUSBを覆ってしまうので、ケースに入れたままでUSBケーブルが挿せません。電源はバッテリ供給用のピンを使ってなんとかするとして、プログラムは書き換えるたびに蓋を外さないといけないので少し面倒。

前から少し不便には思っていたけど、カメラフレキとUSBコネクタの向きが同じなのはちょっとなぁ。
┐(´~`)┌






Raspberry Pi Zero ケース

Raspberry Pi Zero ケース

  • 出版社/メーカー: スイッチサイエンス
  • メディア:



Raspberry Pi カメラ マウント Pi Camera Mount Pimoroni

Raspberry Pi カメラ マウント Pi Camera Mount Pimoroni

  • 出版社/メーカー: Pimoroni
  • メディア: エレクトロニクス




タグ:Spresense
nice!(32)  コメント(0) 
共通テーマ:趣味・カルチャー

SPRESENSEをProcessingを使ってPCと通信させてみた! [SPRESENSE]

SPRESENSEからPCにデータを直接取り込めるといろいろと便利なので検討をしてみました。いくつか方法が考えられます。

(1)拡張ボードのUSB機能を使って、SDカードに蓄積されたデータを取得する
(2)拡張ボードのUARTを使って、PCとシリアル通信をしてデータを取得する
(3)メインボードのUARTを使って、PCとシリアル通信してデータを取得する

せっかくなら拡張ボードなしで通信をしたいところです。なので、今回は(3)の方法を試してみることにしました。一番の問題は、メインボードのIO電圧が1.8VでUART変換基板の電圧が3.3Vという点。

手元にあるUSB-UART変換基板はFTDI製のチップですが、3.3V設定で入力閾値電圧は1.2Vなので、Spresenseからの出力はうまくいきそう。一方で、FTDIからの出力電圧つまりSpresenseへの入力電圧が2.7VなのでここがSpresenseが受け付けてくれるかどうか微妙なところ。


DSC_0589.JPG


まぁ、壊れることはないだろうということで試してみました。接続を次に示します。


Spresense_FTDI.png



Spresenseと通信するためのプログラムツールとして、Processingを選択しました。Arduino IDEはProcessingをベースにしているので、並べるとUIが似ていていい感じですね。


2019-07-21.png


Spresense側のスケッチを次に示します。

void setup() {
  Serial.begin(115200);
  Serial2.begin(921600);
  while (Serial.available() > 0) Serial.read();
  while (Serial2.available() > 0) Serial2.read();
}

void loop() {

  while (Serial.available() > 0) {
    int inByte0 = Serial.read();
    Serial2.write(inByte0);
  }

  while (Serial2.available() > 0) {
    int inByte1 = Serial2.read();
    Serial.write(inByte1);
  }
}



Processingのコードを以下に示します。

import processing.serial.*;
Serial myPort;
PFont gothic;

void setup() {
  size(500, 500); 
  background(0);
  gothic = createFont("MS Gothic", 24);  
  printArray(Serial.list());
  myPort = new Serial(this, Serial.list()[1], 921600);
}

int cnt = 0;
void draw() {
  if (myPort.available() > 0) { 
    String message = myPort.readString();
    message = trim(message) + ":" +cnt;
    textSize(24); 
    text(message, 50, 50+cnt*30);
    String ret = "Hi!" + cnt +  "\r\n";
    myPort.write(ret);
    ++cnt;
  }
}


実際に動かしてみました。


DSC_0588.JPG

なんとレベル変換なしでもうまく通信ができました!Baudrate も高めに設定していますが、かなり安定して通信しています。


2019-07-21 (2).png


これで、メインボードとPCとの間のデータのやりとりが楽になりました。SpresenseのメインボードとProsessingを使えば、データ解析は捗りそうです!
(^^)/~






FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)

  • 出版社/メーカー: スイッチサイエンス(Switch Science)
  • メディア: おもちゃ&ホビー








nice!(35)  コメント(0) 
共通テーマ:趣味・カルチャー

SPRESENSEでSony Neural Network Console を使ってみた! [SPRESENSE]

Sony Neural Network Console (以下 NNC)が使えるようになったので、今回はNNCで出力した学習済データを SPRESENSE で使ってみたいと思います。例によって動画にしてみたので、お時間のある方はどうぞ。





最初に、NNC を使って機械学習を行います。今回は、前回使った”4”、”9”を判別するネットワークを使います。


2019-07-14 (0).png


学習済データは、学習結果の履歴を右クリックで出てくるメニューの”Export”で取得することができます。このとき、フォーマットは"NNB"を選択します。


2019-07-14 (1).png


すると"model.nnb"が出力されていますので、それを使います。


2019-07-14 (7).png


次にArduino IDEを開きます。”スケッチ例”の”DNNRT”から”number_recognition”サンプルを起動します。このサンプルでは、学習済データの名前が”network.nnb”となっていますので、"model.nnb"へ変更します。

#include <SDHCI.h>
#include <NetPBM.h>
#include <DNNRT.h>

DNNRT dnnrt;  // NNCの学習済データを使うためのライブラリ
SDClass SD;

void setup() {

  Serial.begin(115200);

  File nnbfile = SD.open("model.nnb"); // NNCの学習済データを読み込み(拡張ボードが必要)
  if (!nnbfile) {
    Serial.print("nnb not found");
    return;
  }
  int ret = dnnrt.begin(nnbfile);
  if (ret < 0) {
    Serial.print("Runtime initialization failure. ");
    if (ret == -16) {
      Serial.println("Please update bootloader!");
    } else {
      Serial.println(ret);
    }
    return;
  }

  // Image size for this network model is 28 x 28.

  File pgmfile("number4.pgm");  // 識別したいファイルを指定
  NetPBM pgm(pgmfile);

  unsigned short width, height;
  pgm.size(&width, &height);

  DNNVariable input(width * height);
  float *buf = input.data();
  int i = 0;

  // Normalize pixel data into between 0.0 and 1.0.
  // PGM file is gray scale pixel map, so divide by 255.
  // This normalization depends on the network model.

  for (int x = 0; x < height; x++) {
    for (int y = 0; y < width; y++) {
      buf[i] = float(pgm.getpixel(x, y)) / 255.0;
      i++;
    }
  }

  dnnrt.inputVariable(input, 0);
  dnnrt.forward();
  DNNVariable output = dnnrt.outputVariable(0);

  // Get index for maximum value.
  // In this example network model, this index represents a number,
  // so you can determine recognized number from this index.

  int index = output.maxIndex();
  Serial.print("Image is ");
  Serial.print(index);
  Serial.println();
  Serial.print("value ");
  Serial.print(output[index]);
  Serial.println();
  if (output[index] < 0.2) Serial.println("the result is 4");
  else if (output[index] > 0.8) Serial.println("the result is 9");

  dnnrt.end();
}

void loop() {
}



SPRESENSEは、メインボードと拡張ボードを使います。出力した "model.nnb"とサンプルに使う画像をSDカードにコピーをして拡張ボードのSDカードスロットに差し込みます。


2019-07-14 (2).png


サンプルの画像は自作したものを使ってみました。こちらから取得ください。

2019-07-14 (3).png
2019-07-14 (4).png


number4.pgm を読み込ませてみた結果です。

2019-07-14 (5).png


number9.pgm を読み込ませてみた結果です。

2019-07-14 (6).png

うまく動きました!

Arduino IDE でAIプログラミングができるなんてすごく便利ですね。次はカメラから取得した画像を認識できるようにしてみたいと思います!
(^^)/~




ソニー開発のNeural Network Console入門【増補改訂・クラウド対応版】--数式なし、コーディングなしのディープラーニング

ソニー開発のNeural Network Console入門【増補改訂・クラウド対応版】--数式なし、コーディングなしのディープラーニング

  • 作者: 足立 悠
  • 出版社/メーカー: リックテレコム
  • 発売日: 2018/11/14
  • メディア: 単行本(ソフトカバー)



nice!(34)  コメント(0) 
共通テーマ:趣味・カルチャー

「SPRESENSE」がマルチコア・プログラミング対応へ! [SPRESENSE]

ソニーの SPRESENSE が最近のバージョンアップで Arduino IDE でマルチコアプログラミング ができるようになりました。ヘッダータイトルも”IoT”から”エッジコンピューティング”に変更になっています。


spresense.png
https://developer.sony.com/ja/develop/spresense/


リリースページに今回の更新内容が書かれています。Spresense SDK も Windows / MacOS に対応しています。いずれもブートローダの更新が必要なのは要注意ですね。




SPRESENSE v1.3.0 リリース(2019/6/5)

Arduino IDE
概要
  • Arduino IDEによるマルチコアプログラミング環境を用意しました。 詳しくはSpresense Arduino Library の使い方の「Spresense Arduino マルチコア環境を動かしてみる」をご参照ください。
  • 新規機能追加および機能拡張、そしていくつかの改善を行いました。
  • 今回のリリースにより ブートローダの更新 が必要になります
  •  
    Spresense SDK
    概要
  • Ubuntuに加えてWindows および macOS が正式な開発環境としてサポートされました。 詳しくは Spresense SDK の使い方 の「ツールの準備」の章をご参照ください。
  • 新規機能追加および機能拡張を行いました。
  • 今回のリリースにより ブートローダーの更新 が必要になります




  • SPRESENSE のマルチコア機能を使ったアプリケーションが気軽に作れるようになるのは朗報ですね。仕事に少し合間ができたらマルチコアを使ったアプリケーションを作ってみようと思います。

    SPRESENSE は ”AI あり””マルチコアあり”"ハイレゾオーディオあり""カメラあり""GPSあり"で機能豊富なのは嬉しいですが、何から手をつけていいか困りますね。
    (^^;








    nice!(36)  コメント(2) 
    共通テーマ:趣味・カルチャー

    SPRESENSE の Wi-Fi アドオンボードを動かしてみた! [SPRESENSE]

    SPRESENSE の Wi-Fi アドオンボードの動作確認をしてみました。この Wi-Fi アドオンボードは、ESP8266 が搭載されており、ATコマンドで操作することができます。


    Spresense_ESP8266.jpg


    このアドオンボードはスイッチサイエンスで購入することができます。

    4042_main.jpg
    https://www.switch-science.com/catalog/4042/


    動作確認をするために、次のスケッチをSPRESENSEに書き込みます。コンソールの入力をそのまま Wi-Fi アドオンボードを伝えることができます。


    #define BAUDRATE 115200
    
    void setup() {
      Serial.begin(BAUDRATE);
      Serial2.begin(BAUDRATE);
      while(!Serial);
      while(!Serial2);
    }
    
    void loop() {
      if (Serial.available())
        Serial2.write(Serial.read());
    
      if (Serial2.available())
        Serial.write(Serial2.read());
    
    }
    



    動作確認の様子を動画にしてみましたので、お時間のある方はこちらをどうぞ!





    お時間のない方のために、簡単に内容を説明します。最初に、ATコマンドを使って接続を確認します。


    AT_Check.jpg


    次にWiFiに接続してみます。テスト用のアクセスポイントを作って接続をしてみました。


    AT_WiFi_Connect.jpg


    "AT+CWMODE=1" は、ESP8266 をステーションモードにするためのコマンドです。
    "AT+CWJAP="testAP","123123123"" で、Wi-Fi のSSIDとパスワードを指定して接続します。
    "AT+CIFSR" で、取得したIPアドレスを確認することができます。


    無事にWi-Fiに接続できたようなので、TCP/IP で通信できるか試してみます。お手軽にTCP/IP通信のテストができる Hercules というソフトを使って接続確認します。


    TCPConnection.jpg


    "AT+CIPSTART="TCP","192.168.2.105",8080" で通信方式の指定とIPアドレス、ポート番号を指定してサーバーに接続します。
    "AT+CIPMODE=1"で、UARTの入力データを受け付けるモードに切り替えます。
    "AT+CIPSEND"で、データ通信モードに入り、UARTの入力をデータとして都度通信します。


    無事に通信ができたので、このATコマンドをベースにライブラリを作ってスケッチから動かせるようにしたいと思います!
    (^^)/~







    nice!(37)  コメント(2) 
    共通テーマ:趣味・カルチャー

    SPRESENSE の Wi-Fi ボードを入手! [SPRESENSE]

    SPRESENSE の最大の弱点。それは通信機能。その弱点を克服するボードを入手しました。

    DSC05362.JPG


    ESP8266 を搭載したWi-Fiボードです。スイッチサインエスで購入することができます。入荷したらすぐに売り切れになってしまうので、すでに在庫は0です(2019/3/5現在)。

    4042_main.jpg
    https://www.switch-science.com/catalog/4042/


    搭載してみました。少し足が長いので三段空母ならぬ二段空母のようですが、この小ささにシステムが収まるのは大きな魅力ですね。


    DSC05363.JPG


    さて、SPRESENSE と Wi-Fiボードで何を作ろうかな…。お楽しみに!
    (^^)/~








    タグ:SONY Wi-Fi Spresense
    nice!(34)  コメント(1) 
    共通テーマ:趣味・カルチャー

    SPRESENSE でステレオ録音を試してみた! [SPRESENSE]

    SPRESENSEのマイクをもう一つ作ってステレオ録音にチャレンジしてみました。例によって動画にしてみましたので、お時間のあるかたはどうぞ!





    ステレオ録音をする前に、SDカードにMP3エンコーダーがインストールされていることを確認してください。


    Spresense StereoRecording.png


    スケッチは、Spresense サンプルの中の "recorder" スケッチを使います。録音には音叉を使ったのですが、最初録音したときに少しレベルが高く耳に突き刺さる感じでしたので、ゲインを下げてみました。


    Spresense StereoRecordingSetting.png


    実際に録音した音がこちらです。ステレオのサウンドが分かるように、ヘッドホンで聞いてみて下さい!





    これでスイッチとタイマーをつければ、思ったタイミングで録音を開始できるので、音源作りがはかどりますね。DTMの幅が広がります!
    (^^)/~







    タグ:SONY AUDIO Spresense
    nice!(32)  コメント(2) 
    共通テーマ:趣味・カルチャー