17720| 15
|
【ESP8266教程—Lesson4】大大大事不好啦,8266变电功耗检测器 |
大大大大事不好啦 ESP8266变身家电功耗监测器啦 今天,为各位小伙伴们带来一款实用小仪器——家用电器功耗监测仪的制作过程。大家也可以跟着我一起为自己也做一个可以监测家里电器功耗情况的神器。希望师兄师姐轻拍:lol 这一周最让小弟伤心的,就是听到霍金去世的消息……【响指~收】。 好了,咱们不闲扯了。由于使用家里的废旧东西改造,所以外观不完美,让大家见笑了。这就放图;P 我使用的是Firebeetle-ESP8266作主控,然后通过Blynk手机app软件实现远程监控。 下面为大家细说说我是怎么制作的。 所需材料 废旧的220v转5v充电器插头 ×1(随便找一个手机充电器拆掉就好了(*^__^*) 嘻嘻) 废旧的插板头 ×1 (我拆的是公牛插座) 塑料盒 ×1(某宝上可以买到,或者用礼品盒子也可以) 制作过程 1、制作前准备 先将5v充电插头,拆开(小弟我是暴力拆卸派的,所以拆卸过程就不展示了;P 将变压器的模块与金属插脚的那一块分别取出待用 在废旧塑料盒上,找到合适的位置,开口,后面会将那个插板头用热熔胶粘上。 在塑料盒的底部开两个合适的长条孔,将之前拆下的金属插脚通过这里穿出去。 Ok,准备工作做好了,咱们下面开始把硬件连接起来。 2、连接硬件 硬件连接原理图,如下图所示: 将电流模块自带的杜邦线剪开,并焊接到主控板的3.3V电源上,模拟输出连接到主控板的A0口。 降压模块上火零线接头,分别对应接上金属插脚的火零引脚 将插座头用热熔胶固定在塑料盒内 按照连接示意图,把所有器件都焊接起来,最后,直接将所有器件合理地安装进塑料盒内,固定住。 4、创建Blynk项目 如何创建Blynk项目,请移步【FireBeetle Board-ESP32教程之一】Blynk—控制LED灯 Blynk中项目,对应的控件及通道如下
需要注意的是:电流显示的最大值是10A,也就是说,我们的设备允许的最大电流是10A。 Blynk项目中,控件的排版如下图所示: 5、下载程序到ESP8266 程序源代码下载地址,源码中需要修改Auth Token码。 [mw_shl_code=applescript,true]#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[30] = {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(); } [/mw_shl_code] 最后,嘛哩嘛哩哄,出锅上菜。 以后,谁是家里的吃电大王,我打开手机app就一目了然了。 ps:家里的空调表示自己感到紧张不安,并且很慌:lol:lol:lol:lol:lol:lol:lol |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed