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

AirOwl:基于 Arduino 101 的实时空气质量监测仪

组件与物料

组件数量
Arduino 101 (Genuino 101)1
ZH03A 激光粉尘传感器1
Adafruit Flora RGB NeoPixel LED(4颗装)1
杜邦线10
10kΩ 电阻3

应用与服务

项目简介

AirOwl 是一款实时空气质量监测设备,利用 Arduino 101 内置 BLE 将 PM1.0、PM2.5、PM10 数据推送至 Blynk App,同时通过 RGB LED “眼睛”颜色直观指示空气质量等级,串口亦可查看原始数据。

三种数据查看方式

  1. Blynk App (BLE):三个仪表盘实时显示 PM1.0 / PM2.5 / PM10 浓度
  2. RGB LED 眼睛颜色:
    • 🟢 绿色:安全
    • 🔵 蓝色:需注意
    • 🔴 红色:危险
  3. 串口监视器:输出原始浓度数值

电路原理图

详细原理图、PCB 设计、3D 外壳文件均托管于 GitHub:AirOwl_Genuino101。面包板接线图亦在仓库中提供。

Blynk App 配置步骤

  1. 安装 Blynk (iOS/Android),注册账号
  2. 创建新项目,选择板型为 Arduino 101,连接方式选 BLE
  3. 获取 Auth Token(邮件发送)
  4. 在工作区添加:BLE 组件 ×1、Gauge 仪表盘 ×3,分别绑定 Virtual Pin V1/V2/V3
  5. 点击工作区蓝牙图标连接 Arduino 101(手机蓝牙需开启)
  6. 点击运行,实时数据即刻呈现

核心代码

#include <BlynkSimpleCurieBLE.h> #include <CurieBLE.h>
#define BLYNK_SERIAL Print
byte data[24]; unsigned int PM1=0, PM25=0, PM10=0, count=0;
const int PIN1=3, PIN2=5, PIN3=6; // RGB LED 引脚
char auth[] = "Your_Blynk_Auth_Token";
BLEPeripheral blePeripheral;

void setup() {
  blePeripheral.setLocalName("AirOwl");
  blePeripheral.setDeviceName("AirOwl");
  blePeripheral.setAppearance(384);
  Blynk.begin(blePeripheral, auth); blePeripheral.begin();
  Serial1.begin(9600); Serial.begin(9600);
  pinMode(PIN1, OUTPUT); pinMode(PIN2, OUTPUT); pinMode(PIN3, OUTPUT);
}

void loop() {
  Blynk.run(); blePeripheral.poll();
  // 串口打印平均值
  Serial.println("PM1: " + String(PM1/count));
  Serial.println("PM2.5: " + String(PM25/count));
  Serial.println("PM10: " + String(PM10/count));
  delay(500);
  WriteData();
  // LED 颜色判断逻辑
  int avg = (PM1+PM25+PM10)/3;
  if (avg <= 100) LedColor(0,255,0);      // 绿
  else if (avg <= 300) LedColor(255,0,0); // 红
  else LedColor(0,0,255);                 // 蓝
  delay(500);
}

void LedColor(int r, int b, int g) {
  analogWrite(PIN1, r); analogWrite(PIN2, b); analogWrite(PIN3, g);
}

void getWinsenData() { // 解析 ZH03A 数据帧
  byte i=0; int checksum=0; Serial1.flush();
  while (Serial1.available()) {
    data[i] = Serial1.read();
    if (i <= 21) checksum += data[i];
    if (i == 23) {
      if (checksum == (data[22]*256 + data[23]) && data[0]==0x42 && data[1]==0x4D) {
        PM1  += data[4]*256 + data[5];
        PM25 += data[6]*256 + data[7];
        PM10 += data[8]*256 + data[9];
        count++; Serial1.flush(); break;
      } else break;
    } i++; delay(10);
  }
}

void WriteData() {
  getWinsenData();
  Blynk.virtualWrite(V1, PM1/count);
  Blynk.virtualWrite(V2, PM25/count);
  Blynk.virtualWrite(V3, PM10/count);
  delay(1000);
}

完整代码、原理图、PCB、3D 外壳文件均可在 GitHub 获取。

制造工艺

  1. 治具脚垫按钮详解:如何稳固治具提升制造效率
  2. PCB 打样制造必知要点:尺寸、层数、资料包与贴装方式
  3. 潜水电泵核心指南:特性、运行与安装要点
  4. 离心泵全解析:结构原理、优劣势与全场景应用
  5. 解锁中小制造企业真实价值:VCAT估值工具实战指南
  6. 前压钳(Toe Clamps)详解:特性、优势与选型指南
  7. 交流与直流电机:核心差异与选型决策指南
  8. 设备融资101:债务多元化、规避全资产抵押、锁定低息长期的实战手册
  9. 预测性维护:以数据驱动洞察释放效率、降低风险
  10. React开发者必掌握的7大核心库
  11. 碳纤维成型:现代制造必备洞察
  12. FRP 涂装专家指南:保护与美化纤维增强塑料