commit 087d8b694ea1b5e6938044bae4e1147ba8162318 Author: pidan <273612724@qq.com> Date: Wed Aug 5 17:25:11 2026 +0800 Initial: knowledge base diff --git a/README.md b/README.md new file mode 100644 index 0000000..e94fa22 --- /dev/null +++ b/README.md @@ -0,0 +1,12 @@ +# 硬件项目文档 + +对应 Wiki: https://wiki.suyushi.top/projects + +## 项目 +| 目录 | 项目 | 状态 | +|:--|:--|:--| +| `rpm-v3/` | RPM 马达测试仪 V3.3 | 开发中 | +| `pet-v1/` | 电子宠物 V1.0 | 8月投板 | +| `volt-hound-v1/` | Volt Hound V1.2 | 历史 | +| `volt-hound-v2/` | Volt Hound V2.0 | 🔥活跃 | +| `digital-asset-manager/` | 数字资产管理器 v3 | 软件 | diff --git a/digital-asset-manager/build_exe.spec b/digital-asset-manager/build_exe.spec new file mode 100644 index 0000000..126680d --- /dev/null +++ b/digital-asset-manager/build_exe.spec @@ -0,0 +1,51 @@ +# -*- mode: python ; coding: utf-8 -*- +""" +PyInstaller 打包配置文件 for 数字资产管理器 (Tkinter 桌面版) +打包命令: pyinstaller build_exe.spec +输出: dist/数字资产管理器.exe +""" + +import os + +ENTRY_SCRIPT = os.path.join(SPECPATH, 'digital_assets_ui.py') + +a = Analysis( + [ENTRY_SCRIPT], + pathex=[SPECPATH], + binaries=[], + datas=[], + hiddenimports=['digital_assets_manager', 'sqlite3', 'json', 'datetime'], + hookspath=[], + hooksconfig={}, + runtime_hooks=[], + excludes=['tkinter.test', 'lib2to3', 'pydoc', 'unittest', 'email', 'html', 'xml'], + win_no_prefer_redirects=False, + win_private_assemblies=False, + cipher=None, + noarchive=False, +) + +pyz = PYZ(a.pure, a.zipped_data, cipher=None) + +exe = EXE( + pyz, + a.scripts, + a.binaries, + a.zipfiles, + a.datas, + [], + name='数字资产管理器', + debug=False, + bootloader_ignore_signals=False, + strip=False, + upx=True, + upx_exclude=[], + runtime_tmpdir=None, + console=False, + disable_windowed_traceback=False, + argv_emulation=False, + target_arch=None, + codesign_identity=None, + entitlements_file=None, + icon=None, +) diff --git a/digital-asset-manager/digital_assets_manager.py b/digital-asset-manager/digital_assets_manager.py new file mode 100644 index 0000000..2fe9d40 --- /dev/null +++ b/digital-asset-manager/digital_assets_manager.py @@ -0,0 +1,1975 @@ +#!/usr/bin/env python3 +""" +个人项目与数字资产管理器 +========================= +使用SQLite本地数据库管理项目进度、技术决策、踩坑记录、知识卡和训练语料索引。 +纯标准库实现,命令行交互,单文件可运行。 + +数据库文件: digital_assets.db(与脚本同目录) +""" + +import argparse +import json +import os +import sqlite3 +import textwrap +from datetime import datetime + +# ── 全局配置 ────────────────────────────────────────────── +DB_FILENAME = "digital_assets.db" +DB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), DB_FILENAME) + + +# ═══════════════════════════════════════════════════════════ +# 数据库核心 +# ═══════════════════════════════════════════════════════════ + + +def get_conn(): + """获取数据库连接。 + + 启用外键约束(FOREIGN KEYS)确保级联删除正确工作, + 启用WAL模式提升并发读写性能。row_factory=sqlite3.Row + 让查询结果支持 dict-style 列名访问(row["col"])。 + """ + conn = sqlite3.connect(DB_PATH) + conn.execute("PRAGMA foreign_keys = ON") + conn.execute("PRAGMA journal_mode = WAL") + conn.row_factory = sqlite3.Row # 让查询结果支持按列名访问 + return conn + + +def init_db(): + """初始化数据库建表(幂等操作,已存在的表不重建)。 + + 创建6张核心表: + - projects: 项目信息 + - decisions: 技术决策 + - pitfalls: 踩坑记录 + - knowledge_cards: 知识卡(项目文件/工作日志) + - training_corpus: 训练语料索引 + - import_history: 导入历史记录 + + 同时创建7个索引加速常用查询(project_id/date/status/category/type)。 + """ + conn = get_conn() + cursor = conn.cursor() + + # ── 项目表 ── + cursor.execute(""" + CREATE TABLE IF NOT EXISTS projects ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT NOT NULL UNIQUE, + status TEXT NOT NULL DEFAULT 'active' + CHECK(status IN ('active','paused','archived')), + description TEXT DEFAULT '', + key_milestone TEXT DEFAULT '', + related_files TEXT DEFAULT '[]', -- JSON数组 + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL + ); + """) + + # ── 决策表 ── + cursor.execute(""" + CREATE TABLE IF NOT EXISTS decisions ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + project_id INTEGER NOT NULL, + date TEXT NOT NULL, + title TEXT NOT NULL, + content TEXT DEFAULT '', + basis TEXT DEFAULT '', + conclusion TEXT DEFAULT '', + tags TEXT DEFAULT '', + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE + ); + """) + + # ── 踩坑记录表 ── + cursor.execute(""" + CREATE TABLE IF NOT EXISTS pitfalls ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + project_id INTEGER NOT NULL, + date TEXT NOT NULL, + problem TEXT NOT NULL, + root_cause TEXT DEFAULT '', + solution TEXT DEFAULT '', + tags TEXT DEFAULT '', + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL, + FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE + ); + """) + + # ── 知识卡表 ── + cursor.execute(""" + CREATE TABLE IF NOT EXISTS knowledge_cards ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + topic TEXT NOT NULL, + category TEXT DEFAULT '', + file_path TEXT DEFAULT '', + summary TEXT DEFAULT '', + version TEXT DEFAULT '1.0', + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL + ); + """) + + # ── 训练语料索引表 ── + cursor.execute(""" + CREATE TABLE IF NOT EXISTS training_corpus ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + date TEXT NOT NULL, + type TEXT NOT NULL + CHECK(type IN ('qa','decision','pitfall')), + tags TEXT DEFAULT '', + file_path TEXT DEFAULT '', + record_count INTEGER DEFAULT 0, + created_at TEXT NOT NULL, + updated_at TEXT NOT NULL + ); + """) + + # ── 导入历史表 ── + cursor.execute(""" + CREATE TABLE IF NOT EXISTS import_history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + import_date TEXT NOT NULL, + import_type TEXT NOT NULL, + folder_path TEXT DEFAULT '', + project_name TEXT DEFAULT '', + file_count INTEGER DEFAULT 0, + summary TEXT DEFAULT '', + created_at TEXT NOT NULL + ); + """) + + # ── 索引:加速按外键、标签、日期、状态查询 ── + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_decisions_project ON decisions(project_id);" + ) + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_pitfalls_project ON pitfalls(project_id);" + ) + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_decisions_date ON decisions(date);" + ) + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_pitfalls_date ON pitfalls(date);" + ) + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_projects_status ON projects(status);" + ) + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_knowledge_category ON knowledge_cards(category);" + ) + cursor.execute( + "CREATE INDEX IF NOT EXISTS idx_corpus_type ON training_corpus(type);" + ) + + conn.commit() + conn.close() + print(f"[OK] 数据库初始化完成: {DB_PATH}") + + +# ═══════════════════════════════════════════════════════════ +# 工具函数 +# ═══════════════════════════════════════════════════════════ + + +def now(): + """返回当前时间字符串,ISO格式精确到秒。 + + 格式: "YYYY-MM-DD HH:MM:SS" + 所有数据库记录的 created_at/updated_at 统一使用此函数。 + """ + return datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + +def print_rows(rows, columns=None): + """以表格形式打印查询结果。 + + Args: + rows: sqlite3.Row 列表,每个 row 支持 dict-style 访问 + columns: 要显示的列名列表,默认取第一行的 keys() + + 输出格式: 表头 | 分隔线 | N行数据 | 总条数 + 无结果时打印"(无结果)"。 + """ + if not rows: + print("(无结果)") + return + if columns is None: + columns = rows[0].keys() + # 表头 + header = " | ".join(columns) + print(header) + print("-" * len(header)) + for row in rows: + vals = [] + for c in columns: + v = row.get(c, "") + vals.append(str(v) if v is not None else "") + print(" | ".join(vals)) + print(f"(共 {len(rows)} 条)") + + +def resolve_project_id(conn, project_ref): + """将名称或ID解析为 project_id。 + + Args: + conn: 数据库连接 + project_ref: 纯数字字符串→按ID查,否则→按项目名查 + + Returns: + int: project_id, 找不到返回 None + """ + cursor = conn.cursor() + if project_ref.isdigit(): + cursor.execute("SELECT id FROM projects WHERE id = ?", (int(project_ref),)) + else: + cursor.execute("SELECT id FROM projects WHERE name = ?", (project_ref,)) + row = cursor.fetchone() + return row["id"] if row else None + + +def timestamp_fields(): + """返回 (created_at, updated_at) 的当前时间元组。 + + 用于 INSERT 语句一次性获取两个时间戳字段的值。 + """ + t = now() + return (t, t) + + +def validate_date(date_str): + """校验日期是否严格符合 YYYY-MM-DD 格式。 + + Args: + date_str: 待校验字符串 + Returns: + bool: 合法且可解析则 True + + 用于所有 --date 参数的输入验证,防止非法日期写入数据库。 + """ + if date_str is None: + return False + try: + datetime.strptime(date_str, "%Y-%m-%d") + return True + except ValueError: + return False + + +def check_db_initialized(): + """检测数据库是否已初始化。 + + 通过查询 sqlite_master 确认 projects 表存在。 + 未初始化时打印提示信息指导用户运行 init 命令。 + + Returns: + bool: 已初始化返回 True + """ + try: + conn = sqlite3.connect(DB_PATH) + cursor = conn.cursor() + cursor.execute( + "SELECT name FROM sqlite_master WHERE type='table' AND name='projects'" + ) + exists = cursor.fetchone() is not None + conn.close() + if not exists: + print( + "[ERR] 数据库未初始化,请先运行: python digital_assets_manager.py init" + ) + return exists + except Exception: + print("[ERR] 数据库未初始化,请先运行: python digital_assets_manager.py init") + return False + + +# ═══════════════════════════════════════════════════════════ +# 命令处理 +# ═══════════════════════════════════════════════════════════ + +# ────────── 项目 (projects) ────────── + + +def cmd_project_add(args): + """添加新项目""" + conn = get_conn() + t = now() + try: + conn.execute( + """INSERT INTO projects (name, status, description, key_milestone, related_files, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?)""", + ( + args.name, + args.status or "active", + args.desc or "", + args.milestone or "", + json.dumps(args.files or [], ensure_ascii=False), + t, + t, + ), + ) + conn.commit() + print(f"[OK] 项目 '{args.name}' 已添加") + except sqlite3.IntegrityError as e: + print(f"[ERR] 添加失败: {e}") + finally: + conn.close() + + +def cmd_project_list(args): + """列出项目,支持按状态过滤""" + conn = get_conn() + if args.status: + rows = conn.execute( + "SELECT id, name, status, key_milestone, updated_at FROM projects WHERE status = ? ORDER BY updated_at DESC", + (args.status,), + ).fetchall() + else: + rows = conn.execute( + "SELECT id, name, status, key_milestone, updated_at FROM projects ORDER BY updated_at DESC" + ).fetchall() + print_rows(rows) + conn.close() + + +def cmd_project_update(args): + """更新项目字段""" + conn = get_conn() + pid = resolve_project_id(conn, args.project) + if pid is None: + print(f"[ERR] 未找到项目: {args.project}") + conn.close() + return + + # 构建动态UPDATE + updates = {} + if args.status: + if args.status not in ("active", "paused", "archived"): + print("[ERR] status 必须是 active / paused / archived") + conn.close() + return + updates["status"] = args.status + if args.desc is not None: + updates["description"] = args.desc + if args.milestone is not None: + updates["key_milestone"] = args.milestone + if args.files is not None: + updates["related_files"] = json.dumps(args.files, ensure_ascii=False) + + if not updates: + print("[WARN]️ 未指定要更新的字段") + conn.close() + return + + updates["updated_at"] = now() + set_clause = ", ".join(f"{k} = ?" for k in updates) + values = list(updates.values()) + [pid] + conn.execute(f"UPDATE projects SET {set_clause} WHERE id = ?", values) + conn.commit() + print(f"[OK] 项目 '{args.project}' 已更新") + conn.close() + + +def cmd_project_delete(args): + """删除项目(级联删除关联的决策和踩坑记录)""" + conn = get_conn() + pid = resolve_project_id(conn, args.project) + if pid is None: + print(f"[ERR] 未找到项目: {args.project}") + conn.close() + return + + if not args.force: + confirm = ( + input( + f"[WARN] 确定删除项目 '{args.project}' 及其关联的所有决策/踩坑记录?(y/N): " + ) + .strip() + .lower() + ) + if confirm != "y": + print("已取消") + conn.close() + return + + conn.execute("DELETE FROM projects WHERE id = ?", (pid,)) + conn.commit() + print(f"[OK] 项目 '{args.project}' 已删除") + conn.close() + + +# ────────── 决策 (decisions) ────────── + + +def cmd_decision_add(args): + """添加决策记录""" + if not validate_date(args.date): + print("[ERR] 日期格式错误,需要 YYYY-MM-DD") + return + conn = get_conn() + pid = resolve_project_id(conn, args.project) + if pid is None: + print(f"[ERR] 未找到项目: {args.project}") + conn.close() + return + + t = now() + conn.execute( + """INSERT INTO decisions (project_id, date, title, content, basis, conclusion, tags, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)""", + ( + pid, + args.date, + args.title, + args.content or "", + args.basis or "", + args.conclusion or "", + args.tags or "", + t, + t, + ), + ) + conn.commit() + print(f"[OK] 决策 '{args.title}' 已添加到项目 '{args.project}'") + conn.close() + + +def cmd_decision_list(args): + """列出决策,支持按项目过滤""" + conn = get_conn() + if args.project: + pid = resolve_project_id(conn, args.project) + if pid is None: + print(f"[ERR] 未找到项目: {args.project}") + conn.close() + return + rows = conn.execute( + """SELECT d.id, p.name AS project, d.date, d.title, d.tags, d.updated_at + FROM decisions d JOIN projects p ON d.project_id = p.id + WHERE d.project_id = ? ORDER BY d.date DESC""", + (pid,), + ).fetchall() + else: + rows = conn.execute( + """SELECT d.id, p.name AS project, d.date, d.title, d.tags, d.updated_at + FROM decisions d JOIN projects p ON d.project_id = p.id + ORDER BY d.date DESC""" + ).fetchall() + print_rows(rows) + conn.close() + + +def cmd_decision_update(args): + """更新决策 — 通过ID""" + conn = get_conn() + row = conn.execute("SELECT id FROM decisions WHERE id = ?", (args.id,)).fetchone() + if not row: + print(f"[ERR] 未找到决策 ID={args.id}") + conn.close() + return + + updates = {} + if args.title is not None: + updates["title"] = args.title + if args.content is not None: + updates["content"] = args.content + if args.basis is not None: + updates["basis"] = args.basis + if args.conclusion is not None: + updates["conclusion"] = args.conclusion + if args.tags is not None: + updates["tags"] = args.tags + if args.date is not None: + if not validate_date(args.date): + print("[ERR] 日期格式错误,需要 YYYY-MM-DD") + conn.close() + return + updates["date"] = args.date + + if not updates: + print("[WARN] 未指定要更新的字段") + conn.close() + return + + updates["updated_at"] = now() + set_clause = ", ".join(f"{k} = ?" for k in updates) + values = list(updates.values()) + [args.id] + conn.execute(f"UPDATE decisions SET {set_clause} WHERE id = ?", values) + conn.commit() + print(f"[OK] 决策 ID={args.id} 已更新") + conn.close() + + +def cmd_decision_delete(args): + """删除决策""" + conn = get_conn() + conn.execute("DELETE FROM decisions WHERE id = ?", (args.id,)) + conn.commit() + print(f"[OK] 决策 ID={args.id} 已删除(如存在)") + conn.close() + + +def cmd_decision_show(args): + """查看单条决策完整内容""" + conn = get_conn() + row = conn.execute( + """SELECT d.*, p.name AS project_name + FROM decisions d JOIN projects p ON d.project_id = p.id + WHERE d.id = ?""", + (args.id,), + ).fetchone() + if not row: + print(f"[ERR] 未找到决策 ID={args.id}") + else: + print(f"ID: {row['id']}") + print(f"项目: {row['project_name']}") + print(f"日期: {row['date']}") + print(f"标题: {row['title']}") + print(f"内容: {row['content']}") + print(f"依据: {row['basis']}") + print(f"结论: {row['conclusion']}") + print(f"标签: {row['tags']}") + print(f"更新时间: {row['updated_at']}") + conn.close() + + +# ────────── 踩坑记录 (pitfalls) ────────── + + +def cmd_pitfall_add(args): + """添加踩坑记录""" + if not validate_date(args.date): + print("[ERR] 日期格式错误,需要 YYYY-MM-DD") + return + conn = get_conn() + pid = resolve_project_id(conn, args.project) + if pid is None: + print(f"[ERR] 未找到项目: {args.project}") + conn.close() + return + + t = now() + conn.execute( + """INSERT INTO pitfalls (project_id, date, problem, root_cause, solution, tags, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?)""", + ( + pid, + args.date, + args.problem, + args.root_cause or "", + args.solution or "", + args.tags or "", + t, + t, + ), + ) + conn.commit() + print(f"[OK] 踩坑记录已添加到项目 '{args.project}'") + conn.close() + + +def cmd_pitfall_list(args): + """列出踩坑记录""" + conn = get_conn() + if args.project: + pid = resolve_project_id(conn, args.project) + if pid is None: + print(f"[ERR] 未找到项目: {args.project}") + conn.close() + return + rows = conn.execute( + """SELECT pf.id, p.name AS project, pf.date, pf.problem, pf.tags, pf.updated_at + FROM pitfalls pf JOIN projects p ON pf.project_id = p.id + WHERE pf.project_id = ? ORDER BY pf.date DESC""", + (pid,), + ).fetchall() + else: + rows = conn.execute( + """SELECT pf.id, p.name AS project, pf.date, pf.problem, pf.tags, pf.updated_at + FROM pitfalls pf JOIN projects p ON pf.project_id = p.id + ORDER BY pf.date DESC""" + ).fetchall() + print_rows(rows) + conn.close() + + +def cmd_pitfall_update(args): + """更新踩坑记录""" + conn = get_conn() + row = conn.execute("SELECT id FROM pitfalls WHERE id = ?", (args.id,)).fetchone() + if not row: + print(f"[ERR] 未找到踩坑记录 ID={args.id}") + conn.close() + return + + updates = {} + if args.problem is not None: + updates["problem"] = args.problem + if args.root_cause is not None: + updates["root_cause"] = args.root_cause + if args.solution is not None: + updates["solution"] = args.solution + if args.tags is not None: + updates["tags"] = args.tags + if args.date is not None: + if not validate_date(args.date): + print("[ERR] 日期格式错误,需要 YYYY-MM-DD") + conn.close() + return + updates["date"] = args.date + + if not updates: + print("[WARN] 未指定要更新的字段") + conn.close() + return + + updates["updated_at"] = now() + set_clause = ", ".join(f"{k} = ?" for k in updates) + values = list(updates.values()) + [args.id] + conn.execute(f"UPDATE pitfalls SET {set_clause} WHERE id = ?", values) + conn.commit() + print(f"[OK] 踩坑记录 ID={args.id} 已更新") + conn.close() + + +def cmd_pitfall_delete(args): + """删除踩坑记录""" + conn = get_conn() + conn.execute("DELETE FROM pitfalls WHERE id = ?", (args.id,)) + conn.commit() + print(f"[OK] 踩坑记录 ID={args.id} 已删除(如存在)") + conn.close() + + +def cmd_pitfall_show(args): + """查看单条踩坑记录完整内容""" + conn = get_conn() + row = conn.execute( + """SELECT pf.*, p.name AS project_name + FROM pitfalls pf JOIN projects p ON pf.project_id = p.id + WHERE pf.id = ?""", + (args.id,), + ).fetchone() + if not row: + print(f"[ERR] 未找到踩坑记录 ID={args.id}") + else: + print(f"ID: {row['id']}") + print(f"项目: {row['project_name']}") + print(f"日期: {row['date']}") + print(f"问题: {row['problem']}") + print(f"根因: {row['root_cause']}") + print(f"解决方案: {row['solution']}") + print(f"标签: {row['tags']}") + print(f"更新时间: {row['updated_at']}") + conn.close() + + +# ────────── 知识卡 (knowledge_cards) ────────── + + +def cmd_knowledge_add(args): + """添加知识卡""" + conn = get_conn() + t = now() + conn.execute( + """INSERT INTO knowledge_cards (topic, category, file_path, summary, version, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?)""", + ( + args.topic, + args.category or "", + args.file or "", + args.summary or "", + args.version or "1.0", + t, + t, + ), + ) + conn.commit() + print(f"[OK] 知识卡 '{args.topic}' 已添加") + conn.close() + + +def cmd_knowledge_list(args): + """列出知识卡,支持按分类过滤""" + conn = get_conn() + if args.category: + rows = conn.execute( + """SELECT id, topic, category, version, updated_at + FROM knowledge_cards WHERE category = ? ORDER BY updated_at DESC""", + (args.category,), + ).fetchall() + else: + rows = conn.execute( + "SELECT id, topic, category, version, updated_at FROM knowledge_cards ORDER BY updated_at DESC" + ).fetchall() + print_rows(rows) + conn.close() + + +def cmd_knowledge_update(args): + """更新知识卡""" + conn = get_conn() + row = conn.execute( + "SELECT id FROM knowledge_cards WHERE id = ?", (args.id,) + ).fetchone() + if not row: + print(f"[ERR] 未找到知识卡 ID={args.id}") + conn.close() + return + + updates = {} + if args.topic is not None: + updates["topic"] = args.topic + if args.category is not None: + updates["category"] = args.category + if args.file is not None: + updates["file_path"] = args.file + if args.summary is not None: + updates["summary"] = args.summary + if args.version is not None: + updates["version"] = args.version + + if not updates: + print("[WARN]️ 未指定要更新的字段") + conn.close() + return + + updates["updated_at"] = now() + set_clause = ", ".join(f"{k} = ?" for k in updates) + values = list(updates.values()) + [args.id] + conn.execute(f"UPDATE knowledge_cards SET {set_clause} WHERE id = ?", values) + conn.commit() + print(f"[OK] 知识卡 ID={args.id} 已更新") + conn.close() + + +def cmd_knowledge_delete(args): + """删除知识卡""" + conn = get_conn() + conn.execute("DELETE FROM knowledge_cards WHERE id = ?", (args.id,)) + conn.commit() + print(f"[OK] 知识卡 ID={args.id} 已删除(如存在)") + conn.close() + + +def cmd_knowledge_show(args): + """查看单条知识卡完整内容""" + conn = get_conn() + row = conn.execute( + "SELECT * FROM knowledge_cards WHERE id = ?", (args.id,) + ).fetchone() + if not row: + print(f"[ERR] 未找到知识卡 ID={args.id}") + else: + print(f"ID: {row['id']}") + print(f"主题: {row['topic']}") + print(f"分类: {row['category']}") + print(f"文件路径: {row['file_path']}") + print(f"摘要: {row['summary']}") + print(f"版本: {row['version']}") + print(f"更新时间: {row['updated_at']}") + conn.close() + + +# ────────── 训练语料 (training_corpus) ────────── + + +def cmd_corpus_add(args): + """添加训练语料索引记录""" + if not validate_date(args.date): + print("[ERR] 日期格式错误,需要 YYYY-MM-DD") + return + conn = get_conn() + if args.type not in ("qa", "decision", "pitfall"): + print("[ERR] type 必须是 qa / decision / pitfall") + conn.close() + return + + t = now() + conn.execute( + """INSERT INTO training_corpus (date, type, tags, file_path, record_count, created_at, updated_at) + VALUES (?, ?, ?, ?, ?, ?, ?)""", + (args.date, args.type, args.tags or "", args.file or "", args.count or 0, t, t), + ) + conn.commit() + print("[OK] 训练语料记录已添加") + conn.close() + + +def cmd_corpus_list(args): + """列出训练语料""" + conn = get_conn() + query = """SELECT id, date, type, tags, file_path, record_count, updated_at + FROM training_corpus WHERE 1=1""" + params = [] + if args.type: + query += " AND type = ?" + params.append(args.type) + query += " ORDER BY date DESC" + rows = conn.execute(query, params).fetchall() + print_rows(rows) + conn.close() + + +def cmd_corpus_update(args): + """更新训练语料记录""" + conn = get_conn() + row = conn.execute( + "SELECT id FROM training_corpus WHERE id = ?", (args.id,) + ).fetchone() + if not row: + print(f"[ERR] 未找到语料记录 ID={args.id}") + conn.close() + return + + updates = {} + if args.type is not None: + if args.type not in ("qa", "decision", "pitfall"): + print("[ERR] type 必须是 qa / decision / pitfall") + conn.close() + return + updates["type"] = args.type + if args.tags is not None: + updates["tags"] = args.tags + if args.file is not None: + updates["file_path"] = args.file + if args.count is not None: + updates["record_count"] = args.count + if args.date is not None: + if not validate_date(args.date): + print("[ERR] 日期格式错误,需要 YYYY-MM-DD") + conn.close() + return + updates["date"] = args.date + + if not updates: + print("[WARN] 未指定要更新的字段") + conn.close() + return + + updates["updated_at"] = now() + set_clause = ", ".join(f"{k} = ?" for k in updates) + values = list(updates.values()) + [args.id] + conn.execute(f"UPDATE training_corpus SET {set_clause} WHERE id = ?", values) + conn.commit() + print(f"[OK] 语料记录 ID={args.id} 已更新") + conn.close() + + +def cmd_corpus_delete(args): + """删除训练语料记录""" + conn = get_conn() + conn.execute("DELETE FROM training_corpus WHERE id = ?", (args.id,)) + conn.commit() + print(f"[OK] 语料记录 ID={args.id} 已删除(如存在)") + conn.close() + + +def cmd_corpus_show(args): + """查看单条训练语料索引完整内容""" + conn = get_conn() + row = conn.execute( + "SELECT * FROM training_corpus WHERE id = ?", (args.id,) + ).fetchone() + if not row: + print(f"[ERR] 未找到语料记录 ID={args.id}") + else: + print(f"ID: {row['id']}") + print(f"日期: {row['date']}") + print(f"类型: {row['type']}") + print(f"标签: {row['tags']}") + print(f"文件路径: {row['file_path']}") + print(f"记录数: {row['record_count']}") + print(f"创建时间: {row['created_at']}") + print(f"更新时间: {row['updated_at']}") + conn.close() + + +def cmd_import(args): + """批量导入文件夹,自动按子目录创建项目并分类文件。 + + 核心流程: + 1. 扫描目录(可选递归) → 子文件夹名→项目名 + 2. 文件类型判断: .jsonl(含Q&A)→语料库, 含日志关键词→工作日志, 其余→项目资产 + 3. 二进制文件只存元数据(路径+类型标签),文本文件读全文(超10000字截断) + 4. 自动创建不存在的项目,状态设为 active + 5. 写入 import_history 记录 + + Args: + args.dir: 要导入的目录路径 + args.recursive: 是否递归子目录(每个子文件夹=一个项目) + args.project: 手动指定项目名(覆盖自动检测) + """ + import_dir = os.path.abspath(args.dir) + if not os.path.isdir(import_dir): + print(f"[ERR] 目录不存在: {import_dir}") + return + recursive = getattr(args, "recursive", False) + project_name = args.project if args.project else None + + conn = get_conn() + cursor = conn.cursor() + + # 收集目录(os.walk 真递归,单次遍历整棵树,按所属顶级目录分配项目名) + top_dirs = {} + if recursive: + for entry in os.listdir(import_dir): + epath = os.path.join(import_dir, entry) + if os.path.isdir(epath): + top_dirs[os.path.abspath(epath)] = project_name or entry + scan_groups = [("未归类", import_dir)] + else: + scan_groups = [(project_name or "未归类", import_dir)] + + # 文件类型 + text_ext = ( + ".md", + ".txt", + ".jsonl", + ".py", + ".c", + ".h", + ".cpp", + ".hpp", + ".json", + ".csv", + ".log", + ".yaml", + ".yml", + ".ini", + ".cfg", + ".toml", + ) + binary_ext = ( + ".pdf", + ".docx", + ".xlsx", + ".pptx", + ".png", + ".jpg", + ".jpeg", + ".gif", + ".bmp", + ".svg", + ".bin", + ".hex", + ".elf", + ".uf2", + ".sch", + ".brd", + ".kicad_pcb", + ".kicad_sch", + ".zip", + ".rar", + ".7z", + ".gz", + ) + supported_ext = text_ext + binary_ext + + all_files = [] + for pname, dpath in scan_groups: + if not os.path.isdir(dpath): + continue + for root, dirs, files in os.walk(dpath): + dirs.sort() + if not recursive: + dirs.clear() + abs_root = os.path.abspath(root) + owner = None + if recursive and top_dirs: + for td, td_name in top_dirs.items(): + if abs_root == td or abs_root.startswith(td + os.sep): + owner = td_name + break + fn_pname = owner or pname + for fn in sorted(files): + fp = os.path.join(root, fn) + fn_low = fn.lower() + if fn_low.endswith(supported_ext) and os.path.isfile(fp): + is_bin = fn_low.endswith(binary_ext) + is_jsonl = fn_low.endswith(".jsonl") + all_files.append((fn_pname, root, fn, fp, is_bin, is_jsonl)) + + if not all_files: + print("[WARN] 目录下未找到可导入的文件") + conn.close() + return + + # 确保项目存在 + project_cache = {} + for pname, _, _, _, _, _ in all_files: + if pname in project_cache: + continue + cursor.execute("SELECT id FROM projects WHERE name=?", (pname,)) + row = cursor.fetchone() + if row: + project_cache[pname] = row["id"] + else: + t = now() + cursor.execute( + "INSERT INTO projects (name,status,description,created_at,updated_at) VALUES(?,'active','封存导入',?,?)", + (pname, t, t), + ) + conn.commit() + project_cache[pname] = cursor.lastrowid + print(f"[OK] 创建项目: {pname}") + + # 逐文件导入 + stats = {"imported": 0, "skipped": 0, "projects": 0, "logs": 0, "corpus": 0} + total = len(all_files) + processed = set() + + for idx, (pname, dpath, filename, filepath, is_binary, is_jsonl) in enumerate( + all_files, 1 + ): + if dpath not in processed: + print(f"\n 扫描 [{pname}] {dpath}") + processed.add(dpath) + project_cache[pname] + title = os.path.splitext(filename)[0] + + # JSONL -> 训练语料(一个文件一条记录,带去重) + if is_jsonl: + existing = conn.execute("SELECT id FROM training_corpus WHERE file_path=?", (filepath,)).fetchone() + if existing: + stats["skipped"] += 1 + print(f" [{idx}/{total}] [SKIP] {filename}") + continue + with open(filepath, "r", encoding="utf-8", errors="replace") as fh: + raw = fh.read() + qa_n = dec_n = pf_n = other_n = 0 + tags_set = set() + dates = [] + for line in raw.strip().split("\n"): + line = line.strip() + if not line: + continue + try: + obj = json.loads(line) + except json.JSONDecodeError: + continue + if "question" in obj and "answer" in obj: + qa_n += 1 + elif "decision" in obj or "conclusion" in obj: + dec_n += 1 + elif "problem" in obj or "solution" in obj: + pf_n += 1 + else: + other_n += 1 + _tags = obj.get("tags") + if _tags: + if isinstance(_tags, list): + tags_set.update(str(t) for t in _tags) + elif isinstance(_tags, str): + tags_set.update( + t.strip() for t in _tags.split(",") if t.strip() + ) + else: + tags_set.add(str(_tags)) + if obj.get("date"): + dates.append(obj["date"]) + total_valid = qa_n + dec_n + pf_n + other_n + if total_valid == 0: + stats["skipped"] += 1 + print(f" [{idx}/{total}] [SKIP] {filename} (无有效行)") + continue + tags = ",".join(sorted(tags_set)[:5]) if tags_set else "" + date = dates[0] if dates else now()[:10] + # 按多数类型 + if qa_n >= dec_n and qa_n >= pf_n and qa_n > 0: + best_type = "qa" + elif dec_n >= pf_n and dec_n > 0: + best_type = "decision" + elif pf_n > 0: + best_type = "pitfall" + else: + best_type = "qa" + t = now() + conn.execute( + "INSERT INTO training_corpus (date,type,tags,file_path,record_count,created_at,updated_at) VALUES(?,?,?,?,?,?,?)", + (date, best_type, tags, filepath, total_valid, t, t), + ) + stats["imported"] += 1 + stats["corpus"] += 1 + parts = [f"QA {qa_n}"] if qa_n else [] + if dec_n: + parts.append(f"决策 {dec_n}") + if pf_n: + parts.append(f"踩坑 {pf_n}") + if other_n: + parts.append(f"其他 {other_n}") + print( + f" [{idx}/{total}] [OK] {filename} -> 语料库 ({total_valid}条, {', '.join(parts)})" + ) + continue + + # 工作日志判定(按分词匹配,避免 logo/catalog 含 log 子串被误判) + stem = os.path.splitext(filename)[0].lower() + _toks = stem.replace("-", " ").replace("_", " ").replace(".", " ").split() + is_worklog = any(kw in stem for kw in ["日志", "工作记录", "周报", "日报"]) or any( + t in ("log", "diary", "journal") for t in _toks + ) + category = "工作日志" if is_worklog else pname + + # 二进制文件 + if is_binary: + existing = conn.execute( + "SELECT id FROM knowledge_cards WHERE topic=? AND file_path=?", + (title, filepath), + ).fetchone() + if existing: + stats["skipped"] += 1 + print(f" [{idx}/{total}] [SKIP] {filename}") + continue + t = now() + ext = os.path.splitext(filename)[1].lower() + cat_map = { + ".pdf": "PDF", + ".docx": "Word", + ".xlsx": "Excel", + ".png": "图片", + ".jpg": "图片", + ".jpeg": "图片", + ".gif": "图片", + ".bmp": "图片", + ".svg": "矢量图", + ".bin": "固件", + ".hex": "固件", + ".elf": "固件", + ".uf2": "固件", + ".sch": "原理图", + ".brd": "PCB", + ".kicad_pcb": "KiCad", + ".kicad_sch": "KiCad", + ".zip": "压缩包", + ".rar": "压缩包", + ".7z": "压缩包", + ".gz": "压缩包", + } + cn = cat_map.get(ext, "文档") + file_mtime = datetime.fromtimestamp(os.path.getmtime(filepath)).strftime("%Y-%m-%d") + conn.execute( + "INSERT INTO knowledge_cards (topic,category,file_path,summary,version,created_at,updated_at) VALUES(?,?,?,?,?,?,?)", + (title, category, filepath, f"[{cn} 文件] {filepath}", file_mtime, t, t), + ) + stats["imported"] += 1 + if is_worklog: + stats["logs"] += 1 + else: + stats["projects"] += 1 + print( + f" [{idx}/{total}] [OK] {filename} -> {'工作日志' if is_worklog else '项目资产'} ({cn})" + ) + continue + + # 文本文件 + with open(filepath, "r", encoding="utf-8", errors="replace") as fh: + raw = fh.read() + existing = conn.execute( + "SELECT id FROM knowledge_cards WHERE topic=? AND file_path=?", + (title, filepath), + ).fetchone() + if existing: + stats["skipped"] += 1 + print(f" [{idx}/{total}] [SKIP] {filename}") + continue + t = now() + file_mtime = datetime.fromtimestamp(os.path.getmtime(filepath)).strftime( + "%Y-%m-%d" + ) + conn.execute( + "INSERT INTO knowledge_cards (topic,category,file_path,summary,version,created_at,updated_at) VALUES(?,?,?,?,?,?,?)", + (title, category, filepath, raw[:10000], file_mtime, t, t), + ) + conn.commit() + stats["imported"] += 1 + if is_worklog: + stats["logs"] += 1 + else: + stats["projects"] += 1 + print( + f" [{idx}/{total}] [OK] {filename} -> {'工作日志' if is_worklog else '项目资产'}" + ) + + conn.commit() + conn.close() + + print() + print("=" * 50) + print(f" 导入完成: 成功 {stats['imported']} 条, 跳过 {stats['skipped']} 条") + print( + f" 项目资产: {stats['projects']} | 工作日志: {stats['logs']} | 训练语料: {stats['corpus']}" + ) + print(f" 涉及项目: {len(project_cache)} 个") + print("=" * 50) + + # 写入导入历史(使 UI 导入历史面板可见) + try: + hconn = get_conn() + hconn.execute( + "INSERT INTO import_history (import_date, import_type, folder_path, project_name, file_count, summary, created_at) VALUES (?,?,?,?,?,?,?)", + ( + now()[:10], + "CLI导入", + import_dir, + project_name or "", + stats["imported"], + f"成功{stats['imported']}条, 跳过{stats['skipped']}条", + now(), + ), + ) + hconn.commit() + hconn.close() + except Exception as e: + print(f"[WARN] 导入历史写入失败: {e}") + + +# ═══════════════════════════════════════════════════════════ +# 搜索功能 +# ═══════════════════════════════════════════════════════════ + + +def highlight_keyword(text, keywords, context=30): + """在文本中高亮关键词。 + + 找到关键词在文本中最早出现的位置,截取前后各 context 个字符, + 用【】包裹每个关键词。跨行不区分大小写。 + + Args: + text: 原始文本 + keywords: 关键词列表(AND逻辑) + context: 前后截取字符数,默认30 + Returns: + str: 高亮后的文本片段,前后加 ... 标记截断 + """ + if not text or not keywords: + return text[: context * 2] if text else "" + import re + + best_pos = len(text) + best_kw = keywords[0] + # 找到最早出现的关键词位置 + for kw in keywords: + pos = text.lower().find(kw.lower()) + if pos != -1 and pos < best_pos: + best_pos = pos + best_kw = kw + if best_pos >= len(text): + return text[: context * 2] if text else "" + start = max(0, best_pos - context) + end = min(len(text), best_pos + len(best_kw) + context) + snippet = text[start:end] + # 用【】包裹关键词(不区分大小写) + for kw in keywords: + snippet = re.sub(f"({re.escape(kw)})", r"【\1】", snippet, flags=re.IGNORECASE) + return ("..." if start > 0 else "") + snippet + ("..." if end < len(text) else "") + + +def cmd_search(args): + """全局搜索,支持关键词AND逻辑和结果片段高亮。 + + 搜索范围: decisions(title/content/basis/conclusion/tags) + + pitfalls(problem/root_cause/solution/tags) + + knowledge_cards(topic/summary/category) + + 关键词用空格分隔 → AND逻辑(每条记录必须同时包含所有关键词) + 结果显示: 关键词前后30字上下文,用【】包裹关键词 + + 支持叠加筛选: --project / --tag / --date-from / --date-to + + Args: + args.keyword: 空格分隔的关键词(可选) + args.project: 项目名模糊匹配(可选) + args.tag: 标签模糊匹配(可选) + args.date_from/date_to: 日期范围(可选) + """ + conn = get_conn() + + # 解析关键词(空格分隔,AND逻辑) + keywords = [] + if hasattr(args, "keyword") and args.keyword: + keywords = [kw.strip() for kw in args.keyword.split() if kw.strip()] + + # 构建过滤条件 + project_clause = "" + project_params = [] + if args.project: + project_clause = "AND p.name LIKE ?" + project_params = [f"%{args.project}%"] + + tag_clause = "" + tag_params = [] + if args.tag: + tag_clause = "AND d.tags LIKE ?" + tag_params = [f"%{args.tag}%"] + + date_clause = "" + date_params = [] + if args.date_from: + date_clause += " AND d.date >= ?" + date_params.append(args.date_from) + if args.date_to: + date_clause += " AND d.date <= ?" + date_params.append(args.date_to) + + # ── 关键词搜索子句:在多个字段中模糊匹配,多个关键词AND逻辑 ── + def build_kw_clause(fields, table_alias=""): + """为指定字段列表构建关键词LIKE子句,返回(clause_sql, params_list)""" + if not keywords: + return "", [] + prefix = f"{table_alias}." if table_alias else "" + clauses = [] + params = [] + for kw in keywords: + or_parts = " OR ".join([f"{prefix}{f} LIKE ?" for f in fields]) + clauses.append(f"({or_parts})") + params.extend([f"%{kw}%"] * len(fields)) + return " AND " + " AND ".join(clauses), params + + kw_d_clause, kw_d_params = build_kw_clause( + ["title", "content", "basis", "conclusion", "tags"], "d" + ) + kw_pf_clause, kw_pf_params = build_kw_clause( + ["problem", "root_cause", "solution", "tags"], "pf" + ) + kw_kc_clause, kw_kc_params = build_kw_clause(["topic", "summary", "category"]) + + results = [] + + # 搜索决策 + d_query = f"""SELECT 'decision' AS source, d.id, p.name AS project, d.date, + d.title AS summary, d.tags, + d.title AS t_title, d.content AS t_content, d.basis AS t_basis, d.conclusion AS t_conclusion + FROM decisions d JOIN projects p ON d.project_id = p.id + WHERE 1=1 {project_clause} {tag_clause} {date_clause} {kw_d_clause} + ORDER BY d.date DESC LIMIT 100""" + d_params = project_params + tag_params + date_params + kw_d_params + results.extend([dict(r) for r in conn.execute(d_query, d_params).fetchall()]) + + # 搜索踩坑记录 + d_tag_clause = tag_clause.replace("d.", "pf.") + pf_query = f"""SELECT 'pitfall' AS source, pf.id, p.name AS project, pf.date, + pf.problem AS summary, pf.tags, + pf.problem AS t_problem, pf.root_cause AS t_root_cause, pf.solution AS t_solution + FROM pitfalls pf JOIN projects p ON pf.project_id = p.id + WHERE 1=1 {project_clause} {d_tag_clause} {date_clause} {kw_pf_clause} + ORDER BY pf.date DESC LIMIT 100""" + pf_params = project_params + tag_params + date_params + kw_pf_params + results.extend([dict(r) for r in conn.execute(pf_query, pf_params).fetchall()]) + + # 搜索知识卡 + kc_tag_clause = "" + kc_tag_params = [] + if args.tag: + kc_tag_clause = "AND (category LIKE ? OR topic LIKE ?)" + kc_tag_params = [f"%{args.tag}%", f"%{args.tag}%"] + + kc_query = f"""SELECT 'knowledge' AS source, id, topic AS label, updated_at AS date, + summary, category, + topic AS t_topic, summary AS t_summary + FROM knowledge_cards + WHERE 1=1 {kc_tag_clause} {kw_kc_clause} + ORDER BY updated_at DESC LIMIT 100""" + kc_params = kc_tag_params + kw_kc_params + results.extend([dict(r) for r in conn.execute(kc_query, kc_params).fetchall()]) + + if results: + print(f"\n[Search] 搜索结果(共 {len(results)} 条):\n") + for r in results: + source = r["source"] + if source == "knowledge": + line1 = f"[{source}] ID={r['id']} | {r['label']} | {r['date']}" + line2 = f" 摘要: {r['summary'][:80]}" + print(line1) + print(line2) + else: + line1 = f"[{source}] ID={r['id']} | {r['project']} | {r['date']} | {r['summary'][:60]}" + print(line1) + + # 关键词高亮:在内容字段中查找并显示片段 + if keywords: + text_fields = { + "decision": ["t_title", "t_content", "t_basis", "t_conclusion"], + "pitfall": ["t_problem", "t_root_cause", "t_solution"], + "knowledge": ["t_topic", "t_summary"], + }.get(source, []) + for tf in text_fields: + val = r.get(tf, "") + if val: + snippet = highlight_keyword(val, keywords) + print(f" [{tf.replace('t_', '')}]: {snippet}") + print() + else: + print("[Search] 无匹配结果") + + conn.close() + + +# ═══════════════════════════════════════════════════════════ +# 导出功能 +# ═══════════════════════════════════════════════════════════ + + +def cmd_export(args): + """将指定项目的全部数据导出为 Markdown 文件。 + + 导出内容: 项目信息 + 技术决策 + 踩坑记录 + 知识卡 + 训练语料索引 + 输出路径: 脚本同目录下 {项目名}_export.md + + Args: + args.project: 项目名称或ID + """ + conn = get_conn() + pid = resolve_project_id(conn, args.project) + if pid is None: + print(f"[ERR] 未找到项目: {args.project}") + conn.close() + return + + # 获取项目基本信息 + proj = conn.execute("SELECT * FROM projects WHERE id = ?", (pid,)).fetchone() + # 获取该项目的决策 + decisions = conn.execute( + "SELECT * FROM decisions WHERE project_id = ? ORDER BY date DESC", (pid,) + ).fetchall() + # 获取该项目的踩坑记录 + pitfalls = conn.execute( + "SELECT * FROM pitfalls WHERE project_id = ? ORDER BY date DESC", (pid,) + ).fetchall() + + # 组装Markdown内容 + md = [] + md.append(f"# 项目: {proj['name']}\n") + md.append(f"- **状态**: {proj['status']}") + md.append(f"- **描述**: {proj['description']}") + md.append(f"- **关键里程碑**: {proj['key_milestone']}") + md.append(f"- **关联文件**: {proj['related_files']}") + md.append(f"- **创建时间**: {proj['created_at']}") + md.append(f"- **最后更新**: {proj['updated_at']}") + md.append("") + + md.append("---\n") + md.append(f"## 技术决策({len(decisions)} 条)\n") + for i, d in enumerate(decisions, 1): + md.append(f"### 决策 {i}: {d['title']}") + md.append(f"- **日期**: {d['date']}") + md.append(f"- **标签**: {d['tags']}") + md.append(f"\n**内容**:\n\n{d['content']}\n") + md.append(f"**依据**:\n\n{d['basis']}\n") + md.append(f"**结论**:\n\n{d['conclusion']}\n") + md.append("") + + md.append("---\n") + md.append(f"## 踩坑记录({len(pitfalls)} 条)\n") + for i, pf in enumerate(pitfalls, 1): + md.append(f"### 踩坑 {i}: {pf['problem'][:50]}") + md.append(f"- **日期**: {pf['date']}") + md.append(f"- **标签**: {pf['tags']}") + md.append(f"\n**问题**:\n\n{pf['problem']}\n") + md.append(f"**根因分析**:\n\n{pf['root_cause']}\n") + md.append(f"**解决方案**:\n\n{pf['solution']}\n") + md.append("") + + # ── 关联知识卡:按项目名模糊匹配 category,或者遍历全部知识卡 ── + # 获取全部知识卡,显示与项目名可能相关的(category包含项目关键词,或输出全部由用户自行筛选) + all_knowledge = conn.execute( + "SELECT * FROM knowledge_cards ORDER BY updated_at DESC" + ).fetchall() + + md.append("---\n") + md.append(f"## 知识卡({len(all_knowledge)} 条)\n") + if all_knowledge: + for i, kc in enumerate(all_knowledge, 1): + md.append(f"### 知识卡 {i}: {kc['topic']}") + md.append(f"- **分类**: {kc['category']}") + md.append(f"- **版本**: {kc['version']}") + md.append(f"- **关联文件**: {kc['file_path']}") + md.append(f"- **更新时间**: {kc['updated_at']}") + md.append(f"\n**摘要**:\n\n{kc['summary']}\n") + md.append("") + else: + md.append("(无)\n") + + # ── 训练语料索引:按项目名模糊匹配 tags ── + training_corpus_rows = conn.execute( + "SELECT * FROM training_corpus ORDER BY date DESC" + ).fetchall() + + md.append("---\n") + md.append(f"## 训练语料索引({len(training_corpus_rows)} 条)\n") + if training_corpus_rows: + for i, tc in enumerate(training_corpus_rows, 1): + md.append(f"### 语料 {i}") + md.append(f"- **日期**: {tc['date']}") + md.append(f"- **类型**: {tc['type']}") + md.append(f"- **标签**: {tc['tags']}") + md.append(f"- **文件路径**: {tc['file_path']}") + md.append(f"- **记录数**: {tc['record_count']}") + md.append(f"- **更新时间**: {tc['updated_at']}") + md.append("") + else: + md.append("(无)\n") + + md.append(f"> 导出时间: {now()}") + + # 写入文件 + filename = f"{proj['name'].replace(' ', '_')}_export.md" + output_path = os.path.join(os.path.dirname(DB_PATH), filename) + with open(output_path, "w", encoding="utf-8") as f: + f.write("\n".join(md)) + + print(f"[OK] 已导出到: {output_path}") + conn.close() + + +# ═══════════════════════════════════════════════════════════ +# 统计功能 +# ═══════════════════════════════════════════════════════════ + + +def cmd_stats(args): + """显示数据库统计信息概览。 + + 统计内容: 项目数量+状态分布, 各项目决策/踩坑数, + 全局总决策/总踩坑/总知识卡/总语料, + 最近更新的10条记录。 + """ + conn = get_conn() + + print("=" * 60) + print(" [STATS] 数据库统计") + print("=" * 60) + + # 项目概览 + projects = conn.execute( + "SELECT name, status, updated_at FROM projects ORDER BY status, updated_at DESC" + ).fetchall() + + print(f"\n[Projects] 项目概览(共 {len(projects)} 个):\n") + for p in projects: + # 统计该项目下的决策和踩坑数 + d_count = conn.execute( + "SELECT COUNT(*) AS cnt FROM decisions WHERE project_id = (SELECT id FROM projects WHERE name = ?)", + (p["name"],), + ).fetchone()["cnt"] + pf_count = conn.execute( + "SELECT COUNT(*) AS cnt FROM pitfalls WHERE project_id = (SELECT id FROM projects WHERE name = ?)", + (p["name"],), + ).fetchone()["cnt"] + status_icon = {"active": "[A]", "paused": "[P]", "archived": "[X]"}.get( + p["status"], "[?]" + ) + print(f" {status_icon} {p['name']}") + print( + f" 状态: {p['status']} | 决策: {d_count} | 踩坑: {pf_count} | 更新: {p['updated_at']}" + ) + + # 全局统计 + total_decisions = conn.execute("SELECT COUNT(*) AS cnt FROM decisions").fetchone()[ + "cnt" + ] + total_pitfalls = conn.execute("SELECT COUNT(*) AS cnt FROM pitfalls").fetchone()[ + "cnt" + ] + total_knowledge = conn.execute( + "SELECT COUNT(*) AS cnt FROM knowledge_cards" + ).fetchone()["cnt"] + total_corpus = conn.execute( + "SELECT COUNT(*) AS cnt FROM training_corpus" + ).fetchone()["cnt"] + + print("\n[Summary] 全局汇总:") + print(f" 总决策数: {total_decisions}") + print(f" 总踩坑记录: {total_pitfalls}") + print(f" 总知识卡: {total_knowledge}") + print(f" 总语料索引: {total_corpus}") + + # 最近更新 + print("\n[Recent] 最近更新的10条记录:") + recent = conn.execute(""" + SELECT 'decision' AS kind, title AS label, updated_at FROM decisions + UNION ALL + SELECT 'pitfall', problem, updated_at FROM pitfalls + UNION ALL + SELECT 'knowledge', topic, updated_at FROM knowledge_cards + ORDER BY updated_at DESC LIMIT 10 + """).fetchall() + for r in recent: + print(f" [{r['kind']}] {r['label'][:50]} — {r['updated_at']}") + + conn.close() + + +# ═══════════════════════════════════════════════════════════ +# 命令行界面 +# ═══════════════════════════════════════════════════════════ + + +def build_parser(): + """构建 argparse 命令行解析器,注册所有子命令和参数。 + + 命令树: + init | project {add,list,update,delete} | + decision {add,list,update,delete,show} | + pitfall {add,list,update,delete,show} | + knowledge {add,list,update,delete,show} | + corpus {add,list,update,delete,show} | + search [--keyword] [--project] [--tag] [--date-*] | + import --dir [--recursive] [--project] | + export --project | stats + Returns: + argparse.ArgumentParser: 配置好的解析器 + """ + parser = argparse.ArgumentParser( + prog="python digital_assets_manager.py", + description="个人项目与数字资产管理器 — SQLite本地数据库 + CLI", + formatter_class=argparse.RawDescriptionHelpFormatter, + epilog=textwrap.dedent("""\ + 使用示例: + # 初始化数据库 + python digital_assets_manager.py init + + # 项目管理 + python digital_assets_manager.py project add --name "电子宠物V1.0" --desc "ESP32驱动项目" + python digital_assets_manager.py project list + python digital_assets_manager.py project list --status active + python digital_assets_manager.py project update "电子宠物V1.0" --status paused + python digital_assets_manager.py project delete "电子宠物V1.0" + + # 决策管理 + python digital_assets_manager.py decision add --project "电子宠物V1.0" --date 2026-07-01 --title "选择主控芯片" --content "对比了ESP32-S3和ESP32-C3" --basis "需要USB OTG和WiFi+BLE共存" --conclusion "选用ESP32-S3-PICO-1" --tags "芯片选型,ESP32" + python digital_assets_manager.py decision list + python digital_assets_manager.py decision list --project "电子宠物V1.0" + python digital_assets_manager.py decision show 1 + python digital_assets_manager.py decision update 1 --conclusion "改用ESP32-S3-WROOM-1" + python digital_assets_manager.py decision delete 1 + + # 踩坑记录 + python digital_assets_manager.py pitfall add --project "电子宠物V1.0" --date 2026-07-15 --problem "TFT屏幕花屏" --root_cause "SPI时钟过高且杜邦线过长" --solution "降频到40MHz,缩短接线并加磁环" --tags "硬件,SPI,TFT" + python digital_assets_manager.py pitfall list + python digital_assets_manager.py pitfall show 1 + + # 知识卡 + python digital_assets_manager.py knowledge add --topic "ESP32-S3 GPIO12上拉问题" --category "ESP32" --summary "GPIO12为内部flash电压选择引脚,启动时必须为高电平" --file "docs/esp32_gpio12.md" + python digital_assets_manager.py knowledge list --category ESP32 + + # 训练语料 + python digital_assets_manager.py corpus add --date 2026-07-20 --type qa --tags "硬件调试" --file "corpus/qa_20260720.jsonl" --count 150 + + # 搜索 + python digital_assets_manager.py search --tag "ESP32" + python digital_assets_manager.py search --project "电子宠物" --date-from 2026-06-01 + + # 导出 + python digital_assets_manager.py export --project "电子宠物V1.0" + + # 统计 + python digital_assets_manager.py stats + """), + ) + + subparsers = parser.add_subparsers(dest="command", help="可用命令") + + # ── init ── + subparsers.add_parser("init", help="初始化数据库(建表+索引)") + + # ── project ── + p_project = subparsers.add_parser("project", help="项目管理") + p_project_subs = p_project.add_subparsers(dest="action") + + p_add = p_project_subs.add_parser("add", help="添加项目") + p_add.add_argument("--name", required=True, help="项目名称") + p_add.add_argument( + "--status", + default="active", + choices=["active", "paused", "archived"], + help="状态", + ) + p_add.add_argument("--desc", default="", help="描述") + p_add.add_argument("--milestone", default="", help="关键里程碑") + p_add.add_argument("--files", nargs="*", default=[], help="关联文件路径列表") + + p_list = p_project_subs.add_parser("list", help="列出项目") + p_list.add_argument( + "--status", choices=["active", "paused", "archived"], help="按状态过滤" + ) + + p_update = p_project_subs.add_parser("update", help="更新项目") + p_update.add_argument("project", help="项目名称或ID") + p_update.add_argument( + "--status", choices=["active", "paused", "archived"], help="新状态" + ) + p_update.add_argument("--desc", help="新描述") + p_update.add_argument("--milestone", help="新里程碑") + p_update.add_argument("--files", nargs="*", help="新关联文件列表") + + p_delete = p_project_subs.add_parser("delete", help="删除项目") + p_delete.add_argument("project", help="项目名称或ID") + p_delete.add_argument("--force", action="store_true", help="跳过确认直接删除") + + # ── decision ── + p_dec = subparsers.add_parser("decision", help="决策管理") + p_dec_subs = p_dec.add_subparsers(dest="action") + + p_da = p_dec_subs.add_parser("add", help="添加决策") + p_da.add_argument("--project", required=True, help="项目名称或ID") + p_da.add_argument("--date", required=True, help="决策日期 (YYYY-MM-DD)") + p_da.add_argument("--title", required=True, help="决策标题") + p_da.add_argument("--content", default="", help="决策内容") + p_da.add_argument("--basis", default="", help="决策依据") + p_da.add_argument("--conclusion", default="", help="结论") + p_da.add_argument("--tags", default="", help="标签(逗号分隔)") + + p_dl = p_dec_subs.add_parser("list", help="列出决策") + p_dl.add_argument("--project", help="按项目过滤") + + p_du = p_dec_subs.add_parser("update", help="更新决策") + p_du.add_argument("id", type=int, help="决策ID") + p_du.add_argument("--date", help="新日期") + p_du.add_argument("--title", help="新标题") + p_du.add_argument("--content", help="新内容") + p_du.add_argument("--basis", help="新依据") + p_du.add_argument("--conclusion", help="新结论") + p_du.add_argument("--tags", help="新标签") + + p_dd = p_dec_subs.add_parser("delete", help="删除决策") + p_dd.add_argument("id", type=int, help="决策ID") + + p_ds = p_dec_subs.add_parser("show", help="查看决策详情") + p_ds.add_argument("id", type=int, help="决策ID") + + # ── pitfall ── + p_pf = subparsers.add_parser("pitfall", help="踩坑记录管理") + p_pf_subs = p_pf.add_subparsers(dest="action") + + p_pa = p_pf_subs.add_parser("add", help="添加踩坑记录") + p_pa.add_argument("--project", required=True, help="项目名称或ID") + p_pa.add_argument("--date", required=True, help="日期 (YYYY-MM-DD)") + p_pa.add_argument("--problem", required=True, help="问题描述") + p_pa.add_argument("--root_cause", default="", help="根因分析") + p_pa.add_argument("--solution", default="", help="解决方案") + p_pa.add_argument("--tags", default="", help="标签") + + p_pl = p_pf_subs.add_parser("list", help="列出踩坑记录") + p_pl.add_argument("--project", help="按项目过滤") + + p_pu = p_pf_subs.add_parser("update", help="更新踩坑记录") + p_pu.add_argument("id", type=int, help="记录ID") + p_pu.add_argument("--date", help="新日期") + p_pu.add_argument("--problem", help="新问题描述") + p_pu.add_argument("--root_cause", help="新根因分析") + p_pu.add_argument("--solution", help="新解决方案") + p_pu.add_argument("--tags", help="新标签") + + p_pd = p_pf_subs.add_parser("delete", help="删除踩坑记录") + p_pd.add_argument("id", type=int, help="记录ID") + + p_ps = p_pf_subs.add_parser("show", help="查看踩坑记录详情") + p_ps.add_argument("id", type=int, help="记录ID") + + # ── knowledge ── + p_kc = subparsers.add_parser("knowledge", help="知识卡管理") + p_kc_subs = p_kc.add_subparsers(dest="action") + + p_ka = p_kc_subs.add_parser("add", help="添加知识卡") + p_ka.add_argument("--topic", required=True, help="主题") + p_ka.add_argument("--category", default="", help="分类") + p_ka.add_argument("--file", default="", help="关联文件路径") + p_ka.add_argument("--summary", default="", help="摘要") + p_ka.add_argument("--version", default="1.0", help="版本号") + + p_kl = p_kc_subs.add_parser("list", help="列出知识卡") + p_kl.add_argument("--category", help="按分类过滤") + + p_ku = p_kc_subs.add_parser("update", help="更新知识卡") + p_ku.add_argument("id", type=int, help="知识卡ID") + p_ku.add_argument("--topic", help="新主题") + p_ku.add_argument("--category", help="新分类") + p_ku.add_argument("--file", help="新文件路径") + p_ku.add_argument("--summary", help="新摘要") + p_ku.add_argument("--version", help="新版本号") + + p_kd = p_kc_subs.add_parser("delete", help="删除知识卡") + p_kd.add_argument("id", type=int, help="知识卡ID") + + p_ks = p_kc_subs.add_parser("show", help="查看知识卡详情") + p_ks.add_argument("id", type=int, help="知识卡ID") + + # ── corpus ── + p_cp = subparsers.add_parser("corpus", help="训练语料管理") + p_cp_subs = p_cp.add_subparsers(dest="action") + + p_ca = p_cp_subs.add_parser("add", help="添加语料索引") + p_ca.add_argument("--date", required=True, help="日期 (YYYY-MM-DD)") + p_ca.add_argument( + "--type", required=True, choices=["qa", "decision", "pitfall"], help="语料类型" + ) + p_ca.add_argument("--tags", default="", help="标签") + p_ca.add_argument("--file", default="", help="JSONL文件路径") + p_ca.add_argument("--count", type=int, default=0, help="记录数") + + p_cl = p_cp_subs.add_parser("list", help="列出语料索引") + p_cl.add_argument( + "--type", choices=["qa", "decision", "pitfall"], help="按类型过滤" + ) + + p_cu = p_cp_subs.add_parser("update", help="更新语料索引") + p_cu.add_argument("id", type=int, help="记录ID") + p_cu.add_argument("--date", help="新日期") + p_cu.add_argument("--type", choices=["qa", "decision", "pitfall"], help="新类型") + p_cu.add_argument("--tags", help="新标签") + p_cu.add_argument("--file", help="新文件路径") + p_cu.add_argument("--count", type=int, help="新记录数") + + p_cd = p_cp_subs.add_parser("delete", help="删除语料索引") + p_cd.add_argument("id", type=int, help="记录ID") + + p_cs = p_cp_subs.add_parser("show", help="查看语料索引详情") + p_cs.add_argument("id", type=int, help="记录ID") + + # ── search ── + p_search = subparsers.add_parser("search", help="全局搜索") + p_search.add_argument("--keyword", help="全文搜索关键词(空格分隔,AND逻辑)") + p_search.add_argument("--project", help="项目名(模糊匹配)") + p_search.add_argument("--tag", help="标签(模糊匹配)") + p_search.add_argument("--date-from", help="起始日期 (YYYY-MM-DD)") + p_search.add_argument("--date-to", help="截止日期 (YYYY-MM-DD)") + + # ── import ── + p_import = subparsers.add_parser("import", help="批量导入文件") + p_import.add_argument("--dir", required=True, help="扫描目录路径") + p_import.add_argument( + "--project", help="指定项目名(覆盖自动检测,全部归入该项目)" + ) + p_import.add_argument( + "--recursive", + action="store_true", + help="递归扫描子文件夹,每个子文件夹作为一个项目", + ) + + # ── export ── + p_export = subparsers.add_parser("export", help="导出项目为Markdown") + p_export.add_argument("--project", required=True, help="项目名称或ID") + + # ── stats ── + subparsers.add_parser("stats", help="显示统计信息") + + return parser + + +def main(): + parser = build_parser() + args = parser.parse_args() + + if args.command is None: + parser.print_help() + return + + # 除了 init 之外,所有数据库操作前检查是否已初始化 + if args.command != "init" and not check_db_initialized(): + return + + # 路由到对应处理函数 + if args.command == "init": + init_db() + + elif args.command == "project": + if args.action == "add": + cmd_project_add(args) + elif args.action == "list": + cmd_project_list(args) + elif args.action == "update": + cmd_project_update(args) + elif args.action == "delete": + cmd_project_delete(args) + else: + print("[ERR] 未知 project 子命令,可用: add / list / update / delete") + + elif args.command == "decision": + if args.action == "add": + cmd_decision_add(args) + elif args.action == "list": + cmd_decision_list(args) + elif args.action == "update": + cmd_decision_update(args) + elif args.action == "delete": + cmd_decision_delete(args) + elif args.action == "show": + cmd_decision_show(args) + else: + print( + "[ERR] 未知 decision 子命令,可用: add / list / update / delete / show" + ) + + elif args.command == "pitfall": + if args.action == "add": + cmd_pitfall_add(args) + elif args.action == "list": + cmd_pitfall_list(args) + elif args.action == "update": + cmd_pitfall_update(args) + elif args.action == "delete": + cmd_pitfall_delete(args) + elif args.action == "show": + cmd_pitfall_show(args) + else: + print( + "[ERR] 未知 pitfall 子命令,可用: add / list / update / delete / show" + ) + + elif args.command == "knowledge": + if args.action == "add": + cmd_knowledge_add(args) + elif args.action == "list": + cmd_knowledge_list(args) + elif args.action == "update": + cmd_knowledge_update(args) + elif args.action == "delete": + cmd_knowledge_delete(args) + elif args.action == "show": + cmd_knowledge_show(args) + else: + print( + "[ERR] 未知 knowledge 子命令,可用: add / list / update / delete / show" + ) + + elif args.command == "corpus": + if args.action == "add": + cmd_corpus_add(args) + elif args.action == "list": + cmd_corpus_list(args) + elif args.action == "update": + cmd_corpus_update(args) + elif args.action == "delete": + cmd_corpus_delete(args) + elif args.action == "show": + cmd_corpus_show(args) + else: + print("[ERR] 未知 corpus 子命令,可用: add / list / update / delete / show") + + elif args.command == "search": + cmd_search(args) + + elif args.command == "import": + cmd_import(args) + + elif args.command == "export": + cmd_export(args) + + elif args.command == "stats": + cmd_stats(args) + + else: + print(f"[ERR] 未知命令: {args.command}") + parser.print_help() + + +if __name__ == "__main__": + main() diff --git a/digital-asset-manager/digital_assets_ui.py b/digital-asset-manager/digital_assets_ui.py new file mode 100644 index 0000000..075f025 --- /dev/null +++ b/digital-asset-manager/digital_assets_ui.py @@ -0,0 +1,1555 @@ +#!/usr/bin/env python3 +""" +数字资产管理器 v3 — Tkinter 桌面版 +================================== +三大资产分类:项目资产 / 工作日志 / 训练语料 +六个标签页:导入 | 项目 | 日志 | 语料 | 搜索 | 导出 (MD + JSONL) +""" + +import json +import os +import sys +import threading +import tkinter as tk +from datetime import datetime +from tkinter import filedialog, messagebox, ttk + + +def get_app_dir(): + """获取应用根目录,兼容 PyInstaller 打包和源码运行。 + + PyInstaller 打包后 sys.frozen=True,EXE路径=sys.executable 所在目录; + 源码运行时,路径=脚本文件所在目录。 + """ + return ( + os.path.dirname(sys.executable) + if getattr(sys, "frozen", False) + else os.path.dirname(os.path.abspath(__file__)) + ) + + +APP_DIR = get_app_dir() +sys.path.insert(0, APP_DIR) +import digital_assets_manager as dam + +dam.DB_PATH = os.path.join(APP_DIR, "digital_assets.db") +# ═══════════════════════ 数据库工具 ═══════════════════════ + + +def db_conn(): + """获取数据库连接(快捷方式,调用 digital_assets_manager.get_conn)。""" + return dam.get_conn() + + +def project_names(): + """获取所有项目名称列表,按更新时间降序排列。 + + Returns: + list[str]: 项目名列表,供下拉框使用 + """ + conn = db_conn() + try: + return [ + r["name"] + for r in conn.execute( + "SELECT name FROM projects ORDER BY updated_at DESC" + ).fetchall() + ] + finally: + conn.close() + + +# ═══════════════════════ 主窗口 ═══════════════════════ + + +class App(tk.Tk): + """主窗口,管理导航和6个功能面板的切换。 + + 面板索引: + 0=导入归档 | 1=项目资产 | 2=工作日志 | + 3=训练语料 | 4=全局搜索 | 5=导出报告 + + 左侧深蓝导航栏 + 右侧功能面板区。切换面板时刷新数据并高亮当前按钮。 + """ + def __init__(self): + super().__init__() + self.title("数字资产管理器 — 资料封存与速查") + self.geometry("1060x680") + self.minsize(880, 520) + dam.init_db() + + # ── 生成窗口图标 ── + try: + icon = tk.PhotoImage(width=32, height=32) + for y in range(32): + for x in range(32): + # 渐变蓝色方块,中心金色D字简标 + r, g, b = 30 + x * 3, 60 + y * 3, 140 + if 8 <= x <= 24 and 8 <= y <= 24: + r, g, b = 220, 180, 40 # 金色中心 + if ((x - 16) ** 2 + (y - 16) ** 2) > 144: + r, g, b = r // 3, g // 3, b // 3 # 圆角效果 + icon.put(f"#{r:02x}{g:02x}{b:02x}", (x, y)) + self.iconphoto(True, icon) + except Exception: + pass + + # ── 全局样式 ── + s = ttk.Style() + try: + s.theme_use("vista") + except Exception: + s.theme_use("clam") + + # 配色 + BG = "#f5f6f8" + ACCENT = "#3b6fb6" + ACCENT_DARK = "#28518a" + s.configure("TFrame", background=BG) + s.configure("TLabel", background=BG, font=("Microsoft YaHei", 9)) + s.configure("TLabelframe", background=BG, font=("Microsoft YaHei", 9)) + s.configure( + "TLabelframe.Label", background=BG, font=("Microsoft YaHei", 9, "bold") + ) + s.configure("TButton", font=("Microsoft YaHei", 9), padding=(12, 4)) + s.configure( + "Accent.TButton", + background=ACCENT, + foreground="white", + font=("Microsoft YaHei", 9, "bold"), + ) + + # 导航按钮样式 + s.configure( + "Nav.TButton", font=("Microsoft YaHei", 10), padding=(8, 6), anchor=tk.W + ) + s.map("Nav.TButton", background=[("active", "#dee8f5")]) + + # 标题样式 + s.configure( + "Title.TLabel", + font=("Microsoft YaHei", 14, "bold"), + foreground=ACCENT_DARK, + background=BG, + ) + s.configure( + "Subtitle.TLabel", + font=("Microsoft YaHei", 9), + foreground="#666", + background=BG, + ) + s.configure( + "Card.TLabelframe", background="white", relief=tk.RIDGE, borderwidth=1 + ) + s.configure( + "Card.TLabelframe.Label", + background="white", + font=("Microsoft YaHei", 9, "bold"), + foreground=ACCENT_DARK, + ) + + self.configure(bg=BG) + self.bg = BG + + # ── 左侧导航 ── + nav = tk.Frame(self, bg="#283548", width=140) + nav.pack(side=tk.LEFT, fill=tk.Y) + nav.pack_propagate(False) + + # 导航按钮 + tabs = [ + (" 📥 导入归档", 0), + (" 📁 项目资产", 1), + (" 📔 工作日志", 2), + (" 📚 训练语料", 3), + (" 🔍 全局搜索", 4), + (" 📤 导出报告", 5), + ] + self.nav_btns = [] + for label, idx in tabs: + btn = tk.Button( + nav, + text=label, + font=("Microsoft YaHei", 10), + bg="#283548", + fg="#b0c4de", + activebackground="#3b6fb6", + activeforeground="white", + bd=0, + padx=12, + pady=8, + anchor=tk.W, + cursor="hand2", + relief=tk.FLAT, + command=lambda i=idx: self.switch(i), + ) + btn.pack(fill=tk.X) + btn.bind( + "", + lambda e, b=btn: b.configure( + bg="#344863" if not getattr(b, "_active", False) else "#3b6fb6" + ), + ) + btn.bind( + "", + lambda e, b=btn: b.configure( + bg="#3b6fb6" if getattr(b, "_active", False) else "#283548" + ), + ) + self.nav_btns.append(btn) + + # 底部:Logo + 版本号 + tk.Label(nav, text="v3.0", font=("", 8), bg="#283548", fg="#566a80").pack( + side=tk.BOTTOM, pady=2 + ) + logo_frame = tk.Frame(nav, bg="#1e2a3a", height=64) + logo_frame.pack(side=tk.BOTTOM, fill=tk.X) + logo_frame.pack_propagate(False) + tk.Label(logo_frame, text="📦", font=("", 20), bg="#1e2a3a", fg="white").pack( + pady=(10, 0) + ) + tk.Label( + logo_frame, + text="数字资产", + font=("Microsoft YaHei", 8, "bold"), + bg="#1e2a3a", + fg="#8eb4e3", + ).pack() + + # ── 右侧内容区 ── + self.content = tk.Frame(self, bg=BG) + self.content.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + self.panels = [ + ImportPanel(self.content, BG), + ProjectPanel(self.content, BG), + LogPanel(self.content, BG), + CorpusPanel(self.content, BG), + SearchPanel(self.content, BG), + ExportPanel(self.content, BG), + ] + self.switch(0) + + def switch(self, idx): + """切换到指定索引的面板。 + + 同时更新导航按钮高亮状态(_active 标记)并刷新目标面板数据。 + 非目标面板从布局中移除(pack_forget)以释放资源。 + """ + for i, btn in enumerate(self.nav_btns): + if i == idx: + btn.configure(bg="#3b6fb6", fg="white") + btn._active = True + else: + btn.configure(bg="#283548", fg="#b0c4de") + btn._active = False + for i, p in enumerate(self.panels): + if i == idx: + p.pack(fill=tk.BOTH, expand=True) + p.refresh() + else: + p.pack_forget() + + +# ═══════════════════════ 1. 导入(三子系统) ═══════════════════════ + + +class ImportPanel(ttk.Frame): + """导入归档面板:三个独立导入入口 + 实时日志 + 历史记录。 + + 三入口分别对应: 项目资产 / 工作日志 / 训练语料。 + 每个入口有独立的文件夹选择、递归开关、项目名(仅项目资产)、开始导入按钮。 + 导入在后台线程执行数据库操作,通过 self.after() 安全更新UI。 + """ + def __init__(self, parent, bg="#f5f6f8"): + super().__init__(parent) + self.bg = bg + self.build() + + def _make_section(self, parent, icon, title, desc): + """构建一个导入子面板。 + + 一行布局: [文件夹标签] [路径输入框] [浏览] [递归勾选] [项目名(可选)] [开始导入] + + Returns: + StringVar: 文件夹路径变量 + """ + """构建导入子面板:文件夹 [输入框] [浏览] [开始导入] 一行搞定""" + f = ttk.LabelFrame(parent, text=f"{icon} {title}", padding=6) + f.pack(fill=tk.X, pady=3, padx=4) + + ttk.Label(f, text=desc, foreground="gray").pack(anchor=tk.W, pady=(0, 4)) + + r1 = ttk.Frame(f) + r1.pack(fill=tk.X) + ttk.Label(r1, text="文件夹:").pack(side=tk.LEFT) + dir_var = tk.StringVar() + ttk.Entry(r1, textvariable=dir_var, width=42).pack(side=tk.LEFT, padx=4) + ttk.Button( + r1, + text="选文件夹", + width=8, + command=lambda: dir_var.set(filedialog.askdirectory() or dir_var.get()), + ).pack(side=tk.LEFT, padx=(0, 4)) + # 文件类型过滤(训练语料仅 .jsonl,其它类型放宽) + if title == "训练语料": + _ftypes = [("JSONL 语料", "*.jsonl"), ("所有文件", "*.*")] + else: + _ftypes = [ + ("文本/代码", "*.md;*.txt;*.py;*.c;*.h;*.cpp;*.hpp;*.json;*.csv;*.log;*.yaml;*.yml;*.ini;*.cfg;*.toml;*.jsonl"), + ("二进制/文档/其它", "*.pdf;*.docx;*.xlsx;*.pptx;*.png;*.jpg;*.jpeg;*.gif;*.bmp;*.svg;*.bin;*.hex;*.elf;*.uf2;*.sch;*.brd;*.kicad_pcb;*.kicad_sch;*.zip;*.rar;*.7z;*.gz"), + ("所有文件", "*.*"), + ] + ttk.Button( + r1, + text="选文件", + width=6, + command=lambda: dir_var.set( + filedialog.askopenfilename(filetypes=_ftypes) or dir_var.get() + ), + ).pack(side=tk.LEFT, padx=(0, 4)) + + rec_var = tk.BooleanVar(value=True) + proj_var = None + btn = ttk.Button(r1, text="开始导入") + btn.pack(side=tk.RIGHT, padx=(4, 0)) + ttk.Checkbutton(r1, text="递归", variable=rec_var).pack(side=tk.RIGHT, padx=4) + if title == "项目资产": + proj_var = tk.StringVar() + ttk.Entry(r1, textvariable=proj_var, width=12).pack(side=tk.RIGHT) + ttk.Label(r1, text="项目名:").pack(side=tk.RIGHT, padx=2) + + btn.configure( + command=lambda dv=dir_var, rv=rec_var, pv=proj_var, tw=title, b=btn: ( + self._do_import( + dv.get().strip(), rv.get(), pv.get().strip() if pv else None, tw, b + ) + ) + ) + # 登记该导入区的路径框,便于导入完成后清空 + self.path_vars[title] = dir_var + return dir_var + + def build(self): + """构建导入面板UI:标题 + 三个导入区 + 实时日志 + 导入历史表格。""" + tk.Label( + self, + text="导入归档", + font=("Microsoft YaHei", 14, "bold"), + fg="#28518a", + bg=self.bg, + ).pack(pady=(12, 0), anchor=tk.W) + tk.Label( + self, + text="三种资产分开导入,互不混淆", + font=("Microsoft YaHei", 9), + fg="#888", + bg=self.bg, + ).pack(anchor=tk.W) + + # 共享日志区(先创建,三个导入区共用) + lf = ttk.LabelFrame(self, text="实时日志", padding=4) + lf.pack(fill=tk.BOTH, expand=False, pady=6, padx=4) + self.log = tk.Text(lf, height=6, font=("Consolas", 9), wrap=tk.WORD) + self.log.pack(fill=tk.BOTH, side=tk.LEFT) + ttk.Scrollbar(lf, command=self.log.yview).pack(fill=tk.Y, side=tk.RIGHT) + + # 路径框索引(按 import_type 存,导入完成后清空对应框) + self.path_vars = {} + # 三个子面板(导入入口) + self._make_section( + self, + "📁", + "项目资产", + "导入整个项目文件夹,子文件夹=项目,所有文件归入对应项目", + ) + self._make_section( + self, "📔", "工作日志", "导入工作日志文件夹,所有文件归入「工作日志」时间线" + ) + self._make_section( + self, "📚", "训练语料", "导入 .jsonl Q&A 文件,自动解析存入语料库" + ) + + # 历史记录区 + hf = ttk.LabelFrame(self, text="导入历史(按天)", padding=4) + hf.pack(fill=tk.BOTH, expand=True, padx=4) + cols = ("日期", "类型", "项目", "文件数", "摘要", "文件夹路径") + self.hist = ttk.Treeview(hf, columns=cols, show="headings", height=8) + w = { + "日期": 85, + "类型": 65, + "项目": 100, + "文件数": 50, + "摘要": 150, + "文件夹路径": 250, + } + for c in cols: + self.hist.heading(c, text=c) + self.hist.column(c, width=w.get(c, 70), anchor=tk.W) + self.hist.pack(fill=tk.BOTH, expand=True, side=tk.LEFT) + ttk.Scrollbar(hf, command=self.hist.yview).pack(fill=tk.Y, side=tk.RIGHT) + + def _show_history(self): + """从数据库加载并显示导入历史""" + self.hist.delete(*self.hist.get_children()) + try: + conn = dam.get_conn() + rows = conn.execute( + "SELECT import_date, import_type, project_name, file_count, summary, folder_path FROM import_history ORDER BY created_at DESC LIMIT 100" + ).fetchall() + conn.close() + for r in rows: + self.hist.insert( + "", + tk.END, + values=( + r["import_date"], + r["import_type"], + r["project_name"], + r["file_count"], + r["summary"], + r["folder_path"], + ), + ) + except Exception: + pass + + def refresh(self): + self._show_history() + + def _save_history( + self, import_type, folder_path, project_name, file_count, summary + ): + """写入一条导入历史记录到 import_history 表,记录日期/类型/源路径/项目/文件数/摘要。""" + try: + conn = dam.get_conn() + conn.execute( + "INSERT INTO import_history (import_date, import_type, folder_path, project_name, file_count, summary, created_at) VALUES (?,?,?,?,?,?,?)", + ( + datetime.now().strftime("%Y-%m-%d"), + import_type, + folder_path, + project_name or "", + file_count, + summary, + dam.now(), + ), + ) + conn.commit() + conn.close() + except Exception: + pass + + def _log(self, txt): + """主线程安全写日志:将文本追加到实时日志区并滚动到底部。 + + 通过 self.after() 从后台线程调度回主线程执行,避免 Tkinter 线程安全问题。 + """ + self.log.insert(tk.END, txt + "\n") + self.log.see(tk.END) + + def _safe_import_files( + self, dir_path, recursive, project_name, import_type, log_line, done + ): + """带异常保护的文件导入包装器,确保按钮总能恢复。""" + try: + self._import_files( + dir_path, recursive, project_name, import_type, log_line, done + ) + except Exception as e: + log_line(f"[ERR] 导入异常: {e}") + done() + + def _safe_import_corpus(self, dir_path, log_line, done): + """带异常保护的语料导入包装器,确保按钮总能恢复。""" + try: + self._import_corpus(dir_path, log_line, done) + except Exception as e: + log_line(f"[ERR] 语料导入异常: {e}") + done() + + def _on_import_done(self): + """导入完成回调(主线程安全,由 self.after() 调度)。""" + s = getattr(self, "stats", {"imported": 0, "skipped": 0, "project": "", "note": ""}) + it = getattr(self, "_current_import_type", "") + summary = s.get("note", f"成功{s['imported']}条, 跳过{s['skipped']}条") + # 恢复按钮 + btn = getattr(self, "_current_btn", None) + if btn: + btn.configure(state="normal", text="开始导入") + self.log.insert(tk.END, f"\n[{it}] {summary}\n") + self._save_history( + it, + getattr(self, "_current_dir", ""), + s.get("project", ""), + s["imported"], + summary, + ) + self._show_history() + # 导入完成清空对应路径框,避免残留旧路径误操作 + pv = getattr(self, "path_vars", {}).get(it) + if pv is not None: + pv.set("") + + def _do_import(self, dir_path, recursive, project_name, import_type, btn): + """执行导入:验证路径 → 启动后台线程 → 实时日志 → 完成回调。 + + Args: + dir_path: 源文件夹路径 + recursive: 是否递归子目录 + project_name: 项目名(None=自动检测) + import_type: "项目资产"/"工作日志"/"训练语料" + btn: 触发按钮(导入完成后恢复状态) + """ + if not dir_path: + messagebox.showwarning("提示", "请选择文件夹或文件") + return + if not (os.path.isdir(dir_path) or os.path.isfile(dir_path)): + messagebox.showwarning("提示", "路径不存在") + return + self.log.delete("1.0", tk.END) + self.log.insert(tk.END, f"[{import_type}] 开始导入: {dir_path}\n{'=' * 50}\n") + btn.configure(state="disabled", text="导入中...") + self.stats = {"imported": 0, "skipped": 0, "project": ""} + self._current_dir = dir_path + self._current_import_type = import_type + self._current_btn = btn + + def log_line(t): + """线程安全:通过 after() 调度到主线程写日志""" + self.after(0, self._log, t) + + def done(): + """线程安全:通过 after() 调度到主线程完成导入""" + self.stats["note"] = f"成功{self.stats['imported']}条, 跳过{self.stats['skipped']}条" + self.after(0, self._on_import_done) + + if import_type == "训练语料": + threading.Thread( + target=self._safe_import_corpus, args=(dir_path, log_line, done), daemon=True + ).start() + else: + threading.Thread( + target=self._safe_import_files, + args=(dir_path, recursive, project_name, import_type, log_line, done), + daemon=True, + ).start() + + def _import_files( + self, dir_path, recursive, project_name, import_type, log_line, done + ): + """后台线程执行文件导入:收集文件→确保项目存在→逐文件读内容→写入 knowledge_cards。 + + 二进制文件只存元数据(路径+类型标签),文本文件读全文(超10000字截断并告警)。 + import_type 控制 category: "工作日志"→归入工作日志, 项目资产→category=项目名。 + """ + text_ext = ( + ".md", + ".txt", + ".jsonl", + ".py", + ".c", + ".h", + ".cpp", + ".hpp", + ".json", + ".csv", + ".log", + ".yaml", + ".yml", + ".ini", + ".cfg", + ".toml", + ) + binary_ext = ( + ".pdf", + ".docx", + ".xlsx", + ".pptx", + ".png", + ".jpg", + ".jpeg", + ".gif", + ".bmp", + ".svg", + ".bin", + ".hex", + ".elf", + ".uf2", + ".sch", + ".brd", + ".kicad_pcb", + ".kicad_sch", + ".zip", + ".rar", + ".7z", + ".gz", + ) + all_ext = text_ext + binary_ext + + # 收集文件(支持单文件或目录;目录使用 os.walk 实现真正递归) + file_list = [] + if os.path.isfile(dir_path): + # 单文件导入:校验扩展名后直接入列 + fn = os.path.basename(dir_path) + if not fn.lower().endswith(all_ext): + log_line(f"[ERR] 不支持的文件类型: {fn}") + done() + return + file_list.append((project_name or "未归类", fn, dir_path)) + elif recursive and import_type == "项目资产": + # 先获取顶级子目录名→项目名映射 + top_dirs = {} + for entry in sorted(os.listdir(dir_path)): + sub = os.path.join(dir_path, entry) + if os.path.isdir(sub): + top_dirs[os.path.abspath(sub)] = project_name or entry + # 递归遍历所有文件,按所属顶级目录分配项目名 + for root, dirs, files in os.walk(dir_path): + dirs.sort() + abs_root = os.path.abspath(root) + # 找到该文件所属的顶级项目 + owner = None + for td, pn in top_dirs.items(): + if abs_root == td or abs_root.startswith(td + os.sep): + owner = pn + break + for fn in sorted(files): + fp = os.path.join(root, fn) + if os.path.isfile(fp) and fn.lower().endswith(all_ext): + file_list.append((owner or project_name or "未归类", fn, fp)) + else: + for root, dirs, files in os.walk(dir_path): + dirs.sort() + if not recursive: + dirs.clear() # 不递归:清空子目录列表 + for fn in sorted(files): + fp = os.path.join(root, fn) + if os.path.isfile(fp) and fn.lower().endswith(all_ext): + pn = ( + "工作日志" + if import_type == "工作日志" + else (project_name or os.path.basename(dir_path)) + ) + file_list.append((pn, fn, fp)) + + if not file_list: + log_line("[WARN] 未找到可导入文件") + done() + return + + # 确保项目存在 + conn = dam.get_conn() + proj_cache = {} + for pn, _, _ in file_list: + if pn in proj_cache: + continue + r = conn.execute("SELECT id FROM projects WHERE name=?", (pn,)).fetchone() + if r: + proj_cache[pn] = r["id"] + else: + t = dam.now() + conn.execute( + "INSERT INTO projects (name,status,description,created_at,updated_at) VALUES(?,'active','封存',?,?)", + (pn, t, t), + ) + conn.commit() + proj_cache[pn] = conn.execute("SELECT last_insert_rowid()").fetchone()[ + 0 + ] + log_line(f"[OK] 创建项目: {pn}") + + imported = skipped = 0 + for idx, (pn, fn, fp) in enumerate(file_list, 1): + title = os.path.splitext(fn)[0] + ext = os.path.splitext(fn)[1].lower() + is_bin = fn.lower().endswith(binary_ext) + existing = conn.execute( + "SELECT id FROM knowledge_cards WHERE topic=? AND file_path=?", + (title, fp), + ).fetchone() + if existing: + skipped += 1 + log_line(f" [{idx}/{len(file_list)}] [SKIP] {fn}") + continue + + t = dam.now() + mtime = datetime.fromtimestamp(os.path.getmtime(fp)).strftime("%Y-%m-%d") + if is_bin: + cat_map = { + ".pdf": "PDF", + ".docx": "Word", + ".xlsx": "Excel", + ".png": "图片", + ".jpg": "图片", + ".jpeg": "图片", + ".gif": "图片", + ".bmp": "图片", + ".svg": "矢量图", + ".bin": "固件", + ".hex": "固件", + ".elf": "固件", + ".uf2": "固件", + ".sch": "原理图", + ".brd": "PCB", + ".kicad_pcb": "KiCad", + ".kicad_sch": "KiCad", + ".zip": "压缩包", + ".rar": "压缩包", + ".7z": "压缩包", + ".gz": "压缩包", + } + cn = cat_map.get(ext, "文档") + cat = "工作日志" if import_type == "工作日志" else pn + conn.execute( + "INSERT INTO knowledge_cards (topic,category,file_path,summary,version,created_at,updated_at) VALUES(?,?,?,?,?,?,?)", + (title, cat, fp, f"[{cn}] {fp}", mtime, t, t), + ) + else: + with open(fp, "r", encoding="utf-8", errors="replace") as fh: + raw = fh.read() + cat = "工作日志" if import_type == "工作日志" else pn + stored = raw[:10000] + conn.execute( + "INSERT INTO knowledge_cards (topic,category,file_path,summary,version,created_at,updated_at) VALUES(?,?,?,?,?,?,?)", + (title, cat, fp, stored, mtime, t, t), + ) + if len(raw) > 10000: + log_line(f" [WARN] {fn}: 内容{len(raw)}字, 仅存前10000字") + imported += 1 + log_line(f" [{idx}/{len(file_list)}] [OK] {fn}") + + conn.commit() + conn.close() + self.stats = { + "imported": imported, + "skipped": skipped, + "project": project_name or dir_path, + } + log_line(f"\n成功 {imported} 条, 跳过 {skipped} 条") + done() + + def _import_corpus(self, dir_path, log_line, done): + """在后台线程执行训练语料的 JSONL 导入。 + + 每个 .jsonl 文件→一条 training_corpus 记录,record_count=有效行数。 + 自动统计 QA/decision/pitfall/other 四种类型数量,type 按最多类型设置。 + + Args: + dir_path: 包含 .jsonl 文件的目录 + log_line: 日志回调 + done: 完成回调 + """ + """导入训练语料:扫描 .jsonl,逐行解析。一个文件=一条记录,record_count=有效行数""" + # 支持单文件或目录导入 + if os.path.isfile(dir_path): + if not dir_path.lower().endswith(".jsonl"): + log_line("[ERR] 训练语料仅支持 .jsonl 文件") + done() + return + base_dir = os.path.dirname(dir_path) + files = [os.path.basename(dir_path)] + else: + files = sorted( + [ + f + for f in os.listdir(dir_path) + if f.lower().endswith(".jsonl") + and os.path.isfile(os.path.join(dir_path, f)) + ] + ) + base_dir = dir_path + if not files: + log_line("[WARN] 未找到 .jsonl 文件") + done() + return + + conn = dam.get_conn() + imported = skipped = 0 + for fn in files: + fp = os.path.join(base_dir, fn) + existing = conn.execute("SELECT id FROM training_corpus WHERE file_path=?", (fp,)).fetchone() + if existing: + skipped += 1 + log_line(f" [SKIP] {fn}") + continue + with open(fp, "r", encoding="utf-8", errors="replace") as fh: + raw = fh.read() + qa_count = dec_count = pf_count = other_count = 0 + tags_set = set() + dates = [] + for line in raw.strip().split("\n"): + line = line.strip() + if not line: + continue + try: + obj = json.loads(line) + except json.JSONDecodeError: + continue + if "question" in obj and "answer" in obj: + qa_count += 1 + elif "decision" in obj or "conclusion" in obj: + dec_count += 1 + elif "problem" in obj or "solution" in obj: + pf_count += 1 + else: + other_count += 1 + _tags = obj.get("tags") + if _tags: + if isinstance(_tags, list): + tags_set.update(str(t) for t in _tags) + elif isinstance(_tags, str): + tags_set.update( + t.strip() for t in _tags.split(",") if t.strip() + ) + else: + tags_set.add(str(_tags)) + if obj.get("date"): + dates.append(obj["date"]) + total_valid = qa_count + dec_count + pf_count + other_count + if total_valid == 0: + skipped += 1 + log_line(f" [SKIP] {fn} (无有效行)") + continue + + tags = ",".join(sorted(tags_set)[:5]) if tags_set else "" + date = dates[0] if dates else dam.now()[:10] + # 按多数类型设 type + if qa_count >= dec_count and qa_count >= pf_count and qa_count > 0: + best_type = "qa" + elif dec_count >= pf_count and dec_count > 0: + best_type = "decision" + elif pf_count > 0: + best_type = "pitfall" + else: + best_type = "qa" + t = dam.now() + conn.execute( + "INSERT INTO training_corpus (date,type,tags,file_path,record_count,created_at,updated_at) VALUES(?,?,?,?,?,?,?)", + (date, best_type, tags, fp, total_valid, t, t), + ) + conn.commit() + imported += 1 + parts = [] + if qa_count: + parts.append(f"QA {qa_count}") + if dec_count: + parts.append(f"决策 {dec_count}") + if pf_count: + parts.append(f"踩坑 {pf_count}") + if other_count: + parts.append(f"其他 {other_count}") + log_line(f" [OK] {fn} -> {total_valid}条 ({', '.join(parts)})") + conn.close() + self.stats = { + "imported": imported, + "skipped": skipped, + "project": os.path.basename(dir_path), + } + log_line(f"\n导入 {imported} 个语料文件, 跳过 {skipped}") + done() + + +# ═══════════════════════ 2. 项目 ═══════════════════════ + + +class ProjectPanel(ttk.Frame): + def __init__(self, parent, bg="#f5f6f8"): + super().__init__(parent) + self.bg = bg + self.build() + + def build(self): + tk.Label( + self, + text="项目资产", + font=("Microsoft YaHei", 14, "bold"), + fg="#28518a", + bg=self.bg, + ).pack(pady=(12, 0), anchor=tk.W) + + top = ttk.Frame(self) + top.pack(fill=tk.X, pady=4) + ttk.Label(top, text="选择项目:").pack(side=tk.LEFT) + self.proj_var = tk.StringVar() + self.proj_cb = ttk.Combobox( + top, textvariable=self.proj_var, state="readonly", width=22 + ) + self.proj_cb.pack(side=tk.LEFT, padx=6) + self.proj_cb.bind("<>", lambda e: self._show()) + ttk.Button(top, text="删除项目", command=self._del_proj).pack( + side=tk.LEFT, padx=6 + ) + self.info_lbl = ttk.Label(top, text="", foreground="gray") + self.info_lbl.pack(side=tk.RIGHT) + + # 文件列表 + cols = ("主题", "类型", "版本", "文件路径", "摘要", "导入日期") + self.tree = ttk.Treeview(self, columns=cols, show="headings", height=14) + w = { + "主题": 140, + "类型": 70, + "版本": 50, + "文件路径": 200, + "摘要": 240, + "导入日期": 100, + } + for c in cols: + self.tree.heading(c, text=c) + self.tree.column(c, width=w.get(c, 80), anchor=tk.W) + self.tree.pack(fill=tk.BOTH, expand=True, side=tk.LEFT) + ttk.Scrollbar(self, command=self.tree.yview).pack(fill=tk.Y, side=tk.RIGHT) + self.tree.bind("", self._view) + + def refresh(self): + names = project_names() + self.proj_cb["values"] = names + if names: + self.proj_cb.current(0) + self._show() + + def _show(self): + pn = self.proj_var.get() + if not pn: + return + conn = db_conn() + try: + # 项目下所有文件 + rows = conn.execute( + "SELECT topic,version,file_path,summary,updated_at FROM knowledge_cards WHERE category=? ORDER BY updated_at DESC", + (pn,), + ).fetchall() + cnt = len(rows) + self.info_lbl.configure(text=f"共 {cnt} 个文件") + self.tree.delete(*self.tree.get_children()) + type_map = { + ".md": "文档", + ".txt": "文本", + ".py": "Python", + ".c": "C", + ".h": "C头文件", + ".cpp": "C++", + ".json": "JSON", + ".csv": "表格", + ".log": "日志", + ".yaml": "YAML", + ".yml": "YAML", + ".ini": "配置", + ".cfg": "配置", + ".toml": "配置", + ".pdf": "PDF", + ".docx": "Word", + ".xlsx": "Excel", + ".pptx": "PPT", + ".png": "图片", + ".jpg": "图片", + ".jpeg": "图片", + ".gif": "图片", + ".bmp": "图片", + ".svg": "矢量图", + ".bin": "固件", + ".hex": "HEX", + ".elf": "ELF", + ".uf2": "UF2", + ".sch": "原理图", + ".brd": "PCB", + ".kicad_pcb": "KiCad", + ".kicad_sch": "KiCad", + ".zip": "压缩包", + ".rar": "压缩包", + ".7z": "压缩包", + ".gz": "压缩包", + } + for r in rows: + ft = os.path.splitext(r["file_path"] or "")[1] if r["file_path"] else "" + ft = type_map.get(ft, ft) + self.tree.insert( + "", + tk.END, + values=( + r["topic"], + ft, + r["version"], + r["file_path"], + (r["summary"] or "")[:150], + r["updated_at"], + ), + ) + finally: + conn.close() + + def _view(self, *_): + sel = self.tree.selection() + if not sel: + return + vals = self.tree.item(sel[0], "values") + conn = db_conn() + try: + r = conn.execute( + "SELECT * FROM knowledge_cards WHERE topic=? AND file_path=?", + (vals[0], vals[3]), + ).fetchone() + if not r: + return + top = tk.Toplevel(self) + top.title(r["topic"]) + top.geometry("750x480") + txt = tk.Text(top, wrap=tk.WORD, font=("Microsoft YaHei", 10)) + txt.pack(fill=tk.BOTH, expand=True, padx=8, pady=8) + txt.insert( + tk.END, + f"名称: {r['topic']}\n分类: {r['category']}\n文件: {r['file_path']}\n日期: {r['version']}\n更新: {r['updated_at']}\n\n{'─' * 50}\n\n{r['summary']}", + ) + finally: + conn.close() + + def _del_proj(self): + pn = self.proj_var.get() + if not pn: + return + if not messagebox.askyesno( + "确认删除", f"删除项目「{pn}」及其中所有文件?此操作不可恢复。" + ): + return + conn = db_conn() + try: + # BUG-06 修复:按 file_path(唯一) 清理,避免误删其他项目同名工作日志 + files = conn.execute( + "SELECT id, file_path FROM knowledge_cards WHERE category=?", (pn,) + ).fetchall() + for f in files: + conn.execute( + "DELETE FROM knowledge_cards WHERE category='工作日志' AND file_path=?", + (f["file_path"],), + ) + conn.execute("DELETE FROM knowledge_cards WHERE category=?", (pn,)) + conn.execute("DELETE FROM projects WHERE name=?", (pn,)) + conn.commit() + except Exception as e: + messagebox.showerror("错误", str(e)) + finally: + conn.close() + self.refresh() + + +# ═══════════════════════ 3. 工作日志 ═══════════════════════ + + +class LogPanel(ttk.Frame): + def __init__(self, parent, bg="#f5f6f8"): + super().__init__(parent) + self.bg = bg + self.build() + + def build(self): + tk.Label( + self, + text="工作日志", + font=("Microsoft YaHei", 14, "bold"), + fg="#28518a", + bg=self.bg, + ).pack(pady=(12, 0), anchor=tk.W) + ttk.Label(self, text="按导入时间排列的日常工作记录", foreground="gray").pack() + + cols = ("日期", "主题", "摘要", "文件路径", "更新时间") + self.tree = ttk.Treeview(self, columns=cols, show="headings", height=18) + w = {"日期": 90, "主题": 160, "摘要": 300, "文件路径": 200, "更新时间": 130} + for c in cols: + self.tree.heading(c, text=c) + self.tree.column(c, width=w.get(c, 80), anchor=tk.W) + self.tree.pack(fill=tk.BOTH, expand=True, side=tk.LEFT) + ttk.Scrollbar(self, command=self.tree.yview).pack(fill=tk.Y, side=tk.RIGHT) + self.tree.bind("", self._view) + self.tree.bind("", lambda e: self._del()) + + bar = ttk.Frame(self) + bar.pack(fill=tk.X, pady=4) + ttk.Button(bar, text="删除选中", command=self._del).pack(side=tk.LEFT) + ttk.Button(bar, text="刷新", command=self.refresh).pack(side=tk.LEFT, padx=4) + + def refresh(self): + conn = db_conn() + try: + rows = conn.execute( + "SELECT topic,version,summary,file_path,updated_at FROM knowledge_cards WHERE category='工作日志' ORDER BY updated_at DESC" + ).fetchall() + finally: + conn.close() + self.tree.delete(*self.tree.get_children()) + for r in rows: + self.tree.insert( + "", + tk.END, + values=( + r["version"], + r["topic"], + (r["summary"] or "")[:200], + r["file_path"], + r["updated_at"], + ), + ) + + def _view(self, *_): + sel = self.tree.selection() + if not sel: + return + vals = self.tree.item(sel[0], "values") + conn = db_conn() + try: + r = conn.execute( + "SELECT * FROM knowledge_cards WHERE topic=? AND file_path=?", + (vals[1], vals[3]), + ).fetchone() + if r: + top = tk.Toplevel(self) + top.title(r["topic"]) + top.geometry("750x480") + txt = tk.Text(top, wrap=tk.WORD, font=("Microsoft YaHei", 10)) + txt.pack(fill=tk.BOTH, expand=True, padx=8, pady=8) + txt.insert( + tk.END, + f"主题: {r['topic']}\n日期: {r['version']}\n文件: {r['file_path']}\n更新: {r['updated_at']}\n\n{'─' * 50}\n\n{r['summary']}", + ) + finally: + conn.close() + + def _del(self): + sel = self.tree.selection() + if not sel: + return + vals = self.tree.item(sel[0], "values") + if not messagebox.askyesno("确认", "删除选中日志?"): + return + conn = db_conn() + try: + conn.execute( + "DELETE FROM knowledge_cards WHERE topic=? AND file_path=?", + (vals[1], vals[3]), + ) + conn.commit() + except Exception as e: + messagebox.showerror("错误", str(e)) + finally: + conn.close() + self.refresh() + + +# ═══════════════════════ 4. 训练语料 ═══════════════════════ + + +class CorpusPanel(ttk.Frame): + def __init__(self, parent, bg="#f5f6f8"): + super().__init__(parent) + self.bg = bg + self.build() + + def build(self): + tk.Label( + self, + text="训练语料", + font=("Microsoft YaHei", 14, "bold"), + fg="#28518a", + bg=self.bg, + ).pack(pady=(12, 0), anchor=tk.W) + ttk.Label( + self, + text=".jsonl 格式的 Q&A 数据,积累用于本地大模型训练", + foreground="gray", + ).pack() + + cols = ("日期", "标签", "文件路径", "记录数", "更新时间") + self.tree = ttk.Treeview(self, columns=cols, show="headings", height=18) + w = {"日期": 90, "标签": 120, "文件路径": 280, "记录数": 60, "更新时间": 130} + for c in cols: + self.tree.heading(c, text=c) + self.tree.column(c, width=w.get(c, 80), anchor=tk.W) + self.tree.pack(fill=tk.BOTH, expand=True, side=tk.LEFT) + ttk.Scrollbar(self, command=self.tree.yview).pack(fill=tk.Y, side=tk.RIGHT) + self.tree.bind("", lambda e: self._del()) + + bar = ttk.Frame(self) + bar.pack(fill=tk.X, pady=4) + ttk.Button(bar, text="删除选中", command=self._del).pack(side=tk.LEFT) + ttk.Button(bar, text="刷新", command=self.refresh).pack(side=tk.LEFT, padx=4) + + def refresh(self): + conn = db_conn() + try: + rows = conn.execute( + "SELECT * FROM training_corpus ORDER BY date DESC" + ).fetchall() + finally: + conn.close() + self.tree.delete(*self.tree.get_children()) + for r in rows: + self.tree.insert( + "", + tk.END, + values=( + r["date"], + r["tags"], + r["file_path"], + r["record_count"], + r["updated_at"], + ), + ) + + def _del(self): + sel = self.tree.selection() + if not sel: + return + if not messagebox.askyesno("确认", "删除选中语料?"): + return + vals = self.tree.item(sel[0], "values") + conn = db_conn() + try: + conn.execute( + "DELETE FROM training_corpus WHERE file_path=? AND date=?", + (vals[2], vals[0]), + ) + conn.commit() + except Exception as e: + messagebox.showerror("错误", str(e)) + finally: + conn.close() + self.refresh() + + +# ═══════════════════════ 5. 搜索 ═══════════════════════ + + +class SearchPanel(ttk.Frame): + """全局搜索面板:输入即搜(实时)+AND逻辑(空格分隔)+三个结果标签页(项目/日志/语料)。""" + def __init__(self, parent, bg="#f5f6f8"): + super().__init__(parent) + self.bg = bg + self.build() + + def build(self): + tk.Label( + self, + text="全局搜索", + font=("Microsoft YaHei", 14, "bold"), + fg="#28518a", + bg=self.bg, + ).pack(pady=(12, 0), anchor=tk.W) + + bar = ttk.Frame(self) + bar.pack(fill=tk.X, pady=6) + ttk.Label(bar, text="关键词:").pack(side=tk.LEFT) + self.kw = tk.StringVar() + self.kw.trace_add("write", lambda *_: self.refresh()) # 实时搜索 + ttk.Entry(bar, textvariable=self.kw, width=36).pack(side=tk.LEFT, padx=6) + ttk.Button(bar, text="搜索", command=self.refresh).pack(side=tk.LEFT, padx=4) + ttk.Label(bar, text="空格分隔=AND逻辑", foreground="gray").pack( + side=tk.LEFT, padx=8 + ) + + nb = ttk.Notebook(self) + nb.pack(fill=tk.BOTH, expand=True, pady=4) + self.trees = {} + for label, cols in [ + ("项目资产", ("主题", "分类", "日期", "摘要", "文件")), + ("工作日志", ("主题", "日期", "摘要", "文件")), + ("训练语料", ("日期", "标签", "文件路径", "记录数")), + ]: + f = ttk.Frame(nb) + nb.add(f, text=label) + tree = ttk.Treeview(f, columns=cols, show="headings", height=14) + for c in cols: + tree.heading(c, text=c) + tree.column(c, width=110, anchor=tk.W) + tree.pack(fill=tk.BOTH, expand=True, side=tk.LEFT) + ttk.Scrollbar(f, command=tree.yview).pack(fill=tk.Y, side=tk.RIGHT) + self.trees[label] = tree + + def _build_and_clause(self, keywords, fields): + """构建 AND 逻辑的 SQL WHERE 子句。 + + 多个关键词对每个字段做 LIKE 匹配,关键词间用 AND 连接。 + 例: ["ESP32","SPI"], ["topic","summary"] + → (topic LIKE ? OR summary LIKE ?) AND (topic LIKE ? OR summary LIKE ?) + + Returns: (clause_sql, params_list) + """ + clauses, params = [], [] + for kw in keywords: + p = f"%{kw}%" + clauses.append("(" + " OR ".join([f"{f} LIKE ?" for f in fields]) + ")") + params.extend([p] * len(fields)) + return " AND ".join(clauses), params + + def refresh(self): + """执行搜索:关键词AND逻辑,分三个标签页显示结果。""" + kw = self.kw.get().strip() + if not kw: + for t in self.trees.values(): + t.delete(*t.get_children()) + return + keywords = kw.split() + conn = db_conn() + try: + # 项目资产 — AND 匹配 topic/summary/file_path + kc_clause, kc_params = self._build_and_clause( + keywords, ["topic", "summary", "file_path"] + ) + kc = ( + conn.execute( + f"SELECT topic,category,version,summary,file_path FROM knowledge_cards WHERE category!='工作日志' AND {kc_clause} ORDER BY updated_at DESC LIMIT 60", + kc_params, + ).fetchall() + if kc_clause + else [] + ) + # 工作日志 — AND 匹配 topic/summary + lg_clause, lg_params = self._build_and_clause( + keywords, ["topic", "summary"] + ) + lg = ( + conn.execute( + f"SELECT topic,version,summary,file_path FROM knowledge_cards WHERE category='工作日志' AND {lg_clause} ORDER BY updated_at DESC LIMIT 60", + lg_params, + ).fetchall() + if lg_clause + else [] + ) + # 语料 — AND 匹配 tags/file_path + cp_clause, cp_params = self._build_and_clause( + keywords, ["tags", "file_path"] + ) + cp = ( + conn.execute( + f"SELECT date,tags,file_path,record_count FROM training_corpus WHERE {cp_clause} ORDER BY date DESC LIMIT 60", + cp_params, + ).fetchall() + if cp_clause + else [] + ) + finally: + conn.close() + + for label, rows, cols in [ + ("项目资产", kc, ["topic", "category", "version", "summary", "file_path"]), + ("工作日志", lg, ["topic", "version", "summary", "file_path"]), + ("训练语料", cp, ["date", "tags", "file_path", "record_count"]), + ]: + tree = self.trees[label] + tree.delete(*tree.get_children()) + for r in rows: + tree.insert("", tk.END, values=tuple(r.get(c, "") for c in cols)) + + +# ═══════════════════════ 6. 导出 ═══════════════════════ + + +class ExportPanel(ttk.Frame): + def __init__(self, parent, bg="#f5f6f8"): + super().__init__(parent) + self.bg = bg + self.build() + + def build(self): + tk.Label( + self, + text="导出报告", + font=("Microsoft YaHei", 14, "bold"), + fg="#28518a", + bg=self.bg, + ).pack(pady=(12, 0), anchor=tk.W) + + bar = ttk.Frame(self) + bar.pack(fill=tk.X, pady=6) + ttk.Label(bar, text="选择项目:").pack(side=tk.LEFT) + self.proj_var = tk.StringVar() + self.proj_cb = ttk.Combobox( + bar, textvariable=self.proj_var, state="readonly", width=22 + ) + self.proj_cb.pack(side=tk.LEFT, padx=6) + ttk.Button(bar, text="导出 MD", command=self._export_md).pack( + side=tk.LEFT, padx=4 + ) + ttk.Button(bar, text="导出 JSONL", command=self._export_jsonl).pack( + side=tk.LEFT, padx=4 + ) + ttk.Button(bar, text="导出全部 JSONL", command=self._export_all_jsonl).pack( + side=tk.LEFT, padx=4 + ) + + self.pv = tk.Text(self, height=22, font=("Consolas", 9), wrap=tk.WORD) + self.pv.pack(fill=tk.BOTH, expand=True, pady=4) + + def refresh(self): + names = project_names() + self.proj_cb["values"] = names + if names: + self.proj_cb.current(0) + + def _gen_md(self, pn): + conn = db_conn() + try: + pr = conn.execute("SELECT * FROM projects WHERE name=?", (pn,)).fetchone() + if not pr: + return f"# 未找到: {pn}" + p = dict(pr) + rows = conn.execute( + "SELECT * FROM knowledge_cards WHERE category=? ORDER BY updated_at DESC", + (pn,), + ).fetchall() + corpus = conn.execute( + "SELECT * FROM training_corpus ORDER BY date DESC" + ).fetchall() + logs = conn.execute( + "SELECT * FROM knowledge_cards WHERE category='工作日志' ORDER BY updated_at DESC" + ).fetchall() + + md = [ + f"# {p['name']}\n\n- 状态: {p['status']} | 描述: {p['description']}\n- 创建: {p['created_at']} | 更新: {p['updated_at']}\n" + ] + md.append(f"\n---\n## 项目文件 ({len(rows)}个)\n") + for r in rows: + md.append( + f"### {r['topic']}\n- 类型: {os.path.splitext(r['file_path'] or '')[1]} | 文件: {r['file_path']} | 日期: {r['version']}\n\n{r['summary'][:3000]}\n\n---\n" + ) + md.append(f"\n## 工作日志 ({len(logs)}条)\n") + for r in logs: + md.append( + f"### {r['topic']}\n- 日期: {r['version']}\n\n{r['summary'][:2000]}\n\n---\n" + ) + md.append(f"\n## 训练语料 ({len(corpus)}条)\n") + for r in corpus: + md.append( + f"- {r['date']} | {r['type']} | {r['tags']} | {r['file_path']} ({r['record_count']}条)\n" + ) + md.append(f"\n> 导出: {dam.now()}") + return "\n".join(md) + finally: + conn.close() + + def _gen_jsonl(self, pn): + """项目文件导出为 JSONL 格式,可直接喂给大模型""" + lines = [] + conn = db_conn() + try: + rows = conn.execute( + "SELECT * FROM knowledge_cards WHERE category=? ORDER BY updated_at DESC", + (pn,), + ).fetchall() + for r in rows: + obj = { + "source": "project", + "project": pn, + "file": r["topic"], + "type": os.path.splitext(r["file_path"] or "")[1], + "date": r["version"], + "content": (r["summary"] or ""), + } + lines.append(json.dumps(obj, ensure_ascii=False)) + finally: + conn.close() + return "\n".join(lines) + + def _gen_all_jsonl(self): + """全部资产导出为 JSONL""" + lines = [] + conn = db_conn() + try: + # 项目文件 + kc = conn.execute( + "SELECT * FROM knowledge_cards WHERE category!='工作日志' ORDER BY updated_at DESC" + ).fetchall() + for r in kc: + obj = { + "source": "project", + "project": r["category"], + "file": r["topic"], + "type": os.path.splitext(r["file_path"] or "")[1], + "date": r["version"], + "content": (r["summary"] or ""), + } + lines.append(json.dumps(obj, ensure_ascii=False)) + # 工作日志 + lg = conn.execute( + "SELECT * FROM knowledge_cards WHERE category='工作日志' ORDER BY updated_at DESC" + ).fetchall() + for r in lg: + obj = { + "source": "worklog", + "topic": r["topic"], + "date": r["version"], + "content": (r["summary"] or ""), + } + lines.append(json.dumps(obj, ensure_ascii=False)) + # 语料 + cp = conn.execute( + "SELECT * FROM training_corpus ORDER BY date DESC" + ).fetchall() + for r in cp: + obj = { + "source": "corpus", + "date": r["date"], + "type": r["type"], + "tags": r["tags"], + "file": r["file_path"], + } + lines.append(json.dumps(obj, ensure_ascii=False)) + finally: + conn.close() + return "\n".join(lines) + + def _export_md(self): + pn = self.proj_var.get() + if not pn: + messagebox.showwarning("提示", "请选择项目") + return + md = self._gen_md(pn) + self.pv.delete("1.0", tk.END) + self.pv.insert("1.0", md) + path = filedialog.asksaveasfilename( + defaultextension=".md", + filetypes=[("Markdown", "*.md")], + initialfile=f"{pn.replace(' ', '_')}.md", + ) + if path: + with open(path, "w", encoding="utf-8") as f: + f.write(md) + messagebox.showinfo("完成", f"已保存: {path}") + + def _export_jsonl(self): + pn = self.proj_var.get() + if not pn: + messagebox.showwarning("提示", "请选择项目") + return + jl = self._gen_jsonl(pn) + self.pv.delete("1.0", tk.END) + self.pv.insert("1.0", jl) + path = filedialog.asksaveasfilename( + defaultextension=".jsonl", + filetypes=[("JSONL", "*.jsonl")], + initialfile=f"{pn.replace(' ', '_')}.jsonl", + ) + if path: + with open(path, "w", encoding="utf-8") as f: + f.write(jl) + messagebox.showinfo("完成", f"已保存: {path}") + + def _export_all_jsonl(self): + pn = self.proj_var.get() or "全部资产" + jl = self._gen_all_jsonl() + lines = jl.splitlines() + self.pv.delete("1.0", tk.END) + self.pv.insert("1.0", "\n".join(lines[:50]) + f"\n\n... (共 {len(lines)} 行)") + path = filedialog.asksaveasfilename( + defaultextension=".jsonl", + filetypes=[("JSONL", "*.jsonl")], + initialfile=f"{pn}_全部.jsonl", + ) + if path: + with open(path, "w", encoding="utf-8") as f: + f.write(jl) + messagebox.showinfo("完成", f"已保存: {path}") + + +# ═══════════════════════ 启动 ═══════════════════════ + +if __name__ == "__main__": + app = App() + app.mainloop() diff --git a/digital-asset-manager/使用说明.md b/digital-asset-manager/使用说明.md new file mode 100644 index 0000000..dc62b37 --- /dev/null +++ b/digital-asset-manager/使用说明.md @@ -0,0 +1,215 @@ +# 数字资产管理器 v3 — 使用说明 + +## 概述 + +**数字资产管理器**是一套本地桌面软件,用于封存和速查个人/团队的数字化资料。数据全在本地 SQLite 数据库,不联网不上传,设计目标是一次性封存、随时检索。 + +### 三大资产分类 + +| 分类 | 用途 | 存入方式 | +|------|------|---------| +| 📁 项目资产 | 项目相关所有文件(文档/源码/PDF/图片/固件/电路等) | 导入整个项目文件夹 | +| 📔 工作日志 | 日常工作记录,按时间线排列 | 导入日志文件夹 | +| 📚 训练语料 | JSONL 格式的 Q&A 数据,积累用于本地大模型训练 | 导入 .jsonl 文件 | + +--- + +## 安装与启动 + +### 方式一:EXE 直接运行(推荐) + +1. 将 `dist/数字资产管理器.exe` 复制到任意目录 +2. 双击运行 +3. 软件首次启动会自动在 EXE 同目录创建 `digital_assets.db` 数据库文件 + +### 方式二:源码运行 + +```bash +cd 数字化资产管理 +python digital_assets_ui.py +``` + +前置条件:Python 3.8+,不需要额外安装包(Tkinter 和 SQLite3 均为 Python 标准库自带)。 + +--- + +## 界面说明 + +软件窗口分为两个区域: + +### 左侧导航栏(深蓝底) +- **📥 导入归档**:三种资产的导入入口 +- **📁 项目资产**:按项目浏览已封存的文件 +- **📔 工作日志**:按时间线查看工作日志 +- **📚 训练语料**:查看已导入的语料数据 +- **🔍 全局搜索**:跨所有分类搜索 +- **📤 导出报告**:导出 Markdown / JSONL + +### 右侧内容区 +根据左侧选择切换对应功能面板。 + +--- + +## 功能详解 + +### 1. 导入归档 + +导入页面分为三个独立的导入区域,每种资产分开导入: + +#### 📁 导入项目资产 + +1. 点击「浏览」选择要封存的项目文件夹 +2. 项目名留空 → 以子文件夹名自动创建项目;手动填写 → 全部文件归入该项目 +3. 勾选「递归」→ 子文件夹各自成为一个独立项目 +4. 点击「开始导入」 + +**支持的文件类型**: + +| 类型 | 扩展名 | 处理方式 | +|------|--------|---------| +| 文档 | .md .txt | 读取全文内容存入,前10000字 | +| 源码 | .py .c .h .cpp .hpp | 读取全文,存入项目 | +| 配置 | .json .yaml .yml .ini .cfg .toml | 读取全文 | +| 数据 | .csv .log | 读取全文 | +| PDF | .pdf | 存路径和类型标签 | +| Office | .docx .xlsx .pptx | 存路径和类型标签 | +| 图片 | .png .jpg .jpeg .gif .bmp .svg | 存路径和类型标签 | +| 固件 | .bin .hex .elf .uf2 | 存路径和类型标签 | +| 电路 | .sch .brd .kicad_pcb .kicad_sch | 存路径和类型标签 | +| 压缩包 | .zip .rar .7z .gz | 存路径和类型标签 | +| 语料 | .jsonl | 自动解析为训练语料 | + +> 文本文件超过 10000 字部分不会存入数据库,但原始文件不受影响。日志区会显示 `[WARN]` 提示。 + +#### 📔 导入工作日志 + +1. 选择包含日志文件的文件夹 +2. 点击「开始导入」 +3. 所有文件归入「工作日志」分类,按时间线排列 + +> 文件名含「日志/log/工作记录/周报/日报」关键词的,在导入项目资产时也会自动归入工作日志。 + +#### 📚 导入训练语料 + +1. 选择包含 `.jsonl` 文件的文件夹 +2. 点击「开始导入」 +3. 支持四种 JSONL 格式: + +```json +{"question": "...", "answer": "..."} → QA 类型 +{"decision": "...", "conclusion": "..."} → 决策类型 +{"problem": "...", "solution": "..."} → 踩坑类型 +{任意其他字段} → 其他类型 +``` + +> 每个 JSONL 文件生成一条语料记录,`record_count` 为文件内的有效行数,`type` 按数量最多的类型设置。 + +#### 导入历史 + +页面底部显示所有历史导入记录,包含日期、类型、项目名、文件数、摘要和源文件夹路径。每次软件启动自动加载。 + +--- + +### 2. 项目资产 + +- 顶部下拉框切换项目 +- 表格显示该项目下所有文件(主题、类型、文件路径、摘要、导入日期) +- **双击表格行**查看文件完整内容 +- 「删除项目」按钮可删除项目及其所有关联文件 + +--- + +### 3. 工作日志 + +- 按导入时间降序排列所有工作日志 +- **双击行**查看日志全文 +- 选中行按 Delete 键或点击「删除选中」移除 + +--- + +### 4. 训练语料 + +- 查看所有已导入的语料文件 +- 显示日期、标签、文件路径、记录数、更新时间 +- 选中后可按 Delete 删除 + +--- + +### 5. 全局搜索 + +- 输入关键词(空格分隔 = AND 逻辑) +- 结果分三个标签页显示: + - 项目资产:搜索文件名和内容 + - 工作日志:搜索主题和内容 + - 训练语料:搜索标签和文件路径 +- 实时搜索,输入即出结果 + +--- + +### 6. 导出报告 + +支持三种导出方式: + +| 导出类型 | 格式 | 用途 | +|---------|------|------| +| 导出 MD | Markdown | 人阅读的完整项目报告 | +| 导出 JSONL | JSONL | 选中项目的结构化数据,可喂大模型 | +| 导出全部 JSONL | JSONL | 全部资产(项目+日志+语料)一次性导出 | + +操作步骤: +1. 选择项目 +2. 点击对应导出按钮 +3. 在弹出窗口中选择保存位置 +4. 左侧预览区显示导出内容 + +--- + +## 数据安全 + +- **数据库文件**:`digital_assets.db`,标准 SQLite3 格式 +- **位置**:与 EXE 同目录 +- **备份**:直接复制 `.db` 文件即可完成备份 +- **迁移**:将 `.db` 文件和 EXE 一起复制到新电脑即可 +- **隐私**:数据完全不联网,100% 本地存储 + +--- + +## 常见问题 + +**Q: 导入后原文件会怎样?** +A: 原文件不受任何影响。软件只读取内容存入数据库,不修改、不删除、不移动原始文件。 + +**Q: 数据库能存多少数据?** +A: SQLite 单库上限 140TB。单个文本文件存入前 10000 字,图片/PDF 等二进制文件只存路径。实测数千个项目、数万份文件毫无压力。 + +**Q: 能跨电脑使用吗?** +A: 将 EXE 和 `digital_assets.db` 文件复制到新电脑的同一目录即可,无需安装任何依赖。 + +**Q: 如何升级?** +A: 替换 EXE 文件即可。数据库文件 `.db` 向下兼容,旧数据不受影响。 + +**Q: 导入时闪退?** +A: 确认所选文件夹内确实有支持的文件类型。空文件夹或全是无后缀文件会直接跳过。 + +--- + +## 命令行补充 + +除了桌面版,还提供了命令行工具 `digital_assets_manager.py`: + +```bash +# 初始化数据库 +python digital_assets_manager.py init + +# 递归导入文件夹 +python digital_assets_manager.py import --dir "项目文件夹" --recursive + +# 全文搜索 +python digital_assets_manager.py search --keyword "ESP32 SPI" + +# 按项目导出 Markdown +python digital_assets_manager.py export --project "电子宠物V1.0" + +# 统计概览 +python digital_assets_manager.py stats +``` diff --git a/pet-v1/新机器人电路图pcb网表.net b/pet-v1/新机器人电路图pcb网表.net new file mode 100644 index 0000000..4deafb0 --- /dev/null +++ b/pet-v1/新机器人电路图pcb网表.net @@ -0,0 +1,4533 @@ +PROTEL NETLIST 2.0 +[ +DESIGNATOR +BOOT +FOOTPRINT +SW-SMD_L3.9-W3.0-P4.45 +PARTTYPE +TS-1088-AR02016 +DESCRIPTION +电路结构:单刀单掷;按钮形状:圆形按钮;作用力:1.6N;安装方式:立贴;开关长度:3.9mm;开关宽度:3mm;开关高度:2mm;带支架:不带支架;触点电流:50mA;额定电压:12V;带灯:-;工作寿命:10万次; +Component Kind +Standard +Footprint +SW-SMD_L3.9-W3.0-P4.45 +Designator +BOOT +LCSC Part Name +3.9*3*2mm 立贴 轻触开关 +Supplier Part +C720477 +Manufacturer +XUNPU(讯普) +Manufacturer Part +TS-1088-AR02016 +Supplier Footprint +SMD,4x3mm +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/TS-1088-AR02016/763484.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +SW-SMD_L3.9-W2.9-H2.0-LS4.8 +Circuit +单刀单掷 +Actuator Style +圆形按钮 +Operating Force +1.6N +Mounting Type +立贴 +Length +3.9mm +Width +3mm +Switch Height +2mm +with Bracket +不带支架 +Contact Current +50mA +Voltage Rating +12V +Actuator/Cap Color +黑色 +With Lamp +- +IP Rating +- +Termination Style +SMD接片 +Life +10万次 +Operating Temperature +-30℃~+80℃ +Name +TS-1088-AR02016 +Description +电路结构:单刀单掷;按钮形状:圆形按钮;作用力:1.6N;安装方式:立贴;开关长度:3.9mm;开关宽度:3mm;开关高度:2mm;带支架:不带支架;触点电流:50mA;额定电压:12V;带灯:-;工作寿命:10万次; +Device +TS-1088-AR02016 +Unique ID +gge13 +Reuse Block + +Group ID + +Channel ID +$1I109 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C1 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C1 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CL05B104KB54PNC +Unique ID +gge9 +Reuse Block + +Group ID + +Channel ID +$1I132 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C3 +FOOTPRINT +C0603 +PARTTYPE +CL10A106MA8NRNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Footprint +C0603 +Designator +C3 +LCSC Part Name +10uF ±20% 25V +Supplier Part +C96446 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106MA8NRNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106MA8NRNC/97651.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Device +CL10A106MA8NRNC +Unique ID +gge41_0 +Reuse Block + +Group ID + +Channel ID +$1I134 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C4 +FOOTPRINT +C0402 +PARTTYPE +CL05A105KA5NQNC +DESCRIPTION +容值:1uF;精度:±10%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Footprint +C0402 +Designator +C4 +LCSC Part Name +1uF ±10% 25V +Supplier Part +C52923 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05A105KA5NQNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05A105KA5NQNC/53938.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +1uF +Tolerance +±10% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +1uF +Description +容值:1uF;精度:±10%;额定电压:25V;温度系数:X5R; +Device +CL05A105KA5NQNC +Unique ID +gge20 +Reuse Block + +Group ID + +Channel ID +$1I116 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C5 +FOOTPRINT +C0603 +PARTTYPE +CL10A225KO8NNNC +DESCRIPTION +容值:2.2uF;精度:±10%;额定电压:16V;温度系数:X5R; +Component Kind +Standard +Footprint +C0603 +Designator +C5 +LCSC Part Name +2.2uF ±10% 16V +Supplier Part +C23630 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A225KO8NNNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A225KO8NNNC/24366.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +2.2uF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X5R +Name +2.2uF +Description +容值:2.2uF;精度:±10%;额定电压:16V;温度系数:X5R; +Device +CL10A225KO8NNNC +Unique ID +gge44 +Reuse Block + +Group ID + +Channel ID +$1I94 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C6 +FOOTPRINT +C0603 +PARTTYPE +CL10A225KO8NNNC +DESCRIPTION +容值:2.2uF;精度:±10%;额定电压:16V;温度系数:X5R; +Component Kind +Standard +Footprint +C0603 +Designator +C6 +LCSC Part Name +2.2uF ±10% 16V +Supplier Part +C23630 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A225KO8NNNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A225KO8NNNC/24366.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +2.2uF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X5R +Name +2.2uF +Description +容值:2.2uF;精度:±10%;额定电压:16V;温度系数:X5R; +Device +CL10A225KO8NNNC +Unique ID +gge45 +Reuse Block + +Group ID + +Channel ID +$1I95 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C7 +FOOTPRINT +C0603 +PARTTYPE +CC0603KRX7R9BB104 +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0603 +Designator +C7 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C14663 +Manufacturer +YAGEO(国巨) +Manufacturer Part +CC0603KRX7R9BB104 +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CC0603KRX7R9BB104/15331.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CC0603KRX7R9BB104 +Unique ID +gge24 +Reuse Block + +Group ID + +Channel ID +$1I37 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C8 +FOOTPRINT +C0603 +PARTTYPE +CL10A106MA8NRNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Footprint +C0603 +Designator +C8 +LCSC Part Name +10uF ±20% 25V +Supplier Part +C96446 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106MA8NRNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106MA8NRNC/97651.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Device +CL10A106MA8NRNC +Unique ID +gge25 +Reuse Block + +Group ID + +Channel ID +$1I39 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C9 +FOOTPRINT +C0603 +PARTTYPE +CL10A106MA8NRNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Footprint +C0603 +Designator +C9 +LCSC Part Name +10uF ±20% 25V +Supplier Part +C96446 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106MA8NRNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106MA8NRNC/97651.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Device +CL10A106MA8NRNC +Unique ID +gge41 +Reuse Block + +Group ID + +Channel ID +$1I88 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C10 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KO5NNNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C10 +LCSC Part Name +100nF ±10% 16V +Supplier Part +C1525 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KO5NNNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KO5NNNC/1877.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Device +CL05B104KO5NNNC +Unique ID +gge27 +Reuse Block + +Group ID + +Channel ID +$1I45 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C11 +FOOTPRINT +C0603 +PARTTYPE +CL10A106MA8NRNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Footprint +C0603 +Designator +C11 +LCSC Part Name +10uF ±20% 25V +Supplier Part +C96446 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106MA8NRNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106MA8NRNC/97651.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Device +CL10A106MA8NRNC +Unique ID +gge41_1 +Reuse Block + +Group ID + +Channel ID +$1I92 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C12 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KO5NNNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C12 +LCSC Part Name +100nF ±10% 16V +Supplier Part +C1525 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KO5NNNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KO5NNNC/1877.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Device +CL05B104KO5NNNC +Unique ID +gge28 +Reuse Block + +Group ID + +Channel ID +$1I49 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C13 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KO5NNNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C13 +LCSC Part Name +100nF ±10% 16V +Supplier Part +C1525 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KO5NNNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KO5NNNC/1877.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Device +CL05B104KO5NNNC +Unique ID +gge31 +Reuse Block + +Group ID + +Channel ID +$1I59 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C14 +FOOTPRINT +C0603 +PARTTYPE +CC0603KRX7R9BB104 +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0603 +Designator +C14 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C14663 +Manufacturer +YAGEO(国巨) +Manufacturer Part +CC0603KRX7R9BB104 +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CC0603KRX7R9BB104/15331.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CC0603KRX7R9BB104 +Unique ID +gge42 +Reuse Block + +Group ID + +Channel ID +$1I89 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C15 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C15 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CL05B104KB54PNC +Unique ID +gge9_0 +Reuse Block + +Group ID + +Channel ID +$1I133 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C16 +FOOTPRINT +C0402 +PARTTYPE +0402CG220J500NT +DESCRIPTION +容值:22pF;精度:±5%;额定电压:50V;温度系数:C0G; +Component Kind +Standard +Footprint +C0402 +Designator +C16 +LCSC Part Name +22pF ±5% 50V +Supplier Part +C1555 +Manufacturer +FH(风华) +Manufacturer Part +0402CG220J500NT +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402CG220J500NT/1907.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +22pF +Tolerance +±5% +Voltage Rating +50V +Temperature Coefficient +C0G +Name +22pF +Description +容值:22pF;精度:±5%;额定电压:50V;温度系数:C0G; +Device +0402CG220J500NT +Unique ID +gge60 +Reuse Block + +Group ID + +Channel ID +$1I128 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C17 +FOOTPRINT +C0402 +PARTTYPE +0402CG220J500NT +DESCRIPTION +容值:22pF;精度:±5%;额定电压:50V;温度系数:C0G; +Component Kind +Standard +Footprint +C0402 +Designator +C17 +LCSC Part Name +22pF ±5% 50V +Supplier Part +C1555 +Manufacturer +FH(风华) +Manufacturer Part +0402CG220J500NT +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402CG220J500NT/1907.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +22pF +Tolerance +±5% +Voltage Rating +50V +Temperature Coefficient +C0G +Name +22pF +Description +容值:22pF;精度:±5%;额定电压:50V;温度系数:C0G; +Device +0402CG220J500NT +Unique ID +gge61 +Reuse Block + +Group ID + +Channel ID +$1I129 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C18 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C18 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CL05B104KB54PNC +Unique ID +gge9_1 +Reuse Block + +Group ID + +Channel ID +$1I138 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C19 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C19 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CL05B104KB54PNC +Unique ID +gge9_2 +Reuse Block + +Group ID + +Channel ID +$1I143 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C20 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C20 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CL05B104KB54PNC +Unique ID +gge92 +Reuse Block + +Group ID + +Channel ID +$1I144 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C21 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C21 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CL05B104KB54PNC +Unique ID +gge9_3 +Reuse Block + +Group ID + +Channel ID +$1I149 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C22 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Footprint +C0402 +Designator +C22 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Device +CL05B104KB54PNC +Unique ID +gge9_4 +Reuse Block + +Group ID + +Channel ID +$1I151 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +D1 +FOOTPRINT +LED-SMD_L1.6-W0.8-R-RD +PARTTYPE +KT-0603R +DESCRIPTION +灯头类型:1.6mmx0.8mm方形灯头;发光颜色:红色;正向压降(Vf):1.8V~2.4V;功率:40mW;正向电流:20mA;波长:615nm~630nm;二极管配置:独立二极管;透镜颜色:无色透明透镜;色温:-;发光强度:300mcd;发光角度:120°;载带方式:-;工作温度:-40℃~+85℃; +Component Kind +Standard +Name +KT-0603R +Device +KT-0603R +Designator +D1 +Footprint +LED-SMD_L1.6-W0.8-R-RD +LCSC Part Name +0603 红灯 高亮 +Supplier Part +C2286 +Manufacturer +KENTO +Manufacturer Part +KT-0603R +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/KT-0603R/2659.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +LED0603_L1.6-W0.8-H0.6 +Lamp Holder Type +1.6mmx0.8mm方形灯头 +Illumination Color +红色 +Voltage - Forward(Vf) +1.8V~2.4V +Power(Watts) +40mW +Forward Current +20mA +Wavelength - Dominant +615nm~630nm +Peak Wavelength +645nm +Diode Configuration +独立二极管 +Lens Color +无色透明透镜 +Color Temperature +- +Luminous Intensity +300mcd +Viewing Angle +120° +Mounting Style +- +Operating Temperature +-40℃~+85℃ +Description +灯头类型:1.6mmx0.8mm方形灯头;发光颜色:红色;正向压降(Vf):1.8V~2.4V;功率:40mW;正向电流:20mA;波长:615nm~630nm;二极管配置:独立二极管;透镜颜色:无色透明透镜;色温:-;发光强度:300mcd;发光角度:120°;载带方式:-;工作温度:-40℃~+85℃; +Unique ID +gge15_0 +Reuse Block + +Group ID + +Channel ID +$1I67 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +J1 +FOOTPRINT +USB-C-SMD_TYPE-C-16PIN-2MD-073 +PARTTYPE +TYPE-C 16PIN 2MD(073) +DESCRIPTION +连接器类型:Type-C;协议标准:-;公母:母;安装方式:卧贴;触点数量:16P;端口数量:1;额定电流 - 电源:3A;工作温度:-25℃~+85℃; +Component Kind +Standard +Footprint +USB-C-SMD_TYPE-C-16PIN-2MD-073 +Designator +J1 +LCSC Part Name +Type-C 母 卧贴 +Supplier Part +C2765186 +Manufacturer +SHOU HAN(首韩) +Manufacturer Part +TYPE-C 16PIN 2MD(073) +Supplier Footprint +SMD +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/TYPE-C%252016PIN%25202MD(073)/2901843.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +USB-C-SMD_TYPE-C-6PIN-2MD-073 +Connector Type +Type-C +Protocol Standard +- +Gender +母 +Mounting Type +卧贴 +Number of Contacts +16P +Number of Ports +1 +Current Rating-Power +3A +Voltage Rating +5V +Connect-Disconnect Life +1万次 +Supplementary Features +- +Center Height +- +Length +- +Detection color +黑色 +Operating Temperature +-25℃~+85℃ +Name +TYPE-C 16PIN 2MD(073) +Description +连接器类型:Type-C;协议标准:-;公母:母;安装方式:卧贴;触点数量:16P;端口数量:1;额定电流 - 电源:3A;工作温度:-25℃~+85℃; +Device +TYPE-C 16PIN 2MD(073) +Unique ID +gge37 +Reuse Block + +Group ID + +Channel ID +$1I81 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +J2 +FOOTPRINT +CONN-TH_B8B-XH-AM-LF-SN +PARTTYPE +B8B-XH-AM(LF)(SN) +DESCRIPTION +插针结构:1x8P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:8P;排数:1;每排PIN数:8;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Component Kind +Standard +Footprint +CONN-TH_B8B-XH-AM-LF-SN +Designator +J2 +LCSC Part Name +1x8P 间距:2.5mm 直插 系列:XH +Supplier Part +C161875 +Manufacturer +JST +Manufacturer Part +B8B-XH-AM(LF)(SN) +Supplier Footprint +插件,P=2.5mm +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/B8B-XH-AM(LF)(SN)/173256.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +CONN-TH_B8B-XH-AM (LF)(SN) +Pins Structure +1x8P +Pitch +2.5mm +Mounting Type +直插 +Reference Series +XH +Number of Pins +8P +Number of Rows +1 +Number of PINs Per Row +8 +Row Spacing +- +Current Rating +3A +Contact Material +黄铜 +Contact Plating +锡 +Operating Temperature +-25℃~+85℃ +Voltage Rating +250V +Plastic Material +PA66 +Flame Retardant Rating +UL94V-0 +Supplementary Features +带柱;打K脚 +Color +白色 +Z-Height of the Board +7mm +X-Length of Bottom Edge on Board (Spacing Line) +22.4mm +Y-Width of Bottom Edge on Board +5.75mm +Name +B8B-XH-AM(LF)(SN) +Description +插针结构:1x8P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:8P;排数:1;每排PIN数:8;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Device +B8B-XH-AM(LF)(SN) +Unique ID +gge33 +Reuse Block + +Group ID + +Channel ID +$1I62 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +J3 +FOOTPRINT +CONN-TH_B2B-XH-A-LF-SN +PARTTYPE +B2B-XH-A(LF)(SN) +DESCRIPTION +插针结构:1x2P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:2P;排数:1;每排PIN数:2;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Component Kind +Standard +Footprint +CONN-TH_B2B-XH-A-LF-SN +Designator +J3 +LCSC Part Name +1x2P 间距:2.5mm 直插 系列:XH +Supplier Part +C158012 +Manufacturer +JST +Manufacturer Part +B2B-XH-A(LF)(SN) +Supplier Footprint +插件,P=2.5mm +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/B2B-XH-A(LF)(SN)/169360.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +XH2.5-2A +Pins Structure +1x2P +Pitch +2.5mm +Mounting Type +直插 +Reference Series +XH +Number of Pins +2P +Number of Rows +1 +Number of PINs Per Row +2 +Row Spacing +- +Current Rating +3A +Contact Material +黄铜 +Contact Plating +锡 +Operating Temperature +-25℃~+85℃ +Voltage Rating +250V +Plastic Material +PA66 +Flame Retardant Rating +UL94V-0 +Supplementary Features +打K脚 +Color +白色 +Z-Height of the Board +7mm +X-Length of Bottom Edge on Board (Spacing Line) +7.4mm +Y-Width of Bottom Edge on Board +5.75mm +Name +B2B-XH-A(LF)(SN) +Description +插针结构:1x2P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:2P;排数:1;每排PIN数:2;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Device +B2B-XH-A(LF)(SN) +Unique ID +gge32_0 +Reuse Block + +Group ID + +Channel ID +$1I156 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +J4 +FOOTPRINT +CONN-TH_3P-P2.50_A2501WV2-3P +PARTTYPE +B3B-XH-A(LF)(SN) +DESCRIPTION +插针结构:1x3P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:3P;排数:1;每排PIN数:3;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Component Kind +Standard +Footprint +CONN-TH_3P-P2.50_A2501WV2-3P +Designator +J4 +LCSC Part Name +1x3P 间距:2.5mm 直插 系列:XH +Supplier Part +C144394 +Manufacturer +JST +Manufacturer Part +B3B-XH-A(LF)(SN) +Supplier Footprint +插件,P=2.5mm +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/B3B-XH-A(LF)(SN)/155726.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +CONN-TH_3P-P2.50_A2501WV2-3P +Pins Structure +1x3P +Pitch +2.5mm +Mounting Type +直插 +Reference Series +XH +Number of Pins +3P +Number of Rows +1 +Number of PINs Per Row +3 +Row Spacing +- +Current Rating +3A +Contact Material +黄铜 +Contact Plating +锡 +Operating Temperature +-25℃~+85℃ +Voltage Rating +250V +Plastic Material +PA66 +Flame Retardant Rating +UL94V-0 +Supplementary Features +打K脚 +Color +白色 +Z-Height of the Board +7mm +X-Length of Bottom Edge on Board (Spacing Line) +9.9mm +Y-Width of Bottom Edge on Board +5.75mm +Name +B3B-XH-A(LF)(SN) +Description +插针结构:1x3P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:3P;排数:1;每排PIN数:3;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Device +B3B-XH-A(LF)(SN) +Unique ID +gge46 +Reuse Block + +Group ID + +Channel ID +$1I96 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +J6 +FOOTPRINT +CONN-TH_B4B-XH-A-LF-SN +PARTTYPE +B4B-XH-A(LF)(SN) +DESCRIPTION +插针结构:1x4P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:4P;排数:1;每排PIN数:4;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Component Kind +Standard +Footprint +CONN-TH_B4B-XH-A-LF-SN +Designator +J6 +LCSC Part Name +1x4P 间距:2.5mm 直插 系列:XH +Supplier Part +C144395 +Manufacturer +JST +Manufacturer Part +B4B-XH-A(LF)(SN) +Supplier Footprint +插件,P=2.5mm +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/B4B-XH-A(LF)(SN)/155727.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +XH2.5-4A +Pins Structure +1x4P +Pitch +2.5mm +Mounting Type +直插 +Reference Series +XH +Number of Pins +4P +Number of Rows +1 +Number of PINs Per Row +4 +Row Spacing +- +Current Rating +3A +Contact Material +黄铜 +Contact Plating +锡 +Operating Temperature +-25℃~+85℃ +Voltage Rating +250V +Plastic Material +PA66 +Flame Retardant Rating +UL94V-0 +Supplementary Features +打K脚 +Color +白色 +Z-Height of the Board +7mm +X-Length of Bottom Edge on Board (Spacing Line) +12.4mm +Y-Width of Bottom Edge on Board +5.75mm +Name +B4B-XH-A(LF)(SN) +Description +插针结构:1x4P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:4P;排数:1;每排PIN数:4;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Device +B4B-XH-A(LF)(SN) +Unique ID +gge94 +Reuse Block + +Group ID + +Channel ID +$1I155 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +L1 +FOOTPRINT +L0402 +PARTTYPE +LQW15AN24NG00D +DESCRIPTION +电感值:24nH;精度:±2%;额定电流:280mA;饱和电流(Isat):-;类型:非屏蔽电感; +Component Kind +Standard +Footprint +L0402 +Designator +L1 +LCSC Part Name +24nH ±2% +Supplier Part +C167472 +Manufacturer +muRata(村田) +Manufacturer Part +LQW15AN24NG00D +Supplier Footprint +0402 +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/LQW15AN24NG00D/178855.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +L0402_L1.0-W0.5-H0.5_BEAD +Value +24nH +Tolerance +±2% +Current Rating +280mA +Current - Saturation(Isat) +- +DC Resistance(DCR) +520mΩ +Type +非屏蔽电感 +Ratings +- +Name +24nH +Description +电感值:24nH;精度:±2%;额定电流:280mA;饱和电流(Isat):-;类型:非屏蔽电感; +Device +LQW15AN24NG00D +Unique ID +gge59 +Reuse Block + +Group ID + +Channel ID +$1I127 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +L2 +FOOTPRINT +L0603 +PARTTYPE +BLM18PG121SN1D +DESCRIPTION +阻抗@频率:120Ω@100MHz;误差:±25%;直流电阻(DCR):50mΩ; +Component Kind +Standard +Footprint +L0603 +Designator +L2 +LCSC Part Name +单路 0603磁珠 阻抗120Ω@100MHz +Supplier Part +C14709 +Manufacturer +muRata(村田) +Manufacturer Part +BLM18PG121SN1D +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/BLM18PG121SN1D/15379.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +L0603_L1.6-W0.8-H0.5_BEAD +Impedance @ Frequency +120Ω@100MHz +Tolerance +±25% +DC Resistance(DCR) +50mΩ +Current Rating +2A +Number of Circuits +1 +Operating Temperature +-55℃~+125℃ +Name +BLM18PG121SN1D +Description +阻抗@频率:120Ω@100MHz;误差:±25%;直流电阻(DCR):50mΩ; +Device +BLM18PG121SN1D +Unique ID +gge89 +Reuse Block + +Group ID + +Channel ID +$1I140 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +L3 +FOOTPRINT +IND-SMD_L4.4-W4.2 +PARTTYPE +FXL0420-1R0-M +DESCRIPTION +电感值:1uH;精度:±20%;额定电流:6A;饱和电流(Isat):7A;类型:一体成型电感; +Component Kind +Standard +Footprint +IND-SMD_L4.4-W4.2 +Designator +L3 +LCSC Part Name +1uH ±20% 7A +Supplier Part +C167203 +Manufacturer +cjiang(长江微电) +Manufacturer Part +FXL0420-1R0-M +Supplier Footprint +SMD,4.2x4.4mm +JLCPCB Part Class +Extended Part +Datasheet +https://atta.szlcsc.com/upload/public/pdf/source/20240426/3189EA8206330E2108542F9E34E540E7.pdf +Supplier +LCSC +Add into BOM +yes +3D Model Title +IND-SMD_L4.2-W4.4-H2.0 +Value +1uH +Tolerance +±20% +Rated Current +6A +Saturation Current (Isat) +7A +DC Resistance (DCR) +27mΩ +Type +一体成型电感 +Name +1uH +Description +电感值:1uH;精度:±20%;额定电流:6A;饱和电流(Isat):7A;类型:一体成型电感; +Device +FXL0420-1R0-M +Unique ID +gge97 +Reuse Block + +Group ID + +Channel ID +$1I160 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R1 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R1 +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +10kΩ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF1002TCE +Unique ID +gge12 +Reuse Block + +Group ID + +Channel ID +$1I108 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R2 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1001TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R2 +LCSC Part Name +1kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C11702 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1001TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1001TCE/12256.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +1kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +1kΩ +Description +电阻类型:厚膜电阻;阻值:1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF1001TCE +Unique ID +gge96 +Reuse Block + +Group ID + +Channel ID +$1I159 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R3 +FOOTPRINT +R0402 +PARTTYPE +0402WGF4701TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:4.7kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R3 +LCSC Part Name +4.7kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25900 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF4701TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF4701TCE/26643.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +4.7kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +4.7kΩ +Description +电阻类型:厚膜电阻;阻值:4.7kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF4701TCE +Unique ID +gge16 +Reuse Block + +Group ID + +Channel ID +$1I110 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R4 +FOOTPRINT +R0402 +PARTTYPE +0402WGF4701TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:4.7kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R4 +LCSC Part Name +4.7kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25900 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF4701TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF4701TCE/26643.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +4.7kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +4.7kΩ +Description +电阻类型:厚膜电阻;阻值:4.7kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF4701TCE +Unique ID +gge17 +Reuse Block + +Group ID + +Channel ID +$1I111 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R5 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R5 +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +10kΩ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF1002TCE +Unique ID +gge18 +Reuse Block + +Group ID + +Channel ID +$1I114 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R6 +FOOTPRINT +R0402 +PARTTYPE +0402WGF5101TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:5.1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R6 +LCSC Part Name +5.1kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25905 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF5101TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF5101TCE/26648.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +5.1kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +5.1kΩ +Description +电阻类型:厚膜电阻;阻值:5.1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF5101TCE +Unique ID +gge30 +Reuse Block + +Group ID + +Channel ID +$1I55 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R7 +FOOTPRINT +R0402 +PARTTYPE +0402WGF5101TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:5.1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R7 +LCSC Part Name +5.1kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25905 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF5101TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF5101TCE/26648.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +5.1kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +5.1kΩ +Description +电阻类型:厚膜电阻;阻值:5.1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF5101TCE +Unique ID +gge29 +Reuse Block + +Group ID + +Channel ID +$1I54 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R9 +FOOTPRINT +R0402 +PARTTYPE +0402WGF220JTCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:22Ω;精度:±1%;功率:62.5mW;最大工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R9 +LCSC Part Name +22Ω ±1% 62.5mW 厚膜电阻 +Supplier Part +C25092 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF220JTCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://atta.szlcsc.com/upload/public/pdf/source/20200306/C422600_1E6D84923E4A46A82E41ADD87F860B5C.pdf +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +22Ω +Tolerance +±1% +Power(Watts) +62.5mW +Overload Voltage (Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature Range +-55℃~+155℃ +Name +22Ω +Description +电阻类型:厚膜电阻;阻值:22Ω;精度:±1%;功率:62.5mW;最大工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF220JTCE +Unique ID +gge39 +Reuse Block + +Group ID + +Channel ID +$1I112 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R10 +FOOTPRINT +R0402 +PARTTYPE +0402WGF220JTCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:22Ω;精度:±1%;功率:62.5mW;最大工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R10 +LCSC Part Name +22Ω ±1% 62.5mW 厚膜电阻 +Supplier Part +C25092 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF220JTCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://atta.szlcsc.com/upload/public/pdf/source/20200306/C422600_1E6D84923E4A46A82E41ADD87F860B5C.pdf +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +22Ω +Tolerance +±1% +Power(Watts) +62.5mW +Overload Voltage (Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature Range +-55℃~+155℃ +Name +22Ω +Description +电阻类型:厚膜电阻;阻值:22Ω;精度:±1%;功率:62.5mW;最大工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF220JTCE +Unique ID +gge40 +Reuse Block + +Group ID + +Channel ID +$1I113 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R11 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R11 +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +10kΩ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF1002TCE +Unique ID +gge12_0 +Reuse Block + +Group ID + +Channel ID +$1I119 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R12 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R12 +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +10kΩ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF1002TCE +Unique ID +gge12_1 +Reuse Block + +Group ID + +Channel ID +$1I120 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +RESET +FOOTPRINT +SW-SMD_L3.9-W3.0-P4.45 +PARTTYPE +TS-1088-AR02016 +DESCRIPTION +电路结构:单刀单掷;按钮形状:圆形按钮;作用力:1.6N;安装方式:立贴;开关长度:3.9mm;开关宽度:3mm;开关高度:2mm;带支架:不带支架;触点电流:50mA;额定电压:12V;带灯:-;工作寿命:10万次; +Component Kind +Standard +Footprint +SW-SMD_L3.9-W3.0-P4.45 +Designator +RESET +LCSC Part Name +3.9*3*2mm 立贴 轻触开关 +Supplier Part +C720477 +Manufacturer +XUNPU(讯普) +Manufacturer Part +TS-1088-AR02016 +Supplier Footprint +SMD,4x3mm +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/TS-1088-AR02016/763484.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +SW-SMD_L3.9-W2.9-H2.0-LS4.8 +Circuit +单刀单掷 +Actuator Style +圆形按钮 +Operating Force +1.6N +Mounting Type +立贴 +Length +3.9mm +Width +3mm +Switch Height +2mm +with Bracket +不带支架 +Contact Current +50mA +Voltage Rating +12V +Actuator/Cap Color +黑色 +With Lamp +- +IP Rating +- +Termination Style +SMD接片 +Life +10万次 +Operating Temperature +-30℃~+80℃ +Name +TS-1088-AR02016 +Description +电路结构:单刀单掷;按钮形状:圆形按钮;作用力:1.6N;安装方式:立贴;开关长度:3.9mm;开关宽度:3mm;开关高度:2mm;带支架:不带支架;触点电流:50mA;额定电压:12V;带灯:-;工作寿命:10万次; +Device +TS-1088-AR02016 +Unique ID +gge19 +Reuse Block + +Group ID + +Channel ID +$1I115 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +SPK1 +FOOTPRINT +BUZ-SMD_4P-L13.0-W13.0-P11.4-BL +PARTTYPE +FS-1340 +DESCRIPTION +阻抗:8Ω;谐振频率:850Hz;失真(THD):5%;额定功率:700mW;声压(SPL):88dB; +Component Kind +Standard +Footprint +BUZ-SMD_4P-L13.0-W13.0-P11.4-BL +Designator +SPK1 +LCSC Part Name +喇叭13*13MM-4.0H 8Ω0.5W 贴片 +Supplier Part +C482342 +Manufacturer +FUET(福声科技) +Manufacturer Part +FS-1340 +Supplier Footprint +- +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/FS-1340/490268.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +BUZ-SMD_4P-L13.0-W13.0-P11.4-BL +Frequency Range +850Hz~20kHz +Impedance +8Ω +Resonant Frequency +850Hz +Total Harmonic Distortion(THD) +5% +Rated Power +700mW +Sound Pressure Level(SPL) +88dB +Length +13mm +Width +13mm +Height +4mm +Operating Temperature +-40℃~+85℃ +Mounting Type +贴片 +Name +FS-1340 +Description +阻抗:8Ω;谐振频率:850Hz;失真(THD):5%;额定功率:700mW;声压(SPL):88dB; +Device +FS-1340 +Unique ID +gge95 +Reuse Block + +Group ID + +Channel ID +$1I157 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +U1 +FOOTPRINT +QFN-56_L7.0-W7.0-P0.40-BL-EP5.7 +PARTTYPE +ESP32-S3FH4R2 +DESCRIPTION +核心芯片:LX7芯片;频率:2.4GHz;天线形式:-;发射功率:21dBm;接收灵敏度:-104.5dBm; +Component Kind +Standard +Footprint +QFN-56_L7.0-W7.0-P0.40-BL-EP5.7 +Designator +U1 +LCSC Part Name +不带固件 Xtensa 32位Lx7双核微处理器,2.4 GHz Wi-Fi和Bluetooth 5(LE),45个GPIO管脚 +Supplier Part +C3013940 +Manufacturer +ESPRESSIF(乐鑫) +Manufacturer Part +ESP32-S3FH4R2 +Supplier Footprint +QFN-56(7x7) +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/ESP32-S3FH4R2/3522410.html +Supplier +LCSC +Add into BOM +yes +Utilized IC / Part +LX7芯片 +Wireless Standard +Bluetooth5.0 +Interface Type +SDIO;JTAG;UART;SPI;I2C +Value +2.4GHz +Antenna Type +- +Output Power +21dBm +Voltage - Supply +3V~3.6V +Receive Current +88mA +Send Current +340mA +Sensitivity +-104.5dBm +Operating Temperature +-40℃~+85℃ +Name +2.4GHz +Description +核心芯片:LX7芯片;频率:2.4GHz;天线形式:-;发射功率:21dBm;接收灵敏度:-104.5dBm; +Device +ESP32-S3FH4R2 +Unique ID +gge90 +3D Model Title +undefined +Reuse Block + +Group ID + +Channel ID +$1I97 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +U2 +FOOTPRINT +SOT-89_L4.5-W2.5-P1.50-LS4.2-BR +PARTTYPE +ME6211A33PG-N +DESCRIPTION +输出极性:正极;工作电压:6V;输出电压:3.3V;输出电流:500mA;电源纹波抑制比(PSRR):70dB@(1kHz);输出类型:固定; +Component Kind +Standard +Footprint +SOT-89_L4.5-W2.5-P1.50-LS4.2-BR +Designator +U2 +LCSC Part Name +3.3V 500mA 6V +Supplier Part +C236673 +Manufacturer +MICRONE(南京微盟) +Manufacturer Part +ME6211A33PG-N +Supplier Footprint +SOT-89 +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/ME6211A33PG-N/236113.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +SOT-89-3_L4.3-W2.5-H1.6-LS4.1-P1.50 +Output Configuration +正极 +Voltage - Supply +6V +Output Voltage +3.3V +Output Current +500mA +Power Supply Rejection Ratio (PSRR) +70dB@(1kHz) +Voltage Dropout +120mV@(100mA) +standby current +30uA +Noise +50uVrms +Features +使能控制;短路保护;过流保护 +Operating Temperature +-40℃~+150℃@(Ta) +Output Type +固定 +Number of Outputs +1 +Name +ME6211A33PG-N +Description +输出极性:正极;工作电压:6V;输出电压:3.3V;输出电流:500mA;电源纹波抑制比(PSRR):70dB@(1kHz);输出类型:固定; +Device +ME6211A33PG-N +Unique ID +gge1 +Reuse Block + +Group ID + +Channel ID +$1I4 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +U3 +FOOTPRINT +TQFN-16_L3.0-W3.0-P0.50-BL-EP1.5 +PARTTYPE +MAX98357AETE+T +DESCRIPTION +功放类型:D类功放;扬声器通道数:-;输出功率:3.2W×1@4Ω;静态电流(Iq):2.4mA; +Component Kind +Standard +Footprint +TQFN-16_L3.0-W3.0-P0.50-BL-EP1.5 +Designator +U3 +LCSC Part Name +微型、低成本、PCM 类 D 级放大器具有 AB 级性能 +Supplier Part +C910544 +Manufacturer +ADI(亚德诺)/MAXIM(美信) +Manufacturer Part +MAX98357AETE+T +Supplier Footprint +TQFN-16-EP(3x3) +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/MAX98357AETE%252BT/978950.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +TQFN-16_L3.0-W3.0-P0.50-BL-EP1.5 +Class +D类功放 +Speaker Channels +- +Output Power +3.2W×1@4Ω +Voltage - Supply +2.5V~5.5V +Total Harmonic Distortion + Noise (THD+N) +- +Quiescent Current +2.4mA +Operating Temperature +-40℃~+85℃ +Power Supply Rejection Ratio (PSRR) +77dB +Efficiency +92% +Name +MAX98357AETE+T +Description +功放类型:D类功放;扬声器通道数:-;输出功率:3.2W×1@4Ω;静态电流(Iq):2.4mA; +Device +MAX98357AETE+T +Unique ID +gge23 +Reuse Block + +Group ID + +Channel ID +$1I35 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +U4 +FOOTPRINT +ESOP-8_L4.9-W3.9-P1.27-LS6.0-BL-EP +PARTTYPE +IP5306 +DESCRIPTION +工作电压:4.65V~5.5V;最大充电电流:2.1A;电池类型:锂电池;电池节数:1; +Component Kind +Standard +Footprint +ESOP-8_L4.9-W3.9-P1.27-LS6.0-BL-EP +Designator +U4 +LCSC Part Name +集成2.1A充电器和2.1A放电器的移动电源系统级芯片 +Supplier Part +C181692 +Manufacturer +INJOINIC(英集芯) +Manufacturer Part +IP5306 +Supplier Footprint +ESOP-8 +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/IP5306/193089.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +ESOP-8_L4.9-W3.9-H1.6-LS6.0-P1.27 +The Chip Type +充电芯片;保护芯片 +Voltage - Supply +4.65V~5.5V +Charge Current - Max +2.1A +Charging Saturation Voltage +4.2V +End-Off Voltage +3V +Type of Battery +锂电池 +Number of Cells +1 +Operating Temperature +0℃~+70℃ +Battery Temperature Detection +不支持 +0V Battery Charge +不支持 +Supply Current (Iq) +100uA +Balance Current +- +Interface +I2C +Features +过流保护;恒流充电;自动再充电;充电终止;过压保护;欠压锁定;过放保护;涓流充电;短路保护 +Name +IP5306 +Description +工作电压:4.65V~5.5V;最大充电电流:2.1A;电池类型:锂电池;电池节数:1; +Device +IP5306 +Unique ID +gge93 +Reuse Block + +Group ID + +Channel ID +$1I153 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +U5 +FOOTPRINT +LGA-16_L3.0-W3.0-P0.50-TL +PARTTYPE +LIS3DHTR +DESCRIPTION +传感器类型:加速度计;接口类型:I2C;SPI; +Component Kind +Standard +Footprint +LGA-16_L3.0-W3.0-P0.50-TL +Designator +U5 +LCSC Part Name +MEMS数字输出运动传感器:超低功耗、高性能三轴加速度计 +Supplier Part +C15134 +Manufacturer +ST(意法半导体) +Manufacturer Part +LIS3DHTR +Supplier Footprint +LGA-16(3x3) +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/LIS3DHTR/15808.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +LGA-16_L3.0-W3.0-P0.50-TL +Accelerometer Sensing Axis +X,Y,Z +Acceleration Measurement Range (MAX) +±16g +Gyroscope Sensing Axis +- +Gyroscope Measurement Range (MAX) +- +Sensor Type +加速度计 +Output Bits +16bit +Interface +I2C;SPI +Voltage - Supply +1.71V~3.6V +Cache Size +- +Standby Current +500nA +Operating Temperature +-40℃~+85℃ +Features +运动事件检测 +Name +LIS3DHTR +Description +传感器类型:加速度计;接口类型:I2C;SPI; +Device +LIS3DHTR +Unique ID +gge4 +Reuse Block + +Group ID + +Channel ID +$1I8 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +X1 +FOOTPRINT +CRYSTAL-SMD_4P-L2.5-W2.0-BL +PARTTYPE +TXM40M0004252HBCEO00T +DESCRIPTION +晶振类型:贴片晶振;频率:40MHz;常温频差:±10ppm;负载电容:15pF;频率稳定度:±30ppm; +Component Kind +Standard +Footprint +CRYSTAL-SMD_4P-L2.5-W2.0-BL +Designator +X1 +LCSC Part Name +40MHz ±10ppm 15pF +Supplier Part +C284176 +Manufacturer +YJX(雅晶鑫) +Manufacturer Part +TXM40M0004252HBCEO00T +Supplier Footprint +SMD2520-4P +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/TXM40M0004252HBCEO00T/270225.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +CRYSTAL-SMD_4P-L2.5-W2.0-BL +Type +贴片晶振 +Value +40MHz +Normal temperature Frequency Tolerance +±10ppm +Load Capacitance +15pF +Frequency Stability +±30ppm +Equivalent Series Resistance(ESR) +25Ω +Operating Temperature +-40℃~+85℃ +Name +40MHz +Description +晶振类型:贴片晶振;频率:40MHz;常温频差:±10ppm;负载电容:15pF;频率稳定度:±30ppm; +Device +TXM40M0004252HBCEO00T +Unique ID +gge91 +Reuse Block + +Group ID + +Channel ID +$1I131 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R8 +FOOTPRINT +R0603 +PARTTYPE +0603WAF0000T5E +DESCRIPTION +电阻类型:厚膜电阻;阻值:0Ω;精度:±1%;功率:100mW;工作电压:75V;温度系数:-; +Component Kind +Standard +Footprint +R0603 +Designator +R8 +LCSC Part Name +0Ω ±1% 100mW 厚膜电阻 +Supplier Part +C21189 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0603WAF0000T5E +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0603WAF0000T5E/21903.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0603 +Type +厚膜电阻 +Value +0Ω +Tolerance +±1% +Power(Watts) +100mW +Voltage-Supply(Max) +75V +Temperature Coefficient +- +Operating Temperature +-55℃~+155℃ +Name +0Ω +Description +电阻类型:厚膜电阻;阻值:0Ω;精度:±1%;功率:100mW;工作电压:75V;温度系数:-; +Device +0603WAF0000T5E +Unique ID +gge101 +Reuse Block + +Group ID + +Channel ID +$1I168 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R13 +FOOTPRINT +R0402 +PARTTYPE +0402WGF4702TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:47kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R13 +LCSC Part Name +47kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25792 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF4702TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF4702TCE/26535.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +47kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +47kΩ +Description +电阻类型:厚膜电阻;阻值:47kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF4702TCE +Unique ID +gge102 +Reuse Block + +Group ID + +Channel ID +$1I169 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C23 +FOOTPRINT +C0603 +PARTTYPE +CL10A106KP8NNNC +DESCRIPTION +容值:10uF;精度:±10%;额定电压:10V;温度系数:X5R; +Component Kind +Standard +Footprint +C0603 +Designator +C23 +LCSC Part Name +10uF ±10% 10V +Supplier Part +C19702 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106KP8NNNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106KP8NNNC/20411.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±10% +Voltage Rating +10V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±10%;额定电压:10V;温度系数:X5R; +Device +CL10A106KP8NNNC +Unique ID +gge107 +Reuse Block + +Group ID + +Channel ID +$1I178 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C25 +FOOTPRINT +C0603 +PARTTYPE +CL10A106KP8NNNC +DESCRIPTION +容值:10uF;精度:±10%;额定电压:10V;温度系数:X5R; +Component Kind +Standard +Footprint +C0603 +Designator +C25 +LCSC Part Name +10uF ±10% 10V +Supplier Part +C19702 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106KP8NNNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106KP8NNNC/20411.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±10% +Voltage Rating +10V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±10%;额定电压:10V;温度系数:X5R; +Device +CL10A106KP8NNNC +Unique ID +gge105 +Reuse Block + +Group ID + +Channel ID +$1I176 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R14 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R14 +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +10kΩ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF1002TCE +Unique ID +gge109 +Reuse Block + +Group ID + +Channel ID +$1I181 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +R15 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Footprint +R0402 +Designator +R15 +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +10kΩ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Device +0402WGF1002TCE +Unique ID +gge110 +Reuse Block + +Group ID + +Channel ID +$1I182 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +D3 +FOOTPRINT +SOD-123FL_L2.7-W1.8-LS3.8-RD +PARTTYPE +SMF5.0A_C19077497 +DESCRIPTION +极性:单向;反向截止电压(Vrwm):5V;钳位电压:9.2V;峰值脉冲电流(Ipp):21.7A@10/1000us;峰值脉冲功率(Ppp):200W@10/1000us;击穿电压:7V; +Component Kind +Standard +Footprint +SOD-123FL_L2.7-W1.8-LS3.8-RD +Designator +D3 +LCSC Part Name +单向TVS 5V截止 峰值浪涌电流:21.7A@10/1000us +Supplier Part +C19077497 +Manufacturer +R+O(宏嘉诚) +Manufacturer Part +SMF5.0A +Supplier Footprint +SOD-123FL +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/SMF5.0A/20275582.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +SOD-123FL_L2.8-W1.8-H1.1-LS3.6 +Polarity +单向 +Reverse Stand-Off Voltage (Vrwm) +5V +Clamping Voltage +9.2V +Peak Pulse Current (Ipp) +21.7A@10/1000us +Peak Pulse Power Dissipation (Ppp) +200W@10/1000us +Voltage - Breakdown +7V +Reverse Leakage Current (Ir) +400uA +Number of Channels +单路 +Operating Temperature +-55℃~+150℃ +level of protection +IEC 61000-4-2 +Type +TVS +Junction Capacitance +- +Name +SMF5.0A +Description +极性:单向;反向截止电压(Vrwm):5V;钳位电压:9.2V;峰值脉冲电流(Ipp):21.7A@10/1000us;峰值脉冲功率(Ppp):200W@10/1000us;击穿电压:7V; +Device +SMF5.0A_C19077497 +Unique ID +gge108 +Reuse Block + +Group ID + +Channel ID +$1I180 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C24 +FOOTPRINT +C0805 +PARTTYPE +CL21A226MAQNNNE +DESCRIPTION +容值:22uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Footprint +C0805 +Designator +C24 +LCSC Part Name +22uF ±20% 25V +Supplier Part +C45783 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL21A226MAQNNNE +Supplier Footprint +0805 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL21A226MAQNNNE/46786.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0805_L2.0-W1.3-H1.3 +Value +22uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +22uF +Description +容值:22uF;精度:±20%;额定电压:25V;温度系数:X5R; +Device +CL21A226MAQNNNE +Unique ID +gge111 +Reuse Block + +Group ID + +Channel ID +$1I186 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +[ +DESIGNATOR +C2 +FOOTPRINT +C0402 +PARTTYPE +CL05A106MQ5NUNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:6.3V;温度系数:X5R; +Component Kind +Standard +Footprint +C0402 +Designator +C2 +LCSC Part Name +10uF ±20% 6.3V +Supplier Part +C15525 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05A106MQ5NUNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05A106MQ5NUNC/16204.html +Supplier +LCSC +Add into BOM +yes +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +10uF +Tolerance +±20% +Voltage Rating +6.3V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:6.3V;温度系数:X5R; +Device +CL05A106MQ5NUNC +Unique ID +gge112 +Reuse Block + +Group ID + +Channel ID +$1I188 +PCB Layer +TopLayer +Convert to PCB +yes + +* +] +( +GND +BOOT-1 TS-1088-AR02016-1 Passive +C1-2 CL05B104KB54PNC-2 Passive +C3-1 CL10A106MA8NRNC-1 Passive +C4-1 CL05A105KA5NQNC-1 Passive +C5-1 CL10A225KO8NNNC-1 Passive +C6-1 CL10A225KO8NNNC-1 Passive +C7-1 CC0603KRX7R9BB104-1 Passive +C8-1 CL10A106MA8NRNC-1 Passive +C9-2 CL10A106MA8NRNC-2 Passive +C10-2 CL05B104KO5NNNC-2 Passive +C11-2 CL10A106MA8NRNC-2 Passive +C12-2 CL05B104KO5NNNC-2 Passive +C13-2 CL05B104KO5NNNC-2 Passive +C14-2 CC0603KRX7R9BB104-2 Passive +C15-2 CL05B104KB54PNC-2 Passive +C16-2 0402CG220J500NT-2 Passive +C17-2 0402CG220J500NT-2 Passive +C18-2 CL05B104KB54PNC-2 Passive +C19-2 CL05B104KB54PNC-2 Passive +C20-2 CL05B104KB54PNC-2 Passive +C21-2 CL05B104KB54PNC-2 Passive +C22-2 CL05B104KB54PNC-2 Passive +J1-A1B12 TYPE-C 16PIN 2MD(073)-A1B12 Passive +J1-B1A12 TYPE-C 16PIN 2MD(073)-B1A12 Passive +J2-1 B8B-XH-AM(LF)(SN)-1 Passive +J3-2 B2B-XH-A(LF)(SN)-2 Passive +J6-3 B4B-XH-A(LF)(SN)-3 Passive +R6-2 0402WGF5101TCE-2 Passive +R7-1 0402WGF5101TCE-1 Passive +R11-2 0402WGF1002TCE-2 Passive +R12-2 0402WGF1002TCE-2 Passive +RESET-2 TS-1088-AR02016-2 Passive +SPK1-3 FS-1340-3 Passive +SPK1-4 FS-1340-4 Passive +U1-57 ESP32-S3FH4R2-57 Passive +U2-1 ME6211A33PG-N-1 Passive +U3-3 MAX98357AETE+T-3 Passive +U3-11 MAX98357AETE+T-11 Passive +U3-15 MAX98357AETE+T-15 Passive +U3-17 MAX98357AETE+T-17 Passive +U4-9 IP5306-9 Passive +U5-5 LIS3DHTR-5 Passive +U5-7 LIS3DHTR-7 Passive +U5-10 LIS3DHTR-10 Passive +U5-12 LIS3DHTR-12 Passive +X1-2 TXM40M0004252HBCEO00T-2 Passive +X1-4 TXM40M0004252HBCEO00T-4 Passive +R13-2 0402WGF4702TCE-2 Passive +C23-2 CL10A106KP8NNNC-2 Passive +C25-1 CL10A106KP8NNNC-1 Passive +R15-2 0402WGF1002TCE-2 Passive +D3-2 SMF5.0A_C19077497-2 Passive +C24-2 CL21A226MAQNNNE-2 Passive +C2-1 CL05A106MQ5NUNC-1 Passive +) +( +$1N183 +BOOT-2 TS-1088-AR02016-2 Passive +R1-2 0402WGF1002TCE-2 Passive +U1-5 ESP32-S3FH4R2-5 Passive +) +( +3V3 +C1-1 CL05B104KB54PNC-1 Passive +C3-2 CL10A106MA8NRNC-2 Passive +C6-2 CL10A225KO8NNNC-2 Passive +C7-2 CC0603KRX7R9BB104-2 Passive +C8-2 CL10A106MA8NRNC-2 Passive +C10-1 CL05B104KO5NNNC-1 Passive +C11-1 CL10A106MA8NRNC-1 Passive +C12-1 CL05B104KO5NNNC-1 Passive +C13-1 CL05B104KO5NNNC-1 Passive +C15-1 CL05B104KB54PNC-1 Passive +C18-1 CL05B104KB54PNC-1 Passive +C21-1 CL05B104KB54PNC-1 Passive +C22-1 CL05B104KB54PNC-1 Passive +D1-1 KT-0603R-1 Passive +J2-2 B8B-XH-AM(LF)(SN)-2 Passive +J2-8 B8B-XH-AM(LF)(SN)-8 Passive +J6-4 B4B-XH-A(LF)(SN)-4 Passive +L2-2 BLM18PG121SN1D-2 Passive +R1-1 0402WGF1002TCE-1 Passive +R3-1 0402WGF4701TCE-1 Passive +R4-1 0402WGF4701TCE-1 Passive +R5-2 0402WGF1002TCE-2 Passive +U1-2 ESP32-S3FH4R2-2 Passive +U1-3 ESP32-S3FH4R2-3 Passive +U1-20 ESP32-S3FH4R2-20 Passive +U1-29 ESP32-S3FH4R2-29 Passive +U1-46 ESP32-S3FH4R2-46 Passive +U2-3 ME6211A33PG-N-3 Passive +U3-2 MAX98357AETE+T-2 Passive +U3-7 MAX98357AETE+T-7 Passive +U3-8 MAX98357AETE+T-8 Passive +U5-1 LIS3DHTR-1 Passive +U5-8 LIS3DHTR-8 Passive +U5-14 LIS3DHTR-14 Passive +) +( +RESET +C4-2 CL05A105KA5NQNC-2 Passive +R5-1 0402WGF1002TCE-1 Passive +RESET-1 TS-1088-AR02016-1 Passive +U1-4 ESP32-S3FH4R2-4 Passive +) +( +BAT +C5-2 CL10A225KO8NNNC-2 Passive +J3-1 B2B-XH-A(LF)(SN)-1 Passive +U2-2 ME6211A33PG-N-2 Passive +U4-6 IP5306-6 Passive +C25-2 CL10A106KP8NNNC-2 Passive +R14-2 0402WGF1002TCE-2 Passive +) +( +VBUS +C9-1 CL10A106MA8NRNC-1 Passive +C14-1 CC0603KRX7R9BB104-1 Passive +U4-1 IP5306-1 Passive +R8-1 0603WAF0000T5E-1 Passive +C23-1 CL10A106KP8NNNC-1 Passive +) +( +$1N222 +C16-1 0402CG220J500NT-1 Passive +U1-53 ESP32-S3FH4R2-53 Passive +X1-3 TXM40M0004252HBCEO00T-3 Passive +) +( +$1N227 +C17-1 0402CG220J500NT-1 Passive +L1-2 LQW15AN24NG00D-2 Passive +X1-1 TXM40M0004252HBCEO00T-1 Passive +) +( +$1N236 +C19-1 CL05B104KB54PNC-1 Passive +C20-1 CL05B104KB54PNC-1 Passive +L2-1 BLM18PG121SN1D-1 Passive +U1-55 ESP32-S3FH4R2-55 Passive +U1-56 ESP32-S3FH4R2-56 Passive +C2-2 CL05A106MQ5NUNC-2 Passive +) +( +$1N257 +D1-2 KT-0603R-2 Passive +R2-1 0402WGF1001TCE-1 Passive +) +( +$1N173 +J1-A4B9 TYPE-C 16PIN 2MD(073)-A4B9 Passive +J1-B4A9 TYPE-C 16PIN 2MD(073)-B4A9 Passive +R8-2 0603WAF0000T5E-2 Passive +D3-1 SMF5.0A_C19077497-1 Passive +) +( +$1N152 +J1-A5 TYPE-C 16PIN 2MD(073)-A5 Passive +R6-1 0402WGF5101TCE-1 Passive +) +( +USBDN +J1-B7 TYPE-C 16PIN 2MD(073)-B7 Passive +J1-A7 TYPE-C 16PIN 2MD(073)-A7 Passive +R9-1 0402WGF220JTCE-1 Passive +) +( +USBDP +J1-A6 TYPE-C 16PIN 2MD(073)-A6 Passive +J1-B6 TYPE-C 16PIN 2MD(073)-B6 Passive +R10-1 0402WGF220JTCE-1 Passive +) +( +$1N95 +J1-B5 TYPE-C 16PIN 2MD(073)-B5 Passive +R7-2 0402WGF5101TCE-2 Passive +) +( +LCDCLK +J2-3 B8B-XH-AM(LF)(SN)-3 Passive +U1-17 ESP32-S3FH4R2-17 Passive +) +( +LCDMOSI +J2-4 B8B-XH-AM(LF)(SN)-4 Passive +U1-16 ESP32-S3FH4R2-16 Passive +) +( +LCDRST +J2-5 B8B-XH-AM(LF)(SN)-5 Passive +U1-13 ESP32-S3FH4R2-13 Passive +) +( +LCDDC +J2-6 B8B-XH-AM(LF)(SN)-6 Passive +U1-14 ESP32-S3FH4R2-14 Passive +) +( +LCDCS +J2-7 B8B-XH-AM(LF)(SN)-7 Passive +U1-15 ESP32-S3FH4R2-15 Passive +) +( +TOUCHRFACE +J4-1 B3B-XH-A(LF)(SN)-1 Passive +U1-11 ESP32-S3FH4R2-11 Passive +) +( +TOUCHLFACE +J4-2 B3B-XH-A(LF)(SN)-2 Passive +U1-7 ESP32-S3FH4R2-7 Passive +) +( +TOUCHHEAD +J4-3 B3B-XH-A(LF)(SN)-3 Passive +U1-6 ESP32-S3FH4R2-6 Passive +) +( +TXD0 +J6-1 B4B-XH-A(LF)(SN)-1 Passive +U1-49 ESP32-S3FH4R2-49 Passive +) +( +RXD0 +J6-2 B4B-XH-A(LF)(SN)-2 Passive +U1-50 ESP32-S3FH4R2-50 Passive +) +( +$1N221 +L1-1 LQW15AN24NG00D-1 Passive +U1-54 ESP32-S3FH4R2-54 Passive +) +( +SW +L3-1 FXL0420-1R0-M-1 Passive +U4-7 IP5306-7 Passive +) +( +VOUT +L3-2 FXL0420-1R0-M-2 Passive +U4-8 IP5306-8 Passive +C24-1 CL21A226MAQNNNE-1 Passive +) +( +$1N258 +R2-2 0402WGF1001TCE-2 Passive +U4-2 IP5306-2 Passive +) +( +ACCELSCL +R3-2 0402WGF4701TCE-2 Passive +U1-23 ESP32-S3FH4R2-23 Passive +U5-4 LIS3DHTR-4 Passive +) +( +ACCELSDA +R4-2 0402WGF4701TCE-2 Passive +U1-24 ESP32-S3FH4R2-24 Passive +U5-6 LIS3DHTR-6 Passive +) +( +$1N200 +R9-2 0402WGF220JTCE-2 Passive +U1-25 ESP32-S3FH4R2-25 Passive +) +( +$1N199 +R10-2 0402WGF220JTCE-2 Passive +U1-26 ESP32-S3FH4R2-26 Passive +) +( +$1N215 +R11-1 0402WGF1002TCE-1 Passive +U1-52 ESP32-S3FH4R2-52 Passive +) +( +$1N216 +R12-1 0402WGF1002TCE-1 Passive +U1-51 ESP32-S3FH4R2-51 Passive +) +( +SPKP +SPK1-1 FS-1340-1 Passive +U3-9 MAX98357AETE+T-9 Passive +) +( +SPKN +SPK1-2 FS-1340-2 Passive +U3-10 MAX98357AETE+T-10 Passive +) +( +I2SBCLK +U1-9 ESP32-S3FH4R2-9 Passive +U3-16 MAX98357AETE+T-16 Passive +) +( +I2SWS +U1-10 ESP32-S3FH4R2-10 Passive +U3-14 MAX98357AETE+T-14 Passive +) +( +AMPDIN +U1-12 ESP32-S3FH4R2-12 Passive +U3-1 MAX98357AETE+T-1 Passive +) +( +AMPSDMODE +U1-18 ESP32-S3FH4R2-18 Passive +U3-4 MAX98357AETE+T-4 Passive +R13-1 0402WGF4702TCE-1 Passive +) +( +BATADC +U1-19 ESP32-S3FH4R2-19 Passive +R14-1 0402WGF1002TCE-1 Passive +R15-1 0402WGF1002TCE-1 Passive +) +( +ACCELINT1 +U1-27 ESP32-S3FH4R2-27 Passive +U5-11 LIS3DHTR-11 Passive +) diff --git a/pet-v1/新机器人电路图网表.net b/pet-v1/新机器人电路图网表.net new file mode 100644 index 0000000..d62633e --- /dev/null +++ b/pet-v1/新机器人电路图网表.net @@ -0,0 +1,4413 @@ +PROTEL NETLIST 2.0 +[ +DESIGNATOR +U2 +FOOTPRINT +SOT-89_L4.5-W2.5-P1.50-LS4.2-BR +PARTTYPE +ME6211A33PG-N +DESCRIPTION +输出极性:正极;工作电压:6V;输出电压:3.3V;输出电流:500mA;电源纹波抑制比(PSRR):70dB@(1kHz);输出类型:固定; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +ME6211A33PG-N +Designator +U2 +Device +ME6211A33PG-N +Unique ID +gge1 +Name +ME6211A33PG-N +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +3.3V 500mA 6V +Supplier Part +C236673 +Manufacturer +MICRONE(南京微盟) +Manufacturer Part +ME6211A33PG-N +Supplier Footprint +SOT-89 +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/ME6211A33PG-N/236113.html +Supplier +LCSC +3D Model Title +SOT-89-3_L4.3-W2.5-H1.6-LS4.1-P1.50 +Output Configuration +正极 +Voltage - Supply +6V +Output Voltage +3.3V +Output Current +500mA +Power Supply Rejection Ratio (PSRR) +70dB@(1kHz) +Voltage Dropout +120mV@(100mA) +standby current +30uA +Noise +50uVrms +Features +使能控制;短路保护;过流保护 +Operating Temperature +-40℃~+150℃@(Ta) +Output Type +固定 +Number of Outputs +1 +Description +输出极性:正极;工作电压:6V;输出电压:3.3V;输出电流:500mA;电源纹波抑制比(PSRR):70dB@(1kHz);输出类型:固定; + +* +] +[ +DESIGNATOR +U5 +FOOTPRINT +LGA-16_L3.0-W3.0-P0.50-TL +PARTTYPE +LIS3DHTR +DESCRIPTION +传感器类型:加速度计;接口类型:I2C;SPI; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +LIS3DHTR_C15134 +Designator +U5 +Device +LIS3DHTR +Unique ID +gge4 +Name +LIS3DHTR +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +MEMS数字输出运动传感器:超低功耗、高性能三轴加速度计 +Supplier Part +C15134 +Manufacturer +ST(意法半导体) +Manufacturer Part +LIS3DHTR +Supplier Footprint +LGA-16(3x3) +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/LIS3DHTR/15808.html +Supplier +LCSC +3D Model Title +LGA-16_L3.0-W3.0-P0.50-TL +Accelerometer Sensing Axis +X,Y,Z +Acceleration Measurement Range (MAX) +±16g +Gyroscope Sensing Axis +- +Gyroscope Measurement Range (MAX) +- +Sensor Type +加速度计 +Output Bits +16bit +Interface +I2C;SPI +Voltage - Supply +1.71V~3.6V +Cache Size +- +Standby Current +500nA +Operating Temperature +-40℃~+85℃ +Features +运动事件检测 +Description +传感器类型:加速度计;接口类型:I2C;SPI; + +* +] +[ +DESIGNATOR +U3 +FOOTPRINT +TQFN-16_L3.0-W3.0-P0.50-BL-EP1.5 +PARTTYPE +MAX98357AETE+T +DESCRIPTION +功放类型:D类功放;扬声器通道数:-;输出功率:3.2W×1@4Ω;静态电流(Iq):2.4mA; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +MAX98357AETE+T +Designator +U3 +Device +MAX98357AETE+T +Unique ID +gge23 +Name +MAX98357AETE+T +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +微型、低成本、PCM 类 D 级放大器具有 AB 级性能 +Supplier Part +C910544 +Manufacturer +ADI(亚德诺)/MAXIM(美信) +Manufacturer Part +MAX98357AETE+T +Supplier Footprint +TQFN-16-EP(3x3) +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/MAX98357AETE%252BT/978950.html +Supplier +LCSC +3D Model Title +TQFN-16_L3.0-W3.0-P0.50-BL-EP1.5 +Class +D类功放 +Speaker Channels +- +Output Power +3.2W×1@4Ω +Voltage - Supply +2.5V~5.5V +Total Harmonic Distortion + Noise (THD+N) +- +Quiescent Current +2.4mA +Operating Temperature +-40℃~+85℃ +Power Supply Rejection Ratio (PSRR) +77dB +Efficiency +92% +Description +功放类型:D类功放;扬声器通道数:-;输出功率:3.2W×1@4Ω;静态电流(Iq):2.4mA; + +* +] +[ +DESIGNATOR +C7 +FOOTPRINT +C0603 +PARTTYPE +CC0603KRX7R9BB104 +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CC0603KRX7R9BB104 +Designator +C7 +Device +CC0603KRX7R9BB104 +Unique ID +gge24 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 50V +Supplier Part +C14663 +Manufacturer +YAGEO(国巨) +Manufacturer Part +CC0603KRX7R9BB104 +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CC0603KRX7R9BB104/15331.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; + +* +] +[ +DESIGNATOR +C8 +FOOTPRINT +C0603 +PARTTYPE +CL10A106MA8NRNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL10A106MA8NRNC +Designator +C8 +Device +CL10A106MA8NRNC +Unique ID +gge25 +Name +10uF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +10uF ±20% 25V +Supplier Part +C96446 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106MA8NRNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106MA8NRNC/97651.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Description +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; + +* +] +[ +DESIGNATOR +C10 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KO5NNNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KO5NNNC +Designator +C10 +Device +CL05B104KO5NNNC +Unique ID +gge27 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 16V +Supplier Part +C1525 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KO5NNNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KO5NNNC/1877.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; + +* +] +[ +DESIGNATOR +C12 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KO5NNNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KO5NNNC +Designator +C12 +Device +CL05B104KO5NNNC +Unique ID +gge28 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 16V +Supplier Part +C1525 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KO5NNNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KO5NNNC/1877.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; + +* +] +[ +DESIGNATOR +R7 +FOOTPRINT +R0402 +PARTTYPE +0402WGF5101TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:5.1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF5101TCE +Designator +R7 +Device +0402WGF5101TCE +Unique ID +gge29 +Name +5.1kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +5.1kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25905 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF5101TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF5101TCE/26648.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +5.1kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:5.1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +R6 +FOOTPRINT +R0402 +PARTTYPE +0402WGF5101TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:5.1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF5101TCE +Designator +R6 +Device +0402WGF5101TCE +Unique ID +gge30 +Name +5.1kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +5.1kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25905 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF5101TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF5101TCE/26648.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +5.1kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:5.1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +C13 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KO5NNNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KO5NNNC +Designator +C13 +Device +CL05B104KO5NNNC +Name +100nF +Unique ID +gge31 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 16V +Supplier Part +C1525 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KO5NNNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KO5NNNC/1877.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:16V;温度系数:X7R; + +* +] +[ +DESIGNATOR +J2 +FOOTPRINT +CONN-TH_B8B-XH-AM-LF-SN +PARTTYPE +B8B-XH-AM(LF)(SN) +DESCRIPTION +插针结构:1x8P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:8P;排数:1;每排PIN数:8;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +B8B-XH-AM (LF)(SN) +Designator +J2 +Device +B8B-XH-AM(LF)(SN) +Unique ID +gge33 +Name +B8B-XH-AM(LF)(SN) +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +1x8P 间距:2.5mm 直插 系列:XH +Supplier Part +C161875 +Manufacturer +JST +Manufacturer Part +B8B-XH-AM(LF)(SN) +Supplier Footprint +插件,P=2.5mm +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/B8B-XH-AM(LF)(SN)/173256.html +Supplier +LCSC +3D Model Title +CONN-TH_B8B-XH-AM (LF)(SN) +Pins Structure +1x8P +Pitch +2.5mm +Mounting Type +直插 +Reference Series +XH +Number of Pins +8P +Number of Rows +1 +Number of PINs Per Row +8 +Row Spacing +- +Current Rating +3A +Contact Material +黄铜 +Contact Plating +锡 +Operating Temperature +-25℃~+85℃ +Voltage Rating +250V +Plastic Material +PA66 +Flame Retardant Rating +UL94V-0 +Supplementary Features +带柱;打K脚 +Color +白色 +Z-Height of the Board +7mm +X-Length of Bottom Edge on Board (Spacing Line) +22.4mm +Y-Width of Bottom Edge on Board +5.75mm +Description +插针结构:1x8P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:8P;排数:1;每排PIN数:8;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; + +* +] +[ +DESIGNATOR +D1 +FOOTPRINT +LED-SMD_L1.6-W0.8-R-RD +PARTTYPE +KT-0603R +DESCRIPTION +灯头类型:1.6mmx0.8mm方形灯头;发光颜色:红色;正向压降(Vf):1.8V~2.4V;功率:40mW;正向电流:20mA;波长:615nm~630nm;二极管配置:独立二极管;透镜颜色:无色透明透镜;色温:-;发光强度:300mcd;发光角度:120°;载带方式:-;工作温度:-40℃~+85℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +KT-0603R +Designator +D1 +Device +KT-0603R +Name +KT-0603R +Unique ID +gge15_0 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +0603 红灯 高亮 +Supplier Part +C2286 +Manufacturer +KENTO +Manufacturer Part +KT-0603R +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/KT-0603R/2659.html +Supplier +LCSC +3D Model Title +LED0603_L1.6-W0.8-H0.6 +Lamp Holder Type +1.6mmx0.8mm方形灯头 +Illumination Color +红色 +Voltage - Forward(Vf) +1.8V~2.4V +Power(Watts) +40mW +Forward Current +20mA +Wavelength - Dominant +615nm~630nm +Peak Wavelength +645nm +Diode Configuration +独立二极管 +Lens Color +无色透明透镜 +Color Temperature +- +Luminous Intensity +300mcd +Viewing Angle +120° +Mounting Style +- +Operating Temperature +-40℃~+85℃ +Description +灯头类型:1.6mmx0.8mm方形灯头;发光颜色:红色;正向压降(Vf):1.8V~2.4V;功率:40mW;正向电流:20mA;波长:615nm~630nm;二极管配置:独立二极管;透镜颜色:无色透明透镜;色温:-;发光强度:300mcd;发光角度:120°;载带方式:-;工作温度:-40℃~+85℃; + +* +] +[ +DESIGNATOR +J1 +FOOTPRINT +USB-C-SMD_TYPE-C-16PIN-2MD-073 +PARTTYPE +TYPE-C 16PIN 2MD(073) +DESCRIPTION +连接器类型:Type-C;协议标准:-;公母:母;安装方式:卧贴;触点数量:16P;端口数量:1;额定电流 - 电源:3A;工作温度:-25℃~+85℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +TYPE-C 16PIN 2MD(073) +Designator +J1 +Device +TYPE-C 16PIN 2MD(073) +Unique ID +gge37 +Name +TYPE-C 16PIN 2MD(073) +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +Type-C 母 卧贴 +Supplier Part +C2765186 +Manufacturer +SHOU HAN(首韩) +Manufacturer Part +TYPE-C 16PIN 2MD(073) +Supplier Footprint +SMD +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/TYPE-C%252016PIN%25202MD(073)/2901843.html +Supplier +LCSC +3D Model Title +USB-C-SMD_TYPE-C-6PIN-2MD-073 +Connector Type +Type-C +Protocol Standard +- +Gender +母 +Mounting Type +卧贴 +Number of Contacts +16P +Number of Ports +1 +Current Rating-Power +3A +Voltage Rating +5V +Connect-Disconnect Life +1万次 +Supplementary Features +- +Center Height +- +Length +- +Detection color +黑色 +Operating Temperature +-25℃~+85℃ +Description +连接器类型:Type-C;协议标准:-;公母:母;安装方式:卧贴;触点数量:16P;端口数量:1;额定电流 - 电源:3A;工作温度:-25℃~+85℃; + +* +] +[ +DESIGNATOR +C9 +FOOTPRINT +C0603 +PARTTYPE +CL10A106MA8NRNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL10A106MA8NRNC +Designator +C9 +Device +CL10A106MA8NRNC +Unique ID +gge41 +LCSC Part Name +10uF ±20% 25V +Supplier Part +C96446 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106MA8NRNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106MA8NRNC/97651.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Reuse Block + +Group ID + +Channel ID + + +* +] +[ +DESIGNATOR +C14 +FOOTPRINT +C0603 +PARTTYPE +CC0603KRX7R9BB104 +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CC0603KRX7R9BB104 +Designator +C14 +Device +CC0603KRX7R9BB104 +Unique ID +gge42 +LCSC Part Name +100nF ±10% 50V +Supplier Part +C14663 +Manufacturer +YAGEO(国巨) +Manufacturer Part +CC0603KRX7R9BB104 +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CC0603KRX7R9BB104/15331.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Name +100nF +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Reuse Block + +Group ID + +Channel ID + + +* +] +[ +DESIGNATOR +C11 +FOOTPRINT +C0603 +PARTTYPE +CL10A106MA8NRNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL10A106MA8NRNC +Designator +C11 +Device +CL10A106MA8NRNC +Unique ID +gge41_1 +LCSC Part Name +10uF ±20% 25V +Supplier Part +C96446 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106MA8NRNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106MA8NRNC/97651.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Reuse Block + +Group ID + +Channel ID + + +* +] +[ +DESIGNATOR +C5 +FOOTPRINT +C0603 +PARTTYPE +CL10A225KO8NNNC +DESCRIPTION +容值:2.2uF;精度:±10%;额定电压:16V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL10A225KO8NNNC +Designator +C5 +Device +CL10A225KO8NNNC +Unique ID +gge44 +Name +2.2uF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +2.2uF ±10% 16V +Supplier Part +C23630 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A225KO8NNNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A225KO8NNNC/24366.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +2.2uF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X5R +Description +容值:2.2uF;精度:±10%;额定电压:16V;温度系数:X5R; + +* +] +[ +DESIGNATOR +C6 +FOOTPRINT +C0603 +PARTTYPE +CL10A225KO8NNNC +DESCRIPTION +容值:2.2uF;精度:±10%;额定电压:16V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL10A225KO8NNNC +Designator +C6 +Device +CL10A225KO8NNNC +Name +2.2uF +Unique ID +gge45 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +2.2uF ±10% 16V +Supplier Part +C23630 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A225KO8NNNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A225KO8NNNC/24366.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +2.2uF +Tolerance +±10% +Voltage Rating +16V +Temperature Coefficient +X5R +Description +容值:2.2uF;精度:±10%;额定电压:16V;温度系数:X5R; + +* +] +[ +DESIGNATOR +J4 +FOOTPRINT +CONN-TH_3P-P2.50_A2501WV2-3P +PARTTYPE +B3B-XH-A(LF)(SN) +DESCRIPTION +插针结构:1x3P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:3P;排数:1;每排PIN数:3;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +B3B-XH-A(LF)(SN) +Designator +J4 +Device +B3B-XH-A(LF)(SN) +Unique ID +gge46 +Name +B3B-XH-A(LF)(SN) +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +1x3P 间距:2.5mm 直插 系列:XH +Supplier Part +C144394 +Manufacturer +JST +Manufacturer Part +B3B-XH-A(LF)(SN) +Supplier Footprint +插件,P=2.5mm +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/B3B-XH-A(LF)(SN)/155726.html +Supplier +LCSC +3D Model Title +CONN-TH_3P-P2.50_A2501WV2-3P +Pins Structure +1x3P +Pitch +2.5mm +Mounting Type +直插 +Reference Series +XH +Number of Pins +3P +Number of Rows +1 +Number of PINs Per Row +3 +Row Spacing +- +Current Rating +3A +Contact Material +黄铜 +Contact Plating +锡 +Operating Temperature +-25℃~+85℃ +Voltage Rating +250V +Plastic Material +PA66 +Flame Retardant Rating +UL94V-0 +Supplementary Features +打K脚 +Color +白色 +Z-Height of the Board +7mm +X-Length of Bottom Edge on Board (Spacing Line) +9.9mm +Y-Width of Bottom Edge on Board +5.75mm +Description +插针结构:1x3P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:3P;排数:1;每排PIN数:3;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; + +* +] +[ +DESIGNATOR +U1 +FOOTPRINT +QFN-56_L7.0-W7.0-P0.40-BL-EP5.7 +PARTTYPE +ESP32-S3FH4R2 +DESCRIPTION +核心芯片:LX7芯片;频率:2.4GHz;天线形式:-;发射功率:21dBm;接收灵敏度:-104.5dBm; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +ESP32-S3FH4R2 +Designator +U1 +Device +ESP32-S3FH4R2 +Unique ID +gge90 +Name +2.4GHz +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +不带固件 Xtensa 32位Lx7双核微处理器,2.4 GHz Wi-Fi和Bluetooth 5(LE),45个GPIO管脚 +Supplier Part +C3013940 +Manufacturer +ESPRESSIF(乐鑫) +Manufacturer Part +ESP32-S3FH4R2 +Supplier Footprint +QFN-56(7x7) +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/ESP32-S3FH4R2/3522410.html +Supplier +LCSC +Utilized IC / Part +LX7芯片 +Wireless Standard +Bluetooth5.0 +Interface Type +SDIO;JTAG;UART;SPI;I2C +Value +2.4GHz +Antenna Type +- +Output Power +21dBm +Voltage - Supply +3V~3.6V +Receive Current +88mA +Send Current +340mA +Sensitivity +-104.5dBm +Operating Temperature +-40℃~+85℃ +Description +核心芯片:LX7芯片;频率:2.4GHz;天线形式:-;发射功率:21dBm;接收灵敏度:-104.5dBm; + +* +] +[ +DESIGNATOR +R1 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF1002TCE +Designator +R1 +Device +0402WGF1002TCE +Unique ID +gge12 +Name +10kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +BOOT +FOOTPRINT +SW-SMD_L3.9-W3.0-P4.45 +PARTTYPE +TS-1088-AR02016 +DESCRIPTION +电路结构:单刀单掷;按钮形状:圆形按钮;作用力:1.6N;安装方式:立贴;开关长度:3.9mm;开关宽度:3mm;开关高度:2mm;带支架:不带支架;触点电流:50mA;额定电压:12V;带灯:-;工作寿命:10万次; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +TS-1088-AR02016 +Designator +BOOT +Device +TS-1088-AR02016 +Unique ID +gge13 +Name +TS-1088-AR02016 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +3.9*3*2mm 立贴 轻触开关 +Supplier Part +C720477 +Manufacturer +XUNPU(讯普) +Manufacturer Part +TS-1088-AR02016 +Supplier Footprint +SMD,4x3mm +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/TS-1088-AR02016/763484.html +Supplier +LCSC +3D Model Title +SW-SMD_L3.9-W2.9-H2.0-LS4.8 +Circuit +单刀单掷 +Actuator Style +圆形按钮 +Operating Force +1.6N +Mounting Type +立贴 +Length +3.9mm +Width +3mm +Switch Height +2mm +with Bracket +不带支架 +Contact Current +50mA +Voltage Rating +12V +Actuator/Cap Color +黑色 +With Lamp +- +IP Rating +- +Termination Style +SMD接片 +Life +10万次 +Operating Temperature +-30℃~+80℃ +Description +电路结构:单刀单掷;按钮形状:圆形按钮;作用力:1.6N;安装方式:立贴;开关长度:3.9mm;开关宽度:3mm;开关高度:2mm;带支架:不带支架;触点电流:50mA;额定电压:12V;带灯:-;工作寿命:10万次; + +* +] +[ +DESIGNATOR +R3 +FOOTPRINT +R0402 +PARTTYPE +0402WGF4701TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:4.7kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF4701TCE +Designator +R3 +Device +0402WGF4701TCE +Unique ID +gge16 +Name +4.7kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +4.7kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25900 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF4701TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF4701TCE/26643.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +4.7kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:4.7kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +R4 +FOOTPRINT +R0402 +PARTTYPE +0402WGF4701TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:4.7kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF4701TCE +Designator +R4 +Device +0402WGF4701TCE +Unique ID +gge17 +Name +4.7kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +4.7kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25900 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF4701TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF4701TCE/26643.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +4.7kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:4.7kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +R9 +FOOTPRINT +R0402 +PARTTYPE +0402WGF220JTCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:22Ω;精度:±1%;功率:62.5mW;最大工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF220JTCE +Designator +R9 +Device +0402WGF220JTCE +Unique ID +gge39 +Name +22Ω +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +22Ω ±1% 62.5mW 厚膜电阻 +Supplier Part +C25092 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF220JTCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://atta.szlcsc.com/upload/public/pdf/source/20200306/C422600_1E6D84923E4A46A82E41ADD87F860B5C.pdf +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +22Ω +Tolerance +±1% +Power(Watts) +62.5mW +Overload Voltage (Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature Range +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:22Ω;精度:±1%;功率:62.5mW;最大工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +R10 +FOOTPRINT +R0402 +PARTTYPE +0402WGF220JTCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:22Ω;精度:±1%;功率:62.5mW;最大工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF220JTCE +Designator +R10 +Device +0402WGF220JTCE +Unique ID +gge40 +Name +22Ω +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +22Ω ±1% 62.5mW 厚膜电阻 +Supplier Part +C25092 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF220JTCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://atta.szlcsc.com/upload/public/pdf/source/20200306/C422600_1E6D84923E4A46A82E41ADD87F860B5C.pdf +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +22Ω +Tolerance +±1% +Power(Watts) +62.5mW +Overload Voltage (Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature Range +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:22Ω;精度:±1%;功率:62.5mW;最大工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +R5 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF1002TCE +Designator +R5 +Device +0402WGF1002TCE +Name +10kΩ +Unique ID +gge18 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +RESET +FOOTPRINT +SW-SMD_L3.9-W3.0-P4.45 +PARTTYPE +TS-1088-AR02016 +DESCRIPTION +电路结构:单刀单掷;按钮形状:圆形按钮;作用力:1.6N;安装方式:立贴;开关长度:3.9mm;开关宽度:3mm;开关高度:2mm;带支架:不带支架;触点电流:50mA;额定电压:12V;带灯:-;工作寿命:10万次; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +TS-1088-AR02016 +Designator +RESET +Device +TS-1088-AR02016 +Name +TS-1088-AR02016 +Unique ID +gge19 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +3.9*3*2mm 立贴 轻触开关 +Supplier Part +C720477 +Manufacturer +XUNPU(讯普) +Manufacturer Part +TS-1088-AR02016 +Supplier Footprint +SMD,4x3mm +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/TS-1088-AR02016/763484.html +Supplier +LCSC +3D Model Title +SW-SMD_L3.9-W2.9-H2.0-LS4.8 +Circuit +单刀单掷 +Actuator Style +圆形按钮 +Operating Force +1.6N +Mounting Type +立贴 +Length +3.9mm +Width +3mm +Switch Height +2mm +with Bracket +不带支架 +Contact Current +50mA +Voltage Rating +12V +Actuator/Cap Color +黑色 +With Lamp +- +IP Rating +- +Termination Style +SMD接片 +Life +10万次 +Operating Temperature +-30℃~+80℃ +Description +电路结构:单刀单掷;按钮形状:圆形按钮;作用力:1.6N;安装方式:立贴;开关长度:3.9mm;开关宽度:3mm;开关高度:2mm;带支架:不带支架;触点电流:50mA;额定电压:12V;带灯:-;工作寿命:10万次; + +* +] +[ +DESIGNATOR +C4 +FOOTPRINT +C0402 +PARTTYPE +CL05A105KA5NQNC +DESCRIPTION +容值:1uF;精度:±10%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05A105KA5NQNC +Designator +C4 +Device +CL05A105KA5NQNC +Name +1uF +Unique ID +gge20 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +1uF ±10% 25V +Supplier Part +C52923 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05A105KA5NQNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05A105KA5NQNC/53938.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +1uF +Tolerance +±10% +Voltage Rating +25V +Temperature Coefficient +X5R +Description +容值:1uF;精度:±10%;额定电压:25V;温度系数:X5R; + +* +] +[ +DESIGNATOR +R11 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF1002TCE +Designator +R11 +Device +0402WGF1002TCE +Unique ID +gge12_0 +Name +10kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +R12 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF1002TCE +Designator +R12 +Device +0402WGF1002TCE +Unique ID +gge12_1 +Name +10kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +L1 +FOOTPRINT +L0402 +PARTTYPE +LQW15AN24NG00D +DESCRIPTION +电感值:24nH;精度:±2%;额定电流:280mA;饱和电流(Isat):-;类型:非屏蔽电感; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +LQW15AN24NG00D +Designator +L1 +Device +LQW15AN24NG00D +Unique ID +gge59 +Name +24nH +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +24nH ±2% +Supplier Part +C167472 +Manufacturer +muRata(村田) +Manufacturer Part +LQW15AN24NG00D +Supplier Footprint +0402 +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/LQW15AN24NG00D/178855.html +Supplier +LCSC +3D Model Title +L0402_L1.0-W0.5-H0.5_BEAD +Value +24nH +Tolerance +±2% +Current Rating +280mA +Current - Saturation(Isat) +- +DC Resistance(DCR) +520mΩ +Type +非屏蔽电感 +Ratings +- +Description +电感值:24nH;精度:±2%;额定电流:280mA;饱和电流(Isat):-;类型:非屏蔽电感; + +* +] +[ +DESIGNATOR +C16 +FOOTPRINT +C0402 +PARTTYPE +0402CG220J500NT +DESCRIPTION +容值:22pF;精度:±5%;额定电压:50V;温度系数:C0G; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402CG220J500NT +Designator +C16 +Device +0402CG220J500NT +Unique ID +gge60 +Name +22pF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +22pF ±5% 50V +Supplier Part +C1555 +Manufacturer +FH(风华) +Manufacturer Part +0402CG220J500NT +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402CG220J500NT/1907.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +22pF +Tolerance +±5% +Voltage Rating +50V +Temperature Coefficient +C0G +Description +容值:22pF;精度:±5%;额定电压:50V;温度系数:C0G; + +* +] +[ +DESIGNATOR +C17 +FOOTPRINT +C0402 +PARTTYPE +0402CG220J500NT +DESCRIPTION +容值:22pF;精度:±5%;额定电压:50V;温度系数:C0G; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402CG220J500NT +Designator +C17 +Device +0402CG220J500NT +Unique ID +gge61 +Name +22pF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +22pF ±5% 50V +Supplier Part +C1555 +Manufacturer +FH(风华) +Manufacturer Part +0402CG220J500NT +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402CG220J500NT/1907.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +22pF +Tolerance +±5% +Voltage Rating +50V +Temperature Coefficient +C0G +Description +容值:22pF;精度:±5%;额定电压:50V;温度系数:C0G; + +* +] +[ +DESIGNATOR +X1 +FOOTPRINT +CRYSTAL-SMD_4P-L2.5-W2.0-BL +PARTTYPE +TXM40M0004252HBCEO00T +DESCRIPTION +晶振类型:贴片晶振;频率:40MHz;常温频差:±10ppm;负载电容:15pF;频率稳定度:±30ppm; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +TXM40M0004252HBCEO00T +Designator +X1 +Device +TXM40M0004252HBCEO00T +Unique ID +gge91 +Name +40MHz +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +40MHz ±10ppm 15pF +Supplier Part +C284176 +Manufacturer +YJX(雅晶鑫) +Manufacturer Part +TXM40M0004252HBCEO00T +Supplier Footprint +SMD2520-4P +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/TXM40M0004252HBCEO00T/270225.html +Supplier +LCSC +3D Model Title +CRYSTAL-SMD_4P-L2.5-W2.0-BL +Type +贴片晶振 +Value +40MHz +Normal temperature Frequency Tolerance +±10ppm +Load Capacitance +15pF +Frequency Stability +±30ppm +Equivalent Series Resistance(ESR) +25Ω +Operating Temperature +-40℃~+85℃ +Description +晶振类型:贴片晶振;频率:40MHz;常温频差:±10ppm;负载电容:15pF;频率稳定度:±30ppm; + +* +] +[ +DESIGNATOR +C1 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KB54PNC +Designator +C1 +Device +CL05B104KB54PNC +Unique ID +gge9 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; + +* +] +[ +DESIGNATOR +C15 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KB54PNC +Designator +C15 +Device +CL05B104KB54PNC +Unique ID +gge9_0 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; + +* +] +[ +DESIGNATOR +C3 +FOOTPRINT +C0603 +PARTTYPE +CL10A106MA8NRNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL10A106MA8NRNC +Designator +C3 +Device +CL10A106MA8NRNC +Unique ID +gge41_0 +LCSC Part Name +10uF ±20% 25V +Supplier Part +C96446 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106MA8NRNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106MA8NRNC/97651.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:25V;温度系数:X5R; +Reuse Block + +Group ID + +Channel ID + + +* +] +[ +DESIGNATOR +C18 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KB54PNC +Designator +C18 +Device +CL05B104KB54PNC +Unique ID +gge9_1 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; + +* +] +[ +DESIGNATOR +L2 +FOOTPRINT +L0603 +PARTTYPE +BLM18PG121SN1D +DESCRIPTION +阻抗@频率:120Ω@100MHz;误差:±25%;直流电阻(DCR):50mΩ; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +BLM18PG121SN1D_C14709 +Designator +L2 +Device +BLM18PG121SN1D +Unique ID +gge89 +Name +BLM18PG121SN1D +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +单路 0603磁珠 阻抗120Ω@100MHz +Supplier Part +C14709 +Manufacturer +muRata(村田) +Manufacturer Part +BLM18PG121SN1D +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/BLM18PG121SN1D/15379.html +Supplier +LCSC +3D Model Title +L0603_L1.6-W0.8-H0.5_BEAD +Impedance @ Frequency +120Ω@100MHz +Tolerance +±25% +DC Resistance(DCR) +50mΩ +Current Rating +2A +Number of Circuits +1 +Operating Temperature +-55℃~+125℃ +Description +阻抗@频率:120Ω@100MHz;误差:±25%;直流电阻(DCR):50mΩ; + +* +] +[ +DESIGNATOR +C19 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KB54PNC +Designator +C19 +Device +CL05B104KB54PNC +Unique ID +gge9_2 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; + +* +] +[ +DESIGNATOR +C20 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KB54PNC +Designator +C20 +Device +CL05B104KB54PNC +Unique ID +gge92 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; + +* +] +[ +DESIGNATOR +C21 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KB54PNC +Designator +C21 +Device +CL05B104KB54PNC +Unique ID +gge9_3 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; + +* +] +[ +DESIGNATOR +C22 +FOOTPRINT +C0402 +PARTTYPE +CL05B104KB54PNC +DESCRIPTION +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05B104KB54PNC +Designator +C22 +Device +CL05B104KB54PNC +Unique ID +gge9_4 +Name +100nF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +100nF ±10% 50V +Supplier Part +C307331 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05B104KB54PNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05B104KB54PNC/291005.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +100nF +Tolerance +±10% +Voltage Rating +50V +Temperature Coefficient +X7R +Description +容值:100nF;精度:±10%;额定电压:50V;温度系数:X7R; + +* +] +[ +DESIGNATOR +U4 +FOOTPRINT +ESOP-8_L4.9-W3.9-P1.27-LS6.0-BL-EP +PARTTYPE +IP5306 +DESCRIPTION +工作电压:4.65V~5.5V;最大充电电流:2.1A;电池类型:锂电池;电池节数:1; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +IP5306 +Designator +U4 +Device +IP5306 +Unique ID +gge93 +Name +IP5306 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +集成2.1A充电器和2.1A放电器的移动电源系统级芯片 +Supplier Part +C181692 +Manufacturer +INJOINIC(英集芯) +Manufacturer Part +IP5306 +Supplier Footprint +ESOP-8 +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/IP5306/193089.html +Supplier +LCSC +3D Model Title +ESOP-8_L4.9-W3.9-H1.6-LS6.0-P1.27 +The Chip Type +充电芯片;保护芯片 +Voltage - Supply +4.65V~5.5V +Charge Current - Max +2.1A +Charging Saturation Voltage +4.2V +End-Off Voltage +3V +Type of Battery +锂电池 +Number of Cells +1 +Operating Temperature +0℃~+70℃ +Battery Temperature Detection +不支持 +0V Battery Charge +不支持 +Supply Current (Iq) +100uA +Balance Current +- +Interface +I2C +Features +过流保护;恒流充电;自动再充电;充电终止;过压保护;欠压锁定;过放保护;涓流充电;短路保护 +Description +工作电压:4.65V~5.5V;最大充电电流:2.1A;电池类型:锂电池;电池节数:1; + +* +] +[ +DESIGNATOR +J6 +FOOTPRINT +CONN-TH_B4B-XH-A-LF-SN +PARTTYPE +B4B-XH-A(LF)(SN) +DESCRIPTION +插针结构:1x4P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:4P;排数:1;每排PIN数:4;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +B4B-XH-A(LF)(SN) +Designator +J6 +Device +B4B-XH-A(LF)(SN) +Unique ID +gge94 +Name +B4B-XH-A(LF)(SN) +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +1x4P 间距:2.5mm 直插 系列:XH +Supplier Part +C144395 +Manufacturer +JST +Manufacturer Part +B4B-XH-A(LF)(SN) +Supplier Footprint +插件,P=2.5mm +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/B4B-XH-A(LF)(SN)/155727.html +Supplier +LCSC +3D Model Title +XH2.5-4A +Pins Structure +1x4P +Pitch +2.5mm +Mounting Type +直插 +Reference Series +XH +Number of Pins +4P +Number of Rows +1 +Number of PINs Per Row +4 +Row Spacing +- +Current Rating +3A +Contact Material +黄铜 +Contact Plating +锡 +Operating Temperature +-25℃~+85℃ +Voltage Rating +250V +Plastic Material +PA66 +Flame Retardant Rating +UL94V-0 +Supplementary Features +打K脚 +Color +白色 +Z-Height of the Board +7mm +X-Length of Bottom Edge on Board (Spacing Line) +12.4mm +Y-Width of Bottom Edge on Board +5.75mm +Description +插针结构:1x4P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:4P;排数:1;每排PIN数:4;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; + +* +] +[ +DESIGNATOR +J3 +FOOTPRINT +CONN-TH_B2B-XH-A-LF-SN +PARTTYPE +B2B-XH-A(LF)(SN) +DESCRIPTION +插针结构:1x2P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:2P;排数:1;每排PIN数:2;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +B2B-XH-A (LF)(SN) +Designator +J3 +Device +B2B-XH-A(LF)(SN) +Unique ID +gge32_0 +Name +B2B-XH-A(LF)(SN) +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +1x2P 间距:2.5mm 直插 系列:XH +Supplier Part +C158012 +Manufacturer +JST +Manufacturer Part +B2B-XH-A(LF)(SN) +Supplier Footprint +插件,P=2.5mm +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/B2B-XH-A(LF)(SN)/169360.html +Supplier +LCSC +3D Model Title +XH2.5-2A +Pins Structure +1x2P +Pitch +2.5mm +Mounting Type +直插 +Reference Series +XH +Number of Pins +2P +Number of Rows +1 +Number of PINs Per Row +2 +Row Spacing +- +Current Rating +3A +Contact Material +黄铜 +Contact Plating +锡 +Operating Temperature +-25℃~+85℃ +Voltage Rating +250V +Plastic Material +PA66 +Flame Retardant Rating +UL94V-0 +Supplementary Features +打K脚 +Color +白色 +Z-Height of the Board +7mm +X-Length of Bottom Edge on Board (Spacing Line) +7.4mm +Y-Width of Bottom Edge on Board +5.75mm +Description +插针结构:1x2P;间距:2.5mm;安装方式:直插;参考系列:XH;总PIN数:2P;排数:1;每排PIN数:2;行距:-;额定电流:3A;触头材质:黄铜;触头镀层:锡;工作温度:-25℃~+85℃; + +* +] +[ +DESIGNATOR +SPK1 +FOOTPRINT +BUZ-SMD_4P-L13.0-W13.0-P11.4-BL +PARTTYPE +FS-1340 +DESCRIPTION +阻抗:8Ω;谐振频率:850Hz;失真(THD):5%;额定功率:700mW;声压(SPL):88dB; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +FS-1340 +Designator +SPK1 +Device +FS-1340 +Unique ID +gge95 +Name +FS-1340 +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +喇叭13*13MM-4.0H 8Ω0.5W 贴片 +Supplier Part +C482342 +Manufacturer +FUET(福声科技) +Manufacturer Part +FS-1340 +Supplier Footprint +- +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/FS-1340/490268.html +Supplier +LCSC +3D Model Title +BUZ-SMD_4P-L13.0-W13.0-P11.4-BL +Frequency Range +850Hz~20kHz +Impedance +8Ω +Resonant Frequency +850Hz +Total Harmonic Distortion(THD) +5% +Rated Power +700mW +Sound Pressure Level(SPL) +88dB +Length +13mm +Width +13mm +Height +4mm +Operating Temperature +-40℃~+85℃ +Mounting Type +贴片 +Description +阻抗:8Ω;谐振频率:850Hz;失真(THD):5%;额定功率:700mW;声压(SPL):88dB; + +* +] +[ +DESIGNATOR +R2 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1001TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF1001TCE +Designator +R2 +Device +0402WGF1001TCE +Unique ID +gge96 +Name +1kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +1kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C11702 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1001TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1001TCE/12256.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +1kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:1kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +L3 +FOOTPRINT +IND-SMD_L4.4-W4.2 +PARTTYPE +FXL0420-1R0-M +DESCRIPTION +电感值:1uH;精度:±20%;额定电流:6A;饱和电流(Isat):7A;类型:一体成型电感; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +FXL0420-1R0-M +Designator +L3 +Device +FXL0420-1R0-M +Unique ID +gge97 +Name +1uH +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +1uH ±20% 7A +Supplier Part +C167203 +Manufacturer +cjiang(长江微电) +Manufacturer Part +FXL0420-1R0-M +Supplier Footprint +SMD,4.2x4.4mm +JLCPCB Part Class +Extended Part +Datasheet +https://atta.szlcsc.com/upload/public/pdf/source/20240426/3189EA8206330E2108542F9E34E540E7.pdf +Supplier +LCSC +3D Model Title +IND-SMD_L4.2-W4.4-H2.0 +Value +1uH +Tolerance +±20% +Rated Current +6A +Saturation Current (Isat) +7A +DC Resistance (DCR) +27mΩ +Type +一体成型电感 +Description +电感值:1uH;精度:±20%;额定电流:6A;饱和电流(Isat):7A;类型:一体成型电感; + +* +] +[ +DESIGNATOR +R8 +FOOTPRINT +R0603 +PARTTYPE +0603WAF0000T5E +DESCRIPTION +电阻类型:厚膜电阻;阻值:0Ω;精度:±1%;功率:100mW;工作电压:75V;温度系数:-; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0603WAF0000T5E +Designator +R8 +Device +0603WAF0000T5E +Unique ID +gge101 +Name +0Ω +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +0Ω ±1% 100mW 厚膜电阻 +Supplier Part +C21189 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0603WAF0000T5E +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0603WAF0000T5E/21903.html +Supplier +LCSC +3D Model Title +R0603 +Type +厚膜电阻 +Value +0Ω +Tolerance +±1% +Power(Watts) +100mW +Voltage-Supply(Max) +75V +Temperature Coefficient +- +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:0Ω;精度:±1%;功率:100mW;工作电压:75V;温度系数:-; + +* +] +[ +DESIGNATOR +R13 +FOOTPRINT +R0402 +PARTTYPE +0402WGF4702TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:47kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF4702TCE +Designator +R13 +Device +0402WGF4702TCE +Unique ID +gge102 +Name +47kΩ +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +47kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25792 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF4702TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF4702TCE/26535.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +47kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Description +电阻类型:厚膜电阻;阻值:47kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; + +* +] +[ +DESIGNATOR +C25 +FOOTPRINT +C0603 +PARTTYPE +CL10A106KP8NNNC +DESCRIPTION +容值:10uF;精度:±10%;额定电压:10V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL10A106KP8NNNC +Designator +C25 +Device +CL10A106KP8NNNC +Unique ID +gge105 +Name +10uF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +10uF ±10% 10V +Supplier Part +C19702 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106KP8NNNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106KP8NNNC/20411.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±10% +Voltage Rating +10V +Temperature Coefficient +X5R +Description +容值:10uF;精度:±10%;额定电压:10V;温度系数:X5R; + +* +] +[ +DESIGNATOR +C23 +FOOTPRINT +C0603 +PARTTYPE +CL10A106KP8NNNC +DESCRIPTION +容值:10uF;精度:±10%;额定电压:10V;温度系数:X5R; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +CL10A106KP8NNNC +Designator +C23 +Device +CL10A106KP8NNNC +Unique ID +gge107 +Name +10uF +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +10uF ±10% 10V +Supplier Part +C19702 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL10A106KP8NNNC +Supplier Footprint +0603 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL10A106KP8NNNC/20411.html +Supplier +LCSC +3D Model Title +C0603_L1.6-W0.8-H0.8 +Value +10uF +Tolerance +±10% +Voltage Rating +10V +Temperature Coefficient +X5R +Description +容值:10uF;精度:±10%;额定电压:10V;温度系数:X5R; + +* +] +[ +DESIGNATOR +D3 +FOOTPRINT +SOD-123FL_L2.7-W1.8-LS3.8-RD +PARTTYPE +SMF5.0A_C19077497 +DESCRIPTION +极性:单向;反向截止电压(Vrwm):5V;钳位电压:9.2V;峰值脉冲电流(Ipp):21.7A@10/1000us;峰值脉冲功率(Ppp):200W@10/1000us;击穿电压:7V; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +SMF5.0A_C19077497 +Designator +D3 +Device +SMF5.0A_C19077497 +Unique ID +gge108 +Name +SMF5.0A +Reuse Block + +Group ID + +Channel ID + +LCSC Part Name +单向TVS 5V截止 峰值浪涌电流:21.7A@10/1000us +Supplier Part +C19077497 +Manufacturer +R+O(宏嘉诚) +Manufacturer Part +SMF5.0A +Supplier Footprint +SOD-123FL +JLCPCB Part Class +Extended Part +Datasheet +https://item.szlcsc.com/datasheet/SMF5.0A/20275582.html +Supplier +LCSC +3D Model Title +SOD-123FL_L2.8-W1.8-H1.1-LS3.6 +Polarity +单向 +Reverse Stand-Off Voltage (Vrwm) +5V +Clamping Voltage +9.2V +Peak Pulse Current (Ipp) +21.7A@10/1000us +Peak Pulse Power Dissipation (Ppp) +200W@10/1000us +Voltage - Breakdown +7V +Reverse Leakage Current (Ir) +400uA +Number of Channels +单路 +Operating Temperature +-55℃~+150℃ +level of protection +IEC 61000-4-2 +Type +TVS +Junction Capacitance +- +Description +极性:单向;反向截止电压(Vrwm):5V;钳位电压:9.2V;峰值脉冲电流(Ipp):21.7A@10/1000us;峰值脉冲功率(Ppp):200W@10/1000us;击穿电压:7V; + +* +] +[ +DESIGNATOR +R14 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF1002TCE +Designator +R14 +Device +0402WGF1002TCE +Unique ID +gge109 +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +10kΩ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Reuse Block + +Group ID + +Channel ID + + +* +] +[ +DESIGNATOR +R15 +FOOTPRINT +R0402 +PARTTYPE +0402WGF1002TCE +DESCRIPTION +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Component Kind +Standard +Add into BOM +yes +Convert to PCB +yes +Symbol +0402WGF1002TCE +Designator +R15 +Device +0402WGF1002TCE +Unique ID +gge110 +LCSC Part Name +10kΩ ±1% 62.5mW 厚膜电阻 +Supplier Part +C25744 +Manufacturer +UNI-ROYAL(厚声) +Manufacturer Part +0402WGF1002TCE +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/0402WGF1002TCE/26487.html +Supplier +LCSC +3D Model Title +R0402_L1.0-W0.5-H0.4 +Type +厚膜电阻 +Value +10kΩ +Tolerance +±1% +Power(Watts) +62.5mW +Voltage-Supply(Max) +50V +Temperature Coefficient +±100ppm/℃ +Operating Temperature +-55℃~+155℃ +Name +10kΩ +Description +电阻类型:厚膜电阻;阻值:10kΩ;精度:±1%;功率:62.5mW;工作电压:50V;温度系数:±100ppm/℃; +Reuse Block + +Group ID + +Channel ID + + +* +] +[ +DESIGNATOR +C24 +FOOTPRINT +C0805 +PARTTYPE +CL21A226MAQNNNE +DESCRIPTION +容值:22uF;精度:±20%;额定电压:25V;温度系数:X5R; +Component Kind +Standard +Unique ID +gge111 +Add into BOM +yes +Convert to PCB +yes +Symbol +CL21A226MAQNNNE +Designator +C24 +Device +CL21A226MAQNNNE +LCSC Part Name +22uF ±20% 25V +Supplier Part +C45783 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL21A226MAQNNNE +Supplier Footprint +0805 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL21A226MAQNNNE/46786.html +Supplier +LCSC +3D Model Title +C0805_L2.0-W1.3-H1.3 +Value +22uF +Tolerance +±20% +Voltage Rating +25V +Temperature Coefficient +X5R +Name +22uF +Description +容值:22uF;精度:±20%;额定电压:25V;温度系数:X5R; +Reuse Block + +Group ID + +Channel ID + + +* +] +[ +DESIGNATOR +C2 +FOOTPRINT +C0402 +PARTTYPE +CL05A106MQ5NUNC +DESCRIPTION +容值:10uF;精度:±20%;额定电压:6.3V;温度系数:X5R; +Component Kind +Standard +Unique ID +gge112 +Add into BOM +yes +Convert to PCB +yes +Symbol +CL05A106MQ5NUNC +Designator +C2 +Device +CL05A106MQ5NUNC +LCSC Part Name +10uF ±20% 6.3V +Supplier Part +C15525 +Manufacturer +SAMSUNG(三星) +Manufacturer Part +CL05A106MQ5NUNC +Supplier Footprint +0402 +JLCPCB Part Class +Basic Part +Datasheet +https://item.szlcsc.com/datasheet/CL05A106MQ5NUNC/16204.html +Supplier +LCSC +3D Model Title +C0402_L1.0-W0.5-H0.5 +Value +10uF +Tolerance +±20% +Voltage Rating +6.3V +Temperature Coefficient +X5R +Name +10uF +Description +容值:10uF;精度:±20%;额定电压:6.3V;温度系数:X5R; +Reuse Block + +Group ID + +Channel ID + + +* +] +( +GND +U2-1 ME6211A33PG-N-VSS Passive +U5-5 LIS3DHTR-GND Passive +U5-7 LIS3DHTR-SDO/SA0 Passive +U5-10 LIS3DHTR-RES Passive +U5-12 LIS3DHTR-GND Passive +U3-3 MAX98357AETE+T-GND Passive +U3-11 MAX98357AETE+T-GND Passive +U3-15 MAX98357AETE+T-GND Passive +U3-17 MAX98357AETE+T-EP Passive +C7-1 CC0603KRX7R9BB104-1 Passive +C8-1 CL10A106MA8NRNC-1 Passive +C10-2 CL05B104KO5NNNC-2 Passive +C12-2 CL05B104KO5NNNC-2 Passive +R7-1 0402WGF5101TCE-1 Input +R6-2 0402WGF5101TCE-2 Input +C13-2 CL05B104KO5NNNC-2 Passive +J2-1 B8B-XH-AM(LF)(SN)-1 Passive +J1-A1B12 TYPE-C 16PIN 2MD(073)-GND Passive +J1-B1A12 TYPE-C 16PIN 2MD(073)-GND Passive +C9-2 CL10A106MA8NRNC-2 Passive +C14-2 CC0603KRX7R9BB104-2 Passive +C11-2 CL10A106MA8NRNC-2 Passive +C5-1 CL10A225KO8NNNC-1 Input +C6-1 CL10A225KO8NNNC-1 Input +U1-57 ESP32-S3FH4R2-GND Passive +BOOT-1 TS-1088-AR02016-1 Passive +RESET-2 TS-1088-AR02016-2 Passive +C4-1 CL05A105KA5NQNC-1 Passive +R11-2 0402WGF1002TCE-2 Input +R12-2 0402WGF1002TCE-2 Input +C16-2 0402CG220J500NT-2 Input +C17-2 0402CG220J500NT-2 Input +X1-4 TXM40M0004252HBCEO00T-4 Passive +X1-2 TXM40M0004252HBCEO00T-2 Passive +C1-2 CL05B104KB54PNC-2 Passive +C15-2 CL05B104KB54PNC-2 Passive +C3-1 CL10A106MA8NRNC-1 Passive +C18-2 CL05B104KB54PNC-2 Passive +C19-2 CL05B104KB54PNC-2 Passive +C20-2 CL05B104KB54PNC-2 Passive +C21-2 CL05B104KB54PNC-2 Passive +C22-2 CL05B104KB54PNC-2 Passive +U4-9 IP5306-EP Passive +J6-3 B4B-XH-A(LF)(SN)-3 Passive +J3-2 B2B-XH-A(LF)(SN)-2 Passive +SPK1-3 FS-1340-3 Passive +SPK1-4 FS-1340-4 Passive +R13-2 0402WGF4702TCE-2 Input +C25-1 CL10A106KP8NNNC-1 Passive +C23-2 CL10A106KP8NNNC-2 Passive +D3-2 SMF5.0A_C19077497-A Passive +R15-2 0402WGF1002TCE-2 Input +C24-2 CL21A226MAQNNNE-2 Passive +C2-1 CL05A106MQ5NUNC-1 Input +) +( +BAT +U2-2 ME6211A33PG-N-VIN Passive +C5-2 CL10A225KO8NNNC-2 Input +U4-6 IP5306-BAT Passive +J3-1 B2B-XH-A(LF)(SN)-1 Passive +C25-2 CL10A106KP8NNNC-2 Passive +R14-2 0402WGF1002TCE-2 Input +) +( +3V3 +U2-3 ME6211A33PG-N-VOUT Passive +U5-1 LIS3DHTR-VDD_IO Passive +U5-8 LIS3DHTR-CS Passive +U5-14 LIS3DHTR-VDD Passive +U3-2 MAX98357AETE+T-GAIN_SLOT Passive +U3-7 MAX98357AETE+T-VDD Passive +U3-8 MAX98357AETE+T-VDD Passive +C7-2 CC0603KRX7R9BB104-2 Passive +C8-2 CL10A106MA8NRNC-2 Passive +C10-1 CL05B104KO5NNNC-1 Passive +C12-1 CL05B104KO5NNNC-1 Passive +C13-1 CL05B104KO5NNNC-1 Passive +J2-2 B8B-XH-AM(LF)(SN)-2 Passive +J2-8 B8B-XH-AM(LF)(SN)-8 Passive +D1-1 KT-0603R-A Passive +C11-1 CL10A106MA8NRNC-1 Passive +C6-2 CL10A225KO8NNNC-2 Input +U1-2 ESP32-S3FH4R2-VDD3P3 Passive +U1-3 ESP32-S3FH4R2-VDD3P3 Passive +U1-20 ESP32-S3FH4R2-VDD3P3_RTC Passive +U1-29 ESP32-S3FH4R2-VDD_SPI Passive +U1-46 ESP32-S3FH4R2-VDD3P3_CPU Passive +R1-1 0402WGF1002TCE-1 Input +R3-1 0402WGF4701TCE-1 Input +R4-1 0402WGF4701TCE-1 Input +R5-2 0402WGF1002TCE-2 Input +C1-1 CL05B104KB54PNC-1 Passive +C15-1 CL05B104KB54PNC-1 Passive +C3-2 CL10A106MA8NRNC-2 Passive +C18-1 CL05B104KB54PNC-1 Passive +L2-2 BLM18PG121SN1D-2 Passive +C21-1 CL05B104KB54PNC-1 Passive +C22-1 CL05B104KB54PNC-1 Passive +J6-4 B4B-XH-A(LF)(SN)-4 Passive +) +( +ACCELSCL +U5-4 LIS3DHTR-SCL/SPC Passive +U1-23 ESP32-S3FH4R2-GPIO17 Passive +R3-2 0402WGF4701TCE-2 Input +) +( +ACCELSDA +U5-6 LIS3DHTR-SDA/SDI/SDO Passive +U1-24 ESP32-S3FH4R2-GPIO18 Passive +R4-2 0402WGF4701TCE-2 Input +) +( +ACCELINT1 +U5-11 LIS3DHTR-INT1 Passive +U1-27 ESP32-S3FH4R2-GP1O21 Passive +) +( +AMPDIN +U3-1 MAX98357AETE+T-DIN Passive +U1-12 ESP32-S3FH4R2-GPIO7 Passive +) +( +AMPSDMODE +U3-4 MAX98357AETE+T-SD_MODE# Passive +U1-18 ESP32-S3FH4R2-GPIO13 Passive +R13-1 0402WGF4702TCE-1 Input +) +( +SPKP +U3-9 MAX98357AETE+T-OUTP Passive +SPK1-1 FS-1340-+ Passive +) +( +SPKN +U3-10 MAX98357AETE+T-OUTN Passive +SPK1-2 FS-1340-- Passive +) +( +I2SWS +U3-14 MAX98357AETE+T-LRCLK Passive +U1-10 ESP32-S3FH4R2-GPIO5 Passive +) +( +I2SBCLK +U3-16 MAX98357AETE+T-BCLK Passive +U1-9 ESP32-S3FH4R2-GPIO4 Passive +) +( +$1N95 +R7-2 0402WGF5101TCE-2 Input +J1-B5 TYPE-C 16PIN 2MD(073)-CC2 Passive +) +( +$1N152 +R6-1 0402WGF5101TCE-1 Input +J1-A5 TYPE-C 16PIN 2MD(073)-CC1 Passive +) +( +LCDCLK +J2-3 B8B-XH-AM(LF)(SN)-3 Passive +U1-17 ESP32-S3FH4R2-GPIO12 Passive +) +( +LCDMOSI +J2-4 B8B-XH-AM(LF)(SN)-4 Passive +U1-16 ESP32-S3FH4R2-GPIO11 Passive +) +( +LCDRST +J2-5 B8B-XH-AM(LF)(SN)-5 Passive +U1-13 ESP32-S3FH4R2-GPIO8 Passive +) +( +LCDDC +J2-6 B8B-XH-AM(LF)(SN)-6 Passive +U1-14 ESP32-S3FH4R2-GPIO9 Passive +) +( +LCDCS +J2-7 B8B-XH-AM(LF)(SN)-7 Passive +U1-15 ESP32-S3FH4R2-GPIO10 Passive +) +( +$1N257 +D1-2 KT-0603R-K Passive +R2-1 0402WGF1001TCE-1 Input +) +( +$1N173 +J1-A4B9 TYPE-C 16PIN 2MD(073)-VBUS Passive +J1-B4A9 TYPE-C 16PIN 2MD(073)-VBUS Passive +R8-2 0603WAF0000T5E-2 Input +D3-1 SMF5.0A_C19077497-K Passive +) +( +USBDN +J1-B7 TYPE-C 16PIN 2MD(073)-Dn2 Passive +J1-A7 TYPE-C 16PIN 2MD(073)-Dn1 Passive +R9-1 0402WGF220JTCE-1 Input +) +( +USBDP +J1-A6 TYPE-C 16PIN 2MD(073)-Dp1 Passive +J1-B6 TYPE-C 16PIN 2MD(073)-Dp2 Passive +R10-1 0402WGF220JTCE-1 Input +) +( +VBUS +C9-1 CL10A106MA8NRNC-1 Passive +C14-1 CC0603KRX7R9BB104-1 Passive +U4-1 IP5306-VIN Passive +R8-1 0603WAF0000T5E-1 Input +C23-1 CL10A106KP8NNNC-1 Passive +) +( +TOUCHRFACE +J4-1 B3B-XH-A(LF)(SN)-1 Passive +U1-11 ESP32-S3FH4R2-GPIO6 Passive +) +( +TOUCHLFACE +J4-2 B3B-XH-A(LF)(SN)-2 Passive +U1-7 ESP32-S3FH4R2-GPIO2 Passive +) +( +TOUCHHEAD +J4-3 B3B-XH-A(LF)(SN)-3 Passive +U1-6 ESP32-S3FH4R2-GPIO1 Passive +) +( +RESET +U1-4 ESP32-S3FH4R2-CHIP_PU Passive +R5-1 0402WGF1002TCE-1 Input +RESET-1 TS-1088-AR02016-1 Passive +C4-2 CL05A105KA5NQNC-2 Passive +) +( +$1N183 +U1-5 ESP32-S3FH4R2-GPIO0 Passive +R1-2 0402WGF1002TCE-2 Input +BOOT-2 TS-1088-AR02016-2 Passive +) +( +BATADC +U1-19 ESP32-S3FH4R2-GPIO14 Passive +R14-1 0402WGF1002TCE-1 Input +R15-1 0402WGF1002TCE-1 Input +) +( +$1N200 +U1-25 ESP32-S3FH4R2-GPIO19 Passive +R9-2 0402WGF220JTCE-2 Input +) +( +$1N199 +U1-26 ESP32-S3FH4R2-GPIO20 Passive +R10-2 0402WGF220JTCE-2 Input +) +( +TXD0 +U1-49 ESP32-S3FH4R2-U0TXD Passive +J6-1 B4B-XH-A(LF)(SN)-1 Passive +) +( +RXD0 +U1-50 ESP32-S3FH4R2-U0RXD Passive +J6-2 B4B-XH-A(LF)(SN)-2 Passive +) +( +$1N216 +U1-51 ESP32-S3FH4R2-GPIO45 Passive +R12-1 0402WGF1002TCE-1 Input +) +( +$1N215 +U1-52 ESP32-S3FH4R2-GPIO46 Passive +R11-1 0402WGF1002TCE-1 Input +) +( +$1N222 +U1-53 ESP32-S3FH4R2-XTAL_N Passive +C16-1 0402CG220J500NT-1 Input +X1-3 TXM40M0004252HBCEO00T-OSC2 Passive +) +( +$1N221 +U1-54 ESP32-S3FH4R2-XTAL_P Passive +L1-1 LQW15AN24NG00D-1 Passive +) +( +$1N236 +U1-55 ESP32-S3FH4R2-VDDA Passive +U1-56 ESP32-S3FH4R2-VDDA Passive +L2-1 BLM18PG121SN1D-1 Passive +C19-1 CL05B104KB54PNC-1 Passive +C20-1 CL05B104KB54PNC-1 Passive +C2-2 CL05A106MQ5NUNC-2 Input +) +( +$1N227 +L1-2 LQW15AN24NG00D-2 Passive +C17-1 0402CG220J500NT-1 Input +X1-1 TXM40M0004252HBCEO00T-OSC1 Passive +) +( +$1N258 +U4-2 IP5306-LED1 Passive +R2-2 0402WGF1001TCE-2 Input +) +( +SW +U4-7 IP5306-SW Passive +L3-1 FXL0420-1R0-M-1 Passive +) +( +VOUT +U4-8 IP5306-VOUT Passive +L3-2 FXL0420-1R0-M-2 Passive +C24-1 CL21A226MAQNNNE-1 Passive +) diff --git a/pet-v1/电子宠物_PCB_V1.0_拓扑连接图.md b/pet-v1/电子宠物_PCB_V1.0_拓扑连接图.md new file mode 100644 index 0000000..66fd547 --- /dev/null +++ b/pet-v1/电子宠物_PCB_V1.0_拓扑连接图.md @@ -0,0 +1,602 @@ +--- +AIGC: + Label: "1" + ContentProducer: 001191110102MACQD9K64018705 + ProduceID: 7626786669685096714-data_volume/files/所有对话/主对话/电子宠物/电子宠物_PCB_V1.0_拓扑连接图.md + ReservedCode1: "" + ContentPropagator: 001191110102MACQD9K64028705 + PropagateID: 2496355402515786#1785029299244 + ReservedCode2: "" +--- +# 电子宠物 PCB V1.0 拓扑连接图 + +> 版本:V1.0-S3FH4R2-IP5306 | 日期:2026-07-24 +> 全元器件引脚-网络映射,按7模块分组,用于原理图绘制和网表验证 +> MCU: ESP32-S3FH4R2 裸片 QFN-56 7×7mm (C3013940) +> 充电IC: IP5306 ESOP-8 (C181692),集成充电+锂电保护+升压 +> 板型:45×45mm方板,单面贴经济型SMT + +--- + +## 供电-充电模块 + +> 供电链路:USB-C 5V → IP5306 VIN → 充电 → 电池(4.2V) → BAT → ME6211 → 3V3 +> IP5306集成充电CC/CV+锂电保护,无需DW01+8205A +> 升压5V(VOUT)仅接电感闭环,不外接负载 + +### R8: 0Ω跳线 0603 (0603WAF0000T5E C21189) + +| 引脚 | 网络 | 备注 | +|------|------|------| +| Pin1 | VBUS | J1侧,USB-C 5V输入 | +| Pin2 | VBUS | 负载侧,接IP5306 VIN + C9/C14 | + +> 过流保护由IP5306内部+USB-C CC下拉双重保障,0Ω作为桥接 +> VBUS网络仅供给IP5306 VIN,不再直供ME6211 + +### U4: IP5306 (ESOP-8, C181692) + +| 引脚 | 编号 | 网络 | 备注 | +|------|------|------|------| +| VIN | Pin1 | VBUS | USB-C 5V充电输入,C23紧贴到GND | +| LED1 | Pin2 | IP5306LED1 | 充电指示,R2→D1→3V3 | +| LED2 | Pin3 | NC | 电量指示,不使用 | +| LED3 | Pin4 | NC | 电量指示,不使用 | +| KEY | Pin5 | NC | 按键/照明,不使用 | +| BAT | Pin6 | BAT | 电池正极+ME6211 VIN,C25紧贴到GND | +| SW | Pin7 | SW | DC-DC开关节点→L3 | +| VOUT | Pin8 | VOUT | 电感另一端,C24紧贴到GND | +| EP | — | GND | 散热焊盘,2.09×2.09mm | + +> IP5306内置CC/CV充电逻辑:涓流(100mA@BAT≤2.9V)→恒流(1.8A)→恒压(4.2V)→截止 +> 充满自动停充,再充阈值4.1V,无需软件干预 +> 1灯模式:充电中LED1闪烁(0.5Hz),充满常亮,正常放电常亮,低电快闪(1.5Hz) +> LED2/3/KEY悬空不影响充电保护功能 +> VOUT-SW之间仅接L3电感闭环,不接外部5V负载 + +### U2: ME6211A33PG-N (SOT-89-3, C236673) + +| 引脚 | 编号 | 网络 | 备注 | +|------|------|------|------| +| VSS | Pin1 | GND | | +| VIN | Pin2 | BAT | 电池电压3.0~4.2V,C5紧贴Pin2到GND | +| VOUT | Pin3 | 3V3 | C6紧贴Pin3到GND | + +> A系列CE内置上拉电阻开,无需外部CE引脚,上电输出3.3V +> VIN从VBUS改为BAT,IP5306充电后电池直供LDO +> SOT-89散热优于SOT-23-5,Pin1(GND)和Pin3(VOUT)加大焊盘散热 + +### 充电模块外围 + +| 位号 | 值 | Pin1 | Pin2 | 用途 | +|------|------|------|------|------| +| L3 | 1.0µH | SW | VOUT | IP5306 DC-DC功率电感(FXL0420-1R0-M C167203 4.4×4.2mm) | +| C23 | 10µF 10V | GND | VBUS | IP5306 VIN紧贴去耦(C19702 0603 X5R) | +| C24 | 22µF 16V | GND | VOUT | IP5306 VOUT紧贴去耦(C45783 0805 X5R) | +| C25 | 10µF 16V | GND | BAT | IP5306 BAT紧贴去耦(C25741 0603 X5R) | +| D1 | LED红0603 | D1阴极(R2) | 3V3(阳极) | 充电指示灯,3V3→D1阳极→D1阴极→R2→IP5306LED1(C2286 基础库) | +| R2 | 1kΩ | D1阴极 | IP5306LED1 | 充电指示灯限流(C11702 0402) | + +> L3靠近U4放置,SW走线尽量短减少EMI +> C23/C25均0603封装,C24升级0805 16V防MLCC偏压降容 +> 充电指示逻辑:3V3→D1阳极→D1阴极→R2→IP5306 Pin2(LED1),IP5306内部灌电流拉低驱动 + +### 供电模块阻容 + +| 位号 | 值 | Pin1 | Pin2 | 用途 | +|------|------|------|------|------| +| C5 | 2.2µF 16V | GND | BAT | ME6211 VIN紧贴去耦(C23630 0603 X5R) | +| C6 | 2.2µF 16V | GND | 3V3 | ME6211 VOUT紧贴去耦(C23630 0603 X5R) | + +> C5从VBUS改BAT,跟随ME6211 VIN网络变更 + +--- + +## 控制模块 + +> ESP32-S3FH4R2裸片(QFN-56 7×7mm)+晶振+电源去耦+Strapping配置+复位/下载按键 +> GPIO14原LEDBREATHE重分配为BATADC电池电压ADC检测(R14/R15分压,ADC2_CH3) + +### U1: ESP32-S3FH4R2 (QFN-56 7×7mm, C3013940) + +| 物理Pin | 引脚名 | 网络 | 备注 | +|---------|--------|------|------| +| 1 | LNA_IN | NC | 天线输入,无天线不接 | +| 2 | VDD3P3 | 3V3 | C1(100nF)紧贴到GND | +| 3 | VDD3P3 | 3V3 | C15(100nF)紧贴到GND | +| 4 | CHIP_PU | RESET | R5(10kΩ)上拉3V3 + C4(1µF)去抖 + RESET键接GND | +| 5 | GPIO0 | BOOT | R1(10kΩ)上拉3V3 + BOOT键接GND | +| 6 | GPIO1 | TOUCHHEAD | 触摸-头部,J4-3 | +| 7 | GPIO2 | TOUCHLFACE | 触摸-左脸,J4-2 | +| 8 | GPIO3 | NC | Strapping:JTAG源选择,禁配输出 | +| 9 | GPIO4 | I2SBCLK | I2S位时钟,功放专用 | +| 10 | GPIO5 | I2SWS | I2S字选择,功放专用 | +| 11 | GPIO6 | TOUCHRFACE | 触摸-右脸,J4-1 | +| 12 | GPIO7 | AMPDIN | 功放数据输入(S3→MAX98357A) | +| 13 | GPIO8 | LCDRST | 屏幕复位,J2-5 | +| 14 | GPIO9 | LCDDC | 数据/命令,J2-6 | +| 15 | GPIO10 | LCDCS | 片选,J2-7 | +| 16 | GPIO11 | LCDMOSI | SPI数据,J2-4 | +| 17 | GPIO12 | LCDCLK | SPI时钟,J2-3 | +| 18 | GPIO13 | AMPSDMODE | 功放使能(原GPIO15重映射),boot浮空→关断防爆音 | +| 19 | GPIO14 | BATADC | 电池电压ADC检测,R14/R15分压中点,ADC2_CH3 | +| 20 | VDD3P3_RTC | 3V3 | C18(100nF)紧贴到GND | +| 21 | XTAL_32K_P | NC | 32K晶振不用 | +| 22 | XTAL_32K_N | NC | 32K晶振不用 | +| 23 | GPIO17 | ACCELSCL | R3(4.7kΩ)上拉3V3 | +| 24 | GPIO18 | ACCELSDA | R4(4.7kΩ)上拉3V3 | +| 25 | GPIO19 | USBDN | R9(22Ω)→USB D-→J1 | +| 26 | GPIO20 | USBDP | R10(22Ω)→USB D+→J1 | +| 27 | GPIO21 | ACCELINT1 | LIS3DH INT1中断,动作唤醒 | +| 28 | SPICS1 | NC | 内置Flash片选脚,必须NC | +| 29 | VDD_SPI | 3V3 | C22(100nF)紧贴到GND,独立电源脚必须接3V3 | +| 30 | SPIHD | NC | 内置Flash/PSRAM SPI | +| 31 | SPIWP | NC | 内置Flash/PSRAM SPI | +| 32 | SPICS0 | NC | 内置Flash/PSRAM SPI | +| 33 | SPICLK | NC | 内置Flash/PSRAM SPI | +| 34 | SPIQ | NC | 内置Flash/PSRAM SPI | +| 35 | SPID | NC | 内置Flash/PSRAM SPI | +| 36 | SPICLK_N | NC | 内置Flash/PSRAM SPI差分 | +| 37 | SPICLK_P | NC | 内置Flash/PSRAM SPI差分 | +| 38 | GPIO33 | NC | 未用 | +| 39 | GPIO34 | NC | 未用 | +| 40 | GPIO35 | NC | 未用 | +| 41 | GPIO36 | NC | 未用 | +| 42 | GPIO37 | NC | 未用 | +| 43 | GPIO38 | NC | 未用(JTAG MTCK) | +| 44 | MTCK | NC | JTAG调试脚 | +| 45 | MTDO | NC | JTAG调试脚 | +| 46 | VDD3P3_CPU | 3V3 | C21(100nF)紧贴到GND | +| 47 | MTDI | NC | JTAG调试脚 | +| 48 | MTMS | NC | JTAG调试脚 | +| 49 | GPIO43 | TXD0 | J6-1 UART发送 | +| 50 | GPIO44 | RXD0 | J6-2 UART接收 | +| 51 | GPIO45 | GND | R12(10kΩ)下拉到GND,Strapping:VDD_SPI=3.3V | +| 52 | GPIO46 | GND | R11(10kΩ)下拉到GND,Strapping:ROM打印/SPI Boot | +| 53 | XTAL_N | XTALN | C16(22pF)到GND + X1 Pin3 | +| 54 | XTAL_P | XTALP | L1(24nH)→C17(22pF)到GND + X1 Pin1 | +| 55 | VDDA | VDDA | L2磁珠隔离→C19(100nF)紧贴到GND | +| 56 | VDDA | VDDA | L2磁珠隔离→C20(100nF)紧贴到GND | +| 57 | EP | GND | 散热焊盘,打地孔 | + +> QFN-56裸片,4MB Flash + 2MB PSRAM内置,Pin28-37为内置Flash/PSRAM专用脚全NC +> GPIO15/16在QFN-56封装未引出,AMPSDMODE重映射GPIO13 +> GPIO14原LEDBREATHE重分配为BATADC电池电压ADC检测(R14/R15分压,ADC2_CH3) +> 触摸从5点减为3点(TOUCHBACK/TOUCHBELLY随GPIO13/14重映射而取消) +> VDD_SPI(Pin29)是独立电源脚,即使内置Flash也必须接3V3+去耦 +> Pin28=SPICS1是内置Flash片选脚,必须NC,不能接3V3 +> EP散热焊盘必须焊接,打多个地孔到GND平面 + +### 晶振电路 + +> 40MHz主晶振 + 24nH电感 + 22pF负载电容 + +| 位号 | 元件 | 参数 | 封装 | LCSC | 连接 | +|------|------|------|------|------|------| +| X1 | 40MHz晶振 | ±10ppm 15pF ESR 25Ω | SMD2520-4P | C284176 | Pin1→L1→XTALP, Pin3→XTALN, Pin2/4→GND | +| L1 | 电感 | 24nH | 0402 | C167472 | 串在XTAL_P线路上:MCU Pin54→L1→X1 Pin1 | +| C16 | 电容 | 22pF 50V | 0402 | C1555 | Pin53(XTAL_N)→C16→GND | +| C17 | 电容 | 22pF 50V | 0402 | C1555 | L1输出端→C17→GND(接X1 Pin1侧) | + +> 晶振选型C284176 ESR 25Ω优于乐鑫音频产品≤30Ω推荐 +> L1(24nH)串在XTAL_P线路上抑制三次谐波,不是并联 +> C16/C17负载电容值按CL=(C-Cstray)/2推算,22pF对应CL≈15pF(含4~5pF杂散) + +### 电源去耦 + +> 每VDD脚紧贴100nF,共享bulk电容,不做阶梯;VDDA经磁珠隔离 + +| 位号 | 值 | 连接 | 用途 | +|------|------|------|------| +| C1 | 100nF | Pin2→GND | VDD3P3去耦(C307331 C0402) | +| C15 | 100nF | Pin3→GND | VDD3P3去耦(C307331 C0402) | +| C3 | 10µF | 3V3→GND | VDD3P3 bulk,3V3先进C3再分叉到Pin2/Pin3(C96446 C0603) | +| C18 | 100nF | Pin20→GND | VDD3P3_RTC去耦(C307331 C0402) | +| C22 | 100nF | Pin29→GND | VDD_SPI去耦(C307331 C0402) | +| C21 | 100nF | Pin46→GND | VDD3P3_CPU去耦(C307331 C0402) | +| C2 | 10µF | VDDA→GND | VDDA bulk,磁珠后(C96446 C0402) | +| C19 | 100nF | Pin55→GND | VDDA去耦(C307331 C0402) | +| C20 | 100nF | Pin56→GND | VDDA去耦(C307331 C0402) | +| L2 | 磁珠120Ω@100MHz | 3V3→VDDA | VDDA隔离(C14709 C0603) | + +> 3V3供电路径:3V3→C3(10µF)→分叉→Pin2+C1/Pin3+C15 +> VDDA供电路径:3V3→L2(磁珠)→C2(10µF)→分叉→Pin55+C19/Pin56+C20 +> Pin20/29/46各自100nF紧贴到GND,共享3V3网络的C3(10µF)做bulk +> VDDA用磁珠隔离数字噪声,C2升级10µF改善ADC供电纹波 + +### 控制模块阻容/按键 + +| 位号 | 值 | Pin1 | Pin2 | 用途 | +|------|------|------|------|------| +| C4 | 1µF | GND | RESET | EN去抖,紧贴Pin4(C52923 0402) | +| R1 | 10kΩ | 3V3 | BOOT | GPIO0上拉(C25744 0402) | +| R3 | 4.7kΩ | 3V3 | ACCELSCL | I2C SCL上拉(C25900 0402) | +| R4 | 4.7kΩ | 3V3 | ACCELSDA | I2C SDA上拉(C25900 0402) | +| R5 | 10kΩ | 3V3 | RESET | EN上拉(C25744 0402) | +| R9 | 22Ω | USBDN | J1-D- | USB D-串联电阻,贴MCU端(C25092 0402) | +| R10 | 22Ω | USBDP | J1-D+ | USB D+串联电阻,贴MCU端(C25092 0402) | +| R11 | 10kΩ | GPIO46 | GND | Strapping下拉,ROM打印/SPI Boot(C25744 0402) | +| R12 | 10kΩ | GPIO45 | GND | Strapping下拉,VDD_SPI=3.3V(C25744 0402) | +| R13 | 47kΩ | AMPSDMODE | GND | MAX98357A SD_MODE防爆音下拉,boot期间配合内置100kΩ确保<1.4V(C25792 0402基础库) | + +> R2/R8/D2原上电指示灯已删除,位号重分配:R2=充电指示灯限流1kΩ,D1=充电指示LED + +### BOOT按键 / RESET按键 + +| 位号 | Pin1 | Pin2 | +|------|------|------| +| BOOT | BOOT | GND | +| RESET | RESET | GND | + +--- + +## 音频模块 + +> I2S0:功放(输出)专用BCLK/WS,GPIO13控制SD_MODE防爆音 +> MAX98357A从VBUS改3.3V供电 +> FS-1340贴片扬声器替代原J3外接喇叭,GAIN_SLOT从12dB改6dB匹配0.7W喇叭 + +### U3: MAX98357AETE+T (TQFN-16-EP 3×3mm, C910544) + +| 引脚 | 编号 | 网络 | 备注 | +|------|------|------|------| +| DIN | Pin1 | AMPDIN | I2S数据输入←GPIO7 | +| GAIN_SLOT | Pin2 | 3V3 | 增益=6dB,接VDD(=3V3) | +| GND | Pin3 | GND | | +| SD_MODE | Pin4 | AMPSDMODE | GPIO13控制,boot浮空→关断防爆音 | +| NC | Pin5-6 | — | 不接 | +| VDD | Pin7-8 | 3V3 | 3.3V供电 | +| OUTP | Pin9 | SPKP | 扬声器+→FS-1340 Pad1 | +| OUTN | Pin10 | SPKN | 扬声器-→FS-1340 Pad2 | +| GND | Pin11 | GND | | +| NC | Pin12-13 | — | 不接 | +| LRCLK | Pin14 | I2SWS | I2S字选择,共享GPIO5 | +| GND | Pin15 | GND | | +| BCLK | Pin16 | I2SBCLK | I2S位时钟,共享GPIO4 | +| EP | — | GND | 散热垫,大面积铜皮 | + +> VDD从VBUS改3V3:3.3V由ME6211 LDO输出,始终供电 +> GAIN_SLOT从GND(12dB)改3V3(6dB):FS-1340仅0.7W,12dB在3V3电压下仍超功率,6dB约0.3~0.5W安全 +> SD_MODE防爆音机制不变:boot时GPIO浮空→内置100kΩ下拉→关断;启动后拉高GPIO13→使能 + +### SPK1: FS-1340 微型扬声器 (SMD 13×13×4mm, C482342) + +| 焊盘 | 网络 | 备注 | +|------|------|------| +| Pad1 | SPKP | 扬声器+,接MAX98357A OUTP | +| Pad2 | SPKN | 扬声器-,接MAX98357A OUTN | +| Pad3 | GND/NC | 机械固定焊盘 | +| Pad4 | GND/NC | 机械固定焊盘 | + +> SMD直贴PCB,省外接连接器+省壳上开孔+走线最短 +> 替代原J3外接喇叭方案,位号J3已重分配给电池接口 +> 8Ω 0.7W,配合GAIN_SLOT=6dB使用 + +### 音频模块阻容(功放) + +| 位号 | 值 | Pin1 | Pin2 | 用途 | +|------|------|------|------|------| +| C7 | 100nF | GND | 3V3 | U3 VDD高频去耦,最近Pin7/8(C14663 0603) | +| C8 | 10µF | GND | 3V3 | U3 VDD bulk,紧挨C7外侧(C96446 0603) | + +> C7/C8从VBUS改3V3,跟随MAX98357A供电网络变更 + +--- + +## 运动检测模块 + +> LIS3DH三轴加速度计,I2C地址0x18,动作/倾斜/自由落体检测 + +### U5: LIS3DHTR (LGA-16 3×3mm, C15134) + +| 引脚 | 编号 | 网络 | 备注 | +|------|------|------|------| +| Vdd_IO | Pin1 | 3V3 | C12紧贴Pin1去耦 | +| NC | Pin2-3 | — | 不接 | +| SCL | Pin4 | ACCELSCL | ←GPIO17,R3上拉3V3 | +| GND | Pin5 | GND | | +| SDA | Pin6 | ACCELSDA | ←→GPIO18,R4上拉3V3 | +| SDO | Pin7 | GND | I2C地址LSB,GND→0x18 | +| CS | Pin8 | 3V3 | **必须接高=I2C模式** | +| NC | Pin9 | — | INT2不接 | +| RES | Pin10 | GND | **必须接GND** | +| INT1 | Pin11 | ACCELINT1 | →GPIO21,动作中断唤醒 | +| GND | Pin12 | GND | | +| ADC3 | Pin13 | — | 不用→悬空 | +| Vdd | Pin14 | 3V3 | C10+C11去耦 | +| ADC1 | Pin15 | — | 不用→悬空 | +| ADC2 | Pin16 | — | 不用→悬空 | + +### 运动检测模块阻容 + +| 位号 | 值 | Pin1 | Pin2 | 用途 | +|------|------|------|------|------| +| C10 | 100nF | 3V3 | GND | U5 Vdd去耦,最近Pin14(C1525 0402) | +| C11 | 10µF | 3V3 | GND | U5 Vdd bulk,紧挨C10(C96446 0603) | +| C12 | 100nF | 3V3 | GND | U5 Vdd_IO去耦,紧贴Pin1(C1525 0402) | + +--- + +## 交互模块 + +> 屏幕+触摸,用户交互外设 +> 触摸从5点减为3点(GPIO13/14重映射后TOUCHBACK/TOUCHBELLY取消) + +### J2: 屏幕 8P XH2.5mm (C161875) — 驱动IC: ST7789V3, 320×172横屏 + +| Pin | 网络 | 备注 | +|-----|------|------| +| 1 | GND | | +| 2 | 3V3 | | +| 3 | LCDCLK | SPI时钟 | +| 4 | LCDMOSI | SPI数据 | +| 5 | LCDRST | 复位 | +| 6 | LCDDC | 数据/命令 | +| 7 | LCDCS | 片选 | +| 8 | 3V3 | 背光常亮(BLK) | + +> SPI 4线,控制器ST7789V3 + +### J2去耦 + +| 位号 | 值 | Pin1 | Pin2 | 用途 | +|------|------|------|------|------| +| C13 | 100nF | 3V3 | GND | 屏幕去耦紧贴J2(C1525 0402) | + +### J4: 触摸 3P XH2.5mm (C144394) + +> 从5P减为3P,GPIO13/14重映射后TOUCHBACK/TOUCHBELLY取消 + +| Pin | 网络 | 位置 | +|-----|------|------| +| 1 | TOUCHRFACE | 右脸(GPIO6) | +| 2 | TOUCHLFACE | 左脸(GPIO2) | +| 3 | TOUCHHEAD | 头部(GPIO1) | + +### BAT ADC电池电压检测(GPIO14分压) + +> GPIO14(ADC2_CH3)通过R14/R15分压检测电池电压 +> BAT→R14(10kΩ)→GPIO14→R15(10kΩ)→GND +> 4.2V时GPIO14≈2.1V,3.0V时≈1.5V,分压回路耗电约210µA,源阻抗5kΩ(ADC规范≤10kΩ) + +| 位号 | 值 | Pin1 | Pin2 | 用途 | +|------|------|------|------|------| +| R14 | 10kΩ | BAT | BATADC | 上分压电阻(C25744 0402) | +| R15 | 10kΩ | BATADC | GND | 下分压电阻(C25744 0402) | + +--- + +## 连接器 + +### J1: USB Type-C 16P卧贴母座 (C2765186) + +> 16P卧贴USB-C,5V/5A + +| Pin | 网络 | 备注 | +|-----|------|------| +| A4/B9/B4/A9 | VBUS | 5V输入,→R8(0Ω)→IP5306 VIN | +| A6/B6 | USBDP | USB D+→R10→GPIO20 | +| A7/B7 | USBDN | USB D-→R9→GPIO19 | +| A5 | CC1 | R6(5.1kΩ)下拉GND | +| B5 | CC2 | R7(5.1kΩ)下拉GND | +| A1/B12/B1/A12 | GND | | +| A8/B8 | SBU | 不接 | + +### J1阻容 + +| 位号 | 值 | Pin1 | Pin2 | 用途 | +|------|------|------|------|------| +| R6 | 5.1kΩ | CC1(A5) | GND | CC1下拉(C25905 0402) | +| R7 | 5.1kΩ | CC2(B5) | GND | CC2下拉(C25905 0402) | +| D3 | SMF5.0A | VBUS(K) | GND(A) | VBUS TVS过压保护,K接VBUS侧,A接GND | +| C14 | 100nF | GND | VBUS | VBUS入口高频去耦,贴J1最近(C14663 0603) | +| C9 | 10µF | GND | VBUS | VBUS入口bulk,紧挨C14外侧(C96446 0603) | + +> D+/D-各串22Ω电阻靠近MCU端放置,对地电容焊盘预留NC +> D+/D-差分走线,90Ω差分阻抗 + +### J3: 锂电池 2P XH2.5mm (C158012) + +> 原喇叭接口位号重分配为电池接口 + +| Pin | 网络 | 备注 | +|-----|------|------| +| 1 | BAT | 电池正极,接IP5306 BAT(Pin6) | +| 2 | GND | 电池负极,直连GND(IP5306内置保护,无需防倒灌) | + +> IP5306内置锂电保护(过充/过放/过流),电池负极直连GND +> 不同于GBC需外接DW01+8205A防倒灌电路 + +### J6: UART调试 4P XH-4A (C158012) + +> 原H1排针改为XH-4A座,位号改J6 + +| Pin | 网络 | 备注 | +|-----|------|------| +| 1 | TXD0 | GPIO43 | +| 2 | RXD0 | GPIO44 | +| 3 | GND | | +| 4 | 3V3 | | + +--- + +## BOM清单 + +> 封装与LCSC编号强制对齐:换封装=换编号,改封装列必须同步改LCSC列 +> 0402手工焊不了,不要建议0402预留焊位 +> MCU从S3-MINI-1-N8模组换为S3FH4R2裸片,SMT类型经济型 + +### IC/裸片 + +| 位号 | 元件 | 参数 | 封装 | LCSC | 数量 | 库 | +|------|------|------|------|------|------|-----| +| U1 | ESP32-S3FH4R2 | 4MB Flash+2MB PSRAM LX7双核 | QFN-56 7×7mm | C3013940 | 1 | 经济型 | +| U2 | ME6211A33PG-N | 3.3V/500mA LDO | SOT-89-3 | C236673 | 1 | 扩展 | +| U3 | MAX98357AETE+T | I2S Class D功放 | TQFN-16-EP 3×3 | C910544 | 1 | 扩展 | +| U4 | IP5306 | 充电+锂电保护+升压 | ESOP-8 | C181692 | 1 | 扩展 | +| U5 | LIS3DHTR | 三轴加速度计 | LGA-16 3×3 | C15134 | 1 | 扩展 | +| R8 | 0Ω | 0603WAF0000T5E | 0603 | C21189 | 1 | 基础 | + +### 晶振/电感/磁珠 + +| 位号 | 元件 | 参数 | 封装 | LCSC | 数量 | 库 | +|------|------|------|------|------|------|-----| +| X1 | 40MHz晶振 | ±10ppm 15pF ESR 25Ω | SMD2520-4P | C284176 | 1 | 扩展 | +| L1 | 电感 | 24nH | 0402 | C167472 | 1 | 扩展 | +| L2 | 磁珠 | 120Ω@100MHz | 0603 | C14709 | 1 | 基础 | +| L3 | FXL0420-1R0-M | 1.0µH 7A功率电感 | SMD 4.4×4.2mm | C167203 | 1 | 扩展 | + +### 扬声器 + +| 位号 | 元件 | 参数 | 封装 | LCSC | 数量 | 库 | +|------|------|------|------|------|------|-----| +| SPK1 | FS-1340 | 8Ω 0.7W 13×13×4mm | SMD | C482342 | 1 | 扩展 | + +### LED + +| 位号 | 元件 | 参数 | 封装 | LCSC | 数量 | 库 | +|------|------|------|------|------|------|-----| +| D1 | LED | 红 | 0603 | C2286 | 1 | 基础 | +| D3 | SMF5.0A | TVS单向5.0V 200W | SOD-123FL | C19077497 | 1 | 扩展 | + +### 电阻 + +| 位号 | 阻值 | 封装 | LCSC | 数量 | 库 | +|------|------|------|------|------|-----| +| R1,R5,R11,R12 | 10kΩ | 0402 | C25744 | 4 | 基础 | +| R2 | 1kΩ | 0402 | C11702 | 1 | 基础 | +| R3,R4 | 4.7kΩ | 0402 | C25900 | 2 | 基础 | +| R6,R7 | 5.1kΩ | 0402 | C25905 | 2 | 基础 | +| R9,R10 | 22Ω | 0402 | C25092 | 2 | 基础 | +| R13 | 47kΩ | 0402 | C25792 | 1 | 基础 | +| R14,R15 | 10kΩ | 0402 | C25744 | 2 | 基础 | + +### 电容 + +| 位号 | 容值 | 封装 | LCSC | 数量 | 库 | +|------|------|------|------|------|-----| +| C1,C15,C18,C19,C20,C21,C22 | 100nF 50V | C0402 | C307331 | 7 | 基础 | +| C10,C12,C13 | 100nF 16V | C0402 | C1525 | 3 | 基础 | +| C2 | 10µF 25V | C0402 | C96446 | 1 | 基础 | +| C4 | 1µF 25V | C0402 | C52923 | 1 | 基础 | +| C23 | 10µF 10V | C0603 | C19702 | 1 | 基础 | +| C16,C17 | 22pF 50V | C0402 | C1555 | 2 | 基础 | +| C3,C8,C9,C11 | 10µF 25V | C0603 | C96446 | 4 | 基础 | +| C5,C6 | 2.2µF 16V | C0603 | C23630 | 2 | 基础 | +| C7,C14 | 100nF 50V | C0603 | C14663 | 2 | 基础 | +| C24 | 22µF 16V | C0805 | C45783 | 1 | 基础 | +| C25 | 10µF 16V | C0603 | C25741 | 1 | 基础 | + +### 按键 + +| 位号 | 元件 | 参数 | 封装 | LCSC | 数量 | 库 | +|------|------|------|------|------|------|-----| +| BOOT | 轻触开关 | 4×3×2mm | SMD | C720477 | 1 | 基础 | +| RESET | 轻触开关 | 4×3×2mm | SMD | C720477 | 1 | 基础 | + +### 连接器 + +| 位号 | 元件 | 参数 | 封装 | LCSC | 数量 | 库 | +|------|------|------|------|------|------|-----| +| J1 | Type-C | 16P卧贴 | SMD | C2765186 | 1 | 扩展 | +| J2 | XH连接器 | 8P 2.5mm | 直插 | C161875 | 1 | 扩展 | +| J3 | XH连接器 | 2P 2.5mm(锂电池) | 直插 | C158012 | 1 | 扩展 | +| J4 | XH连接器 | 3P 2.5mm | 直插 | C144394 | 1 | 扩展 | +| J6 | XH-4A座 | 4P(UART调试) | 直插 | C158012 | 1 | 扩展 | + +### 外接件(不上板) + +| 器件 | 数量 | 用途 | +|------|------|------| +| ST7789V3 320×172 TFT彩屏 | 1 | SPI 4线,控制器ST7789V3 | +| 3.7V锂电池 | 1 | IP5306供电 | +| 触摸焊盘×3(铜箔+弹簧接触) | 3 | PCB铺铜 | + +### 换料费预估 + +| 扩展库元件 | 换料费 | +|-----------|--------| +| U1 ESP32-S3FH4R2 | 经济型无换料费 | +| U2 ME6211 | 20元 | +| U3 MAX98357A | 20元 | +| U4 IP5306 | 20元 | +| U5 LIS3DH | 20元 | +| J1 Type-C卧贴 | 20元 | +| J2 XH 8P | 5元 | +| X1 晶振 | 5元 | +| L1 电感 | 5元 | +| L3 功率电感 | 5元 | +| SPK1 FS-1340 | 5元 | +| D3 SMF5.0A TVS | 5元 | +| **合计** | **150元** | + +> MCU换经济型S3FH4R2裸片,比模组省换料费且单价更低 + +--- + +## 网络汇总 + +> V1.0-S3FH4R2-IP5306全信号网络连接关系,用于网表验证对齐 + +| 网络名 | 连接 | 说明 | +|--------|------|------| +| VBUS | J1-A4/B9/B4/A9 → R8(0Ω) → U4-Pin1(VIN) + C9/C14/C23 + D3(K极) | USB 5V输入→R8(0Ω)→IP5306充电输入,D3 TVS过压保护 | +| BAT | U4-Pin6(BAT) + U2-Pin2(VIN) + C5/C25 + J3-1 | 电池电压3.0~4.2V,IP5306 BAT→ME6211 | +| 3V3 | U2-Pin3(VOUT) + U1-Pin2/Pin3(VDD3P3) + U1-Pin20(VDD3P3_RTC) + U1-Pin29(VDD_SPI) + U1-Pin46(VDD3P3_CPU) + L2输入(VDDA) + C1/C3/C6/C7/C8/C10/C11/C12/C13/C15/C18/C21/C22 + U3-Pin7/8(VDD) + U3-Pin2(GAIN_SLOT) + U5-Pin1/Pin8/Pin14 + J2-2/8 + J6-4 + R1/R3/R4/R5 + D1阳极 | 3.3V逻辑供电 | +| VDDA | L2输出→C2→U1-Pin55/Pin56(VDDA) + C19/C20 | 模拟电源,磁珠隔离 | +| SW | U4-Pin7(SW) + L3-Pin1 | IP5306 DC-DC开关节点 | +| VOUT | U4-Pin8(VOUT) + L3-Pin2 + C24 | IP5306升压输出,电感闭环 | +| GND | 系统公共地 | | +| XTALP | U1-Pin54 → L1 → C17/X1-Pin1 | 40MHz晶振P端 | +| XTALN | U1-Pin53 → C16/X1-Pin3 | 40MHz晶振N端 | +| I2SBCLK | GPIO4(Pin9) + U3-Pin16(BCLK) | I2S位时钟 | +| I2SWS | GPIO5(Pin10) + U3-Pin14(LRCLK) | I2S字选择 | +| AMPDIN | GPIO7(Pin12) + U3-Pin1(DIN) | S3→功放 | +| AMPSDMODE | GPIO13(Pin18) + U3-Pin4(SD_MODE) + R13(47kΩ)下拉到GND | 功放使能控制防爆音(原GPIO15),R13(47kΩ)下拉到GND | +| ACCELSCL | GPIO17(Pin23) + U5-Pin4(SCL) + R3 | I2C时钟上拉3V3 | +| ACCELSDA | GPIO18(Pin24) + U5-Pin6(SDA) + R4 | I2C数据上拉3V3 | +| ACCELINT1 | U5-Pin11(INT1) + GPIO21(Pin27) | 动作中断唤醒 | +| LCDRST | GPIO8(Pin13) + J2-5 | 屏幕复位 | +| LCDDC | GPIO9(Pin14) + J2-6 | 数据/命令 | +| LCDCS | GPIO10(Pin15) + J2-7 | 片选 | +| LCDMOSI | GPIO11(Pin16) + J2-4 | SPI数据 | +| LCDCLK | GPIO12(Pin17) + J2-3 | SPI时钟 | +| USBDN | GPIO19(Pin25) + R9 + J1-A7/B7 | USB D-,R9(22Ω)串联贴MCU端 | +| USBDP | GPIO20(Pin26) + R10 + J1-A6/B6 | USB D+,R10(22Ω)串联贴MCU端 | +| IP5306LED1 | U4-Pin2(LED1) + R2 | 充电指示灯,3V3→D1→R2→IP5306 LED1 | +| TOUCHHEAD | GPIO1(Pin6) + J4-3 | 触摸-头部 | +| TOUCHLFACE | GPIO2(Pin7) + J4-2 | 触摸-左脸 | +| TOUCHRFACE | GPIO6(Pin11) + J4-1 | 触摸-右脸 | +| LEDTEXT | 已删除 | 原GPIO14扩展输出,三审后改为BATADC电池检测(ADC2_CH3) | +| BOOT | GPIO0(Pin5) + R1 + BOOT键 | 下载模式选择 | +| RESET | CHIP_PU(Pin4) + R5 + C4 + RESET键 | 硬件复位 | +| SPKP | U3-Pin9(OUTP) + SPK1-Pad1 | 扬声器+→FS-1340贴片 | +| SPKN | U3-Pin10(OUTN) + SPK1-Pad2 | 扬声器-→FS-1340贴片 | +| TXD0 | GPIO43(Pin49) + J6-1 | UART发送 | +| RXD0 | GPIO44(Pin50) + J6-2 | UART接收 | +| BATADC | GPIO14(Pin19) + R14/R15分压中点 | 电池电压ADC检测(ADC2_CH3),BAT→R14→BATADC→R15→GND,源阻抗5kΩ | +| CC1 | J1-A5 + R6 | 5.1kΩ下拉GND | +| CC2 | J1-B5 + R7 | 5.1kΩ下拉GND | + +--- + +## 变更记录 + +| 版本 | 变更内容 | +|------|----------| +| 实验版→V1.0 | MCU换ESP32-S3-MINI-1-N8直贴;麦克风INMP441→ICS-43434直贴;加速度计MPU6050→LIS3DH直贴;LDO→ME6211A33PG-N直贴;功放→MAX98357AETE+T直贴;USB-C→16P卧贴C2765186;功放供电3.3V→5V VBUS直供;SD_MODE由VBUS直连改为GPIO15控制防爆音;新增LIS3DH INT1→GPIO21中断唤醒;GPIO45/46悬空标NC;新增D2上电指示灯+R8;位号按画图顺序全量重编 | +| V1.0网表修复 | R3/R4上拉一端从信号线改接3V3网(✅已修);J1 VBUS引脚合并到VBUS网(✅已修) | +| V1.0审核整改 | USB-C换16P卧贴C2765186;删除H2扩展排针(IO48/37/38/42改NC);删除D1板载LED;R2改接J5-1外接呼吸灯限流;IO42(JTAG)风险消除 | +| V1.0布局整改 | 删除U4麦克风+IO6标NC+C9删除;J4-4/5互换(TOUCHBELLY/TOUCHBACK);USB D+/D-加R9/R10(22Ω)串联电阻贴模组端 | +| V1.0一审整改 | GPIO3改NC(触摸-右脸迁至GPIO6 TOUCH6);IO13/IO14网络名与网表对齐(IO13=TOUCHBACK J4-5, IO14=TOUCHBELLY J4-4);VBUS入口加C9(10µF)+C14(100nF);C3/C11换0603 10µF 10V(C96446)缓解偏压降容;J5改为扩展预留口;板子加宽约3mm | +| V1.0二审整改 | VBUS入口加F1 PTC自恢复保险丝(C46640963, 0603, 500mA)串联在J1与VBUS网络之间;C5/C6从1µF 50V(C15849)升级为2.2µF 16V(C23630)缓解偏压降容 | +| V1.0-S3FH4R2迁移 | MCU从ESP32-S3-MINI-1-N8模组(C2913206)换为S3FH4R2裸片(C3013940 QFN-56);GPIO15/16不可用(QFN-56未引出),AMPSDMODE重映射GPIO13(Pin18),LEDBREATHE重映射GPIO14(Pin19);触摸从5点减为3点(TOUCHBACK/TOUCHBELLY取消),J4从5P换3P(C144394);新增晶振电路X1(C284176)+L1(C167472 24nH)+C16/C17(C1555 22pF);新增电源去耦:Pin2/Pin3 VDD3P3+C1/C15+C3(10µF),Pin20 VDD3P3_RTC+C18,Pin29 VDD_SPI+C22,Pin46 VDD3P3_CPU+C21,Pin55/56 VDDA+L2磁珠(C14709)+C2(1µF)+C19/C20;GPIO45/46加外部10kΩ下拉R11/R12(C25744);Pin28 SPICS1改NC;Pin30-37 Flash/PSRAM SPI全NC;删除天线禁区;EP散热焊盘打地孔;晶振统一换C284176(ESR 25Ω) | +| V1.0-IP5306充电版 | 新增U4 IP5306(C181692 ESOP-8)充电+锂电保护+升压IC;新增L3功率电感FXL0420-1R0-M(C167203)+C23/C24/C25去耦;供电链路从VBUS→ME6211改为USB→IP5306→电池→BAT→ME6211→3V3;ME6211 VIN从VBUS改BAT;MAX98357A VDD从VBUS改3V3;GAIN_SLOT从GND(12dB)改3V3(6dB)匹配FS-1340(0.7W);新增FS-1340贴片扬声器SPK1(C482342)替代原J3外接喇叭;J3位号重分配为锂电池接口(Pin1=BAT, Pin2=GND);H1改J6(XH-4A座);删除J5扩展口+呼吸灯(GPIO14 LEDBREATHE取消);删除R8+D2上电指示灯;新增D1充电指示灯+R2(1kΩ C11702)接IP5306 LED1;C7/C8从VBUS改3V3跟随MAX98357A;C5从VBUS改BAT跟随ME6211;板型38×45→45×45mm方板 | +| V1.0-一审整改(网表对齐) | MAX98357A VDD和GAIN_SLOT从BAT改回3V3(与原理图网表对齐),C7/C8同步改3V3;F1从PTC改0Ω跳线;屏幕型号从ST7735修正为ST7789V3(320×172横屏);J4触摸引脚映射对齐网表(Pin1=TOUCHRFACE, Pin3=TOUCHHEAD);新增R13 47kΩ防爆音下拉电阻 | +| V1.0-二审整改(J5扩展口) | GPIO14从NC改为LEDTEXT扩展输出口;新增J5 XH-3P(C144394)连接器(Pin1=LEDTEXT, Pin2=3V3, Pin3=GND);BOM/网络汇总/变更记录同步更新 | +| V1.0-三审整改(智谱5.2) | E-01:删除J5扩展口,GPIO14从LEDTEXT改为BATADC电池电压ADC检测(ADC2_CH3),新增R14/R15各10kΩ 0402分压(BAT→R14→BATADC→R15→GND,源阻抗5kΩ);E-02:IP5306去耦加大C23(1µF→10µF C19702)、C24(4.7µF→22µF C59461)、C25(2.2µF→10µF C25741);E-03:VBUS加D3 SMF5.0A TVS单向200W SOD-123FL(K→VBUS, A→GND);E-04跳过:D+/D-不加ESD保护,理由-板子无余量放USBLC6-2SC6、需扩展库增加费用、充电为主D+/D-仅烧录偶尔使用风险可控;E-05跳过:USB-C无CC通信优先级低IP5306自适应充电可缓解;I-01跳过:GPIO3不加10kΩ下拉,理由-EFUSE_STRAP_JTAG_SEL未烧写(默认0)GPIO3不参与启动配置浮空无影响(据ESP32-S3数据手册Table3-1 GPIO3默认Floating);I-05跳过:GP1O21拼写为嘉立创EDA导出问题非文档错误 | +| V1.0-终审优化 | C24从22µF 6.3V 0603(C59461)升级22µF 16V 0805(C45783)防MLCC偏压降容(W-07);C2从1µF 0402(C52923)升级10µF 0402(C96446)改善VDDA供电纹波提升ADC精度(W-08);W-05 GPIO3下拉因板面不足跳过;W-10 R2改470Ω可选未执行 | + +--- + +> 本内容由 Coze AI 生成,请遵循相关法律法规及《人工智能生成合成内容标识办法》使用与传播。 diff --git a/pet-v1/电子宠物_PCB_V1.0_方案文档.md b/pet-v1/电子宠物_PCB_V1.0_方案文档.md new file mode 100644 index 0000000..0ecac8e --- /dev/null +++ b/pet-v1/电子宠物_PCB_V1.0_方案文档.md @@ -0,0 +1,195 @@ +--- +AIGC: + Label: "1" + ContentProducer: 001191110102MACQD9K64018705 + ProduceID: 7626786669685096714-data_volume/files/所有对话/主对话/电子宠物/电子宠物_PCB_V1.0_方案文档.md + ReservedCode1: "" + ContentPropagator: 001191110102MACQD9K64028705 + PropagateID: 2496355402515786#1784995632593 + ReservedCode2: "" +--- +# 电子宠物 PCB V1.0 方案文档 + +> 版本:V1.0-S3FH4R2-IP5306 | 日期:2026-07-24 +> 安静陪伴型桌面电子宠物,PCB裸片直贴版+IP5306充电方案 +> MCU: ESP32-S3FH4R2 (C3013940), QFN-56 7×7mm, 4MB Flash + 2MB PSRAM +> 充电IC: IP5306 (C181692), ESOP-8, 充电+锂电保护+升压 +> 拓扑+BOM见:电子宠物_PCB_V1.0_拓扑连接图.md + +--- + +## 1. 产品定义 + +安静陪伴型桌面电子宠物。不说话,不跑模型。豆豆眼表情交互+电子音反应。摸它有反应,吵了会不高兴,安静了会犯困。BLE预留换表情换声音。 + +壳子:PLA 3D打印,low-poly几何风或复古方盒。策略:先开源引流→有需求再卖成品套件。 + +产品定价100-150元,首单98元冲量,首批20-30台试水,卖不动直接开源。 + +## 2. 核心硬件 + +| 位号 | 功能 | 器件 | 封装 | 嘉立创编号 | 说明 | +|------|------|------|------|-----------|------| +| U1 | 主控 | ESP32-S3FH4R2 | QFN-56 7×7mm | C3013940 | LX7双核240MHz, 4MB Flash+2MB PSRAM, 原生USB, 经济型SMT | +| U2 | LDO | ME6211A33PG-N | SOT-89-3 | C236673 | 3.3V/500mA, VIN改BAT电池供电 | +| U3 | 功放 | MAX98357AETE+T | TQFN-16 3×3mm | C910544 | I2S输入Class D, VDD=3V3, GAIN_SLOT=3V3(6dB) | +| U4 | 充电IC | IP5306 | ESOP-8 | C181692 | 充电+锂电保护+升压,BAT直供LDO | +| U5 | 加速度计 | LIS3DHTR | LGA-16 3×3mm | C15134 | 三轴, I2C地址0x18 | +| X1 | 晶振 | TXM40M...4252... | SMD2520-4P | C284176 | 40MHz ±10ppm 15pF ESR 25Ω | +| J1 | USB-C座 | 16P卧贴 | SMD卧贴16P | C2765186 | 5V/5A | +| F1/R8 | 0Ω跳线 | 0603WAF0000T5E | 0603 | C21189 | 过流由IP5306内部+USB-C CC下拉双重保障,位号改为R8 | +| D3 | TVS | SMF5.0A单向200W | SOD-123FL | C19077497 | VBUS过压保护,K接VBUS A接GND | +| D1 | 充电指示灯 | LED红 | 0603 | C2286 | 3V3→D1阳极→D1阴极→R2→IP5306 LED1 | +| SPK1 | 贴片扬声器 | FS-1340 | SMD 13×13mm | C482342 | 8Ω 0.7W,替代原外接喇叭 | +| L3 | 功率电感 | FXL0420-1R0-M | SMD 4.4×4.2mm | C167203 | 1.0µH 7A Isat,IP5306 DC-DC | + +## 3. 供电架构 + +### 供电链路 + +``` +USB-C 5V → D3(TVS) → R8(0Ω) → IP5306 VIN → CC/CV充电 → 电池(4.2V) → BAT网络 → ME6211 → 3V3 → MAX98357A(VDD=3V3) +``` + +- **VBUS网络**:IP5306 VIN + USB入口电容C9/C14 + IP5306去耦C23 + D3 TVS保护 +- **BAT网络**:IP5306 BAT脚 + 电池J3-1 + ME6211 VIN + C5/C25 +- **3V3网络**:ME6211 VOUT → MCU+屏幕+加速度计+MAX98357A(VDD+GAIN_SLOT)+功放去耦C7/C8 + LED等逻辑供电 +- **VOUT/SW网络**:IP5306升压闭环,L3跨接SW↔VOUT,不接外部5V负载 + +### IP5306充电行为 + +| 状态 | LED1(Pin2) | 说明 | +|------|-----------|------| +| 充电中 | 0.5Hz闪烁 | 1灯模式,正在充电 | +| 充满 | 常亮 | 自动停充4.2V | +| 正常放电 | 常亮 | 电池供电中 | +| 低电(<3%) | 1.5Hz快闪 | 需要充电 | + +> LED2/3/KEY悬空,不影响充电保护功能 +> 充满自动停充,再充阈值4.1V,无需软件干预 + +## 4. GPIO完整映射 + +> QFN-56物理Pin编号,GPIO15/16在QFN-56未引出,AMPSDMODE→GPIO13 +> GPIO14原LEDBREATHE重分配为LEDTEXT扩展输出口→J5-1 + +| 物理Pin | GPIO | 网络 | 功能 | 方向 | 备注 | +|---------|------|------|------|------|------| +| 2 | - | 3V3 | VDD3P3 | PWR | C1(100nF)紧贴到GND | +| 3 | - | 3V3 | VDD3P3 | PWR | C15(100nF)紧贴到GND | +| 4 | - | RESET | CHIP_PU | 输入 | 10kΩ上拉3V3 + C4(1µF)去抖 + RESET键 | +| 5 | GPIO0 | BOOT | 下载模式选择 | 输入 | BOOT键接GND,上电拉低进下载 | +| 6 | GPIO1 | TOUCHHEAD | 触摸-头部 | 触摸输入 | TOUCH1, 铜箔TP1, J4-3 | +| 7 | GPIO2 | TOUCHLFACE | 触摸-左脸 | 触摸输入 | TOUCH2, 铜箔TP2, J4-2 | +| 8 | GPIO3 | NC | - | - | Strapping:JTAG源选择,禁配输出 | +| 9 | GPIO4 | I2SBCLK | I2S位时钟 | 输出 | 功放专用 | +| 10 | GPIO5 | I2SWS | I2S字选择 | 输出 | 功放专用 | +| 11 | GPIO6 | TOUCHRFACE | 触摸-右脸 | 触摸输入 | TOUCH6, 从GPIO3迁入, 铜箔TP3, J4-1 | +| 12 | GPIO7 | AMPDIN | 功放数据 | 输出 | S3→MAX98357A | +| 13 | GPIO8 | LCDRST | 屏幕复位 | 输出 | | +| 14 | GPIO9 | LCDDC | 数据/命令 | 输出 | | +| 15 | GPIO10 | LCDCS | 片选 | 输出 | | +| 16 | GPIO11 | LCDMOSI | SPI数据 | 输出 | | +| 17 | GPIO12 | LCDCLK | SPI时钟 | 输出 | | +| 18 | GPIO13 | AMPSDMODE | 功放使能 | 输出 | 接MAX98357A SD_MODE, 防上电爆音(原GPIO15) | +| 19 | GPIO14 | BATADC | 电池电压ADC检测 | 输入(ADC) | R14/R15分压中点,ADC2_CH3,4.2V→2.1V,3.0V→1.5V,源阻抗5kΩ | +| 20 | - | 3V3 | VDD3P3_RTC | PWR | C18(100nF)紧贴到GND | +| 23 | GPIO17 | ACCELSCL | I2C时钟 | 输出 | 4.7kΩ上拉3V3 | +| 24 | GPIO18 | ACCELSDA | I2C数据 | 双向 | 4.7kΩ上拉3V3 | +| 25 | GPIO19 | USBDN | USB D- | 双向 | 原生USB,R9(22Ω)串联贴MCU端 | +| 26 | GPIO20 | USBDP | USB D+ | 双向 | 原生USB,R10(22Ω)串联贴MCU端 | +| 27 | GPIO21 | ACCELINT1 | 加速度计中断 | 输入 | LIS3DH INT1, 动作中断唤醒 | +| 29 | - | 3V3 | VDD_SPI | PWR | 独立电源脚,C22(100nF)紧贴到GND | +| 46 | - | 3V3 | VDD3P3_CPU | PWR | C21(100nF)紧贴到GND | +| 49 | GPIO43 | TXD0 | 串口发送 | 输出 | J6预留调试 | +| 50 | GPIO44 | RXD0 | 串口接收 | 输入 | J6预留调试 | +| 51 | GPIO45 | GND | Strapping下拉 | - | R12(10kΩ)下拉,VDD_SPI=3.3V | +| 52 | GPIO46 | GND | Strapping下拉 | - | R11(10kΩ)下拉,ROM打印/SPI Boot | +| 55 | - | VDDA | VDDA | PWR | 磁珠隔离→C19(100nF)紧贴到GND | +| 56 | - | VDDA | VDDA | PWR | 磁珠隔离→C20(100nF)紧贴到GND | + +**已用GPIO**:18个功能GPIO + GPIO3=NC + GPIO14=BATADC(电池检测) + GPIO45/46=Strapping下拉 + +## 5. 供电预算 + +| 模块 | 供电 | 工作电流 | +|------|------|----------| +| ESP32-S3 | 3V3 | ~100mA(WiFi关) | +| ST7789V3背光 | 3V3 | ~20mA | +| MAX98357A+喇叭 | 3V3 | ~50mA中等(6dB) | +| LIS3DH | 3V3 | ~0.01mA(低功耗) | +| 触摸 | 3V3 | ~3mA | +| D1充电指示灯 | 3V3 | ~2mA(1kΩ限流) | +| **3V3合计** | | **~125mA** | +| **BAT合计** | | **~175mA平均/~400mA峰值** | + +ME6211输出500mA余量充足。IP5306充电1.8A,500mA限流充电下ME6211+系统同时运行无压力。 + +## 6. 关键约束 + +1. **GPIO13重映射**:原AMPSDMODE在GPIO15,QFN-56封装GPIO15未引出,重映射至GPIO13 +2. **GPIO14=BATADC**:电池电压ADC检测(ADC2_CH3),R14/R15(各10kΩ)分压,BAT→R14→GPIO14→R15→GND,4.2V时测2.1V,3.0V时测1.5V,分压回路耗电约210µA,源阻抗5kΩ(ADC规范≤10kΩ) +3. **IP5306供电链路**:USB-C 5V→D3(TVS)→R8(0Ω)→IP5306 VIN→充电→电池→BAT→ME6211→3V3;MAX98357A由3V3供电 +4. **IP5306内置保护**:充电CC/CV+过充/过放/过流/过温全内置,电池负极直连GND,不需DW01+8205A +5. **IP5306升压VOUT不接负载**:VOUT-SW仅接L3电感闭环,5V升压不外接 +6. **充电指示灯**:D1+R2(1kΩ)接IP5306 LED1(Pin2),1灯模式:充电闪烁/充满常亮/放电常亮/低电快闪 +7. **MAX98357A 3V3供电**:VDD和GAIN_SLOT均接3V3(由ME6211 LDO输出),GAIN_SLOT接VDD=6dB增益 +8. **GAIN_SLOT改6dB**:从GND(12dB)改3V3(=VDD,6dB),匹配FS-1340(0.7W)功率范围 +9. **FS-1340贴片扬声器**:SMD直贴替代原J3外接喇叭,Pad1=SPKP, Pad2=SPKN, Pad3/4=GND/NC +10. **J3位号重分配**:原喇叭接口→锂电池接口(Pin1=BAT, Pin2=GND) +11. **H1改J6**:UART调试排针→XH-4A座,位号改J6 +12. **J5已删除**:原XH-3P扩展口删除,GPIO14改为BATADC电池检测,不再引出扩展输出 +13. **GPIO3 Strapping**:JTAG源选择,无内部上下拉,已改NC;触摸-右脸迁至GPIO6;EFUSE_STRAP_JTAG_SEL未烧写GPIO3不参与启动配置浮空无影响 +14. **GPIO45/46 Strapping**:10kΩ外部下拉确保稳定 +15. **FH4R2内置Flash/PSRAM**:Pin28-37为内置Flash/PSRAM专用脚全NC;Pin28=SPICS1必须NC +16. **Pin29 VDD_SPI**:独立电源脚,即使内置Flash也必须接3V3+100nF去耦 +17. **晶振电路**:C284176(ESR 25Ω) + L1(24nH) + C16/C17(22pF) +18. **电源去耦**:每VDD脚紧贴100nF,共享10µF bulk;VDDA经磁珠隔离,C2升级10µF改善ADC纹波 +19. **USB-C差分**:D+/D-差分走线90Ω阻抗,各串22Ω电阻靠近MCU端 +20. **MAX98357A SD_MODE**:GPIO13控制防爆音,boot浮空→关断;R13(47kΩ 0402 C25792)外部下拉确保SD_MODE<1.4V +21. **LIS3DH**:Pin10(RES)接GND,CS接高选I2C,INT1→GPIO21 +22. **仅BLE不开WiFi**:BLE峰值30-50mA,ME6211裕度充足 +23. **J6 UART不贴片**:XH-4A座,TXD0/RXD0/GND/3V3 +24. **R3/R4上拉**:4.7kΩ标准I2C值,不跟GBC改10kΩ(电子宠物I2C未复用Strapping脚) +25. **R9/R10 USB串联**:22Ω 0402(C25092),D-/D+各一颗贴MCU端 +26. **R8 0Ω跳线**:C21189,串联J1 VBUS与VBUS网络之间(原F1 PTC位号) +27. **5V大电容规则**:VBUS线上≥1µF统一0603 10V防MLCC偏压降容 +28. **电池必须**:没有电池的电子宠物是残次品 +29. **45×45mm方板**:甜点尺寸,不够再扩50×50 +30. **单面贴经济型**:双面贴进标准板费用太高 +31. **D3 TVS过压保护**:SMF5.0A单向200W SOD-123FL(K→VBUS, A→GND),VBUS侧防浪涌和静电 +32. **IP5306去耦升级**:C23=10µF、C24=22µF 16V 0805(C45783)、C25=10µF,终审优化C24升16V防偏压降容 +33. **D+/D-无ESD保护(跳过)**:板子无余量放USBLC6-2SC6、需扩展库增加费用、充电为主D+/D-仅烧录偶尔使用风险可控 + +## 7. 设计变更记录 + +| 变更项 | 实验版 | PCB V1.0模组版 | PCB V1.0裸片版 | PCB V1.0充电版 | 原因 | +|--------|--------|---------------|---------------|---------------|------| +| MCU | 开发板 | S3-MINI-1-N8 | S3FH4R2 | S3FH4R2 | 裸片降本+经济型SMT | +| 充电IC | 无 | 无 | 无 | IP5306(C181692) | 电池必须有,集成充电+保护 | +| 供电链路 | USB直供 | VBUS→ME6211 | VBUS→ME6211 | USB→IP5306→电池→BAT→ME6211 | 充电+电池运行 | +| 功放供电 | 3V3 | VBUS(5V) | VBUS(5V) | BAT(3.0~4.2V) | V1.0一审→3V3(LDO输出) | +| GAIN_SLOT | GND(12dB) | GND(12dB) | GND(12dB) | BAT(6dB) | V1.0一审→3V3(6dB) | +| 喇叭 | 外接2828 | 外接J3 | 外接J3 | FS-1340贴片SPK1 | 省连接器+省开孔 | +| J3 | - | 喇叭2P | 喇叭2P | 锂电池2P | 喇叭改贴片,J3位号重分配 | +| H1 | - | UART排针 | UART排针 | J6 XH-4A座 | 统一XH座 | +| J5 | - | 扩展口 | 扩展口 | 删除→XH-3P扩展输出 | 呼吸灯取消→二审后GPIO14引出J5(LEDTEXT)→三审后删J5改BATADC | +| D1/D2 | - | 上电指示灯 | 上电指示灯D2 | D1充电指示灯 | R8+D2上电灯→D1充电灯 | +| R2 | - | 470Ω呼吸灯 | 470Ω J5限流 | 1kΩ充电灯限流 | 功能变更,位号继承 | +| R8 | - | 470Ω上电灯 | 470Ω上电灯 | 删除 | 上电灯取消 | +| D3 | - | - | - | SMF5.0A TVS 200W | 三审新增VBUS过压保护,SOD-123FL | +| R14/R15 | - | - | - | 10kΩ×2分压 | 三审新增BATADC电池检测,源阻抗5kΩ | +| C23 | - | - | - | 1µF→10µF | 三审IP5306去耦加大 | +| C24 | - | - | - | 4.7µF→22µF | 三审IP5306去耦加大 | +| C25 | - | - | - | 2.2µF→10µF | 三审IP5306去耦加大 | +| GPIO14 | - | LEDBREATHE | LEDBREATHE | NC→LEDTEXT(J5-1)→BATADC(R14/R15 10kΩ分压,ADC2_CH3) | 呼吸灯取消→二审引出J5→三审改为电池检测 | +| 板型 | - | 38×45mm | 38×45mm | 45×45mm方板 | IP5306+外围+喇叭需要更大面积 | +| F1 | - | - | - | PTC 500mA | V1.0一审→0Ω跳线(R8),IP5306内部保护 | +| 显示屏 | - | ST7735 240×240 | ST7735 240×240 | ST7735 240×240 | V1.0一审→ST7789V3 320×172横屏 | +| R13 | - | - | - | 无 | V1.0一审→47kΩ防爆音下拉 | +| C2 | - | 1µF | 1µF | 10µF C96446 | 终审优化VDDA bulk加大改善ADC纹波(W-08) | +| C24 | - | - | 22µF 10V 0603 | 22µF 16V 0805 C45783 | 终审优化升级16V防MLCC偏压降容(W-07) | + +--- + +> 本内容由 Coze AI 生成,请遵循相关法律法规及《人工智能生成合成内容标识办法》使用与传播。 diff --git a/pet-v1/电路图.png b/pet-v1/电路图.png new file mode 100644 index 0000000..099cb5a Binary files /dev/null and b/pet-v1/电路图.png differ diff --git a/pet-v1/电路板图.png b/pet-v1/电路板图.png new file mode 100644 index 0000000..06b53f1 Binary files /dev/null and b/pet-v1/电路板图.png differ