AI-powered desktop tool that generates MCU project files from natural language.
Currently supports STM32 (CubeMX + HAL + Keil5), with more platforms coming soon.
AI MCU Codegen ๆฏไธไธชๆฌๅฐๆก้ขๅบ็จ๏ผ้่ฟ่ช็ถ่ฏญ่จๆ่ฟฐ็กฌไปถ้ๆฑ๏ผ่ฐ็จๅคง่ฏญ่จๆจกๅ๏ผๅ ผๅฎน OpenAI Chat Completions API๏ผ๏ผ่ชๅจ็ๆ้ขๅๅตๅ ฅๅผๅผๅ็ๅทฅ็จ้ ็ฝฎๅไปฃ็ ้ชจๆถใ
ไฝ ๅช้่ฆ็จไธๅฅ่ฏๆ่ฟฐไฝ ๆณๅไปไน๏ผๅทฅๅ
ทๅฐฑไผไธบไฝ ็ๆ .ioc ้
็ฝฎๆไปถใHAL ๅๅงๅไปฃ็ ใๆฅ็บฟๆนๆกๅๅผๅ่ฏดๆๆๆกฃโโๅผ็ฎฑๅณๅฏๅจ CubeMX / Keil5 ไธญ็ปง็ปญๅผๅใ
| ็นๆง | ่ฏดๆ |
|---|---|
| ๐ฃ๏ธ ่ช็ถ่ฏญ่จ่พๅ ฅ | ็จไธญๆๆ่ฑๆๆ่ฟฐไฝ ็็กฌไปถ้ๆฑ |
| ๐ ๅๆจกๅผ็ๆ | config_only ไป
็ๆ้
็ฝฎ / firmware_full ็ๆๅฎๆดๅบไปถ้ชจๆถ |
| ๐ง ๆบ่ฝๆ่ฝ็ณป็ป | ่ชๅจๅน้ ๆถ้่งๅใๅค่ฎพๆ ๅฐใHAL ้ ็ฝฎ็ญไธไธๆ่ฝ |
| โ ่ชๅจ็ปๆๆฅ้ช | ็ๆๅ่ชๅจๅฏน็ปๆ่ฟ่กๅฎๆดๆงๅๆ๏ผ็ปๅบ่ฏๅๅๆน่ฟๅปบ่ฎฎ |
| ๐ฌ AI ๅฏน่ฏๆ็ฃจ | ็ๆๅๅฏไธ AI ๅค่ฝฎไบคไบ๏ผไฟฎๆนๆไปถใ่งฃ้ไปฃ็ ใไผๅ้ ็ฝฎ |
| ๐ฅ๏ธ ๆก้ข GUI | ๅบไบ PySide6 ็ๅพๅฝข็้ข๏ผๅฏ่งๅ่ฟๅบฆใๆฅๅฟใ็ปๆๆ ็ญพ้กต |
| โจ๏ธ CLI ๆฏๆ | ๅฝไปค่กๆนๅค็๏ผ้ๅ้ๆๅฐ่ชๅจๅๆต็จ |
| ๐ ๆจกๅๅฏๅๆข | ๅ ผๅฎนไปปไฝ OpenAI API ๆ ผๅผ็ๆจกๅๆๅก |
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็จๆท็้ขๅฑ โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ GUI โ โ CLI โ โ
โ โ (gui.py) โ โ (cli.py) โ โ
โ โโโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โ
โ โโโโโโโโโฌโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๆๅกๅฑ โ โ
โ โโโโโโโโโโโโดโโโโโโโโโโโ โ
โ โ service.py โ โ
โ โ (็ผๆ + ็ปๆๆฅ้ช โ โ
โ โ + AI ๅฏน่ฏ็ฎก็) โ โ
โ โโโโโโโโโโโโฌโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๆ ธๅฟๅฑ โ โ
โ โโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ โ
โ โโโโโดโโโโโโโโโ โโโโโโโโโดโโโโโโโโ โโโโโโโโโดโโโโโโโโ โ
โ โ skills.py โ โ generator.py โ โ llm_client.py โ โ
โ โ ๆ่ฝๅ ่ฝฝ โ โ Prompt ๆๅปบ โ โ API ้ไฟก โ โ
โ โ + ๅน้
โ โ + ็ปๆ่งฃๆ โ โ + JSON ๆๅ โ โ
โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ ๆฐๆฎๅฑ โ
โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โ โ models.py โ โ config.py โ โ skills/*.md โ โ
โ โ ๆฐๆฎ็ปๆ โ โ ้
็ฝฎ็ฎก็ โ โ ๆ่ฝๆจกๆฟๆไปถ โ โ
โ โโโโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
้ๅไฝ ๅ็ปญ่ชๅทฑๅจ CubeMX / Keil5 ไธญ็ปง็ปญๆญๅปบๅทฅ็จใ
่พๅบๆไปถ๏ผ
| ๆไปถ | ่ฏดๆ |
|---|---|
<project>.ioc |
STM32CubeMX ้ ็ฝฎ่็จฟ |
Core/Inc/ai_board_config.h |
้ขๅๅบ็จๅฑ็้ ็ฝฎๆ่ฆๅคดๆไปถ |
Core/Src/ai_board_config.c |
้ ็ฝฎๅฎ็ฐๆบๆไปถ |
docs/generated-notes.md |
ๅ็ปญๆไฝ่ฏดๆๅๆณจๆไบ้กน |
่ฎฉ AI ็ดๆฅ็ๆๅฏๅจ Keil5 ไธญ็ปง็ปญๅผๅ็็จๅบๆกๆถ๏ผๅนถ้ๅธฆๆฅ็บฟๆนๆกใ
่พๅบๆไปถ๏ผ
| ๆไปถ | ่ฏดๆ |
|---|---|
<project>.ioc |
STM32CubeMX ้ ็ฝฎ่็จฟ |
Core/Inc/main.h |
ไธป็จๅบๅคดๆไปถ |
Core/Src/main.c |
ๅ
ๅซ main()ใ็ณป็ปๅๅงๅใๅค่ฎพๅๅงๅใไธปๅพช็ฏๆกๆถ |
Core/Inc/ai_board_config.h |
ๆฟ็บง้ ็ฝฎๅคดๆไปถ |
Core/Src/ai_board_config.c |
ๆฟ็บง้ ็ฝฎๅฎ็ฐ |
docs/wiring.md |
ๆฅ็บฟๆนๆก๏ผๅผ่่ฟๆฅใไพ็ตใ้ไฟกๆฅๅฃ๏ผ |
docs/keil5-notes.md |
Keil5 ๅฏผๅ ฅๅๅ็ปญๅผๅๆๅ |
ๆณจๆ๏ผ ่ฅๆชๆไพๆฟ็บงๆถๆฏ้ข็ใๅค่ฎพๅๅท็ญ็ป่๏ผAI ไผๅจ็ปๆไธญๆ็กฎๆ ๆณจ"ๅ่ฎพ"ๅ"้ฃ้ฉๆ้"ใ
็ๆๅฎๆๅ๏ผไฝ ๅฏไปฅ็ดๆฅๅจ็้ขๅ ๅๆขๅฐ ใAI ๅฏน่ฏใ ๆ ็ญพ้กต๏ผไธ AI ่ฟ่กๅค่ฝฎๅฏน่ฏๆฅๆ็ฃจๅไผๅๅทฒ็ๆ็้กน็ฎใ
ๅฏน่ฏ่ฝๅ๏ผ
| ๅ่ฝ | ่ฏดๆ |
|---|---|
| ๐ ไฟฎๆนๆไปถ | ่ฆๆฑ AI ไฟฎๆนๆๅฎๆไปถ๏ผๅฆ่ฐๆดๅผ่ใๆนๅๆถ้้ ็ฝฎ๏ผ๏ผไฟฎๆน่ชๅจๅๅ็ฃ็ |
| ๐ ่งฃ้ไปฃ็ | ่ฏข้ฎไปปไฝ็ๆๆไปถไธญ็ไปฃ็ ๅซไนๅ่ฎพ่ฎกๆ่ทฏ |
| โ๏ธ ไผๅ้ ็ฝฎ | ่ฎฉ AI ไผๅ .ioc ้
็ฝฎใHAL ๅๅงๅๆๅค่ฎพๅๆฐ |
| ๐ ๆ็ปญ่ฟญไปฃ | ๆฏๆๅค่ฝฎๅฏน่ฏ๏ผ้ๆญฅๅฎๅ้กน็ฎ็ดๅฐๆปกๆ |
็้ข็น็น๏ผ
- ๐ฌ ็จๆทๆถๆฏ่่ฒๆฐๆณกๅณๅฏน้ฝ๏ผAI ๅๅค็ฝ่ฒๆฐๆณกๅทฆๅฏน้ฝ
- ๐ ๆไปถไฟฎๆนไปฅ็ปฟ่ฒๅก็ๅฝขๅผๆ็คบ๏ผๅ ๅฎน่ชๅจๅๅ็ฃ็
- ๐๏ธ ๆฏๆใๆธ ็ฉบๅฏน่ฏใ้็ฝฎไธไธๆ
ๆ่ฝ็ณป็ป้่ฟ skills/ ็ฎๅฝไธ็ Markdown ๆไปถๅฎไน๏ผAI ไผๆ นๆฎ็จๆท้ๆฑ่ชๅจๅน้
ๅนถๆฟๆดป็ธๅ
ณๆ่ฝใ
| ๆ่ฝ | ็ฑปๅ | ๅ่ฝ |
|---|---|---|
| hal-conf | ๐ข ๅง็ปๅฏ็จ | HAL ๆจกๅๅฏ็จๅปบ่ฎฎใ้ฉฑๅจไพ่ตๅๆ |
| ioc-writer | ๐ข ๅง็ปๅฏ็จ | ็ป็ป .ioc ๆไปถ็ปๆๅๆ็ป่พๅบ |
| clock-planning | ๐ต ๆ้ๆฟๆดป | ๆถ้ๆ ๆจๅฏผ๏ผPLLใSYSCLKใHCLKใPCLK๏ผ |
| peripheral-mapping | ๐ต ๆ้ๆฟๆดป | ๅค่ฎพๅผ่ๅค็จๆนๆกๅ GPIO ๆ ๅฐ |
ไฝ ไนๅฏไปฅ่ชๅฎไนๆ่ฝ๏ผๅจ skills/ ็ฎๅฝไธๅๅปบๆฐ็ .md ๆไปถๅณๅฏ๏ผๆ ผๅผๅ่ๅทฒๆๆ่ฝๆจกๆฟใ
- Python 3.10+
- ไธไธชๅ ผๅฎน OpenAI Chat Completions API ็ๆจกๅๆๅก + API Key
git clone https://github.com/jichaowang02-lang/ai-mcu-codegen.git
cd ai-mcu-codegen
pip install -r requirements.txtๅคๅถ็ฏๅขๅ้ๆจกๆฟๅนถๅกซๅ ฅไฝ ็ API Key๏ผ
cp .env.example .env.env ๆไปถๅ
ๅฎน๏ผ
STM32_AGENT_API_KEY=your_api_key_here # ๅฟ
ๅกซ
STM32_AGENT_BASE_URL=https://your-api.com/v1 # ๅฏ้๏ผๆ้ป่ฎคๅผ
STM32_AGENT_MODEL=gpt-5.3-codex # ๅฏ้๏ผๆ้ป่ฎคๅผ
STM32_AGENT_OUTPUT_DIR=generated # ๅฏ้๏ผ่พๅบ็ฎๅฝ
STM32_AGENT_TIMEOUT=120 # ๅฏ้๏ผ่ฏทๆฑ่ถ
ๆถ(็ง)python main.py็้ขๅ่ฝ๏ผ
- ๐ ้กถ้จๅบๅฎ่ฟๅบฆๆก๏ผๅฎๆถๆพ็คบ็ๆ็ถๆ
- ๐ ๅทฆไพงๆปๅจ่กจๅ๏ผๆฏๆ้ๆฑ่พๅ ฅใMCU ้ๆฉใๆจกๅผๅๆข
- ๐ฝ ๅ ็ฝฎๅธธ็จ MCU ไธๆๅ่กจ๏ผๆฏๆ่ชๅฎไนๆทปๅ
- ๐ ๅณไพงๅคๆ ็ญพ้กต๏ผ็ปๆๆ่ฆใ็ปๆๆฅ้ชใAI ๅฏน่ฏใ่ฟ่กๆฅๅฟใๆ่ฝๆป่ง
# ๅบ็ก็จๆณ
python main.py generate --spec "ไฝ ็้ๆฑๆ่ฟฐ"
# ๅฎๆดๅๆฐ็คบไพ
python main.py generate ^
--project smart_lock ^
--mcu STM32F103C8T6 ^
--mode firmware_full ^
--spec "ไฝฟ็จ USART1 ่พๅบ่ฐ่ฏไฟกๆฏ๏ผI2C1 ้ฉฑๅจ OLED๏ผPA0 ๆ้ฎ่พๅ
ฅ๏ผPC13 LED๏ผSYSCLK 72MHz๏ผๅนถ็ๆๆฅ็บฟๆนๆกใ"
# ๆฅ็ๅฏ็จๆ่ฝ
python main.py skillsCLI ๅๆฐ่ฏดๆ๏ผ
| ๅๆฐ | ๆฏๅฆๅฟ ๅกซ | ่ฏดๆ |
|---|---|---|
--spec |
โ | ่ช็ถ่ฏญ่จ้ๆฑๆ่ฟฐ |
--project |
โ | ้กน็ฎๅ๏ผ้ป่ฎค stm32_ai_project๏ผ |
--mcu |
โ | ็ฎๆ MCU ๅๅท |
--mode |
โ | config_only๏ผ้ป่ฎค๏ผๆ firmware_full |
--api-key |
โ | LLM API Key๏ผไนๅฏ้่ฟ็ฏๅขๅ้๏ผ |
--base-url |
โ | LLM ๆๅกๅฐๅ |
--model |
โ | ๆจกๅๅ็งฐ |
--out |
โ | ่พๅบ็ฎๅฝ |
--timeout |
โ | ่ฏทๆฑ่ถ ๆถๆถ้ด๏ผ็ง๏ผ |
ๆฏๆฌก็ๆๅฎๆๅ๏ผๅทฅๅ ทไผ่ชๅจๆง่กๅค็ปดๅบฆ่ดจ้่ฏไผฐ๏ผ
| ๆฃๆฅ้กน | ่ฏดๆ |
|---|---|
| ๆไปถๅฎๆดๆง | ๆฃๆฅๅฟ ้ๆไปถๆฏๅฆๅ จ้จ็ๆ |
| ็ฃ็ๅๅ ฅ | ้ช่ฏๆไปถๆฏๅฆๆๅๅๅ ฅ็ฃ็ |
.ioc ่ดจ้ |
ๆฃๆฅ MCU ไฟกๆฏใRCC/GPIO/ProjectManager ็ญๅบ็ก้ ็ฝฎ |
main.c ็ปๆ |
้ช่ฏไธปๅฝๆฐๅไธปๅพช็ฏๆฏๅฆๅฎๆด๏ผfirmware_full ๆจกๅผ๏ผ |
| ๆๆกฃ็ๆ | ๆฃๆฅๆฅ็บฟๆนๆกใKeil5 ่ฏดๆ็ญๆๆกฃๆฏๅฆ้ฝๅ จ |
| ๅ่ฎพไธ้ฃ้ฉ | ๆฑๆปๆจกๅๅๅบ็ๅ่ฎพๅ้ฃ้ฉๆ้ |
่ฏไผฐ็ปๆไธบ 0-100 ๅ๏ผ
- โฅ 85 ๅ๏ผ็ปๆๅฎๆด๏ผๅฏ็ดๆฅ็จไบๅ็ปญๅผๅ
- 65-84 ๅ๏ผๅบๆฌๅฏ็จ๏ผๅปบ่ฎฎๆ ธๅฏนๅ ณ้ฎๅๆฐ
- < 65 ๅ๏ผๅญๅจๆๆพ็ผบ้กน๏ผๅปบ่ฎฎไฟฎๆน้ๆฑ้ๆฐ็ๆ
ai-mcu-codegen/
โโโ main.py # ๅบ็จๅ
ฅๅฃ
โโโ requirements.txt # Python ไพ่ต
โโโ .env.example # ็ฏๅขๅ้ๆจกๆฟ
โโโ skills/ # ๆ่ฝๆจกๆฟ็ฎๅฝ
โ โโโ clock-planning.md # ๆถ้่งๅๆ่ฝ
โ โโโ hal-conf.md # HAL ้
็ฝฎๆ่ฝ๏ผๅง็ปๅฏ็จ๏ผ
โ โโโ ioc-writer.md # IOC ๆไปถ็ๆๆ่ฝ๏ผๅง็ปๅฏ็จ๏ผ
โ โโโ peripheral-mapping.md # ๅค่ฎพๆ ๅฐๆ่ฝ
โโโ stm32_agent/ # ๆ ธๅฟไปฃ็ ๅ
โโโ __init__.py # ็ๆฌไฟกๆฏ (v0.1.0)
โโโ cli.py # ๅฝไปค่กๆฅๅฃ
โโโ config.py # ้
็ฝฎ็ฎก็๏ผ็ฏๅขๅ้ + ๅๆฐ๏ผ
โโโ generator.py # Prompt ๆๅปบ + ไปฃ็ ็ๆ + ็ปๆ่งฃๆ
โโโ gui.py # PySide6 ๅพๅฝข็้ข๏ผๅซ AI ๅฏน่ฏ้ขๆฟ๏ผ
โโโ llm_client.py # LLM API ๅฎขๆท็ซฏ๏ผๅ
ผๅฎน OpenAI ๆ ผๅผ๏ผ
โโโ models.py # ๆฐๆฎๆจกๅๅฎไน
โโโ service.py # ๆๅก็ผๆ + ็ปๆๆฅ้ช + ๅฏน่ฏ็ฎก็
โโโ skills.py # ๆ่ฝๅ ่ฝฝ + ๆบ่ฝๅน้
- STM32 (CubeMX + HAL + Keil5) ๆฏๆ
- ๅๆจกๅผ็ๆ๏ผconfig_only / firmware_full๏ผ
- ๆบ่ฝๆ่ฝ็ณป็ป
- ่ชๅจ็ปๆๆฅ้ช
- ๅค่ฝฎๅฏน่ฏๅผๆ็ฃจ
- ESP32 (ESP-IDF / Arduino) ๆฏๆ
- Arduino ๅนณๅฐๆฏๆ
- RISC-V (CH32V) ๆฏๆ
- ๆฌๅฐๆจกๅๆฏๆ๏ผOllama ็ญ๏ผ
- ็ๆ็ปๆๅๅฒ็ฎก็
ๆฌข่ฟๆไบค Issue ๅ Pull Request๏ผ
ๆฌ้กน็ฎ้็จ MIT License ๅผๆบใ