{"id":50481130,"url":"https://github.com/however-yir/embedded-systems-lab","last_synced_at":"2026-06-01T17:32:12.425Z","repository":{"id":356742226,"uuid":"1228514542","full_name":"however-yir/embedded-systems-lab","owner":"however-yir","description":"Embedded IoT projects: STM32 FreeRTOS monitor, industrial Modbus middleware, ESP32-S3 BLE keyboard.","archived":false,"fork":false,"pushed_at":"2026-05-22T12:24:51.000Z","size":34759,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-22T17:56:13.006Z","etag":null,"topics":["ble-hid","embedded-systems","esp32-s3","freertos","industrial-automation","iot","modbus","rtos","stm32"],"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/however-yir.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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-05-04T05:10:41.000Z","updated_at":"2026-05-22T12:24:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/however-yir/embedded-systems-lab","commit_stats":null,"previous_names":["however-yir/embedded-systems-lab"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/however-yir/embedded-systems-lab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/however-yir%2Fembedded-systems-lab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/however-yir%2Fembedded-systems-lab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/however-yir%2Fembedded-systems-lab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/however-yir%2Fembedded-systems-lab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/however-yir","download_url":"https://codeload.github.com/however-yir/embedded-systems-lab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/however-yir%2Fembedded-systems-lab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33786896,"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-06-01T02:00:06.963Z","response_time":115,"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":["ble-hid","embedded-systems","esp32-s3","freertos","industrial-automation","iot","modbus","rtos","stm32"],"created_at":"2026-06-01T17:32:11.518Z","updated_at":"2026-06-01T17:32:12.414Z","avatar_url":"https://github.com/however-yir.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Embedded Systems Lab\n\n嵌入式 IoT 项目集合，覆盖 STM32 FreeRTOS 实时监控、工业 Modbus 通信中间件与 ESP32-S3 自定义硬件。\n\n---\n\n## 第一屏可运行状态\n\n### edgepulse-rtos-monitor\n\n| 项 | 状态 |\n|---|---|\n| 硬件要求 | NUCLEO-F746ZG、板载 LAN8742A Ethernet PHY、RJ45 网络、ST-LINK/OpenOCD |\n| 构建方式 | `cd edgepulse-rtos-monitor \u0026\u0026 make`，烧录命令为 `make flash` |\n| 验证证据 | ARM GCC 构建由 `make`/CI 验证；Web 监控截图与串口启动日志当前为 planned evidence，预留位置见子项目 README |\n| CI 覆盖 | 根 `.github/workflows/ci.yml` 的 `build-edgepulse` 作业安装 `gcc-arm-none-eabi` 后执行 `make` |\n\n### industrial-edge-modbus-stm32-freertos\n\n| 项 | 状态 |\n|---|---|\n| 硬件要求 | STM32F103/G431/F429/H743 等示例板卡、RS485/RS232 收发器、USB 转串口或以太网链路 |\n| 构建方式 | STM32CubeIDE 导入 `Examples/*`；部分示例可用 `arm-none-eabi-gcc`/`make`；库源码可做语法检查 |\n| 验证证据 | README 补充 RTU/TCP bench 步骤、串口参数与 `pymodbus` 命令示例；真实双板/现场总线日志为 planned evidence |\n| CI 覆盖 | 根 `build-modbus` 作业对 `MODBUS-LIB/Src/*.c` 做 ARM GCC 语法检查，并尝试构建首个可用示例 |\n\n### vibecraft-keyboard\n\n| 项 | 状态 |\n|---|---|\n| 硬件要求 | ESP32-S3、ST7789 长条屏、7 个机械按键、1 个带按压旋转编码器、USB-C 数据线 |\n| 构建方式 | `./scripts/bootstrap-upstream.sh` 拉取上游后，执行 `./scripts/build-firmware.sh keys` 与 `ESP_PORT=... ./scripts/flash-firmware.sh keys` |\n| 验证证据 | README/docs 覆盖 BOM、接线、烧录、BLE HID 验证；实物照片、BLE 配对截图、串口/烧录日志为 planned evidence |\n| CI 覆盖 | 根 `.github/workflows/ci.yml` 的 `build-vibecraft` 作业运行 Python lint、shell 脚本检查与 `pytest tests -q` |\n\n---\n\n## 项目列表\n\n| 子项目 | 定位 | 技术栈 |\n|---|---|---|\n| [edgepulse-rtos-monitor](./edgepulse-rtos-monitor/) | RTOS 任务 Web 监控 | C + FreeRTOS + LwIP + STM32 |\n| [industrial-edge-modbus-stm32-freertos](./industrial-edge-modbus-stm32-freertos/) | 工业 Modbus 中间件 | C + FreeRTOS + Modbus + STM32 |\n| [vibecraft-keyboard](./vibecraft-keyboard/) | ESP32-S3 DIY 编程键盘 | Python + ESP32-S3 + BLE HID |\n\n---\n\n## 子项目详情\n\n### edgepulse-rtos-monitor — RTOS 任务监控\n\nSTM32 FreeRTOS + LwIP 嵌入式 Web 监控固件，提供实时任务仪表板与 JSON 状态 API。\n\n**硬件要求**\n\n| 组件 | 型号 | 说明 |\n|---|---|---|\n| 开发板 | NUCLEO-F746ZG (STM32F746ZG) | Cortex-M7, 1MB Flash, 320KB SRAM |\n| 以太网 | 板载 LAN8742A PHY | 通过 RMII 连接 |\n| 调试器 | ST-LINK V2 (板载) | USB 直连烧录 |\n| 网络 | RJ45 以太网线 | 连接至路由器/交换机 |\n\n**构建方式**\n\n```bash\ncd edgepulse-rtos-monitor\nmake            # 编译产物在 build/ 目录\nmake flash      # 通过 ST-LINK 烧录到开发板\n```\n\n前置依赖：`arm-none-eabi-gcc`、`make`、`OpenOCD`（烧录）。\n\n**验证方式**\n\n1. 设备联网后浏览器访问 `http://\u003cboard-ip\u003e/`，确认首页仪表板加载\n2. 访问 `http://\u003cboard-ip\u003e/tasks`，确认任务列表实时刷新\n3. 访问 `http://\u003cboard-ip\u003e/api/status`，确认返回 JSON 含 `ip`、`uptime_ms` 等字段\n4. CI 编译检查：GitHub Actions 运行 ARM GCC 交叉编译\n\n---\n\n### industrial-edge-modbus-stm32-freertos — 工业 Modbus 中间件\n\nSTM32 + FreeRTOS 工业边缘 Modbus 中间件，支持 RTU/TCP/USB-CDC、主从模式、RS485、DMA 高波特率。\n\n**硬件要求**\n\n| 组件 | 型号 | 说明 |\n|---|---|---|\n| 开发板 | STM32F103 / G431 / F429 / H743 等 | 多板卡示例见 `Examples/` |\n| 串口转接 | RS485 / RS232 收发器 | 如 MAX485、SP3485 |\n| 调试器 | ST-LINK 或 J-Link | SWD 接口 |\n| 测试上位机 | USB 转串口模块 | 配合 Python 脚本测试 |\n\n**构建方式**\n\n```bash\ncd industrial-edge-modbus-stm32-freertos\n\n# 方式 1：STM32CubeIDE 导入\n# File \u003e Import \u003e Existing Projects \u003e 指向 Examples/ModbusF103 等\n\n# 方式 2：Makefile（部分示例）\ncd Examples/ModbusF103 \u0026\u0026 make\n```\n\n前置依赖：STM32CubeIDE 1.8+（推荐）或 `arm-none-eabi-gcc` + `make`。\n\n**验证方式**\n\n1. 将示例固件烧录到开发板，用串口工具连接确认 Modbus 帧收发\n2. 运行 `Script/SlaveServerSerial.py` 作为上位机从站，验证读写寄存器\n3. `MODBUS-LIB/` 的 C 源码可通过 `arm-none-eabi-gcc -fsyntax-only` 语法检查\n4. CI 运行 MODBUS-LIB 语法检查 + 示例项目编译尝试\n\n---\n\n### vibecraft-keyboard — ESP32-S3 DIY 编程键盘\n\nESP32-S3 DIY 编程键盘，支持 BLE HID、ST7789 状态显示、旋钮输入与可编程键位映射。\n\n**硬件要求**\n\n| 组件 | 型号 | 数量 | 说明 |\n|---|---|---:|---|\n| 主控 | ESP32-S3 开发板 (16MB Flash) | 1 | 支持 BLE + USB |\n| 显示屏 | ST7789 长条屏 | 1 | SPI 接口，状态显示 |\n| 按键 | 机械轴体 | 7 | 编程快捷键 |\n| 旋钮 | EC11 旋转编码器 | 1 | 需支持按压 |\n| 供电 | USB Type-C 线 | 1 | 样机阶段直接供电 |\n| 可选 | I2S 麦克风 | 1 | 语音输入扩展 |\n\n**构建方式**\n\n```bash\ncd vibecraft-keyboard\n\n# 拉取上游参考固件\n./scripts/bootstrap-upstream.sh\n\n# 编译固件\n./scripts/build-firmware.sh keys\n\n# 烧录固件\nESP_PORT=/dev/cu.usbmodem1101 ./scripts/flash-firmware.sh keys\n\n# 编译上位机\n./scripts/build-host-tools.sh\n```\n\n前置依赖：ESP-IDF/ESP Rust 工具链、Python 3.9+、`cargo`、`espflash`、`jq`。\n\n**验证方式**\n\n1. 烧录固件后长条屏显示状态文本\n2. 七个按键与旋钮事件均可被固件识别\n3. 宿主机 BLE 连接后 Hook 能把状态消息发到设备\n4. `./scripts/check.sh` 执行 shellcheck + pytest\n5. CI 运行 Python lint、shell 脚本检查、pytest\n\n---\n\n## 目录结构\n\n```\nembedded-systems-lab/\n├── edgepulse-rtos-monitor/                   # RTOS Web 监控 (STM32F7)\n├── industrial-edge-modbus-stm32-freertos/    # Modbus 中间件 (STM32 系列)\n├── vibecraft-keyboard/                       # ESP32-S3 DIY 键盘\n├── LICENSE                                   # MIT License\n├── CONTRIBUTING.md                           # 贡献指南\n├── CODE_OF_CONDUCT.md                        # 行为准则\n└── .github/\n    ├── ISSUE_TEMPLATE/                       # Issue 模板\n    ├── PULL_REQUEST_TEMPLATE.md              # PR 模板\n    ├── dependabot.yml                        # 依赖自动更新\n    └── workflows/\n        └── ci.yml                            # CI: 结构校验 + 编译检查\n```\n\n## 快速启动\n\n每个子目录都是独立项目，进入对应目录后按照其 README 操作：\n\n```bash\ncd edgepulse-rtos-monitor/\n# 或\ncd industrial-edge-modbus-stm32-freertos/\n# 或\ncd vibecraft-keyboard/\n```\n\n## CI 状态\n\n![CI](https://github.com/however-yir/embedded-systems-lab/actions/workflows/ci.yml/badge.svg)\n\nCI 流水线包含：\n\n1. **结构校验**：根目录文件、子项目 README/LICENSE、GitHub 社区文件\n2. **edgepulse 编译**：ARM GCC 交叉编译\n3. **modbus 检查**：MODBUS-LIB 语法检查 + 示例项目编译\n4. **vibecraft 检查**：Python lint + shellcheck + pytest\n\n## 贡献\n\n欢迎通过 Issue 和 Pull Request 参与贡献，详见 [CONTRIBUTING.md](CONTRIBUTING.md)。\n\n## 许可\n\n本仓库原创内容采用 [MIT License](LICENSE) 发布。各子项目内第三方组件遵循各自许可证。\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowever-yir%2Fembedded-systems-lab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhowever-yir%2Fembedded-systems-lab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhowever-yir%2Fembedded-systems-lab/lists"}