Desktopowa aplikacja do projektowania elektroniki PCB z lokalnym AI (Ollama), interaktywnym edytorem płytki, wizualizacją 3D, generatorem kodu MCU, eksportem STL/STEP obudów oraz zestawem narzędzi analizy elektronicznej.
# Jednoklikowe uruchomienie (Windows)
start.bat
# Lub ręcznie:
pip install -r requirements.txt
python main.pyWymaga:
- Python 3.10+ (zalecany 3.11 lub 3.12)
- Ollama —
ollama serve+ollama pull llama3
Opcjonalnie: KiCad 7/8 · PrusaSlicer/Cura · Arduino IDE
- Tryby: Wybierz / Trasuj / Przelotka / Usuń / Strefa miedzi / Umieść komponent / Pomiar
- Skróty:
SWybierz ·RTrasuj ·VPrzelotka ·XUsuń ·ZStrefa ·TPomiar ·SpaceObróć ·MLustro ·FDopasuj ·Ctrl+DDuplikuj ·Ctrl+Z/YCofnij/Ponów - Biblioteka komponentów: R, C, LED, diody, złącza, MCU, tranzystory, kryształy, drivery
- Warstwy: widoczność per warstwa, tylko Cu, wszystkie
- Ratsnest (brakujące połączenia), copper pour (strefy miedzi)
- Dwuklik na komponent → dialog właściwości (ref, wartość, footprint, XY, rotacja, warstwa, ±90°, mirror)
- Klik ścieżki → pokazuje długość, impedancję Z₀ (IPC-2141A), maks. prąd (IPC-2221)
- Narzędzie pomiaru (T) — mierzy odległość między dwoma punktami na płytce
- Nakładka DRC — błędy wyświetlane jako czerwone X bezpośrednio na edytorze
- Historia cofnij/ponów z opisami komend
- Snap-to-grid (siatka konfigurowalna)
- Statystyki płytki: wymiary, gęstość komponentów, łączna długość ścieżek, aktywne warstwy
- Eksport do
.kicad_pcb
- Microstrip / stripline impedancja (IPC-2141A, 5 zakładek)
- Prąd ścieżki (IPC-2221 krzywe A/B, zewnętrzna/wewnętrzna)
- Filtr RC — częstotliwość odcięcia
- Dzielnik napięcia
- Rezystor LED z doborem wartości E24
- Detekcja szyn zasilania z nazw sieci (VCC, 3.3V, VDD, VBUS, …)
- Szacowanie poboru prądu per komponent (30+ typów z bazy)
- Budżet mocy: prąd, moc, napięcie, liczba komponentów per rail
- Sprawdzenie kondensatorów blokujących i bulk
- Zalecenia: regulator, kondensatory, minimalna szerokość ścieżki
- Eksport raportu TXT
- Temperatura złącza T_j = T_amb + θ_JA × P dla każdego komponentu
- Baza θ_JA dla 15+ popularnych pakietów i IC
- Współczynnik chłodzenia (konwekcja naturalna, wentylator, plane miedzi)
- Progi: OK / Podwyższony / Wysoki / KRYTYCZNY
- Eksport raportu TXT
- Opóźnienie propagacji i krytyczna długość ścieżki (λ/4 rule)
- Efektywne pasmo z czasu narastania (BW = 0.35/Tr)
- Przesłuch NEXT (reguła 3W, coupling coefficient)
- Indukcyjność przelotki (IPC-2141A)
- Skanowanie ścieżek projektu vs krytyczna długość przy danej częstotliwości
- Szablony: 2-warstwowa / 4-warstwowa / 6-warstwowa (FR4, JLC)
- Wizualny przekrój poprzeczny stosu z skalą grubości
- Dodawanie/usuwanie/przesuwanie warstw
- Kalkulator impedancji microstrip i stripline per warstwa
- Solver szerokości dla zadanej impedancji docelowej (np. 50 Ω)
- Kolor wskaźnika: zielony (±5 Ω od celu) / żółty (±15 Ω) / czerwony
- Eksport stackupu do TXT
- Lokalna baza 30+ popularnych komponentów (R, C, LED, IC, złącza, …)
- Filtrowanie po kategorii i frazie
- Linki do sklepów: LCSC (direct), DigiKey, Mouser, TME, Botland
- Dodaj do projektu jednym kliknięciem (auto-generacja referencji)
- Opisz słowami: „Sterownik silnika DC 12V, ESP32, zabezpieczenie przetężeniowe"
- AI (Ollama) generuje projekt z komponentami, sieciami i układem
- Opisz obudowę: „IP54, montaż na szynę DIN, otwory USB-C"
- AI generuje kod trimesh/CadQuery, wykonuje w sandboxie, pokazuje podgląd
- Render 2D — QPainter, wszystkie warstwy KiCad z kolorami, zoom/pan
- Render 3D — Three.js w WebEngine lub soft-renderer QPainter
- Parser
.kicad_sch(KiCad 6/7/8) - Podgląd symboli, sieci, oznaczeń z renderem QPainter
- Grupowanie (wartość + footprint), eksport CSV / Excel / HTML / PDF
- LCSC CSV — gotowy do zamówienia SMT na JLCPCB
- Klik w BOM → highlight komponentu na edytorze PCB
- AI: analiza, zamienniki, szacowanie kosztów, sprawdzenie braków
- Arduino (
.ino), MicroPython (.py), C++/ESP-IDF (.cpp) - Automatyczna detekcja: ESP32, BME280, SSD1306, NeoPixel, MPU-6050, …
- Szablony Jinja2 z importami, inicjalizacją i przykładową pętlą
- Generacja obudowy (dno + wieko) dopasowanej do PCB
- Automatyczne otwory na złącza (USB-C, DC Jack, JST, przyciski)
- Eksport
.stl+.step(CadQuery opcjonalnie) - Wbudowana przeglądarka 3D
- Gerber + Drill (Ctrl+G)
- JLCPCB/PCBWay ZIP (Ctrl+Shift+G) — Gerber + BOM CSV + CPL CSV
- Netlist CSV — per pad (Net, Component, Pin, X_mm, Y_mm)
- Netlist KiCad (.net) — bracket notation
- PDF — BOM, kosztorys, pełny raport projektu (Ctrl+P)
- DRC: szerokość ścieżek, prześwity, przelotki, zduplikowane refy, otwór, strefy
- STL: grubość ścianek, kąty nawisu, manifold geometry
- Wyjaśnienia AI: „Wyjaśnij błąd" / „Plan naprawy krok po kroku"
- Błędy widoczne bezpośrednio na edytorze PCB
- Sugestie rozmieszczenia + routingu generowane przez Ollama
- Zintegrowany DRC po trasowaniu
- Kosztorys z bazą LCSC, waluta USD/PLN/EUR, ilość szt.
- Eksport PDF / CSV
- Drzewo sieci elektrycznych z liczbą komponentów i padów
- Statystyki sieci, klik → highlight w edytorze PCB
- AI analiza sieci
- Lokalny LLM przez Ollama (Llama 3, Mistral, CodeLlama, Qwen2)
- Baza wiedzy PCB/STL aktualizowana z GitHub i stron spec
- Nauka z URL / PDF / wklejonego tekstu
- Push/pull GitHub (token PAT)
- Sync z Google Drive (OAuth2)
- Lokalny serwer projektów (Flask REST API)
- Automatyczny zapis co 5 minut (konfigurowalne) do
~/.electrovision_autosave/ - Status Ollama w pasku statusu (🟢 / 🔴)
| Skrót | Akcja |
|---|---|
Ctrl+O |
Importuj KiCad PCB |
Ctrl+S |
Zapisz projekt |
Ctrl+P |
Eksport PDF |
Ctrl+G |
Gerber + Drill |
Ctrl+Shift+G |
JLCPCB ZIP |
Ctrl+K |
Kalkulator elektroniczny |
Ctrl+Shift+W |
Analiza zasilania |
Ctrl+Shift+T |
Estymacja termiczna |
Ctrl+Shift+L |
Edytor stackupu |
Ctrl+F |
Wyszukaj komponent |
Ctrl+, |
Ustawienia |
Alt+1–9 |
Przełącz zakładki |
S |
Tryb Wybierz |
R |
Tryb Trasuj |
V |
Przelotka |
X |
Usuń |
Z |
Strefa miedzi |
T |
Narzędzie pomiaru |
Space |
Obróć komponent |
M |
Mirror (odbicie) |
F |
Dopasuj widok |
Ctrl+D |
Duplikuj komponent |
Ctrl+Z/Y |
Cofnij / Ponów |
ElectroVision/
├── main.py # Punkt wejścia
├── start.bat # Jednoklikowe uruchomienie (Windows)
├── requirements.txt
├── src/
│ ├── ui/
│ │ ├── main_window.py
│ │ ├── dialogs/
│ │ │ ├── ai_project_dialog.py
│ │ │ ├── ai_stl_dialog.py
│ │ │ ├── component_props_dialog.py
│ │ │ ├── component_search_dialog.py # Wyszukiwarka komponentów + sklepy
│ │ │ ├── electronics_calc_dialog.py # Kalkulator (microstrip, IPC-2221, RC, …)
│ │ │ ├── power_analysis_dialog.py # Analiza zasilania
│ │ │ ├── thermal_dialog.py # Estymacja termiczna T_j
│ │ │ ├── signal_analysis_dialog.py # SI: propagacja, crosstalk, via
│ │ │ ├── stackup_editor_dialog.py # Edytor stosu warstw + Z0
│ │ │ ├── settings_dialog.py
│ │ │ └── template_dialog.py
│ │ ├── panels/
│ │ │ ├── pcb_editor_panel.py # Edytor + właściwości + historia
│ │ │ ├── bom_panel.py
│ │ │ ├── validation_panel.py
│ │ │ ├── net_inspector_panel.py
│ │ │ ├── cost_panel.py
│ │ │ ├── routing_panel.py
│ │ │ └── ...
│ │ └── widgets/
│ │ ├── pcb_editor.py # Canvas QPainter — tryby, undo, DRC overlay
│ │ └── ...
│ ├── generators/
│ │ ├── jlcpcb_generator.py # JLCPCB ZIP (Gerber + BOM + CPL)
│ │ ├── netlist_generator.py # CSV + KiCad .net
│ │ ├── gerber_generator.py
│ │ ├── pdf_generator.py
│ │ └── ...
│ ├── validators/
│ │ ├── pcb_drc.py
│ │ └── stl_validator.py
│ └── ai/
│ ├── bridge.py
│ └── ...
└── tests/
ollama serve
ollama pull llama3 # domyślny
ollama pull codellama # lepszy do kodu
ollama pull qwen2 # alternatywaW aplikacji: Ctrl+, → AI/Ollama → model/host.
| Biblioteka | Cel |
|---|---|
PySide6>=6.8 |
GUI Qt6 |
sexpdata |
Parser KiCad |
trimesh + numpy |
STL generator |
Jinja2 |
Szablony kodu MCU |
pandas + openpyxl |
BOM Excel |
ollama |
Lokalny AI client |
flask |
Serwer projektów |
reportlab |
Eksport PDF |
CadQuery — opcjonalnie (STEP export).
PySide6-WebEngine — opcjonalnie (3D Three.js renderer).
pytest tests/ -v