PCBA智能檢測系統是一套整合了深度學習、機器視覺和自動化控制的工業檢測解決方案。系統採用YOLOv8/v12深度學習模型,結合六軸機械手臂,實現PCB板的自動化質量檢測與分揀。
- 🤖 AI智能檢測: 基於YOLOv8/v12的高精度缺陷檢測
- 📷 雙視窗監控: 原始影像與AI分析結果同步顯示
- 🦾 機械手臂整合: 支援六軸機械手臂自動分揀
- 📊 實時數據分析: 即時統計與品質監控
- 🔄 雙模式運行: 模擬模式與實體硬體模式
- 🎯 高準確率: 檢測準確率 >95%
- ⚡ 高效處理: 支援30 FPS實時處理
- PCB基板完整性檢測
- 元件缺失/錯位檢測
- 焊接質量分析
- 污染/損壞識別
- 實時缺陷標註與分類
- 輸送帶速度控制
- 六軸機械手臂精準定位
- 自動分揀良品/不良品
- 緊急停止功能
- 檢測記錄自動保存
- 生產統計報表生成
- 數據導出 (CSV/JSON/TXT)
- 歷史數據查詢與分析
- 實時性能監控
- 硬體狀態檢測
- 錯誤日誌記錄
- 系統健康診斷
PCBADetectionSystem/
├── 📄 README.md # 專案說明文件
├── 📄 requirements.txt # Python依賴套件
├── 📄 launcher_app.py # 系統啟動器
├── 📁 simulation/ # 模擬模式
│ ├── 📄 main_ui.py # 主界面
│ ├── 📄 hardware_controller.py # 硬體控制器
│ ├── 📄 detection_engine.py # 檢測引擎
│ ├── 📄 data_manager.py # 數據管理
│ ├── 📄 config_manager.py # 配置管理
│ ├── 📄 image_processor.py # 影像處理
│ ├── 📄 robotic_arm_controller.py # 機械手臂控制
│ └── 📄 arm_control_ui.py # 手臂控制界面
├── 📁 physical/ # 實體模式
│ └── [相同的模組結構]
├── 📁 config/ # 配置檔案
│ ├── 📄 default_config.json # 預設配置
│ └── 📄 hardware_config.yaml # 硬體配置
├── 📁 data/ # 數據檔案
│ ├── 📁 models/ # AI模型
│ │ ├── yolov8n.pt
│ │ ├── yolov8s.pt
│ │ └── pcba_custom.pt
│ └── 📁 reports/ # 檢測報告
├── 📁 logs/ # 日誌檔案
├── 📁 scripts/ # 工具腳本
│ ├── 📄 environment_check.py # 環境檢查
│ ├── 📄 system_check.py # 系統檢查
│ └── 📄 jetson_setup.py # Jetson配置
└── 📁 docs/ # 文檔資料
├── 📁 images/ # 圖片資源
└── 📁 tutorials/ # 教學文件
git clone https://github.com/77KiD/simulation-physical.git
cd simulation-physical
# Windows
python -m venv venv
venv\Scripts\activate
# Linux/Mac
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
python scripts/environment_check.py
# 方式一:使用啟動器(推薦)
python launcher_app.py
# 方式二:直接啟動模擬模式
cd simulation
python main_ui.py
# 方式三:直接啟動實體模式
cd physical
python main_ui.py
- 作業系統: Windows 10 / Ubuntu 18.04 / Jetson JetPack 6.0
- Python: 3.8 或更高版本
- 記憶體: 4GB RAM
- 硬碟: 2GB 可用空間
- 顯示器: 1280x720 解析度
- 作業系統: Windows 11 / Ubuntu 20.04+ / Jetson JetPack 6.2
- Python: 3.8 - 3.11
- 記憶體: 8GB+ RAM
- 硬碟: 5GB+ 可用空間
- 顯示器: 1920x1080+ 解析度
- GPU: CUDA 相容 GPU(用於AI加速)
# 1. 安裝Python (如果尚未安裝)
# 下載並安裝 Python 3.8+ from python.org
# 2. 克隆專案
git clone https://github.com/77KiD/simulation-physical.git
cd simulation-physical
# 3. 建立虛擬環境
python -m venv venv
venv\Scripts\activate
# 4. 安裝依賴
pip install -r requirements.txt
# 5. 執行環境檢查
python scripts/environment_check.py
# 1. 更新系統
sudo apt update && sudo apt upgrade -y
# 2. 安裝Python和pip
sudo apt install python3.8 python3-pip python3-venv -y
# 3. 安裝系統依賴
sudo apt install python3-pyqt5 python3-opencv -y
# 4. 克隆專案
git clone https://github.com/77KiD/simulation-physical.git
cd simulation-physical
# 5. 建立虛擬環境
python3 -m venv venv
source venv/bin/activate
# 6. 安裝Python依賴
pip install -r requirements.txt
# 1. 更新系統
sudo apt update && sudo apt upgrade -y
# 2. 安裝系統依賴
sudo apt install python3-pip python3-venv python3-dev -y
# 3. 克隆專案
git clone https://github.com/77KiD/simulation-physical.git
cd simulation-physical
# 4. 安裝Jetson專用依賴
pip install -r requirements-jetson.txt
# 5. 啟用GPIO權限
sudo usermod -a -G gpio $USER
sudo usermod -a -G i2c $USER
# 6. 執行Jetson設置腳本
python scripts/jetson_setup.py
系統主界面分為以下幾個區域:
-
📷 即時影像監控
- 左側:原始相機畫面
- 右側:AI分析結果顯示
-
🔧 影像處理控制
- 邊緣檢測閾值調整
- 對比度增強參數
- YOLO信心閾值設定
-
⚙️ 系統控制面板
- 檢測控制:開始/停止自動檢測
- 參數調整:檢測閾值、伺服角度、輸送帶速度
- 硬體控制:繼電器、緊急停止
-
📊 狀態監控
- 系統狀態實時顯示
- 生產統計(總數、合格率、缺陷分析)
- 快速操作按鈕
-
🧾 檢測記錄
- 即時檢測記錄表格
- 時間戳、結果、信心度、執行動作
啟動系統 → 硬體檢查 → 相機初始化 → AI模型載入
- 設定檢測閾值(預設:0.8)
- 調整影像處理參數
- 配置機械手臂位置
- 點擊「開始自動檢測」按鈕
- 系統自動執行:
- 輸送帶啟動
- 相機捕獲影像
- AI模型分析
- 結果判定
- 機械手臂分揀
- 數據記錄
- 實時觀察檢測效果
- 根據需要調整參數
- 查看統計數據
點擊「機械手臂控制」按鈕開啟專用控制界面:
- 手動控制: 調整各軸角度
- 預設位置: 快速移動到預設位置
- 自動序列: 執行預設動作序列
- 校正功能: 手臂位置校正
設備 | 型號 | 接口 | 備註 |
---|---|---|---|
📷 相機 | USB攝影機 | USB 2.0/3.0 | 支援OpenCV |
🦾 機械手臂 | 六軸機械手臂 | I2C (PCA9685) | MG996R伺服馬達 |
📡 感測器 | TCRT5000 | GPIO | 光電感測器 |
🔌 繼電器 | 5V單路繼電器 | GPIO | 控制外部設備 |
⚙️ 輸送帶 | L298N驅動 | GPIO + PWM | 雙馬達系統 |
功能 | GPIO引腳 | 備註 |
---|---|---|
馬達控制 IN1 | GPIO 18 | L298N輸入1 |
馬達控制 IN2 | GPIO 19 | L298N輸入2 |
馬達控制 IN3 | GPIO 20 | L298N輸入3 |
馬達控制 IN4 | GPIO 21 | L298N輸入4 |
PWM控制 ENA | GPIO 12 | L298N使能A |
PWM控制 ENB | GPIO 13 | L298N使能B |
光電感測器 | GPIO 24 | TCRT5000輸出 |
繼電器控制 | GPIO 25 | 5V繼電器 |
Jetson/RPi
├── USB → 相機
├── I2C → PCA9685 → 機械手臂(6軸)
├── GPIO 18-21 → L298N → 輸送帶馬達
├── GPIO 12-13 → L298N (PWM)
├── GPIO 24 → TCRT5000感測器
└── GPIO 25 → 繼電器模組
模型 | 用途 | 準確率 | 速度 | 檔案大小 |
---|---|---|---|---|
YOLOv8n | 快速檢測 | 85% | 45 FPS | 6.2MB |
YOLOv8s | 平衡型 | 89% | 35 FPS | 21.5MB |
YOLOv8m | 高精度 | 92% | 25 FPS | 49.7MB |
Custom PCBA | PCBA專用 | 96% | 28 FPS | 自定義 |
PCBA_CLASSES = {
# 元件類別
0: 'pcb_board', # PCB基板
1: 'smd_component', # SMD元件
2: 'through_hole', # 通孔元件
3: 'connector', # 連接器
4: 'capacitor', # 電容
5: 'resistor', # 電阻
6: 'ic_chip', # IC晶片
# 缺陷類別
10: 'solder_bridge', # 焊橋
11: 'cold_solder', # 冷焊
12: 'missing_comp', # 缺件
13: 'wrong_comp', # 錯件
14: 'damage', # 損壞
15: 'contamination' # 污染
}
如需訓練自定義模型:
# 1. 準備數據集
python scripts/prepare_dataset.py --input data/raw --output data/processed
# 2. 開始訓練
python scripts/train_model.py --config configs/pcba_train.yaml
# 3. 驗證模型
python scripts/validate_model.py --model models/best.pt --data data/test
# 4. 轉換模型
python scripts/export_model.py --weights models/best.pt --format onnx
{
"hardware": {
"use_robotic_arm": true,
"camera_index": 0,
"camera_resolution": [640, 480],
"gpio_pins": {
"motor_in1": 18,
"motor_in2": 19,
"sensor_pin": 24,
"relay_pin": 25
}
},
"detection": {
"threshold": 0.8,
"model_path": "models/yolov8n.pt",
"confidence": 0.5,
"iou_threshold": 0.4
},
"ui": {
"window_size": [1400, 900],
"theme": "default",
"language": "zh-TW"
}
}
from config_manager import ConfigManager
# 載入配置
config = ConfigManager()
# 讀取配置
threshold = config.get_detection_threshold()
# 更新配置
config.update_detection_config(threshold=0.85)
# 保存配置
config.save_config()
# 匯出配置
config.export_config('backup_config.json')
# 重置為預設值
config.reset_to_defaults()
# 檢查相機權限
ls -la /dev/video*
# 測試相機
python -c "import cv2; print(cv2.VideoCapture(0).isOpened())"
# 嘗試不同的相機索引
python scripts/test_camera.py --index 1
# 添加用戶到gpio群組
sudo usermod -a -G gpio $USER
sudo usermod -a -G i2c $USER
# 重新登入或重啟
sudo reboot
# Windows
pip install PyQt5 --user
# Linux
sudo apt install python3-pyqt5
pip install PyQt5
# 重新下載模型
python scripts/download_models.py
# 檢查模型路徑
python -c "import os; print(os.path.exists('models/yolov8n.pt'))"
# 檢查I2C設備
i2cdetect -y 1
# 測試PCA9685
python scripts/test_pca9685.py
# 啟用CUDA
import torch
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model.to(device)
# 使用TensorRT
model = YOLO('best.engine')
model.half() # FP16精度
# 降低處理解析度
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 320)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 240)
# 降低FPS
camera.set(cv2.CAP_PROP_FPS, 15)
測試項目 | 樣本數 | 準確率 | 精確率 | 召回率 | F1分數 |
---|---|---|---|---|---|
正常PCB | 1000 | 96.8% | 97.2% | 96.4% | 0.968 |
缺件檢測 | 500 | 94.2% | 93.8% | 94.6% | 0.942 |
焊接缺陷 | 300 | 91.5% | 90.2% | 92.8% | 0.915 |
元件錯位 | 200 | 89.7% | 88.9% | 90.5% | 0.897 |
平台 | 處理速度 | GPU使用率 | 記憶體使用 | 功耗 |
---|---|---|---|---|
Windows + RTX 4060 | 45 FPS | 65% | 2.1GB | 120W |
Ubuntu + GTX 1660 | 35 FPS | 78% | 1.8GB | 95W |
Jetson Orin Nano | 25 FPS | 85% | 1.2GB | 15W |
CPU模式 (i7-10700) | 8 FPS | - | 1.5GB | 65W |
歡迎貢獻代碼!請遵循以下步驟:
- Fork 本專案
- 創建功能分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 開啟 Pull Request
- 遵循 PEP 8 Python 代碼風格
- 添加適當的註釋和文檔
- 編寫單元測試
- 更新 README 文檔
本專案採用 MIT 授權條款 - 詳見 LICENSE 文件
- 開發者:77KiD
- 貢獻者:貢獻者列表
- GitHub: @77KiD
- Email: your-email@example.com
- Issues: GitHub Issues
感謝以下開源專案:
Made with ❤️ by 77KiD