今日は、ArduinoとProcessingを使用して統計を収集し、Rを使用してそれらを処理する方法について簡単に説明します。
統計の収集を実証するために、 HC-SR04超音波センサーを使用して、同僚が机の前を歩いているときを記録します。 Arduino、Processing、Rを横断する方法に関するいくつかの有用な情報は、ここから取得しました
Arduino
Arduino Unoのサーキットはこちら

誰かがテーブルの前を歩くと、スピーカー(および電球)がアクティブになります。
Arduinoのスケッチはこちらです。
考慮すべきことがいくつかあります。
- NewPingライブラリが使用されます。Arduino環境にインストールしてIDEを再起動する必要があります
- 誤検知を最小限に抑えるために、信号を数回確認します。 pingConfirms関数を参照してください。 一般に、操作の信頼性はまだ完全ではなく、1回のパスで数回トリガーされ、その後パスをパスします。 しかし、私たちの目的にとってこれはあまり重要ではありません
- 定数MAX_DISTANCEに注意してください 。これは、センサーがトリガーされる最大距離を設定します。
- 最も重要なポイント:データはシリアルポート経由でコンピューターに送信されます。 「 $ data: 」を出力するデータの前の出力を区別するために、このテキストをCSVファイルに追加されるデータのマーカーとして認識します。したがって、複数のデータがある場合は、カンマで区切ることができます
- この場合、センチメートル単位の距離はデータとして送信されますが、この値には関心がないため、数値でグループ化します
処理中
このプロジェクトでは、 Processing 2は、シリアルポート(USB)からデータを読み取り、CSVファイルに追加するためだけに使用します。 Processingを使用してデータを視覚化することもできますが、ここではRを使用してグラフを描画します。
処理環境はArduino環境に非常に似ていますが、言語はJavaに似ています。 ここで Arduinoからデータを読み取るための普遍的なスケッチ。
最初にスケッチを開始する必要があります。コンソールで使用可能なすべてのシリアルポートのリストが表示され、Arduinoが実行されているポートが検索され、シリアル番号(ゼロから始まる番号)が取得され、定数mySerialPortに書き込まれます。 また、データが書き込まれる場所にも注意してください。
String filePath = sketchPath("../../data/data.csv");
sketchPath関数は、スケッチが配置されているフォルダーに相対するパスを作成します。 ファイルが存在しない場合は、ファイルが作成されます(既にファイルが追加されている場合)。 自動的に、CSVファイルの各行の最初の要素はタイムスタンプ(1970-01-01以降のミリ秒数)になります。
R
データを処理してグラフを表示するには、 統計パッケージRを使用します。
Rシステムをインストールした後、1文字のRコマンドを使用して対話モードに入ることができます。 (対話モードを終了するには、 q()を入力します。
私は小さなスクリプトを書きました
- CSVファイルからメモリにデータを読み取ります。
- 目的の時間間隔のデータを切り取ります。 これを行うには、 startDateおよびendDate変数を調整します
- 10分間隔の各パスの数をカウントします。 変数periodを使用して間隔を変更できます。これは秒単位で設定されます
- 棒グラフを描画します。

これをすべて実行するには、次の手順を実行します。
- コンソールから、Rコマンドを実行します
- data.csvファイルがあるディレクトリへのパスを設定します。
setwd("/home/solvek/projects/electronics/counter/data")
- Rスクリプトを実行します。
source("../plotchart.R")
上記のデータカタログへのスクリプトパスを次に示します。
新年のボーナス
スピーカーから、センサーからの距離に応じた音調の信号が発せられていることに気づいたかもしれません。 したがって、Arduinoを使用すると、プリミティブな楽器を作成できます。
これをスケッチしてみましょう。
明けましておめでとうございます!