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が受け付けてくれるかどうか微妙なところ。
まぁ、壊れることはないだろうということで試してみました。接続を次に示します。
Spresenseと通信するためのプログラムツールとして、Processingを選択しました。Arduino IDEはProcessingをベースにしているので、並べるとUIが似ていていい感じですね。
Spresense側のスケッチを次に示します。
Processingのコードを以下に示します。
実際に動かしてみました。
なんとレベル変換なしでもうまく通信ができました!Baudrate も高めに設定していますが、かなり安定して通信しています。
これで、メインボードとPCとの間のデータのやりとりが楽になりました。SpresenseのメインボードとProsessingを使えば、データ解析は捗りそうです!
(^^)/~
(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が受け付けてくれるかどうか微妙なところ。
まぁ、壊れることはないだろうということで試してみました。接続を次に示します。
Spresenseと通信するためのプログラムツールとして、Processingを選択しました。Arduino IDEはProcessingをベースにしているので、並べるとUIが似ていていい感じですね。
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; } }
実際に動かしてみました。
なんとレベル変換なしでもうまく通信ができました!Baudrate も高めに設定していますが、かなり安定して通信しています。
これで、メインボードとPCとの間のデータのやりとりが楽になりました。SpresenseのメインボードとProsessingを使えば、データ解析は捗りそうです!
(^^)/~
FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き)
- 出版社/メーカー: スイッチサイエンス(Switch Science)
- メディア: おもちゃ&ホビー