ProcessingでArduinoとシリアル通信

ProcessingとArduinoでシリアルデータ通信

この記事では、ProcessingでArduinoとシリアル通信を行い、データを表示させたり図形を回転させたりしていく。

Processingとは、グラフィックやアニメーションを簡単にプログラミングすることができるオープンソースのプログラミング言語でありIDEである。ProcessingはJavaベースのようであるが、Java言語のような冗長な書き方ではなく、Arduinoと似た感じでプログラミングできるため初心者の方でも非常にとっつきやすくなっている。

Wikipediaによれば、ProcessingはMITメディアラボで開発されたもので、電子アートやビジュアルデザインのアーティストによるコンテンツ制作作業のために特化した言語のようである。そのため、ProcessingではArduinoとシリアル通信を簡単に行える機能が備わっている。

この記事では具体的に、Arduinoと加速度センサを使って計算した角度をProcessingで表示させたり、モデル図形を回転させたりする方法を解説していく。なお、Arduinoと加速度センサの使い方に関してはこちらに記事を参考にしてもらいたい。

とにかくProcessingでシリアルデータを表示してみよう!

ProcessingでArduinoのシリアルデータ表示
ProcessingでArduinoのシリアルデータ表示

この画像は、ArduinoのSerial.printで送信したデータをProcessingでテキスト表示させているものである。こちらがProcessingのプログラム内容となる。

import processing.serial.*;

Serial serial;
String v = "";
int lf = 10;

void setup() 
{
  println(Serial.list()[3]);
  
  size(200, 150);
  frameRate(30);
  
  serial = new Serial(this, Serial.list()[3], 9600);
  serial.bufferUntil(lf);
}

void draw()
{
  background(255, 255, 255);
  
  if(v != null) {
    fill(0, 0, 255);
    textSize(28);
    textAlign(CENTER);
    text(v, 100, 75);
  }
}

void serialEvent(Serial p) {
  if (serial.available() >= 2) 
  {
     v = p.readString();    
  }
}

Serial.list()にはUSB接続された機器のポートが格納されているので、Arduinoのポートを探して選択する。また、ポートの通信速度9600bpsはArduinoと同じに設定する。

シリアルデータからLine Feed(改行)が送られてくると、serialEventが呼び出されるようになっている。

Processingで加速度センサの角度をシンクロさせてみよう!

次にProcessingで長方形のオブジェクトを作り、Arduinoから送られてきた角度に合わせてオブジェクトを回転させてみよう。上の動画のようにArduinoと同期してオブジェクトが回転するプログラムがこちら。

import processing.serial.*;

Serial serial;
int lf = 10;
float ra = 0;
int w = 100;
int h = 40;

void setup() 
{
  println(Serial.list()[3]);
  
  size(300, 300);
  frameRate(30);
  
  serial = new Serial(this, Serial.list()[3], 9600);
  serial.bufferUntil(lf);
}


void draw()
{
  background(255, 255, 255);
  
  fill(77, 77, 77);
  translate(width/2, height/2);
  rotate(ra + PI);
  
  rect(-w/2, -h/2, w, h);
}

void serialEvent(Serial p) {
  if (serial.available() >= 2) 
  {
     ra = float(p.readString());    
  }
}

四角形を中心で回転させるためにrect(-w/2, -h/2, w, h)のようにして、起点をずらしているところがポイント。Arduinoからは角度をラジアンで送るようにした。

今回使用した製品はこちら

Rasbee CJMCU-MMA8452Q モジュール 14ビット 三軸デジタル加速度計 傾斜センサ IIC通信 MMA8452Q
Rasbee CJMCU-MMA8452Q モジュール 14ビット 三軸デジタル加速度計 傾斜センサ IIC通信 MMA8452Q

Amazon
Arduino Uno Rev3 ATmega328 マイコンボード A000066
Arduino Uno Rev3 ATmega328 マイコンボード A000066

Uno Rev.3、8 bit、AVR、ATmega328、USB-シリアルコンバータとしてプログラムされたATmega 16U2搭載

AmazonRakuten

Processingの参考書

ArduinoとProcessingではじめるプロトタイピング入門 (KS理工学専門書)
ArduinoとProcessingではじめるプロトタイピング入門 (KS理工学専門書)

大学・高専でのPBL教育における格好のテキスト。基本的な解説はもちろん、「逃げる目覚まし時計」「腕立て伏せカウンタ」などの具体的な製作例も紹介した。自分で課題に挑戦してみよう! Makerにも大満足の1冊!

Amazon
Processingをはじめよう 第2版 (Make: PROJECTS)
Processingをはじめよう 第2版 (Make: PROJECTS)

Processingは、イメージ、アニメーション、インタラクティブなグラフィックスをプログラムするためのオープンソースのプログラミング言語です。開発者自身が執筆した本書では、シンプルな図形の描画にはじまり、変形、インタラクティブな動き、関数を使ったプログラム、さらにArduinoを使ったセンサーのデータの可視化まで、わかりやすく順を追って解説します。

Amazon

こんな商品も人気です!

1.54インチ 電子ペーパーモジュール 200x200ラズベリーパイ エンベデッドコントローラ付き E-Inkディスプレイ画面
1.54インチ 電子ペーパーモジュール 200x200ラズベリーパイ エンベデッドコントローラ付き E-Inkディスプレイ画面

バックライトがなく、電源を切っても最後のコンテンツが長時間表示される。 超低消費電力、基本的に電力はリフレッシュにのみ必要です。 SPIインターフェイス、Raspberry Pi / Arduino / Nucleoなどのコントローラーボードとの接続用。

AmazonRakuten
M5Stack 開発ボード M5Stack Core2 開発キットデュアルコア32ビット240Mhz LX6プロセッサーUIFlow, MicroPython, A r d u i n o用
M5Stack 開発ボード M5Stack Core2 開発キットデュアルコア32ビット240Mhz LX6プロセッサーUIFlow, MicroPython, A r d u i n o用

Amazon
ELEGOO Arduino用 Nanoボード V3.0 CH340/ATmega328P、Nano V3.0互換
ELEGOO Arduino用 Nanoボード V3.0 CH340/ATmega328P、Nano V3.0互換

NanoはArduinoと互換性があり、ATmega328PやCH340と同じの公式バージョンで使用しています。 これは、最小で、完全で、ブレッドボードに優しいボードです。より多くのアナログ入力ピンとオンボード+ 5V AREFジャンパを備えた(電気的に)すべてが備わっています。

Amazon
ELEGOO Arduino用の 2.8 Inches TFT ターチスクリーン カードソケット付
ELEGOO Arduino用の 2.8 Inches TFT ターチスクリーン カードソケット付

無料チュートリアル(CDに収録)、より良い価格、より良いサービス。 (技術データ付き) 2.8インチ多彩なディスプレイ液晶画面 タッチペンも付き

AmazonRakuten

Arduinoの参考書

ESP32&Arduino 電子工作 プログラミング入門
ESP32&Arduino 電子工作 プログラミング入門

電子工作ファンに人気のマイコンArduino、そしてWiFiとBluetooth内蔵でネットワーク接続しやすいESP32。それらのマイコンでプログラムを組む際に使うのが「Arduino言語」です。「電子工作は好きだけどプログラミングはよくわからない」あるいは「プログラミングの経験がある。それを活かして電子工作を楽しみたい」--そんなみなさまのための電子工作プログラミング入門が本書です。

KindleAmazonRakuten
電子部品ごとの制御を学べる! Arduino 電子工作実践講座 改訂第2版
電子部品ごとの制御を学べる! Arduino 電子工作実践講座 改訂第2版

電子パーツを自由自在に組み合わせて電子工作ができるように、Arduinoによる電子部品ごとの制御方法を詳しく解説。初心者や電子工作に躓いた人でも安心して取り組めるよう、豊富な図・写真で徹底解説。2018年発刊の「Arduino 電子工作 実践講座」の改訂版です。

KindleAmazonRakuten
Arduinoをはじめよう 第3版 (Make:PROJECTS)
Arduinoをはじめよう 第3版 (Make:PROJECTS)

本書では、開発者自らが、Arduinoの哲学、ハードウェア、ソフトウェアの基礎を解説、誰にでもできる簡単なチュートリアルを行います。

AmazonRakuten

Amazonでお得に購入するなら、Amazonギフト券がオススメ!

\Amazonギフトがお得/

コンビニ・ATM・ネットバンキングで¥5,000以上チャージすると、プライム会員は最大2.5%ポイント、通常会員は最大2%ポイントがもらえます!
Amazonギフト券

\この記事をシェアする/