diff --git a/kc4upr/IO Hat/IO Hat-cache.lib b/kc4upr/IO Hat/IO Hat-cache.lib new file mode 100644 index 0000000..30b25fd --- /dev/null +++ b/kc4upr/IO Hat/IO Hat-cache.lib @@ -0,0 +1,286 @@ +EESchema-LIBRARY Version 2.4 +#encoding utf-8 +# +# Connector_AudioJack3_Switch +# +DEF Connector_AudioJack3_Switch J 0 20 Y Y 1 F N +F0 "J" 0 450 50 H V C CNN +F1 "Connector_AudioJack3_Switch" 0 350 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Jack* +$ENDFPLIST +DRAW +S -200 -200 -250 -300 0 1 10 F +S 100 250 -200 -350 0 1 10 f +P 2 0 1 0 -50 190 -40 170 N +P 2 0 1 0 20 -10 30 -30 N +P 2 0 1 0 70 -210 80 -230 N +P 4 0 1 10 0 -200 25 -225 50 -200 100 -200 N +P 4 0 1 0 100 -300 70 -300 70 -210 60 -230 N +P 4 0 1 0 100 -100 20 -100 20 -10 10 -30 N +P 4 0 1 0 100 100 -50 100 -50 190 -60 170 N +P 5 0 1 10 -75 -200 -50 -225 -25 -200 -25 0 100 0 N +P 5 0 1 10 100 200 -100 200 -100 -200 -125 -225 -150 -200 N +X ~ R 200 0 100 L 50 50 1 1 P +X ~ RN 200 -100 100 L 50 50 1 1 P +X ~ S 200 200 100 L 50 50 1 1 P +X ~ SN 200 100 100 L 50 50 1 1 P +X ~ T 200 -200 100 L 50 50 1 1 P +X ~ TN 200 -300 100 L 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Connector_Generic_Conn_02x20_Odd_Even +# +DEF Connector_Generic_Conn_02x20_Odd_Even J 0 40 Y N 1 F N +F0 "J" 50 1000 50 H V C CNN +F1 "Connector_Generic_Conn_02x20_Odd_Even" 50 -1100 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Connector*:*_2x??_* +$ENDFPLIST +DRAW +S -50 -995 0 -1005 1 1 6 N +S -50 -895 0 -905 1 1 6 N +S -50 -795 0 -805 1 1 6 N +S -50 -695 0 -705 1 1 6 N +S -50 -595 0 -605 1 1 6 N +S -50 -495 0 -505 1 1 6 N +S -50 -395 0 -405 1 1 6 N +S -50 -295 0 -305 1 1 6 N +S -50 -195 0 -205 1 1 6 N +S -50 -95 0 -105 1 1 6 N +S -50 5 0 -5 1 1 6 N +S -50 105 0 95 1 1 6 N +S -50 205 0 195 1 1 6 N +S -50 305 0 295 1 1 6 N +S -50 405 0 395 1 1 6 N +S -50 505 0 495 1 1 6 N +S -50 605 0 595 1 1 6 N +S -50 705 0 695 1 1 6 N +S -50 805 0 795 1 1 6 N +S -50 905 0 895 1 1 6 N +S -50 950 150 -1050 1 1 10 f +S 150 -995 100 -1005 1 1 6 N +S 150 -895 100 -905 1 1 6 N +S 150 -795 100 -805 1 1 6 N +S 150 -695 100 -705 1 1 6 N +S 150 -595 100 -605 1 1 6 N +S 150 -495 100 -505 1 1 6 N +S 150 -395 100 -405 1 1 6 N +S 150 -295 100 -305 1 1 6 N +S 150 -195 100 -205 1 1 6 N +S 150 -95 100 -105 1 1 6 N +S 150 5 100 -5 1 1 6 N +S 150 105 100 95 1 1 6 N +S 150 205 100 195 1 1 6 N +S 150 305 100 295 1 1 6 N +S 150 405 100 395 1 1 6 N +S 150 505 100 495 1 1 6 N +S 150 605 100 595 1 1 6 N +S 150 705 100 695 1 1 6 N +S 150 805 100 795 1 1 6 N +S 150 905 100 895 1 1 6 N +X Pin_1 1 -200 900 150 R 50 50 1 1 P +X Pin_10 10 300 500 150 L 50 50 1 1 P +X Pin_11 11 -200 400 150 R 50 50 1 1 P +X Pin_12 12 300 400 150 L 50 50 1 1 P +X Pin_13 13 -200 300 150 R 50 50 1 1 P +X Pin_14 14 300 300 150 L 50 50 1 1 P +X Pin_15 15 -200 200 150 R 50 50 1 1 P +X Pin_16 16 300 200 150 L 50 50 1 1 P +X Pin_17 17 -200 100 150 R 50 50 1 1 P +X Pin_18 18 300 100 150 L 50 50 1 1 P +X Pin_19 19 -200 0 150 R 50 50 1 1 P +X Pin_2 2 300 900 150 L 50 50 1 1 P +X Pin_20 20 300 0 150 L 50 50 1 1 P +X Pin_21 21 -200 -100 150 R 50 50 1 1 P +X Pin_22 22 300 -100 150 L 50 50 1 1 P +X Pin_23 23 -200 -200 150 R 50 50 1 1 P +X Pin_24 24 300 -200 150 L 50 50 1 1 P +X Pin_25 25 -200 -300 150 R 50 50 1 1 P +X Pin_26 26 300 -300 150 L 50 50 1 1 P +X Pin_27 27 -200 -400 150 R 50 50 1 1 P +X Pin_28 28 300 -400 150 L 50 50 1 1 P +X Pin_29 29 -200 -500 150 R 50 50 1 1 P +X Pin_3 3 -200 800 150 R 50 50 1 1 P +X Pin_30 30 300 -500 150 L 50 50 1 1 P +X Pin_31 31 -200 -600 150 R 50 50 1 1 P +X Pin_32 32 300 -600 150 L 50 50 1 1 P +X Pin_33 33 -200 -700 150 R 50 50 1 1 P +X Pin_34 34 300 -700 150 L 50 50 1 1 P +X Pin_35 35 -200 -800 150 R 50 50 1 1 P +X Pin_36 36 300 -800 150 L 50 50 1 1 P +X Pin_37 37 -200 -900 150 R 50 50 1 1 P +X Pin_38 38 300 -900 150 L 50 50 1 1 P +X Pin_39 39 -200 -1000 150 R 50 50 1 1 P +X Pin_4 4 300 800 150 L 50 50 1 1 P +X Pin_40 40 300 -1000 150 L 50 50 1 1 P +X Pin_5 5 -200 700 150 R 50 50 1 1 P +X Pin_6 6 300 700 150 L 50 50 1 1 P +X Pin_7 7 -200 600 150 R 50 50 1 1 P +X Pin_8 8 300 600 150 L 50 50 1 1 P +X Pin_9 9 -200 500 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_C +# +DEF Device_C C 0 10 N Y 1 F N +F0 "C" 25 100 50 H V L CNN +F1 "Device_C" 25 -100 50 H V L CNN +F2 "" 38 -150 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + C_* +$ENDFPLIST +DRAW +P 2 0 1 20 -80 -30 80 -30 N +P 2 0 1 20 -80 30 80 30 N +X ~ 1 0 150 110 D 50 50 1 1 P +X ~ 2 0 -150 110 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# Device_R_US +# +DEF Device_R_US R 0 0 N Y 1 F N +F0 "R" 100 0 50 V V C CNN +F1 "Device_R_US" -100 0 50 V V C CNN +F2 "" 40 -10 50 V I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + R_* +$ENDFPLIST +DRAW +P 2 0 1 0 0 -90 0 -100 N +P 2 0 1 0 0 90 0 100 N +P 5 0 1 0 0 -30 40 -45 0 -60 -40 -75 0 -90 N +P 5 0 1 0 0 30 40 15 0 0 -40 -15 0 -30 N +P 5 0 1 0 0 90 40 75 0 60 -40 45 0 30 N +X ~ 1 0 150 50 D 50 50 1 1 P +X ~ 2 0 -150 50 U 50 50 1 1 P +ENDDRAW +ENDDEF +# +# IO-Hat-rescue_Mounting_Hole-Mechanical +# +DEF IO-Hat-rescue_Mounting_Hole-Mechanical MK 0 40 Y Y 1 F N +F0 "MK" 0 200 50 H V C CNN +F1 "IO-Hat-rescue_Mounting_Hole-Mechanical" 0 125 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Mounting?Hole* + Hole* +$ENDFPLIST +DRAW +C 0 0 50 0 1 50 N +ENDDRAW +ENDDEF +# +# Isolator_LTV-847 +# +DEF Isolator_LTV-847 U 0 40 Y Y 4 F N +F0 "U" -200 200 50 H V L CNN +F1 "Isolator_LTV-847" 0 200 50 H V L CNN +F2 "Package_DIP:DIP-16_W7.62mm" -200 -200 50 H I L CIN +F3 "" 0 0 50 H I L CNN +ALIAS LTV-847 +$FPLIST + DIP*W7.62mm* +$ENDFPLIST +DRAW +S -200 150 200 -150 0 1 10 f +P 2 0 1 10 -125 -25 -75 -25 N +P 2 0 1 0 100 25 175 100 N +P 2 0 1 0 175 -100 100 -25 F +P 2 0 1 0 175 -100 200 -100 N +P 2 0 1 0 175 100 200 100 N +P 3 0 1 0 -100 -25 -100 -100 -200 -100 N +P 3 0 1 20 100 75 100 -75 100 -75 N +P 4 0 1 0 -200 100 -100 100 -100 -50 -100 25 N +P 4 0 1 10 -100 -25 -125 25 -75 25 -100 -25 N +P 5 0 1 0 -20 -20 30 -20 15 -25 15 -15 30 -20 N +P 5 0 1 0 -20 20 30 20 15 15 15 25 30 20 N +P 5 0 1 0 120 -65 140 -45 160 -85 120 -65 120 -65 F +X ~ 1 -300 100 100 R 50 50 1 1 P +X ~ 15 300 -100 100 L 50 50 1 1 P +X ~ 16 300 100 100 L 50 50 1 1 P +X ~ 2 -300 -100 100 R 50 50 1 1 P +X ~ 13 300 -100 100 L 50 50 2 1 P +X ~ 14 300 100 100 L 50 50 2 1 P +X ~ 3 -300 100 100 R 50 50 2 1 P +X ~ 4 -300 -100 100 R 50 50 2 1 P +X ~ 11 300 -100 100 L 50 50 3 1 P +X ~ 12 300 100 100 L 50 50 3 1 P +X ~ 5 -300 100 100 R 50 50 3 1 P +X ~ 6 -300 -100 100 R 50 50 3 1 P +X ~ 10 300 100 100 L 50 50 4 1 P +X ~ 7 -300 100 100 R 50 50 4 1 P +X ~ 8 -300 -100 100 R 50 50 4 1 P +X ~ 9 300 -100 100 L 50 50 4 1 P +ENDDRAW +ENDDEF +# +# power_+3.3V +# +DEF power_+3.3V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "power_+3.3V" 0 140 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +ALIAS +3.3V +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 +# +# power_+5V +# +DEF power_+5V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "power_+5V" 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 +# +# power_GND +# +DEF power_GND #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -250 50 H I C CNN +F1 "power_GND" 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 +# +# power_GNDA +# +DEF power_GNDA #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -250 50 H I C CNN +F1 "power_GNDA" 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 GNDA 1 0 0 0 D 50 50 1 1 W N +ENDDRAW +ENDDEF +# +#End Library diff --git a/kc4upr/IO Hat/IO Hat-rescue.dcm b/kc4upr/IO Hat/IO Hat-rescue.dcm new file mode 100644 index 0000000..5f3ed79 --- /dev/null +++ b/kc4upr/IO Hat/IO Hat-rescue.dcm @@ -0,0 +1,3 @@ +EESchema-DOCLIB Version 2.0 +# +#End Doc Library diff --git a/kc4upr/IO Hat/IO Hat-rescue.lib b/kc4upr/IO Hat/IO Hat-rescue.lib new file mode 100644 index 0000000..63bb1a0 --- /dev/null +++ b/kc4upr/IO Hat/IO Hat-rescue.lib @@ -0,0 +1,20 @@ +EESchema-LIBRARY Version 2.4 +#encoding utf-8 +# +# Mounting_Hole-Mechanical +# +DEF Mounting_Hole-Mechanical MK 0 40 Y Y 1 F N +F0 "MK" 0 200 50 H V C CNN +F1 "Mounting_Hole-Mechanical" 0 125 50 H V C CNN +F2 "" 0 0 50 H I C CNN +F3 "" 0 0 50 H I C CNN +$FPLIST + Mounting?Hole* + Hole* +$ENDFPLIST +DRAW +C 0 0 50 0 1 50 N +ENDDRAW +ENDDEF +# +#End Library diff --git a/kc4upr/IO Hat/IO Hat.cmp b/kc4upr/IO Hat/IO Hat.cmp new file mode 100644 index 0000000..883b607 --- /dev/null +++ b/kc4upr/IO Hat/IO Hat.cmp @@ -0,0 +1,43 @@ +Cmp-Mod V01 Created by PcbNew date = Mon 04 Sep 2017 07:48:59 AM CDT + +BeginCmp +TimeStamp = 580CBA7A +Path = /5834FB2E +Reference = MK1; +ValeurCmp = M2.5; +IdModule = Mounting_Holes:MountingHole_2-5mm; +EndCmp + +BeginCmp +TimeStamp = 580CBAAE +Path = /5834FC19 +Reference = MK2; +ValeurCmp = M2.5; +IdModule = Mounting_Holes:MountingHole_2-5mm; +EndCmp + +BeginCmp +TimeStamp = 580CBAC8 +Path = /5834FBEF +Reference = MK3; +ValeurCmp = M2.5; +IdModule = Mounting_Holes:MountingHole_2-5mm; +EndCmp + +BeginCmp +TimeStamp = 580C7F66 +Path = /580C18BB +Reference = P1; +ValeurCmp = CONN_02X20; +IdModule = Socket_Strips:Socket_Strip_Straight_2x20; +EndCmp + +BeginCmp +TimeStamp = 580CBAD7 +Path = /5834FC4F +Reference = MK4; +ValeurCmp = M2.5; +IdModule = Mounting_Holes:MountingHole_2-5mm; +EndCmp + +EndListe diff --git a/kc4upr/IO Hat/IO Hat.jpg b/kc4upr/IO Hat/IO Hat.jpg new file mode 100644 index 0000000..83f3e90 Binary files /dev/null and b/kc4upr/IO Hat/IO Hat.jpg differ diff --git a/kc4upr/IO Hat/IO Hat.kicad_pcb b/kc4upr/IO Hat/IO Hat.kicad_pcb new file mode 100644 index 0000000..ef1032d --- /dev/null +++ b/kc4upr/IO Hat/IO Hat.kicad_pcb @@ -0,0 +1,424 @@ +(kicad_pcb (version 20171130) (host pcbnew no-vcs-found-c6d0075~61~ubuntu16.04.1) + + (general + (thickness 1.6) + (drawings 39) + (tracks 0) + (zones 0) + (modules 5) + (nets 32) + ) + + (page A3) + (title_block + (date "15 nov 2012") + ) + + (layers + (0 F.Cu signal) + (31 B.Cu signal) + (32 B.Adhes user) + (33 F.Adhes user) + (34 B.Paste user) + (35 F.Paste user) + (36 B.SilkS user) + (37 F.SilkS user) + (38 B.Mask user) + (39 F.Mask user) + (40 Dwgs.User user) + (41 Cmts.User user) + (42 Eco1.User user) + (43 Eco2.User user) + (44 Edge.Cuts user) + ) + + (setup + (last_trace_width 0.2) + (trace_clearance 0.2) + (zone_clearance 0.508) + (zone_45_only no) + (trace_min 0.1524) + (segment_width 0.1) + (edge_width 0.1) + (via_size 0.9) + (via_drill 0.6) + (via_min_size 0.8) + (via_min_drill 0.5) + (uvia_size 0.5) + (uvia_drill 0.1) + (uvias_allowed no) + (uvia_min_size 0.5) + (uvia_min_drill 0.1) + (pcb_text_width 0.3) + (pcb_text_size 1 1) + (mod_edge_width 0.15) + (mod_text_size 1 1) + (mod_text_width 0.15) + (pad_size 2.5 2.5) + (pad_drill 2.5) + (pad_to_mask_clearance 0) + (aux_axis_origin 200 150) + (grid_origin 200 150) + (visible_elements 7FFFFFFF) + (pcbplotparams + (layerselection 0x00030_80000001) + (usegerberextensions true) + (usegerberattributes false) + (usegerberadvancedattributes false) + (creategerberjobfile false) + (excludeedgelayer true) + (linewidth 0.150000) + (plotframeref false) + (viasonmask false) + (mode 1) + (useauxorigin false) + (hpglpennumber 1) + (hpglpenspeed 20) + (hpglpendiameter 15) + (psnegative false) + (psa4output false) + (plotreference true) + (plotvalue true) + (plotinvisibletext false) + (padsonsilk false) + (subtractmaskfromsilk false) + (outputformat 1) + (mirror false) + (drillshape 1) + (scaleselection 1) + (outputdirectory "")) + ) + + (net 0 "") + (net 1 +3V3) + (net 2 +5V) + (net 3 GND) + (net 4 /ID_SD) + (net 5 /ID_SC) + (net 6 /GPIO5) + (net 7 /GPIO6) + (net 8 /GPIO26) + (net 9 "/GPIO2(SDA1)") + (net 10 "/GPIO3(SCL1)") + (net 11 "/GPIO4(GCLK)") + (net 12 "/GPIO14(TXD0)") + (net 13 "/GPIO15(RXD0)") + (net 14 "/GPIO17(GEN0)") + (net 15 "/GPIO27(GEN2)") + (net 16 "/GPIO22(GEN3)") + (net 17 "/GPIO23(GEN4)") + (net 18 "/GPIO24(GEN5)") + (net 19 "/GPIO25(GEN6)") + (net 20 "/GPIO18(GEN1)(PWM0)") + (net 21 "/GPIO10(SPI0_MOSI)") + (net 22 "/GPIO9(SPI0_MISO)") + (net 23 "/GPIO11(SPI0_SCK)") + (net 24 "/GPIO8(SPI0_CE_N)") + (net 25 "/GPIO7(SPI1_CE_N)") + (net 26 "/GPIO12(PWM0)") + (net 27 "/GPIO13(PWM1)") + (net 28 "/GPIO19(SPI1_MISO)") + (net 29 /GPIO16) + (net 30 "/GPIO20(SPI1_MOSI)") + (net 31 "/GPIO21(SPI1_SCK)") + + (net_class Default "This is the default net class." + (clearance 0.2) + (trace_width 0.2) + (via_dia 0.9) + (via_drill 0.6) + (uvia_dia 0.5) + (uvia_drill 0.1) + (add_net +3V3) + (add_net +5V) + (add_net "/GPIO10(SPI0_MOSI)") + (add_net "/GPIO11(SPI0_SCK)") + (add_net "/GPIO12(PWM0)") + (add_net "/GPIO13(PWM1)") + (add_net "/GPIO14(TXD0)") + (add_net "/GPIO15(RXD0)") + (add_net /GPIO16) + (add_net "/GPIO17(GEN0)") + (add_net "/GPIO18(GEN1)(PWM0)") + (add_net "/GPIO19(SPI1_MISO)") + (add_net "/GPIO2(SDA1)") + (add_net "/GPIO20(SPI1_MOSI)") + (add_net "/GPIO21(SPI1_SCK)") + (add_net "/GPIO22(GEN3)") + (add_net "/GPIO23(GEN4)") + (add_net "/GPIO24(GEN5)") + (add_net "/GPIO25(GEN6)") + (add_net /GPIO26) + (add_net "/GPIO27(GEN2)") + (add_net "/GPIO3(SCL1)") + (add_net "/GPIO4(GCLK)") + (add_net /GPIO5) + (add_net /GPIO6) + (add_net "/GPIO7(SPI1_CE_N)") + (add_net "/GPIO8(SPI0_CE_N)") + (add_net "/GPIO9(SPI0_MISO)") + (add_net /ID_SC) + (add_net /ID_SD) + (add_net GND) + ) + + (net_class Power "" + (clearance 0.2) + (trace_width 0.5) + (via_dia 1) + (via_drill 0.7) + (uvia_dia 0.5) + (uvia_drill 0.1) + ) + + (module Connector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_Vertical (layer B.Cu) (tedit 5A19A433) (tstamp 5A793E9F) + (at 208.37 98.77 270) + (descr "Through hole straight socket strip, 2x20, 2.54mm pitch, double cols (from Kicad 4.0.7), script generated") + (tags "Through hole socket strip THT 2x20 2.54mm double row") + (path /59AD464A) + (fp_text reference P1 (at 2.208 1.512) (layer B.SilkS) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_text value Conn_02x20_Odd_Even (at -1.27 -51.03 270) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (fp_line (start -3.81 1.27) (end 0.27 1.27) (layer B.Fab) (width 0.1)) + (fp_line (start 0.27 1.27) (end 1.27 0.27) (layer B.Fab) (width 0.1)) + (fp_line (start 1.27 0.27) (end 1.27 -49.53) (layer B.Fab) (width 0.1)) + (fp_line (start 1.27 -49.53) (end -3.81 -49.53) (layer B.Fab) (width 0.1)) + (fp_line (start -3.81 -49.53) (end -3.81 1.27) (layer B.Fab) (width 0.1)) + (fp_line (start -3.87 1.33) (end -1.27 1.33) (layer B.SilkS) (width 0.12)) + (fp_line (start -3.87 1.33) (end -3.87 -49.59) (layer B.SilkS) (width 0.12)) + (fp_line (start -3.87 -49.59) (end 1.33 -49.59) (layer B.SilkS) (width 0.12)) + (fp_line (start 1.33 -1.27) (end 1.33 -49.59) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.27 -1.27) (end 1.33 -1.27) (layer B.SilkS) (width 0.12)) + (fp_line (start -1.27 1.33) (end -1.27 -1.27) (layer B.SilkS) (width 0.12)) + (fp_line (start 1.33 1.33) (end 1.33 0) (layer B.SilkS) (width 0.12)) + (fp_line (start 0 1.33) (end 1.33 1.33) (layer B.SilkS) (width 0.12)) + (fp_line (start -4.34 1.8) (end 1.76 1.8) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.76 1.8) (end 1.76 -50) (layer B.CrtYd) (width 0.05)) + (fp_line (start 1.76 -50) (end -4.34 -50) (layer B.CrtYd) (width 0.05)) + (fp_line (start -4.34 -50) (end -4.34 1.8) (layer B.CrtYd) (width 0.05)) + (fp_text user %R (at -1.27 -24.13 180) (layer B.Fab) + (effects (font (size 1 1) (thickness 0.15)) (justify mirror)) + ) + (pad 1 thru_hole rect (at 0 0 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 1 +3V3)) + (pad 2 thru_hole oval (at -2.54 0 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 +5V)) + (pad 3 thru_hole oval (at 0 -2.54 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 9 "/GPIO2(SDA1)")) + (pad 4 thru_hole oval (at -2.54 -2.54 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 2 +5V)) + (pad 5 thru_hole oval (at 0 -5.08 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 10 "/GPIO3(SCL1)")) + (pad 6 thru_hole oval (at -2.54 -5.08 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 7 thru_hole oval (at 0 -7.62 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 11 "/GPIO4(GCLK)")) + (pad 8 thru_hole oval (at -2.54 -7.62 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 12 "/GPIO14(TXD0)")) + (pad 9 thru_hole oval (at 0 -10.16 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 10 thru_hole oval (at -2.54 -10.16 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 13 "/GPIO15(RXD0)")) + (pad 11 thru_hole oval (at 0 -12.7 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 14 "/GPIO17(GEN0)")) + (pad 12 thru_hole oval (at -2.54 -12.7 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 20 "/GPIO18(GEN1)(PWM0)")) + (pad 13 thru_hole oval (at 0 -15.24 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 15 "/GPIO27(GEN2)")) + (pad 14 thru_hole oval (at -2.54 -15.24 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 15 thru_hole oval (at 0 -17.78 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 16 "/GPIO22(GEN3)")) + (pad 16 thru_hole oval (at -2.54 -17.78 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 17 "/GPIO23(GEN4)")) + (pad 17 thru_hole oval (at 0 -20.32 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 1 +3V3)) + (pad 18 thru_hole oval (at -2.54 -20.32 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 18 "/GPIO24(GEN5)")) + (pad 19 thru_hole oval (at 0 -22.86 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 21 "/GPIO10(SPI0_MOSI)")) + (pad 20 thru_hole oval (at -2.54 -22.86 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 21 thru_hole oval (at 0 -25.4 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 22 "/GPIO9(SPI0_MISO)")) + (pad 22 thru_hole oval (at -2.54 -25.4 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 19 "/GPIO25(GEN6)")) + (pad 23 thru_hole oval (at 0 -27.94 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 23 "/GPIO11(SPI0_SCK)")) + (pad 24 thru_hole oval (at -2.54 -27.94 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 24 "/GPIO8(SPI0_CE_N)")) + (pad 25 thru_hole oval (at 0 -30.48 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 26 thru_hole oval (at -2.54 -30.48 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 25 "/GPIO7(SPI1_CE_N)")) + (pad 27 thru_hole oval (at 0 -33.02 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 4 /ID_SD)) + (pad 28 thru_hole oval (at -2.54 -33.02 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 5 /ID_SC)) + (pad 29 thru_hole oval (at 0 -35.56 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 6 /GPIO5)) + (pad 30 thru_hole oval (at -2.54 -35.56 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 31 thru_hole oval (at 0 -38.1 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 7 /GPIO6)) + (pad 32 thru_hole oval (at -2.54 -38.1 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 26 "/GPIO12(PWM0)")) + (pad 33 thru_hole oval (at 0 -40.64 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 27 "/GPIO13(PWM1)")) + (pad 34 thru_hole oval (at -2.54 -40.64 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 35 thru_hole oval (at 0 -43.18 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 28 "/GPIO19(SPI1_MISO)")) + (pad 36 thru_hole oval (at -2.54 -43.18 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 29 /GPIO16)) + (pad 37 thru_hole oval (at 0 -45.72 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 8 /GPIO26)) + (pad 38 thru_hole oval (at -2.54 -45.72 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 30 "/GPIO20(SPI1_MOSI)")) + (pad 39 thru_hole oval (at 0 -48.26 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 3 GND)) + (pad 40 thru_hole oval (at -2.54 -48.26 270) (size 1.7 1.7) (drill 1) (layers *.Cu *.Mask) + (net 31 "/GPIO21(SPI1_SCK)")) + (model ${KISYS3DMOD}/Connector_PinSocket_2.54mm.3dshapes/PinSocket_2x20_P2.54mm_Vertical.wrl + (at (xyz 0 0 0)) + (scale (xyz 1 1 1)) + (rotate (xyz 0 0 0)) + ) + ) + + (module MountingHole:MountingHole_2.7mm_M2.5 (layer F.Cu) (tedit 56D1B4CB) (tstamp 5A793E98) + (at 261.5 146.5) + (descr "Mounting Hole 2.7mm, no annular, M2.5") + (tags "mounting hole 2.7mm no annular m2.5") + (path /5834FC4F) + (attr virtual) + (fp_text reference MK4 (at 0 -3.7) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value M2.5 (at 0 3.7) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_circle (center 0 0) (end 2.95 0) (layer F.CrtYd) (width 0.05)) + (fp_circle (center 0 0) (end 2.7 0) (layer Cmts.User) (width 0.15)) + (fp_text user %R (at 0.3 0) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 np_thru_hole circle (at 0 0) (size 2.7 2.7) (drill 2.7) (layers *.Cu *.Mask)) + ) + + (module MountingHole:MountingHole_2.7mm_M2.5 (layer F.Cu) (tedit 56D1B4CB) (tstamp 5A793E91) + (at 203.5 146.5) + (descr "Mounting Hole 2.7mm, no annular, M2.5") + (tags "mounting hole 2.7mm no annular m2.5") + (path /5834FBEF) + (attr virtual) + (fp_text reference MK3 (at 0 -3.7) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value M2.5 (at 0 3.7) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text user %R (at 0.3 0) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_circle (center 0 0) (end 2.7 0) (layer Cmts.User) (width 0.15)) + (fp_circle (center 0 0) (end 2.95 0) (layer F.CrtYd) (width 0.05)) + (pad 1 np_thru_hole circle (at 0 0) (size 2.7 2.7) (drill 2.7) (layers *.Cu *.Mask)) + ) + + (module MountingHole:MountingHole_2.7mm_M2.5 (layer F.Cu) (tedit 56D1B4CB) (tstamp 5A793E8A) + (at 261.5 97.5 180) + (descr "Mounting Hole 2.7mm, no annular, M2.5") + (tags "mounting hole 2.7mm no annular m2.5") + (path /5834FC19) + (attr virtual) + (fp_text reference MK2 (at 0 -3.7 180) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value M2.5 (at 0 3.7 180) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_circle (center 0 0) (end 2.95 0) (layer F.CrtYd) (width 0.05)) + (fp_circle (center 0 0) (end 2.7 0) (layer Cmts.User) (width 0.15)) + (fp_text user %R (at 0.3 0 180) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (pad 1 np_thru_hole circle (at 0 0 180) (size 2.7 2.7) (drill 2.7) (layers *.Cu *.Mask)) + ) + + (module MountingHole:MountingHole_2.7mm_M2.5 (layer F.Cu) (tedit 56D1B4CB) (tstamp 5A793E83) + (at 203.5 97.5 180) + (descr "Mounting Hole 2.7mm, no annular, M2.5") + (tags "mounting hole 2.7mm no annular m2.5") + (path /5834FB2E) + (attr virtual) + (fp_text reference MK1 (at 0 -3.7 180) (layer F.SilkS) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text value M2.5 (at 0 3.7 180) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_text user %R (at 0.3 0 180) (layer F.Fab) + (effects (font (size 1 1) (thickness 0.15))) + ) + (fp_circle (center 0 0) (end 2.7 0) (layer Cmts.User) (width 0.15)) + (fp_circle (center 0 0) (end 2.95 0) (layer F.CrtYd) (width 0.05)) + (pad 1 np_thru_hole circle (at 0 0 180) (size 2.7 2.7) (drill 2.7) (layers *.Cu *.Mask)) + ) + + (gr_line (start 244 146) (end 244 131) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 246 131) (end 246 146) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 245 131) (end 244 131) (angle 180) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 245 146) (end 246 146) (angle 180) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 200.5 131) (end 200 131) (angle 89.9) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 204.5 130) (end 205 130) (angle 90) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 200.5 113) (end 200.5 113.5) (angle 90) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 204.5 114) (end 204.5 113.5) (angle 90) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 200 113) (end 200 131) (layer Dwgs.User) (width 0.1)) + (gr_line (start 200 97) (end 200 113) (layer Edge.Cuts) (width 0.1)) + (gr_text DISPLAY (at 202.5 122 90) (layer Dwgs.User) (tstamp 580CBBFF) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text CAMERA (at 245 139 90) (layer Dwgs.User) + (effects (font (size 1 1) (thickness 0.15))) + ) + (gr_text RJ45 (at 276.2 139.84) (layer Dwgs.User) (tstamp 580CBBEB) + (effects (font (size 2 2) (thickness 0.15))) + ) + (gr_text USB (at 277.724 121.552) (layer Dwgs.User) (tstamp 580CBBE9) + (effects (font (size 2 2) (thickness 0.15))) + ) + (gr_text USB (at 278.232 102.248) (layer Dwgs.User) + (effects (font (size 2 2) (thickness 0.15))) + ) + (gr_arc (start 262 97) (end 262 94) (angle 90) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 262 147) (end 265 147) (angle 90) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 203 147) (end 203 150) (angle 90) (layer Edge.Cuts) (width 0.1)) + (gr_arc (start 203 97) (end 200 97) (angle 90) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 269.9 114.45) (end 287 114.45) (layer Dwgs.User) (width 0.1)) + (gr_line (start 262 94) (end 203 94) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 269.9 127.55) (end 269.9 114.45) (layer Dwgs.User) (width 0.1)) + (gr_line (start 287 127.55) (end 269.9 127.55) (layer Dwgs.User) (width 0.1)) + (gr_line (start 287 114.45) (end 287 127.55) (layer Dwgs.User) (width 0.1)) + (gr_line (start 204.5 130.5) (end 200.5 130.5) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 205 114) (end 205 130) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 200.5 113.5) (end 204.5 113.5) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 266 147.675) (end 266 131.825) (layer Dwgs.User) (width 0.1)) + (gr_line (start 287 147.675) (end 266 147.675) (layer Dwgs.User) (width 0.1)) + (gr_line (start 287 131.825) (end 287 147.675) (layer Dwgs.User) (width 0.1)) + (gr_line (start 266 131.825) (end 287 131.825) (layer Dwgs.User) (width 0.1)) + (gr_line (start 265 147) (end 265 97) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 203 150) (end 262 150) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 200 131) (end 200 147) (layer Edge.Cuts) (width 0.1)) + (gr_line (start 269.9 109.455925) (end 269.9 96.355925) (layer Dwgs.User) (width 0.1)) + (gr_line (start 287 109.455925) (end 269.9 109.455925) (layer Dwgs.User) (width 0.1)) + (gr_line (start 287 96.355925) (end 287 109.455925) (layer Dwgs.User) (width 0.1)) + (gr_line (start 269.9 96.355925) (end 287 96.355925) (layer Dwgs.User) (width 0.1)) + (gr_text "RASPBERRY-PI 40-PIN ADDON BOARD\nVIEW FROM TOP\nNOTE: P1 SHOULD BE FITTED ON THE REVERSE OF THE BOARD\n\nADD EDGE CUTS FROM CAMERA AND DISPLAY PORTS AS REQUIRED" (at 200 160.16) (layer Dwgs.User) + (effects (font (size 2 1.7) (thickness 0.12)) (justify left)) + ) + +) diff --git a/kc4upr/IO Hat/IO Hat.net b/kc4upr/IO Hat/IO Hat.net new file mode 100644 index 0000000..0ca7936 --- /dev/null +++ b/kc4upr/IO Hat/IO Hat.net @@ -0,0 +1,152 @@ +(export (version D) + (design + (source /home/ashton/repo/kicad-library/template/raspberrypi-gpio-40pin/raspberrypi-gpio-40pin.sch) + (date "Mon 04 Sep 2017 07:54:14 AM CDT") + (tool "Eeschema (2017-02-21 revision 35a8d78)-master") + (sheet (number 1) (name /) (tstamps /) + (title_block + (title) + (company) + (rev) + (date "15 nov 2012") + (source raspberrypi-gpio-40pin.sch) + (comment (number 1) (value "")) + (comment (number 2) (value "")) + (comment (number 3) (value "")) + (comment (number 4) (value ""))))) + (components + (comp (ref P1) + (value Conn_02x20_Odd_Even) + (libsource (lib conn) (part Conn_02x20_Odd_Even)) + (sheetpath (names /) (tstamps /)) + (tstamp 59AD464A))) + (libparts + (libpart (lib conn) (part Conn_02x20_Odd_Even) + (description "Generic connector, double row, 02x20, odd/even pin numbering scheme (row 1 odd numbers, row 2 even numbers)") + (docs ~) + (footprints + (fp Connector*:*2x??x*mm*) + (fp Connector*:*2x???Pitch*) + (fp Pin_Header_Straight_2X*) + (fp Pin_Header_Angled_2X*) + (fp Socket_Strip_Straight_2X*) + (fp Socket_Strip_Angled_2X*)) + (fields + (field (name Reference) J) + (field (name Value) Conn_02x20_Odd_Even)) + (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)) + (pin (num 11) (name Pin_11) (type passive)) + (pin (num 12) (name Pin_12) (type passive)) + (pin (num 13) (name Pin_13) (type passive)) + (pin (num 14) (name Pin_14) (type passive)) + (pin (num 15) (name Pin_15) (type passive)) + (pin (num 16) (name Pin_16) (type passive)) + (pin (num 17) (name Pin_17) (type passive)) + (pin (num 18) (name Pin_18) (type passive)) + (pin (num 19) (name Pin_19) (type passive)) + (pin (num 20) (name Pin_20) (type passive)) + (pin (num 21) (name Pin_21) (type passive)) + (pin (num 22) (name Pin_22) (type passive)) + (pin (num 23) (name Pin_23) (type passive)) + (pin (num 24) (name Pin_24) (type passive)) + (pin (num 25) (name Pin_25) (type passive)) + (pin (num 26) (name Pin_26) (type passive)) + (pin (num 27) (name Pin_27) (type passive)) + (pin (num 28) (name Pin_28) (type passive)) + (pin (num 29) (name Pin_29) (type passive)) + (pin (num 30) (name Pin_30) (type passive)) + (pin (num 31) (name Pin_31) (type passive)) + (pin (num 32) (name Pin_32) (type passive)) + (pin (num 33) (name Pin_33) (type passive)) + (pin (num 34) (name Pin_34) (type passive)) + (pin (num 35) (name Pin_35) (type passive)) + (pin (num 36) (name Pin_36) (type passive)) + (pin (num 37) (name Pin_37) (type passive)) + (pin (num 38) (name Pin_38) (type passive)) + (pin (num 39) (name Pin_39) (type passive)) + (pin (num 40) (name Pin_40) (type passive))))) + (libraries + (library (logical conn) + (uri /home/ashton/repo/kicad-library/library/conn.lib))) + (nets + (net (code 1) (name "/GPIO4(GCLK)") + (node (ref P1) (pin 7))) + (net (code 2) (name "/GPIO3(SCL1)") + (node (ref P1) (pin 5))) + (net (code 3) (name +5V) + (node (ref P1) (pin 2)) + (node (ref P1) (pin 4))) + (net (code 4) (name "/GPIO2(SDA1)") + (node (ref P1) (pin 3))) + (net (code 5) (name +3V3) + (node (ref P1) (pin 1)) + (node (ref P1) (pin 17))) + (net (code 6) (name "/GPIO14(TXD0)") + (node (ref P1) (pin 8))) + (net (code 7) (name "/GPIO15(RXD0)") + (node (ref P1) (pin 10))) + (net (code 8) (name "/GPIO21(SPI1_SCK)") + (node (ref P1) (pin 40))) + (net (code 9) (name /GPIO5) + (node (ref P1) (pin 29))) + (net (code 10) (name "/GPIO20(SPI1_MOSI)") + (node (ref P1) (pin 38))) + (net (code 11) (name /ID_SC) + (node (ref P1) (pin 28))) + (net (code 12) (name "/GPIO24(GEN5)") + (node (ref P1) (pin 18))) + (net (code 13) (name /GPIO26) + (node (ref P1) (pin 37))) + (net (code 14) (name /ID_SD) + (node (ref P1) (pin 27))) + (net (code 15) (name /GPIO16) + (node (ref P1) (pin 36))) + (net (code 16) (name "/GPIO7(SPI1_CE_N)") + (node (ref P1) (pin 26))) + (net (code 17) (name "/GPIO23(GEN4)") + (node (ref P1) (pin 16))) + (net (code 18) (name "/GPIO19(SPI1_MISO)") + (node (ref P1) (pin 35))) + (net (code 19) (name "/GPIO8(SPI0_CE_N)") + (node (ref P1) (pin 24))) + (net (code 20) (name "/GPIO13(PWM1)") + (node (ref P1) (pin 33))) + (net (code 21) (name "/GPIO11(SPI0_SCK)") + (node (ref P1) (pin 23))) + (net (code 22) (name "/GPIO12(PWM0)") + (node (ref P1) (pin 32))) + (net (code 23) (name "/GPIO25(GEN6)") + (node (ref P1) (pin 22))) + (net (code 24) (name "/GPIO18(GEN1)(PWM0)") + (node (ref P1) (pin 12))) + (net (code 25) (name /GPIO6) + (node (ref P1) (pin 31))) + (net (code 26) (name "/GPIO9(SPI0_MISO)") + (node (ref P1) (pin 21))) + (net (code 27) (name GND) + (node (ref P1) (pin 9)) + (node (ref P1) (pin 6)) + (node (ref P1) (pin 20)) + (node (ref P1) (pin 25)) + (node (ref P1) (pin 39)) + (node (ref P1) (pin 34)) + (node (ref P1) (pin 14)) + (node (ref P1) (pin 30))) + (net (code 28) (name "/GPIO10(SPI0_MOSI)") + (node (ref P1) (pin 19))) + (net (code 29) (name "/GPIO22(GEN3)") + (node (ref P1) (pin 15))) + (net (code 30) (name "/GPIO27(GEN2)") + (node (ref P1) (pin 13))) + (net (code 31) (name "/GPIO17(GEN0)") + (node (ref P1) (pin 11))))) \ No newline at end of file diff --git a/kc4upr/IO Hat/IO Hat.pdf b/kc4upr/IO Hat/IO Hat.pdf new file mode 100644 index 0000000..06689c9 Binary files /dev/null and b/kc4upr/IO Hat/IO Hat.pdf differ diff --git a/kc4upr/IO Hat/IO Hat.pro b/kc4upr/IO Hat/IO Hat.pro new file mode 100644 index 0000000..ff73c7e --- /dev/null +++ b/kc4upr/IO Hat/IO Hat.pro @@ -0,0 +1,85 @@ +update=Mon 04 May 2020 10:25:03 PM CDT +version=1 +last_client=eeschema +[cvpcb] +version=1 +NetITyp=0 +NetIExt=.net +PkgIExt=.pkg +NetDir= +LibDir= +NetType=0 +[cvpcb/libraries] +EquName1=devcms +[pcbnew] +version=1 +PadDrlX=320 +PadDimH=600 +PadDimV=600 +PadForm=1 +PadMask=14745599 +ViaDiam=450 +ViaDril=250 +Isol=60 +Countlayer=2 +Lpiste=170 +RouteTo=15 +RouteBo=0 +TypeVia=3 +Segm45=1 +Racc45=1 +Unite=0 +SegFill=1 +SegAffG=0 +NewAffG=1 +PadFill=1 +PadAffG=1 +PadSNum=1 +ModAffC=0 +ModAffT=0 +PcbAffT=0 +SgPcb45=1 +TxtPcbV=800 +TxtPcbH=600 +TxtModV=600 +TxtModH=600 +TxtModW=120 +HPGLnum=1 +HPGdiam=15 +HPGLSpd=20 +HPGLrec=2 +HPGLorg=0 +GERBmin=15 +VEgarde=100 +DrawLar=150 +EdgeLar=150 +TxtLar=120 +MSegLar=150 +ForPlot=1 +WpenSer=10 +UserGrX=0,01 +UserGrY=0,01 +UserGrU=1 +DivGrPc=1 +TimeOut=600 +MaxLnkS=3 +ShowRat=0 +ShowMRa=1 +[pcbnew/libraries] +LibDir= +LibName1=sockets +[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 diff --git a/kc4upr/IO Hat/IO Hat.sch b/kc4upr/IO Hat/IO Hat.sch new file mode 100644 index 0000000..481bc79 --- /dev/null +++ b/kc4upr/IO Hat/IO Hat.sch @@ -0,0 +1,602 @@ +EESchema Schematic File Version 4 +EELAYER 30 0 +EELAYER END +$Descr USLetter 11000 8500 +encoding utf-8 +Sheet 1 1 +Title "I/O Hat for Raspberry Pi and SDR" +Date "2020-05-04" +Rev "A" +Comp "" +Comment1 "" +Comment2 "" +Comment3 "" +Comment4 "" +$EndDescr +$Comp +L power:+5V #PWR01 +U 1 1 580C1B61 +P 3100 950 +F 0 "#PWR01" H 3100 800 50 0001 C CNN +F 1 "+5V" H 3100 1090 50 0000 C CNN +F 2 "" H 3100 950 50 0000 C CNN +F 3 "" H 3100 950 50 0000 C CNN + 1 3100 950 + 1 0 0 -1 +$EndComp +Wire Wire Line + 3100 950 3100 1100 +Wire Wire Line + 3100 1100 2900 1100 +Wire Wire Line + 3100 1200 2900 1200 +Connection ~ 3100 1100 +$Comp +L power:GND #PWR02 +U 1 1 580C1D11 +P 3000 3150 +F 0 "#PWR02" H 3000 2900 50 0001 C CNN +F 1 "GND" H 3000 3000 50 0000 C CNN +F 2 "" H 3000 3150 50 0000 C CNN +F 3 "" H 3000 3150 50 0000 C CNN + 1 3000 3150 + 1 0 0 -1 +$EndComp +Wire Wire Line + 3000 1300 3000 1700 +Wire Wire Line + 3000 2700 2900 2700 +Wire Wire Line + 3000 2500 2900 2500 +Connection ~ 3000 2700 +Wire Wire Line + 3000 2000 2900 2000 +Connection ~ 3000 2500 +Wire Wire Line + 3000 1700 2900 1700 +Connection ~ 3000 2000 +$Comp +L power:GND #PWR03 +U 1 1 580C1E01 +P 2300 3150 +F 0 "#PWR03" H 2300 2900 50 0001 C CNN +F 1 "GND" H 2300 3000 50 0000 C CNN +F 2 "" H 2300 3150 50 0000 C CNN +F 3 "" H 2300 3150 50 0000 C CNN + 1 2300 3150 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2300 3000 2400 3000 +Wire Wire Line + 2300 1500 2300 2300 +Wire Wire Line + 2300 2300 2400 2300 +Connection ~ 2300 3000 +Connection ~ 2200 1100 +Wire Wire Line + 2200 1900 2400 1900 +Wire Wire Line + 2200 1100 2400 1100 +Wire Wire Line + 2200 950 2200 1100 +$Comp +L power:+3.3V #PWR04 +U 1 1 580C1BC1 +P 2200 950 +F 0 "#PWR04" H 2200 800 50 0001 C CNN +F 1 "+3.3V" H 2200 1090 50 0000 C CNN +F 2 "" H 2200 950 50 0000 C CNN +F 3 "" H 2200 950 50 0000 C CNN + 1 2200 950 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2300 1500 2400 1500 +Connection ~ 2300 2300 +Wire Wire Line + 2400 1200 1250 1200 +Wire Wire Line + 1250 1300 2400 1300 +Wire Wire Line + 1250 1400 2400 1400 +Wire Wire Line + 2400 1600 1250 1600 +Wire Wire Line + 2400 2000 1250 2000 +Wire Wire Line + 1250 2100 2400 2100 +Wire Wire Line + 1250 2200 2400 2200 +Wire Wire Line + 2400 2400 1250 2400 +Wire Wire Line + 1250 2600 2400 2600 +Wire Wire Line + 2400 2700 1250 2700 +Wire Wire Line + 1250 2800 2400 2800 +Wire Wire Line + 1250 2900 2400 2900 +Wire Wire Line + 2900 2800 3950 2800 +Wire Wire Line + 2900 2300 3950 2300 +Wire Wire Line + 2900 2400 3950 2400 +Wire Wire Line + 2900 2100 3950 2100 +Wire Wire Line + 2900 1800 3950 1800 +Wire Wire Line + 2900 1500 3950 1500 +Wire Wire Line + 2900 1600 3950 1600 +Wire Wire Line + 2900 1400 3950 1400 +Wire Wire Line + 2900 2600 3950 2600 +Text Label 1250 1200 0 50 ~ 0 +GPIO2(SDA1) +Text Label 1250 1300 0 50 ~ 0 +GPIO3(SCL1) +Text Label 1250 1400 0 50 ~ 0 +GPIO4(GCLK) +Text Label 1250 1600 0 50 ~ 0 +GPIO17(GEN0) +Text Label 1250 1700 0 50 ~ 0 +GPIO27(GEN2) +Text Label 1250 1800 0 50 ~ 0 +GPIO22(GEN3) +Text Label 1250 2000 0 50 ~ 0 +GPIO10(SPI0_MOSI) +Text Label 1250 2100 0 50 ~ 0 +GPIO9(SPI0_MISO) +Text Label 1250 2200 0 50 ~ 0 +GPIO11(SPI0_SCK) +Text Label 1250 2400 0 50 ~ 0 +ID_SD +Text Label 1250 2500 0 50 ~ 0 +GPIO5 +Text Label 1250 2600 0 50 ~ 0 +GPIO6 +Text Label 1250 2700 0 50 ~ 0 +GPIO13(PWM1) +Text Label 1250 2800 0 50 ~ 0 +GPIO19(SPI1_MISO) +Text Label 1250 2900 0 50 ~ 0 +GPIO26 +Text Label 3950 2900 2 50 ~ 0 +GPIO20(SPI1_MOSI) +Text Label 3950 2800 2 50 ~ 0 +GPIO16 +Text Label 3950 2600 2 50 ~ 0 +GPIO12(PWM0) +Text Label 3950 2400 2 50 ~ 0 +ID_SC +Text Label 3950 2300 2 50 ~ 0 +GPIO7(SPI1_CE_N) +Text Label 3950 2200 2 50 ~ 0 +GPIO8(SPI0_CE_N) +Text Label 3950 2100 2 50 ~ 0 +GPIO25(GEN6) +Text Label 3950 1900 2 50 ~ 0 +GPIO24(GEN5) +Text Label 3950 1800 2 50 ~ 0 +GPIO23(GEN4) +Text Label 3950 1600 2 50 ~ 0 +GPIO18(GEN1)(PWM0) +Text Label 3950 1500 2 50 ~ 0 +GPIO15(RXD0) +Text Label 3950 1400 2 50 ~ 0 +GPIO14(TXD0) +Wire Wire Line + 3000 1300 2900 1300 +Connection ~ 3000 1700 +Text Notes 650 7600 0 50 ~ 0 +ID_SD and ID_SC PINS:\nThese pins are reserved for HAT ID EEPROM.\n\nAt boot time this I2C interface will be\ninterrogated to look for an EEPROM\nthat identifes the attached board and\nallows automagic setup of the GPIOs\n(and optionally, Linux drivers).\n\nDO NOT USE these pins for anything other\nthan attaching an I2C ID EEPROM. Leave\nunconnected if ID EEPROM not required. +$Comp +L IO-Hat-rescue:Mounting_Hole-Mechanical MK1 +U 1 1 5834FB2E +P 3000 7200 +F 0 "MK1" H 3100 7246 50 0000 L CNN +F 1 "M2.5" H 3100 7155 50 0000 L CNN +F 2 "MountingHole:MountingHole_2.7mm_M2.5" H 3000 7200 60 0001 C CNN +F 3 "" H 3000 7200 60 0001 C CNN + 1 3000 7200 + 1 0 0 -1 +$EndComp +$Comp +L IO-Hat-rescue:Mounting_Hole-Mechanical MK3 +U 1 1 5834FBEF +P 3450 7200 +F 0 "MK3" H 3550 7246 50 0000 L CNN +F 1 "M2.5" H 3550 7155 50 0000 L CNN +F 2 "MountingHole:MountingHole_2.7mm_M2.5" H 3450 7200 60 0001 C CNN +F 3 "" H 3450 7200 60 0001 C CNN + 1 3450 7200 + 1 0 0 -1 +$EndComp +$Comp +L IO-Hat-rescue:Mounting_Hole-Mechanical MK2 +U 1 1 5834FC19 +P 3000 7400 +F 0 "MK2" H 3100 7446 50 0000 L CNN +F 1 "M2.5" H 3100 7355 50 0000 L CNN +F 2 "MountingHole:MountingHole_2.7mm_M2.5" H 3000 7400 60 0001 C CNN +F 3 "" H 3000 7400 60 0001 C CNN + 1 3000 7400 + 1 0 0 -1 +$EndComp +$Comp +L IO-Hat-rescue:Mounting_Hole-Mechanical MK4 +U 1 1 5834FC4F +P 3450 7400 +F 0 "MK4" H 3550 7446 50 0000 L CNN +F 1 "M2.5" H 3550 7355 50 0000 L CNN +F 2 "MountingHole:MountingHole_2.7mm_M2.5" H 3450 7400 60 0001 C CNN +F 3 "" H 3450 7400 60 0001 C CNN + 1 3450 7400 + 1 0 0 -1 +$EndComp +Text Notes 3000 7050 0 50 ~ 0 +Mounting Holes +$Comp +L Connector_Generic:Conn_02x20_Odd_Even P1 +U 1 1 59AD464A +P 2600 2000 +F 0 "P1" H 2650 3117 50 0000 C CNN +F 1 "Conn_02x20_Odd_Even" H 2650 3026 50 0000 C CNN +F 2 "Connector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_Vertical" H -2250 1050 50 0001 C CNN +F 3 "" H -2250 1050 50 0001 C CNN + 1 2600 2000 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2900 3000 3950 3000 +Text Label 3950 3000 2 50 ~ 0 +GPIO21(SPI1_SCK) +Wire Wire Line + 3100 1100 3100 1200 +Wire Wire Line + 3000 2700 3000 3150 +Wire Wire Line + 3000 2500 3000 2700 +Wire Wire Line + 3000 2000 3000 2500 +Wire Wire Line + 2300 3000 2300 3150 +Wire Wire Line + 2200 1100 2200 1900 +Wire Wire Line + 2300 2300 2300 3000 +Wire Wire Line + 3000 1700 3000 2000 +$Comp +L Isolator:LTV-847 U1 +U 2 1 5EB15A6C +P 5750 5950 +F 0 "U1" H 5750 6275 50 0000 C CNN +F 1 "LTV-847" H 5750 6184 50 0000 C CNN +F 2 "Package_DIP:DIP-16_W7.62mm" H 5550 5750 50 0001 L CIN +F 3 "http://optoelectronics.liteon.com/upload/download/DS-70-96-0016/LTV-8X7%20series.PDF" H 5750 5950 50 0001 L CNN + 2 5750 5950 + 1 0 0 -1 +$EndComp +$Comp +L Isolator:LTV-847 U1 +U 1 1 5EB0E8CA +P 5750 5200 +F 0 "U1" H 5750 5525 50 0000 C CNN +F 1 "LTV-847" H 5750 5434 50 0000 C CNN +F 2 "Package_DIP:DIP-16_W7.62mm" H 5550 5000 50 0001 L CIN +F 3 "http://optoelectronics.liteon.com/upload/download/DS-70-96-0016/LTV-8X7%20series.PDF" H 5750 5200 50 0001 L CNN + 1 5750 5200 + 1 0 0 -1 +$EndComp +Wire Wire Line + 4250 5850 5150 5850 +Wire Wire Line + 6050 5850 6500 5850 +Wire Wire Line + 6500 5850 6500 5300 +Wire Wire Line + 5450 5300 5100 5300 +Wire Wire Line + 5100 5300 5100 6050 +Wire Wire Line + 5100 6050 5450 6050 +$Comp +L power:GNDA #PWR? +U 1 1 5EB51B80 +P 6750 6100 +F 0 "#PWR?" H 6750 5850 50 0001 C CNN +F 1 "GNDA" H 6755 5927 50 0000 C CNN +F 2 "" H 6750 6100 50 0001 C CNN +F 3 "" H 6750 6100 50 0001 C CNN + 1 6750 6100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6050 5300 6150 5300 +Wire Wire Line + 6150 5300 6150 6050 +Wire Wire Line + 6150 6050 6050 6050 +Wire Wire Line + 6750 5500 6750 6050 +Wire Wire Line + 6950 5500 6750 5500 +Wire Wire Line + 6500 5300 6950 5300 +$Comp +L Connector:AudioJack3_Switch J3 +U 1 1 5EB469C1 +P 7150 5300 +F 0 "J3" H 6870 5208 50 0000 R CNN +F 1 "AudioJack3_Switch" H 6870 5299 50 0000 R CNN +F 2 "" H 7150 5300 50 0001 C CNN +F 3 "~" H 7150 5300 50 0001 C CNN + 1 7150 5300 + -1 0 0 1 +$EndComp +Wire Wire Line + 6050 5100 6950 5100 +Wire Wire Line + 6150 6050 6750 6050 +Connection ~ 6150 6050 +Connection ~ 6750 6050 +Wire Wire Line + 6750 6050 6750 6100 +Wire Wire Line + 1250 2900 1250 5100 +Wire Wire Line + 1250 5100 5150 5100 +$Comp +L power:GND #PWR? +U 1 1 5EBBBEBE +P 5100 6100 +F 0 "#PWR?" H 5100 5850 50 0001 C CNN +F 1 "GND" H 5105 5927 50 0000 C CNN +F 2 "" H 5100 6100 50 0001 C CNN +F 3 "" H 5100 6100 50 0001 C CNN + 1 5100 6100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 5100 6100 5100 6050 +Connection ~ 5100 6050 +Wire Wire Line + 750 3900 750 1700 +Wire Wire Line + 750 1700 2400 1700 +Wire Wire Line + 950 1800 2400 1800 +$Comp +L Device:R_US R5 +U 1 1 5EB1B0EE +P 5300 5100 +F 0 "R5" V 5095 5100 50 0000 C CNN +F 1 "330" V 5186 5100 50 0000 C CNN +F 2 "" V 5340 5090 50 0001 C CNN +F 3 "~" H 5300 5100 50 0001 C CNN + 1 5300 5100 + 0 1 1 0 +$EndComp +$Comp +L Device:R_US R6 +U 1 1 5EB26DC1 +P 5300 5850 +F 0 "R6" V 5095 5850 50 0000 C CNN +F 1 "330" V 5186 5850 50 0000 C CNN +F 2 "" V 5340 5840 50 0001 C CNN +F 3 "~" H 5300 5850 50 0001 C CNN + 1 5300 5850 + 0 1 1 0 +$EndComp +Wire Wire Line + 2200 1100 1850 1100 +Wire Wire Line + 1850 1100 1850 550 +Wire Wire Line + 1850 550 5500 550 +Text Notes 7600 5850 0 50 ~ 0 +J3 - Keyer output discretes (isolated from Raspberry Pi)\nTip - CW output (dits and dahs)\nRing - T/R switching (includes "hang time" after last dit/dah)\nSleeve - Rig ground +Wire Wire Line + 3950 2200 2900 2200 +Wire Wire Line + 2900 2900 3950 2900 +Wire Wire Line + 1250 2500 2400 2500 +Wire Wire Line + 4250 1900 4250 5850 +Wire Wire Line + 2900 1900 4250 1900 +Text Notes 7600 2800 0 50 ~ 0 +J1 - Paddles\nTip - Left paddle\nRing - Right paddle\nSleeve - Ground +Wire Wire Line + 5500 1100 5500 1500 +Connection ~ 5500 1100 +Wire Wire Line + 6050 1100 6050 1300 +Wire Wire Line + 5500 1100 6050 1100 +Wire Wire Line + 5500 550 5500 1100 +Wire Wire Line + 5650 2800 6800 2800 +Connection ~ 5650 2800 +Wire Wire Line + 5650 2750 5650 2800 +Wire Wire Line + 5100 2800 5650 2800 +Wire Wire Line + 5100 2800 5100 2750 +Wire Wire Line + 5100 2450 5100 2400 +Wire Wire Line + 5650 2450 5650 2000 +Wire Wire Line + 6800 2800 6800 2850 +Connection ~ 6800 2800 +Wire Wire Line + 6800 2400 6800 2800 +$Comp +L Device:C C2 +U 1 1 5EC3E208 +P 5100 2600 +F 0 "C2" H 5215 2646 50 0000 L CNN +F 1 "0.01" H 5215 2555 50 0000 L CNN +F 2 "" H 5138 2450 50 0001 C CNN +F 3 "~" H 5100 2600 50 0001 C CNN + 1 5100 2600 + 1 0 0 -1 +$EndComp +Wire Wire Line + 5500 2450 5500 2400 +Wire Wire Line + 5150 2400 5100 2400 +$Comp +L Device:R_US R2 +U 1 1 5EBD72CB +P 5850 2000 +F 0 "R2" V 5645 2000 50 0000 C CNN +F 1 "4700" V 5736 2000 50 0000 C CNN +F 2 "" V 5890 1990 50 0001 C CNN +F 3 "~" H 5850 2000 50 0001 C CNN + 1 5850 2000 + 0 1 1 0 +$EndComp +Wire Wire Line + 6050 2000 6950 2000 +Wire Wire Line + 6050 2000 6000 2000 +Wire Wire Line + 5700 2000 5650 2000 +$Comp +L Device:C C1 +U 1 1 5EC41670 +P 5650 2600 +F 0 "C1" H 5765 2646 50 0000 L CNN +F 1 "0.01" H 5765 2555 50 0000 L CNN +F 2 "" H 5688 2450 50 0001 C CNN +F 3 "~" H 5650 2600 50 0001 C CNN + 1 5650 2600 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6950 2400 6800 2400 +$Comp +L power:GND #PWR? +U 1 1 5EC39345 +P 6800 2850 +F 0 "#PWR?" H 6800 2600 50 0001 C CNN +F 1 "GND" H 6805 2677 50 0000 C CNN +F 2 "" H 6800 2850 50 0001 C CNN +F 3 "" H 6800 2850 50 0001 C CNN + 1 6800 2850 + 1 0 0 -1 +$EndComp +Connection ~ 5500 2400 +Wire Wire Line + 6400 2200 6950 2200 +Wire Wire Line + 6400 2400 6400 2200 +Wire Wire Line + 5500 2400 6400 2400 +Wire Wire Line + 5500 2400 5450 2400 +Connection ~ 6050 2000 +Wire Wire Line + 5500 1800 5500 2400 +Wire Wire Line + 6050 1600 6050 2000 +$Comp +L Device:R_US R4 +U 1 1 5EBD594A +P 5300 2400 +F 0 "R4" V 5095 2400 50 0000 C CNN +F 1 "4700" V 5186 2400 50 0000 C CNN +F 2 "" V 5340 2390 50 0001 C CNN +F 3 "~" H 5300 2400 50 0001 C CNN + 1 5300 2400 + 0 1 1 0 +$EndComp +$Comp +L Device:R_US R3 +U 1 1 5EBD3F7C +P 5500 1650 +F 0 "R3" H 5568 1696 50 0000 L CNN +F 1 "4700" H 5568 1605 50 0000 L CNN +F 2 "" V 5540 1640 50 0001 C CNN +F 3 "~" H 5500 1650 50 0001 C CNN + 1 5500 1650 + 1 0 0 -1 +$EndComp +$Comp +L Device:R_US R1 +U 1 1 5EBD1D33 +P 6050 1450 +F 0 "R1" H 6118 1496 50 0000 L CNN +F 1 "4700" H 6118 1405 50 0000 L CNN +F 2 "" V 6090 1440 50 0001 C CNN +F 3 "~" H 6050 1450 50 0001 C CNN + 1 6050 1450 + 1 0 0 -1 +$EndComp +$Comp +L Connector:AudioJack3_Switch J1 +U 1 1 5EBC04A3 +P 7150 2200 +F 0 "J1" H 6870 2108 50 0000 R CNN +F 1 "AudioJack3_Switch" H 6870 2199 50 0000 R CNN +F 2 "" H 7150 2200 50 0001 C CNN +F 3 "~" H 7150 2200 50 0001 C CNN + 1 7150 2200 + -1 0 0 1 +$EndComp +Wire Wire Line + 750 3900 4900 3900 +Wire Wire Line + 4900 3900 4900 2400 +Wire Wire Line + 4900 2400 5100 2400 +Connection ~ 5100 2400 +Wire Wire Line + 5650 2000 4750 2000 +Wire Wire Line + 4750 2000 4750 3750 +Wire Wire Line + 4750 3750 950 3750 +Wire Wire Line + 950 1800 950 3750 +Connection ~ 5650 2000 +$Comp +L Connector:AudioJack3_Switch J2 +U 1 1 5ED38DA2 +P 7150 3850 +F 0 "J2" H 6870 3758 50 0000 R CNN +F 1 "AudioJack3_Switch" H 6870 3849 50 0000 R CNN +F 2 "" H 7150 3850 50 0001 C CNN +F 3 "~" H 7150 3850 50 0001 C CNN + 1 7150 3850 + -1 0 0 1 +$EndComp +$Comp +L power:GND #PWR? +U 1 1 5ED3DFCB +P 6800 4300 +F 0 "#PWR?" H 6800 4050 50 0001 C CNN +F 1 "GND" H 6805 4127 50 0000 C CNN +F 2 "" H 6800 4300 50 0001 C CNN +F 3 "" H 6800 4300 50 0001 C CNN + 1 6800 4300 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6950 4050 6800 4050 +Wire Wire Line + 6800 4050 6800 4300 +Text Notes 7600 4400 0 50 ~ 0 +J2 - Growth\nTip - TBD\nRing - TBD\nSleeve - Ground +$EndSCHEMATC diff --git a/kc4upr/IO Hat/IO Hat.sch-bak b/kc4upr/IO Hat/IO Hat.sch-bak new file mode 100644 index 0000000..a567995 --- /dev/null +++ b/kc4upr/IO Hat/IO Hat.sch-bak @@ -0,0 +1,602 @@ +EESchema Schematic File Version 4 +EELAYER 30 0 +EELAYER END +$Descr USLetter 11000 8500 +encoding utf-8 +Sheet 1 1 +Title "I/O Hat for Raspberry Pi and SDR" +Date "2020-05-04" +Rev "-" +Comp "" +Comment1 "" +Comment2 "" +Comment3 "" +Comment4 "" +$EndDescr +$Comp +L power:+5V #PWR01 +U 1 1 580C1B61 +P 3100 950 +F 0 "#PWR01" H 3100 800 50 0001 C CNN +F 1 "+5V" H 3100 1090 50 0000 C CNN +F 2 "" H 3100 950 50 0000 C CNN +F 3 "" H 3100 950 50 0000 C CNN + 1 3100 950 + 1 0 0 -1 +$EndComp +Wire Wire Line + 3100 950 3100 1100 +Wire Wire Line + 3100 1100 2900 1100 +Wire Wire Line + 3100 1200 2900 1200 +Connection ~ 3100 1100 +$Comp +L power:GND #PWR02 +U 1 1 580C1D11 +P 3000 3150 +F 0 "#PWR02" H 3000 2900 50 0001 C CNN +F 1 "GND" H 3000 3000 50 0000 C CNN +F 2 "" H 3000 3150 50 0000 C CNN +F 3 "" H 3000 3150 50 0000 C CNN + 1 3000 3150 + 1 0 0 -1 +$EndComp +Wire Wire Line + 3000 1300 3000 1700 +Wire Wire Line + 3000 2700 2900 2700 +Wire Wire Line + 3000 2500 2900 2500 +Connection ~ 3000 2700 +Wire Wire Line + 3000 2000 2900 2000 +Connection ~ 3000 2500 +Wire Wire Line + 3000 1700 2900 1700 +Connection ~ 3000 2000 +$Comp +L power:GND #PWR03 +U 1 1 580C1E01 +P 2300 3150 +F 0 "#PWR03" H 2300 2900 50 0001 C CNN +F 1 "GND" H 2300 3000 50 0000 C CNN +F 2 "" H 2300 3150 50 0000 C CNN +F 3 "" H 2300 3150 50 0000 C CNN + 1 2300 3150 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2300 3000 2400 3000 +Wire Wire Line + 2300 1500 2300 2300 +Wire Wire Line + 2300 2300 2400 2300 +Connection ~ 2300 3000 +Connection ~ 2200 1100 +Wire Wire Line + 2200 1900 2400 1900 +Wire Wire Line + 2200 1100 2400 1100 +Wire Wire Line + 2200 950 2200 1100 +$Comp +L power:+3.3V #PWR04 +U 1 1 580C1BC1 +P 2200 950 +F 0 "#PWR04" H 2200 800 50 0001 C CNN +F 1 "+3.3V" H 2200 1090 50 0000 C CNN +F 2 "" H 2200 950 50 0000 C CNN +F 3 "" H 2200 950 50 0000 C CNN + 1 2200 950 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2300 1500 2400 1500 +Connection ~ 2300 2300 +Wire Wire Line + 2400 1200 1250 1200 +Wire Wire Line + 1250 1300 2400 1300 +Wire Wire Line + 1250 1400 2400 1400 +Wire Wire Line + 2400 1600 1250 1600 +Wire Wire Line + 2400 2000 1250 2000 +Wire Wire Line + 1250 2100 2400 2100 +Wire Wire Line + 1250 2200 2400 2200 +Wire Wire Line + 2400 2400 1250 2400 +Wire Wire Line + 1250 2600 2400 2600 +Wire Wire Line + 2400 2700 1250 2700 +Wire Wire Line + 1250 2800 2400 2800 +Wire Wire Line + 1250 2900 2400 2900 +Wire Wire Line + 2900 2800 3950 2800 +Wire Wire Line + 2900 2300 3950 2300 +Wire Wire Line + 2900 2400 3950 2400 +Wire Wire Line + 2900 2100 3950 2100 +Wire Wire Line + 2900 1800 3950 1800 +Wire Wire Line + 2900 1500 3950 1500 +Wire Wire Line + 2900 1600 3950 1600 +Wire Wire Line + 2900 1400 3950 1400 +Wire Wire Line + 2900 2600 3950 2600 +Text Label 1250 1200 0 50 ~ 0 +GPIO2(SDA1) +Text Label 1250 1300 0 50 ~ 0 +GPIO3(SCL1) +Text Label 1250 1400 0 50 ~ 0 +GPIO4(GCLK) +Text Label 1250 1600 0 50 ~ 0 +GPIO17(GEN0) +Text Label 1250 1700 0 50 ~ 0 +GPIO27(GEN2) +Text Label 1250 1800 0 50 ~ 0 +GPIO22(GEN3) +Text Label 1250 2000 0 50 ~ 0 +GPIO10(SPI0_MOSI) +Text Label 1250 2100 0 50 ~ 0 +GPIO9(SPI0_MISO) +Text Label 1250 2200 0 50 ~ 0 +GPIO11(SPI0_SCK) +Text Label 1250 2400 0 50 ~ 0 +ID_SD +Text Label 1250 2500 0 50 ~ 0 +GPIO5 +Text Label 1250 2600 0 50 ~ 0 +GPIO6 +Text Label 1250 2700 0 50 ~ 0 +GPIO13(PWM1) +Text Label 1250 2800 0 50 ~ 0 +GPIO19(SPI1_MISO) +Text Label 1250 2900 0 50 ~ 0 +GPIO26 +Text Label 3950 2900 2 50 ~ 0 +GPIO20(SPI1_MOSI) +Text Label 3950 2800 2 50 ~ 0 +GPIO16 +Text Label 3950 2600 2 50 ~ 0 +GPIO12(PWM0) +Text Label 3950 2400 2 50 ~ 0 +ID_SC +Text Label 3950 2300 2 50 ~ 0 +GPIO7(SPI1_CE_N) +Text Label 3950 2200 2 50 ~ 0 +GPIO8(SPI0_CE_N) +Text Label 3950 2100 2 50 ~ 0 +GPIO25(GEN6) +Text Label 3950 1900 2 50 ~ 0 +GPIO24(GEN5) +Text Label 3950 1800 2 50 ~ 0 +GPIO23(GEN4) +Text Label 3950 1600 2 50 ~ 0 +GPIO18(GEN1)(PWM0) +Text Label 3950 1500 2 50 ~ 0 +GPIO15(RXD0) +Text Label 3950 1400 2 50 ~ 0 +GPIO14(TXD0) +Wire Wire Line + 3000 1300 2900 1300 +Connection ~ 3000 1700 +Text Notes 650 7600 0 50 ~ 0 +ID_SD and ID_SC PINS:\nThese pins are reserved for HAT ID EEPROM.\n\nAt boot time this I2C interface will be\ninterrogated to look for an EEPROM\nthat identifes the attached board and\nallows automagic setup of the GPIOs\n(and optionally, Linux drivers).\n\nDO NOT USE these pins for anything other\nthan attaching an I2C ID EEPROM. Leave\nunconnected if ID EEPROM not required. +$Comp +L IO-Hat-rescue:Mounting_Hole-Mechanical MK1 +U 1 1 5834FB2E +P 3000 7200 +F 0 "MK1" H 3100 7246 50 0000 L CNN +F 1 "M2.5" H 3100 7155 50 0000 L CNN +F 2 "MountingHole:MountingHole_2.7mm_M2.5" H 3000 7200 60 0001 C CNN +F 3 "" H 3000 7200 60 0001 C CNN + 1 3000 7200 + 1 0 0 -1 +$EndComp +$Comp +L IO-Hat-rescue:Mounting_Hole-Mechanical MK3 +U 1 1 5834FBEF +P 3450 7200 +F 0 "MK3" H 3550 7246 50 0000 L CNN +F 1 "M2.5" H 3550 7155 50 0000 L CNN +F 2 "MountingHole:MountingHole_2.7mm_M2.5" H 3450 7200 60 0001 C CNN +F 3 "" H 3450 7200 60 0001 C CNN + 1 3450 7200 + 1 0 0 -1 +$EndComp +$Comp +L IO-Hat-rescue:Mounting_Hole-Mechanical MK2 +U 1 1 5834FC19 +P 3000 7400 +F 0 "MK2" H 3100 7446 50 0000 L CNN +F 1 "M2.5" H 3100 7355 50 0000 L CNN +F 2 "MountingHole:MountingHole_2.7mm_M2.5" H 3000 7400 60 0001 C CNN +F 3 "" H 3000 7400 60 0001 C CNN + 1 3000 7400 + 1 0 0 -1 +$EndComp +$Comp +L IO-Hat-rescue:Mounting_Hole-Mechanical MK4 +U 1 1 5834FC4F +P 3450 7400 +F 0 "MK4" H 3550 7446 50 0000 L CNN +F 1 "M2.5" H 3550 7355 50 0000 L CNN +F 2 "MountingHole:MountingHole_2.7mm_M2.5" H 3450 7400 60 0001 C CNN +F 3 "" H 3450 7400 60 0001 C CNN + 1 3450 7400 + 1 0 0 -1 +$EndComp +Text Notes 3000 7050 0 50 ~ 0 +Mounting Holes +$Comp +L Connector_Generic:Conn_02x20_Odd_Even P1 +U 1 1 59AD464A +P 2600 2000 +F 0 "P1" H 2650 3117 50 0000 C CNN +F 1 "Conn_02x20_Odd_Even" H 2650 3026 50 0000 C CNN +F 2 "Connector_PinSocket_2.54mm:PinSocket_2x20_P2.54mm_Vertical" H -2250 1050 50 0001 C CNN +F 3 "" H -2250 1050 50 0001 C CNN + 1 2600 2000 + 1 0 0 -1 +$EndComp +Wire Wire Line + 2900 3000 3950 3000 +Text Label 3950 3000 2 50 ~ 0 +GPIO21(SPI1_SCK) +Wire Wire Line + 3100 1100 3100 1200 +Wire Wire Line + 3000 2700 3000 3150 +Wire Wire Line + 3000 2500 3000 2700 +Wire Wire Line + 3000 2000 3000 2500 +Wire Wire Line + 2300 3000 2300 3150 +Wire Wire Line + 2200 1100 2200 1900 +Wire Wire Line + 2300 2300 2300 3000 +Wire Wire Line + 3000 1700 3000 2000 +$Comp +L Isolator:LTV-847 U1 +U 2 1 5EB15A6C +P 5750 5950 +F 0 "U1" H 5750 6275 50 0000 C CNN +F 1 "LTV-847" H 5750 6184 50 0000 C CNN +F 2 "Package_DIP:DIP-16_W7.62mm" H 5550 5750 50 0001 L CIN +F 3 "http://optoelectronics.liteon.com/upload/download/DS-70-96-0016/LTV-8X7%20series.PDF" H 5750 5950 50 0001 L CNN + 2 5750 5950 + 1 0 0 -1 +$EndComp +$Comp +L Isolator:LTV-847 U1 +U 1 1 5EB0E8CA +P 5750 5200 +F 0 "U1" H 5750 5525 50 0000 C CNN +F 1 "LTV-847" H 5750 5434 50 0000 C CNN +F 2 "Package_DIP:DIP-16_W7.62mm" H 5550 5000 50 0001 L CIN +F 3 "http://optoelectronics.liteon.com/upload/download/DS-70-96-0016/LTV-8X7%20series.PDF" H 5750 5200 50 0001 L CNN + 1 5750 5200 + 1 0 0 -1 +$EndComp +Wire Wire Line + 4250 5850 5150 5850 +Wire Wire Line + 6050 5850 6500 5850 +Wire Wire Line + 6500 5850 6500 5300 +Wire Wire Line + 5450 5300 5100 5300 +Wire Wire Line + 5100 5300 5100 6050 +Wire Wire Line + 5100 6050 5450 6050 +$Comp +L power:GNDA #PWR? +U 1 1 5EB51B80 +P 6750 6100 +F 0 "#PWR?" H 6750 5850 50 0001 C CNN +F 1 "GNDA" H 6755 5927 50 0000 C CNN +F 2 "" H 6750 6100 50 0001 C CNN +F 3 "" H 6750 6100 50 0001 C CNN + 1 6750 6100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6050 5300 6150 5300 +Wire Wire Line + 6150 5300 6150 6050 +Wire Wire Line + 6150 6050 6050 6050 +Wire Wire Line + 6750 5500 6750 6050 +Wire Wire Line + 6950 5500 6750 5500 +Wire Wire Line + 6500 5300 6950 5300 +$Comp +L Connector:AudioJack3_Switch J3 +U 1 1 5EB469C1 +P 7150 5300 +F 0 "J3" H 6870 5208 50 0000 R CNN +F 1 "AudioJack3_Switch" H 6870 5299 50 0000 R CNN +F 2 "" H 7150 5300 50 0001 C CNN +F 3 "~" H 7150 5300 50 0001 C CNN + 1 7150 5300 + -1 0 0 1 +$EndComp +Wire Wire Line + 6050 5100 6950 5100 +Wire Wire Line + 6150 6050 6750 6050 +Connection ~ 6150 6050 +Connection ~ 6750 6050 +Wire Wire Line + 6750 6050 6750 6100 +Wire Wire Line + 1250 2900 1250 5100 +Wire Wire Line + 1250 5100 5150 5100 +$Comp +L power:GND #PWR? +U 1 1 5EBBBEBE +P 5100 6100 +F 0 "#PWR?" H 5100 5850 50 0001 C CNN +F 1 "GND" H 5105 5927 50 0000 C CNN +F 2 "" H 5100 6100 50 0001 C CNN +F 3 "" H 5100 6100 50 0001 C CNN + 1 5100 6100 + 1 0 0 -1 +$EndComp +Wire Wire Line + 5100 6100 5100 6050 +Connection ~ 5100 6050 +Wire Wire Line + 750 3900 750 1700 +Wire Wire Line + 750 1700 2400 1700 +Wire Wire Line + 950 1800 2400 1800 +$Comp +L Device:R_US R5 +U 1 1 5EB1B0EE +P 5300 5100 +F 0 "R5" V 5095 5100 50 0000 C CNN +F 1 "330" V 5186 5100 50 0000 C CNN +F 2 "" V 5340 5090 50 0001 C CNN +F 3 "~" H 5300 5100 50 0001 C CNN + 1 5300 5100 + 0 1 1 0 +$EndComp +$Comp +L Device:R_US R6 +U 1 1 5EB26DC1 +P 5300 5850 +F 0 "R6" V 5095 5850 50 0000 C CNN +F 1 "330" V 5186 5850 50 0000 C CNN +F 2 "" V 5340 5840 50 0001 C CNN +F 3 "~" H 5300 5850 50 0001 C CNN + 1 5300 5850 + 0 1 1 0 +$EndComp +Wire Wire Line + 2200 1100 1850 1100 +Wire Wire Line + 1850 1100 1850 550 +Wire Wire Line + 1850 550 5500 550 +Text Notes 7600 5850 0 50 ~ 0 +J2 - Keyer output discretes (isolated from Raspberry Pi)\nTip - CW output (dits and dahs)\nRing - T/R switching (includes "hang time" after last dit/dah)\nSleeve - Rig ground +Wire Wire Line + 3950 2200 2900 2200 +Wire Wire Line + 2900 2900 3950 2900 +Wire Wire Line + 1250 2500 2400 2500 +Wire Wire Line + 4250 1900 4250 5850 +Wire Wire Line + 2900 1900 4250 1900 +Text Notes 7600 2800 0 50 ~ 0 +J1 - Paddles\nTip - Left paddle\nRing - Right paddle\nSleeve - Ground +Wire Wire Line + 5500 1100 5500 1500 +Connection ~ 5500 1100 +Wire Wire Line + 6050 1100 6050 1300 +Wire Wire Line + 5500 1100 6050 1100 +Wire Wire Line + 5500 550 5500 1100 +Wire Wire Line + 5650 2800 6800 2800 +Connection ~ 5650 2800 +Wire Wire Line + 5650 2750 5650 2800 +Wire Wire Line + 5100 2800 5650 2800 +Wire Wire Line + 5100 2800 5100 2750 +Wire Wire Line + 5100 2450 5100 2400 +Wire Wire Line + 5650 2450 5650 2000 +Wire Wire Line + 6800 2800 6800 2850 +Connection ~ 6800 2800 +Wire Wire Line + 6800 2400 6800 2800 +$Comp +L Device:C C2 +U 1 1 5EC3E208 +P 5100 2600 +F 0 "C2" H 5215 2646 50 0000 L CNN +F 1 "0.01" H 5215 2555 50 0000 L CNN +F 2 "" H 5138 2450 50 0001 C CNN +F 3 "~" H 5100 2600 50 0001 C CNN + 1 5100 2600 + 1 0 0 -1 +$EndComp +Wire Wire Line + 5500 2450 5500 2400 +Wire Wire Line + 5150 2400 5100 2400 +$Comp +L Device:R_US R2 +U 1 1 5EBD72CB +P 5850 2000 +F 0 "R2" V 5645 2000 50 0000 C CNN +F 1 "4700" V 5736 2000 50 0000 C CNN +F 2 "" V 5890 1990 50 0001 C CNN +F 3 "~" H 5850 2000 50 0001 C CNN + 1 5850 2000 + 0 1 1 0 +$EndComp +Wire Wire Line + 6050 2000 6950 2000 +Wire Wire Line + 6050 2000 6000 2000 +Wire Wire Line + 5700 2000 5650 2000 +$Comp +L Device:C C1 +U 1 1 5EC41670 +P 5650 2600 +F 0 "C1" H 5765 2646 50 0000 L CNN +F 1 "0.01" H 5765 2555 50 0000 L CNN +F 2 "" H 5688 2450 50 0001 C CNN +F 3 "~" H 5650 2600 50 0001 C CNN + 1 5650 2600 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6950 2400 6800 2400 +$Comp +L power:GND #PWR? +U 1 1 5EC39345 +P 6800 2850 +F 0 "#PWR?" H 6800 2600 50 0001 C CNN +F 1 "GND" H 6805 2677 50 0000 C CNN +F 2 "" H 6800 2850 50 0001 C CNN +F 3 "" H 6800 2850 50 0001 C CNN + 1 6800 2850 + 1 0 0 -1 +$EndComp +Connection ~ 5500 2400 +Wire Wire Line + 6400 2200 6950 2200 +Wire Wire Line + 6400 2400 6400 2200 +Wire Wire Line + 5500 2400 6400 2400 +Wire Wire Line + 5500 2400 5450 2400 +Connection ~ 6050 2000 +Wire Wire Line + 5500 1800 5500 2400 +Wire Wire Line + 6050 1600 6050 2000 +$Comp +L Device:R_US R4 +U 1 1 5EBD594A +P 5300 2400 +F 0 "R4" V 5095 2400 50 0000 C CNN +F 1 "4700" V 5186 2400 50 0000 C CNN +F 2 "" V 5340 2390 50 0001 C CNN +F 3 "~" H 5300 2400 50 0001 C CNN + 1 5300 2400 + 0 1 1 0 +$EndComp +$Comp +L Device:R_US R3 +U 1 1 5EBD3F7C +P 5500 1650 +F 0 "R3" H 5568 1696 50 0000 L CNN +F 1 "4700" H 5568 1605 50 0000 L CNN +F 2 "" V 5540 1640 50 0001 C CNN +F 3 "~" H 5500 1650 50 0001 C CNN + 1 5500 1650 + 1 0 0 -1 +$EndComp +$Comp +L Device:R_US R1 +U 1 1 5EBD1D33 +P 6050 1450 +F 0 "R1" H 6118 1496 50 0000 L CNN +F 1 "4700" H 6118 1405 50 0000 L CNN +F 2 "" V 6090 1440 50 0001 C CNN +F 3 "~" H 6050 1450 50 0001 C CNN + 1 6050 1450 + 1 0 0 -1 +$EndComp +$Comp +L Connector:AudioJack3_Switch J1 +U 1 1 5EBC04A3 +P 7150 2200 +F 0 "J1" H 6870 2108 50 0000 R CNN +F 1 "AudioJack3_Switch" H 6870 2199 50 0000 R CNN +F 2 "" H 7150 2200 50 0001 C CNN +F 3 "~" H 7150 2200 50 0001 C CNN + 1 7150 2200 + -1 0 0 1 +$EndComp +Wire Wire Line + 750 3900 4900 3900 +Wire Wire Line + 4900 3900 4900 2400 +Wire Wire Line + 4900 2400 5100 2400 +Connection ~ 5100 2400 +Wire Wire Line + 5650 2000 4750 2000 +Wire Wire Line + 4750 2000 4750 3750 +Wire Wire Line + 4750 3750 950 3750 +Wire Wire Line + 950 1800 950 3750 +Connection ~ 5650 2000 +$Comp +L Connector:AudioJack3_Switch J2 +U 1 1 5ED38DA2 +P 7150 3850 +F 0 "J2" H 6870 3758 50 0000 R CNN +F 1 "AudioJack3_Switch" H 6870 3849 50 0000 R CNN +F 2 "" H 7150 3850 50 0001 C CNN +F 3 "~" H 7150 3850 50 0001 C CNN + 1 7150 3850 + -1 0 0 1 +$EndComp +$Comp +L power:GND #PWR? +U 1 1 5ED3DFCB +P 6800 4300 +F 0 "#PWR?" H 6800 4050 50 0001 C CNN +F 1 "GND" H 6805 4127 50 0000 C CNN +F 2 "" H 6800 4300 50 0001 C CNN +F 3 "" H 6800 4300 50 0001 C CNN + 1 6800 4300 + 1 0 0 -1 +$EndComp +Wire Wire Line + 6950 4050 6800 4050 +Wire Wire Line + 6800 4050 6800 4300 +Text Notes 7600 4400 0 50 ~ 0 +J1 - Growth\nTip - TBD\nRing - TBD\nSleeve - Ground +$EndSCHEMATC diff --git a/kc4upr/IO Hat/IO Hat.stf b/kc4upr/IO Hat/IO Hat.stf new file mode 100644 index 0000000..d9a206f --- /dev/null +++ b/kc4upr/IO Hat/IO Hat.stf @@ -0,0 +1 @@ +comp = "P1" module = "HE10_26D" diff --git a/kc4upr/IO Hat/fp-info-cache b/kc4upr/IO Hat/fp-info-cache new file mode 100644 index 0000000..573541a --- /dev/null +++ b/kc4upr/IO Hat/fp-info-cache @@ -0,0 +1 @@ +0 diff --git a/kc4upr/IO Hat/raspberrypi-gpio-40pin.lib b/kc4upr/IO Hat/raspberrypi-gpio-40pin.lib new file mode 100644 index 0000000..5ae11ee --- /dev/null +++ b/kc4upr/IO Hat/raspberrypi-gpio-40pin.lib @@ -0,0 +1,166 @@ +EESchema-LIBRARY Version 2.3 +#encoding utf-8 +# +# +3V3 +# +DEF +3V3 #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "+3V3" 0 140 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V C CNN +ALIAS +3.3V +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 +# +DEF +5V #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -150 50 H I C CNN +F1 "+5V" 0 140 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V 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 +# +# CONN_02X20 +# +DEF CONN_02X20 P 0 1 Y N 1 F N +F0 "P" 0 1050 50 H V C CNN +F1 "CONN_02X20" 0 0 50 V V C CNN +F2 "" 0 -950 50 H V C CNN +F3 "" 0 -950 50 H V C CNN +$FPLIST + Pin_Header_Straight_2X20 + Pin_Header_Angled_2X20 + Socket_Strip_Straight_2X20 + Socket_Strip_Angled_2X20 +$ENDFPLIST +DRAW +S -100 -945 -50 -955 0 1 0 N +S -100 -845 -50 -855 0 1 0 N +S -100 -745 -50 -755 0 1 0 N +S -100 -645 -50 -655 0 1 0 N +S -100 -545 -50 -555 0 1 0 N +S -100 -445 -50 -455 0 1 0 N +S -100 -345 -50 -355 0 1 0 N +S -100 -245 -50 -255 0 1 0 N +S -100 -145 -50 -155 0 1 0 N +S -100 -45 -50 -55 0 1 0 N +S -100 55 -50 45 0 1 0 N +S -100 155 -50 145 0 1 0 N +S -100 255 -50 245 0 1 0 N +S -100 355 -50 345 0 1 0 N +S -100 455 -50 445 0 1 0 N +S -100 555 -50 545 0 1 0 N +S -100 655 -50 645 0 1 0 N +S -100 755 -50 745 0 1 0 N +S -100 855 -50 845 0 1 0 N +S -100 955 -50 945 0 1 0 N +S -100 1000 100 -1000 0 1 0 N +S 50 -945 100 -955 0 1 0 N +S 50 -845 100 -855 0 1 0 N +S 50 -745 100 -755 0 1 0 N +S 50 -645 100 -655 0 1 0 N +S 50 -545 100 -555 0 1 0 N +S 50 -445 100 -455 0 1 0 N +S 50 -345 100 -355 0 1 0 N +S 50 -245 100 -255 0 1 0 N +S 50 -145 100 -155 0 1 0 N +S 50 -45 100 -55 0 1 0 N +S 50 55 100 45 0 1 0 N +S 50 155 100 145 0 1 0 N +S 50 255 100 245 0 1 0 N +S 50 355 100 345 0 1 0 N +S 50 455 100 445 0 1 0 N +S 50 555 100 545 0 1 0 N +S 50 655 100 645 0 1 0 N +S 50 755 100 745 0 1 0 N +S 50 855 100 845 0 1 0 N +S 50 955 100 945 0 1 0 N +X P1 1 -250 950 150 R 50 50 1 1 P +X P2 2 250 950 150 L 50 50 1 1 P +X P3 3 -250 850 150 R 50 50 1 1 P +X P4 4 250 850 150 L 50 50 1 1 P +X P5 5 -250 750 150 R 50 50 1 1 P +X P6 6 250 750 150 L 50 50 1 1 P +X P7 7 -250 650 150 R 50 50 1 1 P +X P8 8 250 650 150 L 50 50 1 1 P +X P9 9 -250 550 150 R 50 50 1 1 P +X P10 10 250 550 150 L 50 50 1 1 P +X P20 20 250 50 150 L 50 50 1 1 P +X P30 30 250 -450 150 L 50 50 1 1 P +X P40 40 250 -950 150 L 50 50 1 1 P +X P11 11 -250 450 150 R 50 50 1 1 P +X P21 21 -250 -50 150 R 50 50 1 1 P +X P31 31 -250 -550 150 R 50 50 1 1 P +X P12 12 250 450 150 L 50 50 1 1 P +X P22 22 250 -50 150 L 50 50 1 1 P +X P32 32 250 -550 150 L 50 50 1 1 P +X P13 13 -250 350 150 R 50 50 1 1 P +X P23 23 -250 -150 150 R 50 50 1 1 P +X P33 33 -250 -650 150 R 50 50 1 1 P +X P14 14 250 350 150 L 50 50 1 1 P +X P24 24 250 -150 150 L 50 50 1 1 P +X P34 34 250 -650 150 L 50 50 1 1 P +X P15 15 -250 250 150 R 50 50 1 1 P +X P25 25 -250 -250 150 R 50 50 1 1 P +X P35 35 -250 -750 150 R 50 50 1 1 P +X P16 16 250 250 150 L 50 50 1 1 P +X P26 26 250 -250 150 L 50 50 1 1 P +X P36 36 250 -750 150 L 50 50 1 1 P +X P17 17 -250 150 150 R 50 50 1 1 P +X P27 27 -250 -350 150 R 50 50 1 1 P +X P37 37 -250 -850 150 R 50 50 1 1 P +X P18 18 250 150 150 L 50 50 1 1 P +X P28 28 250 -350 150 L 50 50 1 1 P +X P38 38 250 -850 150 L 50 50 1 1 P +X P19 19 -250 50 150 R 50 50 1 1 P +X P29 29 -250 -450 150 R 50 50 1 1 P +X P39 39 -250 -950 150 R 50 50 1 1 P +ENDDRAW +ENDDEF +# +# GND +# +DEF GND #PWR 0 0 Y Y 1 F P +F0 "#PWR" 0 -250 50 H I C CNN +F1 "GND" 0 -150 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V 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 +# +# MOUNTING_HOLE +# +DEF MOUNTING_HOLE MH 0 40 Y Y 1 F N +F0 "MH" 0 150 50 H V C CNN +F1 "MOUNTING_HOLE" 375 -50 50 H V C CNN +F2 "" 0 0 50 H V C CNN +F3 "" 0 0 50 H V C CNN +DRAW +S -100 100 100 0 0 1 0 N +S -50 0 50 -150 0 1 0 N +P 2 0 1 0 -50 -150 50 -125 N +P 2 0 1 0 50 -100 -50 -125 N +P 2 0 1 0 50 -75 -50 -100 N +P 2 0 1 0 50 -50 -50 -75 N +P 2 0 1 0 50 -25 -50 -50 N +P 2 0 1 0 50 0 -50 -25 N +X ~ 1 -100 -150 50 R 50 50 1 1 I +ENDDRAW +ENDDEF +# +#End Library diff --git a/kc4upr/IO Hat/sym-lib-table b/kc4upr/IO Hat/sym-lib-table new file mode 100644 index 0000000..7896454 --- /dev/null +++ b/kc4upr/IO Hat/sym-lib-table @@ -0,0 +1,3 @@ +(sym_lib_table + (lib (name IO-Hat-rescue)(type Legacy)(uri "${KIPRJMOD}/IO Hat-rescue.lib")(options "")(descr "")) +) diff --git a/kc4upr/hardware_pihfiq.py b/kc4upr/hardware_pihfiq.py new file mode 100644 index 0000000..8edaaa1 --- /dev/null +++ b/kc4upr/hardware_pihfiq.py @@ -0,0 +1,503 @@ +######################################################################## +# Pi-HFIQ hardware control module for Quisk. +# +# Original 'hardware_usbserial.py' for RS-HFIQ hardware by _____. +# +# Adapted into the "Pi-HFIQ" configuration by Rob French, KC4UPR. +# +# This file provides for USB control of the HobbyPCB RS-HFIQ SDR +# transceiver, in conjunction with a Raspberry Pi for control. The +# Raspberry Pi provides ADC/DAC of the RX and TX I/Q signals, as well as +# input methods for audio, digital, and CW modes. +# +# TODO as of 2020-04-21: +# (1) Implement all/most of the keyer parameters as user-controllable +# items in the configuration file, widgets, and/or config menu. +# (2) Make power level settings automatically get stored/restored per +# band, mode, and possibly even frequency ("nearest 10 KHz" or +# something like that... memory is cheap). This is due to the +# fact that I get the RS-HFIQ "CLIP" light coming on with different +# output volumes depending on mode, CW vs digital, etc. +# (3) Clean up more comments. +# (4) Add an automatic device finder... so you don't have to edit +# /dev/ttyUSB0, ...USB1, etc. +# +######################################################################## + +from __future__ import print_function + +import math +import psutil +import serial +import serial.tools.list_ports +import struct +import sys +import threading +import time +import traceback + +from quisk_hardware_model import Hardware as BaseHardware +import _quisk as QS + +DEBUG = 1 + +KEYER_MODE_LIST = (('Keyer', None), ('Bug', None), ('Iambic A', None), ('Iambic B', None)) + +DEFAULT_KEYER_MODE = 2 +DEFAULT_KEYER_WPM = 15 + +######################################################################## + +def dprint(*args, **kwargs): + print(*args, file=sys.stdout, **kwargs) + +def eprint(*args, **kwargs): + print(*args, file=sys.stderr, **kwargs) + +######################################################################## +# RSHFIQ class +# +# An object that encapsulates all of the functionality associated with +# the RS-HFIQ serial interface. It provides methods and/or properties +# for each of the commands in the RS-HFIQ interface command list, and +# performs all of the necessary serial port operations. +######################################################################## + +class Hardware(BaseHardware): + def __init__(self, app, conf, debug=DEBUG): + BaseHardware.__init__(self, app, conf) + + # serial port for the transceiver (rig) -- RS-HFIQ + self.rig = RSHFIQ(device="/dev/ttyUSB0", debug=DEBUG) + + self.debug = debug + self.vfo = None + self.ptt_button = 0 + self.is_cw = False + self.key_thread = None + self.mon_thread = None + + self.keyer_mode_list = [x[0] for x in KEYER_MODE_LIST] + + self.keyer_mode = DEFAULT_KEYER_MODE + self.keyer_wpm = DEFAULT_KEYER_WPM + + self.SetKeyerMode(self.keyer_mode) + self.SetKeyerWPM(self.keyer_wpm) + + def open(self): # Called once to open the Hardware + if self.rig.open(): + version = self.rig.version + if version[0:7] == "RS-HFIQ": + if self.conf.name_of_mic_play and self.conf.key_poll_msec: + self.key_thread = KeyThread(self.rig, self.conf.key_poll_msec / 1000.0, self.conf.key_hang_time) + self.key_thread.start() + self.mon_thread = StatusThread(self.rig) + self.mon_thread.start() + return version + else: + eprint("[Pi-HFIQ] could not find the RS-HFIQ device -- terminating") + exit() + else: + return "[Pi-HFIQ] unable to open device" + + def close(self): # Called once to close the Hardware + if self.key_thread: + self.key_thread.stop() + self.key_thread = None + + if self.mon_thread: + self.mon_thread.stop() + self.mon_thread = None + + self.rig.serial.close() + + return "[Pi-HFIQ] closed" + + def HeartBeat(self): + if self.application.bottom_widgets: + self.application.bottom_widgets.UpdateText( + "Rig: %.0fC, CPU: %.0fC, Proc: %.0f%%, Mem: %.0f%%" % ( + self.mon_thread.rig_temp, + self.mon_thread.cpu_temp, + self.mon_thread.cpu_load, + self.mon_thread.mem_load)) + pass + + def ReturnFrequency(self): + return None, self.rig.frequency + + def ChangeFrequency(self, tune, vfo, source='', band='', event=None): + if self.vfo <> vfo : + self.vfo = vfo + self.rig.frequency = self.vfo + # probably need to check that this actually worked! + return tune, self.vfo + + def OnButtonPTT(self, event=None): + if event: + if event.GetEventObject().GetValue(): + if self.debug: dprint("[Pi-HFIQ] PTT pressed") + self.ptt_button = 1 + else: + if self.debug: dprint("[Pi-HFIQ] PTT released") + self.ptt_button = 0 + if self.key_thread and self.is_cw: + # keyer thread exists--it handles PTT + # Also temporarily using this only for CW, because digimodes + # aren't working with the keyer thread... + if self.debug: dprint("[Pi-HFIQ] PTT handled by keyer thread") + self.key_thread.OnPTT(self.ptt_button) + else: + # no keyer thread--PTT handled here + if self.debug: dprint("[Pi-HFIQ] PTT state not handled by keyer thread") + self.rig.transmit = (self.ptt_button == 1) + QS.set_key_down(event.GetEventObject().GetValue()) + +# if self.is_cw: +# QS.set_key_down(0) +# QS.set_transmit_mode(self.ptt_button) +# else: +# QS.set_key_down(self.ptt_button) + + def ChangeMode(self, mode): # Change the tx/rx mode + # mode is a string: "USB", "AM", etc. + if mode in ('CWU', 'CWL'): + self.is_cw = True + QS.set_gpio_keyer_enabled(1) + else: + self.is_cw = False + QS.set_gpio_keyer_enabled(0) + if self.key_thread: + self.key_thread.IsCW(self.is_cw) + elif hasattr(self, 'OnButtonPTT'): + # what is this for? + self.OnButtonPTT() + + def OnSpot(self, level): + if self.key_thread: + self.key_thread.OnSpot(level) + + def SetKeyerMode(self, value): + self.keyer_mode = value + if (self.keyer_mode == 0): + QS.set_gpio_keyer_enabled(0) + else: + QS.set_gpio_keyer_enabled(1) + QS.set_gpio_keyer_mode(self.keyer_mode - 1) + + def SetKeyerWPM(self, value): + self.keyer_wpm = value + QS.set_gpio_keyer_speed(self.keyer_wpm) + +class KeyThread(threading.Thread): + """Create a thread to monitor the key state.""" + def __init__(self, rig, poll_secs, key_hang_time): + self.rig = rig + self.poll_secs = poll_secs + self.key_hang_time = key_hang_time + + self.ptt_button = 0 + self.spot_level = -1 # level is -1 for Spot button Off; else the Spot level 0 to 1000. + self.currently_in_tx = 0 + self.is_cw = False + self.key_timer = 0 + self.key_transmit = 0 + + threading.Thread.__init__(self) + self.doQuit = threading.Event() + self.doQuit.clear() + + def run(self): + while not self.doQuit.isSet(): + key_down = QS.is_key_down() # get the internal Quisk key state + + # in the future, we can have the CW section handled by the H/W key + # line to the RS-HFIQ + if self.is_cw: + pass # this needs to be configurable; however, commenting + # everything below out to test key down via discrete + # if self.spot_level >= 0 or key_down: # key is down + # self.key_transmit = 1 + # self.key_timer = time.time() # QSK/semi-QSK, as applicable + + # else: # key is up + # #QS.set_key_down(0) + # if self.key_transmit and time.time() - self.key_timer > self.key_hang_time: + # self.key_transmit = 0 + + # if self.key_transmit != self.currently_in_tx: + # QS.set_transmit_mode(self.key_transmit) + # self.rig.transmit = (self.key_transmit == 1) + # self.currently_in_tx = self.key_transmit # success + # if DEBUG: print ("Change CW currently_in_tx", self.currently_in_tx) + + # modes other than CW -- only allow the PTT button (and CAT?) + elif False: # temporarily disabled this chunk... + if self.ptt_button: + self.key_transmit = 1 + if self.debug: dprint("[Pi-HFIQ Keyer Thread] non-CW transmit ON") + else: + self.key_transmit = 0 + if self.debug: dprint("[Pi-HFIQ Keyer Thread] non-CW transmit OFF") + + if self.key_transmit != self.currently_in_tx: + #QS.set_transmit_mode(self.key_transmit) + QS.set_key_down(self.key_transmit) + self.rig.transmit = (self.key_transmit == 1) + self.currently_in_tx = self.key_transmit # success + if DEBUG: print ("Change CW currently_in_tx", self.currently_in_tx) + time.sleep(self.poll_secs) + + def stop(self): + """Set a flag to indicate that the thread should end.""" + self.doQuit.set() + + def OnPTT(self, ptt): + self.ptt_button = ptt + + def OnSpot(self, level): + self.spot_level = level + + def IsCW(self, is_cw): + self.is_cw = is_cw + +class StatusThread(threading.Thread): + """Create a thread to monitor various parameters.""" + def __init__(self, rig, poll_secs=0.5): + self.rig = rig + self.poll_secs = poll_secs + + self.__rig_temp = 0 + self.__cpu_temp = 0 + self.__cpu_load = 0 + self.__mem_load = 0 + + threading.Thread.__init__(self) + self.doQuit = threading.Event() + self.doQuit.clear() + + def run(self): + while not self.doQuit.isSet(): + self.__rig_temp = self.rig.temperature + self.__cpu_temp = psutil.sensors_temperatures()['cpu-thermal'][0].current + self.__cpu_load = psutil.cpu_percent() + self.__mem_load = psutil.virtual_memory().percent + time.sleep(self.poll_secs) + + def stop(self): + """Set a flag to indicate that the thread should end.""" + self.doQuit.set() + + @property + def rig_temp(self): + return self.__rig_temp + + @property + def cpu_temp(self): + return self.__cpu_temp + + @property + def cpu_load(self): + return self.__cpu_load + + @property + def mem_load(self): + return self.__mem_load + + +######################################################################## +# RSHFIQ class +# +# An object that encapsulates all of the functionality associated with +# the RS-HFIQ serial interface. It provides methods and/or properties +# for each of the commands in the RS-HFIQ interface command list, and +# performs all of the necessary serial port operations. +######################################################################## + +RSHFIQ_OUTPUT_LEVEL = ("off", "2 ma", "4 ma", "6 ma", "8 ma") + +class RSHFIQ(object): + def __init__(self, device="/dev/ttyUSB0", output_level=2, debug=0): + """Create a new RS-HFIQ object, associated with the specified + serial port. Optionally set output level of the VFO, as well as + debug level. + """ + + self.serial = serial.Serial() + self.serial.port = device + self.serial.baudrate = 57600 + self.serial.bytesize = serial.EIGHTBITS # number of bits per byte + self.serial.parity = serial.PARITY_NONE # set parity check: no parity + self.serial.stopbits = serial.STOPBITS_ONE # number of stop bits + self.serial.timeout = 1 # non-block read + self.serial.rtscts = False + + self.debug = debug + + self.__version = None + self.__output = output_level + self.__transmit = False + self.__lock = threading.Lock() + + if self.debug: dprint("[RS-HFIQ] created new object: ", self.serial.port) + + #=================================================================== + + def open(self): + """Open the serial port associated with the RS-HFIQ, clear the + input, retrieve the version info, and configure for use. + """ + try: + self.serial.open() + except Exception, e: + print(e) + raise Exception + + if self.serial.isOpen(): + if self.debug: dprint("[RS-HFIQ] opened device: ", self.serial.port) + self.serial.flushInput() # flush input buffer, discarding all its contents + self.serial.flushOutput() # flush output buffer, aborting current output + # and discard all that is in buffer + time.sleep(1) # wait a moment for init to finish + + # BUG: For some reason, I have to set a parameter to the + # RS-HFIQ before I can successfully read version info??? + # But I don't have to do this if I just login to the RS-HFIQ + # via a serial terminal... + self.output_level = self.__output + self.transmit = False + + if self.debug: dprint("[RS-HFIQ] getting version info") + # TODO: Make this it's own method... retrieving the version. + self.__lock.acquire() + self.serial.write("*W\r") + self.__version = self.serial.readline().strip() + self.__lock.release() + if self.debug: dprint("[RS-HFIQ] firmware version: ", self.__version) + + return True + else: + return False + + #=================================================================== + + def close(self): + """Close the serial port associated with the RS-HFIQ. + """ + if self.serial.isOpen(): + self.serial.close() + return True + else: + return False + + #------------------------------------------------------------------- + # version - read-only property, returns the version of the RS-HFIQ. + #------------------------------------------------------------------- + + @property + def version(self): + if self.debug: dprint("[RS-HFIQ] firmware version: ", self.__version) + return self.__version + + #------------------------------------------------------------------- + # frequency - read-write property, sets the tuned frequency (VFO) of + # the RS-HFIQ as specified. + #------------------------------------------------------------------- + + @property + def frequency(self): + if self.serial.isOpen(): + self.__lock.acquire() + self.serial.write("*F?\r") + freq = self.serial.readline().strip() + self.__lock.release() + if self.debug: dprint("[RS-HFIQ] current tuned frequency: ", freq) + return freq + else: + return None + + @frequency.setter + def frequency(self, freq): + if self.serial.isOpen(): + self.__lock.acquire() + self.serial.write("*F" + str(freq) + "\r") + self.__lock.release() + if self.debug: dprint("[RS-HFIQ] setting tuned frequency: ", str(freq)) + else: + pass + + #------------------------------------------------------------------- + # output_level - read-write property, sets output level of the + # RS-HFIQ tuner frequency per the interface definition: + # 0 = off + # 1 = 2 ma drive + # 2 = 4 ma drive + # 3 = 6 ma drive + # 4 = 8 ma drive + #------------------------------------------------------------------- + + @property + def output_level(self): + # should probably do some bounds checking on the debug statement + if self.debug: dprint("[RS-HFIQ] current output level: ", RSHFIQ_OUTPUT_LEVEL[self.__output]) + return self.__output + + @output_level.setter + def output_level(self, output_level): + if self.serial.isOpen(): + self.__output = output_level + self.__lock.acquire() + self.serial.write("*OF" + str(self.__output) + "\r") + self.__lock.release() + if self.debug: dprint("[RS-HFIQ] set output level: ", RSHFIQ_OUTPUT_LEVEL[self.__output]) + else: + pass + + #------------------------------------------------------------------- + # transmit - read-write property, True/False sets the transmit state + # of the RS-HFIQ to ON/OFF. + #------------------------------------------------------------------- + + @property + def transmit(self): + if self.debug: dprint("[RS-HFIQ] current transmit state ", "ON" if self.__transmit else "OFF") + return self.__transmit + + @transmit.setter + def transmit(self, state): + if self.serial.isOpen(): + if state: + self.__lock.acquire() + self.serial.write("*X1\r") + self.__lock.release() + self.__transmit = True + if self.debug: dprint("[RS-HFIQ] set transmit ON") + else: + self.__lock.acquire() + self.serial.write("*X0\r") + self.__lock.release() + self.__transmit = False + if self.debug: dprint("[RS-HFIQ] set transmit OFF") + else: + pass + + #------------------------------------------------------------------- + # temperature - read-only property, read from the RS-HFIQ + #------------------------------------------------------------------- + + @property + def temperature(self): + if self.serial.isOpen(): + self.__lock.acquire() + self.serial.write("*T\r") + temp = self.serial.readline().strip()[:-1] + self.__lock.release() + if self.debug: dprint("[RS-HFIQ] current temperature: ", temp) + return float(temp) + else: + return None + +######################################################################## +# EOF +######################################################################## diff --git a/kc4upr/widgets_pihfiq.py b/kc4upr/widgets_pihfiq.py new file mode 100644 index 0000000..95e2c30 --- /dev/null +++ b/kc4upr/widgets_pihfiq.py @@ -0,0 +1,111 @@ +######################################################################## +# Pi-HFIQ widgets module for Quisk. +# +# Original 'funcube_widget.py' for RS-HFIQ hardware by _____. +# +# Adapted into the "Pi-HFIQ" configuration by Rob French, KC4UPR. +# +# This file provides custom widgets for display in the Quisk window when +# used with an RS-HFIQ. This was specifically defined for the "Pi-HFIQ" +# in which a Raspberry Pi is used with the RS-HFIQ, and Quisk has been +# modified with the GPIO Keyer patch. +# +# TODO as of 2020-04-21: +# (1) Make keyer parameter(s) (mode, speed) saved to a config file auto- +# matically on exit. +# (2) Convert the horizontal sliders to popup sliders. This is mainly +# to fix the goofy cell sizing I get with the GridBagSizer. +# +######################################################################## + +from __future__ import print_function +import math +import wx + +from quisk_widgets import * + +import _quisk as QS + +class BottomWidgets: # Add extra widgets to the bottom of the screen + def __init__(self, app, hardware, conf, frame, gbs, vertBox): + self.config = conf + self.hardware = hardware + self.application = app + self.start_row = app.widget_row # The first available row + self.start_col = app.button_start_col # The start of the button columns + + self.num_rows_added = 1 + start_row = self.start_row + + bt = app.QuiskCycleCheckbutton(frame, self.OnKeyerMode, hardware.keyer_mode_list) + b = WrapSlider(bt, self.OnKeyerWPM, slider_value=self.hardware.keyer_wpm, slider_min=1, slider_max=60, display=True) + bw, bh = b.GetMinSize() + bt.SetIndex(self.hardware.keyer_mode) + gbs.Add(b, (start_row, self.start_col), (1, 2), flag=wx.EXPAND) + + #b = app.SliderBoxHH(frame, '%d wpm', 15, 1, 60, self.OnKeyerWPM, True) + #b.SetValue(self.hardware.keyer_wpm) + #gbs.Add(b, (start_row, self.start_col+2), (1, 3), flag=wx.EXPAND) + + b = app.SliderBoxHH(frame, 'Output: %d%%', conf.mic_out_volume, 0, 100, self.OnOutputLevel, True) + b.SetValue(70) + gbs.Add(b, (start_row, self.start_col+2), (1, 3), flag=wx.EXPAND) + + self.status_text = app.QuiskText(frame, 'Rig: 100C, CPU: 100C, Proc: 100%, Mem: 100%', bh, wx.ALIGN_CENTER, True) + gbs.Add(self.status_text, (start_row, self.start_col+5), (1, 4), flag=wx.EXPAND) + + def OnKeyerMode(self, event): + index = event.GetEventObject().index + self.hardware.SetKeyerMode(index) + + def OnKeyerWPM(self, event): + btn = event.GetEventObject() + value = btn.slider_value + print('Keyer WPM: ', value) + self.hardware.SetKeyerWPM(value) + + def OnOutputLevel(self, event): + btn = event.GetEventObject() + value = btn.GetValue() + print('Output Level: ', value) + QS.set_mic_out_volume(value) + + def UpdateText(self, text): + self.status_text.SetLabel(text) + + # lna = app.QuiskCheckbutton(frame, self.OnLNA, 'LNA') + # lna.SetValue( self.hardware.lna ) + # gbs.Add(lna, (start_row, self.start_col), (1, 2), flag=wx.EXPAND) + + # mixer = app.QuiskCheckbutton(frame, self.OnMixer, 'Mixer gain') + # mixer.SetValue( self.hardware.mixer ) + # gbs.Add(mixer, (start_row, self.start_col+2), (1, 2), flag=wx.EXPAND) + + # gain = app.SliderBoxHH(frame, 'If gain %d dB', 0, 0, 59, self.OnIF, True) + # gain.SetValue(self.hardware.ifgain) + # gbs.Add(gain,(start_row, self.start_col+4),(1,4), flag=wx.EXPAND) + + # def OnLNA(self, event): + # btn = event.GetEventObject() + # if btn.GetValue() : + # value = 1 + # else : + # value = 0 + # print('LNA: ',value) + # self.hardware.SetLNA(value) + + # def OnMixer(self, event): + # btn = event.GetEventObject() + # if btn.GetValue() : + # value = 1 + # else : + # value = 0 + # print('Mixer: ',value) + # self.hardware.SetMixer(value) + + # def OnIF(self,event) : + # btn = event.GetEventObject() + # value = btn.GetValue() + # print('IF: ', value ) + # self.hardware.SetIfGain(value) +