bluer-sbc 9.101.1__py3-none-any.whl → 9.319.1__py3-none-any.whl

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 (65) hide show
  1. bluer_sbc/.abcli/sbc/parts/edit.sh +5 -0
  2. bluer_sbc/.abcli/sbc/parts/open.sh +5 -0
  3. bluer_sbc/.abcli/sbc/parts.sh +1 -1
  4. bluer_sbc/.abcli/seed/rpi_64_bit.sh +36 -0
  5. bluer_sbc/.abcli/tests/help.sh +2 -0
  6. bluer_sbc/README/design.py +40 -24
  7. bluer_sbc/README/designs/__init__.py +27 -53
  8. bluer_sbc/README/designs/adapter_bus.py +59 -0
  9. bluer_sbc/README/designs/anchor/__init__.py +15 -0
  10. bluer_sbc/README/designs/anchor/body/docs.py +20 -0
  11. bluer_sbc/README/designs/anchor/docs.py +16 -0
  12. bluer_sbc/README/designs/anchor/items.py +10 -0
  13. bluer_sbc/README/designs/anchor/parts.py +54 -0
  14. bluer_sbc/README/designs/battery_bus/__init__.py +15 -0
  15. bluer_sbc/README/designs/battery_bus/body/docs.py +20 -0
  16. bluer_sbc/README/designs/battery_bus/body/li_ion.py +20 -0
  17. bluer_sbc/README/designs/battery_bus/body/sla.py +17 -0
  18. bluer_sbc/README/designs/battery_bus/docs.py +17 -0
  19. bluer_sbc/README/designs/battery_bus/items.py +17 -0
  20. bluer_sbc/README/designs/battery_bus/parts.py +19 -0
  21. bluer_sbc/README/designs/cheshmak/__init__.py +14 -0
  22. bluer_sbc/README/designs/cheshmak/body/docs.py +23 -0
  23. bluer_sbc/README/designs/cheshmak/body/v1.py +18 -0
  24. bluer_sbc/README/designs/cheshmak/docs.py +19 -0
  25. bluer_sbc/README/designs/cheshmak/items.py +10 -0
  26. bluer_sbc/README/designs/cheshmak/operation.py +5 -0
  27. bluer_sbc/README/designs/cheshmak/parts.py +28 -0
  28. bluer_sbc/README/designs/cheshmak/validations.py +14 -0
  29. bluer_sbc/README/designs/nafha.py +46 -3
  30. bluer_sbc/README/designs/pwm_generator.py +71 -0
  31. bluer_sbc/README/designs/regulated_bus.py +79 -0
  32. bluer_sbc/README/designs/shelter.py +42 -9
  33. bluer_sbc/README/designs/swallow/__init__.py +20 -0
  34. bluer_sbc/README/designs/swallow/consts.py +7 -0
  35. bluer_sbc/README/designs/swallow/docs.py +24 -0
  36. bluer_sbc/README/designs/swallow/history.py +34 -0
  37. bluer_sbc/{designs → README/designs}/swallow/parts.py +3 -2
  38. bluer_sbc/README/designs/swallow_head/__init__.py +22 -0
  39. bluer_sbc/README/designs/swallow_head/docs.py +24 -0
  40. bluer_sbc/README/designs/swallow_head/history.py +21 -0
  41. bluer_sbc/{designs → README/designs}/swallow_head/parts.py +11 -12
  42. bluer_sbc/README/designs/{x.py → template.py} +12 -0
  43. bluer_sbc/README/designs/ultrasonic_sensor_tester.py +8 -0
  44. bluer_sbc/README/parts.py +13 -1
  45. bluer_sbc/README/root.py +12 -6
  46. bluer_sbc/__init__.py +1 -1
  47. bluer_sbc/config.env +1 -1
  48. bluer_sbc/env.py +4 -0
  49. bluer_sbc/help/parts.py +33 -1
  50. bluer_sbc/parts/db.py +242 -13
  51. {bluer_sbc-9.101.1.dist-info → bluer_sbc-9.319.1.dist-info}/METADATA +6 -5
  52. {bluer_sbc-9.101.1.dist-info → bluer_sbc-9.319.1.dist-info}/RECORD +58 -32
  53. bluer_sbc/README/designs/battery_bus.py +0 -34
  54. bluer_sbc/README/designs/bryce.py +0 -20
  55. bluer_sbc/README/designs/cheshmak.py +0 -20
  56. bluer_sbc/README/designs/swallow.py +0 -21
  57. bluer_sbc/README/designs/swallow_head.py +0 -21
  58. bluer_sbc/designs/battery_bus/parts.py +0 -6
  59. bluer_sbc/designs/swallow_head/__init__.py +0 -0
  60. /bluer_sbc/{designs → README/designs/anchor/body}/__init__.py +0 -0
  61. /bluer_sbc/{designs/battery_bus → README/designs/battery_bus/body}/__init__.py +0 -0
  62. /bluer_sbc/{designs/swallow → README/designs/cheshmak/body}/__init__.py +0 -0
  63. {bluer_sbc-9.101.1.dist-info → bluer_sbc-9.319.1.dist-info}/WHEEL +0 -0
  64. {bluer_sbc-9.101.1.dist-info → bluer_sbc-9.319.1.dist-info}/licenses/LICENSE +0 -0
  65. {bluer_sbc-9.101.1.dist-info → bluer_sbc-9.319.1.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,28 @@
1
+ from bluer_sbc.README.design import design_doc_parts
2
+
3
+ parts = {
4
+ "plexiglass": "2 x 90 mm x 90 mm",
5
+ "rpi": "",
6
+ "rpi-camera": "",
7
+ "nuts-bolts-spacers": "M2.5: ({})".format(
8
+ " + ".join(
9
+ [
10
+ "4 x bolt",
11
+ "4 x nut",
12
+ "12 x 10 mm spacer",
13
+ "4 x 15 mm spacer",
14
+ ]
15
+ )
16
+ ),
17
+ }
18
+
19
+
20
+ docs = [
21
+ {
22
+ "path": "../docs/cheshmak/parts.md",
23
+ "macros": design_doc_parts(
24
+ dict_of_parts=parts,
25
+ parts_reference="../parts",
26
+ ),
27
+ }
28
+ ]
@@ -0,0 +1,14 @@
1
+ from bluer_objects.README.items import ImageItems
2
+
3
+ from bluer_sbc.README.designs.cheshmak import assets2
4
+
5
+ docs = [
6
+ {
7
+ "path": "../docs/cheshmak/validations.md",
8
+ "items": ImageItems(
9
+ {
10
+ assets2 + "bryce/09.jpg?raw=true": "",
11
+ }
12
+ ),
13
+ },
14
+ ]
@@ -2,6 +2,9 @@ from bluer_objects import README
2
2
  from bluer_objects.README.items import ImageItems
3
3
 
4
4
  from bluer_sbc.README.designs.consts import assets2
5
+ from bluer_sbc.README.designs.battery_bus.parts import parts as battery_bus_parts
6
+ from bluer_sbc.README.designs.pwm_generator import parts as pwm_generator_parts
7
+ from bluer_sbc.README.design import design_doc
5
8
 
6
9
  image_template = assets2 + "nafha/{}?raw=true"
7
10
 
@@ -9,12 +12,52 @@ marquee = README.Items(
9
12
  [
10
13
  {
11
14
  "name": "nafha",
12
- "marquee": image_template.format("01.png"),
13
- "url": "./bluer_sbc/docs/nafha.md",
15
+ "marquee": image_template.format("20251116_224456.jpg"),
16
+ "url": "./bluer_sbc/docs/nafha",
14
17
  }
15
18
  ]
16
19
  )
17
20
 
18
21
  items = ImageItems(
19
- {image_template.format(f"{index+1:02}.png"): "" for index in range(4)}
22
+ {
23
+ image_template.format(f"{filename}"): ""
24
+ for filename in [f"{index+1:02}.png" for index in range(4)]
25
+ + [
26
+ "20251028_123428.jpg",
27
+ "20251028_123438.jpg",
28
+ "20251103_215221.jpg",
29
+ "20251103_215248.jpg",
30
+ "20251103_215253.jpg",
31
+ "20251103_215257.jpg",
32
+ "20251103_215301.jpg",
33
+ "20251103_215319.jpg",
34
+ "20251116_224456.jpg",
35
+ "20251124_094940.jpg",
36
+ "20251125_203403.jpg",
37
+ ]
38
+ },
20
39
  )
40
+
41
+ parts = {
42
+ **battery_bus_parts,
43
+ **pwm_generator_parts,
44
+ **{
45
+ "heater-element": "12 V, 4.5 Ω, 32 w",
46
+ },
47
+ }
48
+
49
+ docs = [
50
+ design_doc(
51
+ "nafha",
52
+ items,
53
+ parts,
54
+ own_folder=True,
55
+ parts_reference="../parts",
56
+ ),
57
+ {
58
+ "path": "../docs/nafha/parts-v1.md",
59
+ },
60
+ {
61
+ "path": "../docs/nafha/parts-v2.md",
62
+ },
63
+ ]
@@ -0,0 +1,71 @@
1
+ from bluer_objects import README
2
+ from bluer_objects.README.items import ImageItems
3
+ from bluer_objects.README.consts import assets_url, designs_url
4
+
5
+ from bluer_sbc.README.design import design_doc
6
+
7
+
8
+ assets2 = assets_url(
9
+ suffix="pwm-generator",
10
+ volume=2,
11
+ )
12
+
13
+ marquee = README.Items(
14
+ [
15
+ {
16
+ "name": "pwm generator",
17
+ "marquee": f"{assets2}/20251116_125132.jpg",
18
+ "url": "./bluer_sbc/docs/pwm-generator.md",
19
+ }
20
+ ]
21
+ )
22
+
23
+ items = ImageItems(
24
+ {
25
+ designs_url(
26
+ "pwm-generator/wiring.png?raw=true",
27
+ ): designs_url(
28
+ "pwm-generator/wiring.svg",
29
+ ),
30
+ **{
31
+ f"{assets2}/{timestamp}.jpg": ""
32
+ for timestamp in [
33
+ "20251116_124854",
34
+ "20251116_125104",
35
+ "20251116_125112",
36
+ "20251116_125132",
37
+ "20251116_125140",
38
+ "20251116_125146",
39
+ "20251116_125200",
40
+ "20251116_125206",
41
+ "20251116_125212",
42
+ ]
43
+ },
44
+ }
45
+ )
46
+
47
+ parts = {
48
+ "dc-power-plug": "",
49
+ "dc-power-jack": "",
50
+ "dsn-vc288": "",
51
+ "plexiglass": "2 x 80 cm x 100 cm",
52
+ "pwm-manual-dc-motor-controller": "",
53
+ "nuts-bolts-spacers": "M3: ({})".format(
54
+ " + ".join(
55
+ [
56
+ "4 x bolt",
57
+ "4 x nut",
58
+ "4 x 40 mm spacer",
59
+ ]
60
+ )
61
+ ),
62
+ }
63
+
64
+
65
+ docs = [
66
+ design_doc(
67
+ "pwm-generator",
68
+ items,
69
+ parts,
70
+ )
71
+ ]
@@ -0,0 +1,79 @@
1
+ from bluer_objects import README
2
+ from bluer_objects.README.items import ImageItems
3
+ from bluer_objects.README.consts import assets_url, designs_url
4
+
5
+ from bluer_sbc.README.design import design_doc
6
+
7
+
8
+ assets2 = assets_url(
9
+ suffix="regulated-bus",
10
+ volume=2,
11
+ )
12
+
13
+ marquee = README.Items(
14
+ [
15
+ {
16
+ "name": "regulated bus",
17
+ "marquee": f"{assets2}/20251113_113332.jpg",
18
+ "url": "./bluer_sbc/docs/regulated-bus.md",
19
+ }
20
+ ]
21
+ )
22
+
23
+ items = ImageItems(
24
+ {
25
+ designs_url(
26
+ "regulated-bus/wiring.png?raw=true",
27
+ ): designs_url(
28
+ "regulated-bus/wiring.svg",
29
+ ),
30
+ **{
31
+ f"{assets2}/{timestamp}.jpg": ""
32
+ for timestamp in [
33
+ "20251112_214845",
34
+ "20251113_103345",
35
+ "20251113_103404",
36
+ "20251113_103646",
37
+ "20251113_103653",
38
+ "20251113_103659",
39
+ "20251113_103703",
40
+ "20251113_103713",
41
+ "20251113_103722",
42
+ "20251113_104805",
43
+ "20251113_113332",
44
+ "20251116_234737",
45
+ ]
46
+ },
47
+ }
48
+ )
49
+
50
+ parts = {
51
+ "dc-power-plug": "",
52
+ "dsn-vc288": "",
53
+ "XL4015": "",
54
+ "white-terminal": "2 x",
55
+ "pin-headers": "2 x (2 x 3, 90 degree)",
56
+ "PCB-double-9x7": "10 x 15 holes",
57
+ "nuts-bolts-spacers": "M3: ({})".format(
58
+ " + ".join(
59
+ [
60
+ "7 x bolt",
61
+ "7 x nut",
62
+ "1 x 5 mm spacer",
63
+ "7 x 15 mm spacer",
64
+ "2 x 25 mm spacer",
65
+ "3 x 35 mm spacer",
66
+ ]
67
+ )
68
+ ),
69
+ "plexiglass": "2 x 88 cm x 88 cm",
70
+ }
71
+
72
+
73
+ docs = [
74
+ design_doc(
75
+ "regulated-bus",
76
+ items,
77
+ parts,
78
+ )
79
+ ]
@@ -2,21 +2,23 @@ from bluer_objects import README
2
2
  from bluer_objects.README.items import ImageItems
3
3
  from bluer_objects.README.consts import assets_url
4
4
 
5
- from bluer_sbc.README.designs.consts import assets2
5
+ from bluer_sbc.README.design import design_doc
6
6
 
7
- image_template = assets2 + "shelter/{}?raw=true"
8
7
 
9
- assets2_shelter = assets_url(
8
+ assets2 = assets_url(
10
9
  suffix="shelter",
11
10
  volume=2,
12
11
  )
13
12
 
13
+ image_template = assets2 + "/{}?raw=true"
14
+
15
+
14
16
  marquee = README.Items(
15
17
  [
16
18
  {
17
19
  "name": "shelter",
18
- "marquee": f"{assets2_shelter}/20251006_181554.jpg",
19
- "url": "./bluer_sbc/docs/shelter.md",
20
+ "marquee": f"{assets2}/20251104_000755.jpg",
21
+ "url": "./bluer_sbc/docs/shelter",
20
22
  }
21
23
  ]
22
24
  )
@@ -25,9 +27,40 @@ items = ImageItems(
25
27
  {image_template.format(f"{index+1:02}.png"): "" for index in range(4)}
26
28
  ) + ImageItems(
27
29
  {
28
- f"{assets2_shelter}/20251005_180841.jpg": "",
29
- f"{assets2_shelter}/20251006_181432.jpg": "",
30
- f"{assets2_shelter}/20251006_181509.jpg": "",
31
- f"{assets2_shelter}/20251006_181554.jpg": "",
30
+ f"{assets2}/20251005_180841.jpg": "",
31
+ f"{assets2}/20251006_181432.jpg": "",
32
+ f"{assets2}/20251006_181509.jpg": "",
33
+ f"{assets2}/20251006_181554.jpg": "",
34
+ f"{assets2}/20251028_113245.jpg": "",
35
+ f"{assets2}/20251103_182323.jpg": "",
36
+ f"{assets2}/20251104_000755.jpg": "",
37
+ f"{assets2}/20251109_000501.jpg": "",
38
+ f"{assets2}/20251109_000641.jpg": "",
39
+ f"{assets2}/20251109_002124.jpg": "",
40
+ f"{assets2}/20251109_002639.jpg": "",
41
+ f"{assets2}/20251124_094744.jpg": "",
42
+ f"{assets2}/20251202_101949.jpg": "",
43
+ f"{assets2}/20251202_102912.jpg": "",
32
44
  }
33
45
  )
46
+
47
+ parts = {
48
+ "220VAC-dimmer": "",
49
+ "resistance-heating-wire": "1.59 kΩ",
50
+ "ceramic-terminal": "",
51
+ "mountable-digital-thermometer": "",
52
+ }
53
+
54
+
55
+ docs = [
56
+ design_doc(
57
+ "shelter",
58
+ items,
59
+ parts,
60
+ own_folder=True,
61
+ parts_reference="../parts",
62
+ ),
63
+ {
64
+ "path": "../docs/shelter/parts-v1.md",
65
+ },
66
+ ]
@@ -0,0 +1,20 @@
1
+ from bluer_objects import README
2
+
3
+ from bluer_sbc.README.designs.consts import assets2
4
+
5
+ latest_version: int = 6
6
+
7
+
8
+ def image_template(version: int) -> str:
9
+ return assets2 + f"swallow/design/v{version}/{{}}?raw=true"
10
+
11
+
12
+ marquee = README.Items(
13
+ [
14
+ {
15
+ "name": "swallow",
16
+ "marquee": image_template(latest_version).format("01.jpg"),
17
+ "url": "./bluer_sbc/docs/swallow",
18
+ }
19
+ ]
20
+ )
@@ -0,0 +1,7 @@
1
+ from bluer_objects.README.consts import assets_url
2
+
3
+
4
+ swallow_assets2 = assets_url(
5
+ "swallow",
6
+ volume=2,
7
+ )
@@ -0,0 +1,24 @@
1
+ from bluer_objects.README.items import ImageItems
2
+
3
+ from bluer_sbc.README.design import design_doc
4
+ from bluer_sbc.README.designs.swallow import image_template
5
+ from bluer_sbc.README.designs.swallow.parts import parts
6
+ from bluer_sbc.README.designs.swallow import history
7
+ from bluer_sbc.README.designs.swallow import latest_version
8
+
9
+ items = ImageItems(
10
+ {
11
+ image_template(latest_version).format(f"{index+1:02}.jpg"): ""
12
+ for index in range(6)
13
+ }
14
+ )
15
+
16
+ docs = [
17
+ design_doc(
18
+ "swallow",
19
+ items,
20
+ parts,
21
+ own_folder=True,
22
+ parts_reference="../parts",
23
+ )
24
+ ] + history.docs
@@ -0,0 +1,34 @@
1
+ from bluer_objects.README.items import ImageItems
2
+
3
+ from bluer_sbc.README.design import design_doc
4
+ from bluer_sbc.README.designs.swallow.consts import swallow_assets2
5
+ from bluer_sbc.README.designs.swallow import image_template, latest_version
6
+ from bluer_sbc.README.designs.swallow.parts import parts
7
+
8
+ docs = [
9
+ design_doc(
10
+ "swallow/v1",
11
+ ImageItems(
12
+ {
13
+ f"{swallow_assets2}/20250609_164433.jpg": "",
14
+ f"{swallow_assets2}/20250614_114954.jpg": "",
15
+ f"{swallow_assets2}/20250615_192339.jpg": "",
16
+ }
17
+ ),
18
+ parts,
19
+ )
20
+ ] + [
21
+ design_doc(
22
+ f"swallow/v{version}",
23
+ ImageItems(
24
+ {
25
+ image_template(version).format(
26
+ f"{index+1:02}.jpg",
27
+ ): ""
28
+ for index in range(6)
29
+ }
30
+ ),
31
+ parts,
32
+ )
33
+ for version in range(2, latest_version)
34
+ ]
@@ -1,15 +1,16 @@
1
- dict_of_parts = {
1
+ parts = {
2
2
  "BTS7960": "2 x",
3
3
  "connector": "2 females",
4
4
  "white-terminal": "8 x",
5
5
  "nuts-bolts-spacers": "M3: ({})".format(
6
6
  " + ".join(
7
7
  [
8
+ "4 x nut",
8
9
  "8 x 25 mm spacer",
9
10
  "4 x 30 mm spacer",
10
- "4 x nut",
11
11
  ]
12
12
  )
13
13
  ),
14
14
  "solid-cable-1-15": "20 cm x (red + black/blue)",
15
+ "PCB-single-14x9_5": "",
15
16
  }
@@ -0,0 +1,22 @@
1
+ from bluer_objects import README
2
+ from bluer_objects.README.items import ImageItems
3
+
4
+ from bluer_sbc.README.designs.consts import assets2
5
+
6
+
7
+ latest_version: int = 2
8
+
9
+
10
+ def image_template(version: int) -> str:
11
+ return assets2 + f"swallow/design/head-v{version}/{{}}?raw=true"
12
+
13
+
14
+ marquee = README.Items(
15
+ [
16
+ {
17
+ "name": "swallow head",
18
+ "marquee": image_template(latest_version).format("01.jpg"),
19
+ "url": "./bluer_sbc/docs/swallow-head",
20
+ }
21
+ ]
22
+ )
@@ -0,0 +1,24 @@
1
+ from bluer_objects.README.items import ImageItems
2
+
3
+ from bluer_sbc.README.design import design_doc
4
+ from bluer_sbc.README.designs.swallow_head import image_template
5
+ from bluer_sbc.README.designs.swallow_head.parts import parts
6
+ from bluer_sbc.README.designs.swallow_head import history
7
+ from bluer_sbc.README.designs.swallow_head import latest_version
8
+
9
+ items = ImageItems(
10
+ {
11
+ image_template(latest_version).format(f"{index+1:02}.jpg"): ""
12
+ for index in range(6)
13
+ }
14
+ )
15
+
16
+ docs = [
17
+ design_doc(
18
+ "swallow-head",
19
+ items,
20
+ parts,
21
+ own_folder=True,
22
+ parts_reference="../parts",
23
+ )
24
+ ] + history.docs
@@ -0,0 +1,21 @@
1
+ from bluer_objects.README.items import ImageItems
2
+
3
+ from bluer_sbc.README.design import design_doc
4
+ from bluer_sbc.README.designs.swallow_head import image_template, latest_version
5
+ from bluer_sbc.README.designs.swallow_head.parts import parts
6
+
7
+ docs = [
8
+ design_doc(
9
+ f"swallow-head/v{version}",
10
+ ImageItems(
11
+ {
12
+ image_template(version).format(
13
+ f"{index+1:02}.jpg",
14
+ ): ""
15
+ for index in range(6)
16
+ }
17
+ ),
18
+ parts,
19
+ )
20
+ for version in range(1, latest_version)
21
+ ]
@@ -1,14 +1,14 @@
1
- dict_of_parts = {
1
+ parts = {
2
+ "sd-card-32-gb": "",
2
3
  "rpi": "",
3
4
  "XL4015": "",
4
5
  "470-mF": "",
5
6
  "Polyfuse": "optional",
6
7
  "TVS-diode": "",
7
- "resistor": "7 x 330-470 Ω + N x 2.2 kΩ + N x 3.3 kΩ",
8
+ "resistor": "7 x 330-470 Ω + 4 x 2.2 kΩ + 4 x 3.3 kΩ",
8
9
  "LED": "green + red + yellow + 4 x blue",
9
10
  "rpi-camera": "",
10
- "PCB-single-14x9_5": "2 x",
11
- "PCB-double-9x7": "2 x",
11
+ "PCB-single-14x9_5": "",
12
12
  "pushbutton": "",
13
13
  "ultrasonic-sensor": "4 x",
14
14
  "connector": "1 female",
@@ -18,8 +18,8 @@ dict_of_parts = {
18
18
  " + ".join(
19
19
  [
20
20
  "2 x bolt",
21
- "2 x 5 mm spacer",
22
21
  "4 x nut",
22
+ "2 x 5 mm spacer",
23
23
  ]
24
24
  )
25
25
  ),
@@ -27,8 +27,8 @@ dict_of_parts = {
27
27
  " + ".join(
28
28
  [
29
29
  "4 x bolt",
30
- "8 x 10 mm spacer",
31
30
  "4 x nut",
31
+ "8 x 10 mm spacer",
32
32
  ]
33
33
  )
34
34
  ),
@@ -36,21 +36,20 @@ dict_of_parts = {
36
36
  " + ".join(
37
37
  [
38
38
  "1 x bolt",
39
- "3 x 35 mm spacer",
40
- "3 x 25 mm spacer",
41
- "7 x 15 mm spacer",
42
- "4 x 5 mm spacer",
43
39
  "5 x nut",
40
+ "5 x 25 mm spacer",
41
+ "8 x 15 mm spacer",
42
+ "4 x 5 mm spacer",
44
43
  ]
45
44
  )
46
45
  ),
47
46
  ]
48
47
  ),
49
48
  "plexiglass": "14 cm x 9.5 cm",
50
- "white-terminal": "2 x",
49
+ "green-terminal": "2 x",
51
50
  "dupont-cables": "1 x 30 cm + 1 x 10 cm",
52
51
  "16-awg-wire": "40 cm x (red + black/blue)",
53
52
  "solid-cable-1-15": "10 cm x (red + black/blue)",
54
53
  "strong-thread": "1 m",
55
- "pin-headers": "1 x (female, 2 x 40) -> 2 x 20 + 2 x (male, 1 x 40) -> 4 x 6 + 4 x 2 + 2 x 20",
54
+ "pin-headers": "1 x (female, 2 x 40) -> 2 x 20 + 2 x (male, 1 x 40) -> 4 x 1 + 2 x 20 + 1 x (male, 2 x 40) -> 2 x 2 x 6",
56
55
  }
@@ -2,6 +2,8 @@ from bluer_objects import README
2
2
  from bluer_objects.README.items import ImageItems
3
3
  from bluer_objects.README.consts import assets_url
4
4
 
5
+ from bluer_sbc.README.design import design_doc
6
+
5
7
 
6
8
  assets2_x = assets_url(
7
9
  suffix="x",
@@ -24,3 +26,13 @@ items = ImageItems(
24
26
  f"{assets2_x}/TBA.jpg": "",
25
27
  }
26
28
  )
29
+
30
+ parts = {}
31
+
32
+ docs = [
33
+ design_doc(
34
+ "template",
35
+ items,
36
+ parts,
37
+ )
38
+ ]
@@ -2,6 +2,7 @@ from bluer_objects import README
2
2
  from bluer_objects.README.items import ImageItems
3
3
 
4
4
  from bluer_sbc.README.designs.consts import assets2
5
+ from bluer_sbc.README.design import design_doc
5
6
 
6
7
 
7
8
  image_template = assets2 + "ultrasonic-sensor-tester/{}?raw=true"
@@ -17,3 +18,10 @@ marquee = README.Items(
17
18
  )
18
19
 
19
20
  items = ImageItems({image_template.format(f"{index:02}.jpg"): "" for index in range(6)})
21
+
22
+ docs = [
23
+ design_doc(
24
+ "ultrasonic-sensor-tester",
25
+ items,
26
+ )
27
+ ]
bluer_sbc/README/parts.py CHANGED
@@ -1,9 +1,21 @@
1
+ from bluer_objects import markdown
2
+
1
3
  from bluer_sbc.parts.db import db_of_parts
2
4
 
3
5
  docs = [
4
6
  {
5
7
  "path": "../docs/parts",
6
- "macros": {"list:::": db_of_parts.README},
8
+ "macros": {
9
+ "parts_list:::": db_of_parts.README,
10
+ "parts_images:::": markdown.generate_table(
11
+ db_of_parts.as_images(
12
+ {part.name: "" for part in db_of_parts},
13
+ reference="../parts",
14
+ ),
15
+ cols=10,
16
+ log=False,
17
+ ),
18
+ },
7
19
  }
8
20
  ] + [
9
21
  {
bluer_sbc/README/root.py CHANGED
@@ -1,11 +1,14 @@
1
- from bluer_sbc.README.designs.cheshmak import marquee as cheshmak_marquee
1
+ from bluer_sbc.README.designs.adapter_bus import marquee as adapter_bus_marquee
2
+ from bluer_sbc.README.designs.anchor import marquee as anchor_marquee
3
+ from bluer_sbc.README.designs.battery_bus import marquee as battery_bus_marquee
2
4
  from bluer_sbc.README.designs.blue_bracket import items as blue_bracket_items
3
- from bluer_sbc.README.designs.swallow import marquee as swallow_marquee
4
- from bluer_sbc.README.designs.swallow_head import marquee as swallow_head_marquee
5
- from bluer_sbc.README.designs.bryce import marquee as bryce_marquee
6
5
  from bluer_sbc.README.designs.nafha import marquee as nafha_marquee
6
+ from bluer_sbc.README.designs.cheshmak import marquee as cheshmak_marquee
7
+ from bluer_sbc.README.designs.pwm_generator import marquee as pwm_generator_marquee
8
+ from bluer_sbc.README.designs.regulated_bus import marquee as regulated_bus_marquee
7
9
  from bluer_sbc.README.designs.shelter import marquee as shelter_marquee
8
- from bluer_sbc.README.designs.battery_bus import marquee as battery_bus_marquee
10
+ from bluer_sbc.README.designs.swallow import marquee as swallow_marquee
11
+ from bluer_sbc.README.designs.swallow_head import marquee as swallow_head_marquee
9
12
  from bluer_sbc.README.designs.ultrasonic_sensor_tester import (
10
13
  marquee as ultrasonic_sensor_tester_marquee,
11
14
  )
@@ -16,9 +19,12 @@ docs = [
16
19
  "items": []
17
20
  + swallow_head_marquee
18
21
  + swallow_marquee
22
+ + anchor_marquee
23
+ + pwm_generator_marquee
24
+ + regulated_bus_marquee
19
25
  + battery_bus_marquee
26
+ + adapter_bus_marquee
20
27
  + ultrasonic_sensor_tester_marquee
21
- + bryce_marquee
22
28
  + cheshmak_marquee
23
29
  + nafha_marquee
24
30
  + shelter_marquee