From 8e933e1be164799ba34fc91647777c0bed3940aa Mon Sep 17 00:00:00 2001 From: Vincent1964 Date: Sun, 30 Jul 2023 11:46:21 +0200 Subject: [PATCH] Integrate MAX17043 driver mechanisms in xsns_110 --- .../DFRobot_MAX17043/DFRobot_MAX17043.cpp | 68 ---------- .../DFRobot_MAX17043/DFRobot_MAX17043.h | 121 ----------------- lib/lib_i2c/DFRobot_MAX17043/LICENSE | 7 - lib/lib_i2c/DFRobot_MAX17043/README_CN.md | 121 ----------------- .../DFRobot_MAX17043/DFRobot_MAX17043.ino | 74 ---------- lib/lib_i2c/DFRobot_MAX17043/keywords.txt | 9 -- .../DFRobot_MAX17043/library.properties | 9 -- .../python/micropython/DFRobot_MAX17043.py | 111 --------------- .../python/micropython/README.md | 100 -------------- .../python/micropython/README_CN.md | 97 ------------- .../python/micropython/demo_MAX17043.py | 38 ------ .../python/raspberry/DFRobot_MAX17043.py | 109 --------------- .../python/raspberry/README.md | 128 ------------------ .../python/raspberry/README_CN.md | 119 ---------------- .../raspberry/examples/demo_read_and_int.py | 44 ------ lib/lib_i2c/DFRobot_MAX17043/readme.md | 122 ----------------- .../resources/images/DFR0563.jpg | Bin 12228 -> 0 bytes .../resources/images/Raspberry Pi.jpg | Bin 29834 -> 0 bytes .../DFRobot_MAX17043/resources/images/UNO.jpg | Bin 26373 -> 0 bytes .../resources/images/esp32.jpg | Bin 52867 -> 0 bytes .../tasmota_xsns_sensor/xsns_110_max17043.ino | 36 ----- 21 files changed, 1313 deletions(-) delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/DFRobot_MAX17043.cpp delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/DFRobot_MAX17043.h delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/LICENSE delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/README_CN.md delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/examples/DFRobot_MAX17043/DFRobot_MAX17043.ino delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/keywords.txt delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/library.properties delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/python/micropython/DFRobot_MAX17043.py delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/python/micropython/README.md delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/python/micropython/README_CN.md delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/python/micropython/demo_MAX17043.py delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/python/raspberry/DFRobot_MAX17043.py delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/python/raspberry/README.md delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/python/raspberry/README_CN.md delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/python/raspberry/examples/demo_read_and_int.py delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/readme.md delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/resources/images/DFR0563.jpg delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/resources/images/Raspberry Pi.jpg delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/resources/images/UNO.jpg delete mode 100644 lib/lib_i2c/DFRobot_MAX17043/resources/images/esp32.jpg diff --git a/lib/lib_i2c/DFRobot_MAX17043/DFRobot_MAX17043.cpp b/lib/lib_i2c/DFRobot_MAX17043/DFRobot_MAX17043.cpp deleted file mode 100644 index b24f686af68c..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/DFRobot_MAX17043.cpp +++ /dev/null @@ -1,68 +0,0 @@ -/*! - * @file DFRobot_MAX17043.cpp - * - * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) - * @license The MIT License (MIT) - * @author [ouki.wang](ouki.wang@dfrobot.com) - * @version V1.0 - * @date 2018-4-14 - * @url https://github.com/DFRobot/DFRobot_MAX17043 - */ - -#include "DFRobot_MAX17043.h" - -DFRobot_MAX17043::DFRobot_MAX17043() {} - -int DFRobot_MAX17043::begin() -{ - // write16(MAX17043_COMMAND, 0x0054); //power on reset - write16(MAX17043_COMMAND, 0x5400); //power on reset - delay(10); - _DBG_CODE(Serial.print("\nbegin: ")); - _DBG_CODE(Serial.println(read16(MAX17043_CONFIG), HEX)); - if(read16(MAX17043_CONFIG) == 0x971c) { //default 0x971c - write16(MAX17043_MODE, 0x4000); //quick start - write16(MAX17043_CONFIG, 0x9700); - _DBG_CODE(Serial.println(read16(MAX17043_CONFIG), HEX)); - delay(10); - return 0; - } - return -1; -} - -float DFRobot_MAX17043::readVoltage() -{ - return (1.25f * (float)(read16(MAX17043_VCELL) >> 4)); -} - -float DFRobot_MAX17043::readPercentage() -{ - uint16_t per = read16(MAX17043_SOC); - return (float)((per >> 8) + 0.003906f * (per & 0x00ff)); -} - -void DFRobot_MAX17043::setInterrupt(uint8_t per) -{ - uint16_t temp; - if(per > 32) - temp = 32; - else if(per < 1) - temp = 1; - temp = 32 - temp; - writeRegBits(MAX17043_CONFIG, temp, 0x01f, 0); -} - -void DFRobot_MAX17043::clearInterrupt() -{ - writeRegBits(MAX17043_CONFIG, 0, 0x01, 5); -} - -void DFRobot_MAX17043::setSleep() -{ - writeRegBits(MAX17043_CONFIG, 1, 0x01, 7); -} - -void DFRobot_MAX17043::setWakeUp() -{ - writeRegBits(MAX17043_CONFIG, 0, 0x01, 7); -} diff --git a/lib/lib_i2c/DFRobot_MAX17043/DFRobot_MAX17043.h b/lib/lib_i2c/DFRobot_MAX17043/DFRobot_MAX17043.h deleted file mode 100644 index f4147ba6988c..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/DFRobot_MAX17043.h +++ /dev/null @@ -1,121 +0,0 @@ -/*! - * @file DFRobot_MAX17043.h - * - * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) - * @license The MIT License (MIT) - * @author [ouki.wang](ouki.wang@dfrobot.com) - * @version V1.0 - * @date 2018-4-14 - * @url https://github.com/DFRobot/DFRobot_MAX17043 - */ - -#ifndef __DFROBOT_MAX17043_H -#define __DFROBOT_MAX17043_H - -#include "Arduino.h" -#include "Wire.h" - -#define _DBG 0 - -#if(_DBG) - #define _DBG_CODE(x) x -#else - #define _DBG_CODE(x) -#endif - -#define MAX17043_ADDRESS 0x36 - -#define MAX17043_VCELL 0x02 -#define MAX17043_SOC 0x04 -#define MAX17043_MODE 0x06 -#define MAX17043_VERSION 0x08 -#define MAX17043_CONFIG 0x0c -#define MAX17043_COMMAND 0xfe - -class DFRobot_MAX17043 { -public: - /** - * @fn DFRobot_MAX17043 - * @brief create MAX17043 object - * @return MAX17043 object - */ - DFRobot_MAX17043(); - /** - * @fn begin - * @brief MAX17043 begin and test moudle - * - * @return initialization result - * @retval 0 successful - * @retval -1 faild - */ - int begin(); - /** - * @fn readVoltage - * @brief read battery voltage in mV - * @return voltage in mV - */ - float readVoltage(); - /** - * @fn readPercentage - * @brief read battery remaining capacity in percentage - * - * @return battery remaining capacity in percentage - */ - float readPercentage(); - /** - * @fn setInterrupt - * @brief set MAX17043 interrput threshold - * - * @param per interrupt threshold as %1 - 32% (integer) - */ - void setInterrupt(uint8_t per); - /** - * @fn clearInterrupt - * @brief clear MAX17043 interrupt - */ - void clearInterrupt(); - /** - * @fn setSleep - * @brief set MAX17043 in sleep mode - * - */ - void setSleep(); - /** - * @fn setWakeUp - * @brief weak up MAX17043 - * - */ - void setWakeUp(); - - private: - void write16(uint8_t reg, uint16_t dat) { - Wire.begin(); - Wire.beginTransmission(MAX17043_ADDRESS); - Wire.write(reg); - Wire.write(dat >> 8); - Wire.write(dat); - Wire.endTransmission(); - } - - uint16_t read16(uint8_t reg) { - uint16_t temp; - Wire.begin(); - Wire.beginTransmission(MAX17043_ADDRESS); - Wire.write(reg); - Wire.endTransmission(); - Wire.requestFrom(MAX17043_ADDRESS, 2); - temp = (uint16_t)Wire.read() << 8; - temp |= (uint16_t)Wire.read(); - Wire.endTransmission(); - return temp; - } - - void writeRegBits(uint8_t reg, uint16_t dat, uint16_t bits, uint8_t offset) { - uint16_t temp; - temp = read16(reg); - temp = (temp & (~(bits << offset))) | (dat << offset); - write16(reg, temp); - } -}; - -#endif diff --git a/lib/lib_i2c/DFRobot_MAX17043/LICENSE b/lib/lib_i2c/DFRobot_MAX17043/LICENSE deleted file mode 100644 index 79f310082f42..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/LICENSE +++ /dev/null @@ -1,7 +0,0 @@ -Copyright 2010 DFRobot Co.Ltd - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/lib/lib_i2c/DFRobot_MAX17043/README_CN.md b/lib/lib_i2c/DFRobot_MAX17043/README_CN.md deleted file mode 100644 index 85d1f9c878bf..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/README_CN.md +++ /dev/null @@ -1,121 +0,0 @@ -# DFRobot_MAX17043 - -* [English Version](./README.md) - -Gravity 3.7V锂电池电量计使用Gravity I2C接口,超低工作电流,通过Maxim专利算法,实时跟踪电池的相对充电状态(SOC,State-Of-Charge),无需充放电学习过程,无积累误差,即插即用,准确地测量锂电池的当前电压和剩余电量。模块预留低电量报警中断引脚,当电池电量低于指定电量时,该引脚产生一个下跳脉冲,触发主控的外部中断。 - -![产品效果图](./resources/images/DFR0563.jpg) - - -## 产品链接([https://www.dfrobot.com.cn/goods-1743.html](https://www.dfrobot.com.cn/goods-1743.html)) - SKU: DFR0563 - -## 目录 - -* [概述](#概述) -* [连接](连接) -* [库安装](#库安装) -* [方法](#方法) -* [兼容性](#兼容性) -* [历史](#历史) -* [创作者](#创作者) - -## 概述 - -提供 Arduino 库,用于通过 I2C 读取和解释 MAX17043 数据。 - -## 连接 -相同颜色的线连接在一起,我们只举例说明主板是如何连接到电量计的。接线时要注意管脚的对应关系,接线图如下: - -* Arduino UNO -
- -
- -* ESP32 -
- -
- - -## 库安装 - -这里有2种安装方法: -1. 使用此库前,请首先下载库文件,将其粘贴到\Arduino\libraries目录中,然后打开examples文件夹并在该文件夹中运行演示。 -2. 直接在Arduino软件库管理中搜索下载 DFRobot_MAX17043 库 - -## 方法 - -```C++ - /** - * @fn DFRobot_MAX17043 - * @brief 构造MAX17043对象 - * @return MAX17043 类对象 - */ - DFRobot_MAX17043(); - /** - * @fn begin - * @brief MAX17043 初始化 - * - * @return 初始化结果 - * @retval 0 成功 - * @retval -1 失败 - */ - int begin(); - /** - * @fn readVoltage - * @brief 读电池电压,单位: mV - * @return 电池电压,单位:mV - */ - float readVoltage(); - /** - * @fn readPercentage - * @brief 读取剩余电池容量的百分比 - * - * @return 剩余电池容量的百分比 - */ - float readPercentage(); - /** - * @fn setInterrupt - * @brief 设置 MAX17043 中断阈值 - * - * @param per 中断阈值范围: %1 - 32% (整数) - */ - void setInterrupt(uint8_t per); - /** - * @fn clearInterrupt - * @brief 清除 MAX17043 中断 - */ - void clearInterrupt(); - /** - * @fn setSleep - * @brief 设置 MAX17043 进入睡眠模式 - * - */ - void setSleep(); - /** - * @fn setWakeUp - * @brief 唤醒 MAX17043 - */ - void setWakeUp(); -``` - -## 兼容性 - -| MCU | Work Well | Work Wrong | Untested | Remarks | -| ------------------ | :-------: | :--------: | :------: | ------- | -| FireBeetle-ESP32 | √ | | | -| FireBeetle-ESP8266 | √ | | | -| Arduino uno | √ | | | - -## 历史 - -- 2018/04/14 - 1.0.0 版本 - -## 创作者 - -Written by ouki.wang(ouki.wang@dfrobot.com), 2018. (Welcome to our [website](https://www.dfrobot.com/)) - - - - diff --git a/lib/lib_i2c/DFRobot_MAX17043/examples/DFRobot_MAX17043/DFRobot_MAX17043.ino b/lib/lib_i2c/DFRobot_MAX17043/examples/DFRobot_MAX17043/DFRobot_MAX17043.ino deleted file mode 100644 index 746f166fe1c9..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/examples/DFRobot_MAX17043/DFRobot_MAX17043.ino +++ /dev/null @@ -1,74 +0,0 @@ -/*! - * @file DFRobot_MAX17043.ino - * @brief connect gauge I2C interface with your board (please reference board compatibility) - * @n Voltage, percentage will be printed via serial. - * @n Use API to config alaram and sleep (please reference to the readme in lib) - * - * @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) - * @license The MIT License (MIT) - * @author [ouki.wang](ouki.wang@dfrobot.com) - * @version V1.0 - * @date 2018-4-14 - * @url https://github.com/DFRobot/DFRobot_MAX17043 - */ - -#include "DFRobot_MAX17043.h" -#include "Wire.h" - -#ifdef __AVR__ - #define ALR_PIN 2 -#else - #define ALR_PIN D2 -#endif - -#define PRINT_INTERVAL 2000 - -DFRobot_MAX17043 gauge; -uint8_t intFlag = 0; - -void interruptCallBack() -{ - intFlag = 1; -} - -void setup() -{ - Serial.begin(115200); - while(!Serial); - Serial.println(); - Serial.println(); - pinMode(ALR_PIN, INPUT_PULLUP); - attachInterrupt(ALR_PIN, interruptCallBack, FALLING); //default alert is 32% - - while(gauge.begin() != 0) { - Serial.println("gauge begin faild!"); - delay(2000); - } - delay(2); - Serial.println("gauge begin successful!"); - //gauge.setInterrupt(32); //use this to modify alert threshold as 1% - 32% (integer) -} - -void loop() -{ - static unsigned long lastMillis = 0; - if((millis() - lastMillis) > PRINT_INTERVAL) { - lastMillis = millis(); - Serial.println(); - - Serial.print("voltage: "); - Serial.print(gauge.readVoltage()); - Serial.println(" mV"); - - Serial.print("precentage: "); - Serial.print(gauge.readPercentage()); - Serial.println(" %"); - } - - if(intFlag == 1) { - intFlag = 0; - gauge.clearInterrupt(); - Serial.println("Low power alert interrupt!"); - //put your battery low power alert interrupt service routine here - } -} diff --git a/lib/lib_i2c/DFRobot_MAX17043/keywords.txt b/lib/lib_i2c/DFRobot_MAX17043/keywords.txt deleted file mode 100644 index bcb479a57948..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/keywords.txt +++ /dev/null @@ -1,9 +0,0 @@ -DFRobot_MAX17043 KEYWORD1 - -begin KEYWORD2 -readVoltage KEYWORD2 -readPercentage KEYWORD2 -setInterrupt KEYWORD2 -clearInterrupt KEYWORD2 -setSleep KEYWORD2 -setWakeUp KEYWORD2 \ No newline at end of file diff --git a/lib/lib_i2c/DFRobot_MAX17043/library.properties b/lib/lib_i2c/DFRobot_MAX17043/library.properties deleted file mode 100644 index c769e3bef282..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=DFRobot_MAX17043 -version=1.0.0 -author=DFRobot -maintainer=ouki.wang -sentence=DFRobot Standard library(SKU:DFR0563). -paragraph=Gravity: I2C 3.7V Li Battery Fuel Gauge. -category=Sensors -url=https://github.com/DFRobot/DFRobot_MAX17043 -architectures=* diff --git a/lib/lib_i2c/DFRobot_MAX17043/python/micropython/DFRobot_MAX17043.py b/lib/lib_i2c/DFRobot_MAX17043/python/micropython/DFRobot_MAX17043.py deleted file mode 100644 index b7ac8b9e8ba0..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/python/micropython/DFRobot_MAX17043.py +++ /dev/null @@ -1,111 +0,0 @@ -'''! - @file DFRobot_MAX17043.py - @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) - @license The MIT License (MIT) - @author [ouki.wang](ouki.wang@dfrobot.com) - @version V1.0 - @date 2018-4-14 - @url https://github.com/DFRobot/DFRobot_MAX17043 -''' - -import time - -from machine import I2C, Pin - -## Get I2C bus -i2c = I2C(scl = Pin(22), sda = Pin(21), freq=400000) - -MAX17043_ADDR = 0x36 -MAX17043_VCELL = 0x02 -MAX17043_SOC = 0x04 -MAX17043_MODE = 0x06 -MAX17043_VERSION = 0x08 -MAX17043_CONFIG = 0x0c -MAX17043_COMMAND = 0xfe - -class DFRobot_MAX17043(): - - def __init__(self): - '''! - @brief create MAX17043 object - @return MAX17043 object - ''' - pass - - def begin(self): - '''! - @brief MAX17043 begin and test moudle - @return initialization result: - @retval 0 successful - @retval -1 faild - ''' - self._write16(MAX17043_COMMAND, 0x5400) - time.sleep(0.01) - if self._read16(MAX17043_CONFIG) == 0x971c: - self._write16(MAX17043_MODE, 0x4000) - time.sleep(0.01) - self._write16(MAX17043_CONFIG, 0x9700) - return 0 - else: - return -1 - - def read_voltage(self): - '''! - @brief read battery voltage in mV - @return voltage in mV - ''' - return (1.25 * (self._read16(MAX17043_VCELL) >> 4)) - - def read_percentage(self): - '''! - @brief read battery remaining capacity in percentage - @return battery remaining capacity in percentage - ''' - tmp = self._read16(MAX17043_SOC) - return ((tmp >> 8) + 0.003906 * (tmp & 0x00ff)) - - def set_Interrupt(self, per): - '''! - @brief set MAX17043 interrput threshold - @param per interrupt threshold as %1 - 32% (integer) - ''' - if per > 32: - per = 32 - elif per < 1: - per = 1 - per = 32 - int(per) - self._write_reg_bits(MAX17043_CONFIG, per, 0x01f, 0) - - def clear_interrupt(self): - '''! - @brief clear MAX17043 interrupt. - ''' - self._write_reg_bits(MAX17043_CONFIG, 0, 0x01, 5) - - def set_sleep(self): - '''! - @brief set MAX17043 in sleep mode. - ''' - self._write_reg_bits(MAX17043_CONFIG, 1, 0x01, 7) - - def set_wakeup(self): - '''! - @brief wake up MAX17043. - ''' - self._write_reg_bits(MAX17043_CONFIG, 0, 0x01, 7) - - def _write16(self, reg, dat): - buf = bytearray(2) - buf[0] = dat >> 8 - buf[1] = dat & 0x00ff - i2c.writeto_mem(MAX17043_ADDR, reg, buf) - - def _read16(self, reg): - buf = i2c.readfrom_mem(MAX17043_ADDR, reg, 2) - return ((buf[0] << 8) | buf[1]) - - def _write_reg_bits(self, reg, dat, bits, offset): - tmp = self._read16(reg) - tmp = (tmp & (~(bits << offset))) | (dat << offset) - self._write16(reg, tmp) - diff --git a/lib/lib_i2c/DFRobot_MAX17043/python/micropython/README.md b/lib/lib_i2c/DFRobot_MAX17043/python/micropython/README.md deleted file mode 100644 index 106363df48c9..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/python/micropython/README.md +++ /dev/null @@ -1,100 +0,0 @@ -# DFRobot_MAX17043 - -* [中文版](./README_CN.md) - -The MAX17043 is ultra-compact, low-cost,host-side fuel-gauge systems for lithium-ion (Li+) batter-ies in handheld and portable -equpiment.It employs Gravity I2C interface,ultra-low opearting current, and real-time tracking of the relative state of charge -(SOC) of the battery through Maxim's patented algorithm,eliminating the need for full-to-empty relearning and offset accumualtion -errors.Plug and play to accurately measure the voltage and remaining power of the battery. The module also features as a low -battery power alert interrupt function. When the battery power falls below specified threshold, the ALR pin generates a falling -pluse to trigger the external interrupt of the controller.One thing should mention that the default value of the battery low power -interrupt alert threshold is 32%, this threshold can be set by the function set_interrupt(). - -![产品效果图](../../resources/images/DFR0563.jpg) - -## Product Link([https://www.dfrobot.com/product-1734.html](https://www.dfrobot.com/product-1734.html)) - SKU: DFR0563 - -## Table of Contents -* [Summary](#summary) -* [connection](connection) -* [Installation](#installation) -* [Methods](#methods) -* [Compatibility](#compatibility) -* [History](#history) -* [Credits](#credits) - -## Summary -Provides a microPython library for reading and interperting MAX17043 data over I2C. - -## Connection -Wires of the same color are linked together,and We only exemplify how this board is connected to the Fuel Gauge. -When connecting , it is necessary to pay attention to the correspondence among pins, the connection diagram is as fellows. - -* ESP32 - -
- -
- - -## Installation - -To use this library download the zip file, uncomperss it to a folder named DFRobot_MAX17043 in your upyCraft workspace. - -## Methods - -```python - '''! - @brief MAX17043 begin and test moudle - @return initialization result: - @retval 0 successful - @retval -1 faild - ''' - def begin(self): - - '''! - @brief read battery voltage in mV - @return voltage in mV - ''' - def read_voltage(self): - - '''! - @brief read battery remaining capacity in percentage - @return battery remaining capacity in percentage - ''' - def read_percentage(self): - '''! - @brief set MAX17043 interrput threshold - @param per interrupt threshold as %1 - 32% (integer) - ''' - def set_interrupt(self, per): - - '''! - @brief clear MAX17043 interrupt. - ''' - def clear_interrupt(self): - - '''! - @brief set MAX17043 in sleep mode. - ''' - def set_sleep(self): - - '''! - @brief wake up MAX17043. - ''' - -``` -## Compatibility - -| MCU | Work Well | Work Wrong | Untested | Remarks | -| ------------------ | :-------: | :--------: | :------: | ------- | -| ESP32 | √ | | | - -## History - -- 2018/04/14 - Version 1.0.0 released. - -## Credits - -Written by ouki.wang(ouki.wang@dfrobot.com), 2018. (Welcome to our [website](https://www.dfrobot.com/)) diff --git a/lib/lib_i2c/DFRobot_MAX17043/python/micropython/README_CN.md b/lib/lib_i2c/DFRobot_MAX17043/python/micropython/README_CN.md deleted file mode 100644 index 48af8058c065..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/python/micropython/README_CN.md +++ /dev/null @@ -1,97 +0,0 @@ -# DFRobot_MAX17043 - -* [English Version](./README.md) - -Gravity 3.7V锂电池电量计使用Gravity I2C接口,超低工作电流,通过Maxim专利算法,实时跟踪电池的相对充电状态(SOC,State-Of-Charge),无需充放电学习过程,无积累误差,即插即用,准确地测量锂电池的当前电压和剩余电量。模块预留低电量报警中断引脚,当电池电量低于指定电量时,该引脚产生一个下跳脉冲,触发主控的外部中断。 - -![产品效果图](../../resources/images/DFR0563.jpg) - - -## 产品链接([https://www.dfrobot.com.cn/goods-1743.html](https://www.dfrobot.com.cn/goods-1743.html)) - SKU: DFR0563 - -## 目录 - -* [概述](#概述) -* [连接](连接) -* [库安装](#库安装) -* [方法](#方法) -* [兼容性](#兼容性) -* [历史](#历史) -* [创作者](#创作者) - -## 概述 -提供 microPython 库,用于通过 I2C 读取和解释 MAX17043 数据 - -## 连接 -相同颜色的线连接在一起,我们只举例说明主板是如何连接到电量计的。接线时要注意管脚的对应关系,接线图如下: - -* ESP32 - -
- -
- - -## 库安装 - -要使用此库,请下载 zip 文件,将其解压缩到 upyCraft 工作区中名为 DFRobot_MAX17043 的文件夹中。 - -## 方法 - -```python - '''! - @brief 构造MAX17043对象 - @return MAX17043 初始化 - @retval 0 成功 - @retval -1 失败 - ''' - def begin(self): - - '''! - @brief 读电池电压,单位: mV - @return 电池电压,单位:mV - ''' - def read_voltage(self): - - '''! - @brief 读取剩余电池容量的百分比 - @return 剩余电池容量的百分比 - ''' - def read_percentage(self): - '''! - @brief 设置 MAX17043 中断阈值 - @param per 中断阈值范围: %1 - 32% (整数) - ''' - def set_interrupt(self, per): - - '''! - @brief 清除 MAX17043 中断. - ''' - def clear_interrupt(self): - - '''! - @brief 设置 MAX17043 进入睡眠模式 - ''' - def set_sleep(self): - - '''! - @brief 唤醒 MAX17043 - ''' - def set_wakeup(self): -``` - -## 兼容性 - -| MCU | Work Well | Work Wrong | Untested | Remarks | -| ------------------ | :-------: | :--------: | :------: | ------- | -| ESP32 | √ | | | - -## 历史 - -- 2018/04/14 - 1.0.0 版本 - -## 创作者 - -Written by ouki.wang(ouki.wang@dfrobot.com), 2018. (Welcome to our [website](https://www.dfrobot.com/)) - diff --git a/lib/lib_i2c/DFRobot_MAX17043/python/micropython/demo_MAX17043.py b/lib/lib_i2c/DFRobot_MAX17043/python/micropython/demo_MAX17043.py deleted file mode 100644 index d6d5e2f549a5..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/python/micropython/demo_MAX17043.py +++ /dev/null @@ -1,38 +0,0 @@ -'''! - @file demo_MAX17043.py - @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) - @license The MIT License (MIT) - @author [ouki.wang](ouki.wang@dfrobot.com) - @version V1.0 - @date 2018-4-14 - @url https://github.com/DFRobot/DFRobot_MAX17043 -''' - -import time -from machine import Pin -from DFRobot_MAX17043 import DFRobot_MAX17043 - -gauge = DFRobot_MAX17043() - -def interruptCallBack(channel): - gauge.clear_interrupt() - print('Low power alert interrupt!') - #put your battery low power alert interrupt service routine here - -pin_irq = Pin(25, Pin.IN) -pin_irq.irq(trigger = Pin.IRQ_FALLING, handler = interruptCallBack) - -rslt = gauge.begin() - -while rslt != 0: - print('gauge begin faild') - time.sleep(2) - rslt = gauge.begin() - -#gauge.set_Interrupt(32) #use this to modify alert threshold as 1% - 32% (integer) -print('gauge begin successful') - -while True: - time.sleep(2) - print('voltage: ' + str(gauge.read_voltage()) + 'mV') - print('percentage: ' + str(round(gauge.read_percentage(), 2)) + '%') diff --git a/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/DFRobot_MAX17043.py b/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/DFRobot_MAX17043.py deleted file mode 100644 index 1ddc751caf7e..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/DFRobot_MAX17043.py +++ /dev/null @@ -1,109 +0,0 @@ -'''! - @file DFRobot_MAX17043.py - @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) - @license The MIT License (MIT) - @author [ouki.wang](ouki.wang@dfrobot.com) - @version V1.0 - @date 2018-4-14 - @url https://github.com/DFRobot/DFRobot_MAX17043 -''' - -import smbus -import time -import datetime - -# Get I2C bus -bus = smbus.SMBus(1) - -MAX17043_ADDR = 0x36 -MAX17043_VCELL = 0x02 -MAX17043_SOC = 0x04 -MAX17043_MODE = 0x06 -MAX17043_VERSION = 0x08 -MAX17043_CONFIG = 0x0c -MAX17043_COMMAND = 0xfe - -class DFRobot_MAX17043(): - - def __init__(self): - '''! - @brief create MAX17043 object - @return MAX17043 object - ''' - pass - - def begin(self): - '''! - @brief MAX17043 begin and test moudle - @return initialization result: - @retval 0 successful - @retval -1 faild - ''' - self._write16(MAX17043_COMMAND, 0x5400) - time.sleep(0.01) - if self._read16(MAX17043_CONFIG) == 0x971c: - self._write16(MAX17043_MODE, 0x4000) - time.sleep(0.01) - self._write16(MAX17043_CONFIG, 0x9700) - return 0 - else: - return -1 - - def read_voltage(self): - '''! - @brief read battery voltage in mV - @return voltage in mV - ''' - return (1.25 * (self._read16(MAX17043_VCELL) >> 4)) - - def read_percentage(self): - '''! - @brief read battery remaining capacity in percentage - @return battery remaining capacity in percentage - ''' - tmp = self._read16(MAX17043_SOC) - return ((tmp >> 8) + 0.003906 * (tmp & 0x00ff)) - - def set_interrupt(self, per): - '''! - @brief set MAX17043 interrput threshold - @param per interrupt threshold as %1 - 32% (integer) - ''' - if per > 32: - per = 32 - elif per < 1: - per = 1 - per = 32 - int(per) - self._write_reg_bits(MAX17043_CONFIG, per, 0x01f, 0) - - def clear_interrupt(self): - '''! - @brief clear MAX17043 interrupt. - ''' - self._write_reg_bits(MAX17043_CONFIG, 0, 0x01, 5) - - def set_sleep(self): - '''! - @brief set MAX17043 in sleep mode. - ''' - self._write_reg_bits(MAX17043_CONFIG, 1, 0x01, 7) - - def set_wakeup(self): - '''! - @brief wake up MAX17043. - ''' - self._write_reg_bits(MAX17043_CONFIG, 0, 0x01, 7) - - def _write16(self, reg, dat): - buf = [dat >> 8, dat & 0x00ff] - bus.write_i2c_block_data(MAX17043_ADDR, reg, buf) - - def _read16(self, reg): - buf = bus.read_i2c_block_data(MAX17043_ADDR, reg, 2) - return ((buf[0] << 8) | buf[1]) - - def _write_reg_bits(self, reg, dat, bits, offset): - tmp = self._read16(reg) - tmp = (tmp & (~(bits << offset))) | (dat << offset) - self._write16(reg, tmp) - diff --git a/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/README.md b/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/README.md deleted file mode 100644 index 47bd4267868e..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/README.md +++ /dev/null @@ -1,128 +0,0 @@ -# DFRobot_MAX17043 - -* [中文版](./README_CN.md) - -The MAX17043 is ultra-compact, low-cost,host-side fuel-gauge systems for lithium-ion (Li+) batter-ies in handheld and portable -equpiment.It employs Gravity I2C interface,ultra-low opearting current, and real-time tracking of the relative state of charge -(SOC) of the battery through Maxim's patented algorithm,eliminating the need for full-to-empty relearning and offset accumualtion -errors.Plug and play to accurately measure the voltage and remaining power of the battery. The module also features as a low -battery power alert interrupt function. When the battery power falls below specified threshold, the ALR pin generates a falling -pluse to trigger the external interrupt of the controller.One thing should mention that the default value of the battery low power -interrupt alert threshold is 32%, this threshold can be set by the function set_interrupt(). - -![产品效果图](../../resources/images/DFR0563.jpg) - -## Product Link([https://www.dfrobot.com/product-1734.html](https://www.dfrobot.com/product-1734.html)) - SKU: DFR0563 - -## Table of Contents -* [Summary](#summary) -* [connection](connection) -* [Installation](#installation) -* [Methods](#methods) -* [Compatibility](#compatibility) -* [History](#history) -* [Credits](#credits) - -## Summary - -Provides an Raspberry pi library for reading and interperting MAX17043 data over I2C. - -## Connection -Wires of the same color are linked together,and We only exemplify how these three boards are connected to the Fuel Gauge. -When connecting , it is necessary to pay attention to the correspondence among pins, the connection diagram is as fellows. - -* Raspberry Pi -
- -
- -## Installation - -Download and install smbus library on Raspberry pi. Steps to install smbus are provided at: - -```python -$> sudo apt-get install -y python-smbus -$> sudo apt-get install -y i2c-tools -``` - -1. To use this library, first download the library file
-```python -sudo git clone https://github.com/DFRobot/DFRobot_MAX17043 -``` -2. Open and run the routine. To execute a routine demo_x.py, enter python demo_x.py in the command line. For example, to execute the demo_read_and_int.py.py routine, you need to enter :
- -```python -python demo_read_and_int.py.py -or -python2 demo_read_and_int.py.py -``` - -## Methods - -```python - '''! - @brief MAX17043 begin and test moudle - @return initialization result: - @retval 0 successful - @retval -1 faild - ''' - def begin(self): - - '''! - @brief read battery voltage in mV - @return voltage in mV - ''' - def read_voltage(self): - - '''! - @brief read battery remaining capacity in percentage - @return battery remaining capacity in percentage - ''' - def read_percentage(self): - '''! - @brief set MAX17043 interrput threshold - @param per interrupt threshold as %1 - 32% (integer) - ''' - def set_interrupt(self, per): - - '''! - @brief clear MAX17043 interrupt. - ''' - def clear_interrupt(self): - - '''! - @brief set MAX17043 in sleep mode. - ''' - def set_sleep(self): - - '''! - @brief wake up MAX17043. - ''' - def set_wakeup(self): - - -``` - -## Compatibility - -| 主板 | 通过 | 未通过 | 未测试 | 备注 | -| ------------ | :--: | :----: | :----: | :--: | -| RaspberryPi2 | | | √ | | -| RaspberryPi3 | | | √ | | -| RaspberryPi4 | √ | | | | - -* Python 版本 - -| Python | 通过 | 未通过 | 未测试 | 备注 | -| ------- | :--: | :----: | :----: | ---- | -| Python2 | √ | | | | -| Python3 | | | √ | | - -## History - -- 2018/04/14 - Version 1.0.0 released. - -## Credits - -Written by ouki.wang(ouki.wang@dfrobot.com), 2018. (Welcome to our [website](https://www.dfrobot.com/)) diff --git a/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/README_CN.md b/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/README_CN.md deleted file mode 100644 index 00894b09a262..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/README_CN.md +++ /dev/null @@ -1,119 +0,0 @@ -# DFRobot_MAX17043 - -* [English Version](./README.md) - -Gravity 3.7V锂电池电量计使用Gravity I2C接口,超低工作电流,通过Maxim专利算法,实时跟踪电池的相对充电状态(SOC,State-Of-Charge),无需充放电学习过程,无积累误差,即插即用,准确地测量锂电池的当前电压和剩余电量。模块预留低电量报警中断引脚,当电池电量低于指定电量时,该引脚产生一个下跳脉冲,触发主控的外部中断。 - -![产品效果图](../../resources/images/DFR0563.jpg) - - -## 产品链接([https://www.dfrobot.com.cn/goods-1743.html](https://www.dfrobot.com.cn/goods-1743.html)) - SKU: DFR0563 - -## 目录 - -* [概述](#概述) -* [连接](连接) -* [库安装](#库安装) -* [方法](#方法) -* [兼容性](#兼容性) -* [历史](#历史) -* [创作者](#创作者) - -## 概述 - -提供 python 库,用于通过 I2C 读取和解释 MAX17043 数据。 - -## 连接 -相同颜色的线连接在一起,我们只举例说明主板是如何连接到电量计的。接线时要注意管脚的对应关系,接线图如下: - -* Raspberry Pi -
- -
- -## 库安装 -1. 下载库至树莓派,要使用这个库,首先要将库下载到Raspberry Pi,命令下载方法如下:
-```python -sudo git clone https://github.com/DFRobot/DFRobot_MAX17043 -``` -2. 打开并运行例程,要执行一个例程demo_x.py,请在命令行中输入python demo_x.py。例如,要执行 demo_read_and_int.py例程,你需要输入:
- -```python -python demo_read_and_int.py -或 -python2 demo_read_and_int.py -``` - -## 方法 - -```python - '''! - @brief 构造MAX17043对象 - @return MAX17043 初始化 - @retval 0 成功 - @retval -1 失败 - ''' - def begin(self): - - '''! - @brief 读电池电压,单位: mV - @return 电池电压,单位:mV - ''' - def read_voltage(self): - - '''! - @brief 读取剩余电池容量的百分比 - @return 剩余电池容量的百分比 - ''' - def read_percentage(self): - '''! - @brief 设置 MAX17043 中断阈值 - @param per 中断阈值范围: %1 - 32% (整数) - ''' - def set_interrupt(self, per): - - '''! - @brief 清除 MAX17043 中断. - ''' - def clear_interrupt(self): - - '''! - @brief 设置 MAX17043 进入睡眠模式 - ''' - def set_sleep(self): - - '''! - @brief 唤醒 MAX17043 - ''' - def set_wakeup(self): -``` - -## 兼容性 - -| 主板 | 通过 | 未通过 | 未测试 | 备注 | -| ------------ | :--: | :----: | :----: | :--: | -| RaspberryPi2 | | | √ | | -| RaspberryPi3 | | | √ | | -| RaspberryPi4 | √ | | | | - -* Python 版本 - -| Python | 通过 | 未通过 | 未测试 | 备注 | -| ------- | :--: | :----: | :----: | ---- | -| Python2 | √ | | | | -| Python3 | | | √ | | - -## 历史 - -- 2018/04/14 - 1.0.0 版本 - -## 创作者 - -Written by ouki.wang(ouki.wang@dfrobot.com), 2018. (Welcome to our [website](https://www.dfrobot.com/)) - - - - - - diff --git a/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/examples/demo_read_and_int.py b/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/examples/demo_read_and_int.py deleted file mode 100644 index dd328c6402d6..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/python/raspberry/examples/demo_read_and_int.py +++ /dev/null @@ -1,44 +0,0 @@ -'''! - @file demo_read_and_int.py - @copyright Copyright (c) 2010 DFRobot Co.Ltd (http://www.dfrobot.com) - @license The MIT License (MIT) - @author [ouki.wang](ouki.wang@dfrobot.com) - @version V1.0 - @date 2018-4-14 - @url https://github.com/DFRobot/DFRobot_MAX17043 -''' - -import sys -sys.path.append('../') -import time - -sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__)))) -from DFRobot_MAX17043 import DFRobot_MAX17043 -import RPi.GPIO as GPIO - -gauge = DFRobot_MAX17043() - -GPIO.setmode(GPIO.BOARD) -GPIO.setup(7, GPIO.IN) - -def interruptCallBack(channel): - gauge.clear_interrupt() - print('Low power alert interrupt!') - #put your battery low power alert interrupt service routine here - -GPIO.add_event_detect(7, GPIO.FALLING, callback = interruptCallBack, bouncetime = 5) - -rslt = gauge.begin() - -while rslt != 0: - print('gauge begin faild') - time.sleep(2) - rslt = gauge.begin() - -gauge.set_interrupt(32) #use this to modify alert threshold as 1% - 32% (integer) -print('gauge begin successful') - -while True: - time.sleep(2) - print('voltage: ' + str(gauge.read_voltage()) + 'mV') - print('percentage: ' + str(round(gauge.read_percentage(), 2)) + '%') diff --git a/lib/lib_i2c/DFRobot_MAX17043/readme.md b/lib/lib_i2c/DFRobot_MAX17043/readme.md deleted file mode 100644 index fdc79ac77b4f..000000000000 --- a/lib/lib_i2c/DFRobot_MAX17043/readme.md +++ /dev/null @@ -1,122 +0,0 @@ -# DFRobot_MAX17043 - -* [中文版](./README_CN.md) - - The MAX17043 is ultra-compact, low-cost,host-side fuel-gauge systems for lithium-ion (Li+) batter-ies in handheld and portable -equipment.It employs Gravity I2C interface,ultra-low opearting current, and real-time tracking of the relative state of charge (SOC) -of the battery through Maxim's patented algorithm,eliminating the need for full-to-empty relearning and offset accumualtion errors. -Plug and play to accurately measure the voltage and remaining power of the battery. The module also features as a low battery power -alert interrupt function. When the battery power falls below specified threshold, the ALR pin generates a falling pluse to trigger -the external interrupt of the controller.One thing should mention that the default value of the battery low power interrupt alert -threshold is 32%, this threshold can be set by the function setInterrupt(). - -![产品效果图](./resources/images/DFR0563.jpg) - -## Product Link([https://www.dfrobot.com/product-1734.html](https://www.dfrobot.com/product-1734.html)) - SKU: DFR0563 - -## Table of Contents -* [Summary](#summary) -* [connection](connection) -* [Installation](#installation) -* [Methods](#methods) -* [Compatibility](#compatibility) -* [History](#history) -* [Credits](#credits) - -## Summary - -Provides an Arduino library for reading and interperting MAX17043 data over I2C. - -## Connection -Wires of the same color are linked together,and We only exemplify how these the boards are connected to the Fuel Gauge. -When connecting , it is necessary to pay attention to the correspondence among pins, the connection diagram is as fellows. - -* Arduino UNO -
- -
- -* ESP32 -
- -
- - -## Installation - -To use this library download the zip file, uncomperss it to a folder named DFRobot_MAX17043 in Arduino library. -## Methods - -```C++ - /** - * @fn DFRobot_MAX17043 - * @brief create MAX17043 object - * @return MAX17043 object - */ - DFRobot_MAX17043(); - /** - * @fn begin - * @brief MAX17043 begin and test moudle - * - * @return initialization result - * @retval 0 successful - * @retval -1 faild - */ - int begin(); - /** - * @fn readVoltage - * @brief read battery voltage in mV - * @return voltage in mV - */ - float readVoltage(); - /** - * @fn readPercentage - * @brief read battery remaining capacity in percentage - * - * @return battery remaining capacity in percentage - */ - float readPercentage(); - /** - * @fn setInterrupt - * @brief set MAX17043 interrput threshold - * - * @param per interrupt threshold as %1 - 32% (integer) - */ - void setInterrupt(uint8_t per); - /** - * @fn clearInterrupt - * @brief clear MAX17043 interrupt - */ - void clearInterrupt(); - /** - * @fn setSleep - * @brief set MAX17043 in sleep mode - * - */ - void setSleep(); - /** - * @fn setWakeUp - * @brief wake up MAX17043 - * - */ - void setWakeUp(); - -``` - -## Compatibility - -| MCU | Work Well | Work Wrong | Untested | Remarks | -| ------------------ | :-------: | :--------: | :------: | ------- | -| FireBeetle-ESP32 | √ | | | -| FireBeetle-ESP8266 | √ | | | -| Arduino uno | √ | | | - -## History - -- 2018/04/14 - Version 1.0.0 released. - -## Credits - -Written by ouki.wang(ouki.wang@dfrobot.com), 2018. (Welcome to our [website](https://www.dfrobot.com/)) - diff --git a/lib/lib_i2c/DFRobot_MAX17043/resources/images/DFR0563.jpg b/lib/lib_i2c/DFRobot_MAX17043/resources/images/DFR0563.jpg deleted file mode 100644 index eb0370a56c7a5819263a3f203dadfe10ecc6f234..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12228 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 G2mU{%k|r1c diff --git a/lib/lib_i2c/DFRobot_MAX17043/resources/images/Raspberry Pi.jpg b/lib/lib_i2c/DFRobot_MAX17043/resources/images/Raspberry Pi.jpg deleted file mode 100644 index 3ab96c2cde7ffbf0cc6dbdc186aaacff594a993e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29834 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 diff --git a/lib/lib_i2c/DFRobot_MAX17043/resources/images/UNO.jpg b/lib/lib_i2c/DFRobot_MAX17043/resources/images/UNO.jpg deleted file mode 100644 index 8c3d66b653306b3a6f64fac678c7d7e998d8075c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26373 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 U&LiW}XK@~wC8#@j`On7x0mp*$umAu6 diff --git a/tasmota/tasmota_xsns_sensor/xsns_110_max17043.ino b/tasmota/tasmota_xsns_sensor/xsns_110_max17043.ino index 4a90f0b13fc6..7c97be17e0e3 100644 --- a/tasmota/tasmota_xsns_sensor/xsns_110_max17043.ino +++ b/tasmota/tasmota_xsns_sensor/xsns_110_max17043.ino @@ -27,10 +27,6 @@ * The alert flag and alert threshold are not required for MQTT, the alert pin is not used * by this sensor driver. * - * Wiring and other information: - * - * \lib\lib_i2c\DFRobot_MAX17043\resources - * * Tested module(s): * * https://www.dfrobot.com/product-1734.html @@ -45,16 +41,6 @@ #define XI2C_83 83 // See I2CDEVICES.md #define MAX17043_ADDRESS 0x36 - -//#define MAX17043_USE_LIB - -#ifdef MAX17043_USE_LIB - -#include "DFRobot_MAX17043.h" -DFRobot_MAX17043 max17043_gauge; // Class to read from MAX17043 - -#else - #define MAX17043_VCELL 0x02 #define MAX17043_SOC 0x04 #define MAX17043_MODE 0x06 @@ -62,30 +48,18 @@ DFRobot_MAX17043 max17043_gauge; // Class to read from MAX17043 #define MAX17043_CONFIG 0x0c #define MAX17043_COMMAND 0xfe -#endif // MAX17043_USE_LIB - bool max17043 = false; /*********************************************************************************************/ void Max17043Init(void) { if (I2cSetDevice(MAX17043_ADDRESS)) { - -#ifdef MAX17043_USE_LIB - - if (max17043_gauge.begin() == 0) { - -#else - I2cWrite16(MAX17043_ADDRESS, MAX17043_COMMAND, 0x5400); // Power on reset delay(10); if (I2cRead16(MAX17043_ADDRESS, MAX17043_CONFIG) == 0x971c) { // Default 0x971c I2cWrite16(MAX17043_ADDRESS, MAX17043_MODE, 0x4000); // Quick start I2cWrite16(MAX17043_ADDRESS, MAX17043_CONFIG, 0x9700); delay(10); - -#endif // MAX17043_USE_LIB - max17043 = true; I2cSetActiveFound(MAX17043_ADDRESS, "MAX17043"); } @@ -93,20 +67,10 @@ void Max17043Init(void) { } void Max17043Show(bool json) { - -#ifdef MAX17043_USE_LIB - - float voltage = max17043_gauge.readVoltage() / 1000.0; // Battery voltage in Volt - float percentage = max17043_gauge.readPercentage(); // Battery remaining charge in percent - -#else - float voltage = (1.25f * (float)(I2cRead16(MAX17043_ADDRESS, MAX17043_VCELL) >> 4)) / 1000.0; // Battery voltage in Volt uint16_t per = I2cRead16(MAX17043_ADDRESS, MAX17043_SOC); float percentage = (float)((per >> 8) + 0.003906f * (per & 0x00ff)); // Battery remaining charge in percent -#endif // MAX17043_USE_LIB - // During charging the percentage might be (slightly) above 100%. To avoid strange numbers // in the statistics the percentage provided by this driver will not go above 100% if (percentage > 100.0) { percentage = 100.0; }