summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Chapman <1360262+enthdegree@users.noreply.github.com>2023-04-16 10:05:55 -0400
committerGitHub <noreply@github.com>2023-04-16 10:05:55 -0400
commit462f24b31321107834d00016d0b07aa044be5d7e (patch)
tree53937086ab72d3b9bf05001e5e39ae7bb84dcc66
parentbfde33c946ee7f49a2f8bf9f253b2801bd169638 (diff)
downloadSensor-Watch-462f24b31321107834d00016d0b07aa044be5d7e.tar.gz
Sensor-Watch-462f24b31321107834d00016d0b07aa044be5d7e.tar.bz2
Sensor-Watch-462f24b31321107834d00016d0b07aa044be5d7e.zip
Aperture priority light meter face (#230)
* initial commit, added opt3001 light meter test app * tested working light meter board, i2c communication still has issues * fixed i2c; rudimentary lightmeter works! * added aperture priority ui * added aperture priority ui * added README * adjusted cal * fixed bugs (HI shutter speed, lux mode toggle) * made it possible to advance to the next face * initialized lux variable * lowered tolerance for HI and LO * Changed EV display from always showing EV100 to showing EV[iso setting] * dont display old ev when ISO changes * changed mode and light behavior * updated readme * fixed indentation * made lightmeter display logic more consistent * made lightmeter display logic more consistent * reverted rules.mk (for merge into upstream) * reverted rules.mk (for merge into upstream) * removed OPT3001 PCB model * made lux mode default, corrected timeout behavior --------- Co-authored-by: Christian Chapman <user@debian>
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/.gitignore2
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001-cache.lib162
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.kicad_pcb497
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.kicad_pcb-bak497
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/B1,27.kicad_mod16
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/FH19C9S05SH10-FFC.kicad_mod33
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/_0603MP.kicad_mod19
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.sch279
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.sch-bak279
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.dcm3
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.lib990
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/empty.kicad_wks5
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/fp-info-cache1
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/fp-lib-table4
-rw-r--r--PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/sym-lib-table4
-rw-r--r--make.mk2
-rw-r--r--movement/make/Makefile1
-rw-r--r--movement/movement_config.h2
-rw-r--r--movement/movement_faces.h1
-rw-r--r--movement/watch_faces/sensor/lightmeter_face.c206
-rw-r--r--movement/watch_faces/sensor/lightmeter_face.h160
-rw-r--r--watch-library/shared/driver/opt3001.c91
-rw-r--r--watch-library/shared/driver/opt3001.h87
23 files changed, 3341 insertions, 0 deletions
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/.gitignore b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/.gitignore
new file mode 100644
index 00000000..88bb66f9
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/.gitignore
@@ -0,0 +1,2 @@
+OPT3001DNPT/*
+
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001-cache.lib b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001-cache.lib
new file mode 100644
index 00000000..90c56805
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001-cache.lib
@@ -0,0 +1,162 @@
+EESchema-LIBRARY Version 2.4
+#encoding utf-8
+#
+# OPT3001DNPT_OPT3001DNPT
+#
+DEF OPT3001DNPT_OPT3001DNPT U 0 40 Y Y 1 L N
+F0 "U" -400 550 50 H V L BNN
+F1 "OPT3001DNPT_OPT3001DNPT" -400 -450 50 H V L BNN
+F2 "SON65P200X200X65-7N" 0 0 50 H I L BNN
+F3 "" 0 0 50 H I L BNN
+F4 "0.65" 0 0 50 H I L BNN "ENOM"
+F5 "1.9" 0 0 50 H I L BNN "E_MIN"
+F6 "0.25" 0 0 50 H I L BNN "L_MIN"
+F7 "2.0" 0 0 50 H I L BNN "E_NOM"
+F8 "0.65" 0 0 50 H I L BNN "A_MAX"
+F9 "0.65" 0 0 50 H I L BNN "E2_NOM"
+F10 "IPC 7351B" 0 0 50 H I L BNN "STANDARD"
+F11 "01/2018" 0 0 50 H I L BNN "PARTREV"
+F12 "0.25" 0 0 50 H I L BNN "B_NOM"
+F13 "0.3" 0 0 50 H I L BNN "B_MAX"
+F14 "0.2" 0 0 50 H I L BNN "B_MIN"
+F15 "6.0" 0 0 50 H I L BNN "PIN_COUNT"
+F16 "2.1" 0 0 50 H I L BNN "E_MAX"
+F17 "0.35" 0 0 50 H I L BNN "L_MAX"
+F18 "Texas Instruments" 0 0 50 H I L BNN "MANUFACTURER"
+F19 "1.35" 0 0 50 H I L BNN "D2_NOM"
+F20 "0.3" 0 0 50 H I L BNN "L_NOM"
+F21 "2.1" 0 0 50 H I L BNN "D_MAX"
+F22 "2.0" 0 0 50 H I L BNN "D_NOM"
+F23 "1.9" 0 0 50 H I L BNN "D_MIN"
+DRAW
+S -400 -400 400 500 0 0 10 f
+X VDD 1 600 400 200 L 40 40 0 0 W
+X ADDR 2 -600 200 200 R 40 40 0 0 I
+X GND 3 600 -300 200 L 40 40 0 0 W
+X SCL 4 -600 0 200 R 40 40 0 0 I C
+X INT 5 600 200 200 L 40 40 0 0 O
+X SDA 6 -600 -100 200 R 40 40 0 0 B
+X EXP 7 600 -100 200 L 40 40 0 0 P
+ENDDRAW
+ENDDEF
+#
+# Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_A4L-LOC
+#
+DEF Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_A4L-LOC #FRAME 0 40 Y Y 1 L N
+F0 "#FRAME" 0 0 50 H I C CNN
+F1 "Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_A4L-LOC" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 8550 600 85 0 1 0 >DRAWING_NAME Normal 0 L B
+T 0 8550 400 76 0 1 0 >LAST_DATE_TIME Normal 0 L B
+T 0 8995 200 85 0 1 0 >SHEET Normal 0 L B
+T 0 8550 800 85 0 1 0 "by joey castillo" Normal 0 L B
+T 0 9300 200 85 0 1 0 "cc-by-sa 4.0" Normal 0 L B
+T 0 7300 200 180 0 1 0 oddly_specific_objects Normal 0 L B
+T 0 8540 195 85 0 1 0 Sheet: Normal 0 L B
+P 2 1 0 0 7250 150 7250 950 N
+P 2 1 0 0 7250 950 8475 950 N
+P 2 1 0 0 8475 350 8475 150 N
+P 2 1 0 0 8475 350 8475 550 N
+P 2 1 0 0 8475 550 8475 750 N
+P 2 1 0 0 8475 550 10100 550 N
+P 2 1 0 0 8475 750 8475 950 N
+P 2 1 0 0 8475 750 10100 750 N
+P 2 1 0 0 8475 950 10100 950 N
+P 2 1 0 0 9250 150 9250 350 N
+P 2 1 0 0 9250 350 8475 350 N
+P 2 1 0 0 9250 350 10100 350 N
+P 2 1 0 0 10100 150 10100 350 N
+P 2 1 0 0 10100 350 10100 550 N
+P 2 1 0 0 10100 550 10100 750 N
+P 2 1 0 0 10100 750 10100 950 N
+ENDDRAW
+ENDDEF
+#
+# Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_FH19C-9S-0.5SH_10-FFC
+#
+DEF Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_FH19C-9S-0.5SH_10-FFC ~ 0 40 Y Y 1 L N
+F0 "" 350 700 59 H V L CNN
+F1 "Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_FH19C-9S-0.5SH_10-FFC" 350 600 59 H V L CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -200 500 -200 -500 N
+P 2 1 0 0 -200 500 300 500 N
+P 2 1 0 0 300 -500 -200 -500 N
+P 2 1 0 0 300 -500 300 500 N
+X 1 1 500 400 200 L 50 50 1 0 B
+X 2 2 500 300 200 L 50 50 1 0 B
+X 3 3 500 200 200 L 50 50 1 0 B
+X 4 4 500 100 200 L 50 50 1 0 B
+X 5 5 500 0 200 L 50 50 1 0 B
+X 6 6 500 -100 200 L 50 50 1 0 B
+X 7 7 500 -200 200 L 50 50 1 0 B
+X 8 8 500 -300 200 L 50 50 1 0 B
+X 9 9 500 -400 200 L 50 50 1 0 B
+ENDDRAW
+ENDDEF
+#
+# Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_GND
+#
+DEF Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_GND #GND 0 40 Y Y 1 L P
+F0 "#GND" 0 0 50 H I C CNN
+F1 "Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_GND" -100 -100 59 H V L BNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -75 0 75 0 N
+X GND 1 0 100 100 D 0 0 1 0 W
+ENDDRAW
+ENDDEF
+#
+# Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_RESISTOR_0603MP
+#
+DEF Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_RESISTOR_0603MP R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_RESISTOR_0603MP" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_TPB1,27
+#
+DEF Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_TPB1,27 TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_TPB1,27" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_VCC
+#
+DEF Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_VCC #P+ 0 40 Y Y 1 L P
+F0 "#P+" 0 0 50 H I C CNN
+F1 "Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import_VCC" -100 -100 59 V V L BNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 0 0 -50 -75 N
+P 2 1 0 0 50 -75 0 0 N
+X VCC 1 0 -100 100 U 0 0 1 0 W
+ENDDRAW
+ENDDEF
+#
+#End Library
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.kicad_pcb b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.kicad_pcb
new file mode 100644
index 00000000..e13c73a5
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.kicad_pcb
@@ -0,0 +1,497 @@
+(kicad_pcb (version 20171130) (host pcbnew 5.1.9+dfsg1-1+deb11u1)
+
+ (general
+ (thickness 1.6)
+ (drawings 22)
+ (tracks 90)
+ (zones 0)
+ (modules 10)
+ (nets 12)
+ )
+
+ (page A4)
+ (layers
+ (0 Top signal)
+ (31 Bottom signal)
+ (32 B.Adhes user hide)
+ (33 F.Adhes user hide)
+ (34 B.Paste user hide)
+ (35 F.Paste user hide)
+ (36 B.SilkS user hide)
+ (37 F.SilkS user)
+ (38 B.Mask user hide)
+ (39 F.Mask user hide)
+ (40 Dwgs.User user hide)
+ (41 Cmts.User user hide)
+ (42 Eco1.User user hide)
+ (43 Eco2.User user)
+ (44 Edge.Cuts user)
+ (45 Margin user hide)
+ (46 B.CrtYd user hide)
+ (47 F.CrtYd user hide)
+ (48 B.Fab user hide)
+ (49 F.Fab user hide)
+ )
+
+ (setup
+ (last_trace_width 0.25)
+ (trace_clearance 0.1524)
+ (zone_clearance 0.508)
+ (zone_45_only no)
+ (trace_min 0.2)
+ (via_size 0.8)
+ (via_drill 0.4)
+ (via_min_size 0.1)
+ (via_min_drill 0.254)
+ (uvia_size 0.3)
+ (uvia_drill 0.1)
+ (uvias_allowed no)
+ (uvia_min_size 0.2)
+ (uvia_min_drill 0.1)
+ (edge_width 0.05)
+ (segment_width 0.2)
+ (pcb_text_width 0.3)
+ (pcb_text_size 1.5 1.5)
+ (mod_edge_width 0.12)
+ (mod_text_size 1 1)
+ (mod_text_width 0.15)
+ (pad_size 1.5 0.27)
+ (pad_drill 0)
+ (pad_to_mask_clearance 0)
+ (aux_axis_origin 0 0)
+ (visible_elements FFFFFF7F)
+ (pcbplotparams
+ (layerselection 0x010fc_ffffffff)
+ (usegerberextensions false)
+ (usegerberattributes true)
+ (usegerberadvancedattributes true)
+ (creategerberjobfile true)
+ (excludeedgelayer true)
+ (linewidth 0.100000)
+ (plotframeref false)
+ (viasonmask false)
+ (mode 1)
+ (useauxorigin false)
+ (hpglpennumber 1)
+ (hpglpenspeed 20)
+ (hpglpendiameter 15.000000)
+ (psnegative false)
+ (psa4output false)
+ (plotreference true)
+ (plotvalue true)
+ (plotinvisibletext false)
+ (padsonsilk false)
+ (subtractmaskfromsilk false)
+ (outputformat 1)
+ (mirror false)
+ (drillshape 1)
+ (scaleselection 1)
+ (outputdirectory ""))
+ )
+
+ (net 0 "")
+ (net 1 GND)
+ (net 2 VCC)
+ (net 3 /A0_TEMP_ENABLE)
+ (net 4 /SCL)
+ (net 5 /SDA)
+ (net 6 /A1_SERCOM3.3_TC3.1)
+ (net 7 /A2_TEMP_SENSE)
+ (net 8 /NC)
+ (net 9 /A4_SERCOM3.2_TC3.0)
+ (net 10 "Net-(U1-Pad7)")
+ (net 11 "Net-(U1-Pad5)")
+
+ (net_class Default "This is the default net class."
+ (clearance 0.1524)
+ (trace_width 0.25)
+ (via_dia 0.8)
+ (via_drill 0.4)
+ (uvia_dia 0.3)
+ (uvia_drill 0.1)
+ (add_net /A0_TEMP_ENABLE)
+ (add_net /A1_SERCOM3.3_TC3.1)
+ (add_net /A2_TEMP_SENSE)
+ (add_net /A4_SERCOM3.2_TC3.0)
+ (add_net /NC)
+ (add_net /SCL)
+ (add_net /SDA)
+ (add_net GND)
+ (add_net "Net-(U1-Pad5)")
+ (add_net "Net-(U1-Pad7)")
+ (add_net VCC)
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:FH19C9S05SH10-FFC" (layer Top) (tedit 0) (tstamp 63E6D203)
+ (at 153.2255 106.5556)
+ (descr "<b>FH19C-9S-0.5SH(10)-1</b><br>\n")
+ (path /54307519)
+ (fp_text reference U$3 (at 0 0) (layer F.SilkS) hide
+ (effects (font (size 1.27 1.27) (thickness 0.15)))
+ )
+ (fp_text value FH19C-9S-0.5SH_10-FFC (at 0 0) (layer F.SilkS) hide
+ (effects (font (size 1.27 1.27) (thickness 0.15)))
+ )
+ (fp_poly (pts (xy -2.4902 0.9742) (xy 2.4882 0.9742) (xy 2.4892 3.4798) (xy -2.4892 3.4798)) (layer B.Mask) (width 0))
+ (fp_line (start 2.4892 0) (end 2.4892 3.35) (layer Edge.Cuts) (width 0.05))
+ (fp_line (start -2.3392 3.5) (end 2.3392 3.5) (layer Edge.Cuts) (width 0.05))
+ (fp_line (start -2.4892 0) (end -2.4892 3.35) (layer Edge.Cuts) (width 0.05))
+ (fp_arc (start -2.3392 3.35) (end -2.3392 3.5) (angle 90) (layer Edge.Cuts) (width 0.05))
+ (fp_arc (start 2.3392 3.35) (end 2.3392 3.5) (angle -90) (layer Edge.Cuts) (width 0.05))
+ (pad 1 smd rect (at 2 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 2 VCC) (solder_mask_margin 0.0635))
+ (pad 2 smd rect (at 1.5 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 1 GND) (solder_mask_margin 0.0635))
+ (pad 3 smd rect (at 1 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 9 /A4_SERCOM3.2_TC3.0) (solder_mask_margin 0.0635))
+ (pad 4 smd rect (at 0.5 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 8 /NC) (solder_mask_margin 0.0635))
+ (pad 5 smd rect (at 0 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 7 /A2_TEMP_SENSE) (solder_mask_margin 0.0635))
+ (pad 6 smd rect (at -0.5 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 6 /A1_SERCOM3.3_TC3.1) (solder_mask_margin 0.0635))
+ (pad 7 smd rect (at -1 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 5 /SDA) (solder_mask_margin 0.0635))
+ (pad 8 smd rect (at -1.5 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 4 /SCL) (solder_mask_margin 0.0635))
+ (pad 9 smd rect (at -2 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 3 /A0_TEMP_ENABLE) (solder_mask_margin 0.0635))
+ )
+
+ (module OPT3001DNPT:SON65P200X200X65-7N (layer Top) (tedit 63E6D415) (tstamp 63E73FD8)
+ (at 142.748 102.87 270)
+ (path /63E70E51)
+ (attr smd)
+ (fp_text reference U1 (at 0.54 -2.008 90) (layer F.SilkS) hide
+ (effects (font (size 0.8 0.8) (thickness 0.15)))
+ )
+ (fp_text value OPT3001DNPT (at 7.652 2.008 90) (layer F.Fab) hide
+ (effects (font (size 0.8 0.8) (thickness 0.15)))
+ )
+ (fp_line (start 1.615 -1.25) (end 1.615 1.25) (layer F.CrtYd) (width 0.05))
+ (fp_line (start -1.615 -1.25) (end -1.615 1.25) (layer F.CrtYd) (width 0.05))
+ (fp_line (start -1.615 1.25) (end 1.615 1.25) (layer F.CrtYd) (width 0.05))
+ (fp_line (start -1.615 -1.25) (end 1.615 -1.25) (layer F.CrtYd) (width 0.05))
+ (fp_line (start 1 -1) (end 1 1) (layer F.Fab) (width 0.127))
+ (fp_line (start -1 -1) (end -1 1) (layer F.Fab) (width 0.127))
+ (fp_line (start -1 1.099) (end 1 1.099) (layer F.SilkS) (width 0.127))
+ (fp_line (start -1 -1.099) (end 1 -1.099) (layer F.SilkS) (width 0.127))
+ (fp_line (start -1 1) (end 1 1) (layer F.Fab) (width 0.127))
+ (fp_line (start -1 -1) (end 1 -1) (layer F.Fab) (width 0.127))
+ (fp_circle (center -1.935 -0.65) (end -1.835 -0.65) (layer F.Fab) (width 0.2))
+ (fp_circle (center -1.935 -0.65) (end -1.835 -0.65) (layer F.SilkS) (width 0.2))
+ (fp_poly (pts (xy -0.21 -0.43) (xy 0.21 -0.43) (xy 0.21 0.43) (xy -0.21 0.43)) (layer F.Paste) (width 0.01))
+ (pad 1 smd roundrect (at -1.37 -0.65 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 2 VCC))
+ (pad 2 smd roundrect (at -1.37 0 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 1 GND))
+ (pad 3 smd roundrect (at -1.37 0.65 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 1 GND))
+ (pad 4 smd roundrect (at 1.37 0.65 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 4 /SCL))
+ (pad 5 smd roundrect (at 1.37 0 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 11 "Net-(U1-Pad5)"))
+ (pad 6 smd roundrect (at 1.37 -0.65 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 5 /SDA))
+ (pad 7 smd rect (at 0 0 270) (size 0.65 1.35) (layers Top F.Mask)
+ (net 10 "Net-(U1-Pad7)"))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:_0603MP" (layer Top) (tedit 0) (tstamp 63E759D2)
+ (at 146.2659 104.7522 270)
+ (descr "<b>0603 MicroPitch</b>")
+ (path /05CBC8DB)
+ (fp_text reference R1 (at -0.0635 1.7145 90) (layer F.SilkS)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_text value "1% 10K" (at -0.9525 0.9525 90) (layer F.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_line (start -0.432 0.306) (end 0.432 0.306) (layer F.Fab) (width 0.1016))
+ (fp_line (start 0.432 -0.306) (end -0.432 -0.306) (layer F.Fab) (width 0.1016))
+ (fp_line (start 0 -0.254) (end 0 0.254) (layer F.SilkS) (width 0.2032))
+ (fp_poly (pts (xy 0.4318 0.4) (xy 0.8 0.4) (xy 0.8 -0.4) (xy 0.4318 -0.4)) (layer F.Fab) (width 0))
+ (fp_poly (pts (xy -0.8 0.4) (xy -0.4318 0.4) (xy -0.4318 -0.4) (xy -0.8 -0.4)) (layer F.Fab) (width 0))
+ (fp_poly (pts (xy -0.1999 0.25) (xy 0.1999 0.25) (xy 0.1999 -0.25) (xy -0.1999 -0.25)) (layer F.Adhes) (width 0))
+ (pad 2 smd rect (at 0.762 0 270) (size 0.8 0.8) (layers Top F.Paste F.Mask)
+ (net 3 /A0_TEMP_ENABLE) (solder_mask_margin 0.0635))
+ (pad 1 smd rect (at -0.762 0 270) (size 0.8 0.8) (layers Top F.Paste F.Mask)
+ (net 7 /A2_TEMP_SENSE) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:_0603MP" (layer Top) (tedit 0) (tstamp 63E759F3)
+ (at 146.2659 102.1868 270)
+ (descr "<b>0603 MicroPitch</b>")
+ (path /6C7771A6)
+ (fp_text reference RT1 (at -0.127 1.778 90) (layer F.SilkS)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_text value "NTC 10K" (at -1.27 1.4923 90) (layer F.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_line (start -0.432 0.306) (end 0.432 0.306) (layer F.Fab) (width 0.1016))
+ (fp_line (start 0.432 -0.306) (end -0.432 -0.306) (layer F.Fab) (width 0.1016))
+ (fp_line (start 0 -0.254) (end 0 0.254) (layer F.SilkS) (width 0.2032))
+ (fp_poly (pts (xy 0.4318 0.4) (xy 0.8 0.4) (xy 0.8 -0.4) (xy 0.4318 -0.4)) (layer F.Fab) (width 0))
+ (fp_poly (pts (xy -0.8 0.4) (xy -0.4318 0.4) (xy -0.4318 -0.4) (xy -0.8 -0.4)) (layer F.Fab) (width 0))
+ (fp_poly (pts (xy -0.1999 0.25) (xy 0.1999 0.25) (xy 0.1999 -0.25) (xy -0.1999 -0.25)) (layer F.Adhes) (width 0))
+ (pad 2 smd rect (at 0.762 0 270) (size 0.8 0.8) (layers Top F.Paste F.Mask)
+ (net 7 /A2_TEMP_SENSE) (solder_mask_margin 0.0635))
+ (pad 1 smd rect (at -0.762 0 270) (size 0.8 0.8) (layers Top F.Paste F.Mask)
+ (net 2 VCC) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D22B)
+ (at 146.1135 102.8472 180)
+ (descr "<b>TEST PAD</b>")
+ (path /8E097FD0)
+ (fp_text reference GND1 (at -1.778 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 1 GND) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D232)
+ (at 144.0815 101.2216 180)
+ (descr "<b>TEST PAD</b>")
+ (path /E65641C5)
+ (fp_text reference A4 (at 1.524 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 9 /A4_SERCOM3.2_TC3.0) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D239)
+ (at 146.1135 101.2216 180)
+ (descr "<b>TEST PAD</b>")
+ (path /D0DD1D8E)
+ (fp_text reference VCC1 (at -1.778 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 2 VCC) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D240)
+ (at 146.1135 104.4728 180)
+ (descr "<b>TEST PAD</b>")
+ (path /252148C1)
+ (fp_text reference SCL1 (at -1.778 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 4 /SCL) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D247)
+ (at 144.0815 104.4728 180)
+ (descr "<b>TEST PAD</b>")
+ (path /943CED1C)
+ (fp_text reference SDA1 (at 1.778 -0.0127) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 5 /SDA) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D24E)
+ (at 144.0815 102.8472 180)
+ (descr "<b>TEST PAD</b>")
+ (path /E1B0505C)
+ (fp_text reference A1 (at 1.524 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 6 /A1_SERCOM3.3_TC3.1) (solder_mask_margin 0.0635))
+ )
+
+ (gr_arc (start 150.4823 106.5556) (end 150.7363 106.5556) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 803D32C0))
+ (gr_line (start 150.4823 106.3016) (end 145.7325 106.3016) (layer Edge.Cuts) (width 0.05) (tstamp 803D3820))
+ (gr_line (start 145.0975 105.6666) (end 142.1765 105.6666) (layer Edge.Cuts) (width 0.05) (tstamp 803D3C70))
+ (gr_arc (start 142.1765 104.7776) (end 142.1765 105.6666) (angle 90) (layer Edge.Cuts) (width 0.05) (tstamp 63E7417A))
+ (gr_line (start 141.2875 104.7776) (end 141.2875 100.8406) (layer Edge.Cuts) (width 0.05) (tstamp 63E75941))
+ (gr_arc (start 142.1765 100.8406) (end 141.2875 100.8406) (angle 90) (layer Edge.Cuts) (width 0.05) (tstamp 63E74180))
+ (gr_line (start 142.1765 99.9516) (end 155.3337 99.9516) (layer Edge.Cuts) (width 0.05) (tstamp 7FB9B000))
+ (gr_arc (start 155.3337 100.3326) (end 155.3337 99.9516) (angle 90) (layer Edge.Cuts) (width 0.05) (tstamp 7FB9B410))
+ (gr_line (start 155.7147 100.3326) (end 155.7147 106.5556) (layer Edge.Cuts) (width 0.05) (tstamp 7FB9B950))
+ (gr_arc (start 145.0975 106.3016) (end 145.7325 106.3016) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 7FB9BE00))
+ (gr_text "OPT3001 I2C\nSensor Board" (at 151.4475 100.2056) (layer F.SilkS) (tstamp 7FC58850)
+ (effects (font (size 0.57912 0.57912) (thickness 0.109728)) (justify top))
+ )
+ (gr_line (start 155.7147 105.2856) (end 147.5105 105.2856) (layer F.SilkS) (width 0.127) (tstamp 7FC58F50))
+ (gr_line (start 147.0025 100.7136) (end 147.0025 104.7776) (layer F.SilkS) (width 0.127) (tstamp 7FA4B140))
+ (gr_arc (start 147.5105 104.7776) (end 147.0025 104.7776) (angle -90) (layer F.SilkS) (width 0.127) (tstamp 7FA4B6B0))
+ (gr_arc (start 146.2405 100.7136) (end 147.0025 100.7136) (angle -90) (layer F.SilkS) (width 0.127) (tstamp 7FA4BCC0))
+ (gr_text "A0: Thermistor !EN\nA2: Temp. Sense\nA1/A4/SDA/SCL:\nTest Points" (at 151.4475 102.1106) (layer F.SilkS) (tstamp 7FA08AA0)
+ (effects (font (size 0.4826 0.4826) (thickness 0.06096)) (justify top))
+ )
+ (gr_text "Digital IO\nAnalog input\nPWM on TC3\nUART RX/TX\nInterrupt 1/0\nA4 ONLY: Ext. wake 0" (at 155.5115 101.2216) (layer B.SilkS) (tstamp 7FA09230)
+ (effects (font (size 0.4826 0.4826) (thickness 0.06096)) (justify left top mirror))
+ )
+ (gr_text "A1/A4 Uses" (at 155.5115 100.2056) (layer B.SilkS) (tstamp 7F9A10A0)
+ (effects (font (size 0.57912 0.57912) (thickness 0.109728)) (justify left top mirror))
+ )
+ (gr_text "" (at 142.9385 104.1172) (layer F.SilkS) (tstamp 7F9A17A0)
+ (effects (font (size 0.57912 0.57912) (thickness 0.073152)) (justify left))
+ )
+ (gr_text "" (at 142.9385 101.5518) (layer F.SilkS) (tstamp 7F9A1E50)
+ (effects (font (size 0.57912 0.57912) (thickness 0.073152)) (justify left))
+ )
+ (dimension 3 (width 0.12) (layer F.SilkS)
+ (gr_text "3.000 mm" (at 160.9575 108.5016 90) (layer F.SilkS)
+ (effects (font (size 1 1) (thickness 0.15)))
+ )
+ (feature1 (pts (xy 156.0875 107.0016) (xy 160.273921 107.0016)))
+ (feature2 (pts (xy 156.0875 110.0016) (xy 160.273921 110.0016)))
+ (crossbar (pts (xy 159.6875 110.0016) (xy 159.6875 107.0016)))
+ (arrow1a (pts (xy 159.6875 107.0016) (xy 160.273921 108.128104)))
+ (arrow1b (pts (xy 159.6875 107.0016) (xy 159.101079 108.128104)))
+ (arrow2a (pts (xy 159.6875 110.0016) (xy 160.273921 108.875096)))
+ (arrow2b (pts (xy 159.6875 110.0016) (xy 159.101079 108.875096)))
+ )
+ (gr_text "Stiffener only\nin this area" (at 159.5755 108.5876) (layer F.SilkS) (tstamp 7F95BC90)
+ (effects (font (size 0.57912 0.57912) (thickness 0.109728)))
+ )
+
+ (segment (start 148.082 100.457) (end 148.137 100.457) (width 0.25) (layer Bottom) (net 0))
+ (segment (start 142.098 101.5) (end 142.748 101.5) (width 0.25) (layer Top) (net 1))
+ (via (at 142.494 100.529) (size 0.8) (drill 0.4) (layers Top Bottom) (net 1))
+ (segment (start 142.748 100.783) (end 142.494 100.529) (width 0.25) (layer Top) (net 1))
+ (segment (start 142.748 101.5) (end 142.748 100.783) (width 0.25) (layer Top) (net 1))
+ (segment (start 142.494 100.529) (end 142.76899 100.25401) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 145.201089 100.256533) (end 145.201089 101.934789) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 142.76899 100.25401) (end 145.198566 100.25401) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 145.198566 100.25401) (end 145.201089 100.256533) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 145.201089 101.934789) (end 146.1135 102.8472) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 147.022102 101.938598) (end 146.1135 102.8472) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 154.7255 104.319944) (end 152.344154 101.938598) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 152.344154 101.938598) (end 147.022102 101.938598) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 154.7255 108.8056) (end 154.7255 104.319944) (width 0.25) (layer Bottom) (net 1))
+ (via (at 146.939 101.219) (size 0.8) (drill 0.4) (layers Top Bottom) (net 2))
+ (segment (start 152.129838 100.901187) (end 147.822498 100.901187) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 146.1161 101.219) (end 146.1135 101.2216) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 147.822498 100.901187) (end 147.504685 101.219) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 155.2255 103.996849) (end 152.129838 100.901187) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 146.939 101.219) (end 146.1161 101.219) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 155.2255 108.8056) (end 155.2255 103.996849) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 147.504685 101.219) (end 146.939 101.219) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 143.398 101.5) (end 143.573651 101.675651) (width 0.25) (layer Top) (net 2))
+ (segment (start 143.573651 101.675651) (end 146.142049 101.675651) (width 0.25) (layer Top) (net 2))
+ (segment (start 146.142049 101.675651) (end 146.3929 101.4248) (width 0.25) (layer Top) (net 2))
+ (segment (start 146.3929 101.4248) (end 146.7332 101.4248) (width 0.25) (layer Top) (net 2))
+ (segment (start 146.7332 101.4248) (end 146.939 101.219) (width 0.25) (layer Top) (net 2))
+ (via (at 147.828 105.664) (size 0.8) (drill 0.4) (layers Top Bottom) (net 3))
+ (segment (start 147.6782 105.5142) (end 147.828 105.664) (width 0.25) (layer Top) (net 3))
+ (segment (start 146.3929 105.5142) (end 147.6782 105.5142) (width 0.25) (layer Top) (net 3))
+ (segment (start 151.2255 106.512573) (end 151.2255 108.8056) (width 0.25) (layer Bottom) (net 3))
+ (segment (start 150.712117 105.99919) (end 151.2255 106.512573) (width 0.25) (layer Bottom) (net 3))
+ (segment (start 148.16319 105.99919) (end 150.712117 105.99919) (width 0.25) (layer Bottom) (net 3))
+ (segment (start 147.828 105.664) (end 148.16319 105.99919) (width 0.25) (layer Bottom) (net 3))
+ (segment (start 142.37541 105.26741) (end 145.075078 105.26741) (width 0.25) (layer Top) (net 4))
+ (via (at 145.243931 105.098557) (size 0.8) (drill 0.4) (layers Top Bottom) (net 4))
+ (segment (start 142.098 104.99) (end 142.37541 105.26741) (width 0.25) (layer Top) (net 4))
+ (segment (start 142.098 104.24) (end 142.098 104.99) (width 0.25) (layer Top) (net 4))
+ (segment (start 145.075078 105.26741) (end 145.243931 105.098557) (width 0.25) (layer Top) (net 4))
+ (segment (start 145.487743 105.098557) (end 146.1135 104.4728) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 145.243931 105.098557) (end 145.487743 105.098557) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 150.674396 105.392376) (end 151.7255 106.44348) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 150.421816 105.392376) (end 150.674396 105.392376) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 146.1135 104.4728) (end 149.50224 104.4728) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 151.7255 106.44348) (end 151.7255 108.8056) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 149.50224 104.4728) (end 150.421816 105.392376) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 143.398 104.24) (end 145.007 104.24) (width 0.25) (layer Top) (net 5))
+ (segment (start 145.007 104.24) (end 145.381654 104.24) (width 0.25) (layer Top) (net 5))
+ (segment (start 152.2255 108.8056) (end 152.2255 106.193504) (width 0.25) (layer Bottom) (net 5))
+ (segment (start 145.381654 104.24) (end 145.856628 104.714974) (width 0.25) (layer Top) (net 5))
+ (segment (start 145.856628 104.714974) (end 150.74697 104.714974) (width 0.25) (layer Top) (net 5))
+ (via (at 150.74697 104.714974) (size 0.8) (drill 0.4) (layers Top Bottom) (net 5))
+ (segment (start 152.2255 106.193504) (end 150.74697 104.714974) (width 0.25) (layer Bottom) (net 5))
+ (via (at 145.034 103.886) (size 0.8) (drill 0.4) (layers Top Bottom) (net 5))
+ (segment (start 145.034 103.886) (end 145.007 103.913) (width 0.25) (layer Top) (net 5))
+ (segment (start 144.4472 104.4728) (end 145.034 103.886) (width 0.25) (layer Bottom) (net 5))
+ (segment (start 144.0815 104.4728) (end 144.4472 104.4728) (width 0.25) (layer Bottom) (net 5))
+ (segment (start 145.007 103.913) (end 145.007 104.24) (width 0.25) (layer Top) (net 5))
+ (via (at 148.336 103.52461) (size 0.8) (drill 0.4) (layers Top Bottom) (net 6))
+ (segment (start 152.7255 106.045058) (end 151.490164 104.809722) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 151.490164 104.35972) (end 150.655054 103.52461) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 152.7255 108.8056) (end 152.7255 106.045058) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 151.490164 104.809722) (end 151.490164 104.35972) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 150.655054 103.52461) (end 148.336 103.52461) (width 0.25) (layer Bottom) (net 6))
+ (via (at 144.899309 102.94316) (size 0.8) (drill 0.4) (layers Top Bottom) (net 6))
+ (segment (start 144.803349 102.8472) (end 144.899309 102.94316) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 144.0815 102.8472) (end 144.803349 102.8472) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 144.899309 102.94316) (end 145.57107 102.271399) (width 0.25) (layer Top) (net 6))
+ (segment (start 145.57107 102.271399) (end 147.082789 102.271399) (width 0.25) (layer Top) (net 6))
+ (segment (start 147.082789 102.271399) (end 148.336 103.52461) (width 0.25) (layer Top) (net 6))
+ (segment (start 146.2659 103.9902) (end 146.2659 102.9488) (width 0.254) (layer Top) (net 7) (tstamp 63E759C5))
+ (segment (start 153.2255 105.415504) (end 152.231065 104.421069) (width 0.25) (layer Bottom) (net 7))
+ (segment (start 148.842094 104.02107) (end 151.831066 104.02107) (width 0.25) (layer Top) (net 7))
+ (via (at 152.231065 104.421069) (size 0.8) (drill 0.4) (layers Top Bottom) (net 7))
+ (segment (start 148.661153 104.202011) (end 148.842094 104.02107) (width 0.25) (layer Top) (net 7))
+ (segment (start 146.3929 103.9902) (end 146.604711 104.202011) (width 0.25) (layer Top) (net 7))
+ (segment (start 146.604711 104.202011) (end 148.661153 104.202011) (width 0.25) (layer Top) (net 7))
+ (segment (start 151.831066 104.02107) (end 152.231065 104.421069) (width 0.25) (layer Top) (net 7))
+ (segment (start 153.2255 108.8056) (end 153.2255 105.415504) (width 0.25) (layer Bottom) (net 7))
+ (via (at 152.019 102.616) (size 0.8) (drill 0.4) (layers Top Bottom) (net 9))
+ (segment (start 154.2255 104.8225) (end 152.019 102.616) (width 0.25) (layer Bottom) (net 9))
+ (segment (start 154.2255 108.8056) (end 154.2255 104.8225) (width 0.25) (layer Bottom) (net 9))
+ (segment (start 149.733 100.33) (end 147.574 100.33) (width 0.25) (layer Top) (net 9))
+ (segment (start 152.019 102.616) (end 149.733 100.33) (width 0.25) (layer Top) (net 9))
+ (segment (start 147.574 100.33) (end 147.955 100.33) (width 0.25) (layer Top) (net 9))
+ (via (at 144.523679 100.981868) (size 0.8) (drill 0.4) (layers Top Bottom) (net 9))
+ (segment (start 144.0815 101.2216) (end 144.283947 101.2216) (width 0.25) (layer Bottom) (net 9))
+ (segment (start 144.283947 101.2216) (end 144.523679 100.981868) (width 0.25) (layer Bottom) (net 9))
+ (segment (start 144.523679 100.981868) (end 145.175547 100.33) (width 0.25) (layer Top) (net 9))
+ (segment (start 145.175547 100.33) (end 147.574 100.33) (width 0.25) (layer Top) (net 9))
+
+)
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.kicad_pcb-bak b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.kicad_pcb-bak
new file mode 100644
index 00000000..bff4000c
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.kicad_pcb-bak
@@ -0,0 +1,497 @@
+(kicad_pcb (version 20171130) (host pcbnew 5.1.9+dfsg1-1+deb11u1)
+
+ (general
+ (thickness 1.6)
+ (drawings 22)
+ (tracks 90)
+ (zones 0)
+ (modules 10)
+ (nets 12)
+ )
+
+ (page A4)
+ (layers
+ (0 Top signal)
+ (31 Bottom signal)
+ (32 B.Adhes user hide)
+ (33 F.Adhes user hide)
+ (34 B.Paste user hide)
+ (35 F.Paste user hide)
+ (36 B.SilkS user hide)
+ (37 F.SilkS user)
+ (38 B.Mask user hide)
+ (39 F.Mask user hide)
+ (40 Dwgs.User user hide)
+ (41 Cmts.User user hide)
+ (42 Eco1.User user hide)
+ (43 Eco2.User user)
+ (44 Edge.Cuts user)
+ (45 Margin user hide)
+ (46 B.CrtYd user hide)
+ (47 F.CrtYd user hide)
+ (48 B.Fab user hide)
+ (49 F.Fab user hide)
+ )
+
+ (setup
+ (last_trace_width 0.25)
+ (trace_clearance 0.1524)
+ (zone_clearance 0.508)
+ (zone_45_only no)
+ (trace_min 0.2)
+ (via_size 0.8)
+ (via_drill 0.4)
+ (via_min_size 0.1)
+ (via_min_drill 0.254)
+ (uvia_size 0.3)
+ (uvia_drill 0.1)
+ (uvias_allowed no)
+ (uvia_min_size 0.2)
+ (uvia_min_drill 0.1)
+ (edge_width 0.05)
+ (segment_width 0.2)
+ (pcb_text_width 0.3)
+ (pcb_text_size 1.5 1.5)
+ (mod_edge_width 0.12)
+ (mod_text_size 1 1)
+ (mod_text_width 0.15)
+ (pad_size 1.5 0.27)
+ (pad_drill 0)
+ (pad_to_mask_clearance 0)
+ (aux_axis_origin 0 0)
+ (visible_elements FFFFFF7F)
+ (pcbplotparams
+ (layerselection 0x010fc_ffffffff)
+ (usegerberextensions false)
+ (usegerberattributes true)
+ (usegerberadvancedattributes true)
+ (creategerberjobfile true)
+ (excludeedgelayer true)
+ (linewidth 0.100000)
+ (plotframeref false)
+ (viasonmask false)
+ (mode 1)
+ (useauxorigin false)
+ (hpglpennumber 1)
+ (hpglpenspeed 20)
+ (hpglpendiameter 15.000000)
+ (psnegative false)
+ (psa4output false)
+ (plotreference true)
+ (plotvalue true)
+ (plotinvisibletext false)
+ (padsonsilk false)
+ (subtractmaskfromsilk false)
+ (outputformat 1)
+ (mirror false)
+ (drillshape 1)
+ (scaleselection 1)
+ (outputdirectory ""))
+ )
+
+ (net 0 "")
+ (net 1 GND)
+ (net 2 VCC)
+ (net 3 /A0_TEMP_ENABLE)
+ (net 4 /SCL)
+ (net 5 /SDA)
+ (net 6 /A1_SERCOM3.3_TC3.1)
+ (net 7 /A2_TEMP_SENSE)
+ (net 8 /NC)
+ (net 9 /A4_SERCOM3.2_TC3.0)
+ (net 10 "Net-(U1-Pad7)")
+ (net 11 "Net-(U1-Pad5)")
+
+ (net_class Default "This is the default net class."
+ (clearance 0.1524)
+ (trace_width 0.25)
+ (via_dia 0.8)
+ (via_drill 0.4)
+ (uvia_dia 0.3)
+ (uvia_drill 0.1)
+ (add_net /A0_TEMP_ENABLE)
+ (add_net /A1_SERCOM3.3_TC3.1)
+ (add_net /A2_TEMP_SENSE)
+ (add_net /A4_SERCOM3.2_TC3.0)
+ (add_net /NC)
+ (add_net /SCL)
+ (add_net /SDA)
+ (add_net GND)
+ (add_net "Net-(U1-Pad5)")
+ (add_net "Net-(U1-Pad7)")
+ (add_net VCC)
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:FH19C9S05SH10-FFC" (layer Top) (tedit 0) (tstamp 63E6D203)
+ (at 153.2255 106.5556)
+ (descr "<b>FH19C-9S-0.5SH(10)-1</b><br>\n")
+ (path /54307519)
+ (fp_text reference U$3 (at 0 0) (layer F.SilkS) hide
+ (effects (font (size 1.27 1.27) (thickness 0.15)))
+ )
+ (fp_text value FH19C-9S-0.5SH_10-FFC (at 0 0) (layer F.SilkS) hide
+ (effects (font (size 1.27 1.27) (thickness 0.15)))
+ )
+ (fp_arc (start -2.3392 3.35) (end -2.3392 3.5) (angle 90) (layer Edge.Cuts) (width 0.05))
+ (fp_arc (start 2.3392 3.35) (end 2.3392 3.5) (angle -90) (layer Edge.Cuts) (width 0.05))
+ (fp_line (start -2.4892 0) (end -2.4892 3.35) (layer Edge.Cuts) (width 0.05))
+ (fp_line (start -2.3392 3.5) (end 2.3392 3.5) (layer Edge.Cuts) (width 0.05))
+ (fp_line (start 2.4892 0) (end 2.4892 3.35) (layer Edge.Cuts) (width 0.05))
+ (fp_poly (pts (xy -2.4902 0.9742) (xy 2.4882 0.9742) (xy 2.4892 3.4798) (xy -2.4892 3.4798)) (layer B.Mask) (width 0))
+ (pad 1 smd rect (at 2 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 2 VCC) (solder_mask_margin 0.0635))
+ (pad 2 smd rect (at 1.5 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 1 GND) (solder_mask_margin 0.0635))
+ (pad 3 smd rect (at 1 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 9 /A4_SERCOM3.2_TC3.0) (solder_mask_margin 0.0635))
+ (pad 4 smd rect (at 0.5 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 8 /NC) (solder_mask_margin 0.0635))
+ (pad 5 smd rect (at 0 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 7 /A2_TEMP_SENSE) (solder_mask_margin 0.0635))
+ (pad 6 smd rect (at -0.5 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 6 /A1_SERCOM3.3_TC3.1) (solder_mask_margin 0.0635))
+ (pad 7 smd rect (at -1 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 5 /SDA) (solder_mask_margin 0.0635))
+ (pad 8 smd rect (at -1.5 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 4 /SCL) (solder_mask_margin 0.0635))
+ (pad 9 smd rect (at -2 2.25 90) (size 2.5 0.347) (layers Bottom B.Mask)
+ (net 3 /A0_TEMP_ENABLE) (solder_mask_margin 0.0635))
+ )
+
+ (module OPT3001DNPT:SON65P200X200X65-7N (layer Top) (tedit 63E6D415) (tstamp 63E73FD8)
+ (at 142.748 102.87 270)
+ (path /63E70E51)
+ (attr smd)
+ (fp_text reference U1 (at 0.54 -2.008 90) (layer F.SilkS) hide
+ (effects (font (size 0.8 0.8) (thickness 0.15)))
+ )
+ (fp_text value OPT3001DNPT (at 7.652 2.008 90) (layer F.Fab) hide
+ (effects (font (size 0.8 0.8) (thickness 0.15)))
+ )
+ (fp_poly (pts (xy -0.21 -0.43) (xy 0.21 -0.43) (xy 0.21 0.43) (xy -0.21 0.43)) (layer F.Paste) (width 0.01))
+ (fp_circle (center -1.935 -0.65) (end -1.835 -0.65) (layer F.SilkS) (width 0.2))
+ (fp_circle (center -1.935 -0.65) (end -1.835 -0.65) (layer F.Fab) (width 0.2))
+ (fp_line (start -1 -1) (end 1 -1) (layer F.Fab) (width 0.127))
+ (fp_line (start -1 1) (end 1 1) (layer F.Fab) (width 0.127))
+ (fp_line (start -1 -1.099) (end 1 -1.099) (layer F.SilkS) (width 0.127))
+ (fp_line (start -1 1.099) (end 1 1.099) (layer F.SilkS) (width 0.127))
+ (fp_line (start -1 -1) (end -1 1) (layer F.Fab) (width 0.127))
+ (fp_line (start 1 -1) (end 1 1) (layer F.Fab) (width 0.127))
+ (fp_line (start -1.615 -1.25) (end 1.615 -1.25) (layer F.CrtYd) (width 0.05))
+ (fp_line (start -1.615 1.25) (end 1.615 1.25) (layer F.CrtYd) (width 0.05))
+ (fp_line (start -1.615 -1.25) (end -1.615 1.25) (layer F.CrtYd) (width 0.05))
+ (fp_line (start 1.615 -1.25) (end 1.615 1.25) (layer F.CrtYd) (width 0.05))
+ (pad 1 smd roundrect (at -1.37 -0.65 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 2 VCC))
+ (pad 2 smd roundrect (at -1.37 0 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 1 GND))
+ (pad 3 smd roundrect (at -1.37 0.65 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 1 GND))
+ (pad 4 smd roundrect (at 1.37 0.65 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 4 /SCL))
+ (pad 5 smd roundrect (at 1.37 0 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 11 "Net-(U1-Pad5)"))
+ (pad 6 smd roundrect (at 1.37 -0.65 270) (size 1.5 0.27) (layers Top F.Paste F.Mask) (roundrect_rratio 0.03)
+ (net 5 /SDA))
+ (pad 7 smd rect (at 0 0 270) (size 0.65 1.35) (layers Top F.Mask)
+ (net 10 "Net-(U1-Pad7)"))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:_0603MP" (layer Top) (tedit 0) (tstamp 63E759D2)
+ (at 146.2659 104.7522 270)
+ (descr "<b>0603 MicroPitch</b>")
+ (path /05CBC8DB)
+ (fp_text reference R1 (at -0.0635 1.7145 90) (layer F.SilkS)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_text value "1% 10K" (at -0.9525 0.9525 90) (layer F.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_poly (pts (xy -0.1999 0.25) (xy 0.1999 0.25) (xy 0.1999 -0.25) (xy -0.1999 -0.25)) (layer F.Adhes) (width 0))
+ (fp_poly (pts (xy -0.8 0.4) (xy -0.4318 0.4) (xy -0.4318 -0.4) (xy -0.8 -0.4)) (layer F.Fab) (width 0))
+ (fp_poly (pts (xy 0.4318 0.4) (xy 0.8 0.4) (xy 0.8 -0.4) (xy 0.4318 -0.4)) (layer F.Fab) (width 0))
+ (fp_line (start 0 -0.254) (end 0 0.254) (layer F.SilkS) (width 0.2032))
+ (fp_line (start 0.432 -0.306) (end -0.432 -0.306) (layer F.Fab) (width 0.1016))
+ (fp_line (start -0.432 0.306) (end 0.432 0.306) (layer F.Fab) (width 0.1016))
+ (pad 2 smd rect (at 0.762 0 270) (size 0.8 0.8) (layers Top F.Paste F.Mask)
+ (net 3 /A0_TEMP_ENABLE) (solder_mask_margin 0.0635))
+ (pad 1 smd rect (at -0.762 0 270) (size 0.8 0.8) (layers Top F.Paste F.Mask)
+ (net 7 /A2_TEMP_SENSE) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:_0603MP" (layer Top) (tedit 0) (tstamp 63E759F3)
+ (at 146.2659 102.1868 270)
+ (descr "<b>0603 MicroPitch</b>")
+ (path /6C7771A6)
+ (fp_text reference RT1 (at -0.127 1.778 90) (layer F.SilkS)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_text value "NTC 10K" (at -1.27 1.4923 90) (layer F.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_poly (pts (xy -0.1999 0.25) (xy 0.1999 0.25) (xy 0.1999 -0.25) (xy -0.1999 -0.25)) (layer F.Adhes) (width 0))
+ (fp_poly (pts (xy -0.8 0.4) (xy -0.4318 0.4) (xy -0.4318 -0.4) (xy -0.8 -0.4)) (layer F.Fab) (width 0))
+ (fp_poly (pts (xy 0.4318 0.4) (xy 0.8 0.4) (xy 0.8 -0.4) (xy 0.4318 -0.4)) (layer F.Fab) (width 0))
+ (fp_line (start 0 -0.254) (end 0 0.254) (layer F.SilkS) (width 0.2032))
+ (fp_line (start 0.432 -0.306) (end -0.432 -0.306) (layer F.Fab) (width 0.1016))
+ (fp_line (start -0.432 0.306) (end 0.432 0.306) (layer F.Fab) (width 0.1016))
+ (pad 2 smd rect (at 0.762 0 270) (size 0.8 0.8) (layers Top F.Paste F.Mask)
+ (net 7 /A2_TEMP_SENSE) (solder_mask_margin 0.0635))
+ (pad 1 smd rect (at -0.762 0 270) (size 0.8 0.8) (layers Top F.Paste F.Mask)
+ (net 2 VCC) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D22B)
+ (at 146.1135 102.8472 180)
+ (descr "<b>TEST PAD</b>")
+ (path /8E097FD0)
+ (fp_text reference GND1 (at -1.778 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 1 GND) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D232)
+ (at 144.0815 101.2216 180)
+ (descr "<b>TEST PAD</b>")
+ (path /E65641C5)
+ (fp_text reference A4 (at 1.524 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 9 /A4_SERCOM3.2_TC3.0) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D239)
+ (at 146.1135 101.2216 180)
+ (descr "<b>TEST PAD</b>")
+ (path /D0DD1D8E)
+ (fp_text reference VCC1 (at -1.778 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 2 VCC) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D240)
+ (at 146.1135 104.4728 180)
+ (descr "<b>TEST PAD</b>")
+ (path /252148C1)
+ (fp_text reference SCL1 (at -1.778 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 4 /SCL) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D247)
+ (at 144.0815 104.4728 180)
+ (descr "<b>TEST PAD</b>")
+ (path /943CED1C)
+ (fp_text reference SDA1 (at 1.778 -0.0127) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 5 /SDA) (solder_mask_margin 0.0635))
+ )
+
+ (module "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" (layer Bottom) (tedit 0) (tstamp 63E6D24E)
+ (at 144.0815 102.8472 180)
+ (descr "<b>TEST PAD</b>")
+ (path /E1B0505C)
+ (fp_text reference A1 (at 1.524 0) (layer B.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify right bottom mirror))
+ )
+ (fp_text value TPB1,27 (at -0.635 -0.762) (layer B.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify right bottom mirror))
+ )
+ (fp_line (start 0 0.635) (end 0 -0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 -1.905 180) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify right bottom))
+ )
+ (pad TP smd roundrect (at 0 0 180) (size 1.27 1.27) (layers Bottom B.Mask) (roundrect_rratio 0.5)
+ (net 6 /A1_SERCOM3.3_TC3.1) (solder_mask_margin 0.0635))
+ )
+
+ (gr_arc (start 150.4823 106.5556) (end 150.7363 106.5556) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 803D32C0))
+ (gr_line (start 150.4823 106.3016) (end 145.7325 106.3016) (layer Edge.Cuts) (width 0.05) (tstamp 803D3820))
+ (gr_line (start 145.0975 105.6666) (end 142.1765 105.6666) (layer Edge.Cuts) (width 0.05) (tstamp 803D3C70))
+ (gr_arc (start 142.1765 104.7776) (end 142.1765 105.6666) (angle 90) (layer Edge.Cuts) (width 0.05) (tstamp 63E7417A))
+ (gr_line (start 141.2875 104.7776) (end 141.2875 100.8406) (layer Edge.Cuts) (width 0.05) (tstamp 63E75941))
+ (gr_arc (start 142.1765 100.8406) (end 141.2875 100.8406) (angle 90) (layer Edge.Cuts) (width 0.05) (tstamp 63E74180))
+ (gr_line (start 142.1765 99.9516) (end 155.3337 99.9516) (layer Edge.Cuts) (width 0.05) (tstamp 7FB9B000))
+ (gr_arc (start 155.3337 100.3326) (end 155.3337 99.9516) (angle 90) (layer Edge.Cuts) (width 0.05) (tstamp 7FB9B410))
+ (gr_line (start 155.7147 100.3326) (end 155.7147 106.5556) (layer Edge.Cuts) (width 0.05) (tstamp 7FB9B950))
+ (gr_arc (start 145.0975 106.3016) (end 145.7325 106.3016) (angle -90) (layer Edge.Cuts) (width 0.05) (tstamp 7FB9BE00))
+ (gr_text "OPT3001 I2C\nSensor Board" (at 151.4475 100.2056) (layer F.SilkS) (tstamp 7FC58850)
+ (effects (font (size 0.57912 0.57912) (thickness 0.109728)) (justify top))
+ )
+ (gr_line (start 155.7147 105.2856) (end 147.5105 105.2856) (layer F.SilkS) (width 0.127) (tstamp 7FC58F50))
+ (gr_line (start 147.0025 100.7136) (end 147.0025 104.7776) (layer F.SilkS) (width 0.127) (tstamp 7FA4B140))
+ (gr_arc (start 147.5105 104.7776) (end 147.0025 104.7776) (angle -90) (layer F.SilkS) (width 0.127) (tstamp 7FA4B6B0))
+ (gr_arc (start 146.2405 100.7136) (end 147.0025 100.7136) (angle -90) (layer F.SilkS) (width 0.127) (tstamp 7FA4BCC0))
+ (gr_text "A0: Thermistor !EN\nA2: Temp. Sense\nA1/A4/SDA/SCL:\nTest Points" (at 151.4475 102.1106) (layer F.SilkS) (tstamp 7FA08AA0)
+ (effects (font (size 0.4826 0.4826) (thickness 0.06096)) (justify top))
+ )
+ (gr_text "Digital IO\nAnalog input\nPWM on TC3\nUART RX/TX\nInterrupt 1/0\nA4 ONLY: Ext. wake 0" (at 155.5115 101.2216) (layer B.SilkS) (tstamp 7FA09230)
+ (effects (font (size 0.4826 0.4826) (thickness 0.06096)) (justify left top mirror))
+ )
+ (gr_text "A1/A4 Uses" (at 155.5115 100.2056) (layer B.SilkS) (tstamp 7F9A10A0)
+ (effects (font (size 0.57912 0.57912) (thickness 0.109728)) (justify left top mirror))
+ )
+ (gr_text "" (at 142.9385 104.1172) (layer F.SilkS) (tstamp 7F9A17A0)
+ (effects (font (size 0.57912 0.57912) (thickness 0.073152)) (justify left))
+ )
+ (gr_text "" (at 142.9385 101.5518) (layer F.SilkS) (tstamp 7F9A1E50)
+ (effects (font (size 0.57912 0.57912) (thickness 0.073152)) (justify left))
+ )
+ (dimension 3 (width 0.12) (layer F.SilkS)
+ (gr_text "3.000 mm" (at 160.9575 108.5016 90) (layer F.SilkS)
+ (effects (font (size 1 1) (thickness 0.15)))
+ )
+ (feature1 (pts (xy 156.0875 107.0016) (xy 160.273921 107.0016)))
+ (feature2 (pts (xy 156.0875 110.0016) (xy 160.273921 110.0016)))
+ (crossbar (pts (xy 159.6875 110.0016) (xy 159.6875 107.0016)))
+ (arrow1a (pts (xy 159.6875 107.0016) (xy 160.273921 108.128104)))
+ (arrow1b (pts (xy 159.6875 107.0016) (xy 159.101079 108.128104)))
+ (arrow2a (pts (xy 159.6875 110.0016) (xy 160.273921 108.875096)))
+ (arrow2b (pts (xy 159.6875 110.0016) (xy 159.101079 108.875096)))
+ )
+ (gr_text "Stiffener only\nin this area" (at 159.5755 108.5876) (layer F.SilkS) (tstamp 7F95BC90)
+ (effects (font (size 0.57912 0.57912) (thickness 0.109728)))
+ )
+
+ (segment (start 148.082 100.457) (end 148.137 100.457) (width 0.25) (layer Bottom) (net 0))
+ (segment (start 142.098 101.5) (end 142.748 101.5) (width 0.25) (layer Top) (net 1))
+ (via (at 142.494 100.529) (size 0.8) (drill 0.4) (layers Top Bottom) (net 1))
+ (segment (start 142.748 100.783) (end 142.494 100.529) (width 0.25) (layer Top) (net 1))
+ (segment (start 142.748 101.5) (end 142.748 100.783) (width 0.25) (layer Top) (net 1))
+ (segment (start 142.494 100.529) (end 142.76899 100.25401) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 145.201089 100.256533) (end 145.201089 101.934789) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 142.76899 100.25401) (end 145.198566 100.25401) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 145.198566 100.25401) (end 145.201089 100.256533) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 145.201089 101.934789) (end 146.1135 102.8472) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 147.022102 101.938598) (end 146.1135 102.8472) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 154.7255 104.319944) (end 152.344154 101.938598) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 152.344154 101.938598) (end 147.022102 101.938598) (width 0.25) (layer Bottom) (net 1))
+ (segment (start 154.7255 108.8056) (end 154.7255 104.319944) (width 0.25) (layer Bottom) (net 1))
+ (via (at 146.939 101.219) (size 0.8) (drill 0.4) (layers Top Bottom) (net 2) (status 1000000))
+ (segment (start 152.129838 100.901187) (end 147.822498 100.901187) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 146.7332 101.4248) (end 146.939 101.219) (width 0.25) (layer Top) (net 2))
+ (segment (start 146.3929 101.4248) (end 146.7332 101.4248) (width 0.25) (layer Top) (net 2))
+ (segment (start 146.142049 101.675651) (end 146.3929 101.4248) (width 0.25) (layer Top) (net 2))
+ (segment (start 143.573651 101.675651) (end 146.142049 101.675651) (width 0.25) (layer Top) (net 2))
+ (segment (start 146.1161 101.219) (end 146.1135 101.2216) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 147.822498 100.901187) (end 147.504685 101.219) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 155.2255 103.996849) (end 152.129838 100.901187) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 143.398 101.5) (end 143.573651 101.675651) (width 0.25) (layer Top) (net 2))
+ (segment (start 146.939 101.219) (end 146.1161 101.219) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 155.2255 108.8056) (end 155.2255 103.996849) (width 0.25) (layer Bottom) (net 2))
+ (segment (start 147.504685 101.219) (end 146.939 101.219) (width 0.25) (layer Bottom) (net 2))
+ (via (at 147.828 105.664) (size 0.8) (drill 0.4) (layers Top Bottom) (net 3))
+ (segment (start 147.6782 105.5142) (end 147.828 105.664) (width 0.25) (layer Top) (net 3))
+ (segment (start 146.3929 105.5142) (end 147.6782 105.5142) (width 0.25) (layer Top) (net 3))
+ (segment (start 151.2255 106.512573) (end 151.2255 108.8056) (width 0.25) (layer Bottom) (net 3))
+ (segment (start 150.712117 105.99919) (end 151.2255 106.512573) (width 0.25) (layer Bottom) (net 3))
+ (segment (start 148.16319 105.99919) (end 150.712117 105.99919) (width 0.25) (layer Bottom) (net 3))
+ (segment (start 147.828 105.664) (end 148.16319 105.99919) (width 0.25) (layer Bottom) (net 3))
+ (segment (start 142.37541 105.26741) (end 145.075078 105.26741) (width 0.25) (layer Top) (net 4))
+ (via (at 145.243931 105.098557) (size 0.8) (drill 0.4) (layers Top Bottom) (net 4))
+ (segment (start 142.098 104.99) (end 142.37541 105.26741) (width 0.25) (layer Top) (net 4))
+ (segment (start 142.098 104.24) (end 142.098 104.99) (width 0.25) (layer Top) (net 4))
+ (segment (start 145.075078 105.26741) (end 145.243931 105.098557) (width 0.25) (layer Top) (net 4))
+ (segment (start 145.487743 105.098557) (end 146.1135 104.4728) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 145.243931 105.098557) (end 145.487743 105.098557) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 150.674396 105.392376) (end 151.7255 106.44348) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 150.421816 105.392376) (end 150.674396 105.392376) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 146.1135 104.4728) (end 149.50224 104.4728) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 151.7255 106.44348) (end 151.7255 108.8056) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 149.50224 104.4728) (end 150.421816 105.392376) (width 0.25) (layer Bottom) (net 4))
+ (segment (start 144.0815 104.4728) (end 144.4472 104.4728) (width 0.25) (layer Bottom) (net 5))
+ (segment (start 144.4472 104.4728) (end 145.034 103.886) (width 0.25) (layer Bottom) (net 5))
+ (via (at 145.034 103.886) (size 0.8) (drill 0.4) (layers Top Bottom) (net 5))
+ (segment (start 145.034 103.886) (end 145.007 103.913) (width 0.25) (layer Top) (net 5))
+ (segment (start 145.007 103.913) (end 145.007 104.24) (width 0.25) (layer Top) (net 5))
+ (segment (start 143.398 104.24) (end 145.007 104.24) (width 0.25) (layer Top) (net 5))
+ (segment (start 145.007 104.24) (end 145.381654 104.24) (width 0.25) (layer Top) (net 5))
+ (segment (start 152.2255 108.8056) (end 152.2255 106.193504) (width 0.25) (layer Bottom) (net 5))
+ (segment (start 145.381654 104.24) (end 145.856628 104.714974) (width 0.25) (layer Top) (net 5))
+ (segment (start 145.856628 104.714974) (end 150.74697 104.714974) (width 0.25) (layer Top) (net 5))
+ (via (at 150.74697 104.714974) (size 0.8) (drill 0.4) (layers Top Bottom) (net 5))
+ (segment (start 152.2255 106.193504) (end 150.74697 104.714974) (width 0.25) (layer Bottom) (net 5))
+ (segment (start 144.0815 102.8472) (end 144.803349 102.8472) (width 0.25) (layer Bottom) (net 6))
+ (via (at 144.899309 102.94316) (size 0.8) (drill 0.4) (layers Top Bottom) (net 6))
+ (segment (start 144.803349 102.8472) (end 144.899309 102.94316) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 144.899309 102.94316) (end 145.57107 102.271399) (width 0.25) (layer Top) (net 6))
+ (via (at 148.336 103.52461) (size 0.8) (drill 0.4) (layers Top Bottom) (net 6))
+ (segment (start 147.082789 102.271399) (end 148.336 103.52461) (width 0.25) (layer Top) (net 6))
+ (segment (start 145.57107 102.271399) (end 147.082789 102.271399) (width 0.25) (layer Top) (net 6))
+ (segment (start 152.7255 106.045058) (end 151.490164 104.809722) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 151.490164 104.35972) (end 150.655054 103.52461) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 152.7255 108.8056) (end 152.7255 106.045058) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 151.490164 104.809722) (end 151.490164 104.35972) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 150.655054 103.52461) (end 148.336 103.52461) (width 0.25) (layer Bottom) (net 6))
+ (segment (start 146.2659 103.9902) (end 146.2659 102.9488) (width 0.254) (layer Top) (net 7) (tstamp 63E759C5))
+ (segment (start 153.2255 105.415504) (end 152.231065 104.421069) (width 0.25) (layer Bottom) (net 7))
+ (segment (start 148.842094 104.02107) (end 151.831066 104.02107) (width 0.25) (layer Top) (net 7))
+ (via (at 152.231065 104.421069) (size 0.8) (drill 0.4) (layers Top Bottom) (net 7))
+ (segment (start 148.661153 104.202011) (end 148.842094 104.02107) (width 0.25) (layer Top) (net 7))
+ (segment (start 146.3929 103.9902) (end 146.604711 104.202011) (width 0.25) (layer Top) (net 7))
+ (segment (start 146.604711 104.202011) (end 148.661153 104.202011) (width 0.25) (layer Top) (net 7))
+ (segment (start 151.831066 104.02107) (end 152.231065 104.421069) (width 0.25) (layer Top) (net 7))
+ (segment (start 153.2255 108.8056) (end 153.2255 105.415504) (width 0.25) (layer Bottom) (net 7))
+ (segment (start 144.0815 101.2216) (end 144.283947 101.2216) (width 0.25) (layer Bottom) (net 9))
+ (via (at 144.523679 100.981868) (size 0.8) (drill 0.4) (layers Top Bottom) (net 9))
+ (segment (start 144.283947 101.2216) (end 144.523679 100.981868) (width 0.25) (layer Bottom) (net 9))
+ (segment (start 144.523679 100.981868) (end 145.175547 100.33) (width 0.25) (layer Top) (net 9))
+ (via (at 152.019 102.616) (size 0.8) (drill 0.4) (layers Top Bottom) (net 9))
+ (segment (start 154.2255 104.8225) (end 152.019 102.616) (width 0.25) (layer Bottom) (net 9))
+ (segment (start 154.2255 108.8056) (end 154.2255 104.8225) (width 0.25) (layer Bottom) (net 9))
+ (segment (start 149.733 100.33) (end 147.574 100.33) (width 0.25) (layer Top) (net 9))
+ (segment (start 152.019 102.616) (end 149.733 100.33) (width 0.25) (layer Top) (net 9))
+ (segment (start 147.574 100.33) (end 147.955 100.33) (width 0.25) (layer Top) (net 9))
+ (segment (start 145.175547 100.33) (end 147.574 100.33) (width 0.25) (layer Top) (net 9))
+
+)
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/B1,27.kicad_mod b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/B1,27.kicad_mod
new file mode 100644
index 00000000..448fc3c1
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/B1,27.kicad_mod
@@ -0,0 +1,16 @@
+(module B1,27 (layer F.Cu) (tedit 0)
+ (descr "<b>TEST PAD</b>")
+ (fp_text reference A1 (at 1.524 0 -180) (layer F.SilkS)
+ (effects (font (size 0.7239 0.7239) (thickness 0.130302)) (justify left bottom))
+ )
+ (fp_text value TPB1,27 (at -0.635 0.762 -180) (layer F.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_line (start -0.635 0) (end 0.635 0) (layer Dwgs.User) (width 0.0024))
+ (fp_line (start 0 -0.635) (end 0 0.635) (layer Dwgs.User) (width 0.0024))
+ (fp_text user >TP_SIGNAL_NAME (at -0.635 1.905) (layer Dwgs.User)
+ (effects (font (size 0.95 0.95) (thickness 0.08)) (justify left bottom))
+ )
+ (pad TP smd roundrect (at 0 0) (size 1.27 1.27) (layers F.Cu F.Mask) (roundrect_rratio 0.5)
+ (solder_mask_margin 0.0635))
+)
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/FH19C9S05SH10-FFC.kicad_mod b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/FH19C9S05SH10-FFC.kicad_mod
new file mode 100644
index 00000000..61ebf5f7
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/FH19C9S05SH10-FFC.kicad_mod
@@ -0,0 +1,33 @@
+(module FH19C9S05SH10-FFC (layer F.Cu) (tedit 0)
+ (descr "<b>FH19C-9S-0.5SH(10)-1</b><br>\n")
+ (fp_text reference U$3 (at 0 0) (layer F.SilkS) hide
+ (effects (font (size 1.27 1.27) (thickness 0.15)))
+ )
+ (fp_text value FH19C-9S-0.5SH_10-FFC (at 0 0) (layer F.SilkS) hide
+ (effects (font (size 1.27 1.27) (thickness 0.15)))
+ )
+ (fp_line (start -2.4892 0) (end -2.4892 3.35) (layer Edge.Cuts) (width 0.05))
+ (fp_line (start -2.3392 3.5) (end 2.3392 3.5) (layer Edge.Cuts) (width 0.05))
+ (fp_line (start 2.4892 0) (end 2.4892 3.35) (layer Edge.Cuts) (width 0.05))
+ (fp_arc (start -2.3392 3.35) (end -2.3392 3.5) (angle 90) (layer Edge.Cuts) (width 0.05))
+ (fp_arc (start 2.3392 3.35) (end 2.3392 3.5) (angle -90) (layer Edge.Cuts) (width 0.05))
+ (fp_poly (pts (xy -2.4902 0.9742) (xy 2.4882 0.9742) (xy 2.4892 3.4798) (xy -2.4892 3.4798)) (layer B.Mask) (width 0))
+ (pad 1 smd rect (at 2 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 2 smd rect (at 1.5 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 3 smd rect (at 1 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 4 smd rect (at 0.5 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 5 smd rect (at 0 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 6 smd rect (at -0.5 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 7 smd rect (at -1 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 8 smd rect (at -1.5 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 9 smd rect (at -2 2.25 90) (size 2.5 0.347) (layers B.Cu B.Mask)
+ (solder_mask_margin 0.0635))
+)
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/_0603MP.kicad_mod b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/_0603MP.kicad_mod
new file mode 100644
index 00000000..b242ec47
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty/_0603MP.kicad_mod
@@ -0,0 +1,19 @@
+(module _0603MP (layer F.Cu) (tedit 0)
+ (descr "<b>0603 MicroPitch</b>")
+ (fp_text reference R1 (at -0.0635 1.7145 -180) (layer F.SilkS)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_text value "1% 10K" (at -0.9525 0.9525 -180) (layer F.Fab)
+ (effects (font (size 0.77216 0.77216) (thickness 0.138988)) (justify left bottom))
+ )
+ (fp_line (start -0.432 0.306) (end 0.432 0.306) (layer F.Fab) (width 0.1016))
+ (fp_line (start 0.432 -0.306) (end -0.432 -0.306) (layer F.Fab) (width 0.1016))
+ (fp_line (start 0 -0.254) (end 0 0.254) (layer F.SilkS) (width 0.2032))
+ (fp_poly (pts (xy 0.4318 0.4) (xy 0.8 0.4) (xy 0.8 -0.4) (xy 0.4318 -0.4)) (layer F.Fab) (width 0))
+ (fp_poly (pts (xy -0.8 0.4) (xy -0.4318 0.4) (xy -0.4318 -0.4) (xy -0.8 -0.4)) (layer F.Fab) (width 0))
+ (fp_poly (pts (xy -0.1999 0.25) (xy 0.1999 0.25) (xy 0.1999 -0.25) (xy -0.1999 -0.25)) (layer F.Adhes) (width 0))
+ (pad 1 smd rect (at -0.762 0) (size 0.8 0.8) (layers F.Cu F.Paste F.Mask)
+ (solder_mask_margin 0.0635))
+ (pad 2 smd rect (at 0.762 0) (size 0.8 0.8) (layers F.Cu F.Paste F.Mask)
+ (solder_mask_margin 0.0635))
+)
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.sch b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.sch
new file mode 100644
index 00000000..7f0a6a3d
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.sch
@@ -0,0 +1,279 @@
+EESchema Schematic File Version 4
+EELAYER 30 0
+EELAYER END
+$Descr User 11980 8268
+encoding utf-8
+Sheet 1 1
+Title ""
+Date ""
+Rev ""
+Comp ""
+Comment1 ""
+Comment2 ""
+Comment3 ""
+Comment4 ""
+$EndDescr
+Wire Wire Line
+ 3300 3100 2200 3100
+Text Label 2300 3100 0 70 ~ 0
+SCL
+Wire Wire Line
+ 3300 3000 2200 3000
+Text Label 2300 3000 0 70 ~ 0
+SDA
+Wire Wire Line
+ 4200 2500 2200 2500
+Wire Wire Line
+ 4200 2500 4200 2600
+Wire Wire Line
+ 4300 2500 4200 2500
+Text Label 2300 2500 0 70 ~ 0
+GND
+Connection ~ 4200 2500
+Wire Wire Line
+ 2200 3200 3300 3200
+Text Label 2300 3200 0 70 ~ 0
+A0_TEMP_ENABLE
+Wire Wire Line
+ 4800 3200 5900 3200
+Text Label 4900 3200 0 70 ~ 0
+A0_TEMP_ENABLE
+Wire Wire Line
+ 3300 2600 2200 2600
+Text Label 2300 2600 0 70 ~ 0
+A4_SERCOM3.2_TC3.0
+Wire Wire Line
+ 3300 2700 2200 2700
+Text Label 2300 2700 0 70 ~ 0
+NC
+Wire Wire Line
+ 3300 2800 2200 2800
+Text Label 2300 2800 0 70 ~ 0
+A2_TEMP_SENSE
+Wire Wire Line
+ 5900 2800 4800 2800
+Connection ~ 5900 2800
+Text Label 4900 2800 0 70 ~ 0
+A2_TEMP_SENSE
+Wire Wire Line
+ 4300 2400 4200 2400
+Wire Wire Line
+ 4200 2400 2200 2400
+Wire Wire Line
+ 4200 2300 4200 2400
+Text Label 2300 2400 0 70 ~ 0
+VCC
+Connection ~ 4200 2400
+Wire Wire Line
+ 3300 2900 2200 2900
+Text Label 2300 2900 0 70 ~ 0
+A1_SERCOM3.3_TC3.1
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:A4L-LOC #FRAME1
+U 1 1 73DA64CA
+P 900 6200
+F 0 "#FRAME1" H 900 6200 50 0001 C CNN
+F 1 "A4L-LOC" H 900 6200 50 0001 C CNN
+F 2 "" H 900 6200 50 0001 C CNN
+F 3 "" H 900 6200 50 0001 C CNN
+ 1 900 6200
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:FH19C-9S-0.5SH_10-FFC U$3
+U 1 1 54307519
+P 1700 2800
+F 0 "U$3" H 2050 3500 59 0000 L CNN
+F 1 "FH19C-9S-0.5SH_10-FFC" H 2050 3400 59 0000 L CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:FH19C9S05SH10-FFC" H 1700 2800 50 0001 C CNN
+F 3 "" H 1700 2800 50 0001 C CNN
+ 1 1700 2800
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:RESISTOR_0603MP RT1
+U 1 1 6C7771A6
+P 5900 2600
+F 0 "RT1" H 5900 2700 50 0000 C CNN
+F 1 "NTC 10K" H 5900 2500 40 0000 C CNB
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:_0603MP" H 5900 2600 50 0001 C CNN
+F 3 "" H 5900 2600 50 0001 C CNN
+ 1 5900 2600
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:RESISTOR_0603MP R1
+U 1 1 05CBC8DB
+P 5900 3000
+F 0 "R1" H 5900 3100 50 0000 C CNN
+F 1 "1% 10K" H 5900 2900 40 0000 C CNB
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:_0603MP" H 5900 3000 50 0001 C CNN
+F 3 "" H 5900 3000 50 0001 C CNN
+ 1 5900 3000
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:GND #GND01
+U 1 1 DB8695AC
+P 4200 2700
+F 0 "#GND01" H 4200 2700 50 0001 C CNN
+F 1 "GND" H 4100 2600 59 0000 L BNN
+F 2 "" H 4200 2700 50 0001 C CNN
+F 3 "" H 4200 2700 50 0001 C CNN
+ 1 4200 2700
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:VCC #P+01
+U 1 1 BCDF72C5
+P 4200 2200
+F 0 "#P+01" H 4200 2200 50 0001 C CNN
+F 1 "VCC" V 4100 2200 59 0000 L BNN
+F 2 "" H 4200 2200 50 0001 C CNN
+F 3 "" H 4200 2200 50 0001 C CNN
+ 1 4200 2200
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:VCC #P+02
+U 1 1 339DE9D3
+P 5900 2300
+F 0 "#P+02" H 5900 2300 50 0001 C CNN
+F 1 "VCC" V 5800 2200 59 0000 L BNN
+F 2 "" H 5900 2300 50 0001 C CNN
+F 3 "" H 5900 2300 50 0001 C CNN
+ 1 5900 2300
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 GND1
+U 1 1 8E097FD0
+P 4400 2500
+F 0 "GND1" V 4450 2550 59 0000 L BNN
+F 1 "TPB1,27" H 4400 2500 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 4400 2500 50 0001 C CNN
+F 3 "" H 4400 2500 50 0001 C CNN
+ 1 4400 2500
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 A4
+U 1 1 E65641C5
+P 3400 2600
+F 0 "A4" V 3450 2650 59 0000 L BNN
+F 1 "TPB1,27" H 3400 2600 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 3400 2600 50 0001 C CNN
+F 3 "" H 3400 2600 50 0001 C CNN
+ 1 3400 2600
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 VCC1
+U 1 1 D0DD1D8E
+P 4400 2400
+F 0 "VCC1" V 4350 2450 59 0000 L BNN
+F 1 "TPB1,27" H 4400 2400 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 4400 2400 50 0001 C CNN
+F 3 "" H 4400 2400 50 0001 C CNN
+ 1 4400 2400
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 SCL1
+U 1 1 252148C1
+P 3400 3100
+F 0 "SCL1" V 3450 3150 59 0000 L BNN
+F 1 "TPB1,27" H 3400 3100 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 3400 3100 50 0001 C CNN
+F 3 "" H 3400 3100 50 0001 C CNN
+ 1 3400 3100
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 SDA1
+U 1 1 943CED1C
+P 3400 3000
+F 0 "SDA1" V 3450 3050 59 0000 L BNN
+F 1 "TPB1,27" H 3400 3000 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 3400 3000 50 0001 C CNN
+F 3 "" H 3400 3000 50 0001 C CNN
+ 1 3400 3000
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 A1
+U 1 1 E1B0505C
+P 3400 2900
+F 0 "A1" V 3450 2950 59 0000 L BNN
+F 1 "TPB1,27" H 3400 2900 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 3400 2900 50 0001 C CNN
+F 3 "" H 3400 2900 50 0001 C CNN
+ 1 3400 2900
+ 0 1 1 0
+$EndComp
+$Comp
+L OPT3001DNPT:OPT3001DNPT U1
+U 1 1 63E70E51
+P 7050 3100
+F 0 "U1" H 7050 3767 50 0000 C CNN
+F 1 "OPT3001DNPT" H 7050 3676 50 0000 C CNN
+F 2 "SON65P200X200X65-7N" H 7050 3100 50 0001 L BNN
+F 3 "" H 7050 3100 50 0001 L BNN
+F 4 "" H 7050 3100 50 0001 L BNN "EMAX"
+F 5 "" H 7050 3100 50 0001 L BNN "BALL_COLUMNS"
+F 6 "" H 7050 3100 50 0001 L BNN "BODY_DIAMETER"
+F 7 "0.65" H 7050 3100 50 0001 L BNN "ENOM"
+F 8 "" H 7050 3100 50 0001 L BNN "D1_MIN"
+F 9 "1.9" H 7050 3100 50 0001 L BNN "E_MIN"
+F 10 "0.25" H 7050 3100 50 0001 L BNN "L_MIN"
+F 11 "2.0" H 7050 3100 50 0001 L BNN "E_NOM"
+F 12 "0.65" H 7050 3100 50 0001 L BNN "A_MAX"
+F 13 "0.65" H 7050 3100 50 0001 L BNN "E2_NOM"
+F 14 "IPC 7351B" H 7050 3100 50 0001 L BNN "STANDARD"
+F 15 "01/2018" H 7050 3100 50 0001 L BNN "PARTREV"
+F 16 "0.25" H 7050 3100 50 0001 L BNN "B_NOM"
+F 17 "" H 7050 3100 50 0001 L BNN "THERMAL_PAD"
+F 18 "0.3" H 7050 3100 50 0001 L BNN "B_MAX"
+F 19 "0.2" H 7050 3100 50 0001 L BNN "B_MIN"
+F 20 "" H 7050 3100 50 0001 L BNN "IPC"
+F 21 "" H 7050 3100 50 0001 L BNN "DNOM"
+F 22 "6.0" H 7050 3100 50 0001 L BNN "PIN_COUNT"
+F 23 "2.1" H 7050 3100 50 0001 L BNN "E_MAX"
+F 24 "" H 7050 3100 50 0001 L BNN "JEDEC"
+F 25 "" H 7050 3100 50 0001 L BNN "BALL_ROWS"
+F 26 "" H 7050 3100 50 0001 L BNN "L1_MIN"
+F 27 "" H 7050 3100 50 0001 L BNN "L1_NOM"
+F 28 "" H 7050 3100 50 0001 L BNN "DMAX"
+F 29 "" H 7050 3100 50 0001 L BNN "PIN_COLUMNS"
+F 30 "" H 7050 3100 50 0001 L BNN "VACANCIES"
+F 31 "" H 7050 3100 50 0001 L BNN "SNAPEDA_PACKAGE_ID"
+F 32 "" H 7050 3100 50 0001 L BNN "DMIN"
+F 33 "" H 7050 3100 50 0001 L BNN "L1_MAX"
+F 34 "0.35" H 7050 3100 50 0001 L BNN "L_MAX"
+F 35 "" H 7050 3100 50 0001 L BNN "D1_NOM"
+F 36 "Texas Instruments" H 7050 3100 50 0001 L BNN "MANUFACTURER"
+F 37 "1.35" H 7050 3100 50 0001 L BNN "D2_NOM"
+F 38 "" H 7050 3100 50 0001 L BNN "PACKAGE_TYPE"
+F 39 "" H 7050 3100 50 0001 L BNN "D1_MAX"
+F 40 "0.3" H 7050 3100 50 0001 L BNN "L_NOM"
+F 41 "2.1" H 7050 3100 50 0001 L BNN "D_MAX"
+F 42 "2.0" H 7050 3100 50 0001 L BNN "D_NOM"
+F 43 "" H 7050 3100 50 0001 L BNN "PINS"
+F 44 "1.9" H 7050 3100 50 0001 L BNN "D_MIN"
+F 45 "" H 7050 3100 50 0001 L BNN "EMIN"
+ 1 7050 3100
+ 1 0 0 -1
+$EndComp
+NoConn ~ 7650 3200
+NoConn ~ 7650 2900
+Text Label 7650 2700 0 50 ~ 0
+VCC
+Text Label 7650 3400 0 50 ~ 0
+GND
+Text Label 6450 2900 2 50 ~ 0
+GND
+Text Label 6450 3100 2 50 ~ 0
+SCL
+Text Label 6450 3200 2 50 ~ 0
+SDA
+$EndSCHEMATC
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.sch-bak b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.sch-bak
new file mode 100644
index 00000000..7f0a6a3d
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.sch-bak
@@ -0,0 +1,279 @@
+EESchema Schematic File Version 4
+EELAYER 30 0
+EELAYER END
+$Descr User 11980 8268
+encoding utf-8
+Sheet 1 1
+Title ""
+Date ""
+Rev ""
+Comp ""
+Comment1 ""
+Comment2 ""
+Comment3 ""
+Comment4 ""
+$EndDescr
+Wire Wire Line
+ 3300 3100 2200 3100
+Text Label 2300 3100 0 70 ~ 0
+SCL
+Wire Wire Line
+ 3300 3000 2200 3000
+Text Label 2300 3000 0 70 ~ 0
+SDA
+Wire Wire Line
+ 4200 2500 2200 2500
+Wire Wire Line
+ 4200 2500 4200 2600
+Wire Wire Line
+ 4300 2500 4200 2500
+Text Label 2300 2500 0 70 ~ 0
+GND
+Connection ~ 4200 2500
+Wire Wire Line
+ 2200 3200 3300 3200
+Text Label 2300 3200 0 70 ~ 0
+A0_TEMP_ENABLE
+Wire Wire Line
+ 4800 3200 5900 3200
+Text Label 4900 3200 0 70 ~ 0
+A0_TEMP_ENABLE
+Wire Wire Line
+ 3300 2600 2200 2600
+Text Label 2300 2600 0 70 ~ 0
+A4_SERCOM3.2_TC3.0
+Wire Wire Line
+ 3300 2700 2200 2700
+Text Label 2300 2700 0 70 ~ 0
+NC
+Wire Wire Line
+ 3300 2800 2200 2800
+Text Label 2300 2800 0 70 ~ 0
+A2_TEMP_SENSE
+Wire Wire Line
+ 5900 2800 4800 2800
+Connection ~ 5900 2800
+Text Label 4900 2800 0 70 ~ 0
+A2_TEMP_SENSE
+Wire Wire Line
+ 4300 2400 4200 2400
+Wire Wire Line
+ 4200 2400 2200 2400
+Wire Wire Line
+ 4200 2300 4200 2400
+Text Label 2300 2400 0 70 ~ 0
+VCC
+Connection ~ 4200 2400
+Wire Wire Line
+ 3300 2900 2200 2900
+Text Label 2300 2900 0 70 ~ 0
+A1_SERCOM3.3_TC3.1
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:A4L-LOC #FRAME1
+U 1 1 73DA64CA
+P 900 6200
+F 0 "#FRAME1" H 900 6200 50 0001 C CNN
+F 1 "A4L-LOC" H 900 6200 50 0001 C CNN
+F 2 "" H 900 6200 50 0001 C CNN
+F 3 "" H 900 6200 50 0001 C CNN
+ 1 900 6200
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:FH19C-9S-0.5SH_10-FFC U$3
+U 1 1 54307519
+P 1700 2800
+F 0 "U$3" H 2050 3500 59 0000 L CNN
+F 1 "FH19C-9S-0.5SH_10-FFC" H 2050 3400 59 0000 L CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:FH19C9S05SH10-FFC" H 1700 2800 50 0001 C CNN
+F 3 "" H 1700 2800 50 0001 C CNN
+ 1 1700 2800
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:RESISTOR_0603MP RT1
+U 1 1 6C7771A6
+P 5900 2600
+F 0 "RT1" H 5900 2700 50 0000 C CNN
+F 1 "NTC 10K" H 5900 2500 40 0000 C CNB
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:_0603MP" H 5900 2600 50 0001 C CNN
+F 3 "" H 5900 2600 50 0001 C CNN
+ 1 5900 2600
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:RESISTOR_0603MP R1
+U 1 1 05CBC8DB
+P 5900 3000
+F 0 "R1" H 5900 3100 50 0000 C CNN
+F 1 "1% 10K" H 5900 2900 40 0000 C CNB
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:_0603MP" H 5900 3000 50 0001 C CNN
+F 3 "" H 5900 3000 50 0001 C CNN
+ 1 5900 3000
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:GND #GND01
+U 1 1 DB8695AC
+P 4200 2700
+F 0 "#GND01" H 4200 2700 50 0001 C CNN
+F 1 "GND" H 4100 2600 59 0000 L BNN
+F 2 "" H 4200 2700 50 0001 C CNN
+F 3 "" H 4200 2700 50 0001 C CNN
+ 1 4200 2700
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:VCC #P+01
+U 1 1 BCDF72C5
+P 4200 2200
+F 0 "#P+01" H 4200 2200 50 0001 C CNN
+F 1 "VCC" V 4100 2200 59 0000 L BNN
+F 2 "" H 4200 2200 50 0001 C CNN
+F 3 "" H 4200 2200 50 0001 C CNN
+ 1 4200 2200
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:VCC #P+02
+U 1 1 339DE9D3
+P 5900 2300
+F 0 "#P+02" H 5900 2300 50 0001 C CNN
+F 1 "VCC" V 5800 2200 59 0000 L BNN
+F 2 "" H 5900 2300 50 0001 C CNN
+F 3 "" H 5900 2300 50 0001 C CNN
+ 1 5900 2300
+ 1 0 0 -1
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 GND1
+U 1 1 8E097FD0
+P 4400 2500
+F 0 "GND1" V 4450 2550 59 0000 L BNN
+F 1 "TPB1,27" H 4400 2500 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 4400 2500 50 0001 C CNN
+F 3 "" H 4400 2500 50 0001 C CNN
+ 1 4400 2500
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 A4
+U 1 1 E65641C5
+P 3400 2600
+F 0 "A4" V 3450 2650 59 0000 L BNN
+F 1 "TPB1,27" H 3400 2600 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 3400 2600 50 0001 C CNN
+F 3 "" H 3400 2600 50 0001 C CNN
+ 1 3400 2600
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 VCC1
+U 1 1 D0DD1D8E
+P 4400 2400
+F 0 "VCC1" V 4350 2450 59 0000 L BNN
+F 1 "TPB1,27" H 4400 2400 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 4400 2400 50 0001 C CNN
+F 3 "" H 4400 2400 50 0001 C CNN
+ 1 4400 2400
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 SCL1
+U 1 1 252148C1
+P 3400 3100
+F 0 "SCL1" V 3450 3150 59 0000 L BNN
+F 1 "TPB1,27" H 3400 3100 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 3400 3100 50 0001 C CNN
+F 3 "" H 3400 3100 50 0001 C CNN
+ 1 3400 3100
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 SDA1
+U 1 1 943CED1C
+P 3400 3000
+F 0 "SDA1" V 3450 3050 59 0000 L BNN
+F 1 "TPB1,27" H 3400 3000 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 3400 3000 50 0001 C CNN
+F 3 "" H 3400 3000 50 0001 C CNN
+ 1 3400 3000
+ 0 1 1 0
+$EndComp
+$Comp
+L Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import:TPB1,27 A1
+U 1 1 E1B0505C
+P 3400 2900
+F 0 "A1" V 3450 2950 59 0000 L BNN
+F 1 "TPB1,27" H 3400 2900 50 0001 C CNN
+F 2 "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001:B1,27" H 3400 2900 50 0001 C CNN
+F 3 "" H 3400 2900 50 0001 C CNN
+ 1 3400 2900
+ 0 1 1 0
+$EndComp
+$Comp
+L OPT3001DNPT:OPT3001DNPT U1
+U 1 1 63E70E51
+P 7050 3100
+F 0 "U1" H 7050 3767 50 0000 C CNN
+F 1 "OPT3001DNPT" H 7050 3676 50 0000 C CNN
+F 2 "SON65P200X200X65-7N" H 7050 3100 50 0001 L BNN
+F 3 "" H 7050 3100 50 0001 L BNN
+F 4 "" H 7050 3100 50 0001 L BNN "EMAX"
+F 5 "" H 7050 3100 50 0001 L BNN "BALL_COLUMNS"
+F 6 "" H 7050 3100 50 0001 L BNN "BODY_DIAMETER"
+F 7 "0.65" H 7050 3100 50 0001 L BNN "ENOM"
+F 8 "" H 7050 3100 50 0001 L BNN "D1_MIN"
+F 9 "1.9" H 7050 3100 50 0001 L BNN "E_MIN"
+F 10 "0.25" H 7050 3100 50 0001 L BNN "L_MIN"
+F 11 "2.0" H 7050 3100 50 0001 L BNN "E_NOM"
+F 12 "0.65" H 7050 3100 50 0001 L BNN "A_MAX"
+F 13 "0.65" H 7050 3100 50 0001 L BNN "E2_NOM"
+F 14 "IPC 7351B" H 7050 3100 50 0001 L BNN "STANDARD"
+F 15 "01/2018" H 7050 3100 50 0001 L BNN "PARTREV"
+F 16 "0.25" H 7050 3100 50 0001 L BNN "B_NOM"
+F 17 "" H 7050 3100 50 0001 L BNN "THERMAL_PAD"
+F 18 "0.3" H 7050 3100 50 0001 L BNN "B_MAX"
+F 19 "0.2" H 7050 3100 50 0001 L BNN "B_MIN"
+F 20 "" H 7050 3100 50 0001 L BNN "IPC"
+F 21 "" H 7050 3100 50 0001 L BNN "DNOM"
+F 22 "6.0" H 7050 3100 50 0001 L BNN "PIN_COUNT"
+F 23 "2.1" H 7050 3100 50 0001 L BNN "E_MAX"
+F 24 "" H 7050 3100 50 0001 L BNN "JEDEC"
+F 25 "" H 7050 3100 50 0001 L BNN "BALL_ROWS"
+F 26 "" H 7050 3100 50 0001 L BNN "L1_MIN"
+F 27 "" H 7050 3100 50 0001 L BNN "L1_NOM"
+F 28 "" H 7050 3100 50 0001 L BNN "DMAX"
+F 29 "" H 7050 3100 50 0001 L BNN "PIN_COLUMNS"
+F 30 "" H 7050 3100 50 0001 L BNN "VACANCIES"
+F 31 "" H 7050 3100 50 0001 L BNN "SNAPEDA_PACKAGE_ID"
+F 32 "" H 7050 3100 50 0001 L BNN "DMIN"
+F 33 "" H 7050 3100 50 0001 L BNN "L1_MAX"
+F 34 "0.35" H 7050 3100 50 0001 L BNN "L_MAX"
+F 35 "" H 7050 3100 50 0001 L BNN "D1_NOM"
+F 36 "Texas Instruments" H 7050 3100 50 0001 L BNN "MANUFACTURER"
+F 37 "1.35" H 7050 3100 50 0001 L BNN "D2_NOM"
+F 38 "" H 7050 3100 50 0001 L BNN "PACKAGE_TYPE"
+F 39 "" H 7050 3100 50 0001 L BNN "D1_MAX"
+F 40 "0.3" H 7050 3100 50 0001 L BNN "L_NOM"
+F 41 "2.1" H 7050 3100 50 0001 L BNN "D_MAX"
+F 42 "2.0" H 7050 3100 50 0001 L BNN "D_NOM"
+F 43 "" H 7050 3100 50 0001 L BNN "PINS"
+F 44 "1.9" H 7050 3100 50 0001 L BNN "D_MIN"
+F 45 "" H 7050 3100 50 0001 L BNN "EMIN"
+ 1 7050 3100
+ 1 0 0 -1
+$EndComp
+NoConn ~ 7650 3200
+NoConn ~ 7650 2900
+Text Label 7650 2700 0 50 ~ 0
+VCC
+Text Label 7650 3400 0 50 ~ 0
+GND
+Text Label 6450 2900 2 50 ~ 0
+GND
+Text Label 6450 3100 2 50 ~ 0
+SCL
+Text Label 6450 3200 2 50 ~ 0
+SDA
+$EndSCHEMATC
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.dcm b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.dcm
new file mode 100644
index 00000000..5f3ed79b
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.dcm
@@ -0,0 +1,3 @@
+EESchema-DOCLIB Version 2.0
+#
+#End Doc Library
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.lib b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.lib
new file mode 100644
index 00000000..b3b54896
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.lib
@@ -0,0 +1,990 @@
+EESchema-LIBRARY Version 2.4
+#encoding utf-8
+#
+# A4L-LOC
+#
+DEF A4L-LOC #FRAME 0 40 Y Y 1 L N
+F0 "#FRAME" 0 0 50 H I C CNN
+F1 "A4L-LOC" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 8550 600 85 0 1 0 >DRAWING_NAME Normal 0 L B
+T 0 8550 400 76 0 1 0 >LAST_DATE_TIME Normal 0 L B
+T 0 8995 200 85 0 1 0 >SHEET Normal 0 L B
+T 0 8550 800 85 0 1 0 "by joey castillo" Normal 0 L B
+T 0 9300 200 85 0 1 0 "cc-by-sa 4.0" Normal 0 L B
+T 0 7300 200 180 0 1 0 oddly_specific_objects Normal 0 L B
+T 0 8540 195 85 0 1 0 Sheet: Normal 0 L B
+P 2 1 0 0 7250 150 7250 950 N
+P 2 1 0 0 7250 950 8475 950 N
+P 2 1 0 0 8475 350 8475 150 N
+P 2 1 0 0 8475 350 8475 550 N
+P 2 1 0 0 8475 550 8475 750 N
+P 2 1 0 0 8475 550 10100 550 N
+P 2 1 0 0 8475 750 8475 950 N
+P 2 1 0 0 8475 750 10100 750 N
+P 2 1 0 0 8475 950 10100 950 N
+P 2 1 0 0 9250 150 9250 350 N
+P 2 1 0 0 9250 350 8475 350 N
+P 2 1 0 0 9250 350 10100 350 N
+P 2 1 0 0 10100 150 10100 350 N
+P 2 1 0 0 10100 350 10100 550 N
+P 2 1 0 0 10100 550 10100 750 N
+P 2 1 0 0 10100 750 10100 950 N
+ENDDRAW
+ENDDEF
+#
+# FH19C-9S-0.5SH_10-FFC
+#
+DEF FH19C-9S-0.5SH_10-FFC ~ 0 40 Y Y 1 L N
+F0 "" 350 700 59 H V L CNN
+F1 "FH19C-9S-0.5SH_10-FFC" 350 600 59 H V L CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -200 500 -200 -500 N
+P 2 1 0 0 -200 500 300 500 N
+P 2 1 0 0 300 -500 -200 -500 N
+P 2 1 0 0 300 -500 300 500 N
+X 1 1 500 400 200 L 50 50 1 0 B
+X 2 2 500 300 200 L 50 50 1 0 B
+X 3 3 500 200 200 L 50 50 1 0 B
+X 4 4 500 100 200 L 50 50 1 0 B
+X 5 5 500 0 200 L 50 50 1 0 B
+X 6 6 500 -100 200 L 50 50 1 0 B
+X 7 7 500 -200 200 L 50 50 1 0 B
+X 8 8 500 -300 200 L 50 50 1 0 B
+X 9 9 500 -400 200 L 50 50 1 0 B
+ENDDRAW
+ENDDEF
+#
+# GND
+#
+DEF GND #GND 0 40 Y Y 1 L P
+F0 "#GND" 0 0 50 H I C CNN
+F1 "GND" -100 -100 59 H V L BNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -75 0 75 0 N
+X GND 1 0 100 100 D 0 0 1 0 W
+ENDDRAW
+ENDDEF
+#
+# RESISTOR0603MINI
+#
+DEF RESISTOR0603MINI R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR0603MINI" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR0805_10MGAP
+#
+DEF RESISTOR0805_10MGAP R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR0805_10MGAP" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR0805_NOOUTLINE
+#
+DEF RESISTOR0805_NOOUTLINE R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR0805_NOOUTLINE" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR0805_NOTHERMALS
+#
+DEF RESISTOR0805_NOTHERMALS R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR0805_NOTHERMALS" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR2012
+#
+DEF RESISTOR2012 R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR2012" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR2512
+#
+DEF RESISTOR2512 R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR2512" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_0402
+#
+DEF RESISTOR_0402 R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_0402" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_0402MP
+#
+DEF RESISTOR_0402MP R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_0402MP" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_0603
+#
+DEF RESISTOR_0603 R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_0603" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_0603MP
+#
+DEF RESISTOR_0603MP R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_0603MP" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_0603_NOOUT
+#
+DEF RESISTOR_0603_NOOUT R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_0603_NOOUT" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_0805
+#
+DEF RESISTOR_0805 R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_0805" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_0805MP
+#
+DEF RESISTOR_0805MP R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_0805MP" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_1206
+#
+DEF RESISTOR_1206 R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_1206" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# RESISTOR_1206MP
+#
+DEF RESISTOR_1206MP R 0 40 Y Y 1 L N
+F0 "R" 0 100 50 H V C CNN
+F1 "RESISTOR_1206MP" 0 0 40 H V C CNB
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 -100 -50 -100 50 N
+P 2 1 0 0 -100 50 100 50 N
+P 2 1 0 0 100 -50 -100 -50 N
+P 2 1 0 0 100 50 100 -50 N
+X 1 1 -200 0 100 R 0 0 1 0 P
+X 2 2 200 0 100 L 0 0 1 0 P
+ENDDRAW
+ENDDEF
+#
+# TPB1,27
+#
+DEF TPB1,27 TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPB1,27" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPB2,54
+#
+DEF TPB2,54 TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPB2,54" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPPAD1-13
+#
+DEF TPPAD1-13 TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPPAD1-13" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPPAD1-13Y
+#
+DEF TPPAD1-13Y TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPPAD1-13Y" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPPAD1-17
+#
+DEF TPPAD1-17 TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPPAD1-17" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPPAD1-17Y
+#
+DEF TPPAD1-17Y TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPPAD1-17Y" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPPAD1-20
+#
+DEF TPPAD1-20 TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPPAD1-20" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPPAD1-20Y
+#
+DEF TPPAD1-20Y TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPPAD1-20Y" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP06R
+#
+DEF TPTP06R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP06R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP06SQ
+#
+DEF TPTP06SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP06SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP07R
+#
+DEF TPTP07R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP07R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP07SQ
+#
+DEF TPTP07SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP07SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP08R
+#
+DEF TPTP08R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP08R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP08SQ
+#
+DEF TPTP08SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP08SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP09R
+#
+DEF TPTP09R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP09R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP09SQ
+#
+DEF TPTP09SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP09SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP10R
+#
+DEF TPTP10R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP10R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP10SQ
+#
+DEF TPTP10SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP10SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP11R
+#
+DEF TPTP11R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP11R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP11SQ
+#
+DEF TPTP11SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP11SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP12R
+#
+DEF TPTP12R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP12R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP12SQ
+#
+DEF TPTP12SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP12SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP13R
+#
+DEF TPTP13R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP13R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP13SQ
+#
+DEF TPTP13SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP13SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP14R
+#
+DEF TPTP14R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP14R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP14SQ
+#
+DEF TPTP14SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP14SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP15R
+#
+DEF TPTP15R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP15R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP15SQ
+#
+DEF TPTP15SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP15SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP16R
+#
+DEF TPTP16R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP16R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP16SQ
+#
+DEF TPTP16SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP16SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP17R
+#
+DEF TPTP17R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP17R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP17SQ
+#
+DEF TPTP17SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP17SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP18R
+#
+DEF TPTP18R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP18R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP18SQ
+#
+DEF TPTP18SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP18SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP19R
+#
+DEF TPTP19R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP19R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP19SQ
+#
+DEF TPTP19SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP19SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP20R
+#
+DEF TPTP20R TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP20R" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# TPTP20SQ
+#
+DEF TPTP20SQ TP 0 40 Y Y 1 L N
+F0 "TP" -50 50 59 H V L BNN
+F1 "TPTP20SQ" 0 0 50 H I C CNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+T 0 50 -50 59 0 1 0 >TP_SIGNAL_NAME Normal 0 L B
+P 2 1 0 0 -30 -30 0 0 N
+P 2 1 0 0 0 -60 -30 -30 N
+P 2 1 0 0 0 0 30 -30 N
+P 2 1 0 0 30 -30 0 -60 N
+X TP TP 0 -100 100 U 0 0 1 0 I
+ENDDRAW
+ENDDEF
+#
+# VCC
+#
+DEF VCC #P+ 0 40 Y Y 1 L P
+F0 "#P+" 0 0 50 H I C CNN
+F1 "VCC" -100 -100 59 V V L BNN
+F2 "" 0 0 50 H I C CNN
+F3 "" 0 0 50 H I C CNN
+DRAW
+P 2 1 0 0 0 0 -50 -75 N
+P 2 1 0 0 50 -75 0 0 N
+X VCC 1 0 -100 100 U 0 0 1 0 W
+ENDDRAW
+ENDDEF
+#
+#End Library
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/empty.kicad_wks b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/empty.kicad_wks
new file mode 100644
index 00000000..f50032b1
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/empty.kicad_wks
@@ -0,0 +1,5 @@
+(page_layout
+(setup (textsize 1.5 1.5)(linewidth 0.15)(textlinewidth 0.15)
+(left_margin 10)(right_margin 10)(top_margin 10)(bottom_margin 10))
+(line (name segm1:Line) (start 0 0) (end 0 0))
+)
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/fp-info-cache b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/fp-info-cache
new file mode 100644
index 00000000..573541ac
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/fp-info-cache
@@ -0,0 +1 @@
+0
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/fp-lib-table b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/fp-lib-table
new file mode 100644
index 00000000..9ebe18e1
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/fp-lib-table
@@ -0,0 +1,4 @@
+(fp_lib_table
+ (lib (name "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001")(type KiCad)(uri "$(KIPRJMOD)/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001.pretty")(options "")(descr ""))
+ (lib (name OPT3001DNPT)(type KiCad)(uri ${KIPRJMOD}/OPT3001DNPT)(options "")(descr ""))
+)
diff --git a/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/sym-lib-table b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/sym-lib-table
new file mode 100644
index 00000000..8b9d2689
--- /dev/null
+++ b/PCB/Sensor Boards/Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001/sym-lib-table
@@ -0,0 +1,4 @@
+(sym_lib_table
+ (lib (name Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import)(type Legacy)(uri ${KIPRJMOD}/Q3Q-SWAB-A1-00_Temperature_+_Test_Points_+_OPT3001-eagle-import.lib)(options "")(descr ""))
+ (lib (name OPT3001DNPT)(type Legacy)(uri ${KIPRJMOD}/OPT3001DNPT/OPT3001DNPT.lib)(options "")(descr ""))
+)
diff --git a/make.mk b/make.mk
index 737e1f51..35af3422 100644
--- a/make.mk
+++ b/make.mk
@@ -150,6 +150,7 @@ SRCS += \
$(TOP)/watch-library/hardware/hpl/systick/hpl_systick.c \
$(TOP)/watch-library/shared/driver/thermistor_driver.c \
$(TOP)/watch-library/shared/driver/lis2dw.c \
+ $(TOP)/watch-library/shared/driver/opt3001.c \
$(TOP)/watch-library/shared/driver/spiflash.c \
$(TOP)/watch-library/shared/watch/watch_private_buzzer.c \
$(TOP)/watch-library/shared/watch/watch_private_display.c \
@@ -195,6 +196,7 @@ SRCS += \
$(TOP)/watch-library/simulator/watch/watch_private.c \
$(TOP)/watch-library/simulator/watch/watch.c \
$(TOP)/watch-library/shared/driver/thermistor_driver.c \
+ $(TOP)/watch-library/shared/driver/opt3001.c \
$(TOP)/watch-library/shared/watch/watch_private_buzzer.c \
$(TOP)/watch-library/shared/watch/watch_private_display.c \
$(TOP)/watch-library/shared/watch/watch_utility.c \
diff --git a/movement/make/Makefile b/movement/make/Makefile
index d403045d..4614cd27 100644
--- a/movement/make/Makefile
+++ b/movement/make/Makefile
@@ -101,6 +101,7 @@ SRCS += \
../watch_faces/complication/activity_face.c \
../watch_faces/demo/chirpy_demo_face.c \
../watch_faces/complication/ships_bell_face.c \
+ ../watch_faces/sensor/lightmeter_face.c \
../watch_faces/complication/discgolf_face.c \
../watch_faces/complication/habit_face.c \
../watch_faces/complication/breathing_face.c \
diff --git a/movement/movement_config.h b/movement/movement_config.h
index 9e446d4d..3f6a0dc1 100644
--- a/movement/movement_config.h
+++ b/movement/movement_config.h
@@ -29,6 +29,8 @@
const watch_face_t watch_faces[] = {
simple_clock_face,
+ lightmeter_face,
+ thermistor_readout_face,
world_clock_face,
sunrise_sunset_face,
moon_phase_face,
diff --git a/movement/movement_faces.h b/movement/movement_faces.h
index b8584756..afa8f14a 100644
--- a/movement/movement_faces.h
+++ b/movement/movement_faces.h
@@ -76,6 +76,7 @@
#include "activity_face.h"
#include "chirpy_demo_face.h"
#include "ships_bell_face.h"
+#include "lightmeter_face.h"
#include "discgolf_face.h"
#include "habit_face.h"
#include "breathing_face.h"
diff --git a/movement/watch_faces/sensor/lightmeter_face.c b/movement/watch_faces/sensor/lightmeter_face.c
new file mode 100644
index 00000000..861e28d8
--- /dev/null
+++ b/movement/watch_faces/sensor/lightmeter_face.c
@@ -0,0 +1,206 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2022 CC
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+/* Aperture-priority Light Meter Face
+ *
+ * Tested with the "Q3Q-SWAB-A1-00 Temperature + Test Points + OPT3001" flexboard.
+ * This flexboard could use a revision:
+ *
+ * - The thermistor components should be moved west a mm or flipped to the backside
+ * to avoid stressing the flexboard against the processor so much.
+ * - The 'no connect' pad falls off easily.
+ *
+ * Controls:
+ *
+ * - Trigger a measurement by long-pressing Alarm.
+ * Sensor integration is happening when the Signal indicator is on.
+ *
+ * - ISO setting can be cycled by long-pressing Light.
+ * During integration the current ISO setting will be displayed.
+ *
+ * - EV measurement in the top right: "LAP" indicates "half stop".
+ * So "LAP -1" means EV = -1.5. Likewise "LAP 13" means EV = +13.5
+ *
+ * - Aperture in the bottom right: the last 3 main digits are the f-stop.
+ * Adjust this number in half-stop increments using Alarm = +1/2 and Light = -1/2.
+ *
+ * - Best shutter speed in the bottom left: the first 3 digits are the shutter speed.
+ * Some special chars are needed here: "-" = seconds, "h" = extra half second, "K" = thousands.
+ * "HI" or "LO" if there's no shutter in the dictionary within 0.5 stops of correct exposure.
+ *
+ * - Mode long-press changes the main digits to show raw sensor lux measurements.
+ *
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "lightmeter_face.h"
+#include "watch_utility.h"
+#include "watch_slcd.h"
+
+uint16_t lightmeter_mod(uint16_t m, uint16_t n) { return (m%n + n)%n; }
+
+void lightmeter_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr) {
+ (void) settings;
+ (void) watch_face_index;
+ if (*context_ptr == NULL) {
+ *context_ptr = malloc(sizeof(lightmeter_state_t));
+ lightmeter_state_t *state = (lightmeter_state_t*) *context_ptr;
+ state->waiting_for_conversion = 0;
+ state->lux = 0.0;
+ state->mode = 0;
+ state->iso = LIGHTMETER_ISO_100;
+ state->ap = LIGHTMETER_AP_4P0;
+ }
+}
+
+void lightmeter_face_activate(movement_settings_t *settings, void *context) {
+ (void) settings;
+ lightmeter_state_t *state = (lightmeter_state_t*) context;
+ state->waiting_for_conversion = 0;
+ lightmeter_show_ev(state); // Print most current reading
+ watch_enable_i2c();
+ return;
+}
+
+void lightmeter_show_ev(lightmeter_state_t *state) {
+
+ float ev = max(min(
+ log2(state->lux) +
+ lightmeter_isos[state->iso].ev +
+ LIGHTMETER_CALIBRATION,
+ 99), -9);
+ int evt = round(2*ev); // Truncated EV
+
+ // Print EV
+ char strbuff[7];
+ watch_clear_all_indicators();
+ watch_display_string("EV ", 0);
+
+ sprintf(strbuff, "%2i", (uint16_t) abs(evt/2)); // Print whole part of EV
+ watch_display_string(strbuff, 2);
+ if(evt%2) watch_set_indicator(WATCH_INDICATOR_LAP); // Indicate half stop
+ if(ev<0) watch_set_pixel(1,9); // Indicate negative EV
+
+ // Handle lux mode
+ if(state->mode == 1) {
+ sprintf(strbuff, "%6.0f", min(state->lux, 999999.0));
+ watch_display_string(strbuff, 4);
+ return;
+ }
+
+ // Find and print best shutter speed
+ uint16_t bestsh = 0;
+ float besterr = 1.0/0.0;
+ float errbuf = 1.0/0.0;
+ float comp_ev = ev + lightmeter_aps[state->ap].ev;
+ for(uint16_t ind = 2; ind < LIGHTMETER_N_SHS; ind++) {
+ errbuf = comp_ev + lightmeter_shs[ind].ev;
+ if( fabs(errbuf) < fabs(besterr)) {
+ besterr = errbuf;
+ bestsh = ind;
+ }
+ }
+ if(besterr >= 0.5) watch_display_string(lightmeter_shs[LIGHTMETER_SH_HIGH].str, 4);
+ else if(besterr <= -0.5) watch_display_string(lightmeter_shs[LIGHTMETER_SH_LOW].str, 4);
+ else watch_display_string(lightmeter_shs[bestsh].str, 4);
+
+ // Print aperture
+ watch_display_string(lightmeter_aps[state->ap].str, 7);
+ return;
+}
+
+bool lightmeter_face_loop(movement_event_t event, movement_settings_t *settings, void *context) {
+ (void) settings;
+ lightmeter_state_t *state = (lightmeter_state_t*) context;
+
+ opt3001_Config_t c;
+ switch (event.event_type) {
+ case EVENT_TICK:
+ if(state->waiting_for_conversion) { // Check if measurement is ready...
+ c = opt3001_readConfig(lightmeter_addr);
+ if(c.ConversionReady) {
+ state->waiting_for_conversion = 0;
+ opt3001_t result = opt3001_readResult(lightmeter_addr);
+ state->lux = result.lux;
+ lightmeter_show_ev(state);
+ }
+ }
+ break;
+
+ case EVENT_ALARM_BUTTON_UP: // Increment aperture
+ state->ap = lightmeter_mod(state->ap+1, LIGHTMETER_N_APS);
+
+ lightmeter_show_ev(state);
+ break;
+
+ case EVENT_LIGHT_BUTTON_UP: // Decrement aperture
+ if(state->ap == 0) state->ap = LIGHTMETER_N_APS-1;
+ else state->ap = lightmeter_mod(state->ap-1, LIGHTMETER_N_APS);
+
+ lightmeter_show_ev(state);
+ break;
+
+ case EVENT_LIGHT_LONG_PRESS: // Cycle ISO
+ state->iso = lightmeter_mod(state->iso+1, LIGHTMETER_N_ISOS);
+
+ watch_clear_all_indicators();
+ watch_display_string("EV ", 0);
+ watch_display_string(lightmeter_isos[state->iso].str, 4);
+ break;
+
+ case EVENT_ALARM_LONG_PRESS: // Take measurement
+ opt3001_writeConfig(lightmeter_addr, lightmeter_takeNewReading);
+ state->waiting_for_conversion = 1;
+
+ watch_clear_all_indicators();
+ watch_display_string("EV ", 0);
+ watch_display_string(lightmeter_isos[state->iso].str, 4);
+ watch_set_indicator(WATCH_INDICATOR_SIGNAL);
+ break;
+
+ case EVENT_MODE_LONG_PRESS: // Toggle mode
+ state->mode = !state->mode;
+ lightmeter_show_ev(state);
+ break;
+
+ case EVENT_TIMEOUT:
+ movement_move_to_face(0);
+ break;
+
+ default:
+ movement_default_loop_handler(event, settings);
+ break;
+ }
+ return true;
+}
+
+void lightmeter_face_resign(movement_settings_t *settings, void *context) {
+ (void) settings;
+ (void) context;
+ opt3001_writeConfig(lightmeter_addr, lightmeter_off);
+ watch_disable_i2c();
+ return;
+}
diff --git a/movement/watch_faces/sensor/lightmeter_face.h b/movement/watch_faces/sensor/lightmeter_face.h
new file mode 100644
index 00000000..2f8813f4
--- /dev/null
+++ b/movement/watch_faces/sensor/lightmeter_face.h
@@ -0,0 +1,160 @@
+/*
+ * MIT License
+ *
+ * Copyright (c) 2023 CC
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ */
+
+#ifndef LIGHTMETER_FACE_H_
+#define LIGHTMETER_FACE_H_
+
+#include "movement.h"
+#include "opt3001.h"
+
+#define LIGHTMETER_CALIBRATION 2.58
+typedef struct {
+ char * str;
+ float ev;
+} lightmeter_ev_t;
+
+static const lightmeter_ev_t lightmeter_isos[] = {
+ {" i 25", -2},
+ {" i 50", -1},
+ {" i 100", 0},
+ {" i 160", 0.68},
+ {" i 200", 1},
+ {" i 400", 2},
+ {" i 800", 3},
+ {" i1600", 4}};
+typedef enum {
+ LIGHTMETER_ISO_25, LIGHTMETER_ISO_50, LIGHTMETER_ISO_100, LIGHTMETER_ISO_160, LIGHTMETER_ISO_200, LIGHTMETER_ISO_400, LIGHTMETER_ISO_800, LIGHTMETER_ISO_1600,
+ LIGHTMETER_N_ISOS
+} lightmeter_iso_t;
+
+static const lightmeter_ev_t lightmeter_aps[] = {
+ {"1.4", 0},
+ {"1.8", -0.5},
+ {"2.0", -1},
+ {"2.4", -1.5},
+ {"2.8", -2},
+ {"3.3", -2.5},
+ {"4.0", -3},
+ {"4.8", -3.5},
+ {"5.6", -4},
+ {"6.7", -4.5},
+ {"8.0", -5},
+ {"9.5", -5.5},
+ {"11.", -6},
+ {"13.", -6.5},
+ {"16.", -7},
+ {"19.", -7.5},
+ {"22.", -8}};
+typedef enum {
+ LIGHTMETER_AP_1P4, LIGHTMETER_AP_1P8, LIGHTMETER_AP_2P0, LIGHTMETER_AP_2P4, LIGHTMETER_AP_2P8, LIGHTMETER_AP_3P3, LIGHTMETER_AP_4P0, LIGHTMETER_AP_4P8, LIGHTMETER_AP_5P6, LIGHTMETER_AP_6P7, LIGHTMETER_AP_8P0, LIGHTMETER_AP_9P5,
+ LIGHTMETER_AP_11, LIGHTMETER_AP_13, LIGHTMETER_AP_16, LIGHTMETER_AP_19, LIGHTMETER_AP_22,
+ LIGHTMETER_N_APS
+} lightmeter_ap_t;
+
+static const lightmeter_ev_t lightmeter_shs[] = {
+ {"LO-", 99},
+ {"HI ", -99},
+ {"30-", 5.0},
+ {"20-", 4.5},
+ {"15-", 4.0},
+ {"11-", 3.5},
+ {"8- ", 3.0},
+ {"6- ", 2.5},
+ {"4- ", 2.0},
+ {"3- ", 1.5},
+ {"2- ", 1.0},
+ {"1h-", 0.5},
+ {"1 ", 0.0},
+ {"1h ", -0.5},
+ {"2 ", -1.0},
+ {"3 ", -1.5},
+ {"4 ", -2.0},
+ {"6 ", -2.5},
+ {"8 ", -3.0},
+ {"12 ", -3.5},
+ {"15 ", -4.0},
+ {"20 ", -4.5},
+ {"30 ", -5.0},
+ {"45 ", -5.5},
+ {"60 ", -6.0},
+ {"90 ", -6.5},
+ {"125", -7.0},
+ {"180", -7.5},
+ {"250", -8.0},
+ {"350", -8.5},
+ {"500", -9.0},
+ {"750", -9.5},
+ {"1K ", -10.0},
+ {"1K5", -10.5},
+ {"2K ", -11.0},
+ {"3K ", -11.5},
+ {"4K ", -12.0},
+ {"6K ", -12.5},
+ {"8K ", -13.0}};
+typedef enum {
+ LIGHTMETER_SH_LOW, LIGHTMETER_SH_HIGH,
+ LIGHTMETER_SH_30S, LIGHTMETER_SH_20S, LIGHTMETER_SH_15S, LIGHTMETER_SH_11S, LIGHTMETER_SH_8S, LIGHTMETER_SH_6S, LIGHTMETER_SH_3S, LIGHTMETER_SH_4S, LIGHTMETER_SH_2S, LIGHTMETER_SH_1HS,
+ LIGHTMETER_SH_1, LIGHTMETER_SH_1H, LIGHTMETER_SH_2, LIGHTMETER_SH_3, LIGHTMETER_SH_4, LIGHTMETER_SH_6, LIGHTMETER_SH_8, LIGHTMETER_SH_12, LIGHTMETER_SH_15, LIGHTMETER_SH_20, LIGHTMETER_SH_30, LIGHTMETER_SH_45, LIGHTMETER_SH_60, LIGHTMETER_SH_90, LIGHTMETER_SH_125, LIGHTMETER_SH_180, LIGHTMETER_SH_250, LIGHTMETER_SH_350, LIGHTMETER_SH_500, LIGHTMETER_SH_750,
+ LIGHTMETER_SH_1K, LIGHTMETER_SH_1K5, LIGHTMETER_SH_2K, LIGHTMETER_SH_3K, LIGHTMETER_SH_4K, LIGHTMETER_SH_6K, LIGHTMETER_SH_8K,
+ LIGHTMETER_N_SHS
+} lightmeter_sh_t;
+
+typedef struct {
+ lightmeter_iso_t iso;
+ lightmeter_ap_t ap;
+ bool waiting_for_conversion;
+ float lux;
+ int mode;
+} lightmeter_state_t;
+
+static const opt3001_Config_t lightmeter_takeNewReading = {
+ .RangeNumber = 0B1100,
+ .ConversionTime = 0B1,
+ .Latch = 0B1,
+ .ModeOfConversionOperation = 0B01
+};
+
+static const opt3001_Config_t lightmeter_off = {
+ .ModeOfConversionOperation = 0B00
+};
+
+uint16_t lightmeter_mod(uint16_t m, uint16_t n);
+
+void lightmeter_face_setup(movement_settings_t *settings, uint8_t watch_face_index, void ** context_ptr);
+void lightmeter_face_activate(movement_settings_t *settings, void *context);
+void lightmeter_show_ev(lightmeter_state_t *state);
+bool lightmeter_face_loop(movement_event_t event, movement_settings_t *settings, void *context);
+void lightmeter_face_resign(movement_settings_t *settings, void *context);
+
+static const uint8_t lightmeter_addr = 0x44;
+
+#define lightmeter_face ((const watch_face_t){ \
+ lightmeter_face_setup, \
+ lightmeter_face_activate, \
+ lightmeter_face_loop, \
+ lightmeter_face_resign, \
+ NULL, \
+})
+
+#endif // LIGHTMETER_FACE_H_
diff --git a/watch-library/shared/driver/opt3001.c b/watch-library/shared/driver/opt3001.c
new file mode 100644
index 00000000..d2f4e8ce
--- /dev/null
+++ b/watch-library/shared/driver/opt3001.c
@@ -0,0 +1,91 @@
+/*
+
+Arduino library for Texas Instruments opt3001_t Digital Ambient Light Sensor
+Written by AA for ClosedCube
+Adapted to Sensor-Watch interface by CC
+---
+
+The MIT License (MIT)
+
+Copyright (c) 2015 ClosedCube Limited
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+*/
+#include <math.h>
+
+#include "opt3001.h"
+#include "watch_utility.h"
+
+uint16_t opt3001_readManufacturerID(uint8_t devaddr) {
+ uint8_t buf[2];
+ buf[0] = (uint8_t) OPT3001_MANUFACTURER_ID;
+ watch_i2c_send(devaddr, buf, 1);
+ watch_i2c_receive(devaddr, buf, 2);
+ return ((uint16_t) buf[0] << 8) | ((uint16_t) buf[1]);
+}
+
+uint16_t opt3001_readDeviceID(uint8_t devaddr) {
+ uint8_t buf[2];
+ buf[0] = (uint8_t) OPT3001_DEVICE_ID;
+ watch_i2c_send(devaddr, buf, 1);
+ watch_i2c_receive(devaddr, buf, 2);
+ return ((uint16_t) buf[0] << 8) | ((uint16_t) buf[1]);
+}
+
+opt3001_Config_t opt3001_readConfig(uint8_t devaddr) {
+ opt3001_Config_t config;
+ uint8_t buf[2];
+ buf[0] = (uint8_t) OPT3001_CONFIG;
+ watch_i2c_send(devaddr, buf, 1);
+ watch_i2c_receive(devaddr, buf, 2);
+ config.rawData = ((uint16_t) buf[0] << 8) | ((uint16_t) buf[1]);
+ return config;
+}
+
+void opt3001_writeConfig(uint8_t devaddr, opt3001_Config_t config) {
+ uint8_t buf[3] = {OPT3001_CONFIG, (uint8_t)(config.rawData >> 8), (uint8_t)(config.rawData & 0x00FF)};
+ watch_i2c_send(devaddr, buf, 3);
+ return;
+}
+
+opt3001_t opt3001_readResult(uint8_t devaddr) {
+ return opt3001_readRegister(devaddr, OPT3001_RESULT);
+}
+
+opt3001_t opt3001_readHighLimit(uint8_t devaddr) {
+ return opt3001_readRegister(devaddr, OPT3001_HIGH_LIMIT);
+}
+
+opt3001_t opt3001_readLowLimit(uint8_t devaddr) {
+ return opt3001_readRegister(devaddr, OPT3001_LOW_LIMIT);
+}
+
+opt3001_t opt3001_readRegister(uint8_t devaddr, opt3001_Command_t command) {
+ opt3001_t result;
+ opt3001_ER_t er;
+ uint8_t buf[2];
+ buf[0] = (uint8_t) command;
+ watch_i2c_send(devaddr, buf, 1);
+ watch_i2c_receive(devaddr, buf, 2);
+ er.rawData = ((uint16_t) buf[0] << 8) | ((uint16_t) buf[1]);
+ result.raw = er;
+ result.lux = 0.01*pow(2, er.Exponent)*er.Result;
+ return result;
+}
diff --git a/watch-library/shared/driver/opt3001.h b/watch-library/shared/driver/opt3001.h
new file mode 100644
index 00000000..1ed8eea9
--- /dev/null
+++ b/watch-library/shared/driver/opt3001.h
@@ -0,0 +1,87 @@
+/*
+
+Arduino library for Texas Instruments OPT3001 Digital Ambient Light Sensor
+Adapted to Sensor-Watch interface by CC
+---
+
+The MIT License (MIT)
+
+Copyright (c) 2015 ClosedCube Limited
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
+*/
+
+#ifndef OPT3001_
+#define OPT3001_
+#include <stdint.h>
+
+typedef enum {
+ OPT3001_RESULT = 0x00,
+ OPT3001_CONFIG = 0x01,
+ OPT3001_LOW_LIMIT = 0x02,
+ OPT3001_HIGH_LIMIT = 0x03,
+
+ OPT3001_MANUFACTURER_ID = 0x7E,
+ OPT3001_DEVICE_ID = 0x7F,
+} opt3001_Command_t;
+
+typedef union {
+ uint16_t rawData;
+ struct {
+ uint16_t Result : 12;
+ uint8_t Exponent : 4;
+ };
+} opt3001_ER_t;
+
+
+typedef union {
+ struct {
+ uint8_t FaultCount : 2;
+ uint8_t MaskExponent : 1;
+ uint8_t Polarity : 1;
+ uint8_t Latch : 1;
+ uint8_t FlagLow : 1;
+ uint8_t FlagHigh : 1;
+ uint8_t ConversionReady : 1;
+ uint8_t OverflowFlag : 1;
+ uint8_t ModeOfConversionOperation : 2;
+ uint8_t ConversionTime : 1;
+ uint8_t RangeNumber : 4;
+ };
+ uint16_t rawData;
+} opt3001_Config_t;
+
+typedef struct {
+ float lux;
+ opt3001_ER_t raw;
+} opt3001_t;
+
+uint16_t opt3001_readManufacturerID(uint8_t devaddr);
+uint16_t opt3001_readDeviceID(uint8_t devaddr);
+
+opt3001_t opt3001_readResult(uint8_t devaddr);
+opt3001_t opt3001_readHighLimit(uint8_t devaddr);
+opt3001_t opt3001_readLowLimit(uint8_t devaddr);
+
+opt3001_Config_t opt3001_readConfig(uint8_t devaddr);
+void opt3001_writeConfig(uint8_t devaddr, opt3001_Config_t config);
+opt3001_t opt3001_readRegister(uint8_t devaddr, opt3001_Command_t command);
+
+#endif // OPT3001_