salty ed1542ae11 feat: rewrite UWB firmware for DW1000 (all 3 boards)
Anchor (esp32/uwb_anchor):
- DW1000Ranging library (200m range, MODE_LONGDATA_RANGE_ACCURACY)
- Unique addresses per anchor (anchor0/anchor1 build envs)
- +RANGE output: anchor_id, tag_addr, range_mm, rssi
- ESP-NOW receiver: forwards tag packets + priority E-STOP to Jetson
- AT+ID? command

Tag with Display (esp32/uwb_tag):
- DW1000Ranging as tag, auto-discovers anchors
- SSD1306 OLED: big distance, per-anchor ranges, RSSI bars, link status
- ESP-NOW broadcast: range/heartbeat/estop packets
- E-Stop on GPIO 0 (BOOT button), 10Hz TX while held
- Display at 5Hz, ranging driven by DW1000Ranging.loop()

Shared:
- lib/DW1000/ extracted from mf_DW1000.zip (Makerfabs fork)
- lib_extra_dirs for PlatformIO to find local library
2026-03-14 12:30:26 -04:00

187 lines
10 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
<eagle version="8.2.1">
<drawing>
<settings>
<setting alwaysvectorfont="no"/>
<setting verticaltext="up"/>
</settings>
<grid distance="0.1" unitdist="inch" unit="inch" style="lines" multiple="1" display="no" altdistance="0.01" altunitdist="inch" altunit="inch"/>
<layers>
<layer number="1" name="Top" color="4" fill="1" visible="yes" active="yes"/>
<layer number="16" name="Bottom" color="1" fill="1" visible="no" active="yes"/>
<layer number="17" name="Pads" color="2" fill="1" visible="no" active="yes"/>
<layer number="18" name="Vias" color="2" fill="1" visible="no" active="yes"/>
<layer number="19" name="Unrouted" color="6" fill="1" visible="no" active="yes"/>
<layer number="20" name="Dimension" color="15" fill="1" visible="no" active="yes"/>
<layer number="21" name="tPlace" color="7" fill="1" visible="yes" active="yes"/>
<layer number="22" name="bPlace" color="7" fill="1" visible="no" active="yes"/>
<layer number="23" name="tOrigins" color="15" fill="1" visible="no" active="yes"/>
<layer number="24" name="bOrigins" color="15" fill="1" visible="no" active="yes"/>
<layer number="25" name="tNames" color="7" fill="1" visible="yes" active="yes"/>
<layer number="26" name="bNames" color="7" fill="1" visible="no" active="yes"/>
<layer number="27" name="tValues" color="7" fill="1" visible="yes" active="yes"/>
<layer number="28" name="bValues" color="7" fill="1" visible="no" active="yes"/>
<layer number="29" name="tStop" color="7" fill="3" visible="no" active="yes"/>
<layer number="30" name="bStop" color="7" fill="6" visible="no" active="yes"/>
<layer number="31" name="tCream" color="7" fill="4" visible="no" active="yes"/>
<layer number="32" name="bCream" color="7" fill="5" visible="no" active="yes"/>
<layer number="33" name="tFinish" color="6" fill="3" visible="no" active="yes"/>
<layer number="34" name="bFinish" color="6" fill="6" visible="no" active="yes"/>
<layer number="35" name="tGlue" color="7" fill="4" visible="no" active="yes"/>
<layer number="36" name="bGlue" color="7" fill="5" visible="no" active="yes"/>
<layer number="37" name="tTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="38" name="bTest" color="7" fill="1" visible="no" active="yes"/>
<layer number="39" name="tKeepout" color="4" fill="11" visible="yes" active="yes"/>
<layer number="40" name="bKeepout" color="1" fill="11" visible="no" active="yes"/>
<layer number="41" name="tRestrict" color="4" fill="10" visible="yes" active="yes"/>
<layer number="42" name="bRestrict" color="1" fill="10" visible="yes" active="yes"/>
<layer number="43" name="vRestrict" color="2" fill="10" visible="no" active="yes"/>
<layer number="44" name="Drills" color="7" fill="1" visible="no" active="yes"/>
<layer number="45" name="Holes" color="7" fill="1" visible="no" active="yes"/>
<layer number="46" name="Milling" color="3" fill="1" visible="no" active="yes"/>
<layer number="47" name="Measures" color="7" fill="1" visible="no" active="yes"/>
<layer number="48" name="Document" color="7" fill="1" visible="no" active="yes"/>
<layer number="49" name="Reference" color="7" fill="1" visible="no" active="yes"/>
<layer number="51" name="tDocu" color="7" fill="1" visible="no" active="yes"/>
<layer number="52" name="bDocu" color="7" fill="1" visible="no" active="yes"/>
<layer number="91" name="Nets" color="2" fill="1" visible="yes" active="yes"/>
<layer number="92" name="Busses" color="1" fill="1" visible="yes" active="yes"/>
<layer number="93" name="Pins" color="2" fill="1" visible="yes" active="yes"/>
<layer number="94" name="Symbols" color="4" fill="1" visible="yes" active="yes"/>
<layer number="95" name="Names" color="7" fill="1" visible="yes" active="yes"/>
<layer number="96" name="Values" color="7" fill="1" visible="yes" active="yes"/>
<layer number="97" name="Info" color="7" fill="1" visible="yes" active="yes"/>
<layer number="98" name="Guide" color="6" fill="1" visible="yes" active="yes"/>
</layers>
<library>
<packages>
<package name="DWM1000">
<smd name="10" x="-3.5" y="0.205" dx="1" dy="2.45" layer="1" rot="R180"/>
<smd name="9" x="-4.9" y="0.205" dx="1" dy="2.45" layer="1" rot="R180"/>
<smd name="11" x="-2.1" y="0.205" dx="1" dy="2.45" layer="1" rot="R180"/>
<smd name="12" x="-0.7" y="0.205" dx="1" dy="2.45" layer="1" rot="R180"/>
<smd name="13" x="0.7" y="0.205" dx="1" dy="2.45" layer="1" rot="R180"/>
<smd name="14" x="2.1" y="0.205" dx="1" dy="2.45" layer="1" rot="R180"/>
<smd name="15" x="3.5" y="0.205" dx="1" dy="2.45" layer="1" rot="R180"/>
<smd name="16" x="4.9" y="0.205" dx="1" dy="2.45" layer="1" rot="R180"/>
<smd name="8" x="-6.3" y="2.5" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="7" x="-6.3" y="3.9" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="6" x="-6.3" y="5.3" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="5" x="-6.3" y="6.7" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="4" x="-6.3" y="8.1" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="3" x="-6.3" y="9.5" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="17" x="6.3" y="2.5" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="18" x="6.3" y="3.9" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="19" x="6.3" y="5.3" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="20" x="6.3" y="6.7" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="21" x="6.3" y="8.1" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="23" x="6.3" y="10.9" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="22" x="6.3" y="9.5" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="2" x="-6.3" y="10.9" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="1" x="-6.3" y="12.3" dx="1" dy="2.45" layer="1" rot="R270"/>
<smd name="24" x="6.3" y="12.3" dx="1" dy="2.45" layer="1" rot="R270"/>
<wire x1="-6.5" y1="0" x2="-6.5" y2="23" width="0.127" layer="21"/>
<wire x1="-6.5" y1="23" x2="6.5" y2="23" width="0.127" layer="21"/>
<wire x1="6.5" y1="23" x2="6.5" y2="0" width="0.127" layer="21"/>
<wire x1="6.5" y1="0" x2="-6.5" y2="0" width="0.127" layer="21"/>
<text x="-3.5" y="14.94" size="1.27" layer="25">&gt;NAME</text>
<text x="-3.5" y="20.02" size="1.27" layer="27">&gt;VALUE</text>
<polygon width="0.000128125" layer="41">
<vertex x="-16.1" y="12.925"/>
<vertex x="16.1" y="12.925"/>
<vertex x="16.1" y="27.7"/>
<vertex x="-16.1" y="27.7"/>
</polygon>
<polygon width="0.000128125" layer="42">
<vertex x="-16.1" y="12.925"/>
<vertex x="16.1" y="12.925"/>
<vertex x="16.1" y="27.7"/>
<vertex x="-16.1" y="27.7"/>
</polygon>
</package>
</packages>
<symbols>
<symbol name="DWM1000">
<pin name="EXTON" x="33.02" y="12.7" length="middle" direction="out" rot="R180"/>
<pin name="WAKEUP" x="33.02" y="10.16" length="middle" rot="R180"/>
<pin name="!RST" x="33.02" y="7.62" length="middle" direction="in" rot="R180"/>
<pin name="GPIO7" x="-35.56" y="7.62" length="middle"/>
<pin name="VDDAON" x="2.54" y="20.32" length="middle" rot="R270"/>
<pin name="VDD" x="-5.08" y="20.32" length="middle" direction="pas" rot="R270"/>
<pin name="VSS" x="-7.62" y="-20.32" length="middle" direction="pas" rot="R90"/>
<pin name="VDD@2" x="-7.62" y="20.32" length="middle" direction="pas" rot="R270"/>
<pin name="VSS@2" x="-5.08" y="-20.32" length="middle" direction="pas" rot="R90"/>
<pin name="VSS@3" x="-2.54" y="-20.32" length="middle" direction="pas" rot="R90"/>
<pin name="IRQ/GPIO8" x="-35.56" y="10.16" length="middle"/>
<pin name="VSS@4" x="0" y="-20.32" length="middle" direction="pas" rot="R90"/>
<pin name="SPICLK" x="33.02" y="-5.08" length="middle" direction="in" rot="R180"/>
<pin name="SPIMISO" x="33.02" y="-7.62" length="middle" direction="out" rot="R180"/>
<pin name="SPIMOSI" x="33.02" y="-10.16" length="middle" direction="in" rot="R180"/>
<pin name="!SPICS" x="33.02" y="-12.7" length="middle" direction="in" rot="R180"/>
<pin name="GPIO6" x="-35.56" y="5.08" length="middle"/>
<pin name="GPIO5/SPIPOL" x="-35.56" y="2.54" length="middle"/>
<pin name="GPIO4" x="-35.56" y="0" length="middle"/>
<pin name="GPIO3/TXLED" x="-35.56" y="-2.54" length="middle"/>
<pin name="GPIO2/RXLED" x="-35.56" y="-5.08" length="middle"/>
<pin name="GPIO1/SFDLED" x="-35.56" y="-7.62" length="middle"/>
<pin name="GPIO0/RXOKLED" x="-35.56" y="-10.16" length="middle"/>
<pin name="VSS@5" x="2.54" y="-20.32" length="middle" rot="R90"/>
<wire x1="-30.48" y1="15.24" x2="-30.48" y2="-15.24" width="0.254" layer="94"/>
<wire x1="-30.48" y1="-15.24" x2="27.94" y2="-15.24" width="0.254" layer="94"/>
<wire x1="27.94" y1="-15.24" x2="27.94" y2="15.24" width="0.254" layer="94"/>
<wire x1="27.94" y1="15.24" x2="-30.48" y2="15.24" width="0.254" layer="94"/>
<text x="-5.08" y="-1.27" size="1.27" layer="95">&gt;NAME</text>
<text x="-27.94" y="-19.05" size="1.27" layer="96">&gt;VALUE</text>
</symbol>
</symbols>
<devicesets>
<deviceset name="DWM1000" prefix="U">
<description>The DWM1000 module is based on Decawave's DW1000 Ultra
Wideband (UWB) transceiver IC. It integrates antenna, all RF
circuitry, power management and clock circuitry in one module.
It can be used in 2-way ranging or TDOA location systems to
locate assets to a precision of 10 cm and supports data rates of
up to 6.8 Mbps</description>
<gates>
<gate name="G$1" symbol="DWM1000" x="2.54" y="-17.78"/>
</gates>
<devices>
<device name="" package="DWM1000">
<connects>
<connect gate="G$1" pin="!RST" pad="3"/>
<connect gate="G$1" pin="!SPICS" pad="17"/>
<connect gate="G$1" pin="EXTON" pad="1"/>
<connect gate="G$1" pin="GPIO0/RXOKLED" pad="15"/>
<connect gate="G$1" pin="GPIO1/SFDLED" pad="14"/>
<connect gate="G$1" pin="GPIO2/RXLED" pad="13"/>
<connect gate="G$1" pin="GPIO3/TXLED" pad="12"/>
<connect gate="G$1" pin="GPIO4" pad="11"/>
<connect gate="G$1" pin="GPIO5/SPIPOL" pad="10"/>
<connect gate="G$1" pin="GPIO6" pad="9"/>
<connect gate="G$1" pin="GPIO7" pad="4"/>
<connect gate="G$1" pin="IRQ/GPIO8" pad="22"/>
<connect gate="G$1" pin="SPICLK" pad="20"/>
<connect gate="G$1" pin="SPIMISO" pad="19"/>
<connect gate="G$1" pin="SPIMOSI" pad="18"/>
<connect gate="G$1" pin="VDD" pad="7"/>
<connect gate="G$1" pin="VDD@2" pad="6"/>
<connect gate="G$1" pin="VDDAON" pad="5"/>
<connect gate="G$1" pin="VSS" pad="8"/>
<connect gate="G$1" pin="VSS@2" pad="24"/>
<connect gate="G$1" pin="VSS@3" pad="23"/>
<connect gate="G$1" pin="VSS@4" pad="21"/>
<connect gate="G$1" pin="VSS@5" pad="16"/>
<connect gate="G$1" pin="WAKEUP" pad="2"/>
</connects>
<technologies>
<technology name=""/>
</technologies>
</device>
</devices>
</deviceset>
</devicesets>
</library>
</drawing>
</eagle>