Skip to content

Commit

Permalink
TK-1 and TP-1 PCBs (#52)
Browse files Browse the repository at this point in the history
* Add kicad library for flat programming clip

* Add descriptions to part symbols

* Add extended values, manufacturer/distributor info to components in mta1

* Add new board entry for TK1

* Add TP1 programmer design

* Update MTA1-USB-V1 release files to match production

* Change SPI flash memory type to XT25F08BDFIGT-S
* Change touch sensor feedback cap to 1uF
* Add manufacturer, manufacturer part number, distributor, distributor part number

* Update component values for TK1 PCB

* Use specific part # for C8
* Change flash back to Winbond part, for easier sourcing
* Change C1 to 1pF

* Fixes for production programmer PCB

* Swap GND and 5V on J3
* Replace graphic logo with text
* Rename part to 'TP-1'

* TK-1 release

* Add dimensions for PCB
* Add layer stackup for PCB
* Change PCB component origin to match expanded board
* Change schematic title to 'TK-1', update release date

* mta1-usb-v1-programmer: Add corrected part numbers for OSFC production

* Q1, Q2, F1 part subsititutions
* add mfr/supplier info for all parts

* PCB library: add parts

* Rectangular footprint for TK-1 test pads
* BOM generation script used for TK-1 and TP-1 releases

* TP-1 release

* Schematic: Add manufacturer, supplier information for all parts
* Schematic: Update name and release date
* PCB: Add PCB fabrication information
* PCB: Correct pinouts on silkscreen

* PCB library: add 'screw' and 'foot' symbols

* Screw is a schematic-only part, for including mechanical screws in the
  BOM
* Foot is for self-adhesive rubber mounting feet that can be stuck to
  the bottom of a PCB

* TP-1 release: Add screws, feet to the BOM

* Pico library: Add footprint for RPi Pico w/solder paste

* TP-1 RevA release updates:

* Add fiducials in 3 corners (1mm exposed copper ring w/2mm soldermask opening)
* Add solder paste openings to Raspberry Pi Pico pads

* TK-1: RevA.1 release

* Add two fiducials to TK-1 board

* TP-1: Update fuse type to match actual part

* Make placement diagrams for TP-1, TK-1

* Update BC-1-xxx footprints to include placement outlines
* Update TP-1 PCB with new footprints, clean up top fab layer
* Take screenshots of top layers of both boards

* tk-1: fix placement footprints

* Add pin1 marking for ncp footprint
* Add refdes for w25q80 footprint
* Update board with new footprints, clear extraneous text on fab layer
  • Loading branch information
cibomahto committed Dec 22, 2022
1 parent c1b71b7 commit e71d700
Show file tree
Hide file tree
Showing 82 changed files with 119,436 additions and 310 deletions.

Large diffs are not rendered by default.

113 changes: 113 additions & 0 deletions hw/boards/mta1-library/bom_csv_grouped_by_extended_value.py
@@ -0,0 +1,113 @@
#
# Example python script to generate a BOM from a KiCad generic netlist
#
# Example: Sorted and Grouped CSV BOM
#

"""
@package
Output: CSV (comma-separated)
Grouped By: Value, Extended Value, Footprint
Sorted By: Ref
Fields: Ref, Qnty, Value, Footprint, Description, Manufacturer, Manufacturer Part Number
Command line:
python "pathToFile/bom_csv_grouped_by_extended_value.py" "%I" "%O.csv"
"""

# Import the KiCad python helper module and the csv formatter
import kicad_netlist_reader
import kicad_utils
import csv
import sys

# A helper function to convert a UTF8/Unicode/locale string read in netlist
# for python2 or python3
def fromNetlistText( aText ):
if sys.platform.startswith('win32'):
try:
return aText.encode('utf-8').decode('cp1252')
except UnicodeDecodeError:
return aText
else:
return aText

# Group components if their value, extended value, footprint, and reference designator type (?) are the same
import string
def equate_value_extended_value_footprint(self, other):
""" Equivalency operator, remember this can be easily overloaded
2 components are equivalent ( i.e. can be grouped
if they have same value and same footprint
Override the component equivalence operator must be done before
loading the netlist, otherwise all components will have the original
equivalency operator.
You have to define a comparison module (for instance named myEqu)
and add the line;
kicad_netlist_reader.comp.__eq__ = myEqu
in your bom generator script before calling the netliste reader by something like:
net = kicad_netlist_reader.netlist(sys.argv[1])
"""
result = False
if self.getValue() == other.getValue():
if self.getField("Extended Value") == other.getField("Extended Value"):
if self.getFootprint() == other.getFootprint():
if self.getRef().rstrip(string.digits) == other.getRef().rstrip(string.digits):
result = True
return result

kicad_netlist_reader.comp.__eq__ = equate_value_extended_value_footprint

# Generate an instance of a generic netlist, and load the netlist tree from
# the command line option. If the file doesn't exist, execution will stop
net = kicad_netlist_reader.netlist(sys.argv[1])

# Open a file to write to, if the file cannot be opened output to stdout
# instead
try:
f = kicad_utils.open_file_write(sys.argv[2], 'w')
except IOError:
e = "Can't open output file for writing: " + sys.argv[2]
print(__file__, ":", e, sys.stderr)
f = sys.stdout

# Create a new csv writer object to use as the output formatter
out = csv.writer(f, delimiter=',', lineterminator='\n', quotechar='\"', quoting=csv.QUOTE_ALL)

# Output a set of rows for a header providing general information
out.writerow(['Source:', net.getSource()])
out.writerow(['Date:', net.getDate()])
out.writerow(['Tool:', net.getTool()])
out.writerow( ['Generator:', sys.argv[0]] )
out.writerow(['Component Count:', len(net.components)])
out.writerow(['Ref', 'Qnty', 'Value', 'Footprint', 'Description', 'Manufacturer', 'Manufacturer Part Number', 'Supplier', 'Supplier Part Number'])


# Get all of the components in groups of matching parts + values
# (see ky_generic_netlist_reader.py)
grouped = net.groupComponents()

# Output all of the component information
for group in grouped:
refs = ','.join([fromNetlistText( component.getRef() ) for component in group])
c = group[-1]

combinedvalue = c.getValue()
if c.getField("Extended Value") != '':
combinedvalue += ',' + c.getField("Extended Value")

# Fill in the component groups common data
out.writerow([
refs,
len(group),
combinedvalue,
fromNetlistText( c.getFootprint() ),
fromNetlistText( c.getDescription() ),
fromNetlistText( c.getField("Manufacturer") ),
fromNetlistText( c.getField("Manufacturer Part Number") ),
fromNetlistText( c.getField("Supplier") ),
fromNetlistText( c.getField("Supplier Part Number") )
])


200 changes: 197 additions & 3 deletions hw/boards/mta1-library/mta1.kicad_sym
Expand Up @@ -269,6 +269,74 @@
)
)
)
(symbol "BC-1-208" (in_bom yes) (on_board yes)
(property "Reference" "J" (id 0) (at 0 5.08 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "BC-1-208" (id 1) (at 0 2.54 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "mta1:BC-1-208" (id 2) (at 1.27 -5.08 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "BC-1-208_1_1"
(pin passive line (at 2.54 0 180) (length 2.54)
(name "1" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 2.54 -2.54 180) (length 2.54)
(name "2" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "BC-1-701" (in_bom yes) (on_board yes)
(property "Reference" "J" (id 0) (at 0 5.08 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "BC-1-701" (id 1) (at 0 2.54 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "mta1:BC-1-701" (id 2) (at 0 -17.78 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "BC-1-701_1_1"
(pin passive line (at 2.54 0 180) (length 2.54)
(name "1" (effects (font (size 1.27 1.27))))
(number "1" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 2.54 -2.54 180) (length 2.54)
(name "2" (effects (font (size 1.27 1.27))))
(number "2" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 2.54 -5.08 180) (length 2.54)
(name "3" (effects (font (size 1.27 1.27))))
(number "3" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 2.54 -7.62 180) (length 2.54)
(name "4" (effects (font (size 1.27 1.27))))
(number "4" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 2.54 -10.16 180) (length 2.54)
(name "5" (effects (font (size 1.27 1.27))))
(number "5" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 2.54 -12.7 180) (length 2.54)
(name "6" (effects (font (size 1.27 1.27))))
(number "6" (effects (font (size 1.27 1.27))))
)
(pin passive line (at 2.54 -15.24 180) (length 2.54)
(name "7" (effects (font (size 1.27 1.27))))
(number "7" (effects (font (size 1.27 1.27))))
)
)
)
(symbol "CH552E" (in_bom yes) (on_board yes)
(property "Reference" "U" (id 0) (at -8.89 3.81 0)
(effects (font (size 1.27 1.27)))
Expand All @@ -282,6 +350,9 @@
(property "Datasheet" "" (id 3) (at 58.42 -17.78 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "8-bit enhanced USB microcontroller CH552" (id 4) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "CH552E_0_1"
(rectangle (start -10.16 2.54) (end 12.7 -17.78)
(stroke (width 0.254) (type default) (color 0 0 0 0))
Expand Down Expand Up @@ -893,6 +964,40 @@
)
)
)
(symbol "Foot" (in_bom yes) (on_board no)
(property "Reference" "FOOT" (id 0) (at 0 2.54 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "Foot" (id 1) (at 0 -1.905 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (id 2) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "Foot_0_1"
(polyline
(pts
(xy -3.175 1.27)
(xy 3.175 1.27)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(polyline
(pts
(xy 1.905 1.27)
(xy 1.27 -0.635)
(xy -1.27 -0.635)
(xy -1.905 1.27)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
)
)
(symbol "ICE40UP5K-SG48ITR" (in_bom yes) (on_board yes)
(property "Reference" "U" (id 0) (at -24.13 -44.45 0)
(effects (font (size 1.27 1.27)))
Expand Down Expand Up @@ -1197,11 +1302,11 @@
)
)
)
(symbol "MCP1824" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(symbol "MCP1824T-2502EOT" (pin_names (offset 1.016)) (in_bom yes) (on_board yes)
(property "Reference" "U" (id 0) (at 7.62 -6.35 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "MCP1824" (id 1) (at 0 7.62 0)
(property "Value" "MCP1824T-2502EOT" (id 1) (at 0 7.62 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "Package_TO_SOT_SMD:SOT-23-5" (id 2) (at 19.05 -8.89 0)
Expand All @@ -1210,7 +1315,10 @@
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "MCP1824_1_1"
(property "ki_description" "IC REG LINEAR 2.5V 300MA SOT23-5" (id 4) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "MCP1824T-2502EOT_1_1"
(rectangle (start -7.62 6.35) (end 7.62 -3.81)
(stroke (width 0.254) (type default) (color 0 0 0 0))
(fill (type background))
Expand Down Expand Up @@ -1250,6 +1358,9 @@
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "IC REG LINEAR 1.2V 150MA SOT23-5" (id 4) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "MIC5258-1.2YM5-TR_1_1"
(rectangle (start -7.62 6.35) (end 7.62 -3.81)
(stroke (width 0.254) (type default) (color 0 0 0 0))
Expand Down Expand Up @@ -1290,6 +1401,9 @@
(property "Datasheet" "" (id 3) (at 0 8.89 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "IC REG LINEAR 3.3V 200MA 5TSOP" (id 4) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "NCP752BSN33T1G_1_1"
(rectangle (start -7.62 5.08) (end 7.62 -5.08)
(stroke (width 0.254) (type default) (color 0 0 0 0))
Expand Down Expand Up @@ -1330,6 +1444,9 @@
(property "Datasheet" "" (id 3) (at -21.59 12.7 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "ki_description" "SOT-23-6 Touch Sensors ROHS" (id 4) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "PT2043AT6_1_1"
(rectangle (start -7.62 7.62) (end 7.62 -7.62)
(stroke (width 0.254) (type default) (color 0 0 0 0))
Expand Down Expand Up @@ -1361,6 +1478,83 @@
)
)
)
(symbol "Screw" (in_bom yes) (on_board no)
(property "Reference" "SCREW" (id 0) (at 0 2.54 0)
(effects (font (size 1.27 1.27)))
)
(property "Value" "Screw" (id 1) (at 0 -2.54 0)
(effects (font (size 1.27 1.27)))
)
(property "Footprint" "" (id 2) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(property "Datasheet" "" (id 3) (at 0 0 0)
(effects (font (size 1.27 1.27)) hide)
)
(symbol "Screw_0_1"
(polyline
(pts
(xy 0.635 0.635)
(xy 0 -0.635)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(polyline
(pts
(xy 1.27 0.635)
(xy 0.635 -0.635)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(polyline
(pts
(xy 1.905 0.635)
(xy 1.27 -0.635)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(polyline
(pts
(xy 2.54 0.635)
(xy 1.905 -0.635)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(polyline
(pts
(xy 3.175 0.635)
(xy 2.54 -0.635)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(polyline
(pts
(xy 0 0.635)
(xy 3.175 0.635)
(xy 3.175 -0.635)
(xy 0 -0.635)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
(polyline
(pts
(xy -1.27 1.27)
(xy -1.27 -1.27)
(xy 0 -1.27)
(xy 0 1.27)
(xy -1.27 1.27)
)
(stroke (width 0) (type default) (color 0 0 0 0))
(fill (type none))
)
)
)
(symbol "W25Q80DVSNIG" (in_bom yes) (on_board yes)
(property "Reference" "U" (id 0) (at -8.89 8.89 0)
(effects (font (size 1.27 1.27)))
Expand Down

0 comments on commit e71d700

Please sign in to comment.