breadkit 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/.codespellignore +2 -0
  3. data/.yamllint +16 -0
  4. data/README.md +109 -6
  5. data/data/boards/double_full.yml +18 -0
  6. data/data/boards/stripboard.yml +9 -0
  7. data/data/boards/universal.yml +8 -0
  8. data/data/parts/2n3904.yml +11 -0
  9. data/data/parts/2n7000_onsemi_to92.yml +10 -0
  10. data/data/parts/74hc00.yml +22 -0
  11. data/data/parts/74hc04.yml +22 -0
  12. data/data/parts/74hc08.yml +22 -0
  13. data/data/parts/74hc14.yml +22 -0
  14. data/data/parts/74hc165.yml +24 -0
  15. data/data/parts/74hc32.yml +22 -0
  16. data/data/parts/74hc595.yml +24 -0
  17. data/data/parts/active_buzzer.yml +8 -0
  18. data/data/parts/ams1117_3v3.yml +12 -0
  19. data/data/parts/arduino_nano.yml +70 -0
  20. data/data/parts/arduino_uno.yml +29 -26
  21. data/data/parts/atmega328p.yml +37 -0
  22. data/data/parts/attiny85.yml +16 -0
  23. data/data/parts/battery_box.yml +8 -0
  24. data/data/parts/cd4017.yml +24 -0
  25. data/data/parts/ck_bd04.yml +29 -0
  26. data/data/parts/crystal.yml +7 -0
  27. data/data/parts/dc_jack_2wire.yml +8 -0
  28. data/data/parts/diode.yml +1 -0
  29. data/data/parts/esp32_devkitc_v4_wroom32e.yml +86 -0
  30. data/data/parts/irlz44n.yml +10 -0
  31. data/data/parts/l293d.yml +24 -0
  32. data/data/parts/led.yml +1 -0
  33. data/data/parts/lm358.yml +16 -0
  34. data/data/parts/lm393.yml +16 -0
  35. data/data/parts/ne555.yml +2 -2
  36. data/data/parts/ntc_thermistor.yml +7 -0
  37. data/data/parts/photoresistor.yml +8 -0
  38. data/data/parts/pico.yml +89 -0
  39. data/data/parts/resistor.yml +1 -0
  40. data/data/parts/sc56_11ewa.yml +30 -0
  41. data/data/parts/seeed_xiao_samd21.yml +37 -0
  42. data/data/parts/shillehtek_mb102_4pin.yml +23 -0
  43. data/data/parts/slide_switch_spst.yml +8 -0
  44. data/data/parts/sparkfun_pro_micro_5v.yml +58 -0
  45. data/data/parts/transistor.yml +0 -1
  46. data/data/parts/ua7805.yml +10 -0
  47. data/data/parts/uln2003a.yml +23 -0
  48. data/data/parts/wp154a4sureqbfzgc.yml +11 -0
  49. data/docs/CLI.md +108 -0
  50. data/docs/COMPATIBILITY.md +60 -0
  51. data/docs/DECLARATIVE.md +138 -0
  52. data/docs/IR.md +42 -0
  53. data/docs/JUMPER_KIT.md +45 -0
  54. data/docs/LOCK.md +75 -0
  55. data/docs/LSP.md +59 -0
  56. data/docs/MB102_POWER.md +11 -0
  57. data/docs/MCP.md +44 -0
  58. data/docs/RAKE.md +19 -0
  59. data/docs/dsl.md +197 -6
  60. data/exe/breadkit-lsp +13 -0
  61. data/exe/breadkit-mcp +12 -0
  62. data/lib/breadkit/analysis.rb +174 -50
  63. data/lib/breadkit/board.rb +152 -4
  64. data/lib/breadkit/cli.rb +229 -13
  65. data/lib/breadkit/color.rb +38 -0
  66. data/lib/breadkit/dc_analysis.rb +261 -0
  67. data/lib/breadkit/dsl.rb +205 -24
  68. data/lib/breadkit/exporters.rb +202 -0
  69. data/lib/breadkit/formatter.rb +52 -0
  70. data/lib/breadkit/fritzing_export.rb +256 -0
  71. data/lib/breadkit/ir.rb +154 -22
  72. data/lib/breadkit/jumper_kit.rb +127 -0
  73. data/lib/breadkit/lsp_server.rb +248 -0
  74. data/lib/breadkit/mcp_server.rb +133 -0
  75. data/lib/breadkit/model.rb +47 -5
  76. data/lib/breadkit/part_library.rb +156 -3
  77. data/lib/breadkit/part_lock.rb +107 -0
  78. data/lib/breadkit/patterns.rb +119 -0
  79. data/lib/breadkit/rake_task.rb +25 -0
  80. data/lib/breadkit/resolver.rb +160 -28
  81. data/lib/breadkit/structured_input.rb +275 -0
  82. data/lib/breadkit/templates/555.bk.rb +34 -0
  83. data/lib/breadkit/templates/arduino.bk.rb +17 -0
  84. data/lib/breadkit/templates/led.bk.rb +21 -0
  85. data/lib/breadkit/value.rb +42 -3
  86. data/lib/breadkit/version.rb +1 -1
  87. data/lib/breadkit/wire_suggestions.rb +106 -0
  88. data/lib/breadkit.rb +28 -3
  89. data/package.json +1 -1
  90. data/schema/board-v1.json +38 -0
  91. data/schema/ir-v1.json +56 -11
  92. data/schema/ir-v2.json +173 -0
  93. data/schema/part-v1.json +52 -4
  94. data/sig/breadkit.rbs +107 -5
  95. metadata +119 -14
  96. data/docs/assets/01_led_button.svg +0 -12
  97. data/site/assets/01_led_button.svg +0 -14
  98. data/site/assets/03_arduino_blink.svg +0 -14
  99. data/site/favicon.svg +0 -7
  100. data/site/guide/components/index.html +0 -113
  101. data/site/guide/dsl/index.html +0 -132
  102. data/site/guide/index.html +0 -163
  103. data/site/index.html +0 -95
  104. data/site/styles.css +0 -14
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 233212f063c6709cfaa93b8243125e71a80fd0bfb75b1904e4b989b40cd68c0a
4
- data.tar.gz: e665337ec30e9f01baca29c27d66ab819d4c398533cb97d3d04d4c5a7edbeae6
3
+ metadata.gz: 0d260ec0ed4e1c801bca1cef667f8744801c873b3030d0b0374b55ba792e1c39
4
+ data.tar.gz: e3385f84d1c1db667220610c88b92aaccf6418764848fbd25e48b28803a6b650
5
5
  SHA512:
6
- metadata.gz: 0d0bb60ddd1caba719db069e196aee4babb237b534451276763ca04c5f3c40534ebb17b8727bc7b95b0bdabcbaad44c462d8b20d8331e8f835c65b65e5650518
7
- data.tar.gz: 313859b4d73d837d2b734ca2bbc613c263d38efb40ac5b4ec8e6c058863aff52e3a86b1d6f7bbda37062d5452b308ec55783896fbfa6e9561687060733510145
6
+ metadata.gz: e0f7b8dfe9bc040913684edd4dd33bdb8f08faa0a8d4a87d660d8c44945d445db2dc6fc15df1e533f7212a18d063ce189f28359877ed0a92aa54ea451ccf665d
7
+ data.tar.gz: '08ddeeed6aafd4324d55d56432af21f457d28308ebb151459096806e31f5d8f0ba37cf635b5c4eb79bd51df21941568786d07321a09fa37204df42680c3442d4'
data/.codespellignore ADDED
@@ -0,0 +1,2 @@
1
+ registor
2
+ SER
data/.yamllint ADDED
@@ -0,0 +1,16 @@
1
+ extends: default
2
+ ignore: |
3
+ build/
4
+ node_modules/
5
+ runtime/build/
6
+ tmp/
7
+ **/*.dSYM/**
8
+
9
+ rules:
10
+ comments:
11
+ min-spaces-from-content: 1
12
+ document-start: disable
13
+ line-length:
14
+ max: 200
15
+ truthy:
16
+ check-keys: false
data/README.md CHANGED
@@ -1,16 +1,119 @@
1
- # breadkit
1
+ <p align="center">
2
+ <img src="site/favicon.svg" width="72" height="72" alt="">
3
+ </p>
2
4
 
3
- `breadkit` provides the Ruby DSL, board and part definitions, connectivity analysis, and JSON IR used by [`breadkit-render`](https://github.com/breadkit/breadkit-render) and [`breadkit-lint`](https://github.com/breadkit/breadkit-lint).
5
+ <h1 align="center">breadkit</h1>
4
6
 
5
- Project site: https://breadkit.github.io/breadkit/
7
+ <p align="center">
8
+ <strong>Describe breadboard circuits in Ruby, YAML, or TOML. See how every connection fits together.</strong>
9
+ </p>
10
+
11
+ <p align="center">
12
+ <a href="https://rubygems.org/gems/breadkit"><img src="https://img.shields.io/gem/v/breadkit.svg" alt="RubyGems version"></a>
13
+ <a href="https://github.com/breadkit/breadkit/actions/workflows/ci.yml"><img src="https://github.com/breadkit/breadkit/actions/workflows/ci.yml/badge.svg" alt="CI status"></a>
14
+ <img src="https://img.shields.io/badge/Ruby-%3E%3D%203.3-CC342D.svg" alt="Ruby 3.3 or newer">
15
+ <a href="LICENSE.txt"><img src="https://img.shields.io/badge/license-MIT-blue.svg" alt="MIT license"></a>
16
+ </p>
17
+
18
+ Breadkit resolves board holes, part pins, wires, and switch states into connected
19
+ nets. It exports JSON IR for other tools and checks declared connection intent.
20
+
21
+ <p align="center">
22
+ <img src="site/assets/05_sensor_demo.png" width="700" alt="RP2040 breadboard circuit with an OLED, two SHT31 sensors, switches, and IR modules">
23
+ </p>
24
+
25
+ <p align="center">
26
+ <a href="examples/05_sensor_demo.bk.rb">Circuit source</a> ·
27
+ <a href="https://breadkit.github.io/breadkit-render/images/sensor-demo.svg">Explore its layers</a>
28
+ </p>
29
+
30
+ ## Quick start
31
+
32
+ Install with Ruby 3.3 or newer:
6
33
 
7
34
  ```sh
8
35
  gem install breadkit
36
+ ```
37
+
38
+ Save this as `circuit.bk.rb`:
39
+
40
+ ```ruby
41
+ title "Button and LED"
42
+ board :half
43
+
44
+ supply :USB, voltage: 5.0, plus: "B+1", minus: "B-1"
45
+ net :VCC, at: "B+1"
46
+ net :GND, at: "B-1"
47
+
48
+ button :SW1, at: "e10"
49
+ resistor :R1, "330", pins: %w[a12 a16]
50
+ led :D1, color: :red, anode: "b16", cathode: "b17"
51
+
52
+ wire "a10", "B+", color: :red
53
+ wire "a17", "B-", color: :black
54
+ ```
55
+
56
+ ```sh
9
57
  breadkit nets circuit.bk.rb
10
58
  breadkit ir circuit.bk.rb > circuit.json
11
- breadkit parts
12
59
  ```
13
60
 
14
- Ruby DSL files execute as code. Load only trusted files; use IR JSON for data-only input.
61
+ This README follows main (0.2.0). If `breadkit --version` shows an older
62
+ published release, use the [source checkout](#development) for newer features.
63
+ The same circuit is available in [YAML](examples/06_declarative_led.bk.yml) and
64
+ [TOML](examples/07_declarative_led.bk.toml).
65
+
66
+ ## Layered module example
67
+
68
+ The [sensor demo](examples/05_sensor_demo.bk.rb) combines an RP2040 module with
69
+ an OLED, two SHT31 sensors, switches, and IR modules. Its `layer:` declarations
70
+ group parts and wires in the interactive SVG. These lines are from the full
71
+ example:
72
+
73
+ ```ruby
74
+ offboard :OLED, :ssd1306_oled, side: :right, at: "a7", address: "0x3C", layer: "2 I2C"
75
+ offboard :SHT31A, :sht31, side: :right, at: "a12", address: "0x44", unused: ["ALR"], layer: "2 I2C"
76
+ offboard :SHT31B, :sht31, side: :right, at: "a19", address: "0x45", unused: ["ALR"], layer: "2 I2C"
77
+
78
+ wire "j5", "T+5", color: "#E24B4A", layer: "1 Power"
79
+ wire "OLED.SDA", "g24", color: "#378ADD", route: :edge, layer: "2 I2C"
80
+ ```
81
+
82
+ Run `bundle exec ruby exe/breadkit nets examples/05_sensor_demo.bk.rb` from a
83
+ source checkout to inspect the full circuit. The optional 5 V emitter layer is
84
+ an alternative: disconnect its 3.3 V feed before using it.
85
+
86
+ ## Explore
87
+
88
+ - [User guide](https://breadkit.github.io/breadkit/guide/) and [circuit gallery](https://breadkit.github.io/breadkit/gallery/)
89
+ - [DSL reference](https://breadkit.github.io/breadkit/guide/dsl/) and [component catalog](https://breadkit.github.io/breadkit/guide/components/)
90
+ - [CLI reference](docs/CLI.md), [YAML/TOML guide](docs/DECLARATIVE.md), and [JSON IR](docs/IR.md)
91
+ - [Browser Playground](https://breadkit.github.io/breadkit/playground/) and [editor integration](docs/LSP.md)
92
+ - [MCP server](docs/MCP.md), [Rake task](docs/RAKE.md), [jumper kit](docs/JUMPER_KIT.md), and [definition lockfile](docs/LOCK.md)
93
+
94
+ The companion repositories are [breadkit-render](https://github.com/breadkit/breadkit-render)
95
+ for diagrams, [breadkit-lint](https://github.com/breadkit/breadkit-lint)
96
+ for circuit checks, [breadkit-rspec](https://github.com/breadkit/breadkit-rspec)
97
+ for connection matchers, and [breadkit-parts](https://github.com/breadkit/breadkit-parts)
98
+ for model-specific definitions. Each gem is released independently.
99
+
100
+ Ruby DSL files execute code; load only files you trust. YAML, TOML, and JSON IR
101
+ are parsed as data.
102
+
103
+ ## Development
104
+
105
+ ```sh
106
+ git clone https://github.com/breadkit/breadkit.git
107
+ cd breadkit
108
+ bundle install
109
+ bundle exec ruby exe/breadkit nets examples/01_led_button.bk.rb
110
+ bundle exec rake
111
+ ```
112
+
113
+ Clone companion repositories beside this checkout when working on their main
114
+ branches. See the [compatibility policy](docs/COMPATIBILITY.md) before changing
115
+ a public data format.
116
+
117
+ ## License
15
118
 
16
- See the [user guide](https://breadkit.github.io/breadkit/guide/), [component catalog](https://breadkit.github.io/breadkit/guide/components/), [DSL reference](https://breadkit.github.io/breadkit/guide/dsl/), and [project design](docs/DESIGN.md).
119
+ [MIT](LICENSE.txt).
@@ -0,0 +1,18 @@
1
+ id: double_full
2
+ name: Double full-size breadboard (1660 tie points)
3
+ terminal:
4
+ columns: 126
5
+ rows: [a, b, c, d, e, f, g, h, i, j]
6
+ groups: [[a, b, c, d, e], [f, g, h, i, j]]
7
+ ravine_between: [e, f]
8
+ rails:
9
+ - {id: "T+", side: top, order: 0}
10
+ - {id: "T-", side: top, order: 1}
11
+ - {id: "B+", side: bottom, order: 1}
12
+ - {id: "B-", side: bottom, order: 0}
13
+ rail_layout:
14
+ holes: 100
15
+ group_size: 5
16
+ start_column: 3
17
+ segments: [[1, 50], [51, 100]]
18
+ split_segments: [[1, 25], [26, 50], [51, 75], [76, 100]]
@@ -0,0 +1,9 @@
1
+ id: stripboard
2
+ name: Stripboard (30 x 20 continuous copper rows)
3
+ terminal:
4
+ columns: 30
5
+ rows: [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t]
6
+ groups: [[a], [b], [c], [d], [e], [f], [g], [h], [i], [j], [k], [l], [m], [n], [o], [p], [q], [r], [s], [t]]
7
+ strip_direction: row
8
+ wire_attachment: solder
9
+ rails: []
@@ -0,0 +1,8 @@
1
+ id: universal
2
+ name: Universal perfboard (30 x 20 isolated pads)
3
+ terminal:
4
+ columns: 30
5
+ rows: [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t]
6
+ groups: [[a], [b], [c], [d], [e], [f], [g], [h], [i], [j], [k], [l], [m], [n], [o], [p], [q], [r], [s], [t]]
7
+ wire_attachment: solder
8
+ rails: []
@@ -0,0 +1,11 @@
1
+ # Onsemi 2N3904 TO-92 pin order (front view): emitter, base, collector.
2
+ # https://www.onsemi.com/download/data-sheet/pdf/2n3904-d.pdf
3
+ id: 2n3904
4
+ category: transistor
5
+ transistor_polarity: NPN
6
+ placement: leads
7
+ pins:
8
+ - {num: 1, name: emitter, aliases: [e]}
9
+ - {num: 2, name: base, aliases: [b]}
10
+ - {num: 3, name: collector, aliases: [c]}
11
+ render: {shape: generic}
@@ -0,0 +1,10 @@
1
+ # Onsemi TO-92 CASE 135AN; other manufacturers may use a different pin order.
2
+ # https://www.onsemi.com/pdf/datasheet/nds7002a-d.pdf
3
+ id: 2n7000_onsemi_to92
4
+ category: mosfet
5
+ placement: leads
6
+ pins:
7
+ - {num: 1, name: source, aliases: [s]}
8
+ - {num: 2, name: gate, aliases: [g]}
9
+ - {num: 3, name: drain, aliases: [d]}
10
+ render: {shape: generic}
@@ -0,0 +1,22 @@
1
+ # https://www.ti.com/lit/ds/symlink/sn74hc00.pdf
2
+ id: 74hc00
3
+ category: ic
4
+ placement: dip
5
+ package: {pins: 14}
6
+ pins:
7
+ - {num: 1, name: 1A, type: input}
8
+ - {num: 2, name: 1B, type: input}
9
+ - {num: 3, name: 1Y, type: output}
10
+ - {num: 4, name: 2A, type: input}
11
+ - {num: 5, name: 2B, type: input}
12
+ - {num: 6, name: 2Y, type: output}
13
+ - {num: 7, name: GND, type: ground}
14
+ - {num: 8, name: 3Y, type: output}
15
+ - {num: 9, name: 3A, type: input}
16
+ - {num: 10, name: 3B, type: input}
17
+ - {num: 11, name: 4Y, type: output}
18
+ - {num: 12, name: 4A, type: input}
19
+ - {num: 13, name: 4B, type: input}
20
+ - {num: 14, name: VCC, type: power}
21
+ supply_range: [2, 6]
22
+ render: {shape: dip, label: 74HC00}
@@ -0,0 +1,22 @@
1
+ # https://www.ti.com/lit/ds/symlink/sn74hc04.pdf
2
+ id: 74hc04
3
+ category: ic
4
+ placement: dip
5
+ package: {pins: 14}
6
+ pins:
7
+ - {num: 1, name: 1A, type: input}
8
+ - {num: 2, name: 1Y, type: output}
9
+ - {num: 3, name: 2A, type: input}
10
+ - {num: 4, name: 2Y, type: output}
11
+ - {num: 5, name: 3A, type: input}
12
+ - {num: 6, name: 3Y, type: output}
13
+ - {num: 7, name: GND, type: ground}
14
+ - {num: 8, name: 4Y, type: output}
15
+ - {num: 9, name: 4A, type: input}
16
+ - {num: 10, name: 5Y, type: output}
17
+ - {num: 11, name: 5A, type: input}
18
+ - {num: 12, name: 6Y, type: output}
19
+ - {num: 13, name: 6A, type: input}
20
+ - {num: 14, name: VCC, type: power}
21
+ supply_range: [2, 6]
22
+ render: {shape: dip, label: 74HC04}
@@ -0,0 +1,22 @@
1
+ # https://www.ti.com/lit/ds/symlink/sn74hc08.pdf
2
+ id: 74hc08
3
+ category: ic
4
+ placement: dip
5
+ package: {pins: 14}
6
+ pins:
7
+ - {num: 1, name: 1A, type: input}
8
+ - {num: 2, name: 1B, type: input}
9
+ - {num: 3, name: 1Y, type: output}
10
+ - {num: 4, name: 2A, type: input}
11
+ - {num: 5, name: 2B, type: input}
12
+ - {num: 6, name: 2Y, type: output}
13
+ - {num: 7, name: GND, type: ground}
14
+ - {num: 8, name: 3Y, type: output}
15
+ - {num: 9, name: 3A, type: input}
16
+ - {num: 10, name: 3B, type: input}
17
+ - {num: 11, name: 4Y, type: output}
18
+ - {num: 12, name: 4A, type: input}
19
+ - {num: 13, name: 4B, type: input}
20
+ - {num: 14, name: VCC, type: power}
21
+ supply_range: [2, 6]
22
+ render: {shape: dip, label: 74HC08}
@@ -0,0 +1,22 @@
1
+ # https://www.ti.com/lit/ds/symlink/sn74hc14.pdf
2
+ id: 74hc14
3
+ category: ic
4
+ placement: dip
5
+ package: {pins: 14}
6
+ pins:
7
+ - {num: 1, name: 1A, type: input}
8
+ - {num: 2, name: 1Y, type: output}
9
+ - {num: 3, name: 2A, type: input}
10
+ - {num: 4, name: 2Y, type: output}
11
+ - {num: 5, name: 3A, type: input}
12
+ - {num: 6, name: 3Y, type: output}
13
+ - {num: 7, name: GND, type: ground}
14
+ - {num: 8, name: 4Y, type: output}
15
+ - {num: 9, name: 4A, type: input}
16
+ - {num: 10, name: 5Y, type: output}
17
+ - {num: 11, name: 5A, type: input}
18
+ - {num: 12, name: 6Y, type: output}
19
+ - {num: 13, name: 6A, type: input}
20
+ - {num: 14, name: VCC, type: power}
21
+ supply_range: [2, 6]
22
+ render: {shape: dip, label: 74HC14}
@@ -0,0 +1,24 @@
1
+ # https://www.ti.com/lit/ds/symlink/sn74hc165.pdf
2
+ id: 74hc165
3
+ category: ic
4
+ placement: dip
5
+ package: {pins: 16}
6
+ pins:
7
+ - {num: 1, name: SH_LD, type: input}
8
+ - {num: 2, name: CLK, type: input}
9
+ - {num: 3, name: E, type: input}
10
+ - {num: 4, name: F, type: input}
11
+ - {num: 5, name: G, type: input}
12
+ - {num: 6, name: H, type: input}
13
+ - {num: 7, name: QH_INV, type: output}
14
+ - {num: 8, name: GND, type: ground}
15
+ - {num: 9, name: QH, type: output}
16
+ - {num: 10, name: SER, type: input}
17
+ - {num: 11, name: A, type: input}
18
+ - {num: 12, name: B, type: input}
19
+ - {num: 13, name: C, type: input}
20
+ - {num: 14, name: D, type: input}
21
+ - {num: 15, name: CLK_INH, type: input}
22
+ - {num: 16, name: VCC, type: power}
23
+ supply_range: [2, 6]
24
+ render: {shape: dip, label: 74HC165}
@@ -0,0 +1,22 @@
1
+ # https://www.ti.com/lit/ds/symlink/sn74hc32.pdf
2
+ id: 74hc32
3
+ category: ic
4
+ placement: dip
5
+ package: {pins: 14}
6
+ pins:
7
+ - {num: 1, name: 1A, type: input}
8
+ - {num: 2, name: 1B, type: input}
9
+ - {num: 3, name: 1Y, type: output}
10
+ - {num: 4, name: 2A, type: input}
11
+ - {num: 5, name: 2B, type: input}
12
+ - {num: 6, name: 2Y, type: output}
13
+ - {num: 7, name: GND, type: ground}
14
+ - {num: 8, name: 3Y, type: output}
15
+ - {num: 9, name: 3A, type: input}
16
+ - {num: 10, name: 3B, type: input}
17
+ - {num: 11, name: 4Y, type: output}
18
+ - {num: 12, name: 4A, type: input}
19
+ - {num: 13, name: 4B, type: input}
20
+ - {num: 14, name: VCC, type: power}
21
+ supply_range: [2, 6]
22
+ render: {shape: dip, label: 74HC32}
@@ -0,0 +1,24 @@
1
+ # https://www.ti.com/lit/ds/symlink/sn74hc595.pdf
2
+ id: 74hc595
3
+ category: ic
4
+ placement: dip
5
+ package: {pins: 16}
6
+ pins:
7
+ - {num: 1, name: QB, type: output}
8
+ - {num: 2, name: QC, type: output}
9
+ - {num: 3, name: QD, type: output}
10
+ - {num: 4, name: QE, type: output}
11
+ - {num: 5, name: QF, type: output}
12
+ - {num: 6, name: QG, type: output}
13
+ - {num: 7, name: QH, type: output}
14
+ - {num: 8, name: GND, type: ground}
15
+ - {num: 9, name: QH_SERIAL, type: output}
16
+ - {num: 10, name: SRCLR, type: input}
17
+ - {num: 11, name: SRCLK, type: input}
18
+ - {num: 12, name: RCLK, type: input}
19
+ - {num: 13, name: OE, type: input}
20
+ - {num: 14, name: SER, type: input}
21
+ - {num: 15, name: QA, type: output}
22
+ - {num: 16, name: VCC, type: power}
23
+ supply_range: [2, 6]
24
+ render: {shape: dip, label: 74HC595}
@@ -0,0 +1,8 @@
1
+ id: active_buzzer
2
+ category: output
3
+ placement: leads
4
+ pins:
5
+ - {num: 1, name: "plus", type: power}
6
+ - {num: 2, name: "minus", type: ground}
7
+ polarity: {positive: plus, negative: minus}
8
+ render: {shape: generic}
@@ -0,0 +1,12 @@
1
+ # Advanced Monolithic Systems fixed 3.3 V SOT-223 device; surface-mount only.
2
+ # https://www.electronica-pt.com/pdf/AMS1117.pdf
3
+ id: ams1117_3v3
4
+ category: regulator
5
+ placement: offboard
6
+ pins:
7
+ - {num: 1, name: GND, type: ground}
8
+ - {num: 2, name: VOUT, type: power}
9
+ - {num: 3, name: VIN, type: power}
10
+ - {num: 4, name: TAB, type: power}
11
+ internal: [[VOUT, TAB]]
12
+ render: {shape: offboard, label: AMS1117-3.3}
@@ -0,0 +1,70 @@
1
+ # https://docs.arduino.cc/resources/pinouts/A000005-full-pinout.pdf
2
+ # Synthetic pin numbers: left header top to bottom, then right header bottom to top.
3
+ id: arduino_nano
4
+ category: module
5
+ placement: footprint
6
+ straddle: true
7
+ pins:
8
+ - {num: 1, name: D13, type: gpio, max_voltage: 5, output_capable: true}
9
+ - {num: 2, name: 3V3, type: power}
10
+ - {num: 3, name: AREF, type: analog}
11
+ - {num: 4, name: A0, type: gpio, max_voltage: 5, output_capable: true}
12
+ - {num: 5, name: A1, type: gpio, max_voltage: 5, output_capable: true}
13
+ - {num: 6, name: A2, type: gpio, max_voltage: 5, output_capable: true}
14
+ - {num: 7, name: A3, type: gpio, max_voltage: 5, output_capable: true}
15
+ - {num: 8, name: A4, type: gpio, max_voltage: 5, output_capable: true}
16
+ - {num: 9, name: A5, type: gpio, max_voltage: 5, output_capable: true}
17
+ - {num: 10, name: A6, type: analog}
18
+ - {num: 11, name: A7, type: analog}
19
+ - {num: 12, name: 5V, type: power}
20
+ - {num: 13, name: RESET1, type: reset}
21
+ - {num: 14, name: GND1, type: ground, aliases: [GND]}
22
+ - {num: 15, name: VIN, type: power}
23
+ - {num: 16, name: D1, type: gpio, aliases: [TX], max_voltage: 5, output_capable: true}
24
+ - {num: 17, name: D0, type: gpio, aliases: [RX], max_voltage: 5, output_capable: true}
25
+ - {num: 18, name: RESET2, type: reset}
26
+ - {num: 19, name: GND2, type: ground}
27
+ - {num: 20, name: D2, type: gpio, max_voltage: 5, output_capable: true}
28
+ - {num: 21, name: D3, type: gpio, max_voltage: 5, output_capable: true}
29
+ - {num: 22, name: D4, type: gpio, max_voltage: 5, output_capable: true}
30
+ - {num: 23, name: D5, type: gpio, max_voltage: 5, output_capable: true}
31
+ - {num: 24, name: D6, type: gpio, max_voltage: 5, output_capable: true}
32
+ - {num: 25, name: D7, type: gpio, max_voltage: 5, output_capable: true}
33
+ - {num: 26, name: D8, type: gpio, max_voltage: 5, output_capable: true}
34
+ - {num: 27, name: D9, type: gpio, max_voltage: 5, output_capable: true}
35
+ - {num: 28, name: D10, type: gpio, max_voltage: 5, output_capable: true}
36
+ - {num: 29, name: D11, type: gpio, max_voltage: 5, output_capable: true}
37
+ - {num: 30, name: D12, type: gpio, max_voltage: 5, output_capable: true}
38
+ internal: [[GND1, GND2], [RESET1, RESET2]]
39
+ footprint:
40
+ "1": [0, 0]
41
+ "2": [1, 0]
42
+ "3": [2, 0]
43
+ "4": [3, 0]
44
+ "5": [4, 0]
45
+ "6": [5, 0]
46
+ "7": [6, 0]
47
+ "8": [7, 0]
48
+ "9": [8, 0]
49
+ "10": [9, 0]
50
+ "11": [10, 0]
51
+ "12": [11, 0]
52
+ "13": [12, 0]
53
+ "14": [13, 0]
54
+ "15": [14, 0]
55
+ "16": [14, 6]
56
+ "17": [13, 6]
57
+ "18": [12, 6]
58
+ "19": [11, 6]
59
+ "20": [10, 6]
60
+ "21": [9, 6]
61
+ "22": [8, 6]
62
+ "23": [7, 6]
63
+ "24": [6, 6]
64
+ "25": [5, 6]
65
+ "26": [4, 6]
66
+ "27": [3, 6]
67
+ "28": [2, 6]
68
+ "29": [1, 6]
69
+ "30": [0, 6]
70
+ render: {shape: module, label: Arduino Nano, size_mm: [45, 18], fill: "#2C2C2A", stroke: "#171715", text_color: "#FFFFFF"}
@@ -2,33 +2,36 @@ id: arduino_uno
2
2
  category: offboard
3
3
  placement: offboard
4
4
  pins:
5
- - {num: 1, name: D0}
6
- - {num: 2, name: D1}
7
- - {num: 3, name: D2}
8
- - {num: 4, name: D3}
9
- - {num: 5, name: D4}
10
- - {num: 6, name: D5}
11
- - {num: 7, name: D6}
12
- - {num: 8, name: D7}
13
- - {num: 9, name: D8}
14
- - {num: 10, name: D9}
15
- - {num: 11, name: D10}
16
- - {num: 12, name: D11}
17
- - {num: 13, name: D12}
18
- - {num: 14, name: D13}
19
- - {num: 15, name: GND, role: ground}
20
- - {num: 16, name: 5V, role: power}
21
- - {num: 17, name: A0}
22
- - {num: 18, name: A1}
23
- - {num: 19, name: A2}
24
- - {num: 20, name: A3}
25
- - {num: 21, name: A4}
26
- - {num: 22, name: A5}
27
- - {num: 23, name: 3V3, role: power}
28
- - {num: 24, name: VIN, role: power}
29
- - {num: 25, name: GND2, role: ground}
30
- - {num: 26, name: GND3, role: ground}
5
+ - {num: 1, name: D0, type: gpio, max_voltage: 5}
6
+ - {num: 2, name: D1, type: gpio, max_voltage: 5}
7
+ - {num: 3, name: D2, type: gpio, max_voltage: 5}
8
+ - {num: 4, name: D3, type: gpio, max_voltage: 5}
9
+ - {num: 5, name: D4, type: gpio, max_voltage: 5}
10
+ - {num: 6, name: D5, type: gpio, max_voltage: 5}
11
+ - {num: 7, name: D6, type: gpio, max_voltage: 5}
12
+ - {num: 8, name: D7, type: gpio, max_voltage: 5}
13
+ - {num: 9, name: D8, type: gpio, max_voltage: 5}
14
+ - {num: 10, name: D9, type: gpio, max_voltage: 5}
15
+ - {num: 11, name: D10, type: gpio, max_voltage: 5}
16
+ - {num: 12, name: D11, type: gpio, max_voltage: 5}
17
+ - {num: 13, name: D12, type: gpio, max_voltage: 5}
18
+ - {num: 14, name: D13, type: gpio, max_voltage: 5}
19
+ - {num: 15, name: GND, type: ground}
20
+ - {num: 16, name: 5V, type: power}
21
+ - {num: 17, name: A0, type: gpio, max_voltage: 5}
22
+ - {num: 18, name: A1, type: gpio, max_voltage: 5}
23
+ - {num: 19, name: A2, type: gpio, max_voltage: 5}
24
+ - {num: 20, name: A3, type: gpio, max_voltage: 5}
25
+ - {num: 21, name: A4, type: gpio, max_voltage: 5}
26
+ - {num: 22, name: A5, type: gpio, max_voltage: 5}
27
+ - {num: 23, name: 3V3, type: power}
28
+ - {num: 24, name: VIN, type: power}
29
+ - {num: 25, name: GND2, type: ground}
30
+ - {num: 26, name: GND3, type: ground}
31
31
  - {num: 27, name: RESET}
32
32
  - {num: 28, name: AREF}
33
33
  internal: [[15, 25], [15, 26]]
34
+ provides:
35
+ - {positive: 5V, negative: GND, voltage: 5}
36
+ - {positive: 3V3, negative: GND, voltage: 3.3}
34
37
  render: {shape: offboard, label: Arduino Uno}
@@ -0,0 +1,37 @@
1
+ # https://ww1.microchip.com/downloads/aemDocuments/documents/MCU08/ProductDocuments/DataSheets/ATmega48A-PA-88A-PA-168A-PA-328-P-DS-DS40002061B.pdf
2
+ id: atmega328p
3
+ category: mcu
4
+ placement: dip
5
+ package: {pins: 28}
6
+ pins:
7
+ - {num: 1, name: PC6_RESET, type: reset, aliases: [RESET]}
8
+ - {num: 2, name: PD0, type: gpio}
9
+ - {num: 3, name: PD1, type: gpio}
10
+ - {num: 4, name: PD2, type: gpio}
11
+ - {num: 5, name: PD3, type: gpio}
12
+ - {num: 6, name: PD4, type: gpio}
13
+ - {num: 7, name: VCC, type: power}
14
+ - {num: 8, name: GND1, type: ground}
15
+ - {num: 9, name: PB6, type: gpio}
16
+ - {num: 10, name: PB7, type: gpio}
17
+ - {num: 11, name: PD5, type: gpio}
18
+ - {num: 12, name: PD6, type: gpio}
19
+ - {num: 13, name: PD7, type: gpio}
20
+ - {num: 14, name: PB0, type: gpio}
21
+ - {num: 15, name: PB1, type: gpio}
22
+ - {num: 16, name: PB2, type: gpio}
23
+ - {num: 17, name: PB3, type: gpio}
24
+ - {num: 18, name: PB4, type: gpio}
25
+ - {num: 19, name: PB5, type: gpio}
26
+ - {num: 20, name: AVCC, type: power}
27
+ - {num: 21, name: AREF, type: input}
28
+ - {num: 22, name: GND2, type: ground}
29
+ - {num: 23, name: PC0, type: gpio}
30
+ - {num: 24, name: PC1, type: gpio}
31
+ - {num: 25, name: PC2, type: gpio}
32
+ - {num: 26, name: PC3, type: gpio}
33
+ - {num: 27, name: PC4, type: gpio}
34
+ - {num: 28, name: PC5, type: gpio}
35
+ internal: [[GND1, GND2]]
36
+ supply_range: [1.8, 5.5]
37
+ render: {shape: dip, label: ATMEGA328P}
@@ -0,0 +1,16 @@
1
+ # https://ww1.microchip.com/downloads/en/devicedoc/atmel-2586-avr-8-bit-microcontroller-attiny25-attiny45-attiny85_datasheet.pdf
2
+ id: attiny85
3
+ category: mcu
4
+ placement: dip
5
+ package: {pins: 8}
6
+ pins:
7
+ - {num: 1, name: PB5_RESET, type: reset, aliases: [RESET]}
8
+ - {num: 2, name: PB3, type: gpio}
9
+ - {num: 3, name: PB4, type: gpio}
10
+ - {num: 4, name: GND, type: ground}
11
+ - {num: 5, name: PB0, type: gpio}
12
+ - {num: 6, name: PB1, type: gpio}
13
+ - {num: 7, name: PB2, type: gpio}
14
+ - {num: 8, name: VCC, type: power}
15
+ supply_range: [2.7, 5.5]
16
+ render: {shape: dip, label: ATTINY85}
@@ -0,0 +1,8 @@
1
+ id: battery_box
2
+ category: power
3
+ placement: offboard
4
+ pins:
5
+ - {num: 1, name: "POS", type: power}
6
+ - {num: 2, name: "NEG", type: ground}
7
+ polarity: {positive: POS, negative: NEG}
8
+ render: {shape: offboard, label: Battery Box}
@@ -0,0 +1,24 @@
1
+ # https://www.ti.com/lit/ds/symlink/cd4017b.pdf
2
+ id: cd4017
3
+ category: ic
4
+ placement: dip
5
+ package: {pins: 16}
6
+ pins:
7
+ - {num: 1, name: Q5, type: output}
8
+ - {num: 2, name: Q1, type: output}
9
+ - {num: 3, name: Q0, type: output}
10
+ - {num: 4, name: Q2, type: output}
11
+ - {num: 5, name: Q6, type: output}
12
+ - {num: 6, name: Q7, type: output}
13
+ - {num: 7, name: Q3, type: output}
14
+ - {num: 8, name: VSS, type: ground}
15
+ - {num: 9, name: Q8, type: output}
16
+ - {num: 10, name: Q4, type: output}
17
+ - {num: 11, name: Q9, type: output}
18
+ - {num: 12, name: CARRY, type: output}
19
+ - {num: 13, name: CLOCK_INH, type: input}
20
+ - {num: 14, name: CLOCK, type: input}
21
+ - {num: 15, name: RESET, type: input}
22
+ - {num: 16, name: VDD, type: power}
23
+ supply_range: [3, 18]
24
+ render: {shape: dip, label: CD4017}