moving files

pull/100/head
Alan Johnston 5 years ago
parent 4574295029
commit a22966f6d3

@ -0,0 +1,213 @@
EESchema Schematic File Version 2
LIBS:74xgxx
LIBS:74xx
LIBS:ac-dc
LIBS:actel
LIBS:adc-dac
LIBS:Altera
LIBS:analog_devices
LIBS:analog_switches
LIBS:atmel
LIBS:audio
LIBS:brooktre
LIBS:cmos4000
LIBS:cmos_ieee
LIBS:conn
LIBS:contrib
LIBS:cypress
LIBS:dc-dc
LIBS:device
LIBS:digital-audio
LIBS:diode
LIBS:display
LIBS:dsp
LIBS:elec-unifil
LIBS:ESD_Protection
LIBS:ftdi
LIBS:gennum
LIBS:graphic
LIBS:hc11
LIBS:intel
LIBS:interface
LIBS:ir
LIBS:Lattice
LIBS:linear
LIBS:logo
LIBS:maxim
LIBS:memory
LIBS:microchip
LIBS:microchip_dspic33dsc
LIBS:microchip_pic10mcu
LIBS:microchip_pic12mcu
LIBS:microchip_pic16mcu
LIBS:microchip_pic18mcu
LIBS:microchip_pic32mcu
LIBS:microcontrollers
LIBS:motor_drivers
LIBS:motorola
LIBS:msp430
LIBS:nordicsemi
LIBS:nxp_armmcu
LIBS:onsemi
LIBS:opto
LIBS:Oscillators
LIBS:philips
LIBS:power
LIBS:powerint
LIBS:Power_Management
LIBS:pspice
LIBS:references
LIBS:regul
LIBS:relays
LIBS:rfcom
LIBS:sensors
LIBS:silabs
LIBS:siliconi
LIBS:stm8
LIBS:stm32
LIBS:supertex
LIBS:switches
LIBS:texas
LIBS:transf
LIBS:transistors
LIBS:ttl_ieee
LIBS:valves
LIBS:video
LIBS:Xicor
LIBS:xilinx
LIBS:Zilog
LIBS:pihat_template-cache
EELAYER 25 0
EELAYER END
$Descr A4 11693 8268
encoding utf-8
Sheet 2 2
Title ""
Date ""
Rev ""
Comp ""
Comment1 ""
Comment2 ""
Comment3 ""
Comment4 ""
$EndDescr
$Comp
L BSS138 Q1
U 1 1 54F14605
P 6000 3100
F 0 "Q1" H 6000 2951 40 0000 R CNN
F 1 "BSS138" H 6000 3250 40 0000 R CNN
F 2 "w_smd_trans:sot23" H 5870 3202 29 0000 C CNN
F 3 "" H 6000 3100 60 0000 C CNN
F 4 "621-DMG2305UX-13" H 6000 3100 60 0001 C CNN "Mouser Part No."
1 6000 3100
0 -1 -1 0
$EndComp
Text HLabel 5000 3000 0 47 Input ~ 0
5V_SUPPLY
Text HLabel 6900 3000 2 47 Input ~ 0
5V_MCU
$Comp
L DMMT5401 U5
U 1 1 54F1CFA3
P 6000 4000
F 0 "U5" H 5700 4150 47 0000 C CNN
F 1 "DMMT5401" H 6450 3800 47 0000 C CNN
F 2 "w_smd_trans:sot23-6" H 5850 3700 47 0001 C CNN
F 3 "" H 5850 3700 47 0000 C CNN
F 4 "621-DMMT5401-7-F" H 6000 4000 60 0001 C CNN "Mouser Part No."
1 6000 4000
1 0 0 -1
$EndComp
Wire Wire Line
6200 3000 6900 3000
Wire Wire Line
5000 3000 5800 3000
Wire Wire Line
5800 3700 5800 3500
Wire Wire Line
5800 3500 5650 3500
Wire Wire Line
5650 3500 5650 3000
Connection ~ 5650 3000
Wire Wire Line
6200 3700 6200 3500
Wire Wire Line
6200 3500 6350 3500
Wire Wire Line
6350 3500 6350 3000
Connection ~ 6350 3000
$Comp
L R R12
U 1 1 54F1D101
P 6200 4800
F 0 "R12" V 6280 4800 50 0000 C CNN
F 1 "47k" V 6207 4801 50 0000 C CNN
F 2 "w_smd_resistors:r_0402" V 6130 4800 30 0001 C CNN
F 3 "" H 6200 4800 30 0000 C CNN
F 4 "667-ERJ-2RKF4702X" V 6200 4800 60 0001 C CNN "Mouser Part No."
1 6200 4800
1 0 0 -1
$EndComp
$Comp
L R R11
U 1 1 54F1D193
P 5800 4800
F 0 "R11" V 5880 4800 50 0000 C CNN
F 1 "10k" V 5807 4801 50 0000 C CNN
F 2 "w_smd_resistors:r_0402" V 5730 4800 30 0001 C CNN
F 3 "" H 5800 4800 30 0000 C CNN
F 4 "71-CRCW0402-10K-E3" V 5800 4800 60 0001 C CNN "Mouser Part No."
1 5800 4800
1 0 0 -1
$EndComp
$Comp
L GND #PWR021
U 1 1 54F1D1B9
P 6200 5200
F 0 "#PWR021" H 6200 4950 60 0001 C CNN
F 1 "GND" H 6200 5050 60 0000 C CNN
F 2 "" H 6200 5200 60 0000 C CNN
F 3 "" H 6200 5200 60 0000 C CNN
1 6200 5200
1 0 0 -1
$EndComp
$Comp
L GND #PWR022
U 1 1 54F1D1D3
P 5800 5200
F 0 "#PWR022" H 5800 4950 60 0001 C CNN
F 1 "GND" H 5800 5050 60 0000 C CNN
F 2 "" H 5800 5200 60 0000 C CNN
F 3 "" H 5800 5200 60 0000 C CNN
1 5800 5200
1 0 0 -1
$EndComp
Wire Wire Line
5800 4350 5800 4650
Wire Wire Line
5800 4950 5800 5200
Wire Wire Line
6200 4350 6200 4650
Wire Wire Line
6200 4950 6200 5200
Wire Wire Line
5900 4350 5900 4450
Wire Wire Line
5800 4450 6100 4450
Connection ~ 5800 4450
Wire Wire Line
6100 4450 6100 4350
Connection ~ 5900 4450
Wire Wire Line
6050 3300 6050 3600
Wire Wire Line
6050 3600 6650 3600
Wire Wire Line
6650 3600 6650 4450
Wire Wire Line
6650 4450 6200 4450
Connection ~ 6200 4450
Text Notes 4800 2650 0 47 ~ 0
*Recomended back powering protection for raspberry pi. Recomended by\nRaspberyy Pi Foundation\nhttps://github.com/raspberrypi/hats/blob/master/designguide.md
$EndSCHEMATC

@ -0,0 +1,24 @@
BY ACCESSING OR USING THESE SYMBOLS & FOOTPRINTS ("MODELS"), YOU ARE ACKNOWLEDGING THAT YOU HAVE READ, FULLY UNDERSTAND AND AGREE TO THESE TERMS AND CONDITIONS (the "Agreement"), WHICH CONSTITUTE A BINDING AGREEMENT BETWEEN YOU AND SNAPEDA, INC., ENTERED INTO ON THE DATE OF SUCH OCCURRENCE (the "Effective Date"). IF YOU ARE ACCESSING OR USING THESE FILES ON BEHALF OF AN ENTITY, YOU REPRESENT THAT YOU HAVE THE RIGHT, AUTHORITY, AND CAPACITY TO BIND SUCH ENTITY TO THIS AGREEMENT AND HEREBY DO SO. IF YOU DO NOT AGREE WITH ANY OF THE TERMS OR CONDITIONS OF THIS AGREEMENT, YOU MUST NOT USE ANY PART OF THESE MODELS.
1. Design License
You and your sub-licensees are hereby licensed to design, manufacture, use and distribute, circuit board designs and circuit boards formed by combining Models provided by SnapEDA with other circuit elements of your choosing. You may then convey such combinations under licensing terms of your choice. 
Individual Models remain the intellectual property of SnapEDA, Inc. You shall not (and shall not permit or encourage any third party to) to do any of the following :
(a) sell, assign, lease, lend, rent, issue, sublicense, make available, or otherwise distribute to any third party, or publicly perform, display or communicate, the Models (for example, by uploading Models to another website or software application);
(b) remove, alter, or conceal, any copyright, trademark, or other proprietary rights notice or legend displayed or contained in the individual Models.
For further clarity, once integrated into a schematic design or PCB layout, Models may be modified freely for the purpose of designing a circuit board. 
2. Limitation of Liability
IN NO EVENT WILL SNAPEDA, CUI, OR OUR SUBSIDIARIES, AGENTS, SUCCESSORS, THIRD PARTY PROVIDERS, AND/OR ANY OF THE FOREGOING ENTITIES' RESPECTIVE DIRECTORS, OFFICERS, EMPLOYEES, AGENTS, REPRESENTATIVES, CUSTOMERS, SUPPLIERS, OR LICENSORS BE RESPONSIBLE OR LIABLE UNDER, OR OTHERWISE IN CONNECTION WITH THIS AGREEMENT, FOR:
(a) ANY CONSEQUENTIAL, INDIRECT, SPECIAL, INCIDENTAL, OR PUNITIVE DAMAGES;
(b) ANY LOSS OF PROFITS, LOSS OF BUSINESS, LOSS OF REVENUE, OR LOSS OF ANTICIPATED SAVINGS;
(c) ANY LOSS OF, OR DAMAGE TO, DATA, REPUTATION, OR GOODWILL; AND/OR
(d) THE COST OF PROCURING ANY SUBSTITUTE GOODS OR SERVICES.
THE COMBINED AGGREGATE LIABILITY OF SNAPEDA AND ALL SNAPEDA CONTENT AFFILIATES UNDER, OR OTHERWISE IN CONNECTION WITH, THIS AGREEMENT SHALL NOT EXCEED THE TOTAL AMOUNT OF FEES RECEIVED BY SNAPEDA FROM YOU IN THE PREVIOUS TWELVE (12) MONTHS. THE FOREGOING EXCLUSIONS AND LIMITATIONS SHALL APPLY: (a) EVEN IF SNAPEDA OR ANY SNAPEDA CONTENT AFFILIATE HAS BEEN ADVISED, OR SHOULD HAVE BEEN AWARE, OF THE POSSIBILITY OF LOSSES, DAMAGES, OR COSTS; (b) EVEN IF ANY REMEDY IN THIS AGREEMENT FAILS OF ITS ESSENTIAL PURPOSE; AND (c) REGARDLESS OF THE THEORY OR BASIS OF LIABILITY (INCLUDING WITHOUT LIMITATION BREACH OF CONTRACT, TORT, NEGLIGENCE, AND STRICT LIABILITY).

@ -0,0 +1,3 @@
EESchema-DOCLIB Version 2.0
#
#End Doc Library

@ -0,0 +1,20 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# BoostConverter
#
DEF BoostConverter U 0 40 Y Y 1 F N
F0 "U" 0 0 50 H V C CNN
F1 "BoostConverter" 0 0 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
S -100 400 150 150 0 1 0 N
X V_in 1 -200 350 100 R 50 50 1 1 I
X Vin_gnd 2 -200 200 100 R 50 50 1 1 I
X V_out 3 250 350 100 L 50 50 1 1 O
X Vout_gnd 4 250 200 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
#End Library

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Binary file not shown.

@ -0,0 +1,32 @@
EESchema-LIBRARY Version 2.3
#encoding utf-8
#(c) SnapEDA 2016 (snapeda.com)
#This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License (CC BY-SA) with Design Exception 1.0
#
# PJ-037AH
#
DEF PJ-037AH J 0 40 Y N 1 L N
F0 "J" -300 200 50 H V L BNN
F1 "PJ-037AH" -300 -200 50 H V L BNN
F2 "CUI_PJ-037AH" 0 0 50 H I L BNN
F3 "Manufacturer recommendations" 0 0 50 H I L BNN
F4 "CUI INC" 0 0 50 H I L BNN
DRAW
A -225 100 50 899 2700 0 0 6 N -225 50 -225 150
P 2 0 0 6 -225 150 -50 150 N
P 2 0 0 6 -50 150 -50 50 N
P 2 0 0 6 -50 50 -225 50 N
P 2 0 0 6 -50 50 -50 25 N
P 2 0 0 6 -50 25 0 25 N
P 2 0 0 6 0 25 0 175 N
P 2 0 0 6 0 175 -50 175 N
P 2 0 0 6 -50 175 -50 150 N
P 2 0 0 6 0 -100 -125 -100 N
P 2 0 0 6 -125 -100 -150 -50 N
P 2 0 0 6 -150 -50 -175 -100 N
X 1 1 200 100 200 L 40 40 0 0 P
X 2 2 200 -100 200 L 40 40 0 0 P
ENDDRAW
ENDDEF
#
# End Library

@ -0,0 +1,60 @@
PCBNEW-LibModule-V1
# encoding utf-8
Units mm
$INDEX
CUI_PJ-037AH
$EndINDEX
$MODULE CUI_PJ-037AH
Po 0 0 0 15 00000000 00000000 ~~
Li CUI_PJ-037AH
Cd
Sc 00000000
At STD
Op 0 0 0
.SolderMask 0
.SolderPaste 0
T0 1.85093 -6.76843 1.0005 1.0005 0 0.05 N V 21 "CUI_PJ-037AH"
T1 2.48639 5.77824 1.00056 1.00056 0 0.05 N V 21 "VAL**"
DS 0.5 1.75 -0.5 1.75 0.0001 28
DS -0.5 1.75 -0.5 -1.75 0.0001 28
DS -0.5 -1.75 0.5 -1.75 0.0001 28
DS 0.5 -1.75 0.5 1.75 0.0001 28
DS 6.5 1.5 5.5 1.5 0.0001 28
DS 5.5 1.5 5.5 -1.5 0.0001 28
DS 5.5 -1.5 6.5 -1.5 0.0001 28
DS 6.5 -1.5 6.5 1.5 0.0001 28
DS -0.8 -4.5 13.7 -4.5 0.127 27
DS 13.7 4.5 -0.8 4.5 0.127 27
DS -0.8 4.5 -0.8 -4.5 0.127 27
DS 13.7 -4.5 13.7 4.5 0.127 21
DS 13.7 4.5 -0.8 4.5 0.127 21
DS -0.8 4.5 -0.8 2.65 0.127 21
DS -0.8 -4.5 13.7 -4.5 0.127 21
DS -0.8 -2.55 -0.8 -4.5 0.127 21
DS -1.1 -4.75 13.95 -4.75 0.05 26
DS 13.95 -4.75 13.95 4.75 0.05 26
DS 13.95 4.75 -1.1 4.75 0.05 26
DS -1.1 4.75 -1.1 2.35 0.05 26
DC -2 0 -1.8 0 0.4 21
DS -1.1 -2.25 -1.1 -4.75 0.05 26
DS -1.1 -2.25 -1.55 -2.25 0.05 26
DS -1.55 -2.25 -1.55 2.35 0.05 26
DS -1.55 2.35 -1.1 2.35 0.05 26
DS 13.7 -4.5 13.7 4.5 0.127 27
$PAD
Sh "1" O 5 2.5 0 0 900
Dr 1 0 0
At STD N 00C0FFFF
.SolderMask 0
Ne 0 ""
Po 0 0
$EndPAD
$PAD
Sh "2" O 4.5 2.25 0 0 900
Dr 1 0 0
At STD N 00C0FFFF
.SolderMask 0
Ne 0 ""
Po 6 0
$EndPAD
$EndMODULE CUI_PJ-037AH

@ -0,0 +1,3 @@
Schematic for vB3 Solar Panel Board in KiCad
For the latest PCB hardware see https://github.com/alanbjohnston/CubeSatSim/tree/master/hardware/

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 KiB

@ -0,0 +1,389 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# 35RAPC4BH3_35RAPC4BH3
#
DEF 35RAPC4BH3_35RAPC4BH3 J 0 40 Y N 1 L N
F0 "J" -300 300 50 H V L BNN
F1 "35RAPC4BH3_35RAPC4BH3" -300 -400 50 H V L BNN
F2 "SWITCHCRAFT_35RAPC4BH3" 0 0 50 H I L BNN
F3 "None" 0 0 50 H I L BNN
F4 "35RAPC4BH3" 0 0 50 H I L BNN
F5 "3.5mm Threaded Right Angle Stereo Jack" 0 0 50 H I L BNN
F6 "https://www.digikey.com/product-detail/en/switchcraft-inc/35RAPC4BH3/SC1464-ND/1288781?utm_source=snapeda&utm_medium=aggregator&utm_campaign=symbol" 0 0 50 H I L BNN
F7 "SC1464-ND" 0 0 50 H I L BNN
F8 "Switchcraft Inc." 0 0 50 H I L BNN
DRAW
P 2 0 0 10 -300 -300 -300 300 N
P 2 0 0 10 -300 300 300 300 N
P 2 0 0 6 -210 -100 -90 -100 N
P 2 0 0 6 -210 100 -210 -100 N
P 2 0 0 6 -150 100 -210 100 N
P 2 0 0 6 -150 200 -150 100 N
P 2 0 0 6 -90 -100 -90 100 N
P 2 0 0 6 -90 100 -150 100 N
P 2 0 0 6 0 50 -50 100 N
P 2 0 0 6 50 -200 100 -150 N
P 2 0 0 6 50 100 0 50 N
P 2 0 0 6 100 -150 150 -200 N
P 2 0 0 6 150 -200 200 -200 N
P 2 0 0 6 180 -170 200 -200 N
P 2 0 0 6 180 70 200 70 N
P 2 0 0 6 200 -200 200 -170 N
P 2 0 0 6 200 -200 220 -170 N
P 2 0 0 6 200 -200 300 -200 N
P 2 0 0 6 200 -170 180 -170 N
P 2 0 0 6 200 -170 200 -100 N
P 2 0 0 6 200 -100 300 -100 N
P 2 0 0 6 200 0 300 0 N
P 2 0 0 6 200 70 200 0 N
P 2 0 0 6 200 70 200 100 N
P 2 0 0 6 200 70 220 70 N
P 2 0 0 6 200 100 50 100 N
P 2 0 0 6 200 100 180 70 N
P 2 0 0 6 220 -170 200 -170 N
P 2 0 0 6 220 70 200 100 N
P 2 0 0 10 300 -300 -300 -300 N
P 2 0 0 10 300 -200 300 -300 N
P 2 0 0 6 300 100 200 100 N
P 2 0 0 6 300 200 -150 200 N
P 2 0 0 10 300 300 300 -200 N
X 1 1 500 200 200 L 40 40 0 0 P
X 2 2 500 100 200 L 40 40 0 0 P
X 3 3 500 0 200 L 40 40 0 0 P
X 4 4 500 -100 200 L 40 40 0 0 P
X 5 5 500 -200 200 L 40 40 0 0 P
ENDDRAW
ENDDEF
#
# PJ-037AH_PJ-037AH
#
DEF PJ-037AH_PJ-037AH J 0 40 Y N 1 L N
F0 "J" -300 200 50 H V L BNN
F1 "PJ-037AH_PJ-037AH" -300 -200 50 H V L BNN
F2 "CUI_PJ-037AH" 0 0 50 H I L BNN
F3 "Manufacturer recommendations" 0 0 50 H I L BNN
F4 "CUI INC" 0 0 50 H I L BNN
DRAW
A -225 100 50 899 -900 0 0 6 N -225 50 -225 150
P 2 0 0 6 -225 150 -50 150 N
P 2 0 0 6 -150 -50 -175 -100 N
P 2 0 0 6 -125 -100 -150 -50 N
P 2 0 0 6 -50 25 0 25 N
P 2 0 0 6 -50 50 -225 50 N
P 2 0 0 6 -50 50 -50 25 N
P 2 0 0 6 -50 150 -50 50 N
P 2 0 0 6 -50 175 -50 150 N
P 2 0 0 6 0 -100 -125 -100 N
P 2 0 0 6 0 25 0 175 N
P 2 0 0 6 0 175 -50 175 N
X 1 1 200 100 200 L 40 40 0 0 P
X 2 2 200 -100 200 L 40 40 0 0 P
ENDDRAW
ENDDEF
#
# conn2_CONN_01X14
#
DEF conn2_CONN_01X14 J 0 40 Y N 1 F N
F0 "J" 0 750 50 H V C CNN
F1 "conn2_CONN_01X14" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 -645 10 -655 0 1 0 N
S -50 -545 10 -555 0 1 0 N
S -50 -445 10 -455 0 1 0 N
S -50 -345 10 -355 0 1 0 N
S -50 -245 10 -255 0 1 0 N
S -50 -145 10 -155 0 1 0 N
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 155 10 145 0 1 0 N
S -50 255 10 245 0 1 0 N
S -50 355 10 345 0 1 0 N
S -50 455 10 445 0 1 0 N
S -50 555 10 545 0 1 0 N
S -50 655 10 645 0 1 0 N
S -50 700 50 -700 0 1 0 N
X P1 1 -200 650 150 R 50 50 1 1 P
X P10 10 -200 -250 150 R 50 50 1 1 P
X P11 11 -200 -350 150 R 50 50 1 1 P
X P12 12 -200 -450 150 R 50 50 1 1 P
X P13 13 -200 -550 150 R 50 50 1 1 P
X P14 14 -200 -650 150 R 50 50 1 1 P
X P2 2 -200 550 150 R 50 50 1 1 P
X P3 3 -200 450 150 R 50 50 1 1 P
X P4 4 -200 350 150 R 50 50 1 1 P
X P5 5 -200 250 150 R 50 50 1 1 P
X P6 6 -200 150 150 R 50 50 1 1 P
X P7 7 -200 50 150 R 50 50 1 1 P
X P8 8 -200 -50 150 R 50 50 1 1 P
X P9 9 -200 -150 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_+3.3V-PiHatAx5043-cache
#
DEF pihat_template-rescue_+3.3V-PiHatAx5043-cache #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "pihat_template-rescue_+3.3V-PiHatAx5043-cache" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# pihat_template-rescue_+5V-power
#
DEF pihat_template-rescue_+5V-power #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "pihat_template-rescue_+5V-power" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +5V 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# pihat_template-rescue_CONN_01X01-conn2
#
DEF pihat_template-rescue_CONN_01X01-conn2 J 0 40 Y N 1 F N
F0 "J" 0 100 50 H V C CNN
F1 "pihat_template-rescue_CONN_01X01-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 5 10 -5 0 1 0 N
S -50 50 50 -50 0 1 0 N
X P1 1 -200 0 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_CONN_01X02-conn2
#
DEF pihat_template-rescue_CONN_01X02-conn2 J 0 40 Y N 1 F N
F0 "J" 0 150 50 H V C CNN
F1 "pihat_template-rescue_CONN_01X02-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 100 50 -100 0 1 0 N
X P1 1 -200 50 150 R 50 50 1 1 P
X P2 2 -200 -50 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Conn_01x05_Female-Connector
#
DEF pihat_template-rescue_Conn_01x05_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "pihat_template-rescue_Conn_01x05_Female-Connector" 0 -300 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_2 2 -200 100 150 R 50 50 1 1 P
X Pin_3 3 -200 0 150 R 50 50 1 1 P
X Pin_4 4 -200 -100 150 R 50 50 1 1 P
X Pin_5 5 -200 -200 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Conn_01x06_Female-Connector
#
DEF pihat_template-rescue_Conn_01x06_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "pihat_template-rescue_Conn_01x06_Female-Connector" 0 -400 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
P 2 1 1 6 -50 -300 -20 -300 N
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_2 2 -200 100 150 R 50 50 1 1 P
X Pin_3 3 -200 0 150 R 50 50 1 1 P
X Pin_4 4 -200 -100 150 R 50 50 1 1 P
X Pin_5 5 -200 -200 150 R 50 50 1 1 P
X Pin_6 6 -200 -300 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_D-device
#
DEF pihat_template-rescue_D-device D 0 40 N N 1 F N
F0 "D" 0 100 50 H V C CNN
F1 "pihat_template-rescue_D-device" 0 -100 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
TO-???*
*_Diode_*
*SingleDiode*
D_*
$ENDFPLIST
DRAW
P 2 0 1 8 -50 50 -50 -50 N
P 2 0 1 0 50 0 -50 0 N
P 4 0 1 8 50 50 50 -50 -50 0 50 50 N
X K 1 -150 0 100 R 50 50 1 1 P
X A 2 150 0 100 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_GND-power
#
DEF pihat_template-rescue_GND-power #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "pihat_template-rescue_GND-power" 0 -150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
X GND 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# pihat_template-rescue_RESISTOR-passive
#
DEF pihat_template-rescue_RESISTOR-passive R 0 40 N N 1 F N
F0 "R" 0 85 60 H V C CNB
F1 "pihat_template-rescue_RESISTOR-passive" 0 -75 40 H V C CNN
F2 "" 0 -140 40 H I C CNN
F3 "" 0 100 60 H V C CNN
F4 "-" 0 160 45 H I C CNN "Part"
F5 "Passive" 230 290 50 H I C CNN "Family"
$FPLIST
R-0603
R-0805
R-1206
R-1210
$ENDFPLIST
DRAW
P 4 0 1 0 -13 25 -39 -25 -65 25 -78 0 N
P 5 0 1 0 -13 25 13 -25 39 25 65 -25 78 0 N
X 1 1 -100 0 22 R 40 45 1 1 P
X 2 2 100 0 22 L 40 45 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Raspberry_Pi_+_Conn-pihat_template-rescue
#
DEF pihat_template-rescue_Raspberry_Pi_+_Conn-pihat_template-rescue P 0 40 Y Y 1 F N
F0 "P" -1100 1950 60 H V C CNN
F1 "pihat_template-rescue_Raspberry_Pi_+_Conn-pihat_template-rescue" 300 -1450 60 H V C CNN
F2 "" 0 0 60 H V C CNN
F3 "" 0 0 60 H V C CNN
DRAW
S -1150 1900 800 -1400 0 1 0 f
X VDD_(3.3v) 1 1100 1450 299 L 50 50 1 1 I
X GPIO15/UART_RXD 10 -1450 1350 299 R 50 50 1 1 I
X GPIO17 11 -1450 -300 299 R 50 50 1 1 I
X GPIO18 12 -1450 -400 299 R 50 50 1 1 I
X GPIO27 13 -1450 -1300 299 R 50 50 1 1 I
X GND 14 1100 900 299 L 50 50 1 1 I
X GPIO22 15 -1450 -800 299 R 50 50 1 1 I
X GPIO23 16 -1450 -900 299 R 50 50 1 1 I
X VDD_(3.3V) 17 1100 1350 299 L 50 50 1 1 I
X GPIO24 18 -1450 -1000 299 R 50 50 1 1 I
X GPIO10/SPI_M0SI 19 -1450 1100 299 R 50 50 1 1 I
X VPP_(5v) 2 1100 1800 299 L 50 50 1 1 I
X GND 20 1100 800 299 L 50 50 1 1 I
X GPIO9/SPI_MISO 21 -1450 1000 299 R 50 50 1 1 I
X GPIO25 22 -1450 -1100 299 R 50 50 1 1 I
X GPIO11/SPI_SCLK 23 -1450 900 299 R 50 50 1 1 I
X GPIO8/SPI_CE0 24 -1450 800 299 R 50 50 1 1 I
X GND 25 1100 700 299 L 50 50 1 1 I
X GPIO7/SPI_CE1 26 -1450 700 299 R 50 50 1 1 I
X ID_SD 27 1100 -400 299 L 50 50 1 1 I
X ID_SC 28 1100 -300 299 L 50 50 1 1 I
X GPIO5 29 -1450 200 299 R 50 50 1 1 I
X GPIO2/I2C1_SDA 3 -1450 1800 299 R 50 50 1 1 I
X GND 30 1100 600 299 L 50 50 1 1 I
X GPIO6 31 -1450 100 299 R 50 50 1 1 I
X GPIO12 32 -1450 0 299 R 50 50 1 1 I
X GPIO13 33 -1450 -100 299 R 50 50 1 1 I
X GND 34 1100 500 299 L 50 50 1 1 I
X GPIO19 35 -1450 -500 299 R 50 50 1 1 I
X GPIO16 36 -1450 -200 299 R 50 50 1 1 I
X GPIO20 37 -1450 -600 299 R 50 50 1 1 I
X GPIO26 37 -1450 -1200 299 R 50 50 1 1 I
X GND 39 1100 400 299 L 50 50 1 1 I
X VPP_(5v) 4 1100 1700 299 L 50 50 1 1 I
X GPIO21 40 -1450 -700 299 R 50 50 1 1 I
X GPIO3/I2C1_SCL 5 -1450 1700 299 R 50 50 1 1 I
X GND 6 1100 1100 299 L 50 50 1 1 I
X GPIO4/GPCLK0 7 -1450 300 299 R 50 50 1 1 I
X GPIO14/UART_TXD 8 -1450 1450 299 R 50 50 1 1 I
X GND 9 1100 1000 299 L 50 50 1 1 I
ENDDRAW
ENDDEF
#
# pihat_template-rescue_power_+3.3V-PiHatAx5043-cache
#
DEF pihat_template-rescue_power_+3.3V-PiHatAx5043-cache #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "pihat_template-rescue_power_+3.3V-PiHatAx5043-cache" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
#End Library

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,513 @@
(export (version D)
(design
(source "C:\\Users\\ajohns71\\Dropbox\\Nova\\KiCad PCB for GitHub\\cubesatsim_solar.sch")
(date "12/15/2018 11:14:08 AM")
(tool "Eeschema (5.0.1)-4")
(sheet (number 1) (name /) (tstamps /)
(title_block
(title "AMSAT CubeSat Simulator Solar Panel Board")
(company)
(rev B1.1)
(date "December 13, 2018")
(source cubesatsim_solar.sch)
(comment (number 1) (value ""))
(comment (number 2) (value ""))
(comment (number 3) (value ""))
(comment (number 4) (value "")))))
(components
(comp (ref D1)
(value 1N5817)
(footprint Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part D-device) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF2DDAE))
(comp (ref J7)
(value "INA219 Sensor Board")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part Conn_01x06_Female-Connector) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF2E1F2))
(comp (ref J1)
(value "Sensor Inputs")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x10_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part Conn_01x10_Female-Connector) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF2F696))
(comp (ref J5)
(value "RBF Switch")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x05_P2.54mm_Vertical)
(libsource (lib pihat_template-rescue) (part CONN_01X05-conn2) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF5F60C))
(comp (ref J3)
(value "Vdc In")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical)
(libsource (lib pihat_template-rescue) (part CONN_01X02-conn2) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF6082F))
(comp (ref J4)
(value "Vout to MoPOWER")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical)
(libsource (lib pihat_template-rescue) (part CONN_01X02-conn2) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF6089F))
(comp (ref J2)
(value "Battery In/Out")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical)
(libsource (lib pihat_template-rescue) (part CONN_01X02_FEMALE-conn2) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF6F85F))
(comp (ref P3)
(value "GPIO Male Extra Long (19mm) 20x2 Header Pins")
(footprint w_conn_strip:vasch_strip_20x2)
(fields
(field (name "Mouser Part No.") 517-30340-6002))
(libsource (lib pihat_template-rescue) (part Raspberry_Pi_+_Conn-pihat_template-rescue) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 54E92361))
(comp (ref R2)
(value 4.7k)
(footprint Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P5.08mm_Vertical)
(fields
(field (name Family) Passive)
(field (name Part) -))
(libsource (lib pihat_template-rescue) (part RESISTOR-passive) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF91C4F))
(comp (ref R1)
(value 4.7k)
(footprint Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P5.08mm_Vertical)
(fields
(field (name Family) Passive)
(field (name Part) -))
(libsource (lib pihat_template-rescue) (part RESISTOR-passive) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF91CF1))
(comp (ref J10)
(value "INA219 Sensor Board")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part Conn_01x06_Female-Connector) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BF9E342))
(comp (ref J8)
(value "INA219 Sensor Board")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part Conn_01x06_Female-Connector) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFB9855))
(comp (ref J9)
(value "INA219 Sensor Board")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part Conn_01x06_Female-Connector) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFBC218))
(comp (ref J11)
(value "INA219 Sensor Board")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part Conn_01x06_Female-Connector) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFBED5A))
(comp (ref J12)
(value "INA219 Sensor Board")
(footprint Connector_PinHeader_2.54mm:PinHeader_1x06_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part Conn_01x06_Female-Connector) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFC1EC2))
(comp (ref D2)
(value 1N5817)
(footprint Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part D-device) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFCE14D))
(comp (ref D3)
(value 1N5817)
(footprint Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part D-device) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFD1A73))
(comp (ref D4)
(value 1N5817)
(footprint Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part D-device) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFD565A))
(comp (ref D5)
(value 1N5817)
(footprint Diode_THT:D_DO-41_SOD81_P3.81mm_Vertical_AnodeUp)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part D-device) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFD9541))
(comp (ref J6)
(value "Expansion Interface")
(footprint Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Vertical)
(datasheet ~)
(libsource (lib pihat_template-rescue) (part Conn_01x05_Female-Connector) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5BFF9AD8))
(comp (ref J13)
(value IN+)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical)
(libsource (lib pihat_template-rescue) (part CONN_01X01-conn2) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5C0D6034))
(comp (ref J14)
(value IN-)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical)
(libsource (lib pihat_template-rescue) (part CONN_01X01-conn2) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5C0D608E))
(comp (ref J15)
(value OUT+)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical)
(libsource (lib pihat_template-rescue) (part CONN_01X01-conn2) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5C0D60E4))
(comp (ref J16)
(value OUT-)
(footprint Connector_PinSocket_2.54mm:PinSocket_1x01_P2.54mm_Vertical)
(libsource (lib pihat_template-rescue) (part CONN_01X01-conn2) (description ""))
(sheetpath (names /) (tstamps /))
(tstamp 5C0D6176)))
(libparts
(libpart (lib pihat_template-rescue) (part CONN_01X01-conn2)
(footprints
(fp Pin_Header_Straight_1X*)
(fp Pin_Header_Angled_1X*)
(fp Socket_Strip_Straight_1X*)
(fp Socket_Strip_Angled_1X*))
(fields
(field (name Reference) J)
(field (name Value) CONN_01X01-conn2))
(pins
(pin (num 1) (name P1) (type passive))))
(libpart (lib pihat_template-rescue) (part CONN_01X02-conn2)
(footprints
(fp Pin_Header_Straight_1X*)
(fp Pin_Header_Angled_1X*)
(fp Socket_Strip_Straight_1X*)
(fp Socket_Strip_Angled_1X*))
(fields
(field (name Reference) J)
(field (name Value) CONN_01X02-conn2))
(pins
(pin (num 1) (name P1) (type passive))
(pin (num 2) (name P2) (type passive))))
(libpart (lib pihat_template-rescue) (part CONN_01X02_FEMALE-conn2)
(fields
(field (name Reference) J)
(field (name Value) CONN_01X02_FEMALE-conn2))
(pins
(pin (num 1) (name 1) (type passive))
(pin (num 2) (name 2) (type passive))))
(libpart (lib pihat_template-rescue) (part CONN_01X05-conn2)
(footprints
(fp Pin_Header_Straight_1X*)
(fp Pin_Header_Angled_1X*)
(fp Socket_Strip_Straight_1X*)
(fp Socket_Strip_Angled_1X*))
(fields
(field (name Reference) J)
(field (name Value) CONN_01X05-conn2))
(pins
(pin (num 1) (name P1) (type passive))
(pin (num 2) (name P2) (type passive))
(pin (num 3) (name P3) (type passive))
(pin (num 4) (name P4) (type passive))
(pin (num 5) (name P5) (type passive))))
(libpart (lib pihat_template-rescue) (part Conn_01x05_Female-Connector)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x05_Female-Connector))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))))
(libpart (lib pihat_template-rescue) (part Conn_01x06_Female-Connector)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x06_Female-Connector))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))
(pin (num 6) (name Pin_6) (type passive))))
(libpart (lib pihat_template-rescue) (part Conn_01x10_Female-Connector)
(footprints
(fp Connector*:*_1x??_*))
(fields
(field (name Reference) J)
(field (name Value) Conn_01x10_Female-Connector))
(pins
(pin (num 1) (name Pin_1) (type passive))
(pin (num 2) (name Pin_2) (type passive))
(pin (num 3) (name Pin_3) (type passive))
(pin (num 4) (name Pin_4) (type passive))
(pin (num 5) (name Pin_5) (type passive))
(pin (num 6) (name Pin_6) (type passive))
(pin (num 7) (name Pin_7) (type passive))
(pin (num 8) (name Pin_8) (type passive))
(pin (num 9) (name Pin_9) (type passive))
(pin (num 10) (name Pin_10) (type passive))))
(libpart (lib pihat_template-rescue) (part D-device)
(footprints
(fp TO-???*)
(fp *_Diode_*)
(fp *SingleDiode*)
(fp D_*))
(fields
(field (name Reference) D)
(field (name Value) D-device))
(pins
(pin (num 1) (name K) (type passive))
(pin (num 2) (name A) (type passive))))
(libpart (lib pihat_template-rescue) (part RESISTOR-passive)
(footprints
(fp R-0603)
(fp R-0805)
(fp R-1206)
(fp R-1210))
(fields
(field (name Reference) R)
(field (name Value) RESISTOR-passive)
(field (name Part) -)
(field (name Family) Passive))
(pins
(pin (num 1) (name 1) (type passive))
(pin (num 2) (name 2) (type passive))))
(libpart (lib pihat_template-rescue) (part Raspberry_Pi_+_Conn-pihat_template-rescue)
(fields
(field (name Reference) P)
(field (name Value) Raspberry_Pi_+_Conn-pihat_template-rescue))
(pins
(pin (num 1) (name "VDD_(3.3v)") (type input))
(pin (num 2) (name "VPP_(5v)") (type input))
(pin (num 3) (name GPIO2/I2C1_SDA) (type input))
(pin (num 4) (name "VPP_(5v)") (type input))
(pin (num 5) (name GPIO3/I2C1_SCL) (type input))
(pin (num 6) (name GND) (type input))
(pin (num 7) (name GPIO4/GPCLK0) (type input))
(pin (num 8) (name GPIO14/UART_TXD) (type input))
(pin (num 9) (name GND) (type input))
(pin (num 10) (name GPIO15/UART_RXD) (type input))
(pin (num 11) (name GPIO17) (type input))
(pin (num 12) (name GPIO18) (type input))
(pin (num 13) (name GPIO27) (type input))
(pin (num 14) (name GND) (type input))
(pin (num 15) (name GPIO22) (type input))
(pin (num 16) (name GPIO23) (type input))
(pin (num 17) (name "VDD_(3.3V)") (type input))
(pin (num 18) (name GPIO24) (type input))
(pin (num 19) (name GPIO10/SPI_M0SI) (type input))
(pin (num 20) (name GND) (type input))
(pin (num 21) (name GPIO9/SPI_MISO) (type input))
(pin (num 22) (name GPIO25) (type input))
(pin (num 23) (name GPIO11/SPI_SCLK) (type input))
(pin (num 24) (name GPIO8/SPI_CE0) (type input))
(pin (num 25) (name GND) (type input))
(pin (num 26) (name GPIO7/SPI_CE1) (type input))
(pin (num 27) (name ID_SD) (type input))
(pin (num 28) (name ID_SC) (type input))
(pin (num 29) (name GPIO5) (type input))
(pin (num 30) (name GND) (type input))
(pin (num 31) (name GPIO6) (type input))
(pin (num 32) (name GPIO12) (type input))
(pin (num 33) (name GPIO13) (type input))
(pin (num 34) (name GND) (type input))
(pin (num 35) (name GPIO19) (type input))
(pin (num 36) (name GPIO16) (type input))
(pin (num 37) (name GPIO20) (type input))
(pin (num 39) (name GND) (type input))
(pin (num 40) (name GPIO21) (type input)))))
(libraries
(library (logical pihat_template-rescue)
(uri "C:\\Users\\ajohns71\\Dropbox\\Nova\\KiCad PCB for GitHub/pihat_template-rescue.lib")))
(nets
(net (code 1) (name Y+In)
(node (ref J8) (pin 1))
(node (ref J1) (pin 3)))
(net (code 2) (name +3V3)
(node (ref J11) (pin 6))
(node (ref J12) (pin 6))
(node (ref J10) (pin 6))
(node (ref R2) (pin 1))
(node (ref R1) (pin 1))
(node (ref J7) (pin 6))
(node (ref J8) (pin 6))
(node (ref P3) (pin 1))
(node (ref J6) (pin 2))
(node (ref J9) (pin 6)))
(net (code 3) (name GND)
(node (ref J3) (pin 2))
(node (ref J4) (pin 2))
(node (ref J12) (pin 5))
(node (ref J1) (pin 6))
(node (ref J1) (pin 8))
(node (ref J1) (pin 4))
(node (ref J1) (pin 2))
(node (ref J1) (pin 10))
(node (ref J7) (pin 5))
(node (ref P3) (pin 9))
(node (ref P3) (pin 6))
(node (ref P3) (pin 39))
(node (ref P3) (pin 14))
(node (ref P3) (pin 34))
(node (ref P3) (pin 30))
(node (ref P3) (pin 25))
(node (ref P3) (pin 20))
(node (ref J6) (pin 3))
(node (ref J9) (pin 5))
(node (ref J8) (pin 5))
(node (ref J14) (pin 1))
(node (ref J16) (pin 1))
(node (ref J10) (pin 5))
(node (ref J11) (pin 5)))
(net (code 4) (name SCL_1)
(node (ref J8) (pin 4))
(node (ref P3) (pin 5))
(node (ref J10) (pin 4))
(node (ref J7) (pin 4))
(node (ref J9) (pin 4)))
(net (code 5) (name SDA_1)
(node (ref J10) (pin 3))
(node (ref J7) (pin 3))
(node (ref P3) (pin 3))
(node (ref J8) (pin 3))
(node (ref J9) (pin 3)))
(net (code 6) (name Y+Out)
(node (ref D2) (pin 2))
(node (ref J8) (pin 2)))
(net (code 7) (name Z+Out)
(node (ref J9) (pin 2))
(node (ref D3) (pin 2)))
(net (code 8) (name Z+In)
(node (ref J9) (pin 1))
(node (ref J1) (pin 5)))
(net (code 9) (name VbattOut)
(node (ref J10) (pin 2))
(node (ref J2) (pin 2)))
(net (code 10) (name VbattIn)
(node (ref J2) (pin 1))
(node (ref J10) (pin 1)))
(net (code 11) (name +5V)
(node (ref J6) (pin 1))
(node (ref P3) (pin 2))
(node (ref P3) (pin 4)))
(net (code 12) (name SCL_3)
(node (ref J12) (pin 4))
(node (ref J6) (pin 5))
(node (ref P3) (pin 28))
(node (ref R1) (pin 2))
(node (ref J11) (pin 4)))
(net (code 13) (name SDA_3)
(node (ref J6) (pin 4))
(node (ref P3) (pin 27))
(node (ref J12) (pin 3))
(node (ref R2) (pin 2))
(node (ref J11) (pin 3)))
(net (code 14) (name Y-Out)
(node (ref J12) (pin 2))
(node (ref D5) (pin 2)))
(net (code 15) (name "Net-(J15-Pad1)")
(node (ref J5) (pin 3))
(node (ref J15) (pin 1)))
(net (code 16) (name "Net-(J4-Pad1)")
(node (ref J4) (pin 1))
(node (ref J5) (pin 4)))
(net (code 17) (name "Net-(J3-Pad1)")
(node (ref J3) (pin 1))
(node (ref J5) (pin 5)))
(net (code 18) (name "Net-(J13-Pad1)")
(node (ref J13) (pin 1))
(node (ref J5) (pin 2)))
(net (code 20) (name "Net-(D1-Pad1)")
(node (ref D1) (pin 1))
(node (ref D5) (pin 1))
(node (ref D3) (pin 1))
(node (ref D2) (pin 1))
(node (ref J5) (pin 1))
(node (ref D4) (pin 1)))
(net (code 21) (name X-Out)
(node (ref D4) (pin 2))
(node (ref J11) (pin 2)))
(net (code 22) (name X-In)
(node (ref J1) (pin 7))
(node (ref J11) (pin 1)))
(net (code 23) (name Y-In)
(node (ref J1) (pin 9))
(node (ref J12) (pin 1)))
(net (code 24) (name X+Out)
(node (ref D1) (pin 2))
(node (ref J7) (pin 2)))
(net (code 25) (name X+In)
(node (ref J1) (pin 1))
(node (ref J7) (pin 1)))
(net (code 26) (name "Net-(P3-Pad26)")
(node (ref P3) (pin 26)))
(net (code 27) (name "Net-(P3-Pad35)")
(node (ref P3) (pin 35)))
(net (code 28) (name "Net-(P3-Pad33)")
(node (ref P3) (pin 33)))
(net (code 29) (name "Net-(P3-Pad32)")
(node (ref P3) (pin 32)))
(net (code 30) (name "Net-(P3-Pad31)")
(node (ref P3) (pin 31)))
(net (code 31) (name "Net-(P3-Pad29)")
(node (ref P3) (pin 29)))
(net (code 32) (name "Net-(P3-Pad36)")
(node (ref P3) (pin 36)))
(net (code 33) (name "Net-(P3-Pad24)")
(node (ref P3) (pin 24)))
(net (code 34) (name "Net-(P3-Pad23)")
(node (ref P3) (pin 23)))
(net (code 35) (name "Net-(P3-Pad22)")
(node (ref P3) (pin 22)))
(net (code 36) (name "Net-(P3-Pad21)")
(node (ref P3) (pin 21)))
(net (code 37) (name "Net-(P3-Pad19)")
(node (ref P3) (pin 19)))
(net (code 38) (name "Net-(P3-Pad18)")
(node (ref P3) (pin 18)))
(net (code 39) (name "Net-(P3-Pad17)")
(node (ref P3) (pin 17)))
(net (code 40) (name "Net-(P3-Pad16)")
(node (ref P3) (pin 16)))
(net (code 41) (name "Net-(P3-Pad8)")
(node (ref P3) (pin 8)))
(net (code 42) (name "Net-(P3-Pad7)")
(node (ref P3) (pin 7)))
(net (code 43) (name "Net-(P3-Pad40)")
(node (ref P3) (pin 40)))
(net (code 44) (name "Net-(P3-Pad37)")
(node (ref P3) (pin 37)))
(net (code 45) (name "Net-(P3-Pad37)")
(node (ref P3) (pin 37)))
(net (code 46) (name "Net-(P3-Pad15)")
(node (ref P3) (pin 15)))
(net (code 47) (name "Net-(P3-Pad13)")
(node (ref P3) (pin 13)))
(net (code 48) (name "Net-(P3-Pad12)")
(node (ref P3) (pin 12)))
(net (code 49) (name "Net-(P3-Pad11)")
(node (ref P3) (pin 11)))
(net (code 50) (name "Net-(P3-Pad10)")
(node (ref P3) (pin 10)))))

@ -0,0 +1,43 @@
update=3/15/2019 7:42:43 AM
version=1
last_client=eeschema
[cvpcb]
version=1
NetIExt=net
[cvpcb/libraries]
EquName1=devcms
[pcbnew]
version=1
PageLayoutDescrFile=
LastNetListRead=
UseCmpFile=1
PadDrill=0.6
PadDrillOvalY=0.6
PadSizeH=1.5
PadSizeV=1.5
PcbTextSizeV=1.5
PcbTextSizeH=1.5
PcbTextThickness=0.3
ModuleTextSizeV=1
ModuleTextSizeH=1
ModuleTextSizeThickness=0.15
SolderMaskClearance=0
SolderMaskMinWidth=0
DrawSegmentWidth=0.4
BoardOutlineThickness=0.09999999999999999
ModuleOutlineThickness=0.15
[general]
version=1
[eeschema]
version=1
LibDir=
[schematic_editor]
version=1
PageLayoutDescrFile=
PlotDirectoryName=
SubpartIdSeparator=0
SubpartFirstId=65
NetFmtName=
SpiceAjustPassiveValues=0
LabSize=50
ERC_TestSimilarLabels=1

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 696 KiB

@ -0,0 +1,3 @@
(fp_lib_table
(lib (name PJ-037AH)(type Legacy)(uri ${KIPRJMOD}/PJ-037AH.mod)(options "")(descr ""))
)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,15 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2019-03-02T10:25:11-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B2.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 3/2/2019 10:25:11 AM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

@ -0,0 +1,15 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2019-03-02T10:25:11-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B2.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 3/2/2019 10:25:11 AM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

@ -0,0 +1,143 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2019-03-02T10:25:12-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B2.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 3/2/2019 10:25:12 AM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.100000*%
G04 #@! TA.AperFunction,NonConductor*
%ADD11C,0.000100*%
G04 #@! TD*
G04 #@! TA.AperFunction,NonConductor*
%ADD12C,0.100000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
X178842000Y-140816000D02*
X114127000Y-140879500D01*
X108920000Y-108070000D02*
G75*
G03X109920000Y-107070000I0J1000000D01*
G01*
X105039500Y-137879500D02*
G75*
G03X108039500Y-140879500I3000000J0D01*
G01*
X104920000Y-109070000D02*
X105055000Y-137958500D01*
X105920000Y-108070000D02*
G75*
G03X104920000Y-109070000I0J-1000000D01*
G01*
X108920000Y-108070000D02*
X105920000Y-108070000D01*
X104920000Y-90070000D02*
X104920000Y-74070000D01*
X109920000Y-92070000D02*
X109920000Y-107070000D01*
X105920000Y-91070000D02*
X108920000Y-91070000D01*
X109920000Y-92070000D02*
G75*
G03X108920000Y-91070000I-1000000J0D01*
G01*
X104920000Y-90070000D02*
G75*
G03X105920000Y-91070000I1000000J0D01*
G01*
X166912500Y-140879500D02*
X107912500Y-140879500D01*
X182144000Y-73760000D02*
X182144000Y-137768000D01*
X107920000Y-71070000D02*
X178842000Y-71220000D01*
X178843519Y-140879914D02*
G75*
G03X182144000Y-137895000I300481J2984914D01*
G01*
X107920000Y-71070000D02*
G75*
G03X104920000Y-74070000I0J-3000000D01*
G01*
X182144000Y-74014000D02*
G75*
G03X178880135Y-71220000I-2827821J0D01*
G01*
D11*
G04 #@! TO.C,J1*
X169690000Y-135708000D02*
X168690000Y-135708000D01*
X168690000Y-135708000D02*
X168690000Y-132208000D01*
X168690000Y-132208000D02*
X169690000Y-132208000D01*
X169690000Y-132208000D02*
X169690000Y-135708000D01*
X175690000Y-135458000D02*
X174690000Y-135458000D01*
X174690000Y-135458000D02*
X174690000Y-132458000D01*
X174690000Y-132458000D02*
X175690000Y-132458000D01*
X175690000Y-132458000D02*
X175690000Y-135458000D01*
D12*
G04 #@! TO.C,J3*
X180764000Y-83796000D02*
X180774000Y-83796000D01*
X181169000Y-84291000D02*
X181169000Y-82541000D01*
X181169000Y-82541000D02*
X180419000Y-82541000D01*
X180419000Y-82541000D02*
X180419000Y-84291000D01*
X181169000Y-84291000D02*
X180419000Y-84291000D01*
X177774000Y-78946000D02*
X177774000Y-78936000D01*
X178269000Y-78541000D02*
X176519000Y-78541000D01*
X176519000Y-78541000D02*
X176519000Y-79291000D01*
X176519000Y-79291000D02*
X178269000Y-79291000D01*
X178269000Y-78541000D02*
X178269000Y-79291000D01*
X174674000Y-85946000D02*
X174674000Y-85936000D01*
X175169000Y-85541000D02*
X173419000Y-85541000D01*
X173419000Y-85541000D02*
X173419000Y-86291000D01*
X173419000Y-86291000D02*
X175169000Y-86291000D01*
X175169000Y-85541000D02*
X175169000Y-86291000D01*
X173274000Y-88646000D02*
X173274000Y-88636000D01*
X173769000Y-88241000D02*
X172019000Y-88241000D01*
X172019000Y-88241000D02*
X172019000Y-88991000D01*
X172019000Y-88991000D02*
X173769000Y-88991000D01*
X173769000Y-88241000D02*
X173769000Y-88991000D01*
X169764000Y-79796000D02*
X169774000Y-79796000D01*
X170169000Y-80291000D02*
X170169000Y-78541000D01*
X170169000Y-78541000D02*
X169419000Y-78541000D01*
X169419000Y-78541000D02*
X169419000Y-80291000D01*
X170169000Y-80291000D02*
X169419000Y-80291000D01*
G04 #@! TD*
M02*

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

@ -0,0 +1,15 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2019-03-02T10:25:11-05:00*
G04 #@! TF.ProjectId,cubesatsim_solar,6375626573617473696D5F736F6C6172,B2.0*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Top*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 3/2/2019 10:25:11 AM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

File diff suppressed because it is too large Load Diff

@ -0,0 +1,202 @@
M48
INCH,TZ
T1C0.0250
T2C0.0295
T3C0.0315
T4C0.0394
T5C0.0433
T6C0.1181
%
G90
G05
T1
X43810Y-30739
X44110Y-52639
X44438Y-42560
X44438Y-49212
X44910Y-49739
X44945Y-51105
X45602Y-41396
X45810Y-46039
X46110Y-30339
X46810Y-50239
X47010Y-43139
X48638Y-40512
X49610Y-43639
X49658Y-44587
X49658Y-44587
X49710Y-32239
X50510Y-47039
X51710Y-40939
X52410Y-43539
X52910Y-45739
X53810Y-46639
X56038Y-42662
X56038Y-48267
X57010Y-46239
X57610Y-43039
X57610Y-47389
X60563Y-44587
X61610Y-43039
X61610Y-43039
X61610Y-49339
X62210Y-33339
X62610Y-43539
X62610Y-48313
X65710Y-34239
X66110Y-45339
X66563Y-46639
X66748Y-48082
X66748Y-49991
X66810Y-38823
X66810Y-38823
X67710Y-43439
X68192Y-50857
X68210Y-40339
X69410Y-33239
X69483Y-46667
T2
X66848Y-31266
X68108Y-34888
X68659Y-33825
X69840Y-31069
X71179Y-32841
T3
X59110Y-31539
X61110Y-31539
X67510Y-44639
X67510Y-46639
X55610Y-31514
X57610Y-31514
T4
X53410Y-47739
X53410Y-48739
X53410Y-49739
X53410Y-50739
X53410Y-51739
X53410Y-52739
X47610Y-33039
X60535Y-47839
X60535Y-48839
X60535Y-49839
X60535Y-50839
X60535Y-51839
X60535Y-52839
X49810Y-47839
X49810Y-48839
X49810Y-49839
X49810Y-50839
X49810Y-51839
X49810Y-52839
X68010Y-36039
X69010Y-36039
X46210Y-47739
X46210Y-48739
X46210Y-49739
X46210Y-50739
X46210Y-51739
X46210Y-52739
X44610Y-28939
X44610Y-29939
X45610Y-28939
X45610Y-29939
X46610Y-28939
X46610Y-29939
X47610Y-28939
X47610Y-29939
X48610Y-28939
X48610Y-29939
X49610Y-28939
X49610Y-29939
X50610Y-28939
X50610Y-29939
X51610Y-28939
X51610Y-29939
X52610Y-28939
X52610Y-29939
X53610Y-28939
X53610Y-29939
X54610Y-28939
X54610Y-29939
X55610Y-28939
X55610Y-29939
X56610Y-28939
X56610Y-29939
X57610Y-28939
X57610Y-29939
X58610Y-28939
X58610Y-29939
X59610Y-28939
X59610Y-29939
X60610Y-28939
X60610Y-29939
X61610Y-28939
X61610Y-29939
X62610Y-28939
X62610Y-29939
X63610Y-28939
X63610Y-29939
X63610Y-40039
X66610Y-52739
X68972Y-52739
X42610Y-50539
X42610Y-51539
X42610Y-52539
X42610Y-53539
X42610Y-54539
X47610Y-40039
X42910Y-44539
X43910Y-44539
X44910Y-44539
X45910Y-44539
X46910Y-44539
X47910Y-44539
X63610Y-33039
X69010Y-37239
X69010Y-38239
X69010Y-39239
X69010Y-40239
X69010Y-41239
X69010Y-42239
X69010Y-43239
X69010Y-44239
X69010Y-45239
X69010Y-46239
X69010Y-47239
X69010Y-48239
X69010Y-49239
X69010Y-50239
X57010Y-47839
X57010Y-48839
X57010Y-49839
X57010Y-50839
X57010Y-51839
X57010Y-52839
X64010Y-47839
X64010Y-48839
X64010Y-49839
X64010Y-50839
X64010Y-51839
X64010Y-52839
T5
X67510Y-48139
X67510Y-49639
X65810Y-42039
X67310Y-42039
X53810Y-42039
X55310Y-42039
X50810Y-42039
X52310Y-42039
X56710Y-42039
X58210Y-42039
X59810Y-42089
X61310Y-42089
X62810Y-42039
X64310Y-42039
T6
X65520Y-29457
X65520Y-48748
X42685Y-48748
X42685Y-29457
T0
M30

@ -0,0 +1,868 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2018-12-13T18:51:49-05:00*
G04 #@! TF.ProjectId,pihat_template,70696861745F74656D706C6174652E6B,B1.1*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Copper,L2,Bot,Signal*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 12/13/2018 6:51:49 PM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 #@! TA.AperFunction,ComponentPad*
%ADD10R,1.700000X1.700000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD11O,1.700000X1.700000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD12O,1.600000X1.600000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD13C,1.600000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD14O,2.200000X2.200000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD15R,2.200000X2.200000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD16R,1.524000X1.998980*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD17O,1.524000X1.998980*%
G04 #@! TD*
G04 #@! TA.AperFunction,ViaPad*
%ADD18C,0.889000*%
G04 #@! TD*
G04 #@! TA.AperFunction,Conductor*
%ADD19C,0.400000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
G04 #@! TO.P,J11,1*
G04 #@! TO.N,X-In*
X125248000Y-121258000D03*
D11*
G04 #@! TO.P,J11,2*
G04 #@! TO.N,X-Out*
X125248000Y-123798000D03*
G04 #@! TO.P,J11,3*
G04 #@! TO.N,SDA_3*
X125248000Y-126338000D03*
G04 #@! TO.P,J11,4*
G04 #@! TO.N,SCL_3*
X125248000Y-128878000D03*
G04 #@! TO.P,J11,5*
G04 #@! TO.N,GND*
X125248000Y-131418000D03*
G04 #@! TO.P,J11,6*
G04 #@! TO.N,+3V3*
X125248000Y-133958000D03*
G04 #@! TD*
D10*
G04 #@! TO.P,OUT-,1*
G04 #@! TO.N,GND*
X161316000Y-101700000D03*
G04 #@! TD*
G04 #@! TO.P,IN+,1*
G04 #@! TO.N,Net-(J13-Pad1)*
X120930000Y-83920000D03*
G04 #@! TD*
G04 #@! TO.P,IN-,1*
G04 #@! TO.N,GND*
X120930000Y-101700000D03*
G04 #@! TD*
G04 #@! TO.P,OUT+,1*
G04 #@! TO.N,Net-(J15-Pad1)*
X161570000Y-83920000D03*
G04 #@! TD*
G04 #@! TO.P,J6,1*
G04 #@! TO.N,+5V*
X108230000Y-138530000D03*
D11*
G04 #@! TO.P,J6,2*
G04 #@! TO.N,+3V3*
X108230000Y-135990000D03*
G04 #@! TO.P,J6,3*
G04 #@! TO.N,GND*
X108230000Y-133450000D03*
G04 #@! TO.P,J6,4*
G04 #@! TO.N,SDA_3*
X108230000Y-130910000D03*
G04 #@! TO.P,J6,5*
G04 #@! TO.N,SCL_3*
X108230000Y-128370000D03*
G04 #@! TD*
D12*
G04 #@! TO.P,R1,2*
G04 #@! TO.N,SCL_3*
X155220000Y-80110000D03*
D13*
G04 #@! TO.P,R1,1*
G04 #@! TO.N,+3V3*
X150140000Y-80110000D03*
G04 #@! TD*
G04 #@! TO.P,R2,1*
G04 #@! TO.N,+3V3*
X141250000Y-80046500D03*
D12*
G04 #@! TO.P,R2,2*
G04 #@! TO.N,SDA_3*
X146330000Y-80046500D03*
G04 #@! TD*
D10*
G04 #@! TO.P,J2,1*
G04 #@! TO.N,VbattIn*
X173000000Y-113130000D03*
D11*
G04 #@! TO.P,J2,2*
G04 #@! TO.N,VbattOut*
X173000000Y-110590000D03*
G04 #@! TD*
G04 #@! TO.P,J4,2*
G04 #@! TO.N,GND*
X173000000Y-94334000D03*
D10*
G04 #@! TO.P,J4,1*
G04 #@! TO.N,Net-(J3-Pad1)*
X173000000Y-91794000D03*
G04 #@! TD*
G04 #@! TO.P,J3,1*
G04 #@! TO.N,Net-(J4-Pad1)*
X173000000Y-99160000D03*
D11*
G04 #@! TO.P,J3,2*
G04 #@! TO.N,GND*
X173000000Y-101700000D03*
G04 #@! TD*
D10*
G04 #@! TO.P,J10,1*
G04 #@! TO.N,VbattIn*
X134392000Y-121004000D03*
D11*
G04 #@! TO.P,J10,2*
G04 #@! TO.N,VbattOut*
X134392000Y-123544000D03*
G04 #@! TO.P,J10,3*
G04 #@! TO.N,SDA_1*
X134392000Y-126084000D03*
G04 #@! TO.P,J10,4*
G04 #@! TO.N,SCL_1*
X134392000Y-128624000D03*
G04 #@! TO.P,J10,5*
G04 #@! TO.N,GND*
X134392000Y-131164000D03*
G04 #@! TO.P,J10,6*
G04 #@! TO.N,+3V3*
X134392000Y-133704000D03*
G04 #@! TD*
G04 #@! TO.P,J12,6*
G04 #@! TO.N,+3V3*
X116104000Y-133704000D03*
G04 #@! TO.P,J12,5*
G04 #@! TO.N,GND*
X116104000Y-131164000D03*
G04 #@! TO.P,J12,4*
G04 #@! TO.N,SCL_3*
X116104000Y-128624000D03*
G04 #@! TO.P,J12,3*
G04 #@! TO.N,SDA_3*
X116104000Y-126084000D03*
G04 #@! TO.P,J12,2*
G04 #@! TO.N,Y-Out*
X116104000Y-123544000D03*
D10*
G04 #@! TO.P,J12,1*
G04 #@! TO.N,Y-In*
X116104000Y-121004000D03*
G04 #@! TD*
G04 #@! TO.P,J8,1*
G04 #@! TO.N,Y+In*
X152489500Y-121258000D03*
D11*
G04 #@! TO.P,J8,2*
G04 #@! TO.N,Y+Out*
X152489500Y-123798000D03*
G04 #@! TO.P,J8,3*
G04 #@! TO.N,SDA_1*
X152489500Y-126338000D03*
G04 #@! TO.P,J8,4*
G04 #@! TO.N,SCL_1*
X152489500Y-128878000D03*
G04 #@! TO.P,J8,5*
G04 #@! TO.N,GND*
X152489500Y-131418000D03*
G04 #@! TO.P,J8,6*
G04 #@! TO.N,+3V3*
X152489500Y-133958000D03*
G04 #@! TD*
G04 #@! TO.P,J7,6*
G04 #@! TO.N,+3V3*
X161316000Y-133958000D03*
G04 #@! TO.P,J7,5*
G04 #@! TO.N,GND*
X161316000Y-131418000D03*
G04 #@! TO.P,J7,4*
G04 #@! TO.N,SCL_1*
X161316000Y-128878000D03*
G04 #@! TO.P,J7,3*
G04 #@! TO.N,SDA_1*
X161316000Y-126338000D03*
G04 #@! TO.P,J7,2*
G04 #@! TO.N,X+Out*
X161316000Y-123798000D03*
D10*
G04 #@! TO.P,J7,1*
G04 #@! TO.N,X+In*
X161316000Y-121258000D03*
G04 #@! TD*
G04 #@! TO.P,J9,1*
G04 #@! TO.N,Z+In*
X143536000Y-121258000D03*
D11*
G04 #@! TO.P,J9,2*
G04 #@! TO.N,Z+Out*
X143536000Y-123798000D03*
G04 #@! TO.P,J9,3*
G04 #@! TO.N,SDA_1*
X143536000Y-126338000D03*
G04 #@! TO.P,J9,4*
G04 #@! TO.N,SCL_1*
X143536000Y-128878000D03*
G04 #@! TO.P,J9,5*
G04 #@! TO.N,GND*
X143536000Y-131418000D03*
G04 #@! TO.P,J9,6*
G04 #@! TO.N,+3V3*
X143536000Y-133958000D03*
G04 #@! TD*
D10*
G04 #@! TO.P,J1,1*
G04 #@! TO.N,X+In*
X173000000Y-138530000D03*
D11*
G04 #@! TO.P,J1,2*
G04 #@! TO.N,GND*
X173000000Y-135990000D03*
G04 #@! TO.P,J1,3*
G04 #@! TO.N,Y+In*
X173000000Y-133450000D03*
G04 #@! TO.P,J1,4*
G04 #@! TO.N,GND*
X173000000Y-130910000D03*
G04 #@! TO.P,J1,5*
G04 #@! TO.N,Z+In*
X173000000Y-128370000D03*
G04 #@! TO.P,J1,6*
G04 #@! TO.N,GND*
X173000000Y-125830000D03*
G04 #@! TO.P,J1,7*
G04 #@! TO.N,X-In*
X173000000Y-123290000D03*
G04 #@! TO.P,J1,8*
G04 #@! TO.N,GND*
X173000000Y-120750000D03*
G04 #@! TO.P,J1,9*
G04 #@! TO.N,Y-In*
X173000000Y-118210000D03*
G04 #@! TO.P,J1,10*
G04 #@! TO.N,GND*
X173000000Y-115670000D03*
G04 #@! TD*
D14*
G04 #@! TO.P,D4,2*
G04 #@! TO.N,X-Out*
X153950000Y-106907000D03*
D15*
G04 #@! TO.P,D4,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X150140000Y-106907000D03*
G04 #@! TD*
G04 #@! TO.P,D3,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X140043500Y-106843500D03*
D14*
G04 #@! TO.P,D3,2*
G04 #@! TO.N,Z+Out*
X143853500Y-106843500D03*
G04 #@! TD*
G04 #@! TO.P,D5,2*
G04 #@! TO.N,Y-Out*
X163411500Y-106589500D03*
D15*
G04 #@! TO.P,D5,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X159601500Y-106589500D03*
G04 #@! TD*
G04 #@! TO.P,D2,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X130201000Y-106843500D03*
D14*
G04 #@! TO.P,D2,2*
G04 #@! TO.N,Y+Out*
X134011000Y-106843500D03*
G04 #@! TD*
D10*
G04 #@! TO.P,J5,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X173000000Y-75665000D03*
D11*
G04 #@! TO.P,J5,2*
G04 #@! TO.N,Net-(J13-Pad1)*
X173000000Y-78205000D03*
G04 #@! TO.P,J5,3*
G04 #@! TO.N,Net-(J15-Pad1)*
X173000000Y-80745000D03*
G04 #@! TO.P,J5,4*
G04 #@! TO.N,Net-(J3-Pad1)*
X173000000Y-83285000D03*
G04 #@! TO.P,J5,5*
G04 #@! TO.N,Net-(J4-Pad1)*
X173000000Y-85825000D03*
G04 #@! TD*
D15*
G04 #@! TO.P,D1,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X120295000Y-106780000D03*
D14*
G04 #@! TO.P,D1,2*
G04 #@! TO.N,X+Out*
X124105000Y-106780000D03*
G04 #@! TD*
D16*
G04 #@! TO.P,GPIO,1*
G04 #@! TO.N,+3V3*
X113290000Y-76338920D03*
D17*
G04 #@! TO.P,GPIO,2*
G04 #@! TO.N,+5V*
X113290000Y-73301080D03*
G04 #@! TO.P,GPIO,3*
G04 #@! TO.N,SDA_1*
X115830000Y-76338920D03*
G04 #@! TO.P,GPIO,4*
G04 #@! TO.N,+5V*
X115830000Y-73301080D03*
G04 #@! TO.P,GPIO,5*
G04 #@! TO.N,SCL_1*
X118370000Y-76338920D03*
G04 #@! TO.P,GPIO,6*
G04 #@! TO.N,GND*
X118370000Y-73301080D03*
G04 #@! TO.P,GPIO,7*
G04 #@! TO.N,Net-(P3-Pad7)*
X120910000Y-76338920D03*
G04 #@! TO.P,GPIO,8*
G04 #@! TO.N,Net-(P3-Pad8)*
X120910000Y-73301080D03*
G04 #@! TO.P,GPIO,9*
G04 #@! TO.N,GND*
X123450000Y-76338920D03*
G04 #@! TO.P,GPIO,10*
G04 #@! TO.N,Net-(P3-Pad10)*
X123450000Y-73301080D03*
G04 #@! TO.P,GPIO,11*
G04 #@! TO.N,Net-(P3-Pad11)*
X125990000Y-76338920D03*
G04 #@! TO.P,GPIO,12*
G04 #@! TO.N,Net-(P3-Pad12)*
X125990000Y-73301080D03*
G04 #@! TO.P,GPIO,13*
G04 #@! TO.N,Net-(P3-Pad13)*
X128530000Y-76338920D03*
G04 #@! TO.P,GPIO,14*
G04 #@! TO.N,GND*
X128530000Y-73301080D03*
G04 #@! TO.P,GPIO,15*
G04 #@! TO.N,Net-(P3-Pad15)*
X131070000Y-76338920D03*
G04 #@! TO.P,GPIO,16*
G04 #@! TO.N,Net-(P3-Pad16)*
X131070000Y-73301080D03*
G04 #@! TO.P,GPIO,17*
G04 #@! TO.N,Net-(P3-Pad17)*
X133610000Y-76338920D03*
G04 #@! TO.P,GPIO,18*
G04 #@! TO.N,Net-(P3-Pad18)*
X133610000Y-73301080D03*
G04 #@! TO.P,GPIO,19*
G04 #@! TO.N,Net-(P3-Pad19)*
X136150000Y-76338920D03*
G04 #@! TO.P,GPIO,20*
G04 #@! TO.N,GND*
X136150000Y-73301080D03*
G04 #@! TO.P,GPIO,21*
G04 #@! TO.N,Net-(P3-Pad21)*
X138690000Y-76338920D03*
G04 #@! TO.P,GPIO,22*
G04 #@! TO.N,Net-(P3-Pad22)*
X138690000Y-73301080D03*
G04 #@! TO.P,GPIO,23*
G04 #@! TO.N,Net-(P3-Pad23)*
X141230000Y-76338920D03*
G04 #@! TO.P,GPIO,24*
G04 #@! TO.N,Net-(P3-Pad24)*
X141230000Y-73301080D03*
G04 #@! TO.P,GPIO,25*
G04 #@! TO.N,GND*
X143770000Y-76338920D03*
G04 #@! TO.P,GPIO,26*
G04 #@! TO.N,Net-(P3-Pad26)*
X143770000Y-73301080D03*
G04 #@! TO.P,GPIO,27*
G04 #@! TO.N,SDA_3*
X146310000Y-76338920D03*
G04 #@! TO.P,GPIO,28*
G04 #@! TO.N,SCL_3*
X146310000Y-73301080D03*
G04 #@! TO.P,GPIO,29*
G04 #@! TO.N,Net-(P3-Pad29)*
X148850000Y-76338920D03*
G04 #@! TO.P,GPIO,30*
G04 #@! TO.N,GND*
X148850000Y-73301080D03*
G04 #@! TO.P,GPIO,31*
G04 #@! TO.N,Net-(P3-Pad31)*
X151390000Y-76338920D03*
G04 #@! TO.P,GPIO,32*
G04 #@! TO.N,Net-(P3-Pad32)*
X151390000Y-73301080D03*
G04 #@! TO.P,GPIO,33*
G04 #@! TO.N,Net-(P3-Pad33)*
X153930000Y-76338920D03*
G04 #@! TO.P,GPIO,34*
G04 #@! TO.N,GND*
X153930000Y-73301080D03*
G04 #@! TO.P,GPIO,35*
G04 #@! TO.N,Net-(P3-Pad35)*
X156470000Y-76338920D03*
G04 #@! TO.P,GPIO,36*
G04 #@! TO.N,Net-(P3-Pad36)*
X156470000Y-73301080D03*
G04 #@! TO.P,GPIO,37*
G04 #@! TO.N,Net-(P3-Pad37)*
X159010000Y-76338920D03*
G04 #@! TO.P,GPIO,38*
G04 #@! TO.N,N/C*
X159010000Y-73301080D03*
G04 #@! TO.P,GPIO,39*
G04 #@! TO.N,GND*
X161550000Y-76338920D03*
G04 #@! TO.P,GPIO,40*
G04 #@! TO.N,Net-(P3-Pad40)*
X161550000Y-73301080D03*
G04 #@! TD*
D18*
G04 #@! TO.N,SDA_1*
X120676000Y-125068000D03*
G04 #@! TO.N,SCL_1*
X122454000Y-127608000D03*
G04 #@! TO.N,Net-(D1-Pad1)*
X166650000Y-104240000D03*
G04 #@! TO.N,X+Out*
X159030000Y-110590000D03*
G04 #@! TO.N,Y+In*
X156928001Y-132618001D03*
G04 #@! TO.N,Z+In*
X147784001Y-127538001D03*
G04 #@! TO.N,VbattIn*
X134392000Y-116178000D03*
G04 #@! TO.N,VbattOut*
X169751928Y-118410072D03*
X136678000Y-118464000D03*
G04 #@! TO.N,+3V3*
X112040000Y-133704000D03*
X111786000Y-78078000D03*
G04 #@! TO.N,Y+Out*
X146330000Y-109320000D03*
G04 #@! TO.N,Y-Out*
X118390000Y-114400000D03*
X118390000Y-114400000D03*
X162840000Y-113130000D03*
G04 #@! TO.N,X-Out*
X126130501Y-113250501D03*
X126130501Y-113250501D03*
X153829499Y-113250501D03*
G04 #@! TO.N,SDA_3*
X114159999Y-129806001D03*
G04 #@! TD*
D19*
G04 #@! TO.N,GND*
X173849999Y-131759999D02*
X173000000Y-130910000D01*
X174270000Y-132180000D02*
X173849999Y-131759999D01*
X174270000Y-134720000D02*
X174270000Y-132180000D01*
X173000000Y-135990000D02*
X174270000Y-134720000D01*
X173849999Y-126679999D02*
X173000000Y-125830000D01*
X174270000Y-127100000D02*
X173849999Y-126679999D01*
X174270000Y-129640000D02*
X174270000Y-127100000D01*
X173000000Y-130910000D02*
X174270000Y-129640000D01*
X173849999Y-121599999D02*
X173000000Y-120750000D01*
X174270000Y-122020000D02*
X173849999Y-121599999D01*
X174270000Y-124560000D02*
X174270000Y-122020000D01*
X173000000Y-125830000D02*
X174270000Y-124560000D01*
X173849999Y-116519999D02*
X173000000Y-115670000D01*
X174270000Y-116940000D02*
X173849999Y-116519999D01*
X174270000Y-119480000D02*
X174270000Y-116940000D01*
X173000000Y-120750000D02*
X174270000Y-119480000D01*
X170460000Y-99160000D02*
X173000000Y-101700000D01*
X170460000Y-99160000D02*
X170460000Y-94397500D01*
X155030580Y-74650580D02*
X153930000Y-73550000D01*
X160110580Y-74650580D02*
X155030580Y-74650580D01*
X161550000Y-76090000D02*
X160110580Y-74650580D01*
X149950580Y-74650580D02*
X148850000Y-73550000D01*
X152829420Y-74650580D02*
X149950580Y-74650580D01*
X153930000Y-73550000D02*
X152829420Y-74650580D01*
X145209420Y-74650580D02*
X143770000Y-76090000D01*
X147749420Y-74650580D02*
X145209420Y-74650580D01*
X148850000Y-73550000D02*
X147749420Y-74650580D01*
X137250580Y-74650580D02*
X136150000Y-73550000D01*
X142330580Y-74650580D02*
X137250580Y-74650580D01*
X143770000Y-76090000D02*
X142330580Y-74650580D01*
X129630580Y-74650580D02*
X128530000Y-73550000D01*
X135049420Y-74650580D02*
X129630580Y-74650580D01*
X136150000Y-73550000D02*
X135049420Y-74650580D01*
X124889420Y-74650580D02*
X123450000Y-76090000D01*
X127429420Y-74650580D02*
X124889420Y-74650580D01*
X128530000Y-73550000D02*
X127429420Y-74650580D01*
X119470580Y-74650580D02*
X118370000Y-73550000D01*
X122010580Y-74650580D02*
X119470580Y-74650580D01*
X123450000Y-76090000D02*
X122010580Y-74650580D01*
X161824000Y-130910000D02*
X161316000Y-131418000D01*
X173000000Y-130910000D02*
X161824000Y-130910000D01*
X160113919Y-131418000D02*
X152489500Y-131418000D01*
X161316000Y-131418000D02*
X160113919Y-131418000D01*
X152489500Y-131418000D02*
X143536000Y-131418000D01*
X134646000Y-131418000D02*
X134392000Y-131164000D01*
X143536000Y-131418000D02*
X134646000Y-131418000D01*
X125502000Y-131164000D02*
X125248000Y-131418000D01*
X134392000Y-131164000D02*
X125502000Y-131164000D01*
X116358000Y-131418000D02*
X116104000Y-131164000D01*
X125248000Y-131418000D02*
X116358000Y-131418000D01*
X115254001Y-132013999D02*
X116104000Y-131164000D01*
X114667999Y-132600001D02*
X115254001Y-132013999D01*
X109079999Y-132600001D02*
X114667999Y-132600001D01*
X108230000Y-133450000D02*
X109079999Y-132600001D01*
X160369999Y-77270001D02*
X161550000Y-76090000D01*
X160369999Y-85050001D02*
X160369999Y-77270001D01*
X173000000Y-94334000D02*
X169653998Y-94334000D01*
X169653998Y-94334000D02*
X160369999Y-85050001D01*
X165106000Y-99160000D02*
X170460000Y-99160000D01*
X162566000Y-101700000D02*
X165106000Y-99160000D01*
X161316000Y-101700000D02*
X162566000Y-101700000D01*
G04 #@! TO.N,SDA_1*
X160113919Y-126338000D02*
X152489500Y-126338000D01*
X161316000Y-126338000D02*
X160113919Y-126338000D01*
X152489500Y-126338000D02*
X143536000Y-126338000D01*
X134646000Y-126338000D02*
X134392000Y-126084000D01*
X143536000Y-126338000D02*
X134646000Y-126338000D01*
X133189919Y-126084000D02*
X132173919Y-125068000D01*
X134392000Y-126084000D02*
X133189919Y-126084000D01*
X132173919Y-125068000D02*
X122962000Y-125068000D01*
X122962000Y-125068000D02*
X120676000Y-125068000D01*
X120676000Y-125068000D02*
X120676000Y-125068000D01*
G04 #@! TO.N,SCL_1*
X160113919Y-128878000D02*
X152489500Y-128878000D01*
X161316000Y-128878000D02*
X160113919Y-128878000D01*
X151287419Y-128878000D02*
X143536000Y-128878000D01*
X152489500Y-128878000D02*
X151287419Y-128878000D01*
X134646000Y-128878000D02*
X134392000Y-128624000D01*
X143536000Y-128878000D02*
X134646000Y-128878000D01*
X126770002Y-128624000D02*
X125754002Y-127608000D01*
X134392000Y-128624000D02*
X126770002Y-128624000D01*
X125754002Y-127608000D02*
X122454000Y-127608000D01*
X122454000Y-127608000D02*
X122454000Y-127608000D01*
G04 #@! TO.N,Net-(D1-Pad1)*
X138543500Y-106843500D02*
X140043500Y-106843500D01*
X137093499Y-105393499D02*
X138543500Y-106843500D01*
X133151001Y-105393499D02*
X137093499Y-105393499D01*
X131701000Y-106843500D02*
X133151001Y-105393499D01*
X130201000Y-106843500D02*
X131701000Y-106843500D01*
X148640000Y-106907000D02*
X150140000Y-106907000D01*
X147126499Y-105393499D02*
X148640000Y-106907000D01*
X142993501Y-105393499D02*
X147126499Y-105393499D01*
X141543500Y-106843500D02*
X142993501Y-105393499D01*
X140043500Y-106843500D02*
X141543500Y-106843500D01*
X158101500Y-106589500D02*
X159601500Y-106589500D01*
X156968999Y-105456999D02*
X158101500Y-106589500D01*
X153090001Y-105456999D02*
X156968999Y-105456999D01*
X151640000Y-106907000D02*
X153090001Y-105456999D01*
X150140000Y-106907000D02*
X151640000Y-106907000D01*
X128701000Y-106843500D02*
X130201000Y-106843500D01*
X127187499Y-105329999D02*
X128701000Y-106843500D01*
X123245001Y-105329999D02*
X127187499Y-105329999D01*
X121795000Y-106780000D02*
X123245001Y-105329999D01*
X120295000Y-106780000D02*
X121795000Y-106780000D01*
X159601500Y-105089500D02*
X160451000Y-104240000D01*
X159601500Y-106589500D02*
X159601500Y-105089500D01*
X160451000Y-104240000D02*
X163208002Y-104240000D01*
X163208002Y-104240000D02*
X166650000Y-104240000D01*
X166650000Y-104240000D02*
X166650000Y-104240000D01*
G04 #@! TO.N,X+Out*
X127915000Y-110590000D02*
X124105000Y-106780000D01*
X159030000Y-110590000D02*
X127915000Y-110590000D01*
G04 #@! TO.N,Y+In*
X171797919Y-133450000D02*
X171740918Y-133392999D01*
X173000000Y-133450000D02*
X171797919Y-133450000D01*
X170965920Y-132618001D02*
X156928001Y-132618001D01*
X171797919Y-133450000D02*
X170965920Y-132618001D01*
X156928001Y-132618001D02*
X156928001Y-132618001D01*
G04 #@! TO.N,Z+In*
X170965920Y-127538001D02*
X147784001Y-127538001D01*
X173000000Y-128370000D02*
X171797919Y-128370000D01*
X171797919Y-128370000D02*
X170965920Y-127538001D01*
X147784001Y-127538001D02*
X147784001Y-127538001D01*
G04 #@! TO.N,X-In*
X126498000Y-121258000D02*
X125248000Y-121258000D01*
X128276000Y-119480000D02*
X126498000Y-121258000D01*
X169190000Y-119480000D02*
X128276000Y-119480000D01*
X173000000Y-123290000D02*
X169190000Y-119480000D01*
G04 #@! TO.N,Y-In*
X117354000Y-121004000D02*
X116104000Y-121004000D01*
X120997999Y-117360001D02*
X117354000Y-121004000D01*
X172150001Y-117360001D02*
X120997999Y-117360001D01*
X173000000Y-118210000D02*
X172150001Y-117360001D01*
G04 #@! TO.N,VbattIn*
X169952000Y-116178000D02*
X173000000Y-113130000D01*
X134392000Y-116178000D02*
X169952000Y-116178000D01*
G04 #@! TO.N,VbattOut*
X169123311Y-118410072D02*
X169069383Y-118464000D01*
X169751928Y-118410072D02*
X169123311Y-118410072D01*
X169069383Y-118464000D02*
X136678000Y-118464000D01*
X136678000Y-118464000D02*
X136678000Y-118464000D01*
G04 #@! TO.N,+3V3*
X143218500Y-134148500D02*
X143155000Y-134212000D01*
X142456500Y-78840000D02*
X141250000Y-80046500D01*
X150140000Y-80110000D02*
X148870000Y-78840000D01*
X148870000Y-78840000D02*
X142456500Y-78840000D01*
X125248000Y-133958000D02*
X134138000Y-133958000D01*
X143536000Y-133958000D02*
X152489500Y-133958000D01*
X124994000Y-133704000D02*
X125248000Y-133958000D01*
X116104000Y-133704000D02*
X124994000Y-133704000D01*
X143282000Y-133704000D02*
X143536000Y-133958000D01*
X134392000Y-133704000D02*
X143282000Y-133704000D01*
X152489500Y-133958000D02*
X161316000Y-133958000D01*
X114960500Y-78078000D02*
X139281500Y-78078000D01*
X139281500Y-78078000D02*
X141250000Y-80046500D01*
X114960500Y-78078000D02*
X111786000Y-78078000D01*
X111786000Y-78078000D02*
X111786000Y-78078000D01*
X110516000Y-133704000D02*
X112040000Y-133704000D01*
X108230000Y-135990000D02*
X110516000Y-133704000D01*
X112040000Y-133704000D02*
X116104000Y-133704000D01*
X111786000Y-78078000D02*
X111786000Y-78078000D01*
G04 #@! TO.N,Y+Out*
X136487500Y-109320000D02*
X134011000Y-106843500D01*
X146330000Y-109320000D02*
X137757500Y-109320000D01*
X136487500Y-109320000D02*
X139980000Y-109320000D01*
G04 #@! TO.N,Y-Out*
X118390000Y-114400000D02*
X161570000Y-114400000D01*
X161570000Y-114400000D02*
X162840000Y-113130000D01*
X162840000Y-113130000D02*
X162840000Y-113130000D01*
G04 #@! TO.N,X-Out*
X126130501Y-113250501D02*
X153829499Y-113250501D01*
X153829499Y-113250501D02*
X153829499Y-113250501D01*
G04 #@! TO.N,Net-(J13-Pad1)*
X173849999Y-79054999D02*
X173000000Y-78205000D01*
X173576001Y-102900001D02*
X174200001Y-102276001D01*
X174200001Y-79405001D02*
X173849999Y-79054999D01*
X174200001Y-102276001D02*
X174200001Y-79405001D01*
X141160001Y-102900001D02*
X173576001Y-102900001D01*
X122180000Y-83920000D02*
X141160001Y-102900001D01*
X120930000Y-83920000D02*
X122180000Y-83920000D01*
G04 #@! TO.N,Net-(J15-Pad1)*
X164745000Y-80745000D02*
X173000000Y-80745000D01*
X161570000Y-83920000D02*
X164745000Y-80745000D01*
G04 #@! TO.N,SDA_3*
X114159999Y-129806001D02*
X114159999Y-129806001D01*
X116358000Y-126338000D02*
X116104000Y-126084000D01*
X125248000Y-126338000D02*
X116358000Y-126338000D01*
X113056000Y-130910000D02*
X114159999Y-129806001D01*
X108230000Y-130910000D02*
X113056000Y-130910000D01*
G04 #@! TO.N,SCL_3*
X115596000Y-128116000D02*
X116104000Y-128624000D01*
X124994000Y-128624000D02*
X125248000Y-128878000D01*
X116104000Y-128624000D02*
X124994000Y-128624000D01*
X115850000Y-128370000D02*
X116104000Y-128624000D01*
X108230000Y-128370000D02*
X115850000Y-128370000D01*
G04 #@! TD*
M02*

File diff suppressed because it is too large Load Diff

@ -0,0 +1,15 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2018-12-13T18:51:49-05:00*
G04 #@! TF.ProjectId,pihat_template,70696861745F74656D706C6174652E6B,B1.1*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 12/13/2018 6:51:49 PM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

@ -0,0 +1,15 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2018-12-13T18:51:49-05:00*
G04 #@! TF.ProjectId,pihat_template,70696861745F74656D706C6174652E6B,B1.1*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Legend,Bot*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 12/13/2018 6:51:49 PM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

@ -0,0 +1,68 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2018-12-13T18:51:49-05:00*
G04 #@! TF.ProjectId,pihat_template,70696861745F74656D706C6174652E6B,B1.1*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Profile,NP*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 12/13/2018 6:51:49 PM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
%ADD10C,0.100000*%
G04 APERTURE END LIST*
D10*
X173127000Y-140879500D02*
X114127000Y-140879500D01*
X114190500Y-71070000D02*
X173190500Y-71070000D01*
X108920000Y-108070000D02*
G75*
G03X109920000Y-107070000I0J1000000D01*
G01*
X105039500Y-137879500D02*
G75*
G03X108039500Y-140879500I3000000J0D01*
G01*
X104920000Y-109070000D02*
X105055000Y-137958500D01*
X105920000Y-108070000D02*
G75*
G03X104920000Y-109070000I0J-1000000D01*
G01*
X108920000Y-108070000D02*
X105920000Y-108070000D01*
X104920000Y-90070000D02*
X104920000Y-74070000D01*
X109920000Y-92070000D02*
X109920000Y-107070000D01*
X105920000Y-91070000D02*
X108920000Y-91070000D01*
X109920000Y-92070000D02*
G75*
G03X108920000Y-91070000I-1000000J0D01*
G01*
X104920000Y-90070000D02*
G75*
G03X105920000Y-91070000I1000000J0D01*
G01*
X166912500Y-140879500D02*
X107912500Y-140879500D01*
X176111500Y-73442500D02*
X176016500Y-138029500D01*
X107920000Y-71070000D02*
X166920000Y-71070000D01*
X172984500Y-140895000D02*
G75*
G03X175984500Y-137895000I0J3000000D01*
G01*
X107920000Y-71070000D02*
G75*
G03X104920000Y-74070000I0J-3000000D01*
G01*
X176190500Y-74070000D02*
G75*
G03X173190500Y-71070000I-3000000J0D01*
G01*
M02*

@ -0,0 +1,755 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2018-12-13T18:51:49-05:00*
G04 #@! TF.ProjectId,pihat_template,70696861745F74656D706C6174652E6B,B1.1*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Copper,L1,Top,Signal*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 12/13/2018 6:51:49 PM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 #@! TA.AperFunction,ComponentPad*
%ADD10R,1.700000X1.700000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD11O,1.700000X1.700000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD12O,1.600000X1.600000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD13C,1.600000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD14O,2.200000X2.200000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD15R,2.200000X2.200000*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD16R,1.524000X1.998980*%
G04 #@! TD*
G04 #@! TA.AperFunction,ComponentPad*
%ADD17O,1.524000X1.998980*%
G04 #@! TD*
G04 #@! TA.AperFunction,ViaPad*
%ADD18C,0.889000*%
G04 #@! TD*
G04 #@! TA.AperFunction,Conductor*
%ADD19C,0.400000*%
G04 #@! TD*
G04 APERTURE END LIST*
D10*
G04 #@! TO.P,J11,1*
G04 #@! TO.N,X-In*
X125248000Y-121258000D03*
D11*
G04 #@! TO.P,J11,2*
G04 #@! TO.N,X-Out*
X125248000Y-123798000D03*
G04 #@! TO.P,J11,3*
G04 #@! TO.N,SDA_3*
X125248000Y-126338000D03*
G04 #@! TO.P,J11,4*
G04 #@! TO.N,SCL_3*
X125248000Y-128878000D03*
G04 #@! TO.P,J11,5*
G04 #@! TO.N,GND*
X125248000Y-131418000D03*
G04 #@! TO.P,J11,6*
G04 #@! TO.N,+3V3*
X125248000Y-133958000D03*
G04 #@! TD*
D10*
G04 #@! TO.P,OUT-,1*
G04 #@! TO.N,GND*
X161316000Y-101700000D03*
G04 #@! TD*
G04 #@! TO.P,IN+,1*
G04 #@! TO.N,Net-(J13-Pad1)*
X120930000Y-83920000D03*
G04 #@! TD*
G04 #@! TO.P,IN-,1*
G04 #@! TO.N,GND*
X120930000Y-101700000D03*
G04 #@! TD*
G04 #@! TO.P,OUT+,1*
G04 #@! TO.N,Net-(J15-Pad1)*
X161570000Y-83920000D03*
G04 #@! TD*
G04 #@! TO.P,J6,1*
G04 #@! TO.N,+5V*
X108230000Y-138530000D03*
D11*
G04 #@! TO.P,J6,2*
G04 #@! TO.N,+3V3*
X108230000Y-135990000D03*
G04 #@! TO.P,J6,3*
G04 #@! TO.N,GND*
X108230000Y-133450000D03*
G04 #@! TO.P,J6,4*
G04 #@! TO.N,SDA_3*
X108230000Y-130910000D03*
G04 #@! TO.P,J6,5*
G04 #@! TO.N,SCL_3*
X108230000Y-128370000D03*
G04 #@! TD*
D12*
G04 #@! TO.P,R1,2*
G04 #@! TO.N,SCL_3*
X155220000Y-80110000D03*
D13*
G04 #@! TO.P,R1,1*
G04 #@! TO.N,+3V3*
X150140000Y-80110000D03*
G04 #@! TD*
G04 #@! TO.P,R2,1*
G04 #@! TO.N,+3V3*
X141250000Y-80046500D03*
D12*
G04 #@! TO.P,R2,2*
G04 #@! TO.N,SDA_3*
X146330000Y-80046500D03*
G04 #@! TD*
D10*
G04 #@! TO.P,J2,1*
G04 #@! TO.N,VbattIn*
X173000000Y-113130000D03*
D11*
G04 #@! TO.P,J2,2*
G04 #@! TO.N,VbattOut*
X173000000Y-110590000D03*
G04 #@! TD*
G04 #@! TO.P,J4,2*
G04 #@! TO.N,GND*
X173000000Y-94334000D03*
D10*
G04 #@! TO.P,J4,1*
G04 #@! TO.N,Net-(J3-Pad1)*
X173000000Y-91794000D03*
G04 #@! TD*
G04 #@! TO.P,J3,1*
G04 #@! TO.N,Net-(J4-Pad1)*
X173000000Y-99160000D03*
D11*
G04 #@! TO.P,J3,2*
G04 #@! TO.N,GND*
X173000000Y-101700000D03*
G04 #@! TD*
D10*
G04 #@! TO.P,J10,1*
G04 #@! TO.N,VbattIn*
X134392000Y-121004000D03*
D11*
G04 #@! TO.P,J10,2*
G04 #@! TO.N,VbattOut*
X134392000Y-123544000D03*
G04 #@! TO.P,J10,3*
G04 #@! TO.N,SDA_1*
X134392000Y-126084000D03*
G04 #@! TO.P,J10,4*
G04 #@! TO.N,SCL_1*
X134392000Y-128624000D03*
G04 #@! TO.P,J10,5*
G04 #@! TO.N,GND*
X134392000Y-131164000D03*
G04 #@! TO.P,J10,6*
G04 #@! TO.N,+3V3*
X134392000Y-133704000D03*
G04 #@! TD*
G04 #@! TO.P,J12,6*
G04 #@! TO.N,+3V3*
X116104000Y-133704000D03*
G04 #@! TO.P,J12,5*
G04 #@! TO.N,GND*
X116104000Y-131164000D03*
G04 #@! TO.P,J12,4*
G04 #@! TO.N,SCL_3*
X116104000Y-128624000D03*
G04 #@! TO.P,J12,3*
G04 #@! TO.N,SDA_3*
X116104000Y-126084000D03*
G04 #@! TO.P,J12,2*
G04 #@! TO.N,Y-Out*
X116104000Y-123544000D03*
D10*
G04 #@! TO.P,J12,1*
G04 #@! TO.N,Y-In*
X116104000Y-121004000D03*
G04 #@! TD*
G04 #@! TO.P,J8,1*
G04 #@! TO.N,Y+In*
X152489500Y-121258000D03*
D11*
G04 #@! TO.P,J8,2*
G04 #@! TO.N,Y+Out*
X152489500Y-123798000D03*
G04 #@! TO.P,J8,3*
G04 #@! TO.N,SDA_1*
X152489500Y-126338000D03*
G04 #@! TO.P,J8,4*
G04 #@! TO.N,SCL_1*
X152489500Y-128878000D03*
G04 #@! TO.P,J8,5*
G04 #@! TO.N,GND*
X152489500Y-131418000D03*
G04 #@! TO.P,J8,6*
G04 #@! TO.N,+3V3*
X152489500Y-133958000D03*
G04 #@! TD*
G04 #@! TO.P,J7,6*
G04 #@! TO.N,+3V3*
X161316000Y-133958000D03*
G04 #@! TO.P,J7,5*
G04 #@! TO.N,GND*
X161316000Y-131418000D03*
G04 #@! TO.P,J7,4*
G04 #@! TO.N,SCL_1*
X161316000Y-128878000D03*
G04 #@! TO.P,J7,3*
G04 #@! TO.N,SDA_1*
X161316000Y-126338000D03*
G04 #@! TO.P,J7,2*
G04 #@! TO.N,X+Out*
X161316000Y-123798000D03*
D10*
G04 #@! TO.P,J7,1*
G04 #@! TO.N,X+In*
X161316000Y-121258000D03*
G04 #@! TD*
G04 #@! TO.P,J9,1*
G04 #@! TO.N,Z+In*
X143536000Y-121258000D03*
D11*
G04 #@! TO.P,J9,2*
G04 #@! TO.N,Z+Out*
X143536000Y-123798000D03*
G04 #@! TO.P,J9,3*
G04 #@! TO.N,SDA_1*
X143536000Y-126338000D03*
G04 #@! TO.P,J9,4*
G04 #@! TO.N,SCL_1*
X143536000Y-128878000D03*
G04 #@! TO.P,J9,5*
G04 #@! TO.N,GND*
X143536000Y-131418000D03*
G04 #@! TO.P,J9,6*
G04 #@! TO.N,+3V3*
X143536000Y-133958000D03*
G04 #@! TD*
D10*
G04 #@! TO.P,J1,1*
G04 #@! TO.N,X+In*
X173000000Y-138530000D03*
D11*
G04 #@! TO.P,J1,2*
G04 #@! TO.N,GND*
X173000000Y-135990000D03*
G04 #@! TO.P,J1,3*
G04 #@! TO.N,Y+In*
X173000000Y-133450000D03*
G04 #@! TO.P,J1,4*
G04 #@! TO.N,GND*
X173000000Y-130910000D03*
G04 #@! TO.P,J1,5*
G04 #@! TO.N,Z+In*
X173000000Y-128370000D03*
G04 #@! TO.P,J1,6*
G04 #@! TO.N,GND*
X173000000Y-125830000D03*
G04 #@! TO.P,J1,7*
G04 #@! TO.N,X-In*
X173000000Y-123290000D03*
G04 #@! TO.P,J1,8*
G04 #@! TO.N,GND*
X173000000Y-120750000D03*
G04 #@! TO.P,J1,9*
G04 #@! TO.N,Y-In*
X173000000Y-118210000D03*
G04 #@! TO.P,J1,10*
G04 #@! TO.N,GND*
X173000000Y-115670000D03*
G04 #@! TD*
D14*
G04 #@! TO.P,D4,2*
G04 #@! TO.N,X-Out*
X153950000Y-106907000D03*
D15*
G04 #@! TO.P,D4,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X150140000Y-106907000D03*
G04 #@! TD*
G04 #@! TO.P,D3,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X140043500Y-106843500D03*
D14*
G04 #@! TO.P,D3,2*
G04 #@! TO.N,Z+Out*
X143853500Y-106843500D03*
G04 #@! TD*
G04 #@! TO.P,D5,2*
G04 #@! TO.N,Y-Out*
X163411500Y-106589500D03*
D15*
G04 #@! TO.P,D5,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X159601500Y-106589500D03*
G04 #@! TD*
G04 #@! TO.P,D2,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X130201000Y-106843500D03*
D14*
G04 #@! TO.P,D2,2*
G04 #@! TO.N,Y+Out*
X134011000Y-106843500D03*
G04 #@! TD*
D10*
G04 #@! TO.P,J5,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X173000000Y-75665000D03*
D11*
G04 #@! TO.P,J5,2*
G04 #@! TO.N,Net-(J13-Pad1)*
X173000000Y-78205000D03*
G04 #@! TO.P,J5,3*
G04 #@! TO.N,Net-(J15-Pad1)*
X173000000Y-80745000D03*
G04 #@! TO.P,J5,4*
G04 #@! TO.N,Net-(J3-Pad1)*
X173000000Y-83285000D03*
G04 #@! TO.P,J5,5*
G04 #@! TO.N,Net-(J4-Pad1)*
X173000000Y-85825000D03*
G04 #@! TD*
D15*
G04 #@! TO.P,D1,1*
G04 #@! TO.N,Net-(D1-Pad1)*
X120295000Y-106780000D03*
D14*
G04 #@! TO.P,D1,2*
G04 #@! TO.N,X+Out*
X124105000Y-106780000D03*
G04 #@! TD*
D16*
G04 #@! TO.P,GPIO,1*
G04 #@! TO.N,+3V3*
X113290000Y-76338920D03*
D17*
G04 #@! TO.P,GPIO,2*
G04 #@! TO.N,+5V*
X113290000Y-73301080D03*
G04 #@! TO.P,GPIO,3*
G04 #@! TO.N,SDA_1*
X115830000Y-76338920D03*
G04 #@! TO.P,GPIO,4*
G04 #@! TO.N,+5V*
X115830000Y-73301080D03*
G04 #@! TO.P,GPIO,5*
G04 #@! TO.N,SCL_1*
X118370000Y-76338920D03*
G04 #@! TO.P,GPIO,6*
G04 #@! TO.N,GND*
X118370000Y-73301080D03*
G04 #@! TO.P,GPIO,7*
G04 #@! TO.N,Net-(P3-Pad7)*
X120910000Y-76338920D03*
G04 #@! TO.P,GPIO,8*
G04 #@! TO.N,Net-(P3-Pad8)*
X120910000Y-73301080D03*
G04 #@! TO.P,GPIO,9*
G04 #@! TO.N,GND*
X123450000Y-76338920D03*
G04 #@! TO.P,GPIO,10*
G04 #@! TO.N,Net-(P3-Pad10)*
X123450000Y-73301080D03*
G04 #@! TO.P,GPIO,11*
G04 #@! TO.N,Net-(P3-Pad11)*
X125990000Y-76338920D03*
G04 #@! TO.P,GPIO,12*
G04 #@! TO.N,Net-(P3-Pad12)*
X125990000Y-73301080D03*
G04 #@! TO.P,GPIO,13*
G04 #@! TO.N,Net-(P3-Pad13)*
X128530000Y-76338920D03*
G04 #@! TO.P,GPIO,14*
G04 #@! TO.N,GND*
X128530000Y-73301080D03*
G04 #@! TO.P,GPIO,15*
G04 #@! TO.N,Net-(P3-Pad15)*
X131070000Y-76338920D03*
G04 #@! TO.P,GPIO,16*
G04 #@! TO.N,Net-(P3-Pad16)*
X131070000Y-73301080D03*
G04 #@! TO.P,GPIO,17*
G04 #@! TO.N,Net-(P3-Pad17)*
X133610000Y-76338920D03*
G04 #@! TO.P,GPIO,18*
G04 #@! TO.N,Net-(P3-Pad18)*
X133610000Y-73301080D03*
G04 #@! TO.P,GPIO,19*
G04 #@! TO.N,Net-(P3-Pad19)*
X136150000Y-76338920D03*
G04 #@! TO.P,GPIO,20*
G04 #@! TO.N,GND*
X136150000Y-73301080D03*
G04 #@! TO.P,GPIO,21*
G04 #@! TO.N,Net-(P3-Pad21)*
X138690000Y-76338920D03*
G04 #@! TO.P,GPIO,22*
G04 #@! TO.N,Net-(P3-Pad22)*
X138690000Y-73301080D03*
G04 #@! TO.P,GPIO,23*
G04 #@! TO.N,Net-(P3-Pad23)*
X141230000Y-76338920D03*
G04 #@! TO.P,GPIO,24*
G04 #@! TO.N,Net-(P3-Pad24)*
X141230000Y-73301080D03*
G04 #@! TO.P,GPIO,25*
G04 #@! TO.N,GND*
X143770000Y-76338920D03*
G04 #@! TO.P,GPIO,26*
G04 #@! TO.N,Net-(P3-Pad26)*
X143770000Y-73301080D03*
G04 #@! TO.P,GPIO,27*
G04 #@! TO.N,SDA_3*
X146310000Y-76338920D03*
G04 #@! TO.P,GPIO,28*
G04 #@! TO.N,SCL_3*
X146310000Y-73301080D03*
G04 #@! TO.P,GPIO,29*
G04 #@! TO.N,Net-(P3-Pad29)*
X148850000Y-76338920D03*
G04 #@! TO.P,GPIO,30*
G04 #@! TO.N,GND*
X148850000Y-73301080D03*
G04 #@! TO.P,GPIO,31*
G04 #@! TO.N,Net-(P3-Pad31)*
X151390000Y-76338920D03*
G04 #@! TO.P,GPIO,32*
G04 #@! TO.N,Net-(P3-Pad32)*
X151390000Y-73301080D03*
G04 #@! TO.P,GPIO,33*
G04 #@! TO.N,Net-(P3-Pad33)*
X153930000Y-76338920D03*
G04 #@! TO.P,GPIO,34*
G04 #@! TO.N,GND*
X153930000Y-73301080D03*
G04 #@! TO.P,GPIO,35*
G04 #@! TO.N,Net-(P3-Pad35)*
X156470000Y-76338920D03*
G04 #@! TO.P,GPIO,36*
G04 #@! TO.N,Net-(P3-Pad36)*
X156470000Y-73301080D03*
G04 #@! TO.P,GPIO,37*
G04 #@! TO.N,Net-(P3-Pad37)*
X159010000Y-76338920D03*
G04 #@! TO.P,GPIO,38*
G04 #@! TO.N,N/C*
X159010000Y-73301080D03*
G04 #@! TO.P,GPIO,39*
G04 #@! TO.N,GND*
X161550000Y-76338920D03*
G04 #@! TO.P,GPIO,40*
G04 #@! TO.N,Net-(P3-Pad40)*
X161550000Y-73301080D03*
G04 #@! TD*
D18*
G04 #@! TO.N,SDA_1*
X120676000Y-125068000D03*
G04 #@! TO.N,SCL_1*
X122454000Y-127608000D03*
G04 #@! TO.N,Net-(D1-Pad1)*
X166650000Y-104240000D03*
G04 #@! TO.N,X+Out*
X159030000Y-110590000D03*
G04 #@! TO.N,Y+In*
X156928001Y-132618001D03*
G04 #@! TO.N,Z+In*
X147784001Y-127538001D03*
G04 #@! TO.N,VbattIn*
X134392000Y-116178000D03*
G04 #@! TO.N,VbattOut*
X169751928Y-118410072D03*
X136678000Y-118464000D03*
G04 #@! TO.N,+3V3*
X112040000Y-133704000D03*
X111786000Y-78078000D03*
G04 #@! TO.N,Y+Out*
X146330000Y-109320000D03*
G04 #@! TO.N,Y-Out*
X118390000Y-114400000D03*
X118390000Y-114400000D03*
X162840000Y-113130000D03*
G04 #@! TO.N,X-Out*
X126130501Y-113250501D03*
X126130501Y-113250501D03*
X153829499Y-113250501D03*
G04 #@! TO.N,SDA_3*
X114159999Y-129806001D03*
G04 #@! TD*
D19*
G04 #@! TO.N,GND*
X123450000Y-76090000D02*
X123450000Y-76320000D01*
X120930000Y-97910000D02*
X120930000Y-99160000D01*
X119729999Y-96709999D02*
X120930000Y-97910000D01*
X119729999Y-80040001D02*
X119729999Y-96709999D01*
X123450000Y-76320000D02*
X119729999Y-80040001D01*
X173849999Y-114820001D02*
X173000000Y-115670000D01*
X174270000Y-114400000D02*
X173849999Y-114820001D01*
X174270000Y-102970000D02*
X174270000Y-114400000D01*
X173000000Y-101700000D02*
X174270000Y-102970000D01*
X120930000Y-99160000D02*
X120930000Y-101700000D01*
G04 #@! TO.N,+5V*
X113290000Y-73550000D02*
X115830000Y-73550000D01*
X114402001Y-74662001D02*
X113290000Y-73550000D01*
X114402001Y-77618411D02*
X114402001Y-74662001D01*
X113056000Y-78964412D02*
X114402001Y-77618411D01*
X113056000Y-137006000D02*
X113056000Y-78964412D01*
X108230000Y-138530000D02*
X111532000Y-138530000D01*
X111532000Y-138530000D02*
X113056000Y-137006000D01*
G04 #@! TO.N,SDA_1*
X115830000Y-105145002D02*
X115830000Y-76090000D01*
X120676000Y-109991002D02*
X120676000Y-125068000D01*
X115830000Y-105145002D02*
X120676000Y-109991002D01*
G04 #@! TO.N,SCL_1*
X118370000Y-102024998D02*
X118370000Y-76090000D01*
X121745001Y-105399999D02*
X118370000Y-102024998D01*
X121745001Y-126899001D02*
X121745001Y-105399999D01*
X122454000Y-127608000D02*
X121745001Y-126899001D01*
G04 #@! TO.N,Net-(D1-Pad1)*
X171750000Y-75665000D02*
X173000000Y-75665000D01*
X166650000Y-80765000D02*
X171750000Y-75665000D01*
X166650000Y-104240000D02*
X166650000Y-80765000D01*
G04 #@! TO.N,X+Out*
X159030000Y-110590000D02*
X159030000Y-110590000D01*
X159030000Y-111218617D02*
X159030000Y-110590000D01*
X159030000Y-122714081D02*
X159030000Y-111218617D01*
X160113919Y-123798000D02*
X159030000Y-122714081D01*
X161316000Y-123798000D02*
X160113919Y-123798000D01*
G04 #@! TO.N,X+In*
X162516001Y-122458001D02*
X161316000Y-121258000D01*
X162516001Y-129296001D02*
X162516001Y-122458001D01*
X171750000Y-138530000D02*
X162516001Y-129296001D01*
X173000000Y-138530000D02*
X171750000Y-138530000D01*
G04 #@! TO.N,Y+In*
X153739500Y-121258000D02*
X152489500Y-121258000D01*
X156928001Y-124446501D02*
X153739500Y-121258000D01*
X156928001Y-132618001D02*
X156928001Y-124446501D01*
G04 #@! TO.N,Z+In*
X144786000Y-121258000D02*
X143536000Y-121258000D01*
X147784001Y-124256001D02*
X144786000Y-121258000D01*
X147784001Y-127538001D02*
X147784001Y-124256001D01*
G04 #@! TO.N,VbattIn*
X134392000Y-121004000D02*
X134392000Y-116178000D01*
X134392000Y-115924000D02*
X134646000Y-116178000D01*
X134392000Y-116178000D02*
X134392000Y-115924000D01*
G04 #@! TO.N,VbattOut*
X170460000Y-110590000D02*
X173000000Y-110590000D01*
X169751928Y-111298072D02*
X170460000Y-110590000D01*
X169751928Y-111298072D02*
X169751928Y-118410072D01*
X169751928Y-118210000D02*
X169751928Y-118410072D01*
X169751928Y-118410072D02*
X169751928Y-118210000D01*
X136678000Y-121258000D02*
X134392000Y-123544000D01*
X136678000Y-118464000D02*
X136678000Y-121258000D01*
G04 #@! TO.N,+3V3*
X113290000Y-76090000D02*
X113290000Y-76574000D01*
X112040000Y-133704000D02*
X112040000Y-133704000D01*
X112040000Y-127608000D02*
X112040000Y-133704000D01*
X112040000Y-127100000D02*
X112040000Y-127608000D01*
X111737952Y-126797952D02*
X112040000Y-127100000D01*
X111786000Y-78078000D02*
X111737952Y-126797952D01*
X113290000Y-76090000D02*
X113290000Y-76828000D01*
X113290000Y-76828000D02*
X111786000Y-78078000D01*
G04 #@! TO.N,Y+Out*
X146330000Y-109320000D02*
X146330000Y-109320000D01*
X146330000Y-120369000D02*
X146330000Y-119480000D01*
X146330000Y-120369000D02*
X146330000Y-118210000D01*
X146330000Y-119099000D02*
X146330000Y-118210000D01*
X146330000Y-118210000D02*
X146330000Y-109320000D01*
X149060500Y-120369000D02*
X152489500Y-123798000D01*
X146330000Y-120369000D02*
X149060500Y-120369000D01*
G04 #@! TO.N,Y-Out*
X118390000Y-114400000D02*
X118390000Y-114400000D01*
X118390000Y-114400000D02*
X118390000Y-114400000D01*
X162840000Y-107161000D02*
X163411500Y-106589500D01*
X162840000Y-113130000D02*
X162840000Y-107161000D01*
X118390000Y-121258000D02*
X118390000Y-114400000D01*
X116104000Y-123544000D02*
X118390000Y-121258000D01*
G04 #@! TO.N,Z+Out*
X142753501Y-107943499D02*
X143853500Y-106843500D01*
X142335999Y-108361001D02*
X142753501Y-107943499D01*
X142335999Y-122597999D02*
X142335999Y-108361001D01*
X143536000Y-123798000D02*
X142335999Y-122597999D01*
G04 #@! TO.N,X-Out*
X126130501Y-113250501D02*
X126010000Y-113130000D01*
X126130501Y-113250501D02*
X126130501Y-113250501D01*
X126130501Y-113250501D02*
X126130501Y-113250501D01*
X153829499Y-107027501D02*
X153950000Y-106907000D01*
X153829499Y-113250501D02*
X153829499Y-107027501D01*
X126097999Y-122948001D02*
X125248000Y-123798000D01*
X126448001Y-122597999D02*
X126097999Y-122948001D01*
X126448001Y-120127999D02*
X126448001Y-122597999D01*
X126130501Y-119810499D02*
X126448001Y-120127999D01*
X126130501Y-113250501D02*
X126130501Y-119810499D01*
G04 #@! TO.N,Net-(J3-Pad1)*
X173000000Y-90544000D02*
X173000000Y-91794000D01*
X174270000Y-89274000D02*
X173000000Y-90544000D01*
X174270000Y-84555000D02*
X174270000Y-89274000D01*
X173000000Y-83285000D02*
X174270000Y-84555000D01*
G04 #@! TO.N,Net-(J4-Pad1)*
X172150001Y-86674999D02*
X173000000Y-85825000D01*
X171799999Y-87025001D02*
X172150001Y-86674999D01*
X171799999Y-96709999D02*
X171799999Y-87025001D01*
X173000000Y-97910000D02*
X171799999Y-96709999D01*
X173000000Y-99160000D02*
X173000000Y-97910000D01*
G04 #@! TO.N,SDA_3*
X145530001Y-80846499D02*
X146330000Y-80046500D01*
X128750999Y-97625501D02*
X145530001Y-80846499D01*
X128750999Y-125756001D02*
X128750999Y-97625501D01*
X145197990Y-77202010D02*
X146310000Y-76090000D01*
X145197990Y-78914490D02*
X145197990Y-77202010D01*
X146330000Y-80046500D02*
X145197990Y-78914490D01*
X114159999Y-128028001D02*
X116104000Y-126084000D01*
X114159999Y-129806001D02*
X114159999Y-128028001D01*
X127032080Y-125756001D02*
X128750999Y-125756001D01*
X126450081Y-126338000D02*
X127032080Y-125756001D01*
X125248000Y-126338000D02*
X126450081Y-126338000D01*
G04 #@! TO.N,SCL_3*
X147749420Y-74989420D02*
X146310000Y-73550000D01*
X149310609Y-74989420D02*
X147749420Y-74989420D01*
X149962010Y-75640821D02*
X149310609Y-74989420D01*
X149962010Y-76721039D02*
X149962010Y-75640821D01*
X150929391Y-77688420D02*
X149962010Y-76721039D01*
X152798420Y-77688420D02*
X150929391Y-77688420D01*
X155220000Y-80110000D02*
X152798420Y-77688420D01*
X154420001Y-80909999D02*
X155220000Y-80110000D01*
X131651001Y-103678999D02*
X154420001Y-80909999D01*
X131651001Y-125395999D02*
X131651001Y-103678999D01*
X129018999Y-128028001D02*
X131651001Y-125395999D01*
X126097999Y-128028001D02*
X129018999Y-128028001D01*
X125248000Y-128878000D02*
X126097999Y-128028001D01*
G04 #@! TD*
M02*

File diff suppressed because it is too large Load Diff

@ -0,0 +1,15 @@
G04 #@! TF.GenerationSoftware,KiCad,Pcbnew,(5.0.1)-4*
G04 #@! TF.CreationDate,2018-12-13T18:51:49-05:00*
G04 #@! TF.ProjectId,pihat_template,70696861745F74656D706C6174652E6B,B1.1*
G04 #@! TF.SameCoordinates,Original*
G04 #@! TF.FileFunction,Paste,Top*
G04 #@! TF.FilePolarity,Positive*
%FSLAX46Y46*%
G04 Gerber Fmt 4.6, Leading zero omitted, Abs format (unit mm)*
G04 Created by KiCad (PCBNEW (5.0.1)-4) date 12/13/2018 6:51:49 PM*
%MOMM*%
%LPD*%
G01*
G04 APERTURE LIST*
G04 APERTURE END LIST*
M02*

File diff suppressed because it is too large Load Diff

@ -0,0 +1,7 @@
M48
INCH,TZ
%
G90
G05
T0
M30

@ -0,0 +1,162 @@
M48
INCH,TZ
T1C0.0250
T2C0.0315
T3C0.0394
T4C0.0394
T5C0.0433
T6C0.1181
%
G90
G05
T1
X44010Y-30739
X44110Y-52639
X44945Y-51105
X46610Y-45039
X46610Y-45039
X47510Y-49239
X48210Y-50239
X49658Y-44587
X49658Y-44587
X52910Y-45739
X53810Y-46639
X57610Y-43039
X58183Y-50212
X60563Y-44587
X61783Y-52212
X62610Y-43539
X64110Y-44539
X65610Y-41039
X66831Y-46618
T2
X59110Y-31539
X61110Y-31539
X55610Y-31514
X57610Y-31514
T3
X68110Y-36139
X68110Y-37139
X47610Y-40039
X45710Y-47639
X45710Y-48639
X45710Y-49639
X45710Y-50639
X45710Y-51639
X45710Y-52639
X49310Y-47739
X49310Y-48739
X49310Y-49739
X49310Y-50739
X49310Y-51739
X49310Y-52739
X52910Y-47639
X52910Y-48639
X52910Y-49639
X52910Y-50639
X52910Y-51639
X52910Y-52639
X63510Y-47739
X63510Y-48739
X63510Y-49739
X63510Y-50739
X63510Y-51739
X63510Y-52739
X42610Y-50539
X42610Y-51539
X42610Y-52539
X42610Y-53539
X42610Y-54539
X63610Y-33039
X63510Y-40039
X56510Y-47739
X56510Y-48739
X56510Y-49739
X56510Y-50739
X56510Y-51739
X56510Y-52739
X47610Y-33039
X68110Y-43539
X68110Y-44539
X68110Y-29789
X68110Y-30789
X68110Y-31789
X68110Y-32789
X68110Y-33789
X68110Y-45539
X68110Y-46539
X68110Y-47539
X68110Y-48539
X68110Y-49539
X68110Y-50539
X68110Y-51539
X68110Y-52539
X68110Y-53539
X68110Y-54539
X68110Y-39039
X68110Y-40039
X60035Y-47739
X60035Y-48739
X60035Y-49739
X60035Y-50739
X60035Y-51739
X60035Y-52739
T4
X44602Y-28957
X44602Y-29957
X45602Y-28957
X45602Y-29957
X46602Y-28957
X46602Y-29957
X47602Y-28957
X47602Y-29957
X48602Y-28957
X48602Y-29957
X49602Y-28957
X49602Y-29957
X50602Y-28957
X50602Y-29957
X51602Y-28957
X51602Y-29957
X52602Y-28957
X52602Y-29957
X53602Y-28957
X53602Y-29957
X54602Y-28957
X54602Y-29957
X55602Y-28957
X55602Y-29957
X56602Y-28957
X56602Y-29957
X57602Y-28957
X57602Y-29957
X58602Y-28957
X58602Y-29957
X59602Y-28957
X59602Y-29957
X60602Y-28957
X60602Y-29957
X61602Y-28957
X61602Y-29957
X62602Y-28957
X62602Y-29957
X63602Y-28957
X63602Y-29957
T5
X59110Y-42089
X60610Y-42089
X51260Y-42064
X52760Y-42064
X47360Y-42039
X48860Y-42039
X62835Y-41964
X64335Y-41964
X55135Y-42064
X56635Y-42064
T6
X65520Y-48748
X65520Y-29457
X42685Y-48748
X42685Y-29457
T0
M30

@ -0,0 +1,349 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# pihat_template-rescue_+3.3V-PiHatAx5043-cache
#
DEF pihat_template-rescue_+3.3V-PiHatAx5043-cache #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "pihat_template-rescue_+3.3V-PiHatAx5043-cache" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# pihat_template-rescue_+5V-power
#
DEF pihat_template-rescue_+5V-power #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "pihat_template-rescue_+5V-power" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +5V 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# pihat_template-rescue_CONN_01X01-conn2
#
DEF pihat_template-rescue_CONN_01X01-conn2 J 0 40 Y N 1 F N
F0 "J" 0 100 50 H V C CNN
F1 "pihat_template-rescue_CONN_01X01-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 5 10 -5 0 1 0 N
S -50 50 50 -50 0 1 0 N
X P1 1 -200 0 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_CONN_01X02-conn2
#
DEF pihat_template-rescue_CONN_01X02-conn2 J 0 40 Y N 1 F N
F0 "J" 0 150 50 H V C CNN
F1 "pihat_template-rescue_CONN_01X02-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 100 50 -100 0 1 0 N
X P1 1 -200 50 150 R 50 50 1 1 P
X P2 2 -200 -50 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_CONN_01X02_FEMALE-conn2
#
DEF pihat_template-rescue_CONN_01X02_FEMALE-conn2 J 0 40 Y N 1 F N
F0 "J" 0 200 50 H V C CNN
F1 "pihat_template-rescue_CONN_01X02_FEMALE-conn2" 75 -200 50 H V C CNN
F2 "" 0 100 50 H I C CNN
F3 "" 0 100 50 H I C CNN
DRAW
A 150 -100 50 901 -901 0 1 0 N 150 -50 150 -150
A 150 100 50 901 -901 0 1 0 N 150 150 150 50
X 1 1 -100 100 200 R 50 50 1 1 P
X 2 2 -100 -100 200 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_CONN_01X05-conn2
#
DEF pihat_template-rescue_CONN_01X05-conn2 J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "pihat_template-rescue_CONN_01X05-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 -195 10 -205 0 1 0 N
S -50 -95 10 -105 0 1 0 N
S -50 5 10 -5 0 1 0 N
S -50 105 10 95 0 1 0 N
S -50 205 10 195 0 1 0 N
S -50 250 50 -250 0 1 0 N
X P1 1 -200 200 150 R 50 50 1 1 P
X P2 2 -200 100 150 R 50 50 1 1 P
X P3 3 -200 0 150 R 50 50 1 1 P
X P4 4 -200 -100 150 R 50 50 1 1 P
X P5 5 -200 -200 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Conn_01x05_Female-Connector
#
DEF pihat_template-rescue_Conn_01x05_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "pihat_template-rescue_Conn_01x05_Female-Connector" 0 -300 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_2 2 -200 100 150 R 50 50 1 1 P
X Pin_3 3 -200 0 150 R 50 50 1 1 P
X Pin_4 4 -200 -100 150 R 50 50 1 1 P
X Pin_5 5 -200 -200 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Conn_01x06_Female-Connector
#
DEF pihat_template-rescue_Conn_01x06_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "pihat_template-rescue_Conn_01x06_Female-Connector" 0 -400 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
P 2 1 1 6 -50 -300 -20 -300 N
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_2 2 -200 100 150 R 50 50 1 1 P
X Pin_3 3 -200 0 150 R 50 50 1 1 P
X Pin_4 4 -200 -100 150 R 50 50 1 1 P
X Pin_5 5 -200 -200 150 R 50 50 1 1 P
X Pin_6 6 -200 -300 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Conn_01x10_Female-Connector
#
DEF pihat_template-rescue_Conn_01x10_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 500 50 H V C CNN
F1 "pihat_template-rescue_Conn_01x10_Female-Connector" 0 -600 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -500 20 901 -901 1 1 6 N 0 -480 0 -520
A 0 -400 20 901 -901 1 1 6 N 0 -380 0 -420
A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
A 0 300 20 901 -901 1 1 6 N 0 320 0 280
A 0 400 20 901 -901 1 1 6 N 0 420 0 380
P 2 1 1 6 -50 -500 -20 -500 N
P 2 1 1 6 -50 -400 -20 -400 N
P 2 1 1 6 -50 -300 -20 -300 N
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
P 2 1 1 6 -50 300 -20 300 N
P 2 1 1 6 -50 400 -20 400 N
X Pin_1 1 -200 400 150 R 50 50 1 1 P
X Pin_10 10 -200 -500 150 R 50 50 1 1 P
X Pin_2 2 -200 300 150 R 50 50 1 1 P
X Pin_3 3 -200 200 150 R 50 50 1 1 P
X Pin_4 4 -200 100 150 R 50 50 1 1 P
X Pin_5 5 -200 0 150 R 50 50 1 1 P
X Pin_6 6 -200 -100 150 R 50 50 1 1 P
X Pin_7 7 -200 -200 150 R 50 50 1 1 P
X Pin_8 8 -200 -300 150 R 50 50 1 1 P
X Pin_9 9 -200 -400 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_D-device
#
DEF pihat_template-rescue_D-device D 0 40 N N 1 F N
F0 "D" 0 100 50 H V C CNN
F1 "pihat_template-rescue_D-device" 0 -100 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
TO-???*
*_Diode_*
*SingleDiode*
D_*
$ENDFPLIST
DRAW
P 2 0 1 8 -50 50 -50 -50 N
P 2 0 1 0 50 0 -50 0 N
P 4 0 1 8 50 50 50 -50 -50 0 50 50 N
X K 1 -150 0 100 R 50 50 1 1 P
X A 2 150 0 100 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_GND-power
#
DEF pihat_template-rescue_GND-power #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "pihat_template-rescue_GND-power" 0 -150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
X GND 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# pihat_template-rescue_RESISTOR-passive
#
DEF pihat_template-rescue_RESISTOR-passive R 0 40 N N 1 F N
F0 "R" 0 85 60 H V C CNB
F1 "pihat_template-rescue_RESISTOR-passive" 0 -75 40 H V C CNN
F2 "" 0 -140 40 H I C CNN
F3 "" 0 100 60 H V C CNN
F4 "-" 0 160 45 H I C CNN "Part"
F5 "Passive" 230 290 50 H I C CNN "Family"
$FPLIST
R-0603
R-0805
R-1206
R-1210
$ENDFPLIST
DRAW
P 4 0 1 0 -13 25 -39 -25 -65 25 -78 0 N
P 5 0 1 0 -13 25 13 -25 39 25 65 -25 78 0 N
X 1 1 -100 0 22 R 40 45 1 1 P
X 2 2 100 0 22 L 40 45 1 1 P
ENDDRAW
ENDDEF
#
# pihat_template-rescue_Raspberry_Pi_+_Conn-pihat_template-rescue
#
DEF pihat_template-rescue_Raspberry_Pi_+_Conn-pihat_template-rescue P 0 40 Y Y 1 F N
F0 "P" -1100 1950 60 H V C CNN
F1 "pihat_template-rescue_Raspberry_Pi_+_Conn-pihat_template-rescue" 300 -1450 60 H V C CNN
F2 "" 0 0 60 H V C CNN
F3 "" 0 0 60 H V C CNN
DRAW
S -1150 1900 800 -1400 0 1 0 f
X VDD_(3.3v) 1 1100 1450 299 L 50 50 1 1 I
X GPIO15/UART_RXD 10 -1450 1350 299 R 50 50 1 1 I
X GPIO17 11 -1450 -300 299 R 50 50 1 1 I
X GPIO18 12 -1450 -400 299 R 50 50 1 1 I
X GPIO27 13 -1450 -1300 299 R 50 50 1 1 I
X GND 14 1100 900 299 L 50 50 1 1 I
X GPIO22 15 -1450 -800 299 R 50 50 1 1 I
X GPIO23 16 -1450 -900 299 R 50 50 1 1 I
X VDD_(3.3V) 17 1100 1350 299 L 50 50 1 1 I
X GPIO24 18 -1450 -1000 299 R 50 50 1 1 I
X GPIO10/SPI_M0SI 19 -1450 1100 299 R 50 50 1 1 I
X VPP_(5v) 2 1100 1800 299 L 50 50 1 1 I
X GND 20 1100 800 299 L 50 50 1 1 I
X GPIO9/SPI_MISO 21 -1450 1000 299 R 50 50 1 1 I
X GPIO25 22 -1450 -1100 299 R 50 50 1 1 I
X GPIO11/SPI_SCLK 23 -1450 900 299 R 50 50 1 1 I
X GPIO8/SPI_CE0 24 -1450 800 299 R 50 50 1 1 I
X GND 25 1100 700 299 L 50 50 1 1 I
X GPIO7/SPI_CE1 26 -1450 700 299 R 50 50 1 1 I
X ID_SD 27 1100 -400 299 L 50 50 1 1 I
X ID_SC 28 1100 -300 299 L 50 50 1 1 I
X GPIO5 29 -1450 200 299 R 50 50 1 1 I
X GPIO2/I2C1_SDA 3 -1450 1800 299 R 50 50 1 1 I
X GND 30 1100 600 299 L 50 50 1 1 I
X GPIO6 31 -1450 100 299 R 50 50 1 1 I
X GPIO12 32 -1450 0 299 R 50 50 1 1 I
X GPIO13 33 -1450 -100 299 R 50 50 1 1 I
X GND 34 1100 500 299 L 50 50 1 1 I
X GPIO19 35 -1450 -500 299 R 50 50 1 1 I
X GPIO16 36 -1450 -200 299 R 50 50 1 1 I
X GPIO20 37 -1450 -600 299 R 50 50 1 1 I
X GPIO26 37 -1450 -1200 299 R 50 50 1 1 I
X GND 39 1100 400 299 L 50 50 1 1 I
X VPP_(5v) 4 1100 1700 299 L 50 50 1 1 I
X GPIO21 40 -1450 -700 299 R 50 50 1 1 I
X GPIO3/I2C1_SCL 5 -1450 1700 299 R 50 50 1 1 I
X GND 6 1100 1100 299 L 50 50 1 1 I
X GPIO4/GPCLK0 7 -1450 300 299 R 50 50 1 1 I
X GPIO14/UART_TXD 8 -1450 1450 299 R 50 50 1 1 I
X GND 9 1100 1000 299 L 50 50 1 1 I
ENDDRAW
ENDDEF
#
# pihat_template-rescue_power_+3.3V-PiHatAx5043-cache
#
DEF pihat_template-rescue_power_+3.3V-PiHatAx5043-cache #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "pihat_template-rescue_power_+3.3V-PiHatAx5043-cache" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
#End Library

@ -0,0 +1,3 @@
EESchema-DOCLIB Version 2.0
#
#End Doc Library

@ -0,0 +1,392 @@
EESchema-LIBRARY Version 2.4
#encoding utf-8
#
# +3.3V-PiHatAx5043-cache
#
DEF +3.3V-PiHatAx5043-cache #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "+3.3V-PiHatAx5043-cache" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# +5V-power
#
DEF +5V-power #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "+5V-power" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +5V 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# Audio-Jack-3_2Switches-conn2
#
DEF Audio-Jack-3_2Switches-conn2 J 0 40 Y Y 1 F N
F0 "J" 0 290 50 H V C CNN
F1 "Audio-Jack-3_2Switches-conn2" -150 -200 50 H V L CNN
F2 "" 250 100 50 H I C CNN
F3 "" 250 100 50 H I C CNN
DRAW
T 0 -25 50 30 0 0 0 1 Normal 0 C C
T 0 -100 50 30 0 0 0 2 Normal 0 C C
S -180 240 100 -140 0 0 10 f
S -175 0 -205 100 0 1 0 F
P 2 0 0 0 -200 -100 -200 0 N
P 2 0 0 0 -50 110 -40 130 N
P 2 0 0 0 40 -30 30 -10 N
P 4 0 0 0 100 -100 30 -100 30 -10 20 -30 N
P 4 0 0 0 100 200 -50 200 -50 110 -60 130 N
P 4 0 1 10 -50 0 -25 25 0 0 100 0 N
P 4 0 1 10 100 100 -75 100 -100 75 -125 100 N
X ~ 1 200 0 100 L 50 50 1 1 P
X ~ 2 200 100 100 L 50 50 1 1 P
X ~ 3 -200 -200 100 U 50 50 1 1 P
X ~ 4 200 -100 100 L 50 50 1 1 P
X ~ 5 200 200 100 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# BoostConverter-New_Library
#
DEF BoostConverter-New_Library U 0 40 Y Y 1 F N
F0 "U" 0 50 50 H V C CNN
F1 "BoostConverter-New_Library" 0 -50 50 H V C CNN
F2 "" 0 50 50 H I C CNN
F3 "" 0 50 50 H I C CNN
DRAW
S -300 400 400 150 0 1 0 f
X IN+ 1 -400 350 100 R 50 50 1 1 I
X IN- 2 -400 200 100 R 50 50 1 1 I
X OUT+ 3 500 350 100 L 50 50 1 1 O
X OUT- 4 500 200 100 L 50 50 1 1 O
ENDDRAW
ENDDEF
#
# CONN_01X01-conn2
#
DEF CONN_01X01-conn2 J 0 40 Y N 1 F N
F0 "J" 0 100 50 H V C CNN
F1 "CONN_01X01-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 5 10 -5 0 1 0 N
S -50 50 50 -50 0 1 0 N
X P1 1 -200 0 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X02-conn2
#
DEF CONN_01X02-conn2 J 0 40 Y N 1 F N
F0 "J" 0 150 50 H V C CNN
F1 "CONN_01X02-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 -45 10 -55 0 1 0 N
S -50 55 10 45 0 1 0 N
S -50 100 50 -100 0 1 0 N
X P1 1 -200 50 150 R 50 50 1 1 P
X P2 2 -200 -50 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X02_FEMALE-conn2
#
DEF CONN_01X02_FEMALE-conn2 J 0 40 Y N 1 F N
F0 "J" 0 200 50 H V C CNN
F1 "CONN_01X02_FEMALE-conn2" 75 -200 50 H V C CNN
F2 "" 0 100 50 H I C CNN
F3 "" 0 100 50 H I C CNN
DRAW
A 150 -100 50 901 -901 0 1 0 N 150 -50 150 -150
A 150 100 50 901 -901 0 1 0 N 150 150 150 50
X 1 1 -100 100 200 R 50 50 1 1 P
X 2 2 -100 -100 200 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# CONN_01X05-conn2
#
DEF CONN_01X05-conn2 J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "CONN_01X05-conn2" 100 0 50 V V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Pin_Header_Straight_1X*
Pin_Header_Angled_1X*
Socket_Strip_Straight_1X*
Socket_Strip_Angled_1X*
$ENDFPLIST
DRAW
S -50 -195 10 -205 0 1 0 N
S -50 -95 10 -105 0 1 0 N
S -50 5 10 -5 0 1 0 N
S -50 105 10 95 0 1 0 N
S -50 205 10 195 0 1 0 N
S -50 250 50 -250 0 1 0 N
X P1 1 -200 200 150 R 50 50 1 1 P
X P2 2 -200 100 150 R 50 50 1 1 P
X P3 3 -200 0 150 R 50 50 1 1 P
X P4 4 -200 -100 150 R 50 50 1 1 P
X P5 5 -200 -200 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x05_Female-Connector
#
DEF Conn_01x05_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "Conn_01x05_Female-Connector" 0 -300 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_2 2 -200 100 150 R 50 50 1 1 P
X Pin_3 3 -200 0 150 R 50 50 1 1 P
X Pin_4 4 -200 -100 150 R 50 50 1 1 P
X Pin_5 5 -200 -200 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x06_Female-Connector
#
DEF Conn_01x06_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 300 50 H V C CNN
F1 "Conn_01x06_Female-Connector" 0 -400 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
P 2 1 1 6 -50 -300 -20 -300 N
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
X Pin_1 1 -200 200 150 R 50 50 1 1 P
X Pin_2 2 -200 100 150 R 50 50 1 1 P
X Pin_3 3 -200 0 150 R 50 50 1 1 P
X Pin_4 4 -200 -100 150 R 50 50 1 1 P
X Pin_5 5 -200 -200 150 R 50 50 1 1 P
X Pin_6 6 -200 -300 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# Conn_01x10_Female-Connector
#
DEF Conn_01x10_Female-Connector J 0 40 Y N 1 F N
F0 "J" 0 500 50 H V C CNN
F1 "Conn_01x10_Female-Connector" 0 -600 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
Connector*:*_1x??_*
$ENDFPLIST
DRAW
A 0 -500 20 901 -901 1 1 6 N 0 -480 0 -520
A 0 -400 20 901 -901 1 1 6 N 0 -380 0 -420
A 0 -300 20 901 -901 1 1 6 N 0 -280 0 -320
A 0 -200 20 901 -901 1 1 6 N 0 -180 0 -220
A 0 -100 20 901 -901 1 1 6 N 0 -80 0 -120
A 0 0 20 901 -901 1 1 6 N 0 20 0 -20
A 0 100 20 901 -901 1 1 6 N 0 120 0 80
A 0 200 20 901 -901 1 1 6 N 0 220 0 180
A 0 300 20 901 -901 1 1 6 N 0 320 0 280
A 0 400 20 901 -901 1 1 6 N 0 420 0 380
P 2 1 1 6 -50 -500 -20 -500 N
P 2 1 1 6 -50 -400 -20 -400 N
P 2 1 1 6 -50 -300 -20 -300 N
P 2 1 1 6 -50 -200 -20 -200 N
P 2 1 1 6 -50 -100 -20 -100 N
P 2 1 1 6 -50 0 -20 0 N
P 2 1 1 6 -50 100 -20 100 N
P 2 1 1 6 -50 200 -20 200 N
P 2 1 1 6 -50 300 -20 300 N
P 2 1 1 6 -50 400 -20 400 N
X Pin_1 1 -200 400 150 R 50 50 1 1 P
X Pin_10 10 -200 -500 150 R 50 50 1 1 P
X Pin_2 2 -200 300 150 R 50 50 1 1 P
X Pin_3 3 -200 200 150 R 50 50 1 1 P
X Pin_4 4 -200 100 150 R 50 50 1 1 P
X Pin_5 5 -200 0 150 R 50 50 1 1 P
X Pin_6 6 -200 -100 150 R 50 50 1 1 P
X Pin_7 7 -200 -200 150 R 50 50 1 1 P
X Pin_8 8 -200 -300 150 R 50 50 1 1 P
X Pin_9 9 -200 -400 150 R 50 50 1 1 P
ENDDRAW
ENDDEF
#
# D-device
#
DEF D-device D 0 40 N N 1 F N
F0 "D" 0 100 50 H V C CNN
F1 "D-device" 0 -100 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
$FPLIST
TO-???*
*_Diode_*
*SingleDiode*
D_*
$ENDFPLIST
DRAW
P 2 0 1 8 -50 50 -50 -50 N
P 2 0 1 0 50 0 -50 0 N
P 4 0 1 8 50 50 50 -50 -50 0 50 50 N
X K 1 -150 0 100 R 50 50 1 1 P
X A 2 150 0 100 L 50 50 1 1 P
ENDDRAW
ENDDEF
#
# GND-power
#
DEF GND-power #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -250 50 H I C CNN
F1 "GND-power" 0 -150 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 6 0 1 0 0 0 0 -50 50 -50 0 -100 -50 -50 0 -50 N
X GND 1 0 0 0 D 50 50 1 1 W N
ENDDRAW
ENDDEF
#
# RESISTOR-passive
#
DEF RESISTOR-passive R 0 40 N N 1 F N
F0 "R" 0 85 60 H V C CNB
F1 "RESISTOR-passive" 0 -75 40 H V C CNN
F2 "" 0 -140 40 H I C CNN
F3 "" 0 100 60 H V C CNN
F4 "-" 0 160 45 H I C CNN "Part"
F5 "Passive" 230 290 50 H I C CNN "Family"
$FPLIST
R-0603
R-0805
R-1206
R-1210
$ENDFPLIST
DRAW
P 4 0 1 0 -13 25 -39 -25 -65 25 -78 0 N
P 5 0 1 0 -13 25 13 -25 39 25 65 -25 78 0 N
X 1 1 -100 0 22 R 40 45 1 1 P
X 2 2 100 0 22 L 40 45 1 1 P
ENDDRAW
ENDDEF
#
# Raspberry_Pi_+_Conn-pihat_template-rescue
#
DEF Raspberry_Pi_+_Conn-pihat_template-rescue P 0 40 Y Y 1 F N
F0 "P" -1100 1950 60 H V C CNN
F1 "Raspberry_Pi_+_Conn-pihat_template-rescue" 300 -1450 60 H V C CNN
F2 "" 0 0 60 H V C CNN
F3 "" 0 0 60 H V C CNN
DRAW
S -1150 1900 800 -1400 0 1 0 f
X VDD_(3.3v) 1 1100 1450 299 L 50 50 1 1 I
X GPIO15/UART_RXD 10 -1450 1350 299 R 50 50 1 1 I
X GPIO17 11 -1450 -300 299 R 50 50 1 1 I
X GPIO18 12 -1450 -400 299 R 50 50 1 1 I
X GPIO27 13 -1450 -1300 299 R 50 50 1 1 I
X GND 14 1100 900 299 L 50 50 1 1 I
X GPIO22 15 -1450 -800 299 R 50 50 1 1 I
X GPIO23 16 -1450 -900 299 R 50 50 1 1 I
X VDD_(3.3V) 17 1100 1350 299 L 50 50 1 1 I
X GPIO24 18 -1450 -1000 299 R 50 50 1 1 I
X GPIO10/SPI_M0SI 19 -1450 1100 299 R 50 50 1 1 I
X VPP_(5v) 2 1100 1800 299 L 50 50 1 1 I
X GND 20 1100 800 299 L 50 50 1 1 I
X GPIO9/SPI_MISO 21 -1450 1000 299 R 50 50 1 1 I
X GPIO25 22 -1450 -1100 299 R 50 50 1 1 I
X GPIO11/SPI_SCLK 23 -1450 900 299 R 50 50 1 1 I
X GPIO8/SPI_CE0 24 -1450 800 299 R 50 50 1 1 I
X GND 25 1100 700 299 L 50 50 1 1 I
X GPIO7/SPI_CE1 26 -1450 700 299 R 50 50 1 1 I
X ID_SD 27 1100 -400 299 L 50 50 1 1 I
X ID_SC 28 1100 -300 299 L 50 50 1 1 I
X GPIO5 29 -1450 200 299 R 50 50 1 1 I
X GPIO2/I2C1_SDA 3 -1450 1800 299 R 50 50 1 1 I
X GND 30 1100 600 299 L 50 50 1 1 I
X GPIO6 31 -1450 100 299 R 50 50 1 1 I
X GPIO12 32 -1450 0 299 R 50 50 1 1 I
X GPIO13 33 -1450 -100 299 R 50 50 1 1 I
X GND 34 1100 500 299 L 50 50 1 1 I
X GPIO19 35 -1450 -500 299 R 50 50 1 1 I
X GPIO16 36 -1450 -200 299 R 50 50 1 1 I
X GPIO20 37 -1450 -600 299 R 50 50 1 1 I
X GPIO26 37 -1450 -1200 299 R 50 50 1 1 I
X GND 39 1100 400 299 L 50 50 1 1 I
X VPP_(5v) 4 1100 1700 299 L 50 50 1 1 I
X GPIO21 40 -1450 -700 299 R 50 50 1 1 I
X GPIO3/I2C1_SCL 5 -1450 1700 299 R 50 50 1 1 I
X GND 6 1100 1100 299 L 50 50 1 1 I
X GPIO4/GPCLK0 7 -1450 300 299 R 50 50 1 1 I
X GPIO14/UART_TXD 8 -1450 1450 299 R 50 50 1 1 I
X GND 9 1100 1000 299 L 50 50 1 1 I
ENDDRAW
ENDDEF
#
# power_+3.3V-PiHatAx5043-cache
#
DEF power_+3.3V-PiHatAx5043-cache #PWR 0 0 Y Y 1 F P
F0 "#PWR" 0 -150 50 H I C CNN
F1 "power_+3.3V-PiHatAx5043-cache" 0 140 50 H V C CNN
F2 "" 0 0 50 H I C CNN
F3 "" 0 0 50 H I C CNN
DRAW
P 2 0 1 0 -30 50 0 100 N
P 2 0 1 0 0 0 0 100 N
P 2 0 1 0 0 100 30 50 N
X +3V3 1 0 0 0 U 50 50 1 1 W N
ENDDRAW
ENDDEF
#
#End Library

@ -0,0 +1,3 @@
(sym_lib_table
(lib (name pihat_template-rescue)(type Legacy)(uri ${KIPRJMOD}/pihat_template-rescue.lib)(options "")(descr ""))
)

@ -0,0 +1,78 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
Modified by Roger Clark. www.rogerclark.net for Maple mini 25th April 2015 , where the LED is on PC13
*/
/* Pro Micro Test Code
by: Nathan Seidle
modified by: Jim Lindblom
SparkFun Electronics
date: September 16, 2013
license: Public Domain - please use this code however you'd like.
It's provided as a learning tool.
This code is provided to show how to control the SparkFun
ProMicro's TX and RX LEDs within a sketch. It also serves
to explain the difference between Serial.print() and
Serial1.print().
*/
int RXLED = 17; // The RX LED has a defined Arduino pin
// Note: The TX LED was not so lucky, we'll need to use pre-defined
// macros (TXLED1, TXLED0) to control that.
// (We could use the same macros for the RX LED too -- RXLED1,
// and RXLED0.)
// the setup function runs once when you press reset or power the board
void setup() {
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
// initialize digital pin PB1 as an output.
pinMode(PC13, OUTPUT);
#endif
#if defined __AVR_ATmega32U4__
pinMode(RXLED, OUTPUT); // Set RX LED as an output
// TX LED is set as an output behind the scenes
#endif
Serial.begin(9600);
}
// the loop function runs over and over again forever
void loop() {
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
digitalWrite(PC13, LOW); // turn the LED on (HIGH is the voltage level)
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
#endif
Serial.println("LED is on!");
delay(1000); // wait for a second
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
digitalWrite(PC13, HIGH); // turn the LED off by making the voltage LOW
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(RXLED, HIGH); // set the RX LED OFF
TXLED1; //TX LED macro to turn LED ON
#endif
Serial.println("LED is off!");
delay(1000); // wait for a second
}

@ -0,0 +1,45 @@
/* Pro Micro Test Code
by: Nathan Seidle
modified by: Jim Lindblom
SparkFun Electronics
date: September 16, 2013
license: Public Domain - please use this code however you'd like.
It's provided as a learning tool.
This code is provided to show how to control the SparkFun
ProMicro's TX and RX LEDs within a sketch. It also serves
to explain the difference between Serial.print() and
Serial1.print().
*/
int RXLED = 17; // The RX LED has a defined Arduino pin
// Note: The TX LED was not so lucky, we'll need to use pre-defined
// macros (TXLED1, TXLED0) to control that.
// (We could use the same macros for the RX LED too -- RXLED1,
// and RXLED0.)
void setup()
{
pinMode(RXLED, OUTPUT); // Set RX LED as an output
// TX LED is set as an output behind the scenes
Serial.begin(9600); //This pipes to the serial monitor
Serial.println("Initialize Serial Monitor");
Serial1.begin(9600); //This is the UART, pipes to sensors attached to board
Serial1.println("Initialize Serial Hardware UART Pins");
}
void loop()
{
Serial.println("Hello world!"); // Print "Hello World" to the Serial Monitor
Serial1.println("Hello! Can anybody hear me?"); // Print "Hello!" over hardware UART
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(1000); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED OFF
TXLED1; //TX LED macro to turn LED ON
delay(1000); // wait for a second
}

@ -0,0 +1,32 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
Modified by Roger Clark. www.rogerclark.net for Maple mini 25th April 2015 , where the LED is on PC13
*/
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin PB1 as an output.
pinMode(PC13, OUTPUT);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(PC13, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PC13, LOW); // turn the LED off by making the voltage LOW
delay(1000); // wait for a second
}

@ -0,0 +1,46 @@
#include <MPU6050_tockn.h>
#include <Wire.h>
MPU6050 mpu6050(Wire);
long timer = 0;
void setup() {
Serial.begin(9600);
Wire.begin();
mpu6050.begin();
mpu6050.calcGyroOffsets(true);
}
void loop() {
mpu6050.update();
if(millis() - timer > 1000){
Serial.println("=======================================================");
Serial.print("temp : ");Serial.println(mpu6050.getTemp());
Serial.print("accX : ");Serial.print(mpu6050.getAccX());
Serial.print("\taccY : ");Serial.print(mpu6050.getAccY());
Serial.print("\taccZ : ");Serial.println(mpu6050.getAccZ());
Serial.print("gyroX : ");Serial.print(mpu6050.getGyroX());
Serial.print("\tgyroY : ");Serial.print(mpu6050.getGyroY());
Serial.print("\tgyroZ : ");Serial.println(mpu6050.getGyroZ());
Serial.print("accAngleX : ");Serial.print(mpu6050.getAccAngleX());
Serial.print("\taccAngleY : ");Serial.println(mpu6050.getAccAngleY());
Serial.print("gyroAngleX : ");Serial.print(mpu6050.getGyroAngleX());
Serial.print("\tgyroAngleY : ");Serial.print(mpu6050.getGyroAngleY());
Serial.print("\tgyroAngleZ : ");Serial.println(mpu6050.getGyroAngleZ());
Serial.print("angleX : ");Serial.print(mpu6050.getAngleX());
Serial.print("\tangleY : ");Serial.print(mpu6050.getAngleY());
Serial.print("\tangleZ : ");Serial.println(mpu6050.getAngleZ());
Serial.println("=======================================================\n");
timer = millis();
}
}

@ -0,0 +1,51 @@
//#define TESTING // Uncomment to test code on Serial Monitor
int counter = 0;
int RXLED = 17; // The RX LED has a defined Arduino pin
void setup() {
#ifdef TESTING
Serial.begin(9600);
#endif
Serial1.begin(9600);
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
}
void loop() {
#ifdef TESTING // ? is sent over Serial Monitor for testing
if (Serial.available() > 0) {
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
char result = Serial.read();
// Serial1.println(result);
Serial.println("OK");
// Serial1.println(counter++);
}
#else // ? is sent by Pi UART
if (Serial1.available() > 0) {
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
char result = Serial1.read();
// Serial1.println(result);
Serial1.println("OK");
// Serial1.println(counter++);
}
#endif
delay(100);
}

@ -0,0 +1,28 @@
// code for STM32F104C on the CubeSat Simulator STEM Payload board
// answers "OK" on the serial port when queried by the Pi
int counter = 0;
void setup() {
Serial1.begin(9600);
pinMode(PC13, OUTPUT);
digitalWrite(PC13, LOW); // turn the LED on
delay(50); // wait for a second
digitalWrite(PC13, HIGH); // turn the LED off
}
void loop() {
if (Serial1.available() > 0) {
digitalWrite(PC13, LOW); // turn the LED on
delay(50); // wait for a second
digitalWrite(PC13, HIGH); // turn the LED off
char result = Serial1.read();
// Serial1.println(result);
Serial1.println("OK");
// Serial1.println(counter++);
}
delay(100);
}

@ -0,0 +1,256 @@
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <MPU6050_tockn.h>
#include <EEPROM.h>
#define SEALEVELPRESSURE_HPA (1013.25)
//#define TESTING // Define to test on Serial Monitor
Adafruit_BME280 bme;
MPU6050 mpu6050(Wire);
int counter = 0;
int RXLED = 17; // The RX LED has a defined Arduino pin
long timer = 0;
int bmePresent;
int greenLED = 9;
int blueLED = 8;
int Sensor1 = 0;
int Sensor2 = 0;
float Sensor3 = 0;
void eeprom_word_write(int addr, int val);
short eeprom_word_read(int addr);
void setup() {
Serial.begin(9600); // Serial Monitor for testing
Serial1.begin(9600); // Pi UART
Serial.println("Starting!");
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
if (bme.begin(0x76)) {
bmePresent = 1;
} else {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
bmePresent = 0;
}
mpu6050.begin();
if (eeprom_word_read(0) == 0xA07)
{
Serial.println("Reading gyro offsets from EEPROM\n");
float xOffset = ((float)eeprom_word_read(1))/100.0;
float yOffset = ((float)eeprom_word_read(2))/100.0;
float zOffset = ((float)eeprom_word_read(3))/100.0;
Serial.println(xOffset, DEC);
Serial.println(yOffset, DEC);
Serial.println(zOffset, DEC);
mpu6050.setGyroOffsets(xOffset, yOffset, zOffset);
}
else
{
Serial.println("Calculating gyro offsets and storing in EEPROM\n");
mpu6050.calcGyroOffsets(true);
eeprom_word_write(0, 0xA07);
eeprom_word_write(1, (int)(mpu6050.getGyroXoffset() * 100.0) + 0.5);
eeprom_word_write(2, (int)(mpu6050.getGyroYoffset() * 100.0) + 0.5);
eeprom_word_write(3, (int)(mpu6050.getGyroZoffset() * 100.0) + 0.5);
Serial.println(eeprom_word_read(0), HEX);
Serial.println(((float)eeprom_word_read(1))/100.0, DEC);
Serial.println(((float)eeprom_word_read(2))/100.0, DEC);
Serial.println(((float)eeprom_word_read(3))/100.0, DEC);
}
pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
digitalWrite(greenLED, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(blueLED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(100); // wait for a second
digitalWrite(greenLED, LOW); // turn the LED off by making the voltage LOW
digitalWrite(blueLED, LOW); // turn the LED on (HIGH is the voltage level)
}
void loop() {
#ifdef TESTING
if (Serial.available() > 0) {
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
char result = Serial.read();
// Serial.println(result);
if (result == 'R') {
Serial.println("OK");
delay(500);
setup();
}
if (result == '?')
{
if (bmePresent) {
Serial.print("OK BME280 ");
Serial.print(bme.readTemperature());
Serial.print(" ");
Serial.print(bme.readPressure() / 100.0F);
Serial.print(" ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.print(" ");
Serial.print(bme.readHumidity());
} else
{
Serial.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial.print(" MPU6050 ");
Serial.print(mpu6050.getGyroX());
Serial.print(" ");
Serial.print(mpu6050.getGyroY());
Serial.print(" ");
Serial.print(mpu6050.getGyroZ());
Serial.print(" ");
Serial.print(mpu6050.getAccX());
Serial.print(" ");
Serial.print(mpu6050.getAccY());
Serial.print(" ");
Serial.print(mpu6050.getAccZ());
Serial.print(" XS ");
Serial.print(Sensor1);
Serial.print(" ");
Serial.print(Sensor2);
Serial.print(" ");
Serial.println(Sensor3);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()* mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
digitalWrite(greenLED, HIGH);
else
digitalWrite(greenLED, LOW);
if (rotation > 5)
digitalWrite(blueLED, HIGH);
else
digitalWrite(blueLED, LOW);
// Serial1.println(counter++);
}
}
#else
if (Serial1.available() > 0) {
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
char result = Serial1.read();
// Serial1.println(result);
if (result == 'R') {
Serial1.println("OK");
delay(500);
setup();
}
if (result == '?')
{
if (bmePresent) {
Serial1.print("OK BME280 ");
Serial1.print(bme.readTemperature());
Serial1.print(" ");
Serial1.print(bme.readPressure() / 100.0F);
Serial1.print(" ");
Serial1.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial1.print(" ");
Serial1.print(bme.readHumidity());
} else
{
Serial1.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial1.print(" MPU6050 ");
Serial1.print(mpu6050.getGyroX());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroY());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroZ());
Serial1.print(" ");
Serial1.print(mpu6050.getAccX());
Serial1.print(" ");
Serial1.print(mpu6050.getAccY());
Serial1.print(" ");
Serial1.print(mpu6050.getAccZ());
Serial1.print(" XS ");
Serial1.print(Sensor1);
Serial1.print(" ");
Serial1.print(Sensor2);
Serial1.print(" ");
Serial1.println(Sensor3);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()* mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
digitalWrite(greenLED, HIGH);
else
digitalWrite(greenLED, LOW);
if (rotation > 5)
digitalWrite(blueLED, HIGH);
else
digitalWrite(blueLED, LOW);
// Serial1.println(counter++);
}
}
#endif
delay(100);
}
void eeprom_word_write(int addr, int val)
{
EEPROM.write(addr * 2, lowByte(val));
EEPROM.write(addr * 2 + 1, highByte(val));
}
short eeprom_word_read(int addr)
{
return((EEPROM.read(addr * 2 + 1) << 8) | EEPROM.read(addr * 2));
}

@ -0,0 +1,246 @@
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <MPU6050_tockn.h>
#include <EEPROM.h>
#define SEALEVELPRESSURE_HPA (1013.25)
//#define TESTING // Define to test on Serial Monitor
Adafruit_BME280 bme;
MPU6050 mpu6050(Wire);
int counter = 0;
long timer = 0;
int bmePresent;
int greenLED = 9;
int blueLED = 8;
int Sensor1 = 0;
int Sensor2 = 0;
float Sensor3 = 0;
void eeprom_word_write(int addr, int val);
short eeprom_word_read(int addr);
void setup() {
Serial.begin(9600); // Serial Monitor for testing
Serial1.begin(9600); // Pi UART
Serial.println("Starting!");
pinMode(PC13, OUTPUT);
digitalWrite(PC13, LOW); // turn the LED on
delay(50); // wait for a second
digitalWrite(PC13, HIGH); // turn the LED off
if (bme.begin(0x76)) {
bmePresent = 1;
} else {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
bmePresent = 0;
}
mpu6050.begin();
if (eeprom_word_read(0) == 0xA07)
{
Serial.println("Reading gyro offsets from EEPROM\n");
float xOffset = ((float)eeprom_word_read(1)) / 100.0;
float yOffset = ((float)eeprom_word_read(2)) / 100.0;
float zOffset = ((float)eeprom_word_read(3)) / 100.0;
Serial.println(xOffset, DEC);
Serial.println(yOffset, DEC);
Serial.println(zOffset, DEC);
mpu6050.setGyroOffsets(xOffset, yOffset, zOffset);
}
else
{
Serial.println("Calculating gyro offsets and storing in EEPROM\n");
mpu6050.calcGyroOffsets(true);
eeprom_word_write(0, 0xA07);
eeprom_word_write(1, (int)(mpu6050.getGyroXoffset() * 100.0) + 0.5);
eeprom_word_write(2, (int)(mpu6050.getGyroYoffset() * 100.0) + 0.5);
eeprom_word_write(3, (int)(mpu6050.getGyroZoffset() * 100.0) + 0.5);
Serial.println(eeprom_word_read(0), HEX);
Serial.println(((float)eeprom_word_read(1)) / 100.0, DEC);
Serial.println(((float)eeprom_word_read(2)) / 100.0, DEC);
Serial.println(((float)eeprom_word_read(3)) / 100.0, DEC);
}
}
void loop() {
#ifdef TESTING
if (Serial.available() > 0) {
digitalWrite(PC13, LOW); // turn the LED on
delay(50); // wait for a second
digitalWrite(PC13, HIGH); // turn the LED off
char result = Serial.read();
// Serial.println(result);
if (result == 'R') {
Serial.println("OK");
delay(500);
setup();
}
if (result == '?')
{
if (bmePresent) {
Serial.print("OK BME280 ");
Serial.print(bme.readTemperature());
Serial.print(" ");
Serial.print(bme.readPressure() / 100.0F);
Serial.print(" ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.print(" ");
Serial.print(bme.readHumidity());
} else
{
Serial.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial.print(" MPU6050 ");
Serial.print(mpu6050.getGyroX());
Serial.print(" ");
Serial.print(mpu6050.getGyroY());
Serial.print(" ");
Serial.print(mpu6050.getGyroZ());
Serial.print(" ");
Serial.print(mpu6050.getAccX());
Serial.print(" ");
Serial.print(mpu6050.getAccY());
Serial.print(" ");
Serial.print(mpu6050.getAccZ());
Serial.print(" XS ");
Serial.print(Sensor1);
Serial.print(" ");
Serial.print(Sensor2);
Serial.print(" ");
Serial.println(Sensor3);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()* mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
digitalWrite(greenLED, HIGH);
else
digitalWrite(greenLED, LOW);
if (rotation > 5)
digitalWrite(blueLED, HIGH);
else
digitalWrite(blueLED, LOW);
// Serial1.println(counter++);
}
}
#else
if (Serial1.available() > 0) {
digitalWrite(PC13, LOW); // turn the LED on
delay(50); // wait for a second
digitalWrite(PC13, HIGH); // turn the LED off
char result = Serial1.read();
// Serial1.println(result);
if (result == 'R') {
Serial1.println("OK");
delay(500);
setup();
}
if (result == '?')
{
if (bmePresent) {
Serial1.print("OK BME280 ");
Serial1.print(bme.readTemperature());
Serial1.print(" ");
Serial1.print(bme.readPressure() / 100.0F);
Serial1.print(" ");
Serial1.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial1.print(" ");
Serial1.print(bme.readHumidity());
} else
{
Serial1.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial1.print(" MPU6050 ");
Serial1.print(mpu6050.getGyroX());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroY());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroZ());
Serial1.print(" ");
Serial1.print(mpu6050.getAccX());
Serial1.print(" ");
Serial1.print(mpu6050.getAccY());
Serial1.print(" ");
Serial1.print(mpu6050.getAccZ());
Serial1.print(" XS ");
Serial1.print(Sensor1);
Serial1.print(" ");
Serial1.print(Sensor2);
Serial1.print(" ");
Serial1.println(Sensor3);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()* mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
digitalWrite(greenLED, HIGH);
else
digitalWrite(greenLED, LOW);
if (rotation > 5)
digitalWrite(blueLED, HIGH);
else
digitalWrite(blueLED, LOW);
// Serial1.println(counter++);
}
}
#endif
delay(100);
}
void eeprom_word_write(int addr, int val)
{
EEPROM.write(addr * 2, lowByte(val));
EEPROM.write(addr * 2 + 1, highByte(val));
}
short eeprom_word_read(int addr)
{
return ((EEPROM.read(addr * 2 + 1) << 8) | EEPROM.read(addr * 2));
}

@ -0,0 +1,287 @@
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <MPU6050_tockn.h>
#include <EEPROM.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
MPU6050 mpu6050(Wire);
long timer = 0;
int bmePresent;
int RXLED = 17; // The RX LED has a defined Arduino pin
int greenLED = 9;
int blueLED = 8;
int Sensor1 = 0;
float Sensor2 = 0;
void eeprom_word_write(int addr, int val);
short eeprom_word_read(int addr);
int first_time = true;
void setup() {
Serial.begin(9600); // Serial Monitor for testing
Serial1.begin(115200); // Pi UART faster speed
Serial.println("Starting!");
blink_setup();
blink(500);
delay(250);
blink(500);
delay(250);
led_set(greenLED, HIGH);
delay(250);
led_set(greenLED, LOW);
led_set(blueLED, HIGH);
delay(250);
led_set(blueLED, LOW);
if (bme.begin(0x76)) {
bmePresent = 1;
} else {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
bmePresent = 0;
}
mpu6050.begin();
if (eeprom_word_read(0) == 0xA07)
{
Serial.println("Reading gyro offsets from EEPROM\n");
float xOffset = ((float)eeprom_word_read(1)) / 100.0;
float yOffset = ((float)eeprom_word_read(2)) / 100.0;
float zOffset = ((float)eeprom_word_read(3)) / 100.0;
Serial.println(xOffset, DEC);
Serial.println(yOffset, DEC);
Serial.println(zOffset, DEC);
mpu6050.setGyroOffsets(xOffset, yOffset, zOffset);
}
else
{
Serial.println("Calculating gyro offsets and storing in EEPROM\n");
mpu6050.calcGyroOffsets(true);
eeprom_word_write(0, 0xA07);
eeprom_word_write(1, (int)(mpu6050.getGyroXoffset() * 100.0) + 0.5);
eeprom_word_write(2, (int)(mpu6050.getGyroYoffset() * 100.0) + 0.5);
eeprom_word_write(3, (int)(mpu6050.getGyroZoffset() * 100.0) + 0.5);
Serial.println(eeprom_word_read(0), HEX);
Serial.println(((float)eeprom_word_read(1)) / 100.0, DEC);
Serial.println(((float)eeprom_word_read(2)) / 100.0, DEC);
Serial.println(((float)eeprom_word_read(3)) / 100.0, DEC);
}
pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
}
void loop() {
if ((Serial.available() > 0)|| first_time == true) {
blink(50);
char result = Serial.read();
// Serial.println(result);
if (result == 'R') {
Serial.println("OK");
delay(500);
setup();
}
if ((result == '?') || first_time == true)
{
first_time = false;
if (bmePresent) {
Serial.print("OK BME280 ");
Serial.print(bme.readTemperature());
Serial.print(" ");
Serial.print(bme.readPressure() / 100.0F);
Serial.print(" ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.print(" ");
Serial.print(bme.readHumidity());
} else
{
Serial.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial.print(" MPU6050 ");
Serial.print(mpu6050.getGyroX());
Serial.print(" ");
Serial.print(mpu6050.getGyroY());
Serial.print(" ");
Serial.print(mpu6050.getGyroZ());
Serial.print(" ");
Serial.print(mpu6050.getAccX());
Serial.print(" ");
Serial.print(mpu6050.getAccY());
Serial.print(" ");
Serial.print(mpu6050.getAccZ());
Serial.print(" XS ");
Serial.print(Sensor1);
Serial.print(" ");
Serial.println(Sensor2);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()*mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
led_set(greenLED, HIGH);
else
led_set(greenLED, LOW);
if (rotation > 5)
led_set(blueLED, HIGH);
else
led_set(blueLED, LOW);
}
}
if (Serial1.available() > 0) {
blink(50);
char result = Serial1.read();
// Serial1.println(result);
if (result == 'R') {
Serial1.println("OK");
delay(500);
setup();
}
if (result == '?')
{
if (bmePresent) {
Serial1.print("OK BME280 ");
Serial1.print(bme.readTemperature());
Serial1.print(" ");
Serial1.print(bme.readPressure() / 100.0F);
Serial1.print(" ");
Serial1.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial1.print(" ");
Serial1.print(bme.readHumidity());
} else
{
Serial1.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial1.print(" MPU6050 ");
Serial1.print(mpu6050.getGyroX());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroY());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroZ());
Serial1.print(" ");
Serial1.print(mpu6050.getAccX());
Serial1.print(" ");
Serial1.print(mpu6050.getAccY());
Serial1.print(" ");
Serial1.print(mpu6050.getAccZ());
Serial1.print(" XS ");
Serial1.print(Sensor1);
Serial1.print(" ");
Serial1.println(Sensor2);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()*mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
led_set(greenLED, HIGH);
else
led_set(greenLED, LOW);
if (rotation > 5)
led_set(blueLED, HIGH);
else
led_set(blueLED, LOW);
}
}
// delay(100);
}
void eeprom_word_write(int addr, int val)
{
EEPROM.write(addr * 2, lowByte(val));
EEPROM.write(addr * 2 + 1, highByte(val));
}
short eeprom_word_read(int addr)
{
return ((EEPROM.read(addr * 2 + 1) << 8) | EEPROM.read(addr * 2));
}
void blink_setup()
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
// initialize digital pin PB1 as an output.
pinMode(PC13, OUTPUT);
pinMode(PB9, OUTPUT);
pinMode(PB8, OUTPUT);
#endif
#if defined __AVR_ATmega32U4__
pinMode(RXLED, OUTPUT); // Set RX LED as an output
// TX LED is set as an output behind the scenes
pinMode(greenLED, OUTPUT);
pinMode(blueLED,OUTPUT);
#endif
}
void blink(int length)
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
digitalWrite(PC13, LOW); // turn the LED on (HIGH is the voltage level)
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
#endif
delay(length); // wait for a lenth of time
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
digitalWrite(PC13, HIGH); // turn the LED off by making the voltage LOW
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(RXLED, HIGH); // set the RX LED OFF
TXLED0; //TX LED macro to turn LED ON
#endif
}
void led_set(int ledPin, bool state)
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
if (ledPin == greenLED)
digitalWrite(PB9, state);
else if (ledPin == blueLED)
digitalWrite(PB8, state);
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(ledPin, state);
#endif
}

@ -0,0 +1,313 @@
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <MPU6050_tockn.h>
#include <EEPROM.h>
#include <TinyGPS.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
MPU6050 mpu6050(Wire);
TinyGPS gps;
long timer = 0;
int bmePresent;
int RXLED = 17; // The RX LED has a defined Arduino pin
int greenLED = 9;
int blueLED = 8;
int Sensor1 = 0;
int Sensor2 = 0;
float Sensor3 = 0;
void eeprom_word_write(int addr, int val);
short eeprom_word_read(int addr);
void setup() {
Serial.begin(9600); // Serial Monitor for testing
Serial1.begin(9600); // Pi UART
Serial2.begin(9600); // GPS on STM32 pins PA2, PA3
Serial.println("Starting!");
blink_setup();
blink(500);
delay(250);
blink(500);
delay(250);
led_set(greenLED, HIGH);
delay(250);
led_set(greenLED, LOW);
led_set(blueLED, HIGH);
delay(250);
led_set(blueLED, LOW);
if (bme.begin(0x76)) {
bmePresent = 1;
} else {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
bmePresent = 0;
}
mpu6050.begin();
if (eeprom_word_read(0) == 0xA07)
{
Serial.println("Reading gyro offsets from EEPROM\n");
float xOffset = ((float)eeprom_word_read(1)) / 100.0;
float yOffset = ((float)eeprom_word_read(2)) / 100.0;
float zOffset = ((float)eeprom_word_read(3)) / 100.0;
Serial.println(xOffset, DEC);
Serial.println(yOffset, DEC);
Serial.println(zOffset, DEC);
mpu6050.setGyroOffsets(xOffset, yOffset, zOffset);
}
else
{
Serial.println("Calculating gyro offsets and storing in EEPROM\n");
mpu6050.calcGyroOffsets(true);
eeprom_word_write(0, 0xA07);
eeprom_word_write(1, (int)(mpu6050.getGyroXoffset() * 100.0) + 0.5);
eeprom_word_write(2, (int)(mpu6050.getGyroYoffset() * 100.0) + 0.5);
eeprom_word_write(3, (int)(mpu6050.getGyroZoffset() * 100.0) + 0.5);
Serial.println(eeprom_word_read(0), HEX);
Serial.println(((float)eeprom_word_read(1)) / 100.0, DEC);
Serial.println(((float)eeprom_word_read(2)) / 100.0, DEC);
Serial.println(((float)eeprom_word_read(3)) / 100.0, DEC);
}
}
void loop() {
if (Serial.available() > 0) {
blink(50);
char result = Serial.read();
// Serial.println(result);
if (result == 'R') {
Serial.println("OK");
delay(500);
setup();
}
if (result == '?')
{
if (bmePresent) {
Serial.print("OK BME280 ");
Serial.print(bme.readTemperature());
Serial.print(" ");
Serial.print(bme.readPressure() / 100.0F);
Serial.print(" ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.print(" ");
Serial.print(bme.readHumidity());
} else
{
Serial.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial.print(" MPU6050 ");
Serial.print(mpu6050.getGyroX());
Serial.print(" ");
Serial.print(mpu6050.getGyroY());
Serial.print(" ");
Serial.print(mpu6050.getGyroZ());
Serial.print(" ");
Serial.print(mpu6050.getAccX());
Serial.print(" ");
Serial.print(mpu6050.getAccY());
Serial.print(" ");
Serial.print(mpu6050.getAccZ());
Serial.print(" XS ");
Serial.print(Sensor1);
Serial.print(" ");
Serial.print(Sensor2);
Serial.print(" ");
Serial.println(Sensor3);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()*mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
led_set(greenLED, HIGH);
else
led_set(greenLED, LOW);
if (rotation > 5)
led_set(blueLED, HIGH);
else
led_set(blueLED, LOW);
}
}
if (Serial1.available() > 0) {
blink(50);
char result = Serial1.read();
// Serial1.println(result);
if (result == 'R') {
Serial1.println("OK");
delay(500);
setup();
}
if (result == '?')
{
if (bmePresent) {
Serial1.print("OK BME280 ");
Serial1.print(bme.readTemperature());
Serial1.print(" ");
Serial1.print(bme.readPressure() / 100.0F);
Serial1.print(" ");
Serial1.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial1.print(" ");
Serial1.print(bme.readHumidity());
} else
{
Serial1.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial1.print(" MPU6050 ");
Serial1.print(mpu6050.getGyroX());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroY());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroZ());
Serial1.print(" ");
Serial1.print(mpu6050.getAccX());
Serial1.print(" ");
Serial1.print(mpu6050.getAccY());
Serial1.print(" ");
Serial1.print(mpu6050.getAccZ());
Serial1.print(" XS ");
Serial1.print(Sensor1);
Serial1.print(" ");
Serial1.print(Sensor2);
Serial1.print(" ");
Serial1.println(Sensor3);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()*mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
led_set(greenLED, HIGH);
else
led_set(greenLED, LOW);
if (rotation > 5)
led_set(blueLED, HIGH);
else
led_set(blueLED, LOW);
}
}
bool newData = false;
unsigned long chars;
unsigned short sentences, failed;
// For one second we parse GPS data and report some key values
for (unsigned long start = millis(); millis() - start < 100;) // 1000;)
{
while (Serial2.available())
{
char c = Serial2.read();
Serial.write(c); // uncomment this line if you want to see the GPS data flowing
if (gps.encode(c)) // Did a new valid sentence come in?
newData = true;
}
}
if (newData)
{
float flon, flat;
unsigned long age;
gps.f_get_position(&flat, &flon, &age);
Sensor1 = flat * 100;
Sensor2 = flon * 100;
Sensor3 = (float) gps.altitude()/100.0;
}
// delay(100);
}
void eeprom_word_write(int addr, int val)
{
EEPROM.write(addr * 2, lowByte(val));
EEPROM.write(addr * 2 + 1, highByte(val));
}
short eeprom_word_read(int addr)
{
return ((EEPROM.read(addr * 2 + 1) << 8) | EEPROM.read(addr * 2));
}
void blink_setup()
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
// initialize digital pin PB1 as an output.
pinMode(PC13, OUTPUT);
pinMode(PB9, OUTPUT);
pinMode(PB8, OUTPUT);
#endif
#if defined __AVR_ATmega32U4__
pinMode(RXLED, OUTPUT); // Set RX LED as an output
// TX LED is set as an output behind the scenes
pinMode(greenLED, OUTPUT);
pinMode(blueLED,OUTPUT);
#endif
}
void blink(int length)
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
digitalWrite(PC13, LOW); // turn the LED on (HIGH is the voltage level)
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
#endif
delay(length); // wait for a lenth of time
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
digitalWrite(PC13, HIGH); // turn the LED off by making the voltage LOW
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(RXLED, HIGH); // set the RX LED OFF
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
#endif
}
void led_set(int ledPin, bool state)
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
if (ledPin == greenLED)
digitalWrite(PB9, state);
else if (ledPin == blueLED)
digitalWrite(PB8, state);
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(ledPin, state);
#endif
}

@ -0,0 +1,302 @@
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#include <MPU6050_tockn.h>
#include <EEPROM.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
MPU6050 mpu6050(Wire);
long timer = 0;
int bmePresent;
int RXLED = 17; // The RX LED has a defined Arduino pin
int greenLED = 9;
int blueLED = 8;
int Sensor1 = 0;
float Sensor2 = 0;
void eeprom_word_write(int addr, int val);
short eeprom_word_read(int addr);
int first_time = true;
float T2 = 26.3; // Temperature data point 1
float R2 = 167; // Reading data point 1
float T1 = 2; // Temperature data point 2
float R1 = 179; // Reading data point 2
int sensorValue;
float Temp;
void setup() {
Serial.begin(9600); // Serial Monitor for testing
Serial1.begin(115200); // Pi UART faster speed
Serial.println("Starting!");
blink_setup();
blink(500);
delay(250);
blink(500);
delay(250);
led_set(greenLED, HIGH);
delay(250);
led_set(greenLED, LOW);
led_set(blueLED, HIGH);
delay(250);
led_set(blueLED, LOW);
if (bme.begin(0x76)) {
bmePresent = 1;
} else {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
bmePresent = 0;
}
mpu6050.begin();
if (eeprom_word_read(0) == 0xA07)
{
Serial.println("Reading gyro offsets from EEPROM\n");
float xOffset = ((float)eeprom_word_read(1)) / 100.0;
float yOffset = ((float)eeprom_word_read(2)) / 100.0;
float zOffset = ((float)eeprom_word_read(3)) / 100.0;
Serial.println(xOffset, DEC);
Serial.println(yOffset, DEC);
Serial.println(zOffset, DEC);
mpu6050.setGyroOffsets(xOffset, yOffset, zOffset);
}
else
{
Serial.println("Calculating gyro offsets and storing in EEPROM\n");
mpu6050.calcGyroOffsets(true);
eeprom_word_write(0, 0xA07);
eeprom_word_write(1, (int)(mpu6050.getGyroXoffset() * 100.0) + 0.5);
eeprom_word_write(2, (int)(mpu6050.getGyroYoffset() * 100.0) + 0.5);
eeprom_word_write(3, (int)(mpu6050.getGyroZoffset() * 100.0) + 0.5);
Serial.println(eeprom_word_read(0), HEX);
Serial.println(((float)eeprom_word_read(1)) / 100.0, DEC);
Serial.println(((float)eeprom_word_read(2)) / 100.0, DEC);
Serial.println(((float)eeprom_word_read(3)) / 100.0, DEC);
}
pinMode(greenLED, OUTPUT);
pinMode(blueLED, OUTPUT);
}
void loop() {
if ((Serial.available() > 0)|| first_time == true) {
blink(50);
char result = Serial.read();
// Serial.println(result);
if (result == 'R') {
Serial.println("OK");
delay(500);
setup();
}
if ((result == '?') || first_time == true)
{
first_time = false;
if (bmePresent) {
Serial.print("OK BME280 ");
Serial.print(bme.readTemperature());
Serial.print(" ");
Serial.print(bme.readPressure() / 100.0F);
Serial.print(" ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.print(" ");
Serial.print(bme.readHumidity());
} else
{
Serial.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial.print(" MPU6050 ");
Serial.print(mpu6050.getGyroX());
Serial.print(" ");
Serial.print(mpu6050.getGyroY());
Serial.print(" ");
Serial.print(mpu6050.getGyroZ());
Serial.print(" ");
Serial.print(mpu6050.getAccX());
Serial.print(" ");
Serial.print(mpu6050.getAccY());
Serial.print(" ");
Serial.print(mpu6050.getAccZ());
sensorValue = analogRead(A3);
//Serial.println(sensorValue);
Temp = T1 + (sensorValue - R1) *((T2 - T1)/(R2 - R1));
Serial.print(" XS ");
Serial.print(Temp);
Serial.print(" ");
Serial.println(Sensor1);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()*mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
led_set(greenLED, HIGH);
else
led_set(greenLED, LOW);
if (rotation > 5)
led_set(blueLED, HIGH);
else
led_set(blueLED, LOW);
}
}
if (Serial1.available() > 0) {
blink(50);
char result = Serial1.read();
// Serial1.println(result);
if (result == 'R') {
Serial1.println("OK");
delay(500);
setup();
}
if (result == '?')
{
if (bmePresent) {
Serial1.print("OK BME280 ");
Serial1.print(bme.readTemperature());
Serial1.print(" ");
Serial1.print(bme.readPressure() / 100.0F);
Serial1.print(" ");
Serial1.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial1.print(" ");
Serial1.print(bme.readHumidity());
} else
{
Serial1.print("OK BME280 0.0 0.0 0.0 0.0");
}
mpu6050.update();
Serial1.print(" MPU6050 ");
Serial1.print(mpu6050.getGyroX());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroY());
Serial1.print(" ");
Serial1.print(mpu6050.getGyroZ());
Serial1.print(" ");
Serial1.print(mpu6050.getAccX());
Serial1.print(" ");
Serial1.print(mpu6050.getAccY());
Serial1.print(" ");
Serial1.print(mpu6050.getAccZ());
sensorValue = analogRead(A3);
//Serial.println(sensorValue);
Temp = T1 + (sensorValue - R1) *((T2 - T1)/(R2 - R1));
Serial1.print(" XS ");
Serial1.print(Temp);
Serial1.print(" ");
Serial1.println(Sensor2);
float rotation = sqrt(mpu6050.getGyroX()*mpu6050.getGyroX() + mpu6050.getGyroY()*mpu6050.getGyroY() + mpu6050.getGyroZ()*mpu6050.getGyroZ());
float acceleration = sqrt(mpu6050.getAccX()*mpu6050.getAccX() + mpu6050.getAccY()*mpu6050.getAccY() + mpu6050.getAccZ()*mpu6050.getAccZ());
// Serial.print(rotation);
// Serial.print(" ");
// Serial.println(acceleration);
if (acceleration > 1.2)
led_set(greenLED, HIGH);
else
led_set(greenLED, LOW);
if (rotation > 5)
led_set(blueLED, HIGH);
else
led_set(blueLED, LOW);
}
}
// delay(100);
}
void eeprom_word_write(int addr, int val)
{
EEPROM.write(addr * 2, lowByte(val));
EEPROM.write(addr * 2 + 1, highByte(val));
}
short eeprom_word_read(int addr)
{
return ((EEPROM.read(addr * 2 + 1) << 8) | EEPROM.read(addr * 2));
}
void blink_setup()
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
// initialize digital pin PB1 as an output.
pinMode(PC13, OUTPUT);
pinMode(PB9, OUTPUT);
pinMode(PB8, OUTPUT);
#endif
#if defined __AVR_ATmega32U4__
pinMode(RXLED, OUTPUT); // Set RX LED as an output
// TX LED is set as an output behind the scenes
pinMode(greenLED, OUTPUT);
pinMode(blueLED,OUTPUT);
#endif
}
void blink(int length)
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
digitalWrite(PC13, LOW); // turn the LED on (HIGH is the voltage level)
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
#endif
delay(length); // wait for a lenth of time
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
digitalWrite(PC13, HIGH); // turn the LED off by making the voltage LOW
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(RXLED, HIGH); // set the RX LED OFF
TXLED0; //TX LED macro to turn LED ON
#endif
}
void led_set(int ledPin, bool state)
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
if (ledPin == greenLED)
digitalWrite(PB9, state);
else if (ledPin == blueLED)
digitalWrite(PB8, state);
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(ledPin, state);
#endif
}

@ -0,0 +1,80 @@
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25)
//#define TESTING // Define to test on Serial Monitor
Adafruit_BME280 bme;
int counter = 0;
int RXLED = 17; // The RX LED has a defined Arduino pin
void setup() {
Serial.begin(9600); // Serial Monitor for testing
Serial1.begin(9600); // Pi UART
Serial.println("Starting!");
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}
void loop() {
#ifdef TESTING
if (Serial.available() > 0) {
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
char result = Serial.read();
// Serial1.println(result);
Serial.print("OK BME280 ");
Serial.print(bme.readTemperature());
Serial.print(" ");
Serial.print(bme.readPressure() / 100.0F);
Serial.print(" ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.print(" ");
Serial.println(bme.readHumidity());
// Serial1.println(counter++);
}
#else
if (Serial1.available() > 0) {
digitalWrite(RXLED, LOW); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
delay(50); // wait for a second
digitalWrite(RXLED, HIGH); // set the RX LED ON
TXLED0; //TX LED is not tied to a normally controlled pin so a macro is needed, turn LED OFF
char result = Serial1.read();
// Serial1.println(result);
// Serial1.println("OK ");
/**/
Serial1.print("OK BME280 ");
Serial1.print(bme.readTemperature());
Serial1.print(" ");
Serial1.print(bme.readPressure() / 100.0F);
Serial1.print(" ");
Serial1.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial1.print(" ");
Serial1.println(bme.readHumidity());
/**/
// Serial1.println(counter++);
}
#endif
delay(100);
}

@ -0,0 +1,28 @@
This code is for the STM32 or Pro Micro acting as a payload to the CubeSatSim.
Code includes (in rough order of testing):
Blink_STM32_PC13.ino and Blink_Pro_Micro.ino The usual Arduino "Hello World" application that blinks the LED for each board.
i2c_scanner.ino A handy utility for scanning the I2C bus that displays the results in the Serial Monitor at 9600 baud. If the sensors are installed and the jumpers set to the correct position, the two sensors should be displayed.
STEM_Payload_Test_STM32.ino and STEM_Payload_Test_Pro_Micro.ino Blinks the Blue and Green LEDs on the STEM Payload Board and also reads the Temperature and Voltage sensors.
bme280test.ino Displays the results of reading the BME280 sensor: Temperature, Pressure, Altitude, and Humidity and displays on Serial Monitor 9600 baud. Requires the following libraries: Adadruit Unified Sensor (specify version 1.0.3), Adafruit_BME280 (specify version 1.1.0)
GetAllData.ino Displays the results of reading the MPU6050 sensor: Temperature, X, Y, and Z Axes: Acceleration, Gyor (Rotation Rate), and Angle. Requires the following libraries: MPU6050_tockn.
PayloadOK_STM32_PC13.ino and PayloadOK_Pro_Micro.ino This code answers the query from the Raspberry Pi CubeSatSim software over the UART so that the STEM Payload is marked "OK" in the FoxTelem CubeSatSim-FSK Health tab.
Payload_BME280_MPU6050_Pro_Micro.ino and Payload_BME280_MPU6050_STM32.ino This code answers the query from the Raspberry Pi CubeSatSim software over the UART so that the STEM Payload is marked "OK" in the FoxTelem CubeSatSim-FSK Health tab and also replies withe BME280 and MPU6050 sensor data. In FoxTelem, this is displayed as the X, Y, and Z Gyro (dps) and in AFSK mode, it is appended to the telemetry string.
The STM32 can be programmed using the Arduino IDE with the Generic STM32F103C series board and STM32duino bootloader, Maple Mini port.
The Sparkfun Pro Micro can also be programed using the Arduino IDE with the Sparkfun Pro Micro board and AVRISP mkII Programmer.
See the Wiki page for more information:
See https://github.com/alanbjohnston/CubeSatSim/wiki/Arduino-Payload

@ -0,0 +1,105 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
Modified by Roger Clark. www.rogerclark.net for Maple mini 25th April 2015 , where the LED is on PC13
Added CubeSatSim Payload tests for STM32 and Pro Micro by Alan Johnston, KU2Y
*/
int sensorValue = 0;
int greenLED = 9;
int blueLED = 8;
// Calibration data for diode temperature sensor
float T1 = 25; // Temperature data point 1
float R1 = 373; // Reading data point 1
float T2 = 17; // Temperature data point 2
float R2 = 405; // Reading data point 2
// the setup function runs once when you press reset or power the board
void setup() {
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
// initialize digital pin PB1 as an output.
pinMode(PB9, OUTPUT);
pinMode(PB8, OUTPUT);
pinMode(PA0, INPUT_ANALOG);
pinMode(PA1, INPUT_ANALOG);
pinMode(PA2, INPUT_ANALOG);
T2 = 25; // Temperature data point 1
R2 = 2111; // Reading data point 1
T1 = 23; // Temperature data point 2
R1 = 2097; // Reading data point 2
#endif
#if defined __AVR_ATmega32U4__
pinMode(greenLED, OUTPUT);
pinMode(blueLED,OUTPUT);
#endif
Serial.begin(9600);
}
// the loop function runs over and over again forever
void loop() {
ledWrite(greenLED, HIGH); // turn the LED on (HIGH is the voltage level)
ledWrite(blueLED, LOW); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
ledWrite(greenLED, LOW); // turn the LED off by making the voltage LOW
ledWrite(blueLED, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
sensorValue = readAnalog(0);
// Serial.println(sensorValue);
sensorValue = readAnalog(1);
float temp = T1 + (sensorValue - R1) *(T2 - T1)/(R2 - R1);
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" C");
sensorValue = readAnalog(2);
// Serial.println(sensorValue);
}
void ledWrite(int ledPin, bool state)
{
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
if (ledPin == greenLED)
digitalWrite(PB9, state);
else if (ledPin == blueLED)
digitalWrite(PB8, state);
#endif
#if defined __AVR_ATmega32U4__
digitalWrite(ledPin, state);
#endif
}
int readAnalog(int pin)
{
int value = 0;
#if defined(ARDUINO_ARCH_STM32F0) || defined(ARDUINO_ARCH_STM32F1) || defined(ARDUINO_ARCH_STM32F3) || defined(ARDUINO_ARCH_STM32F4) || defined(ARDUINO_ARCH_STM32L4)
if (pin == 0)
value = analogRead(PA0);
else if (pin == 1)
value = analogRead(PA1);
else if (pin == 2)
value = analogRead(PA2);
#endif
#if defined __AVR_ATmega32U4__
value = analogRead(pin);
#endif
return(value);
}

@ -0,0 +1,56 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
Modified by Roger Clark. www.rogerclark.net for Maple mini 25th April 2015 , where the LED is on PC13
Added CubeSatSim Payload tests by Alan Johnston, KU2Y
*/
int sensorValue = 0;
int D9 = 9;
int D8 = 8;
// Calibration data for diode temperature sensor
float T1 = 25; // Temperature data point 1
float R1 = 373; // Reading data point 1
float T2 = 17; // Temperature data point 2
float R2 = 405; // Reading data point 2
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin PB1 as an output.
pinMode(D9, OUTPUT);
pinMode(D8, OUTPUT);
Serial.begin(9600);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(D9, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(D8, LOW); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(D9, LOW); // turn the LED off by making the voltage LOW
digitalWrite(D8, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
sensorValue = analogRead(A0);
// Serial.println(sensorValue);
sensorValue = analogRead(A1);
float temp = T1 + (sensorValue - R1) *(T2 - T1)/(R2 - R1);
Serial.print("Temperature: ");
Serial.print(temp);
Serial.println(" C");
sensorValue = analogRead(A2);
// Serial.println(sensorValue);
}

@ -0,0 +1,50 @@
/*
Blink
Turns on an LED on for one second, then off for one second, repeatedly.
Most Arduinos have an on-board LED you can control. On the Uno and
Leonardo, it is attached to digital pin 13. If you're unsure what
pin the on-board LED is connected to on your Arduino model, check
the documentation at http://arduino.cc
This example code is in the public domain.
modified 8 May 2014
by Scott Fitzgerald
Modified by Roger Clark. www.rogerclark.net for Maple mini 25th April 2015 , where the LED is on PC13
Added CubeSatSim Payload tests by Alan Johnston, KU2Y
*/
int sensorValue = 0;
// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin PB1 as an output.
pinMode(PB9, OUTPUT);
pinMode(PB8, OUTPUT);
pinMode(PA0, INPUT_ANALOG);
pinMode(PA1, INPUT_ANALOG);
pinMode(PA2, INPUT_ANALOG);
Serial.begin(9600);
}
// the loop function runs over and over again forever
void loop() {
digitalWrite(PB9, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(PB8, LOW); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
digitalWrite(PB9, LOW); // turn the LED off by making the voltage LOW
digitalWrite(PB8, HIGH); // turn the LED on (HIGH is the voltage level)
delay(1000); // wait for a second
sensorValue = analogRead(PA0);
Serial.println(sensorValue);
sensorValue = analogRead(PA1);
Serial.println(sensorValue);
sensorValue = analogRead(PA2);
Serial.println(sensorValue);
}

@ -0,0 +1,37 @@
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BME280.h>
#define SEALEVELPRESSURE_HPA (1013.25)
Adafruit_BME280 bme;
void setup() {
Serial.begin(9600);
if (!bme.begin(0x76)) {
Serial.println("Could not find a valid BME280 sensor, check wiring!");
while (1);
}
}
void loop() {
Serial.print("Temperature = ");
Serial.print(bme.readTemperature());
Serial.println("*C");
Serial.print("Pressure = ");
Serial.print(bme.readPressure() / 100.0F);
Serial.println("hPa");
Serial.print("Approx. Altitude = ");
Serial.print(bme.readAltitude(SEALEVELPRESSURE_HPA));
Serial.println("m");
Serial.print("Humidity = ");
Serial.print(bme.readHumidity());
Serial.println("%");
Serial.println();
delay(1000);
}

@ -0,0 +1,70 @@
/*
* EEPROM Write
*
* Stores values into the EEPROM.
* These values will stay in the EEPROM when the board is
* turned off and may be retrieved later by another sketch.
*
* Writes 8 values.
*
*/
#include <EEPROM.h>
/** the current address in the EEPROM (i.e. which byte we're going to write to next) **/
int addr = 0;
void setup() {
// initialize serial
Serial.begin(9600);
}
void loop() {
/***
Need to divide by 4 because analog inputs range from
0 to 1023 and each byte of the EEPROM can only hold a
value from 0 to 255.
***/
// int val = analogRead(0) / 4;
/***
Write the value to the appropriate byte of the EEPROM.
these values will remain there when the board is
turned off.
***/
Serial.println("\nEEPROM Write/Read test and Reset\n\n");
for (int i=0; i < 9; i++)
{
EEPROM.write(i,i);
delay(500);
Serial.println(EEPROM.read(i));
}
/***
Advance to the next address, when at the end restart at the beginning.
Larger AVR processors have larger EEPROM sizes, E.g:
- Arduno Duemilanove: 512b EEPROM storage.
- Arduino Uno: 1kb EEPROM storage.
- Arduino Mega: 4kb EEPROM storage.
Rather than hard-coding the length, you should use the pre-provided length function.
This will make your code portable to all AVR processors.
***/
// addr = addr + 1;
// if (addr == EEPROM.length()) {
// addr = 0;
// }
/***
As the EEPROM sizes are powers of two, wrapping (preventing overflow) of an
EEPROM address is also doable by a bitwise and of the length - 1.
++addr &= EEPROM.length() - 1;
***/
// delay(100);
}

@ -0,0 +1,79 @@
// --------------------------------------
// i2c_scanner
//
// Version 1
// This program (or code that looks like it)
// can be found in many places.
// For example on the Arduino.cc forum.
// The original author is not know.
// Version 2, Juni 2012, Using Arduino 1.0.1
// Adapted to be as simple as possible by Arduino.cc user Krodal
// Version 3, Feb 26 2013
// V3 by louarnold
// Version 4, March 3, 2013, Using Arduino 1.0.3
// by Arduino.cc user Krodal.
// Changes by louarnold removed.
// Scanning addresses changed from 0...127 to 1...119,
// according to the i2c scanner by Nick Gammon
// https://www.gammon.com.au/forum/?id=10896
// Version 5, March 28, 2013
// As version 4, but address scans now to 127.
// A sensor seems to use address 120.
// Version 6, November 27, 2015.
// Added waiting for the Leonardo serial communication.
//
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//
#include <Wire.h>
void setup() {
Wire.begin();
Serial.begin(9600);
while (!Serial); // Leonardo: wait for serial monitor
Serial.println("\nI2C Scanner");
}
void loop() {
int nDevices = 0;
Serial.println("Scanning...");
for (byte address = 0x43; address < 127; ++address) {
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the address.
Wire.beginTransmission(address);
Serial.print(address, HEX);
byte error = Wire.endTransmission();
if (error == 0) {
Serial.print("\nI2C device found at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.print(address, HEX);
Serial.println(" !");
++nDevices;
} else if (error == 4) {
Serial.print("Unknown error at address 0x");
if (address < 16) {
Serial.print("0");
}
Serial.println(address, HEX);
}
}
if (nDevices == 0) {
Serial.println("No I2C devices found\n");
} else {
Serial.println("\ndone\n");
}
delay(5000); // Wait 5 seconds for next scan
}
Loading…
Cancel
Save

Powered by TurnKey Linux.