{"id":50276928,"url":"https://github.com/dunknowcoding/ina_series_sensor","last_synced_at":"2026-05-27T21:02:57.174Z","repository":{"id":351864348,"uuid":"1207319498","full_name":"dunknowcoding/INA_series_sensor","owner":"dunknowcoding","description":"ALL-IN_ONE, simple Arduino Library for INA_series sensors to meansure current, voltage and power","archived":false,"fork":false,"pushed_at":"2026-04-16T19:25:11.000Z","size":173,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-16T21:26:38.239Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"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/dunknowcoding.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2026-04-10T20:11:41.000Z","updated_at":"2026-04-16T19:24:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/dunknowcoding/INA_series_sensor","commit_stats":null,"previous_names":["dunknowcoding/ina_series_sensor"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/dunknowcoding/INA_series_sensor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunknowcoding%2FINA_series_sensor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunknowcoding%2FINA_series_sensor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunknowcoding%2FINA_series_sensor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunknowcoding%2FINA_series_sensor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dunknowcoding","download_url":"https://codeload.github.com/dunknowcoding/INA_series_sensor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dunknowcoding%2FINA_series_sensor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33583399,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-27T02:00:06.184Z","response_time":53,"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":[],"created_at":"2026-05-27T21:02:56.258Z","updated_at":"2026-05-27T21:02:57.161Z","avatar_url":"https://github.com/dunknowcoding.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"docs/banner.svg\" alt=\"INA Series Sensor\" width=\"720\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eINA Series Sensor\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eAll-in-one Arduino library for Texas Instruments INA-series current / voltage / power monitors\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#supported-chips\"\u003e26 chips\u003c/a\u003e ·\n  \u003ca href=\"#features\"\u003eTwo modes\u003c/a\u003e ·\n  \u003ca href=\"docs/API_EN.md\"\u003eAPI Reference\u003c/a\u003e · \u003ca href=\"docs/API_CHN.md\"\u003eAPI 参考手册\u003c/a\u003e ·\n  \u003ca href=\"docs/USAGE_EN.md\"\u003eUser Guide\u003c/a\u003e · \u003ca href=\"docs/USAGE_CHN.md\"\u003e使用指南\u003c/a\u003e ·\n  \u003ca href=\"https://github.com/dunknowcoding/NiusRobotLab_INA_monitor\"\u003eINA Monitor Tool\u003c/a\u003e\n\u003c/p\u003e\n\n---\n\n## Features\n\n| | |\n|---|---|\n| **Broad chip coverage** | INA219, INA220, INA226, INA228, INA229 (SPI), INA230–239, INA740X, INA3221, INA2227, INA4230, INA4235 — including Q1 automotive variants |\n| **Two usage modes** | **JSONL streaming** for the [NiusRobotLab_INA_monitor](https://github.com/dunknowcoding/NiusRobotLab_INA_monitor) desktop tool, **or** standalone direct-read API for your own code — both can be combined |\n| **Multi-platform** | Arduino AVR, ESP32 / ESP8266, RP2040 / RP2350, SAMD, STM32, megaAVR, Renesas — `architectures=*` |\n| **Per-channel control** | INA3221 triple-channel: independent shunt resistor, enable/disable, per-channel reading |\n| **Advanced sensing** | INA228/229: die temperature, energy accumulation, charge accumulation |\n| **69 ready-to-flash examples** | Basic, advanced (temperature/energy), and alert-interrupt examples for every supported chip |\n\n## Quick Start\n\n### Install\n\n**Arduino IDE:** Sketch → Include Library → Add .ZIP Library → select the downloaded `.zip`.\n\n**PlatformIO:** Add to `platformio.ini`:\n```ini\nlib_deps = dunknowcoding/INA Series Sensor\n```\n\n### Mode A — JSONL Streaming (with INA Monitor)\n\n```cpp\n#include \u003cINA_Series_Sensor.h\u003e\n\nstatic InaBridge228 sensor(\"INA228\", 0x40);\n\nvoid setup() {\n  Serial.begin(115200);\n  sensor.begin(8, 9);  // SDA, SCL\n}\n\nvoid loop() {\n  sensor.tick();  // Responds to START/STOP/SR commands from INA Monitor\n}\n```\n\nOpen [NiusRobotLab_INA_monitor](https://github.com/dunknowcoding/NiusRobotLab_INA_monitor), connect the serial port, and click **Start** to see real-time voltage / current / power graphs.\n\n### Mode B — Standalone Direct Reading\n\n```cpp\n#include \u003cINA_Series_Sensor.h\u003e\n\nstatic InaBridge228 sensor(\"INA228\", 0x40);\n\nvoid setup() {\n  Serial.begin(115200);\n  sensor.begin(8, 9);\n  sensor.setRshunt(0.1);  // 100 mΩ shunt\n  sensor.setImax(10.0);   // 10 A max\n}\n\nvoid loop() {\n  if (sensor.dataReady()) {\n    float voltage = sensor.readBusVoltage();  // V\n    float current = sensor.readCurrent();     // A\n    float power   = sensor.readPower();       // W\n    float temp    = sensor.readDieTemp();     // °C (INA228 only)\n\n    Serial.print(\"V=\"); Serial.print(voltage, 3);\n    Serial.print(\" I=\"); Serial.print(current, 4);\n    Serial.print(\" P=\"); Serial.print(power, 4);\n    Serial.print(\" T=\"); Serial.println(temp, 1);\n  }\n  delay(100);\n}\n```\n\n### INA3221 — Multi-Channel\n\n```cpp\nstatic InaBridge3221 sensor(\"INA3221\", 0x40);\n\nvoid setup() {\n  Serial.begin(115200);\n  sensor.begin(8, 9);\n  sensor.setRshunt(1, 0.100);  // CH1: 100 mΩ\n  sensor.setRshunt(2, 0.050);  // CH2:  50 mΩ\n  sensor.setRshunt(3, 0.010);  // CH3:  10 mΩ\n}\n\nvoid loop() {\n  if (sensor.dataReady()) {\n    for (uint8_t ch = 1; ch \u003c= 3; ch++) {\n      Serial.print(\"CH\"); Serial.print(ch);\n      Serial.print(\": \");\n      Serial.print(sensor.readBusVoltage(ch), 3);\n      Serial.print(\"V  \");\n      Serial.print(sensor.readCurrent(ch), 4);\n      Serial.println(\"A\");\n    }\n    Serial.println();\n  }\n  delay(500);\n}\n```\n\n## Supported Chips\n\n| Bridge Class | Chips | Interface | Channels | Special Features |\n|---|---|---|---|---|\n| `InaBridge219` | INA219, INA220, INA220-Q1 | I²C | 1 | — |\n| `InaBridge226` | INA226, INA226-Q1, INA230–234, INA236 | I²C | 1 | — |\n| `InaBridge228` | INA228, INA228-Q1, INA237–239 (+ Q1), INA740X | I²C | 1 | Die temp, energy, charge |\n| `InaBridge229Spi` | INA229, INA229-Q1 | SPI | 1 | Die temp, energy, charge |\n| `InaBridge3221` | INA3221, INA3221-Q1 | I²C | 3 | Per-channel control |\n| `InaBridgeCh1` | INA2227, INA4230, INA4235 | I²C | 1 (CH1) | — |\n\n## Tested Platforms\n\n| Platform | Status | Notes |\n|---|---|---|\n| Arduino AVR (Uno, Mega, Nano) | ✅ Verified | Primary test target |\n| ESP32 / ESP32-S3 / ESP32-C3 | ✅ Verified | Recommended — GPIO remapping via `begin(SDA, SCL)` |\n| ESP8266 | ✅ Compatible | `IRAM_ATTR` for ISR supported |\n| RP2040 (Raspberry Pi Pico) | ✅ Compatible | — |\n| SAMD (Arduino Zero, MKR) | ✅ Compatible | — |\n| STM32 (Nucleo) | ✅ Compatible | — |\n| megaAVR (Nano Every) | ✅ Compatible | — |\n| Renesas RA (UNO R4) | ✅ Compatible | — |\n\n## Documentation\n\n| Document | Description |\n|---|---|\n| **[API Reference (EN)](docs/API_EN.md)** | Complete API for all Bridge classes — parameters, return values, usage examples |\n| **[API 参考手册 (中文)](docs/API_CHN.md)** | 完整 API 参考 — 参数、返回值、使用示例 |\n| **[User Guide (EN)](docs/USAGE_EN.md)** | Wiring diagrams, commercial module compatibility, INA Monitor setup, standalone usage |\n| **[使用指南 (中文)](docs/USAGE_CHN.md)** | 接线说明、商用模块兼容性、INA Monitor 设置、独立使用指南 |\n\n## Project Structure\n\n```\nINA_series_sensor/\n├── src/\n│   ├── INA_Series_Sensor.h          # Main include — pulls in everything\n│   ├── InaBridge219.h/.cpp          # INA219/220 bridge\n│   ├── InaBridge226.h/.cpp          # INA226 family bridge\n│   ├── InaBridge228.h/.cpp          # INA228 digital family bridge\n│   ├── InaBridge229Spi.h/.cpp       # INA229 SPI bridge\n│   ├── InaBridge3221.h/.cpp         # INA3221 triple-channel bridge\n│   ├── InaBridgeCh1.h/.cpp          # INA2227/4230/4235 CH1-only bridge\n│   ├── InaBridgeUnknown.h/.cpp      # Placeholder (no sensor)\n│   ├── InaJsonlProtocol.h           # JSONL serial protocol helpers\n│   ├── InaSerialLineReader.h        # Non-blocking serial line reader\n│   ├── InaWireCompat.h              # Portable I²C helpers\n│   ├── InaSpiCompat.h               # SPI pin mapping helpers\n│   └── ina/                         # Low-level driver layer\n│       ├── Ina219Driver.h/.cpp      # INA219 alert driver\n│       ├── Ina226Driver.h/.cpp      # INA226 alert driver\n│       ├── Ina228Driver.h/.cpp      # INA228 temp/energy/alert driver\n│       ├── Ina229Driver.h/.cpp      # INA229 SPI driver\n│       ├── Ina3221Driver.h/.cpp     # INA3221 alert driver\n│       └── ...\n├── examples/                        # 69 ready-to-flash examples\n└── docs/\n    ├── API_EN.md                    # API reference (English)\n    ├── API_CHN.md                   # API 参考手册 (中文)\n    ├── USAGE_EN.md                  # User guide (English)\n    └── USAGE_CHN.md                 # 使用指南 (中文)\n```\n\n## License\n\nMIT — see [LICENSE](LICENSE) for details.\n\n## Author\n\n**NiusRobotLab / dunknowcoding** — [GitHub](https://github.com/dunknowcoding)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdunknowcoding%2Fina_series_sensor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdunknowcoding%2Fina_series_sensor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdunknowcoding%2Fina_series_sensor/lists"}