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

基于Arduino MKR Fox 1200构建可靠Sigfox千瓦时电表

元器件与物料

应用与在线服务

项目概述

1. 核心概念

本教程助您将老式感应式电表接入互联网。此类电表最古老但仍在使用:转盘周圈涂反光漆,带一条黑色条纹。每看到黑条通过即表示转盘转一圈。本项目中,120圈对应1 kWh电量消耗。

2. 微控制器、物联网网络与其他组件

采用Arduino MKRFOX1200,内置Sigfox连接(即网络层)。Sigfox是LPWAN网络,支持万物联网。工作于ISM 868MHz频段,每日上行140条消息(每条12字节载荷)。Sigfox还允许自定义消息处理:所有消息存储于Sigfox云,可通过定义回调等方式检索。

ThingSpeak: 物联网数据可视化平台。本项目中作为Sigfox回调目标,接收数据后即时以图表展示用电量。

使用哪款电能表? 即下图所示最老式感应式电表:

基于Arduino MKR Fox 1200构建可靠Sigfox千瓦时电表

3. 硬件连接

  1. 按接线图连接所有元件。 不展开原理说明,不明处可提问。别忘供电:USB移动电源或笔记本USB口均可。

基于Arduino MKR Fox 1200构建可靠Sigfox千瓦时电表

  1. 编写代码。 页面底部附有代码,不明处可提问。
  2. 创建ThingSpeak通道与分析。 注册https://thingspeak.com/,创建通道1:命名、描述、Field 1设为Consumption。基于通道1创建通道2(名称不同),在通道2选Matlab Analysis并写入代码:
readChannelID = TYPE_CHANNEL1_ID_HERE;
readAPIKey = 'TYPE_CHANNEL1_READ_API_KEY_HERE';
writeChannelID = TYPE_CHANNEL2_ID_HERE;
writeAPIKey = 'TYPE_CHANNEL2_API_KEY_HERE';
data = thingSpeakRead(readChannelID, 'ReadKey', readAPIKey,'OutputFormat','table');
analyzedData = data;
analyzedData.('Consumption') = (data.('Consumption') + YOUR_CURRENT_CONSUMPTION_STATUS_IN_WH)/1000;
thingSpeakWrite(writeChannelID, analyzedData, 'WriteKey', writeAPIKey);
  1. 创建Sigfox回调。 假设您已在后台注册MKRFOX1200,跳过注册教程。登录https://backend.sigfox.com/,进入回调区创建:

*EXPLAINED1 替换为通道1 ThingSpeak WriteApiKey

4. 设备安装与逻辑

完成最难部分。用双面胶将CNY70传感器贴于电表玻璃上——对准转盘中心(见图Installation)。按设备按钮两次校准:传感器读反光部分时二极管亮,读黑条时灭。校准成功后再按一次按钮。设备开始读取用电量,每30分钟通过Sigfox上传一次,读取精度设为25 Wh(本例中每3圈)。

基于Arduino MKR Fox 1200构建可靠Sigfox千瓦时电表

5. 最终效果

完成上述步骤后,您将在ThingSpeak看到精美的用电量图表:

基于Arduino MKR Fox 1200构建可靠Sigfox千瓦时电表

代码

#include <SigFox.h>
int DIODE = 13;
int BTN = 12;
int BTN_state = 0;
int BTN_prev = 0;
int BTN_NR_OF_PRESS = 0;
int CALC = 0;
unsigned long i = 0;
uint32_t CONSUMPTION = 0;
boolean SHINE = false;
boolean KARDAN = false;

void setup() {
  pinMode(DIODE, OUTPUT);
  pinMode(BTN, INPUT);
  Serial.begin(9600);
  if (!SigFox.begin()) {
    Serial.println("Sigfox module unavailable.");
  }
}

void loop() {
  int senzor = analogRead(A3);
  BTN_state = digitalRead(BTN);
  if (BTN_state != BTN_prev) {
    if (BTN_state == HIGH) {
      BTN_NR_OF_PRESS++;
    }
  }
  BTN_prev = BTN_state;
  if (BTN_NR_OF_PRESS % 3 == 0) {
    if (senzor > 300 && senzor < 950) {
      digitalWrite(DIODE, HIGH);
    } else {
      digitalWrite(DIODE, LOW);
    }
  }
  if (senzor < 1020 && SHINE == false) {
    SHINE = true;
  }
  if (senzor > 1020 && SHINE == true && BTN_NR_OF_PRESS == 4) {
    CALC++;
    SHINE = false;
  }
  if (CALC % 3 == 0 && CALC != 0 && KARDAN == false) {
    KARDAN = true;
    CONSUMPTION += 25;
  }
  if (CALC % 3 != 0) {
    KARDAN = false;
  }
  if (BTN_NR_OF_PRESS % 4 == 0) {
    digitalWrite(DIODE, LOW);
    if (SHINE == false) {
      for (millis(); (millis() - i) > 1800000;) {
        i = millis();
        SigFox.debug();
        SigFox.beginPacket();
        SigFox.write(CONSUMPTION);
        SigFox.endPacket();
      }
    }
  }
}

原理图

MKRFOX1200与CNY70等元件连接原理图

制造工艺

  1. 智能缺水报警器 – DIY植物土壤湿度监测装置
  2. 意大利语单词时钟:Arduino Nano + NeoPixel 144 灯珠 + LCD + RTC 打造
  3. 仅用 3 根模拟口驱动 4×3 矩阵键盘:电阻分压识别键值
  4. 蓝牙温度监测仪:Arduino Nano + NTC 热敏电阻 + HC-06 无线传输
  5. DIY 自动量程电容表 (10 pF – 10 μF) – Arduino Nano 简易制作
  6. 非接触手势门锁:APDS-9960 + Arduino 实现安全门禁
  7. Arduino Nano 多功能伴侣套件 —— 电阻/电容测量、二极管测试、RTC时钟一体化
  8. Arduino Micro/Leonardo USB MIDI 适配器套件 —— 完整元件清单与固件指南
  9. 为Arduino构建隔离模拟输入电路
  10. RGB 32 频段音频频谱可视化器:Arduino Nano 驱动 WS2812B 8×32 LED 矩阵
  11. 两个电阻自制 Arduino UNO 视频输出线(RCA/TVout)
  12. Arduino UNO 精准视觉反应时间测试仪