『瀚思彼岸』» 智能家居技术论坛

 找回密码
 立即注册
楼主: polisher

[硬件DIY] 【小白首发】ESPhome自制WIFI多路电量表

  [复制链接]

11

主题

222

帖子

2199

积分

论坛DIY达人

积分
2199
金钱
1967
HASS币
40
发表于 2023-11-24 00:04:19 | 显示全部楼层
本帖最后由 花落花空 于 2023-11-24 00:06 编辑

复刻成功,但做了些修改,使用了单价较低的220v-5v模块,并缝合8266到一张板子上,兼容c3。
如果考虑到缝合后的信号问题,可以用带ipx坐的模块,外接天线。
感觉电压互感器的分压电阻用2010有点大,换成了0805的,实测没啥问题。
c8ff989c6ee57d8bb62b3de4f5580bc0.jpeg
微信截图_20231124000352.png
回复

使用道具 举报

16

主题

203

帖子

1592

积分

论坛DIY达人

积分
1592
金钱
1384
HASS币
20
 楼主| 发表于 2023-11-25 12:05:54 | 显示全部楼层
花落花空 发表于 2023-11-24 00:04
复刻成功,但做了些修改,使用了单价较低的220v-5v模块,并缝合8266到一张板子上,兼容c3。
如果考虑到缝合 ...

感谢指出的问题,这是我第一个DIY成品,选料上缺少经验见笑了。
关于您提到C3,最近我非常的头大,根据官方资料其GPIO18上电时有高电平毛刺,但在实际设计中发现其GPIO19在上电时有高电平毛刺的情况,导致该脚接入的继电器有跳动现象,百思不得其解,是官方资料有误还是我的电路中哪里出了问题?
另,您的电量表电路图如何可以的话,请也分享一下吧。
回复

使用道具 举报

11

主题

222

帖子

2199

积分

论坛DIY达人

积分
2199
金钱
1967
HASS币
40
发表于 2023-11-25 13:09:46 | 显示全部楼层
polisher 发表于 2023-11-25 12:05
感谢指出的问题,这是我第一个DIY成品,选料上缺少经验见笑了。
关于您提到C3,最近我非常的头大,根据官 ...

用立创分享了下,我也是半吊子。。。。https://oshwhub.com/hlhk/wifi-du ... ao-bl0906-esp8266-1
互相探讨
回复

使用道具 举报

1

主题

27

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
163
HASS币
0
发表于 2023-11-25 15:45:54 来自手机 | 显示全部楼层
我已经基本上制作完毕了,因为考虑WIFI板子准备加上屏幕。 所以WIFI板子重新打版,契合屏幕,准备选用spi7735的屏幕1.8寸的,排针引脚重新布局。
现在想问下各位。
这个BL0906的芯片。能不能自动保存 电量信息呢?
还是只输出信号,完全没有保存的?
或者是需要外置闪存芯片呢?
回复

使用道具 举报

1

主题

27

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
163
HASS币
0
发表于 2023-11-26 06:24:35 | 显示全部楼层
本帖最后由 zwd 于 2023-11-26 15:53 编辑

感谢楼主的开源。 来交作业了。
有些坑。
互感器的连接件和 pcb 板子有干涉。
总电量和总功率。  楼主把代码注释掉了, 我重新启用了试了。 原来不准的啊。 花了一晚上找手册 , 发现总功率和 总电量是 经过 十六分之一处理过的。
重新再 .h  和 .cpp 文件做了修改。 终于好了。
附上修改过的 组件文件。 直接替换楼主的文件就好了。 同时 配置文件里面的 总功率和总电量 2个参数可以 取消 注释。 即可显示。

我加了屏幕。大家看看我的作品吧。 本来想弄详细点的。 搞成屏幕翻页的。 实在是不会  esphome 。
感觉esp-12f 容易死机感觉。 一直不停的重启。 现在调试好了。 准备重新刷一次初始的的固件。 在OTA一次。 看看会不会稳定点。
下面多图展示。


IMG_20231126_021808.jpg
q.png
IMG_20231126_060422.jpg
IMG_20231126_060420.jpg
IMG_20231126_060415.jpg

bl0906.zip

9.94 KB, 下载次数: 40

评分

参与人数 1金钱 +16 收起 理由
sorrypqa + 16 大神666!

查看全部评分

回复

使用道具 举报

16

主题

203

帖子

1592

积分

论坛DIY达人

积分
1592
金钱
1384
HASS币
20
 楼主| 发表于 2023-11-26 15:41:51 | 显示全部楼层
zwd 发表于 2023-11-26 06:24
感谢楼主的开源。 来交作业了。
有些坑。
互感器的连接件和 pcb 板子有干涉。

能否讲讲修改的地方,另能否分享代码。
回复

使用道具 举报

1

主题

27

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
163
HASS币
0
发表于 2023-11-26 15:54:26 | 显示全部楼层
polisher 发表于 2023-11-26 15:41
能否讲讲修改的地方,另能否分享代码。

我重新编辑到我的回复了。 你刷新下帖子看看。
回复

使用道具 举报

1

主题

27

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
163
HASS币
0
发表于 2023-11-26 16:47:30 | 显示全部楼层
polisher 发表于 2023-11-26 15:41
能否讲讲修改的地方,另能否分享代码。

原来是楼主大大啊。 失敬失敬。  我详细说下。 H文件里面 你定义了电流、功率等的系数。  我在哪里加了2个变量。 WATT总功率,CF总电量。  

bl0906.h  添加的部分。
static const float BL0906_WATT = 16*1.097*1.097*(20000+20000+20000+20000+20000)/(40.41259*((5.1+5.1)*1000/2000)*1*100*1*1000);//总功率转换*16

static const float BL0906_CF =16*4194304*0.032768*16/(3600000*16*(40.4125*((5.1+5.1)*1000/2000)*1*100*1*1000/(1.097*1.097*(20000+20000+20000+20000+20000))));//总电量转换*16

  // 乘以该值以转换为实际 总电量值 (kWh)
  float sum_energy_reference_ = BL0906_CF;

  // 乘以该值以转换为实际 总功率值(W)
  float sum_power_reference_ = BL0906_WATT;

bl0906.cpp 修改的部分  power_reference_  改成 sum_power_reference_
  read_data(BL0906_WATT_SUM, sum_power_reference_, power_sensor_sum_ );//功率。通道总和
  read_data(BL0906_CF_SUM_CNT, sum_energy_reference_, energy_sensor_sum_ ); //电量。通道总和

读取部分做了修改:
//读取 总功率
  if (reference == sum_power_reference_){
    this-> write_byte(BL0906_READ_COMMAND);
    this-> write_byte(address);
    if (this-> read_array((uint8_t *) &buffer, sizeof(buffer)-1))  {      
      if (bl0906_checksum(address,&buffer)==buffer.checksum) {
        data_s24.l = buffer.l;
        data_s24.m = buffer.m;
        data_s24.h = buffer.h;
        value = (float) to_int32_t(data_s24) * reference;
        if (sensor_ != nullptr) {
          sensor_->publish_state(value);
        }      
      }
    } else {
      ESP_LOGW(TAG, "Junk on wire. Throwing away partial power message");
      while (read() >= 0)
        ;
    }
  }

  //读取电压、电流、电量、总电量
  if (reference == voltage_reference_ || reference == current_reference_ || reference == energy_reference_ || reference == sum_energy_reference_) {
    this-> write_byte(BL0906_READ_COMMAND);
    this-> write_byte(address);
    if (this-> read_array((uint8_t *) &buffer, sizeof(buffer)-1))  {   
    //ESP_LOGW(TAG, "checksum= 0x%02X", bl0906_checksum(BL0906_V_RMS,&buffer));      
      if (bl0906_checksum(address,&buffer)==buffer.checksum) {
        data_u24.l = buffer.l;
        data_u24.m = buffer.m;
        data_u24.h = buffer.h;
        value = (float) to_uint32_t(data_u24) * reference;
        if (sensor_ != nullptr) {
          sensor_->publish_state(value);
        }      
      }
    } else {
      ESP_LOGW(TAG, "Junk on wire. Throwing away partial message");
      while (read() >= 0)
        ;
    }     
  }  



回复

使用道具 举报

1

主题

27

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
163
HASS币
0
发表于 2023-11-26 22:12:52 | 显示全部楼层
我在工作台调试好之后,断电 街道 家庭电箱。   然后发现总电量清零了。  你们做的有发现吗?还是个别案例呢? 是否需要设计备用电池的电路呢?
回复

使用道具 举报

1

主题

27

帖子

190

积分

注册会员

Rank: 2

积分
190
金钱
163
HASS币
0
发表于 2023-11-27 16:52:25 | 显示全部楼层
花落花空 发表于 2023-11-24 00:04
复刻成功,但做了些修改,使用了单价较低的220v-5v模块,并缝合8266到一张板子上,兼容c3。
如果考虑到缝合 ...

你好,我做出来后,断电了。电量数据会丢失。 你的有没有这个问题呢?还是个别芯片的问题?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Hassbian

GMT+8, 2024-4-28 07:23 , Processed in 0.062137 second(s), 35 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表