{"id":31588543,"url":"https://github.com/milad-nikpendar/ip5108","last_synced_at":"2026-05-02T23:40:12.769Z","repository":{"id":316058574,"uuid":"1061788111","full_name":"milad-nikpendar/IP5108","owner":"milad-nikpendar","description":"Arduino library for the IP5108 PMIC — control charging, boost, flashlight, and read battery status via I²C on ESP32.","archived":false,"fork":false,"pushed_at":"2025-09-22T12:03:50.000Z","size":22,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-22T13:19:00.642Z","etag":null,"topics":["arduino","arduino-library","battery-management","battery-monitoring","boost-converter","charger","embedded-systems","esp32","flashlight-control","ip5108","low-power","pmic","power-bank","power-management"],"latest_commit_sha":null,"homepage":"https://imax-co.com/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/milad-nikpendar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-22T11:39:01.000Z","updated_at":"2025-09-22T12:01:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"08da6e97-59d3-4a1e-91cb-68a3e8f92d01","html_url":"https://github.com/milad-nikpendar/IP5108","commit_stats":null,"previous_names":["milad-nikpendar/ip5108"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/milad-nikpendar/IP5108","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milad-nikpendar%2FIP5108","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milad-nikpendar%2FIP5108/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milad-nikpendar%2FIP5108/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milad-nikpendar%2FIP5108/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/milad-nikpendar","download_url":"https://codeload.github.com/milad-nikpendar/IP5108/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/milad-nikpendar%2FIP5108/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278547821,"owners_count":26004775,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","arduino-library","battery-management","battery-monitoring","boost-converter","charger","embedded-systems","esp32","flashlight-control","ip5108","low-power","pmic","power-bank","power-management"],"created_at":"2025-10-06T02:10:37.595Z","updated_at":"2025-10-06T02:11:34.747Z","avatar_url":"https://github.com/milad-nikpendar.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# IP5108\n\n[![Arduino Library Manager](https://img.shields.io/badge/Arduino-Library_Manager-00979D.svg?logo=arduino\u0026logoColor=white)](https://docs.arduino.cc/libraries/IP5108/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![GitHub release](https://img.shields.io/github/v/release/milad-nikpendar/IP5108)](https://github.com/milad-nikpendar/IP5108/releases)\n[![Author](https://img.shields.io/badge/Author-milad--nikpendar-blueviolet)](https://github.com/milad-nikpendar)\n\nA high‑level Arduino library for the **IP5108** Power Management IC — the all‑in‑one Li‑ion charge/boost controller found in many power banks and portable devices.  \nThis library lets you control **charging**, **boost output**, **flashlight mode**, and **battery monitoring** over I²C, with clean APIs designe.\n\n---\n\n## ✨ Features\n\n- Enable/disable:\n  - Charger\n  - Boost output\n  - Flashlight / LED light\n  - Auto‑power functions\n- Configure:\n  - Shutdown time\n  - Light shutdown current\n  - Battery type \u0026 charge voltage\n  - Boost current limit\n- Read:\n  - Battery voltage, open‑circuit voltage, current\n  - Charging state \u0026 status flags\n  - Button press events (short, long, double)\n  - Battery percentage\n- Fully non‑blocking I²C interface (400 kHz)\n- Minimal dependencies, Arduino‑IDE \u0026 PlatformIO ready\n\n---\n\n## 📦 Installation\n\n### Arduino IDE\n1. Download this repository as a ZIP.\n2. In Arduino IDE: **Sketch → Include Library → Add .ZIP Library…**\n3. Select the downloaded ZIP file.\n\n### PlatformIO\nAdd to your `platformio.ini`:\n```ini\nlib_deps =\n    https://github.com/milad-nikpendar/IP5108\n```\n\n---\n\n## 🔌 Wiring\n\n| IP5108 Pin | ESP32 Pin | Notes |\n|------------|-------------------|-------|\n| SDA        | GPIO21 (example)  | Any I²C‑capable pin |\n| SCL        | GPIO22 (example)  | Any I²C‑capable pin |\n| VCC        | 3.3 V / 5 V       | Per datasheet |\n| GND        | GND               | Common ground |\n\n**Default I²C address:** `0x75`  \n**I²C speed:** up to 400 kHz\n\n---\n\n## 🚀 Quick Start\n\n```cpp\n#include \u003cWire.h\u003e\n#include \u003cIP5108.h\u003e\n\nIP5108 pmic;\n\nvoid setup() {\n  Serial.begin(115200);\n  Wire.begin(21, 22, 400000); // SDA, SCL, freq\n  if (!pmic.begin(0x75, \u0026Wire)) {\n    Serial.println(\"IP5108 not found!\");\n    while (1) delay(1000);\n  }\n\n  pmic.Charger(true);       // Enable charging\n  pmic.Boost(true);         // Enable boost output\n  pmic.FlashLight(true);    // Turn on flashlight\n}\n\nvoid loop() {\n  Serial.printf(\"Battery: %u mV, %d mA, %d%%\\n\",\n                pmic.BatteryVoltage(),\n                pmic.BatteryCurrent(),\n                pmic.battery_percentage());\n  delay(1000);\n}\n```\n\n---\n\n## 📖 API Overview\n\n| Method | Description |\n|--------|-------------|\n| `begin(addr, wire)` | Initialize with I²C address and Wire instance |\n| `Charger(bool)` | Enable/disable battery charging |\n| `Boost(bool)` | Enable/disable boost output |\n| `FlashLight(bool)` | Enable/disable flashlight |\n| `BatteryVoltage()` | Get battery voltage in mV |\n| `BatteryCurrent()` | Get battery current in mA |\n| `battery_percentage()` | Estimate battery percentage |\n| `ChargingStatus()` | Get charging status flags |\n| `setDoublePressAction(actionType_t, seconds)` | Configure button actions |\n\n*(See `IP5108.h` for full API list.)*\n\n---\n\n## 🛠 Examples\n\n- **Basic_Init** – Initialize and enable charger\n- **Battery_Monitor** – Print battery voltage, current, and percentage\n\n---\n\n## 🧰 Development Notes\n\n- Designed for **ESP32** under Arduino framework.\n- Uses `TwoWire` for I²C — pass custom SDA/SCL pins if needed.\n- All register definitions are based on the IP5108 datasheet.\n- Includes helper functions for safe updates and bit‑mask writes.\n\n---\n\n## 🧾 License\n\nThis project is licensed under the **MIT License** – see [LICENSE](LICENSE) for details.\n\n## ✍️ Author\n\n**Milad Nikpendar**  \nGitHub: [milad-nikpendar/IP5108](https://github.com/milad-nikpendar/IP5108)  \nEmail: milad82nikpendar@gmail.com  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilad-nikpendar%2Fip5108","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmilad-nikpendar%2Fip5108","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmilad-nikpendar%2Fip5108/lists"}