{"id":47699238,"url":"https://github.com/steamicc/micropython-steami-lib","last_synced_at":"2026-04-13T04:10:33.148Z","repository":{"id":289499901,"uuid":"966656786","full_name":"steamicc/micropython-steami-lib","owner":"steamicc","description":"MicroPython driver library for the STeaMi board — I2C sensors, display, battery gauge, GPIO expander, and flash storage.","archived":false,"fork":false,"pushed_at":"2026-04-10T09:28:15.000Z","size":782,"stargazers_count":0,"open_issues_count":52,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-04-10T09:33:13.090Z","etag":null,"topics":["drivers","education","embedded","i2c","micropython","steami","stm32"],"latest_commit_sha":null,"homepage":"https://www.steami.cc/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/steamicc.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":".github/SECURITY.md","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-04-15T08:56:58.000Z","updated_at":"2026-04-10T09:07:57.000Z","dependencies_parsed_at":"2025-04-23T16:36:30.531Z","dependency_job_id":null,"html_url":"https://github.com/steamicc/micropython-steami-lib","commit_stats":null,"previous_names":["steamicc/micropython-steami-lib"],"tags_count":42,"template":false,"template_full_name":null,"purl":"pkg:github/steamicc/micropython-steami-lib","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steamicc%2Fmicropython-steami-lib","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steamicc%2Fmicropython-steami-lib/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steamicc%2Fmicropython-steami-lib/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steamicc%2Fmicropython-steami-lib/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/steamicc","download_url":"https://codeload.github.com/steamicc/micropython-steami-lib/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/steamicc%2Fmicropython-steami-lib/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31739163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T03:27:07.512Z","status":"ssl_error","status_checked_at":"2026-04-13T03:26:53.610Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["drivers","education","embedded","i2c","micropython","steami","stm32"],"created_at":"2026-04-02T17:01:46.371Z","updated_at":"2026-04-13T04:10:33.121Z","avatar_url":"https://github.com/steamicc.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# micropython-steami-lib\n\nThis repository contains all the drivers for the main components of the [STeaMi](https://www.steami.cc/) board. These drivers are written for MicroPython and are designed to be used either in the construction of the official MicroPython firmware for the STeaMi board or independently for custom projects.\n\n## Repository contents\n\n* Ready-to-use **MicroPython drivers**\n* Consistent **API design across all components**\n* Full **mock + hardware test suite**\n* CI integration for reliability\n\n## Board components\n\n| Component     | Driver                                         | I2C Address | Description                           |\n| ------------- | ---------------------------------------------- | ----------- | ------------------------------------- |\n| BQ27441-G1    | [`bq27441`](lib/bq27441/README.md)             | `0x55`      | Battery fuel gauge                    |\n| DAPLink Bridge | [`daplink_bridge`](lib/daplink_bridge/)        | `0x3B`      | I2C bridge to STM32F103 + config zone |\n| DAPLink Flash | [`daplink_flash`](lib/daplink_flash/README.md) | —           | Flash file operations via bridge      |\n| SSD1327       | [`ssd1327`](lib/ssd1327/README.md)             | — (SPI)     | 128x128 greyscale OLED display        |\n| MCP23009E     | [`mcp23009e`](lib/mcp23009e/README.md)         | `0x20`      | 8-bit I/O expander (D-PAD)            |\n| VL53L1X       | [`vl53l1x`](lib/vl53l1x/README.md)             | `0x29`      | Time-of-Flight distance sensor        |\n| APDS-9960     | [`apds9960`](lib/apds9960/README.md)           | `0x39`      | Proximity, gesture, color, light      |\n| HTS221        | [`hts221`](lib/hts221/README.md)               | `0x5F`      | Humidity + temperature                |\n| WSEN-HIDS     | [`wsen-hids`](lib/wsen-hids/README.md)         | `0x5F`      | Humidity + temperature                |\n| WSEN-PADS     | [`wsen-pads`](lib/wsen-pads/README.md)         | `0x5D`      | Pressure + temperature                |\n| ISM330DL      | [`ism330dl`](lib/ism330dl/README.md)           | `0x6B`      | 6-axis IMU (accel + gyro)             |\n| LIS2MDL       | [`lis2mdl`](lib/lis2mdl/README.md)             | `0x1E`      | 3-axis magnetometer                   |\n| IM34DT05      | `im34dt05` *(not yet implemented)*              | — (PDM)     | Digital microphone                    |\n| BME280        | [`bme280`](lib/bme280/README.md)                | `0x76`      | Pressure + humidity + temperature     |\n| GC9A01        | `gc9a01` *(not yet implemented)*                | — (SPI)     | Round color LCD display               |\n| STeaMi Config | [`steami_config`](lib/steami_config/README.md) | —           | Persistent board configuration        |\n\n\n## Quick start\n\nRun a driver example on your STeaMi board without installing anything permanently.\n\n### Prerequisites\n\n* A STeaMi board running MicroPython\n* A USB cable to connect the board to your computer\n* Python installed on your computer\n\n### 1. Install `mpremote`\n\n`mpremote` is the official MicroPython tool to interact with your board.\n\n```bash\npip install mpremote\n```\n\n### 2. Connect your board\n\nPlug your STeaMi board via USB.\n\nTo verify that it is detected:\n\n```bash\nmpremote connect list\n```\n\nYou should see a serial device (e.g. `/dev/ttyUSB0` on Linux or `COM3` on Windows).\n\n\n### 3. Run an example\n\nYou can run a driver example directly on the board without copying files:\n\n```bash\nmpremote mount lib/ism330dl run lib/ism330dl/examples/basic_read.py\n```\n\n## Installation\n\n### Method 1: Using mpremote (recommended for development)\n\nThe Quick start section above shows how to run examples temporarily. The `mount` command makes the driver available without copying it to the board.\n\n### Method 2: Permanent installation (copy to board)\n\nInstall a driver permanently by copying it into the board’s /lib directory.\n\n```bash\nmpremote cp -r lib/\u003cdriver_folder\u003e/\u003cdriver\u003e :lib/\n```\n\nExample:\n\n```bash\nmpremote cp -r lib/ssd1327/ssd1327 :lib/\n```\n\nOnce copied, the driver can be imported normally without mounting.\n\n## Development\n\n### Setup\n\n```bash\nmake setup    # Install pip + npm dependencies and git hooks\n```\n\n### Available commands\n\nRun `make help` to see all available targets:\n\n| Command | Description |\n|---------|-------------|\n| `make lint` | Run ruff linter |\n| `make lint-fix` | Auto-fix lint issues |\n| `make test` | Run mock tests (no hardware) |\n| `make test-mock` | Run mock tests |\n| `make test-hardware` | Run all hardware tests (needs board) |\n| `make test-board` | Board tests only (buttons, LEDs, buzzer) |\n| `make test-sensors` | Sensor driver hardware tests |\n| `make test-all` | All tests (mock + hardware) |\n| `make test-examples` | Validate example files |\n| `make test-\u003cscenario\u003e` | Test a specific scenario (e.g. `make test-hts221`) |\n| `make ci` | Full CI pipeline (lint + tests + examples) |\n| `make repl` | Open MicroPython REPL |\n| `make mount` | Mount lib/ on the board |\n| `make clean` | Remove caches |\n| `make deepclean` | Remove everything including node_modules |\n\nPer-scenario targets are generated automatically from `tests/scenarios/*.yaml`.\n\n### Git hooks\n\nGit hooks are managed by [husky](https://typicode.github.io/husky/) and run automatically on commit:\n\n- **commit-msg** — validates commit message format via [commitlint](https://commitlint.js.org/)\n- **pre-commit** — branch name validation, content checks (conflict markers, TODO), ruff on staged `.py` files\n\n### Testing\n\nRun the full mock test suite:\n\n```bash\nmake test\n```\n\nRun hardware tests (requires a STeaMi board on `/dev/ttyACM0`):\n\n```bash\nmake test-hardware\n```\n\nRun tests for a specific driver:\n\n```bash\nmake test-hts221\n```\n\nSee full details in [tests/TESTING.md](tests/TESTING.md).\n\n## Contributing\n\nContributions are welcome! Please follow the project guidelines.\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n\n## License\n\nThis project is licensed under the [GPL v3](LICENSE) License. See the LICENSE file for more details.\n\n## Additional Resources\n\n- [STeaMi Official Website](https://www.steami.cc/)\n- [MicroPython Documentation](https://docs.micropython.org/)\n- [mpremote Documentation](https://docs.micropython.org/en/latest/reference/mpremote.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteamicc%2Fmicropython-steami-lib","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsteamicc%2Fmicropython-steami-lib","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsteamicc%2Fmicropython-steami-lib/lists"}