一、方案概述
二、详细方案
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!!!
再看看SSD1306显示,good news again!因为显示屏尺寸比较小,现在只显示了电压、电流、功率、容量这几个参数,后面再考虑分屏显示!!!目前看到的这个图片内容是USB风扇作为负载的数据!!!
2.5 手机APP设计
打开“点灯BLINKER”app,简单几个拖拽就可以设计好符合自己的APP了,这点要为点灯科技点32个赞:D :D :D
我的这个界面显示接单了点,没有做优化~~~,点击一下刷新一下数据,比SSD1306显示的内容多了一个运行的时间!!!
三、未来展望
到目前为止,已基本完成了本项目的设定目标了!!!
但是我们要不断前进!前进!前进!
后面再考虑给这个项目添加新能的功能,比如加大数据采集的频率,然后再将数据保存到U盘或者SD卡,就是一个简单的数据记录仪了!
好吧,YY太多了,到这里为止吧!!!
PS:可以调节到采样电阻可以实现采样微安级别的电流,有需要的可以自行调节!!!
电流和容量的精度也不做保证,误差肯定有的,因为采样电阻也是有一定的误差的!!!