工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduino UNO + WiFiシールドで温度をWebリアルタイム表示 — シリアル出力だけでグラフ化

概要

PHPoC WiFi Shield 2 を Arduino UNO にスタックし、DS18B20 防水温度センサーで測定した温度を Serial.println() するだけで、ブラウザ上の「Web Serial Plotter」にリアルタイムグラフ表示させる方法を紹介します。Web プログラミング不要で、設定画面から X/Y 軸ラベル、温度範囲、表示サンプル数をカスタマイズ可能です。

必要なハードウェア

配線

DS18B20:VDD→5V、GND→GND、DQ→デジタルピン 8(4.7 kΩ プルアップ必須)。PHPoC シールドを UNO に重ねるだけで WiFi 接続完了。

動作原理

  1. Arduino が 1 秒ごとに温度を読み取り Serial.println(temp) で出力
  2. PHPoC シールドがシリアルデータを TCP/WebSocket 経由でブラウザへ転送
  3. ブラウザで https://<シールドのIPアドレス>/serial_plotter にアクセスし、グラフ表示
  4. 「Setup」リンクから X 軸ラベル(Time)、Y 軸ラベル(Temperature °C)、範囲(例:-20〜50)、サンプル数(例:100)を設定・保存

スケッチ 1:短周期サンプリング(リアルタイム監視用)

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Phpoc.h>

#define SAMPLE_INTERVAL 1000  // ms

OneWire oneWire(8);
DallasTemperature sensors(&oneWire);
unsigned long lastSampleTime;

void setup() {
  Serial.begin(9600);
  while (!Serial);
  sensors.begin();
  Phpoc.begin();           // WiFi 接続・WebSocket サーバー起動
  lastSampleTime = millis();
}

void loop() {
  if (millis() - lastSampleTime > SAMPLE_INTERVAL) {
    sensors.requestTemperatures();
    float temp = sensors.getTempCByIndex(0);
    Serial.println(temp);  // これだけで Web へ転送される
    lastSampleTime = millis();
  }
}

スケッチ 2:長周期サンプリング(日次・時間単位ログの即時表示用)

1 時間ごとに測定し、最新 100 点をリングバッファに保存。毎秒全点を Serial.println() することで、100 時間分のグラフを待たずに表示できます。

#include <OneWire.h>
#include <DallasTemperature.h>
#include <Phpoc.h>

#define UPDATE_INTERVAL 1000      // ms (グラフ更新間隔)
#define SAMPLE_INTERVAL 3600000UL // 1 時間 (3600*1000 ms)

OneWire oneWire(8);
DallasTemperature sensors(&oneWire);
unsigned long lastSampleTime, lastUpdateTime;
float temps[100];
int index = 0;

void setup() {
  Serial.begin(9600);
  while (!Serial);
  sensors.begin();
  Phpoc.begin();
  lastSampleTime = lastUpdateTime = millis();
}

void loop() {
  // 1 時間ごとにサンプリング
  if (millis() - lastSampleTime > SAMPLE_INTERVAL) {
    sensors.requestTemperatures();
    temps[index] = sensors.getTempCByIndex(0);
    index = (index + 1) % 100;
    lastSampleTime = millis();
  }
  // 毎秒、バッファ全点を古い順に出力
  if (millis() - lastUpdateTime > UPDATE_INTERVAL) {
    for (int i = 0; i < 100; i++) {
      Serial.println(temps[(index - i + 100) % 100]);
    }
    lastUpdateTime = millis();
  }
}

Web Serial Plotter 設定例

応用・拡張

トラブルシューティング

製造プロセス

  1. Raspberry Pi 4でWeb経由リアルタイム温湿度モニタリング
  2. EzTempでRaspberry Pi上の温度・湿度をシームレスに監視
  3. Web制御DMX照明システム:Arduino Megaマスターコントローラー
  4. Arduino UnoでAtmel AT89シリーズを簡単プログラミング──ステップバイステップガイド
  5. Arduinoで温湿度ロガーを作る – DHT11とEthernetシールドでSDカード記録
  6. 非接触温度スクリーニングゲート:Arduino MKR1000で迅速・高精度な検温
  7. ArduinoをWebパターンロックで保護 - 簡単セットアップとリモート制御
  8. 学校向けスマート体温監視システム: 正確、リアルタイム、安全
  9. 精密温度制御チャコールスモーカーキット:Arduino MKR1000で極上BBQを実現
  10. ArduinoとPHPoC WiFiシールドで作るWeb操作XYプロッター(ステッピングモーター制御)
  11. ArduinoとBluetoothでスマートフォン温度監視システムを構築