亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Manufacturing Technology >> 制造工艺

Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图

元器件与物料清单

元器件 数量
Arduino UNO 1
PHPoC WiFi Shield 2 for Arduino 1
Adafruit DS18B20 防水温度传感器 1
杜邦线 1 套

项目简介

仅用 Serial.println(temperature) 即可将温度经网络实时推送到网页。利用 PHPoC Shield 内置的 Web Serial Plotter,零 Web 编程即可在手机/电脑浏览器查看实时温度曲线。

适合初学者学习 WiFi 通讯和 DS18B20 温度传感器。

演示效果

网页实时绘制温度曲线,支持缩放、平移。

工作原理

  1. Arduino 读取 DS18B20 温度,通过 Serial.println() 发送
  2. 浏览器访问 PHPoC WiFi Shield IP 地址打开 Web Serial Plotter
  3. 温度数据自动转发到网页
  4. 网页实时绘制曲线
  5. 默认模式同 Arduino IDE 串口绘图器,可通过设置页自定义:X/Y 轴标题、温度范围、显示样本数等

分步指引

1. 硬件接线

2. 编译上传 Arduino 代码

见下方"短周期采样代码"

3. 自定义 Web Serial Plotter

Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图
Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图

4. 查看结果

Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图

长周期监测 (每小时/每日采样)

秒级采样直接打印即可。但若要监测 100 小时趋势,不能等 100 小时才看到完整图。

解决方案: Arduino 端维护循环队列存储最近 N 个采样值,高频(如每秒)批量打印队列内容。Web 端即可立即显示完整历史曲线。

示例:1 小时采样一次,队列长度 100,每秒打印 100 个数据点,瞬间呈现 100 小时趋势。代码见"长周期采样代码"。

新手推荐套件

参考《最适合新手的 Arduino 入门套件》

代码

短周期采样代码 (秒级)


#include 
#include 
#include 

#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();
  lastSampleTime = millis();
}

void loop() {
  if ((millis() - lastSampleTime) > SAMPLE_INTERVAL) {
    sensors.requestTemperatures();
    float temp = sensors.getTempCByIndex(0);
    Serial.println(temp);
    lastSampleTime = millis();
  }
}

长周期采样代码 (小时/天级)


#include 
#include 
#include 

#define UPDATE_INTERVAL 1000      // ms, 网页刷新间隔
#define SAMPLE_INTERVAL 60*60*1000 // 1小时采样一次

OneWire oneWire(8);
DallasTemperature sensors(&oneWire);
unsigned long lastSampleTime;
unsigned long lastUpdateTime;
float temps[100]; // 循环队列存100个样本
int index = 0;

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

void loop() {
  // 采样存入队列
  if ((millis() - lastSampleTime) > SAMPLE_INTERVAL) {
    sensors.requestTemperatures();
    float temp = sensors.getTempCByIndex(0);
    temps[index] = temp;
    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();
  }
}

原理图

  1. 将 PHPoC WiFi Shield 2 堆叠在 Arduino UNO 上
  2. 按下图接线 DS18B20
Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图
Arduino UNO + WiFi 盾板:串口实时推送温度到网页绘图

制造工艺

  1. 树莓派4搭建Web实时温湿度监测系统
  2. 树莓派配合 EzTemp 实现无缝温湿度监测
  3. 基于 Web 控制的 DMX 灯光系统 – Arduino 主控制器
  4. 使用 Arduino Uno 轻松编程 Atmel AT89 系列单片机——分步指南
  5. Arduino + DHT11 + 以太网盾板温湿度数据记录仪
  6. 非接触体温筛查闸机:Arduino MKR1000 + 红外测温 + 舵机控制
  7. 用网页图案解锁保护你的 Arduino - 简单设置与远程控制
  8. 校园智能体温监测系统 - 精准、实时、安全的学生健康守护方案
  9. 精准温控木炭烟熏炉套件:Arduino MKR1000 物联网 BBQ 大师
  10. 基于 Arduino 的智能温室监测与自动灌溉系统
  11. Arduino 激光雕刻机:GRBL 固件 + Universal Gcode Sender 全流程实战
  12. Arduino Nano + GY-906 非接触红外测温枪制作指南