cleaning
Before Width: | Height: | Size: 19 KiB |
@ -1 +0,0 @@
|
||||
This thing was created by Thingiverse user pgreenland, and is licensed under Creative Commons - Attribution - Share Alike
|
@ -1 +0,0 @@
|
||||
Bed Leveling Calibration Test Object (Parametric) by pgreenland on Thingiverse: https://www.thingiverse.com/thing:34558
|
@ -1,53 +0,0 @@
|
||||
/**
|
||||
* Print designed to check that you bed is level
|
||||
*
|
||||
* print four small squares in each corner to ensure even print quality and good adhesion.
|
||||
*/
|
||||
|
||||
// Define your printers printable area
|
||||
// If you are using Sprinter firmware then these come directly from configuration.h
|
||||
|
||||
X_MAX_LENGTH = 120;
|
||||
Y_MAX_LENGTH = 120;
|
||||
|
||||
THICKNESS = 0.1; //Square / outline thickness
|
||||
SIZE = 10; //Square width / height
|
||||
GAP = 0.5; //Width of border between square and parameter
|
||||
OUTLINE_WIDTH = 1; //Width of parameter around square
|
||||
OFFSET = 25; //Offset from limits in each axis
|
||||
|
||||
translate([OFFSET, OFFSET, 0]) square(); //Top Left
|
||||
translate([(X_MAX_LENGTH / 2) - (SIZE / 2), OFFSET, 0]) square(); //Top Middle
|
||||
translate([X_MAX_LENGTH - OFFSET - SIZE, OFFSET, 0]) square(); //Top Right
|
||||
|
||||
translate([OFFSET, (Y_MAX_LENGTH / 2) - (SIZE / 2), 0]) square(); //Middle Left
|
||||
translate([(X_MAX_LENGTH / 2) - (SIZE / 2), (Y_MAX_LENGTH / 2) - (SIZE / 2), 0]) square(); //Middle Middle
|
||||
translate([X_MAX_LENGTH - OFFSET - SIZE, (Y_MAX_LENGTH / 2) - (SIZE / 2), 0]) square(); //Middle Right
|
||||
|
||||
translate([OFFSET, Y_MAX_LENGTH - OFFSET - SIZE, 0]) square(); //Bottom Left
|
||||
translate([(X_MAX_LENGTH / 2) - (SIZE / 2), Y_MAX_LENGTH - OFFSET - SIZE, 0]) square(); //Bottom Middle
|
||||
translate([X_MAX_LENGTH - OFFSET - SIZE, Y_MAX_LENGTH - OFFSET - SIZE, 0]) square(); //Bottom Right
|
||||
|
||||
module square() {
|
||||
//Center square
|
||||
translate([
|
||||
OUTLINE_WIDTH + GAP,
|
||||
OUTLINE_WIDTH + GAP,
|
||||
0
|
||||
])
|
||||
cube([SIZE, SIZE, THICKNESS]);
|
||||
|
||||
//Parameter
|
||||
difference() {
|
||||
//Outer square
|
||||
cube([
|
||||
SIZE + (2 * (GAP + OUTLINE_WIDTH)),
|
||||
SIZE + (2 * (GAP + OUTLINE_WIDTH)),
|
||||
THICKNESS
|
||||
]);
|
||||
|
||||
//Inner square
|
||||
translate([OUTLINE_WIDTH, OUTLINE_WIDTH, -5])
|
||||
cube([SIZE + (2 * GAP), SIZE + (2 * GAP), 10]);
|
||||
}
|
||||
}
|
@ -1,57 +0,0 @@
|
||||
# THIS README IS NOW OUTDATED. THE PROJECT IS WAY COOLER AND AN ARTICLE IS COMING SOON!
|
||||
## I've implimented my own border tracing algorithim to dramatically speed up rendering.
|
||||
There's a few other optimizations, such as shifting around image buffers, etc. <br>
|
||||
## Also, the card is rechargable now.
|
||||
Software is still in disarray and could be optimized, however it runs smoothly. Hardware is working, I haven't had time to test all functionallity though. The battery does charge and discharge safely (cut off at 1v).<br>
|
||||
## Here's a crummy picture of the card.
|
||||

|
||||
## A quick video of the border tracing in action- a better video coming soon.
|
||||

|
||||
|
||||
|
||||
<br><br><br><br><br><br><br>
|
||||
# STM32 Mandelbrot Explorer Buisness Card
|
||||
A battery powered business card that can explore the Mandelbrot set. Meant to be cheaply made for handing out. Will likely include a flappy bird clone to encourage recruiter competition.
|
||||
# Project in development! See below for a brief write up.
|
||||

|
||||
|
||||
## Project structure
|
||||
Code: [program/stm32f1_buisnesscard_v1/Core](https://git.bpcspace.com/indigo/stm32_business_card/src/branch/main/program/stm32f1_buisnesscard_v1/Core) <br>
|
||||
PCB: [kicad/](https://git.bpcspace.com/indigo/stm32_business_card/src/branch/main/kicad)
|
||||
|
||||
|
||||
## Software Development
|
||||
The software is currently working, but is more a proof of concept (messy and unoptimized). In it's current state, I'm leaning heavily on ST's HAL to save time. For a project where everything is written from the ground up, see my other projects below [^1]!
|
||||
|
||||
### Display
|
||||
I've modified [this repository](https://github.com/afiskon/stm32-st7735) to fit my needs. I've had to make some minor changes to utilize the ST7735's sleep mode, and to make the code work for my specific display. I expect I'll need to rewrite the library to manipulate raw registers to optimize SPI communication, as it currently uses HAL and is *very* slow. I'm considering implementing a game as well, which may require I access SPI via DMA.
|
||||
### (No) FPU
|
||||
The STM32F1 lineup doesn't have an FPU, thus fixed point integer arithmetic is used to speed up rendering. The decimal is intentionally too close to the MSB, as this introduces aesthetic visual artifacts at no cost that I think are a nice twist. <br>
|
||||
*notice the banding around the set- that's an artifact of pushing fixed point arithmatic beyond its limits* <br>
|
||||
<img src="./writeup/quick_buildings.png" alt="drawing" width="800"/> <br>
|
||||
<img src="./writeup/quick_spiral.png" alt="drawing" width="800"/> <br>
|
||||
|
||||
### MCU Power Consumption
|
||||
The software is interrupt based, saving power any time there's not an active job. After 30 seconds, a MOSFET will turn off the backlight and the MCU will in a deeper sleep state, where only a few microamps are consumed. This allows the card to operate without a power switch, as theoretically the sleeping power consumption is insignificant compared to the shelf life of these batteries (a few months).
|
||||
|
||||
## Hardware Development
|
||||
The PCB works, and is what I'm using to test code. I'm planning on making some changes, including adding MOSFETS for the display backlight and creating some art for the silk screen.
|
||||
The hardware is intentionally left simple for rapid development; there's two ideal diodes, allowing power delivery via USB-C or batteries, a step-down switching regulator, buttons with debouncing circuits, and of course, the MCU.
|
||||
Some of the most vital components are described below.
|
||||
|
||||
### Batteries
|
||||
This card will be powered by 4 zinc air batteries (cost effective & high power density, commonly used in hearing aids). The downside to these batteries is that they're non-rechargeable, and after activation, they only have a shelf life of a few weeks. Batteries are expensive, and what I've got is more then enough- it may actually be overkill.
|
||||
A battery holder was developed to be used with springs to hold the batteries in place. I haven't ordered the batteries yet, so I have yet to see how it performs.
|
||||
|
||||
### Display
|
||||
The display is the cheapest 2$ 65k 160x80 color LCD I could find on LCSC. It is the most expensive part of my card, matched with batteries. I'm sure I could have found it on Ali Express for 50¢, but hindsight is 20/20. It's actually very pretty, and I plan to upload images soon.
|
||||
|
||||
### SPI troubles
|
||||
Currently, SPI only works consistently at 4mHZ. I have yet to probe it with my oscilloscope and figure out what's wrong; I'm guessing parasitic capacitance. My next PCB will have differential routing to allow higher speeds.
|
||||
|
||||
## Things I'd change
|
||||
I'm used to working with a lot lower spec MCUs, and after the purchase I've found that the price of the STM32f1 is actually quite expensive for it's performance. I might want to try something uber cheap for my next project requiring a higher speed 32 bit processor, as long as it's got a HAL to accelerate development. The ch32v003 looks pretty cool...
|
||||
|
||||
## Other Projects
|
||||
[^1]: For another embedded project without any assistance from HAL, check out my (unfinished) [AVR wristwatch](https://git.bpcspace.com/indigo/AVRwristwatch), where everything- from the I2C display and RTC clock is developed from the ground up! <br>
|
||||
For a much larger project that's not exactly embedded, check out my [Operating System](https://git.bpcspace.com/indigo/IndigoOS). I haven't been able to work on it since going to Missouri S&T, but some impressive feats include a bootloader, an efficient binary tree/buddy system physical memory allocator, and multi-core execution. It's a lot of code, maybe check it out!
|
@ -1,128 +0,0 @@
|
||||
(kicad_symbol_lib
|
||||
(version 20241209)
|
||||
(generator "kicad_symbol_editor")
|
||||
(generator_version "9.0")
|
||||
(symbol "quad_675"
|
||||
(exclude_from_sim no)
|
||||
(in_bom yes)
|
||||
(on_board yes)
|
||||
(property "Reference" "U"
|
||||
(at 0 -1.524 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(property "Value" ""
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(property "Footprint" ""
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Datasheet" ""
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Description" ""
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(symbol "quad_675_1_1"
|
||||
(pin bidirectional line
|
||||
(at 0 11.43 0)
|
||||
(length 2.54)
|
||||
(name "gnd_4"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "4"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin bidirectional line
|
||||
(at 0 7.62 0)
|
||||
(length 2.54)
|
||||
(name "gnd_3"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "3"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin bidirectional line
|
||||
(at 0 3.81 0)
|
||||
(length 2.54)
|
||||
(name "gnd_2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin bidirectional line
|
||||
(at 0 0 0)
|
||||
(length 2.54)
|
||||
(name "gnd_1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(embedded_fonts no)
|
||||
)
|
||||
)
|
@ -1,142 +0,0 @@
|
||||
(kicad_symbol_lib
|
||||
(version 20241209)
|
||||
(generator "kicad_symbol_editor")
|
||||
(generator_version "9.0")
|
||||
(symbol "quad_675"
|
||||
(exclude_from_sim no)
|
||||
(in_bom yes)
|
||||
(on_board yes)
|
||||
(property "Reference" "U"
|
||||
(at 10.668 5.588 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Value" ""
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(property "Footprint" ""
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Datasheet" ""
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(property "Description" ""
|
||||
(at 0 0 0)
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
(hide yes)
|
||||
)
|
||||
)
|
||||
(symbol "quad_675_0_1"
|
||||
(rectangle
|
||||
(start 2.54 12.7)
|
||||
(end 12.7 -1.27)
|
||||
(stroke
|
||||
(width 0)
|
||||
(type default)
|
||||
)
|
||||
(fill
|
||||
(type none)
|
||||
)
|
||||
)
|
||||
)
|
||||
(symbol "quad_675_1_1"
|
||||
(pin bidirectional line
|
||||
(at 0 11.43 0)
|
||||
(length 2.54)
|
||||
(name "gnd_4"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "4"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin bidirectional line
|
||||
(at 0 7.62 0)
|
||||
(length 2.54)
|
||||
(name "gnd_3"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "3"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin bidirectional line
|
||||
(at 0 3.81 0)
|
||||
(length 2.54)
|
||||
(name "gnd_2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "2"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(pin bidirectional line
|
||||
(at 0 0 0)
|
||||
(length 2.54)
|
||||
(name "gnd_1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
(number "1"
|
||||
(effects
|
||||
(font
|
||||
(size 1.27 1.27)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
(embedded_fonts no)
|
||||
)
|
||||
)
|
@ -1,48 +0,0 @@
|
||||
(module battery (layer F.Cu) (tedit 61218795)
|
||||
(attr smd)
|
||||
(descr "battery StepUp generated footprint")
|
||||
(fp_text reference "FC_" (at 0.0 1.0) (layer F.SilkS)
|
||||
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||
)
|
||||
(fp_text value "Val_" (at 0.0 -1.0) (layer F.SilkS)
|
||||
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||
)
|
||||
(fp_text user %R (at 0.0 1.0) (layer F.Fab)
|
||||
(effects (font (size 1.0 1.0) (thickness 0.15)))
|
||||
)
|
||||
(fp_text user "EDIT PAD NUMBERS" (at 0.0 -2.0) (layer Cmts.User)
|
||||
(effects (font (size 1 1) (thickness 0.2) italic))
|
||||
)
|
||||
(fp_line (start 47.100000 -7.800000) (end 47.100000 -6.854102) (layer Sketch_converted) (width 0.05))
|
||||
(fp_arc (start 50.100000 -6.854102) (end 47.100000 -6.854102) (angle -63.434949) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start 48.758359 -4.170820) (end 50.441641 -3.329180) (layer Sketch_converted) (width 0.05))
|
||||
(fp_arc (start 49.100000 -0.645898) (end 52.100000 -0.645898) (angle -63.434949) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start 52.100000 -0.645898) (end 52.100000 0.645898) (layer Sketch_converted) (width 0.05))
|
||||
(fp_arc (start 49.100000 0.645898) (end 50.441641 3.329180) (angle -63.434949) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start 50.441641 3.329180) (end 48.758359 4.170820) (layer Sketch_converted) (width 0.05))
|
||||
(fp_arc (start 50.100000 6.854102) (end 48.758359 4.170820) (angle -63.434949) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start 47.100000 7.800000) (end 47.100000 6.854102) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start 47.100000 7.800000) (end -7.800000 7.800000) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start -7.800000 7.800000) (end -7.800000 6.854102) (layer Sketch_converted) (width 0.05))
|
||||
(fp_arc (start -10.800000 6.854102) (end -7.800000 6.854102) (angle -63.434949) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start -9.458359 4.170820) (end -11.141641 3.329180) (layer Sketch_converted) (width 0.05))
|
||||
(fp_arc (start -9.800000 0.645898) (end -12.800000 0.645898) (angle -63.434949) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start -12.800000 0.645898) (end -12.800000 -0.645898) (layer Sketch_converted) (width 0.05))
|
||||
(fp_arc (start -9.800000 -0.645898) (end -11.141641 -3.329180) (angle -63.434949) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start -11.141641 -3.329180) (end -9.458359 -4.170820) (layer Sketch_converted) (width 0.05))
|
||||
(fp_arc (start -10.800000 -6.854102) (end -9.458359 -4.170820) (angle -63.434949) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start -7.800000 -7.800000) (end -7.800000 -6.854102) (layer Sketch_converted) (width 0.05))
|
||||
(fp_line (start -7.800000 -7.800000) (end 47.100000 -7.800000) (layer Sketch_converted) (width 0.05))
|
||||
(fp_circle (center 49.600000 -0.000000) (end 48.000000 -0.000000) (layer Sketch_converted) (width 0.05))
|
||||
(fp_circle (center 39.300000 0.000000) (end 33.250000 0.000000) (layer Sketch_converted) (width 0.05))
|
||||
(fp_circle (center 26.200000 0.000000) (end 20.150000 0.000000) (layer Sketch_converted) (width 0.05))
|
||||
(fp_circle (center 13.100000 0.000000) (end 7.050000 0.000000) (layer Sketch_converted) (width 0.05))
|
||||
(fp_circle (center 0.000000 0.000000) (end -6.050000 0.000000) (layer Sketch_converted) (width 0.05))
|
||||
(fp_circle (center -10.300000 0.000000) (end -11.900000 0.000000) (layer Sketch_converted) (width 0.05))
|
||||
(model "/home/indigo/projects/stm32_buisnesscard/kicad/battery.wrl"
|
||||
(at (xyz 0 0 0))
|
||||
(scale (xyz 1 1 1))
|
||||
(rotate (xyz 0 0 0))
|
||||
)
|
||||
)
|
||||
|
@ -1,96 +0,0 @@
|
||||
{
|
||||
"board": {
|
||||
"active_layer": 0,
|
||||
"active_layer_preset": "",
|
||||
"auto_track_width": true,
|
||||
"hidden_netclasses": [],
|
||||
"hidden_nets": [],
|
||||
"high_contrast_mode": 0,
|
||||
"net_color_mode": 1,
|
||||
"opacity": {
|
||||
"images": 0.6,
|
||||
"pads": 1.0,
|
||||
"shapes": 1.0,
|
||||
"tracks": 1.0,
|
||||
"vias": 1.0,
|
||||
"zones": 0.6
|
||||
},
|
||||
"selection_filter": {
|
||||
"dimensions": true,
|
||||
"footprints": true,
|
||||
"graphics": true,
|
||||
"keepouts": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pads": true,
|
||||
"text": true,
|
||||
"tracks": true,
|
||||
"vias": true,
|
||||
"zones": true
|
||||
},
|
||||
"visible_items": [
|
||||
"vias",
|
||||
"footprint_text",
|
||||
"footprint_anchors",
|
||||
"ratsnest",
|
||||
"footprints_front",
|
||||
"footprints_back",
|
||||
"footprint_values",
|
||||
"footprint_references",
|
||||
"tracks",
|
||||
"drc_errors",
|
||||
"drawing_sheet",
|
||||
"bitmaps",
|
||||
"pads",
|
||||
"zones",
|
||||
"drc_warnings",
|
||||
"locked_item_shadows",
|
||||
"conflict_shadows",
|
||||
"shapes"
|
||||
],
|
||||
"visible_layers": "ffffffff_ffffffff_ffffffff_ffffffff",
|
||||
"zone_display_mode": 0
|
||||
},
|
||||
"git": {
|
||||
"repo_type": "",
|
||||
"repo_username": "",
|
||||
"ssh_key": ""
|
||||
},
|
||||
"meta": {
|
||||
"filename": "stm32card_old.kicad_prl",
|
||||
"version": 5
|
||||
},
|
||||
"net_inspector_panel": {
|
||||
"col_hidden": [],
|
||||
"col_order": [],
|
||||
"col_widths": [],
|
||||
"custom_group_rules": [],
|
||||
"expanded_rows": [],
|
||||
"filter_by_net_name": true,
|
||||
"filter_by_netclass": true,
|
||||
"filter_text": "",
|
||||
"group_by_constraint": false,
|
||||
"group_by_netclass": false,
|
||||
"show_unconnected_nets": false,
|
||||
"show_zero_pad_nets": false,
|
||||
"sort_ascending": true,
|
||||
"sorting_column": -1
|
||||
},
|
||||
"open_jobsets": [],
|
||||
"project": {
|
||||
"files": []
|
||||
},
|
||||
"schematic": {
|
||||
"selection_filter": {
|
||||
"graphics": true,
|
||||
"images": true,
|
||||
"labels": true,
|
||||
"lockedItems": false,
|
||||
"otherItems": true,
|
||||
"pins": true,
|
||||
"symbols": true,
|
||||
"text": true,
|
||||
"wires": true
|
||||
}
|
||||
}
|
||||
}
|
@ -1,655 +0,0 @@
|
||||
{
|
||||
"board": {
|
||||
"3dviewports": [],
|
||||
"design_settings": {
|
||||
"defaults": {
|
||||
"apply_defaults_to_fp_fields": false,
|
||||
"apply_defaults_to_fp_shapes": false,
|
||||
"apply_defaults_to_fp_text": false,
|
||||
"board_outline_line_width": 0.05,
|
||||
"copper_line_width": 0.2,
|
||||
"copper_text_italic": false,
|
||||
"copper_text_size_h": 1.5,
|
||||
"copper_text_size_v": 1.5,
|
||||
"copper_text_thickness": 0.3,
|
||||
"copper_text_upright": false,
|
||||
"courtyard_line_width": 0.05,
|
||||
"dimension_precision": 4,
|
||||
"dimension_units": 3,
|
||||
"dimensions": {
|
||||
"arrow_length": 1270000,
|
||||
"extension_offset": 500000,
|
||||
"keep_text_aligned": true,
|
||||
"suppress_zeroes": false,
|
||||
"text_position": 0,
|
||||
"units_format": 1
|
||||
},
|
||||
"fab_line_width": 0.1,
|
||||
"fab_text_italic": false,
|
||||
"fab_text_size_h": 1.0,
|
||||
"fab_text_size_v": 1.0,
|
||||
"fab_text_thickness": 0.15,
|
||||
"fab_text_upright": false,
|
||||
"other_line_width": 0.1,
|
||||
"other_text_italic": false,
|
||||
"other_text_size_h": 1.0,
|
||||
"other_text_size_v": 1.0,
|
||||
"other_text_thickness": 0.15,
|
||||
"other_text_upright": false,
|
||||
"pads": {
|
||||
"drill": 0.762,
|
||||
"height": 1.524,
|
||||
"width": 1.524
|
||||
},
|
||||
"silk_line_width": 0.1,
|
||||
"silk_text_italic": false,
|
||||
"silk_text_size_h": 1.0,
|
||||
"silk_text_size_v": 1.0,
|
||||
"silk_text_thickness": 0.1,
|
||||
"silk_text_upright": false,
|
||||
"zones": {
|
||||
"min_clearance": 0.5
|
||||
}
|
||||
},
|
||||
"diff_pair_dimensions": [
|
||||
{
|
||||
"gap": 0.0,
|
||||
"via_gap": 0.0,
|
||||
"width": 0.0
|
||||
}
|
||||
],
|
||||
"drc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 2
|
||||
},
|
||||
"rule_severities": {
|
||||
"annular_width": "error",
|
||||
"clearance": "error",
|
||||
"connection_width": "warning",
|
||||
"copper_edge_clearance": "error",
|
||||
"copper_sliver": "warning",
|
||||
"courtyards_overlap": "error",
|
||||
"creepage": "error",
|
||||
"diff_pair_gap_out_of_range": "error",
|
||||
"diff_pair_uncoupled_length_too_long": "error",
|
||||
"drill_out_of_range": "error",
|
||||
"duplicate_footprints": "warning",
|
||||
"extra_footprint": "warning",
|
||||
"footprint": "error",
|
||||
"footprint_filters_mismatch": "ignore",
|
||||
"footprint_symbol_mismatch": "warning",
|
||||
"footprint_type_mismatch": "ignore",
|
||||
"hole_clearance": "error",
|
||||
"hole_near_hole": "error",
|
||||
"hole_to_hole": "error",
|
||||
"holes_co_located": "warning",
|
||||
"invalid_outline": "error",
|
||||
"isolated_copper": "warning",
|
||||
"item_on_disabled_layer": "error",
|
||||
"items_not_allowed": "error",
|
||||
"length_out_of_range": "error",
|
||||
"lib_footprint_issues": "warning",
|
||||
"lib_footprint_mismatch": "warning",
|
||||
"malformed_courtyard": "error",
|
||||
"microvia_drill_out_of_range": "error",
|
||||
"mirrored_text_on_front_layer": "warning",
|
||||
"missing_courtyard": "ignore",
|
||||
"missing_footprint": "warning",
|
||||
"net_conflict": "warning",
|
||||
"nonmirrored_text_on_back_layer": "warning",
|
||||
"npth_inside_courtyard": "ignore",
|
||||
"padstack": "warning",
|
||||
"pth_inside_courtyard": "ignore",
|
||||
"shorting_items": "error",
|
||||
"silk_edge_clearance": "warning",
|
||||
"silk_over_copper": "warning",
|
||||
"silk_overlap": "warning",
|
||||
"skew_out_of_range": "error",
|
||||
"solder_mask_bridge": "error",
|
||||
"starved_thermal": "error",
|
||||
"text_height": "warning",
|
||||
"text_on_edge_cuts": "error",
|
||||
"text_thickness": "warning",
|
||||
"through_hole_pad_without_hole": "error",
|
||||
"too_many_vias": "error",
|
||||
"track_angle": "error",
|
||||
"track_dangling": "warning",
|
||||
"track_segment_length": "error",
|
||||
"track_width": "error",
|
||||
"tracks_crossing": "error",
|
||||
"unconnected_items": "error",
|
||||
"unresolved_variable": "error",
|
||||
"via_dangling": "warning",
|
||||
"zones_intersect": "error"
|
||||
},
|
||||
"rules": {
|
||||
"max_error": 0.005,
|
||||
"min_clearance": 0.1,
|
||||
"min_connection": 0.0,
|
||||
"min_copper_edge_clearance": 0.5,
|
||||
"min_groove_width": 0.0,
|
||||
"min_hole_clearance": 0.25,
|
||||
"min_hole_to_hole": 0.25,
|
||||
"min_microvia_diameter": 0.2,
|
||||
"min_microvia_drill": 0.1,
|
||||
"min_resolved_spokes": 2,
|
||||
"min_silk_clearance": 0.0,
|
||||
"min_text_height": 0.8,
|
||||
"min_text_thickness": 0.08,
|
||||
"min_through_hole_diameter": 0.3,
|
||||
"min_track_width": 0.16,
|
||||
"min_via_annular_width": 0.1,
|
||||
"min_via_diameter": 0.5,
|
||||
"solder_mask_to_copper_clearance": 0.0,
|
||||
"use_height_for_length_calcs": true
|
||||
},
|
||||
"teardrop_options": [
|
||||
{
|
||||
"td_onpthpad": true,
|
||||
"td_onroundshapesonly": false,
|
||||
"td_onsmdpad": true,
|
||||
"td_ontrackend": false,
|
||||
"td_onvia": true
|
||||
}
|
||||
],
|
||||
"teardrop_parameters": [
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_round_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_rect_shape",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
},
|
||||
{
|
||||
"td_allow_use_two_tracks": true,
|
||||
"td_curve_segcount": 0,
|
||||
"td_height_ratio": 1.0,
|
||||
"td_length_ratio": 0.5,
|
||||
"td_maxheight": 2.0,
|
||||
"td_maxlen": 1.0,
|
||||
"td_on_pad_in_zone": false,
|
||||
"td_target_name": "td_track_end",
|
||||
"td_width_to_size_filter_ratio": 0.9
|
||||
}
|
||||
],
|
||||
"track_widths": [
|
||||
0.0,
|
||||
0.25,
|
||||
0.35,
|
||||
0.5
|
||||
],
|
||||
"tuning_pattern_settings": {
|
||||
"diff_pair_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 1.0
|
||||
},
|
||||
"diff_pair_skew_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
},
|
||||
"single_track_defaults": {
|
||||
"corner_radius_percentage": 80,
|
||||
"corner_style": 1,
|
||||
"max_amplitude": 1.0,
|
||||
"min_amplitude": 0.2,
|
||||
"single_sided": false,
|
||||
"spacing": 0.6
|
||||
}
|
||||
},
|
||||
"via_dimensions": [
|
||||
{
|
||||
"diameter": 0.0,
|
||||
"drill": 0.0
|
||||
}
|
||||
],
|
||||
"zones_allow_external_fillets": false
|
||||
},
|
||||
"ipc2581": {
|
||||
"dist": "",
|
||||
"distpn": "",
|
||||
"internal_id": "",
|
||||
"mfg": "",
|
||||
"mpn": ""
|
||||
},
|
||||
"layer_pairs": [],
|
||||
"layer_presets": [],
|
||||
"viewports": []
|
||||
},
|
||||
"boards": [],
|
||||
"cvpcb": {
|
||||
"equivalence_files": []
|
||||
},
|
||||
"erc": {
|
||||
"erc_exclusions": [],
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"pin_map": [
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
1,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
0,
|
||||
2,
|
||||
1,
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
1,
|
||||
0,
|
||||
2,
|
||||
0,
|
||||
0,
|
||||
2
|
||||
],
|
||||
[
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2,
|
||||
2
|
||||
]
|
||||
],
|
||||
"rule_severities": {
|
||||
"bus_definition_conflict": "error",
|
||||
"bus_entry_needed": "error",
|
||||
"bus_to_bus_conflict": "error",
|
||||
"bus_to_net_conflict": "error",
|
||||
"conflicting_netclasses": "error",
|
||||
"different_unit_footprint": "error",
|
||||
"different_unit_net": "error",
|
||||
"duplicate_reference": "error",
|
||||
"duplicate_sheet_names": "error",
|
||||
"endpoint_off_grid": "warning",
|
||||
"extra_units": "error",
|
||||
"footprint_filter": "ignore",
|
||||
"footprint_link_issues": "warning",
|
||||
"four_way_junction": "ignore",
|
||||
"global_label_dangling": "warning",
|
||||
"hier_label_mismatch": "error",
|
||||
"label_dangling": "error",
|
||||
"label_multiple_wires": "warning",
|
||||
"lib_symbol_issues": "warning",
|
||||
"lib_symbol_mismatch": "warning",
|
||||
"missing_bidi_pin": "warning",
|
||||
"missing_input_pin": "warning",
|
||||
"missing_power_pin": "error",
|
||||
"missing_unit": "warning",
|
||||
"multiple_net_names": "warning",
|
||||
"net_not_bus_member": "warning",
|
||||
"no_connect_connected": "warning",
|
||||
"no_connect_dangling": "warning",
|
||||
"pin_not_connected": "error",
|
||||
"pin_not_driven": "error",
|
||||
"pin_to_pin": "warning",
|
||||
"power_pin_not_driven": "error",
|
||||
"same_local_global_label": "warning",
|
||||
"similar_label_and_power": "warning",
|
||||
"similar_labels": "warning",
|
||||
"similar_power": "warning",
|
||||
"simulation_model_issue": "ignore",
|
||||
"single_global_label": "ignore",
|
||||
"unannotated": "error",
|
||||
"unconnected_wire_endpoint": "warning",
|
||||
"unit_value_mismatch": "error",
|
||||
"unresolved_variable": "error",
|
||||
"wire_dangling": "error"
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"pinned_footprint_libs": [],
|
||||
"pinned_symbol_libs": []
|
||||
},
|
||||
"meta": {
|
||||
"filename": "stm32card_old.kicad_pro",
|
||||
"version": 3
|
||||
},
|
||||
"net_settings": {
|
||||
"classes": [
|
||||
{
|
||||
"bus_width": 12,
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_via_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"line_style": 0,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "Default",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 2147483647,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.25,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3,
|
||||
"wire_width": 6
|
||||
},
|
||||
{
|
||||
"clearance": 0.2,
|
||||
"diff_pair_gap": 0.25,
|
||||
"diff_pair_width": 0.2,
|
||||
"microvia_diameter": 0.3,
|
||||
"microvia_drill": 0.1,
|
||||
"name": "power",
|
||||
"pcb_color": "rgba(0, 0, 0, 0.000)",
|
||||
"priority": 0,
|
||||
"schematic_color": "rgba(0, 0, 0, 0.000)",
|
||||
"track_width": 0.5,
|
||||
"via_diameter": 0.6,
|
||||
"via_drill": 0.3
|
||||
}
|
||||
],
|
||||
"meta": {
|
||||
"version": 4
|
||||
},
|
||||
"net_colors": null,
|
||||
"netclass_assignments": null,
|
||||
"netclass_patterns": [
|
||||
{
|
||||
"netclass": "power",
|
||||
"pattern": "+3.0V"
|
||||
},
|
||||
{
|
||||
"netclass": "power",
|
||||
"pattern": "unregulated_vcc"
|
||||
}
|
||||
]
|
||||
},
|
||||
"pcbnew": {
|
||||
"last_paths": {
|
||||
"gencad": "",
|
||||
"idf": "",
|
||||
"netlist": "",
|
||||
"plot": "../../v1_output/",
|
||||
"pos_files": "",
|
||||
"specctra_dsn": "",
|
||||
"step": "",
|
||||
"svg": "",
|
||||
"vrml": ""
|
||||
},
|
||||
"page_layout_descr_file": ""
|
||||
},
|
||||
"schematic": {
|
||||
"annotate_start_num": 0,
|
||||
"bom_export_filename": "",
|
||||
"bom_fmt_presets": [],
|
||||
"bom_fmt_settings": {
|
||||
"field_delimiter": ",",
|
||||
"keep_line_breaks": false,
|
||||
"keep_tabs": false,
|
||||
"name": "CSV",
|
||||
"ref_delimiter": ",",
|
||||
"ref_range_delimiter": "",
|
||||
"string_delimiter": "\""
|
||||
},
|
||||
"bom_presets": [],
|
||||
"bom_settings": {
|
||||
"exclude_dnp": false,
|
||||
"fields_ordered": [
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Reference",
|
||||
"name": "Reference",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "Value",
|
||||
"name": "Value",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Datasheet",
|
||||
"name": "Datasheet",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Footprint",
|
||||
"name": "Footprint",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": false,
|
||||
"label": "Qty",
|
||||
"name": "${QUANTITY}",
|
||||
"show": true
|
||||
},
|
||||
{
|
||||
"group_by": true,
|
||||
"label": "DNP",
|
||||
"name": "${DNP}",
|
||||
"show": true
|
||||
}
|
||||
],
|
||||
"filter_string": "",
|
||||
"group_symbols": true,
|
||||
"include_excluded_from_bom": false,
|
||||
"name": "Grouped By Value",
|
||||
"sort_asc": true,
|
||||
"sort_field": "Reference"
|
||||
},
|
||||
"connection_grid_size": 50.0,
|
||||
"drawing": {
|
||||
"dashed_lines_dash_length_ratio": 12.0,
|
||||
"dashed_lines_gap_length_ratio": 3.0,
|
||||
"default_line_thickness": 6.0,
|
||||
"default_text_size": 50.0,
|
||||
"field_names": [],
|
||||
"intersheets_ref_own_page": false,
|
||||
"intersheets_ref_prefix": "",
|
||||
"intersheets_ref_short": false,
|
||||
"intersheets_ref_show": false,
|
||||
"intersheets_ref_suffix": "",
|
||||
"junction_size_choice": 3,
|
||||
"label_size_ratio": 0.375,
|
||||
"operating_point_overlay_i_precision": 3,
|
||||
"operating_point_overlay_i_range": "~A",
|
||||
"operating_point_overlay_v_precision": 3,
|
||||
"operating_point_overlay_v_range": "~V",
|
||||
"overbar_offset_ratio": 1.23,
|
||||
"pin_symbol_size": 25.0,
|
||||
"text_offset_ratio": 0.15
|
||||
},
|
||||
"legacy_lib_dir": "",
|
||||
"legacy_lib_list": [],
|
||||
"meta": {
|
||||
"version": 1
|
||||
},
|
||||
"net_format_name": "",
|
||||
"ngspice": {
|
||||
"fix_include_paths": true,
|
||||
"meta": {
|
||||
"version": 0
|
||||
},
|
||||
"model_mode": 4,
|
||||
"workbook_filename": ""
|
||||
},
|
||||
"page_layout_descr_file": "",
|
||||
"plot_directory": "",
|
||||
"space_save_all_events": true,
|
||||
"spice_current_sheet_as_root": false,
|
||||
"spice_external_command": "spice \"%I\"",
|
||||
"spice_model_current_sheet_as_root": true,
|
||||
"spice_save_all_currents": false,
|
||||
"spice_save_all_dissipations": false,
|
||||
"spice_save_all_voltages": false,
|
||||
"subpart_first_id": 65,
|
||||
"subpart_id_separator": 0
|
||||
},
|
||||
"sheets": [
|
||||
[
|
||||
"87333522-7f73-498a-afdc-76bd376ba27f",
|
||||
"Root"
|
||||
]
|
||||
],
|
||||
"text_variables": {}
|
||||
}
|
@ -1,56 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
# Based on https://github.com/KiCad/kicad-source-mirror/blob/master/demos/python_scripts_examples/gen_gerber_and_drill_files_board.py
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
from pcbnew import *
|
||||
|
||||
def help():
|
||||
print("Usage: kicadExportDxf.py <board file> [<output dir>]")
|
||||
print(" Default output dir same as the board directory'")
|
||||
|
||||
if len(sys.argv) == 1 or len(sys.argv) > 3:
|
||||
print("Invalid number of arguments.")
|
||||
help()
|
||||
sys.exit()
|
||||
|
||||
filename = sys.argv[1]
|
||||
basename = os.path.dirname(filename)
|
||||
if len(sys.argv) == 3:
|
||||
plotDir = sys.argv[2]
|
||||
else:
|
||||
plotDir = basename
|
||||
plotDir = os.path.abspath(plotDir)
|
||||
|
||||
board = LoadBoard(filename)
|
||||
|
||||
pctl = PLOT_CONTROLLER(board)
|
||||
popt = pctl.GetPlotOptions()
|
||||
|
||||
popt.SetOutputDirectory(plotDir)
|
||||
popt.SetAutoScale(False)
|
||||
popt.SetScale(1)
|
||||
popt.SetMirror(False)
|
||||
popt.SetExcludeEdgeLayer(True)
|
||||
popt.SetScale(1)
|
||||
popt.SetDXFPlotUnits(DXF_PLOTTER.DXF_UNIT_MILLIMETERS)
|
||||
popt.SetDXFPlotPolygonMode(False)
|
||||
|
||||
plot_plan = [
|
||||
# name, id, comment
|
||||
("PasteBottom", B_Paste, "Paste Bottom"),
|
||||
("PasteTop", F_Paste, "Paste top"),
|
||||
("EdgeCuts", Edge_Cuts, "Edges"),
|
||||
]
|
||||
|
||||
for name, id, comment in plot_plan:
|
||||
pctl.SetLayer(id)
|
||||
pctl.OpenPlotfile(name, PLOT_FORMAT_DXF, comment)
|
||||
print('plot {}'.format(pctl.GetPlotFileName()))
|
||||
if pctl.PlotLayer() == False:
|
||||
print("plot error")
|
||||
pctl.ClosePlot()
|
||||
|
||||
sys.exit(0)
|
@ -1,48 +0,0 @@
|
||||
module stencilFrame(outlineDxf, height, width, clearance) {
|
||||
linear_extrude(height = height)
|
||||
difference() {
|
||||
offset(r = width + clearance) import(file = outlineDxf);
|
||||
offset(r = clearance) import(file = outlineDxf);
|
||||
};
|
||||
};
|
||||
|
||||
module stencilSubstrate(outlineDxf, thickness, frameHeight,
|
||||
frameWidth, frameClearance)
|
||||
{
|
||||
difference() {
|
||||
linear_extrude(height = thickness + frameHeight)
|
||||
offset(r = frameWidth + frameClearance)
|
||||
import(file = outlineDxf);
|
||||
translate([0, 0, thickness])
|
||||
linear_extrude(height = thickness + frameHeight)
|
||||
offset(r = frameClearance)
|
||||
import(file = outlineDxf);
|
||||
}
|
||||
}
|
||||
|
||||
module stencil(outlineDxf, holesDxf, thickness = 0.2, frameHeight = 1,
|
||||
frameWidth = 1, frameClearance = 0.1, enlargeHoles = 0.05, front = true)
|
||||
{
|
||||
zScale = front ? -1 : 1;
|
||||
xRotate = front ? 180 : 0;
|
||||
rotate(a = xRotate, v = [1, 0, 0])
|
||||
difference() {
|
||||
scale([1, 1, zScale]) stencilSubstrate(outlineDxf, thickness,
|
||||
frameHeight, frameWidth, frameClearance);
|
||||
linear_extrude(height = 4 * thickness, center = true)
|
||||
offset(delta = enlargeHoles) import(file = holesDxf);
|
||||
};
|
||||
}
|
||||
|
||||
$fa = 0.4;
|
||||
$fs = 0.4;
|
||||
thickness = 0.2;
|
||||
frameHeight = 1;
|
||||
frameWidth = 2;
|
||||
enlargeHoles = 0.0;
|
||||
frameClearance = 0;
|
||||
|
||||
front = true;
|
||||
|
||||
stencil("../stm32card-Edge_Cuts.dxf", "../stm32card-F_Paste.dxf", thickness = thickness, frameHeight = frameHeight,
|
||||
frameWidth = frameWidth, frameClearance = frameClearance, front=front);
|
@ -1,36 +0,0 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
|
||||
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
version="1.1"
|
||||
width="297.0022mm" height="210.0072mm" viewBox="0.0000 0.0000 297.0022 210.0072">
|
||||
<title>SVG Image created as stm32card-Edge_Cuts.svg date 2025/09/11 14:25:54 </title>
|
||||
<desc>Image generated by PCBNEW </desc>
|
||||
<g style="fill:#000000; fill-opacity:1.0000;stroke:#000000; stroke-opacity:1.0000;
|
||||
stroke-linecap:round; stroke-linejoin:round;"
|
||||
transform="translate(0 0) scale(1 1)">
|
||||
</g>
|
||||
<g style="fill:none;
|
||||
stroke:#000000; stroke-width:0.0500; stroke-opacity:1;
|
||||
stroke-linecap:round; stroke-linejoin:round;">
|
||||
<path d="M137.5645 132.3355
|
||||
L216.4645 132.3355
|
||||
" />
|
||||
<path d="M132.5645 127.3355 A5.0000 5.0000 0.0 0 0 137.5645 132.3355" />
|
||||
<path d="M132.5645 86.5355
|
||||
L132.5645 127.3355
|
||||
" />
|
||||
<path d="M221.4645 86.5355 A5.0000 5.0000 0.0 0 0 216.4645 81.5355" />
|
||||
<path d="M221.4645 127.3355
|
||||
L221.4645 86.5355
|
||||
" />
|
||||
<path d="M216.4645 81.5355
|
||||
L137.5645 81.5355
|
||||
" />
|
||||
<path d="M137.5645 81.5355 A4.9999 4.9999 0.0 0 0 132.5645 86.5355" />
|
||||
<path d="M216.4645 132.3356 A5.0001 5.0001 0.0 0 0 221.4645 127.3355" />
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.3 KiB |
Before Width: | Height: | Size: 124 KiB |
Before Width: | Height: | Size: 79 KiB |
Before Width: | Height: | Size: 404 KiB |
BIN
pcb_qrcode.png
Before Width: | Height: | Size: 946 B |
327
pcb_qrcode.svg
@ -1,327 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<!-- Created with qrencode 4.1.1 (https://fukuchi.org/works/qrencode/index.html) -->
|
||||
<svg width="3.49cm" height="3.49cm" viewBox="0 0 33 33" preserveAspectRatio="none" version="1.1" xmlns="http://www.w3.org/2000/svg">
|
||||
<g id="QRcode">
|
||||
<rect x="0" y="0" width="33" height="33" fill="#ffffff"/>
|
||||
<g id="Pattern" transform="translate(4,4)">
|
||||
<rect x="0" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="5" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="0" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="13" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="1" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="2" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="3" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="4" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="5" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="5" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="6" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="7" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="7" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="7" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="7" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="7" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="7" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="13" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="8" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="9" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="9" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="9" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="9" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="9" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="9" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="9" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="9" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="5" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="13" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="10" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="13" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="11" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="17" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="12" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="5" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="7" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="13" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="17" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="13" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="7" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="13" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="17" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="14" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="15" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="5" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="7" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="13" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="17" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="16" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="13" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="17" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="5" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="18" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="19" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="17" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="18" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="20" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="11" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="21" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="17" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="20" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="22" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="22" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="23" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="23" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="23" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="23" width="1" height="1" fill="#000000"/>
|
||||
<rect x="14" y="23" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="23" width="1" height="1" fill="#000000"/>
|
||||
<rect x="21" y="23" width="1" height="1" fill="#000000"/>
|
||||
<rect x="0" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="1" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="2" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="3" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="4" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="5" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="6" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="8" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="9" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="10" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="12" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="15" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="16" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="17" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="19" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="23" y="24" width="1" height="1" fill="#000000"/>
|
||||
<rect x="24" y="24" width="1" height="1" fill="#000000"/>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 19 KiB |
BIN
preview.png
Before Width: | Height: | Size: 466 KiB |
@ -1 +0,0 @@
|
||||
/home/indigo/.unison/stm32_buisnesscard.prf
|