Chocho2017 发表于 2018-3-15 15:25:28

【ESP8266教程—Lesson4】大大大事不好啦,8266变电功耗检测器

大大大大事不好啦
ESP8266变身家电功耗监测器啦
    今天,为各位小伙伴们带来一款实用小仪器——家用电器功耗监测仪的制作过程。大家也可以跟着我一起为自己也做一个可以监测家里电器功耗情况的神器。希望师兄师姐轻拍:lol
    这一周最让小弟伤心的,就是听到霍金去世的消息……【响指~收】。
    好了,咱们不闲扯了。由于使用家里的废旧东西改造,所以外观不完美,让大家见笑了。这就放图;P

   我使用的是Firebeetle-ESP8266作主控,然后通过Blynk手机app软件实现远程监控。    下面为大家细说说我是怎么制作的。
所需材料   FireBeetle ESP8266 WiFi 物联网开发板×1    50A电流(AC/DC)检测模块×1    废旧的220v转5v充电器插头   ×1(随便找一个手机充电器拆掉就好了(*^__^*) 嘻嘻)    废旧的插板头×1 (我拆的是公牛插座)    塑料盒×1(某宝上可以买到,或者用礼品盒子也可以)
制作过程1、制作前准备    先将5v充电插头,拆开(小弟我是暴力拆卸派的,所以拆卸过程就不展示了;P    将变压器的模块与金属插脚的那一块分别取出待用在废旧塑料盒上,找到合适的位置,开口,后面会将那个插板头用热熔胶粘上。在塑料盒的底部开两个合适的长条孔,将之前拆下的金属插脚通过这里穿出去。Ok,准备工作做好了,咱们下面开始把硬件连接起来。
2、连接硬件硬件连接原理图,如下图所示:将电流模块自带的杜邦线剪开,并焊接到主控板的3.3V电源上,模拟输出连接到主控板的A0口。降压模块上火零线接头,分别对应接上金属插脚的火零引脚将插座头用热熔胶固定在塑料盒内
按照连接示意图,把所有器件都焊接起来,最后,直接将所有器件合理地安装进塑料盒内,固定住。
4、创建Blynk项目如何创建Blynk项目,请移步【FireBeetle Board-ESP32教程之一】Blynk—控制LED灯Blynk中项目,对应的控件及通道如下
控件名称功能通道
Clear清楚当前记录V2
用电量显示当前累积用电量(单位:度)V1
电流显示当前电流(单位:A)V0
需要注意的是:电流显示的最大值是10A,也就是说,我们的设备允许的最大电流是10A。Blynk项目中,控件的排版如下图所示:
5、下载程序到ESP8266程序源代码下载地址,源码中需要修改Auth Token码。#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

BlynkTimer timer;
BlynkTimer timerUpdate;

// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "e3094aa9d9414b9c9745fb6513e9b876";

float dataBuffer = {0};
char i = 0;
float total = 0;
float currentValue = 0;
long times = 0;
float degValue = 0;

void degreeValue(void){
float degree = (0.22 * currentValue) / 3600; //calculate degree per second
degValue = degValue + degree;
}

void getCurrentValue(void){
while(i < 30){
    total = total - dataBuffer;
    dataBuffer = (analogRead(0)-510)*3.3/1024/0.04-0.04;
    total = total + dataBuffer;
    i++;
}
i = 0;
currentValue = abs(total / 30);
total = 0;
degreeValue();
}

BLYNK_CONNECTED(){
Blynk.syncVirtual(V2);
}

BLYNK_WRITE(V2){
int buttonState = param.asInt();
if(buttonState){
    degValue = 0;
}
}

void updateValue(void){
Blynk.virtualWrite(V0,currentValue);
Blynk.virtualWrite(V1,degValue);

Serial.println(times);
Serial.println(currentValue);
Serial.println(degValue);
Serial.println();
}

void setup()
{
// Debug console
Serial.begin(115200);

WiFi.mode(WIFI_STA);

int cnt = 0;
while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    if (cnt++ >= 10) {
      WiFi.beginSmartConfig();
      while (1) {
      delay(1000);
      if (WiFi.smartConfigDone()) {
          Serial.println();
          Serial.println("SmartConfig: Success");
          break;
      }
      Serial.print("|");
      }
    }
}

WiFi.printDiag(Serial);

Blynk.config(auth);
timer.setInterval(1000L, getCurrentValue);
timerUpdate.setInterval(5000L, updateValue);
}

void loop()
{
Blynk.run();
timer.run();
timerUpdate.run();
}
最后,嘛哩嘛哩哄,出锅上菜。
以后,谁是家里的吃电大王,我打开手机app就一目了然了。ps:家里的空调表示自己感到紧张不安,并且很慌:lol:lol:lol:lol:lol:lol:lol

hnyzcj 发表于 2018-3-15 19:10:30

这个很不错,值得我们学习给你点赞

lkl0305 发表于 2018-3-15 22:15:36

纯手工版智能插座:lol

Chocho2017 发表于 2018-3-16 11:18:36

lkl0305 发表于 2018-3-15 22:15
纯手工版智能插座

呵呵,你要不要也来一个,亲测,不会炸。

bobo 发表于 2018-3-17 11:13:39

顶{:5_168:}

Jayqiu 发表于 2018-3-18 12:10:03

顶顶顶~

Chocho2017 发表于 2018-3-19 09:23:16

Jayqiu 发表于 2018-3-18 12:10
顶顶顶~

谢谢。

Chocho2017 发表于 2018-3-19 09:23:28

bobo 发表于 2018-3-17 11:13


谢谢。(*^__^*) 嘻嘻

KNIGHT-LEE 发表于 2018-3-19 11:17:10

666,DIY的东西感觉就是不一样

Chocho2017 发表于 2018-3-19 13:24:14

KNIGHT-LEE 发表于 2018-3-19 11:17
666,DIY的东西感觉就是不一样

{:5_132:}

Forgotten 发表于 2018-3-21 11:32:22

万能的热熔胶, 插座的位置还是搞个卡扣或者扎带啥的固定下吧:lol

Chocho2017 发表于 2018-3-21 22:40:52

Forgotten 发表于 2018-3-21 11:32
万能的热熔胶, 插座的位置还是搞个卡扣或者扎带啥的固定下吧

O(∩_∩)O哈哈~

gray6666 发表于 2018-3-23 08:20:40

路过,学习了。。。。。。。。。。。。。

激萌free 发表于 2019-3-21 22:58:24

群主大大,我也想做个玩,源代码地址失效了,能再发一个吗:victory:

岑剑伟 发表于 2019-10-8 12:20:41

空调**了
页: [1]
查看完整版本: 【ESP8266教程—Lesson4】大大大事不好啦,8266变电功耗检测器