zk-glasses/schematic/zk-glasses-schematic.svg

613 lines
31 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1400 900" width="1400" height="900">
<defs>
<style>
text { font-family: 'Courier New', monospace; }
.title { font-size: 18px; fill: #c5c8c6; font-weight: bold; }
.subtitle { font-size: 12px; fill: #969896; }
.ref { font-size: 11px; fill: #b294bb; font-weight: bold; }
.val { font-size: 10px; fill: #81a2be; }
.net { font-size: 10px; fill: #b5bd68; font-weight: bold; }
.pin { font-size: 9px; fill: #969896; }
.wire { stroke: #c5c8c6; stroke-width: 1.5; fill: none; stroke-linecap: round; stroke-linejoin: round; }
.wire-pwr { stroke: #cc6666; stroke-width: 2; fill: none; stroke-linecap: round; }
.wire-gnd { stroke: #969896; stroke-width: 1.5; fill: none; stroke-linecap: round; }
.comp { stroke: #c5c8c6; stroke-width: 1.5; fill: none; }
.comp-fill { stroke: #c5c8c6; stroke-width: 1.5; fill: #282a2e; }
.ic-fill { stroke: #b294bb; stroke-width: 2; fill: #1d1f21; }
.led-fill { stroke: #cc6666; stroke-width: 1.5; fill: rgba(204,102,102,0.15); }
.led-ir { stroke: #b294bb; stroke-width: 1.5; fill: rgba(178,148,187,0.15); }
.mosfet-fill { stroke: #81a2be; stroke-width: 1.5; fill: #1d1f21; }
.cap-fill { stroke: #81a2be; stroke-width: 1.5; fill: none; }
.batt-fill { stroke: #de935f; stroke-width: 2; fill: none; }
.dot { fill: #c5c8c6; }
.gnd-sym { stroke: #969896; stroke-width: 1.5; fill: none; }
.vcc-sym { stroke: #cc6666; stroke-width: 1.5; fill: none; }
.frame { stroke: #373b41; stroke-width: 1; fill: none; }
.section { stroke: #373b41; stroke-width: 0.5; fill: none; stroke-dasharray: 4,4; }
.section-label { font-size: 11px; fill: #5e6266; font-style: italic; }
.beam { fill: url(#irGlow); }
</style>
<linearGradient id="irGlow" x1="0%" y1="0%" x2="0%" y2="100%">
<stop offset="0%" style="stop-color:#b294bb;stop-opacity:0.3" />
<stop offset="100%" style="stop-color:#b294bb;stop-opacity:0" />
</linearGradient>
<marker id="arrowhead" markerWidth="6" markerHeight="4" refX="6" refY="2" orient="auto">
<polygon points="0 0, 6 2, 0 4" fill="#b5bd68"/>
</marker>
</defs>
<!-- Background -->
<rect width="1400" height="900" fill="#1d1f21"/>
<!-- Border frame -->
<rect x="10" y="10" width="1380" height="880" class="frame"/>
<rect x="15" y="15" width="1370" height="870" class="frame"/>
<!-- Title block -->
<rect x="15" y="830" width="1370" height="55" class="frame"/>
<text x="30" y="855" class="title">ZK-GLASSES / IR Anti-Surveillance Eyewear / Driver Circuit</text>
<text x="30" y="875" class="subtitle">ATtiny85 PWM Controller | 16x 940nm IR LEDs | LiPo 3.7V 500mAh | Rev 1.0 | 2026-02-21</text>
<text x="1200" y="855" class="subtitle">Sheet 1/1</text>
<text x="1200" y="875" class="subtitle">zk-glasses.svg</text>
<!-- ═══════════════════════════════════════════════════════ -->
<!-- SECTION: Power Supply (left side) -->
<!-- ═══════════════════════════════════════════════════════ -->
<rect x="25" y="30" width="350" height="380" class="section" rx="8"/>
<text x="35" y="48" class="section-label">POWER SUPPLY</text>
<!-- Battery BT1 -->
<line x1="80" y1="120" x2="80" y2="145" class="batt-fill"/>
<line x1="65" y1="145" x2="95" y2="145" class="batt-fill" stroke-width="3"/>
<line x1="72" y1="155" x2="88" y2="155" class="batt-fill" stroke-width="1.5"/>
<line x1="80" y1="155" x2="80" y2="180" class="batt-fill"/>
<text x="55" y="118" class="ref">BT1</text>
<text x="95" y="150" class="val">LiPo</text>
<text x="95" y="162" class="val">3.7V</text>
<text x="95" y="174" class="val">500mAh</text>
<text x="68" y="138" class="pin">+</text>
<text x="72" y="170" class="pin">-</text>
<!-- GND symbol under battery -->
<line x1="80" y1="180" x2="80" y2="195" class="wire-gnd"/>
<line x1="68" y1="195" x2="92" y2="195" class="gnd-sym"/>
<line x1="72" y1="200" x2="88" y2="200" class="gnd-sym"/>
<line x1="76" y1="205" x2="84" y2="205" class="gnd-sym"/>
<!-- Wire from BT1+ up to switch -->
<line x1="80" y1="120" x2="80" y2="80" class="wire-pwr"/>
<!-- Slide Switch SW2 -->
<line x1="80" y1="80" x2="80" y2="70" class="wire-pwr"/>
<circle cx="80" cy="70" r="3" class="comp" fill="#1d1f21"/>
<line x1="80" y1="67" x2="120" y2="55" class="wire-pwr" stroke-width="2"/>
<circle cx="120" cy="55" r="3" class="comp" fill="#1d1f21"/>
<line x1="120" y1="55" x2="120" y2="50" class="wire-pwr"/>
<text x="55" y="65" class="ref">SW2</text>
<text x="55" y="78" class="val">SPDT</text>
<text x="85" y="90" class="pin">Power</text>
<!-- VCC rail from switch -->
<line x1="120" y1="50" x2="120" y2="40" class="wire-pwr"/>
<!-- VCC symbol -->
<line x1="115" y1="40" x2="125" y2="40" class="vcc-sym"/>
<line x1="120" y1="40" x2="120" y2="33" class="vcc-sym"/>
<text x="128" y="38" class="net">VCC 3.7V</text>
<!-- TP4056 Charge Board -->
<rect x="170" y="80" width="130" height="70" class="ic-fill" rx="4"/>
<text x="200" y="105" class="ref">TP4056</text>
<text x="193" y="120" class="val">USB-C Charger</text>
<text x="197" y="135" class="val">w/ Protection</text>
<!-- TP4056 pins -->
<text x="148" y="95" class="pin">USB+</text>
<line x1="170" y1="92" x2="155" y2="92" class="wire"/>
<text x="148" y="140" class="pin">USB-</text>
<line x1="170" y1="137" x2="155" y2="137" class="wire"/>
<!-- USB-C icon -->
<rect x="130" y="85" width="22" height="14" rx="4" class="comp-fill"/>
<text x="133" y="96" style="font-size:8px;fill:#969896">USB</text>
<line x1="152" y1="92" x2="155" y2="92" class="wire"/>
<!-- TP4056 BAT+ output -->
<line x1="300" y1="92" x2="340" y2="92" class="wire-pwr"/>
<text x="302" y="88" class="pin">BAT+</text>
<line x1="340" y1="92" x2="340" y2="50" class="wire-pwr"/>
<line x1="340" y1="50" x2="120" y2="50" class="wire-pwr"/>
<circle cx="120" cy="50" r="2.5" class="dot"/>
<!-- TP4056 BAT- output -->
<line x1="300" y1="137" x2="340" y2="137" class="wire-gnd"/>
<text x="302" y="133" class="pin">BAT-</text>
<line x1="340" y1="137" x2="340" y2="195" class="wire-gnd"/>
<line x1="328" y1="195" x2="352" y2="195" class="gnd-sym"/>
<line x1="332" y1="200" x2="348" y2="200" class="gnd-sym"/>
<line x1="336" y1="205" x2="344" y2="205" class="gnd-sym"/>
<!-- Charging LED indicators (small) -->
<circle cx="185" y="160" r="3" fill="rgba(204,102,102,0.4)" stroke="#cc6666" stroke-width="1"/>
<text x="192" y="163" style="font-size:8px;fill:#cc6666">CHG</text>
<circle cx="245" y="160" r="3" fill="rgba(181,189,104,0.4)" stroke="#b5bd68" stroke-width="1"/>
<text x="252" y="163" style="font-size:8px;fill:#b5bd68">DONE</text>
<!-- Decoupling cap C1 -->
<line x1="250" y1="50" x2="250" y2="230" class="wire"/>
<circle cx="250" cy="50" r="2.5" class="dot"/>
<line x1="240" y1="228" x2="260" y2="228" class="cap-fill" stroke-width="2"/>
<line x1="240" y1="235" x2="260" y2="235" class="cap-fill" stroke-width="2"/>
<line x1="250" y1="235" x2="250" y2="255" class="wire-gnd"/>
<line x1="238" y1="255" x2="262" y2="255" class="gnd-sym"/>
<line x1="242" y1="260" x2="258" y2="260" class="gnd-sym"/>
<line x1="246" y1="265" x2="254" y2="265" class="gnd-sym"/>
<text x="263" y="225" class="ref">C1</text>
<text x="263" y="238" class="val">100nF</text>
<!-- Voltage Divider for battery sense -->
<text x="35" y="245" class="section-label">BATT SENSE</text>
<!-- R20 top -->
<line x1="80" y1="250" x2="80" y2="265" class="wire"/>
<!-- Resistor body R20 -->
<rect x="72" y="265" width="16" height="40" class="comp-fill" rx="2"/>
<text x="92" y="282" class="ref">R20</text>
<text x="92" y="294" class="val">100k</text>
<!-- Junction between R20 and R21 -->
<line x1="80" y1="305" x2="80" y2="315" class="wire"/>
<circle cx="80" cy="315" r="2.5" class="dot"/>
<!-- Line out to VBAT label -->
<line x1="80" y1="315" x2="130" y2="315" class="wire"/>
<text x="133" y="319" class="net">VBAT_SENSE</text>
<!-- R21 bottom -->
<line x1="80" y1="315" x2="80" y2="325" class="wire"/>
<rect x="72" y="325" width="16" height="40" class="comp-fill" rx="2"/>
<text x="92" y="342" class="ref">R21</text>
<text x="92" y="354" class="val">100k</text>
<line x1="80" y1="365" x2="80" y2="385" class="wire-gnd"/>
<line x1="68" y1="385" x2="92" y2="385" class="gnd-sym"/>
<line x1="72" y1="390" x2="88" y2="390" class="gnd-sym"/>
<line x1="76" y1="395" x2="84" y2="395" class="gnd-sym"/>
<!-- Connect R20 top to VCC -->
<line x1="80" y1="250" x2="80" y2="240" class="wire-pwr"/>
<line x1="80" y1="240" x2="120" y2="240" class="wire-pwr"/>
<line x1="120" y1="240" x2="120" y2="50" class="wire-pwr"/>
<circle cx="120" cy="240" r="2.5" class="dot"/>
<!-- ═══════════════════════════════════════════════════════ -->
<!-- SECTION: Microcontroller (center) -->
<!-- ═══════════════════════════════════════════════════════ -->
<rect x="400" y="30" width="320" height="470" class="section" rx="8"/>
<text x="410" y="48" class="section-label">MICROCONTROLLER</text>
<!-- ATtiny85 IC body -->
<rect x="470" y="120" width="160" height="200" class="ic-fill" rx="6"/>
<!-- IC notch -->
<path d="M 545 120 A 10 10 0 0 1 555 120" class="ic-fill" fill="none"/>
<text x="510" y="175" class="title" style="font-size:16px;fill:#b294bb">ATtiny85</text>
<text x="518" y="195" class="val" style="font-size:11px">DIP-8</text>
<text x="520" y="210" class="val" style="font-size:9px">8MHz int.</text>
<!-- Pin labels (left side: 1-4) -->
<!-- Pin 1: PB5/RESET -->
<line x1="470" y1="155" x2="430" y2="155" class="wire"/>
<text x="475" y="159" class="pin" style="text-anchor:start">PB5</text>
<text x="393" y="159" class="pin">(RST) 1</text>
<!-- Pin 2: PB3 (status LED) -->
<line x1="470" y1="195" x2="430" y2="195" class="wire"/>
<text x="475" y="199" class="pin" style="text-anchor:start">PB3</text>
<text x="410" y="199" class="pin">2</text>
<!-- Pin 3: PB4 (ADC - battery sense) -->
<line x1="470" y1="235" x2="430" y2="235" class="wire"/>
<text x="475" y="239" class="pin" style="text-anchor:start">PB4</text>
<text x="410" y="239" class="pin">3</text>
<!-- Pin 4: GND -->
<line x1="470" y1="275" x2="430" y2="275" class="wire-gnd"/>
<text x="475" y="279" class="pin" style="text-anchor:start">GND</text>
<text x="410" y="279" class="pin">4</text>
<!-- Pin labels (right side: 5-8) -->
<!-- Pin 5: PB0 (LED_L) -->
<line x1="630" y1="275" x2="680" y2="275" class="wire"/>
<text x="620" y="279" class="pin" style="text-anchor:end">PB0</text>
<text x="685" y="279" class="pin">5</text>
<!-- Pin 6: PB1 (LED_R) -->
<line x1="630" y1="235" x2="680" y2="235" class="wire"/>
<text x="620" y="239" class="pin" style="text-anchor:end">PB1</text>
<text x="685" y="239" class="pin">6</text>
<!-- Pin 7: PB2 (Button) -->
<line x1="630" y1="195" x2="680" y2="195" class="wire"/>
<text x="620" y="199" class="pin" style="text-anchor:end">PB2</text>
<text x="685" y="199" class="pin">7</text>
<!-- Pin 8: VCC -->
<line x1="630" y1="155" x2="680" y2="155" class="wire-pwr"/>
<text x="620" y="159" class="pin" style="text-anchor:end">VCC</text>
<text x="685" y="159" class="pin">8</text>
<!-- VCC connection to pin 8 -->
<line x1="680" y1="155" x2="700" y2="155" class="wire-pwr"/>
<line x1="700" y1="155" x2="700" y2="80" class="wire-pwr"/>
<line x1="700" y1="80" x2="340" y2="80" class="wire-pwr"/>
<line x1="340" y1="80" x2="340" y2="50" class="wire-pwr"/>
<circle cx="340" cy="80" r="2.5" class="dot"/>
<text x="705" y="85" class="net">VCC</text>
<!-- GND connection from pin 4 -->
<line x1="430" y1="275" x2="430" y2="310" class="wire-gnd"/>
<line x1="418" y1="310" x2="442" y2="310" class="gnd-sym"/>
<line x1="422" y1="315" x2="438" y2="315" class="gnd-sym"/>
<line x1="426" y1="320" x2="434" y2="320" class="gnd-sym"/>
<!-- RST pullup to VCC -->
<line x1="430" y1="155" x2="430" y2="100" class="wire"/>
<rect x="422" y="100" width="16" height="30" class="comp-fill" rx="2"/>
<line x1="430" y1="100" x2="430" y2="80" class="wire-pwr"/>
<line x1="430" y1="80" x2="340" y2="80" class="wire-pwr"/>
<circle cx="430" cy="80" r="2.5" class="dot"/>
<text x="445" y="112" class="ref">R22</text>
<text x="445" y="124" class="val">10k</text>
<!-- PB3 → Status LED path -->
<line x1="430" y1="195" x2="430" y2="380" class="wire"/>
<!-- R19 resistor -->
<rect x="422" y="380" width="16" height="35" class="comp-fill" rx="2"/>
<text x="445" y="395" class="ref">R19</text>
<text x="445" y="407" class="val">330R</text>
<line x1="430" y1="415" x2="430" y2="430" class="wire"/>
<!-- Status LED -->
<polygon points="420,430 440,430 430,450" class="led-fill" fill="rgba(181,189,104,0.3)"/>
<line x1="420" y1="450" x2="440" y2="450" class="led-fill"/>
<!-- LED arrows -->
<line x1="442" y1="435" x2="450" y2="428" class="wire" stroke="#b5bd68" stroke-width="1"/>
<polygon points="450,428 446,432 449,432" fill="#b5bd68"/>
<line x1="445" y1="440" x2="453" y2="433" class="wire" stroke="#b5bd68" stroke-width="1"/>
<polygon points="453,433 449,437 452,437" fill="#b5bd68"/>
<text x="455" y="443" class="ref">LED1</text>
<text x="455" y="455" class="val">Green</text>
<line x1="430" y1="450" x2="430" y2="470" class="wire-gnd"/>
<line x1="418" y1="470" x2="442" y2="470" class="gnd-sym"/>
<line x1="422" y1="475" x2="438" y2="475" class="gnd-sym"/>
<line x1="426" y1="480" x2="434" y2="480" class="gnd-sym"/>
<!-- PB4 → VBAT_SENSE -->
<line x1="430" y1="235" x2="380" y2="235" class="wire"/>
<line x1="380" y1="235" x2="380" y2="315" class="wire"/>
<line x1="380" y1="315" x2="130" y2="315" class="wire"/>
<circle cx="130" cy="315" r="0" class="dot"/>
<text x="383" y="290" class="net" style="font-size:9px" transform="rotate(-90,383,290)">VBAT_SENSE</text>
<!-- PB2 → Button -->
<line x1="680" y1="195" x2="700" y2="195" class="wire"/>
<line x1="700" y1="195" x2="700" y2="360" class="wire"/>
<!-- Button symbol -->
<circle cx="700" cy="360" r="3" class="comp" fill="#1d1f21"/>
<line x1="700" y1="363" x2="700" y2="375" class="wire"/>
<line x1="690" y1="375" x2="710" y2="375" class="comp"/>
<line x1="688" y1="385" x2="712" y2="385" class="comp"/>
<line x1="700" y1="385" x2="700" y2="400" class="wire"/>
<!-- Push button bridge -->
<line x1="693" y1="370" x2="715" y2="362" class="comp" stroke-width="2"/>
<circle cx="700" cy="400" r="0" class="dot"/>
<line x1="700" y1="400" x2="700" y2="415" class="wire-gnd"/>
<line x1="688" y1="415" x2="712" y2="415" class="gnd-sym"/>
<line x1="692" y1="420" x2="708" y2="420" class="gnd-sym"/>
<line x1="696" y1="425" x2="704" y2="425" class="gnd-sym"/>
<text x="715" y="370" class="ref">SW1</text>
<text x="715" y="383" class="val">Tact</text>
<text x="715" y="396" class="val">6x6mm</text>
<!-- ═══════════════════════════════════════════════════════ -->
<!-- SECTION: LED Drivers (right side) -->
<!-- ═══════════════════════════════════════════════════════ -->
<rect x="740" y="30" width="640" height="790" class="section" rx="8"/>
<text x="750" y="48" class="section-label">IR LED DRIVER — 16x 940nm</text>
<!-- ──── LEFT LED GROUP (PB0 → Q1 → 8 LEDs) ──── -->
<!-- Wire from PB0 to gate resistor R17 -->
<line x1="680" y1="275" x2="780" y2="275" class="wire"/>
<text x="750" y="270" class="net">LED_L</text>
<!-- R17 gate resistor -->
<rect x="780" y="267" width="35" height="16" class="comp-fill" rx="2"/>
<text x="787" y="262" class="ref">R17</text>
<text x="788" y="292" class="val">1k</text>
<!-- Wire to MOSFET Q1 gate -->
<line x1="815" y1="275" x2="845" y2="275" class="wire"/>
<!-- MOSFET Q1 symbol -->
<rect x="845" y="230" width="70" height="90" class="mosfet-fill" rx="4"/>
<text x="860" y="255" class="ref">Q1</text>
<text x="852" y="270" class="val">IRLML6344</text>
<text x="855" y="285" class="val">N-MOSFET</text>
<text x="855" y="300" class="val">SOT-23</text>
<!-- Gate pin -->
<text x="830" y="279" class="pin">G</text>
<!-- Drain pin (top) -->
<line x1="880" y1="230" x2="880" y2="200" class="wire"/>
<text x="885" y="225" class="pin">D</text>
<!-- Source pin (bottom) -->
<line x1="880" y1="320" x2="880" y2="350" class="wire-gnd"/>
<text x="885" y="340" class="pin">S</text>
<line x1="868" y1="350" x2="892" y2="350" class="gnd-sym"/>
<line x1="872" y1="355" x2="888" y2="355" class="gnd-sym"/>
<line x1="876" y1="360" x2="884" y2="360" class="gnd-sym"/>
<!-- VCC rail for LEDs -->
<line x1="880" y1="80" x2="1350" y2="80" class="wire-pwr" stroke-width="2.5"/>
<line x1="700" y1="80" x2="880" y2="80" class="wire-pwr"/>
<circle cx="880" cy="80" r="2.5" class="dot"/>
<text x="1100" y="72" class="net" style="font-size:12px">VCC RAIL (3.7V)</text>
<!-- LEFT LED array (8 LEDs with individual resistors) -->
<!-- LED row at y=100-200, spread across x=790-1060 -->
<g>
<!-- 8 parallel LED+R branches from VCC to Q1 drain -->
<!-- Branch pattern: VCC → R → LED → Q1_Drain -->
<!-- LED L1 -->
<line x1="800" y1="80" x2="800" y2="100" class="wire"/>
<rect x="794" y="100" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="800" y1="125" x2="800" y2="135" class="wire"/>
<polygon points="793,135 807,135 800,152" class="led-ir"/>
<line x1="793" y1="152" x2="807" y2="152" stroke="#b294bb" stroke-width="1.5"/>
<line x1="800" y1="152" x2="800" y2="165" class="wire"/>
<text x="790" y="97" class="pin" style="font-size:7px">R1</text>
<!-- LED L2 -->
<line x1="835" y1="80" x2="835" y2="100" class="wire"/>
<rect x="829" y="100" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="835" y1="125" x2="835" y2="135" class="wire"/>
<polygon points="828,135 842,135 835,152" class="led-ir"/>
<line x1="828" y1="152" x2="842" y2="152" stroke="#b294bb" stroke-width="1.5"/>
<line x1="835" y1="152" x2="835" y2="165" class="wire"/>
<text x="825" y="97" class="pin" style="font-size:7px">R2</text>
<!-- LED L3 -->
<line x1="870" y1="80" x2="870" y2="100" class="wire"/>
<rect x="864" y="100" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="870" y1="125" x2="870" y2="135" class="wire"/>
<polygon points="863,135 877,135 870,152" class="led-ir"/>
<line x1="863" y1="152" x2="877" y2="152" stroke="#b294bb" stroke-width="1.5"/>
<line x1="870" y1="152" x2="870" y2="165" class="wire"/>
<text x="860" y="97" class="pin" style="font-size:7px">R3</text>
<!-- LED L4 -->
<line x1="905" y1="80" x2="905" y2="100" class="wire"/>
<rect x="899" y="100" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="905" y1="125" x2="905" y2="135" class="wire"/>
<polygon points="898,135 912,135 905,152" class="led-ir"/>
<line x1="898" y1="152" x2="912" y2="152" stroke="#b294bb" stroke-width="1.5"/>
<line x1="905" y1="152" x2="905" y2="165" class="wire"/>
<text x="895" y="97" class="pin" style="font-size:7px">R4</text>
<!-- LED L5 -->
<line x1="940" y1="80" x2="940" y2="100" class="wire"/>
<rect x="934" y="100" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="940" y1="125" x2="940" y2="135" class="wire"/>
<polygon points="933,135 947,135 940,152" class="led-ir"/>
<line x1="933" y1="152" x2="947" y2="152" stroke="#b294bb" stroke-width="1.5"/>
<line x1="940" y1="152" x2="940" y2="165" class="wire"/>
<text x="930" y="97" class="pin" style="font-size:7px">R5</text>
<!-- LED L6 -->
<line x1="975" y1="80" x2="975" y2="100" class="wire"/>
<rect x="969" y="100" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="975" y1="125" x2="975" y2="135" class="wire"/>
<polygon points="968,135 982,135 975,152" class="led-ir"/>
<line x1="968" y1="152" x2="982" y2="152" stroke="#b294bb" stroke-width="1.5"/>
<line x1="975" y1="152" x2="975" y2="165" class="wire"/>
<text x="965" y="97" class="pin" style="font-size:7px">R6</text>
<!-- LED L7 -->
<line x1="1010" y1="80" x2="1010" y2="100" class="wire"/>
<rect x="1004" y="100" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="1010" y1="125" x2="1010" y2="135" class="wire"/>
<polygon points="1003,135 1017,135 1010,152" class="led-ir"/>
<line x1="1003" y1="152" x2="1017" y2="152" stroke="#b294bb" stroke-width="1.5"/>
<line x1="1010" y1="152" x2="1010" y2="165" class="wire"/>
<text x="1000" y="97" class="pin" style="font-size:7px">R7</text>
<!-- LED L8 -->
<line x1="1045" y1="80" x2="1045" y2="100" class="wire"/>
<rect x="1039" y="100" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="1045" y1="125" x2="1045" y2="135" class="wire"/>
<polygon points="1038,135 1052,135 1045,152" class="led-ir"/>
<line x1="1038" y1="152" x2="1052" y2="152" stroke="#b294bb" stroke-width="1.5"/>
<line x1="1045" y1="152" x2="1045" y2="165" class="wire"/>
<text x="1035" y="97" class="pin" style="font-size:7px">R8</text>
<!-- Common drain bus connecting all LED cathodes to Q1 drain -->
<line x1="800" y1="165" x2="1045" y2="165" class="wire"/>
<line x1="880" y1="165" x2="880" y2="200" class="wire"/>
<circle cx="880" cy="165" r="2.5" class="dot"/>
<!-- IR emission glow effects (decorative) -->
<ellipse cx="920" cy="100" rx="160" ry="25" class="beam"/>
<!-- Label -->
<text x="800" y="185" class="ref" style="font-size:10px">D1D8: TSAL6200 (940nm, 8× parallel)</text>
<text x="800" y="197" class="val">R1R8: 47R (each: If = (3.7-1.3)/47 = 51mA)</text>
</g>
<!-- ──── RIGHT LED GROUP (PB1 → Q2 → 8 LEDs) ──── -->
<!-- Wire from PB1 to gate resistor R18 -->
<line x1="680" y1="235" x2="720" y2="235" class="wire"/>
<line x1="720" y1="235" x2="720" y2="510" class="wire"/>
<line x1="720" y1="510" x2="780" y2="510" class="wire"/>
<text x="750" y="505" class="net">LED_R</text>
<!-- R18 gate resistor -->
<rect x="780" y="502" width="35" height="16" class="comp-fill" rx="2"/>
<text x="787" y="497" class="ref">R18</text>
<text x="788" y="527" class="val">1k</text>
<!-- Wire to MOSFET Q2 gate -->
<line x1="815" y1="510" x2="845" y2="510" class="wire"/>
<!-- MOSFET Q2 symbol -->
<rect x="845" y="465" width="70" height="90" class="mosfet-fill" rx="4"/>
<text x="860" y="490" class="ref">Q2</text>
<text x="852" y="505" class="val">IRLML6344</text>
<text x="855" y="520" class="val">N-MOSFET</text>
<text x="855" y="535" class="val">SOT-23</text>
<text x="830" y="514" class="pin">G</text>
<line x1="880" y1="465" x2="880" y2="435" class="wire"/>
<text x="885" y="460" class="pin">D</text>
<line x1="880" y1="555" x2="880" y2="585" class="wire-gnd"/>
<text x="885" y="575" class="pin">S</text>
<line x1="868" y1="585" x2="892" y2="585" class="gnd-sym"/>
<line x1="872" y1="590" x2="888" y2="590" class="gnd-sym"/>
<line x1="876" y1="595" x2="884" y2="595" class="gnd-sym"/>
<!-- RIGHT LED array -->
<g>
<!-- VCC taps for right group -->
<line x1="800" y1="80" x2="800" y2="80" class="wire"/>
<!-- LED R1 -->
<line x1="800" y1="335" x2="800" y2="355" class="wire"/>
<rect x="794" y="335" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="800" y1="310" x2="800" y2="335" class="wire-pwr"/>
<line x1="800" y1="355" x2="800" y2="370" class="wire"/>
<polygon points="793,370 807,370 800,387" class="led-ir"/>
<line x1="793" y1="387" x2="807" y2="387" stroke="#b294bb" stroke-width="1.5"/>
<line x1="800" y1="387" x2="800" y2="400" class="wire"/>
<text x="790" y="328" class="pin" style="font-size:7px">R9</text>
<!-- LED R2 -->
<line x1="835" y1="335" x2="835" y2="355" class="wire"/>
<rect x="829" y="335" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="835" y1="310" x2="835" y2="335" class="wire-pwr"/>
<line x1="835" y1="355" x2="835" y2="370" class="wire"/>
<polygon points="828,370 842,370 835,387" class="led-ir"/>
<line x1="828" y1="387" x2="842" y2="387" stroke="#b294bb" stroke-width="1.5"/>
<line x1="835" y1="387" x2="835" y2="400" class="wire"/>
<!-- LED R3 -->
<line x1="870" y1="335" x2="870" y2="355" class="wire"/>
<rect x="864" y="335" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="870" y1="310" x2="870" y2="335" class="wire-pwr"/>
<line x1="870" y1="355" x2="870" y2="370" class="wire"/>
<polygon points="863,370 877,370 870,387" class="led-ir"/>
<line x1="863" y1="387" x2="877" y2="387" stroke="#b294bb" stroke-width="1.5"/>
<line x1="870" y1="387" x2="870" y2="400" class="wire"/>
<!-- LED R4 -->
<line x1="905" y1="335" x2="905" y2="355" class="wire"/>
<rect x="899" y="335" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="905" y1="310" x2="905" y2="335" class="wire-pwr"/>
<line x1="905" y1="355" x2="905" y2="370" class="wire"/>
<polygon points="898,370 912,370 905,387" class="led-ir"/>
<line x1="898" y1="387" x2="912" y2="387" stroke="#b294bb" stroke-width="1.5"/>
<line x1="905" y1="387" x2="905" y2="400" class="wire"/>
<!-- LED R5 -->
<line x1="940" y1="335" x2="940" y2="355" class="wire"/>
<rect x="934" y="335" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="940" y1="310" x2="940" y2="335" class="wire-pwr"/>
<line x1="940" y1="355" x2="940" y2="370" class="wire"/>
<polygon points="933,370 947,370 940,387" class="led-ir"/>
<line x1="933" y1="387" x2="947" y2="387" stroke="#b294bb" stroke-width="1.5"/>
<line x1="940" y1="387" x2="940" y2="400" class="wire"/>
<!-- LED R6 -->
<line x1="975" y1="335" x2="975" y2="355" class="wire"/>
<rect x="969" y="335" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="975" y1="310" x2="975" y2="335" class="wire-pwr"/>
<line x1="975" y1="355" x2="975" y2="370" class="wire"/>
<polygon points="968,370 982,370 975,387" class="led-ir"/>
<line x1="968" y1="387" x2="982" y2="387" stroke="#b294bb" stroke-width="1.5"/>
<line x1="975" y1="387" x2="975" y2="400" class="wire"/>
<!-- LED R7 -->
<line x1="1010" y1="335" x2="1010" y2="355" class="wire"/>
<rect x="1004" y="335" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="1010" y1="310" x2="1010" y2="335" class="wire-pwr"/>
<line x1="1010" y1="355" x2="1010" y2="370" class="wire"/>
<polygon points="1003,370 1017,370 1010,387" class="led-ir"/>
<line x1="1003" y1="387" x2="1017" y2="387" stroke="#b294bb" stroke-width="1.5"/>
<line x1="1010" y1="387" x2="1010" y2="400" class="wire"/>
<!-- LED R8 -->
<line x1="1045" y1="335" x2="1045" y2="355" class="wire"/>
<rect x="1039" y="335" width="12" height="25" class="comp-fill" rx="1.5"/>
<line x1="1045" y1="310" x2="1045" y2="335" class="wire-pwr"/>
<line x1="1045" y1="355" x2="1045" y2="370" class="wire"/>
<polygon points="1038,370 1052,370 1045,387" class="led-ir"/>
<line x1="1038" y1="387" x2="1052" y2="387" stroke="#b294bb" stroke-width="1.5"/>
<line x1="1045" y1="387" x2="1045" y2="400" class="wire"/>
<!-- VCC bus for right group -->
<line x1="800" y1="310" x2="1045" y2="310" class="wire-pwr"/>
<line x1="920" y1="310" x2="920" y2="80" class="wire-pwr"/>
<circle cx="920" cy="80" r="2.5" class="dot"/>
<circle cx="920" cy="310" r="2.5" class="dot"/>
<!-- Common drain bus for right group -->
<line x1="800" y1="400" x2="1045" y2="400" class="wire"/>
<line x1="880" y1="400" x2="880" y2="435" class="wire"/>
<circle cx="880" cy="400" r="2.5" class="dot"/>
<!-- IR glow -->
<ellipse cx="920" cy="335" rx="160" ry="25" class="beam"/>
<!-- Label -->
<text x="800" y="420" class="ref" style="font-size:10px">D9D16: TSAL6200 (940nm, 8× parallel)</text>
<text x="800" y="432" class="val">R9R16: 47R (each: If = 51mA, total group = 408mA)</text>
</g>
<!-- ═══════════════════════════════════════════════════════ -->
<!-- NOTES section (bottom right) -->
<!-- ═══════════════════════════════════════════════════════ -->
<rect x="740" y="610" width="640" height="210" class="section" rx="8"/>
<text x="750" y="628" class="section-label">DESIGN NOTES</text>
<text x="760" y="650" class="val" style="font-size:11px;fill:#c5c8c6">Circuit Summary:</text>
<text x="760" y="668" class="val" style="font-size:10px">
ATtiny85 generates PWM on PB0/PB1 → gates two IRLML6344 N-MOSFETs
</text>
<text x="760" y="683" class="val" style="font-size:10px">
Each MOSFET switches a bank of 8 IR LEDs (940nm) with individual 47R limiters
</text>
<text x="760" y="698" class="val" style="font-size:10px">
Total max draw: 16 × 51mA = 816mA + MCU overhead ≈ 820mA
</text>
<text x="760" y="713" class="val" style="font-size:10px">
Runtime at full power: 500mAh / 820mA ≈ 36 min
</text>
<text x="760" y="728" class="val" style="font-size:10px">
Pulsed modes (30/60Hz, 50% duty) double runtime to ~72 min
</text>
<text x="760" y="755" class="val" style="font-size:11px;fill:#c5c8c6">Component Count:</text>
<text x="760" y="773" class="val" style="font-size:10px">
1× ATtiny85 | 2× IRLML6344 | 16× TSAL6200 | 16× 47R | 3× misc R
</text>
<text x="760" y="788" class="val" style="font-size:10px">
1× 100nF cap | 1× TP4056 module | 1× LiPo 500mAh | 2× switches | 1× status LED
</text>
<text x="760" y="803" class="val" style="font-size:10px;fill:#de935f">
Estimated BOM cost: ~$15 USD (through-hole prototype)
</text>
<!-- Decorative IR wave symbol in corner -->
<g transform="translate(1300,660)" opacity="0.3">
<circle cx="0" cy="0" r="10" stroke="#b294bb" stroke-width="1.5" fill="none"/>
<circle cx="0" cy="0" r="20" stroke="#b294bb" stroke-width="1" fill="none"/>
<circle cx="0" cy="0" r="30" stroke="#b294bb" stroke-width="0.5" fill="none"/>
<text x="-5" y="5" style="font-size:12px;fill:#b294bb;font-weight:bold">IR</text>
</g>
</svg>