Skip to content

Commit 23443df

Browse files
committed
Initial commit
0 parents  commit 23443df

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+65749
-0
lines changed

.github/FUNDING.yml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# These are supported funding model platforms
2+
3+
github: oxplot
4+
patreon: oxplot
5+
open_collective: oxplot
6+
ko_fi: oxplot
7+
issuehunt: oxplot

.github/social.png

132 KB
Loading

LICENSE

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
Copyright (c) 2020, Mansour Behabadi <[email protected]>
2+
All rights reserved.
3+
4+
Redistribution and use in source and binary forms, with or without
5+
modification, are permitted provided that the following conditions are met:
6+
* Redistributions of source code must retain the above copyright
7+
notice, this list of conditions and the following disclaimer.
8+
* Redistributions in binary form must reproduce the above copyright
9+
notice, this list of conditions and the following disclaimer in the
10+
documentation and/or other materials provided with the distribution.
11+
* Neither the name of the <organization> nor the
12+
names of its contributors may be used to endorse or promote products
13+
derived from this software without specific prior written permission.
14+
15+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16+
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17+
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18+
DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
19+
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20+
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21+
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22+
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23+
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Readme.md

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# fpx: easy USB-C power for all your devices
2+
3+
This repository contains the hardware design and firmware for [fpx
4+
module](https://fpx.oxplot.com).
5+
6+
## Hardware
7+
8+
Main enabling component of fpx is
9+
[STUSB4500](https://blog.oxplot.com/usb-pd-standalone-sink-controller/)
10+
standalone USB-PD IC by STMicroelectronics.
11+
12+
The rest are supporting components and an AVR ATtiny 186 which programs
13+
the NVM flash on STUSB4500 by converting configuration read from
14+
a light sensor.
15+
16+
[The KiCad files](./board) are verified for manufacturing, and include
17+
all the part numbers.
18+
19+
## Firmware
20+
21+
[The firmware](./firmware) is written as a single C file with no
22+
interrupts and provided as an Atmel Studio solution. It should however
23+
be easily buildable by GNU toolchain. The source is well commented and
24+
self-documenting.
25+
26+
## Configuration
27+
28+
The [main configuration tool](https://fpx.oxplot.com/#configure) exists
29+
in the form of a web page. The Javascript part of the page documents the
30+
encoding used to transfer configuration using light flashes.
31+
32+
Due to its simplicity, the configuration tool can be ported to any
33+
device/platform that can pulse light with a reasonable timing accuracy
34+
(e.g. Arduino).

board/.gitignore

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Temporary files
2+
*.000
3+
*.bak
4+
*.bck
5+
*.kicad_pcb-bak
6+
*.sch-bak
7+
*~
8+
_autosave-*
9+
*.tmp
10+
*-save.pro
11+
*-save.kicad_pcb
12+
fp-info-cache
13+
14+
# Netlist files (exported from Eeschema)
15+
*.net
16+
17+
# Autorouter files (exported from Pcbnew)
18+
*.dsn
19+
*.ses
20+
21+
# Exported BOM files
22+
*.xml
23+
*.csv

board/1610.kicad_mod

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
(module 1610 (layer F.Cu) (tedit 5E9D0CE8)
2+
(attr smd)
3+
(fp_text reference REF** (at 0.02794 2.9591) (layer F.SilkS)
4+
(effects (font (size 1 1) (thickness 0.15)))
5+
)
6+
(fp_text value 1610 (at -0.31242 -2.43332) (layer F.Fab)
7+
(effects (font (size 1 1) (thickness 0.15)))
8+
)
9+
(fp_line (start -0.81788 -0.51562) (end 0.76454 -0.51562) (layer F.SilkS) (width 0.15))
10+
(fp_line (start -0.81788 0.56388) (end 0.76454 0.56388) (layer F.SilkS) (width 0.15))
11+
(fp_line (start 0.16764 -0.26924) (end -0.12954 0.02794) (layer F.SilkS) (width 0.15))
12+
(fp_line (start -0.12954 0.02794) (end 0.17018 0.32766) (layer F.SilkS) (width 0.15))
13+
(fp_line (start 0.17018 0.32766) (end 0.17018 -0.26416) (layer F.SilkS) (width 0.15))
14+
(fp_line (start -0.18542 0.32766) (end -0.18542 -0.26416) (layer F.SilkS) (width 0.15))
15+
(fp_line (start -0.92456 -0.37846) (end 0.87884 -0.37846) (layer F.Fab) (width 0.1))
16+
(fp_line (start 0.87884 -0.37846) (end 0.87884 0.4191) (layer F.Fab) (width 0.1))
17+
(fp_line (start 0.87884 0.4191) (end -0.92456 0.4191) (layer F.Fab) (width 0.1))
18+
(fp_line (start -0.92456 0.4191) (end -0.92456 -0.37846) (layer F.Fab) (width 0.1))
19+
(fp_text user REF** (at 0.04064 0.0762) (layer F.Fab)
20+
(effects (font (size 1 1) (thickness 0.15)))
21+
)
22+
(fp_line (start -1.10744 -0.62484) (end 1.12268 -0.62484) (layer F.CrtYd) (width 0.05))
23+
(fp_line (start 1.143 -0.61976) (end 1.143 0.74676) (layer F.CrtYd) (width 0.05))
24+
(fp_line (start 1.13284 0.74168) (end -1.1176 0.74168) (layer F.CrtYd) (width 0.05))
25+
(fp_line (start -1.11252 0.7366) (end -1.11252 -0.62992) (layer F.CrtYd) (width 0.05))
26+
(pad 1 smd rect (at -0.6477 0.0254) (size 0.55 0.8) (layers F.Cu F.Paste F.Mask))
27+
(pad 2 smd rect (at 0.6023 0.0254) (size 0.55 0.8) (layers F.Cu F.Paste F.Mask))
28+
(model ${KISYS3DMOD}/Diode_SMD.3dshapes/D_0603_1608Metric.wrl
29+
(at (xyz 0 0 0))
30+
(scale (xyz 1 1 1))
31+
(rotate (xyz 0 0 0))
32+
)
33+
)

board/MOLEX_105450-0101.kicad_mod

+54
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
(module MOLEX_105450-0101 (layer F.Cu) (tedit 5ED3852B)
2+
(fp_text reference REF** (at -1.899125 -5.722835) (layer F.SilkS)
3+
(effects (font (size 1.003598 1.003598) (thickness 0.015)))
4+
)
5+
(fp_text value MOLEX_105450-0101 (at 5.748805 5.717805) (layer F.Fab)
6+
(effects (font (size 1.003504 1.003504) (thickness 0.015)))
7+
)
8+
(fp_poly (pts (xy -3.50081 -1.88) (xy 3.5 -1.88) (xy 3.5 3.77087) (xy -3.50081 3.77087)) (layer Dwgs.User) (width 0.01))
9+
(fp_line (start -4.47 3.95) (end 4.47 3.95) (layer F.Fab) (width 0.127))
10+
(fp_line (start 4.47 3.95) (end 4.47 -3.95) (layer F.Fab) (width 0.127))
11+
(fp_line (start 4.47 -3.95) (end -4.47 -3.95) (layer F.Fab) (width 0.127))
12+
(fp_line (start -4.47 -3.95) (end -4.47 3.95) (layer F.Fab) (width 0.127))
13+
(fp_line (start -5.22 -4.71) (end 5.22 -4.71) (layer F.CrtYd) (width 0.05))
14+
(fp_line (start 5.22 -4.71) (end 5.22 4.2) (layer F.CrtYd) (width 0.05))
15+
(fp_line (start 5.22 4.2) (end -5.22 4.2) (layer F.CrtYd) (width 0.05))
16+
(fp_line (start -5.22 4.2) (end -5.22 -4.71) (layer F.CrtYd) (width 0.05))
17+
(fp_line (start -4.47 3.77) (end 4.47 3.77) (layer F.SilkS) (width 0.127))
18+
(fp_line (start -4.47 0.3) (end -4.47 -1.9) (layer F.SilkS) (width 0.127))
19+
(fp_line (start 4.47 0.3) (end 4.47 -1.9) (layer F.SilkS) (width 0.127))
20+
(fp_poly (pts (xy -3.50241 -1.88) (xy 3.5 -1.88) (xy 3.5 3.7726) (xy -3.50241 3.7726)) (layer Dwgs.User) (width 0.01))
21+
(pad A1 smd rect (at -3 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
22+
(pad A2 smd rect (at -2.5 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
23+
(pad A3 smd rect (at -2 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
24+
(pad A4 smd rect (at -1.5 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
25+
(pad A5 smd rect (at -1 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
26+
(pad A6 smd rect (at -0.5 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
27+
(pad A7 smd rect (at 0.5 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
28+
(pad A8 smd rect (at 1 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
29+
(pad A9 smd rect (at 1.5 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
30+
(pad A10 smd rect (at 2 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
31+
(pad A11 smd rect (at 2.5 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
32+
(pad A12 smd rect (at 3 -3.77) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
33+
(pad B1 smd rect (at 3.1 -2.47) (size 1 0.7) (layers F.Cu F.Paste F.Mask))
34+
(pad B2 smd rect (at 2.25 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
35+
(pad B3 smd rect (at 1.75 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
36+
(pad B4 smd rect (at 1.25 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
37+
(pad B5 smd rect (at 0.75 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
38+
(pad B6 smd rect (at 0.25 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
39+
(pad B7 smd rect (at -0.25 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
40+
(pad B8 smd rect (at -0.75 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
41+
(pad B9 smd rect (at -1.25 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
42+
(pad B10 smd rect (at -1.75 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
43+
(pad B11 smd rect (at -2.25 -2.47) (size 0.3 0.7) (layers F.Cu F.Paste F.Mask))
44+
(pad B12 smd rect (at -3.1 -2.47) (size 1 0.7) (layers F.Cu F.Paste F.Mask))
45+
(pad S1 thru_hole oval (at -4.32 -3.36) (size 1 2) (drill oval 0.6 1.6) (layers *.Cu *.Paste *.Mask))
46+
(pad S1 thru_hole oval (at 4.32 -3.36) (size 1 2) (drill oval 0.6 1.6) (layers *.Cu *.Paste *.Mask))
47+
(pad S1 thru_hole oval (at -4.32 2) (size 1 2.5) (drill oval 0.6 2.1) (layers *.Cu *.Paste *.Mask))
48+
(pad S1 thru_hole oval (at 4.32 2) (size 1 2.5) (drill oval 0.6 2.1) (layers *.Cu *.Paste *.Mask))
49+
(model ${KIPRJMOD}/MOLEX_105450-0101.step
50+
(at (xyz 0 0 0))
51+
(scale (xyz 1 1 1))
52+
(rotate (xyz -90 0 0))
53+
)
54+
)

0 commit comments

Comments
 (0)