基于BLINKER和ESP8266的无线USB电压电流表

一、方案概述

目前市场上的USB电压电流表很多,但是数据的测量精度和采样频率都是固定的,本着DIY的精神设计了基于BLINKER的无线USB电压电流表,实现电流的精度和采样频率都可调节。 总体方案如下,用ESP8266作为主控芯片,通过IIC跟电压电流传感器INA226进行通信,同时将测量的数据显示在SSD1306上,其中SSD1306通过模拟IIC进行通信,同时将测量的数据通过BLINKER发送到手机APP显示,可以实现远程查看电压、电流、功率、容量

基于BLINKER和ESP8266的无线USB电压电流表_第1张图片

 

二、详细方案

2.1电压电流检测
TI INA226是一个具备IIC功能的双向高/低端的电流、功率检测器件,电流检测精度是2.5uV。电路图如右所示,SCL连接到ESP8266的D1,SDA连接到ESP8266的D2,通过设定采样电阻为0.01欧姆则可以检测出1mA的电流。

基于BLINKER和ESP8266的无线USB电压电流表_第2张图片基于BLINKER和ESP8266的无线USB电压电流表_第3张图片

2.2 SSD1306显示模块

SSD1306通过IO口跟ESP8266的D5、D6链接,使用S8GE显示库驱动

 

2.3 程序设计

void loop()
{
    Blinker.run();
  /******************************************/
    static unsigned long time1 = millis();
    static unsigned long time3 = millis();
    static unsigned long time2 = 0, time4 = 0;
    time2 = millis();
    if ((time2 - time1) >= 10)                               //10m测量一次参数,并进行容量计算
    {
      BusVoltage = ina.readBusVoltage();
      ShuntCurrent = ina.readShuntCurrent();
      BusPower = ina.readBusPower();  

     CapaPower +=ShuntCurrent * (time2 - time1) / 3600;

 

 

 time1 = time2;
    }
    time4 = millis();
    if ((time4 - time3) >= 500)                              //500mS刷新一次SSD1306
    {

      time3 = time4;
      u8g2.clearBuffer();         // clear the internal memory
      u8g2.setCursor(108, 14);         
      u8g2.print(" V");
      u8g2.setCursor(113, 30);
      u8g2.print("A");
      u8g2.setCursor(110, 46);
      u8g2.print("W");
      u8g2.setCursor(83, 64);
      u8g2.print("mAh");

      u8g2.setCursor(0, 14);
      u8g2.print(BusVoltage, 3);

      u8g2.setCursor(0, 30);
      u8g2.print(ShuntCurrent, 3);

      u8g2.setCursor(0, 46);
      u8g2.print(BusPower, 3);
      u8g2.setCursor(0, 64);
      u8g2.print(CapaPower);

      u8g2.sendBuffer();

       digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));

  }

}

2.4 调试

串口结果如下面所示证明esp8266已经跟INA226通信成功而且已经连接上网络了,网址是192.168.1.103,good news!!!

基于BLINKER和ESP8266的无线USB电压电流表_第4张图片

再看看SSD1306显示,good news again!因为显示屏尺寸比较小,现在只显示了电压、电流、功率、容量这几个参数,后面再考虑分屏显示!!!目前看到的这个图片内容是USB风扇作为负载的数据!!!

基于BLINKER和ESP8266的无线USB电压电流表_第5张图片

2.5 手机APP设计
打开“点灯BLINKER”app,简单几个拖拽就可以设计好符合自己的APP了,这点要为点灯科技点32个赞:D :D :D

基于BLINKER和ESP8266的无线USB电压电流表_第6张图片

我的这个界面显示接单了点,没有做优化~~~,点击一下刷新一下数据,比SSD1306显示的内容多了一个运行的时间!!!

三、未来展望
  到目前为止,已基本完成了本项目的设定目标了!!!
  但是我们要不断前进!前进!前进!
  后面再考虑给这个项目添加新能的功能,比如加大数据采集的频率,然后再将数据保存到U盘或者SD卡,就是一个简单的数据记录仪了!
  好吧,YY太多了,到这里为止吧!!!

PS:可以调节到采样电阻可以实现采样微安级别的电流,有需要的可以自行调节!!!
电流和容量的精度也不做保证,误差肯定有的,因为采样电阻也是有一定的误差的!!!

 

 

你可能感兴趣的:(基于BLINKER和ESP8266的无线USB电压电流表)