bluer-sbc 9.101.1__py3-none-any.whl → 9.168.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.
@@ -0,0 +1,36 @@
1
+ #! /usr/bin/env bash
2
+
3
+ # internal function to bluer_ai_seed.
4
+ # seed is NOT local
5
+ function bluer_ai_seed_rpi_64_bit() {
6
+ bluer_ai_seed add_kaggle
7
+
8
+ bluer_ai_seed add_ssh_key sudo
9
+
10
+ seed="${seed}sudo apt-get --yes --force-yes install git$delim_section"
11
+
12
+ bluer_ai_seed add_repo
13
+
14
+ bluer_ai_seed add_bluer_ai_env_ssp
15
+
16
+ local ssp="--break-system-packages"
17
+
18
+ seed="${seed}sudo apt update$delim"
19
+ seed="${seed}sudo apt install -y python3-pip$delim"
20
+ seed="${seed}pip3 install $ssp -e .$delim_section"
21
+
22
+ bluer_ai_seed add_repo repo=bluer-objects
23
+ seed="${seed}pip3 install $ssp -e .$delim_section"
24
+ seed="${seed}$(bluer_ai_seed add_file $abcli_path_git/bluer-objects/.env \$HOME/git/bluer-objects/.env)$delim_section"
25
+
26
+ bluer_ai_seed add_repo repo=bluer-sbc
27
+ seed="${seed}pip3 install $ssp -e .$delim_section"
28
+
29
+ seed="${seed}pip3 install $ssp opencv-python$delim"
30
+ seed="${seed}sudo apt install -y python3-picamera2$delim"
31
+ seed="${seed}pip3 install --force-reinstall --no-cache-dir simplejpeg$delim"
32
+ seed="${seed}pip3 install $ssp evdev$delim_section"
33
+
34
+ seed="${seed}cd; cd git; cd bluer-ai$delim"
35
+ seed="${seed}source ./bluer_ai/.abcli/bluer_ai.sh$delim_section"
36
+ }
@@ -1,36 +1,40 @@
1
- from typing import List, Dict
1
+ from typing import Dict, List
2
2
 
3
3
  from bluer_objects import markdown
4
4
 
5
5
  from bluer_sbc.parts.db import db_of_parts
6
6
 
7
7
 
8
- def design(
9
- items: List[str],
10
- dict_of_parts: Dict = {},
11
- macros: Dict = {},
8
+ def design_doc(
9
+ design_name: str,
10
+ items: List[str] = [],
11
+ dict_of_parts: dict = {},
12
+ macros: dict = {},
13
+ own_folder: bool = False,
14
+ parts_reference: str = "./parts",
12
15
  ) -> Dict:
13
- output = {
14
- "items": items,
15
- }
16
-
16
+ macros_ = {}
17
17
  if dict_of_parts:
18
- output["macros"] = {
18
+ macros_ = {
19
19
  "parts_images:::": markdown.generate_table(
20
20
  db_of_parts.as_images(
21
21
  dict_of_parts,
22
- reference="./parts",
22
+ reference=parts_reference,
23
23
  ),
24
24
  cols=10,
25
25
  log=False,
26
26
  ),
27
27
  "parts_list:::": db_of_parts.as_list(
28
28
  dict_of_parts,
29
- reference="./parts",
29
+ reference=parts_reference,
30
30
  log=False,
31
31
  ),
32
32
  }
33
33
 
34
- output["macros"].update(macros)
34
+ macros_.update(macros)
35
35
 
36
- return output
36
+ return {
37
+ "path": "../docs/{}{}".format(design_name, "" if own_folder else ".md"),
38
+ "items": items,
39
+ "macros": macros_,
40
+ }
@@ -1,56 +1,26 @@
1
- from bluer_sbc.README.design import design
2
- from bluer_sbc.README.designs.cheshmak import items as cheshmak_items
3
- from bluer_sbc.README.designs.battery_bus import items as battery_bus_items
4
- from bluer_sbc.README.designs.swallow import items as swallow_items
5
- from bluer_sbc.README.designs.swallow_head import items as swallow_head_items
6
- from bluer_sbc.README.designs.bryce import items as bryce_items
7
- from bluer_sbc.README.designs.nafha import items as nafha_items
8
- from bluer_sbc.README.designs.shelter import items as shelter_items
9
- from bluer_sbc.README.designs.x import items as x_items
10
- from bluer_sbc.README.designs.ultrasonic_sensor_tester import (
11
- items as ultrasonic_sensor_tester_items,
1
+ from bluer_sbc.README.designs import (
2
+ cheshmak,
3
+ battery_bus,
4
+ adapter_bus,
5
+ swallow,
6
+ swallow_head,
7
+ bryce,
8
+ nafha,
9
+ shelter,
10
+ template,
11
+ ultrasonic_sensor_tester,
12
12
  )
13
13
 
14
- from bluer_sbc.designs.battery_bus.parts import dict_of_parts as battery_bus_parts
15
- from bluer_sbc.designs.swallow.parts import dict_of_parts as swallow_parts
16
- from bluer_sbc.designs.swallow_head.parts import dict_of_parts as swallow_head_parts
17
14
 
18
- docs = [
19
- {
20
- "items": design_info["items"],
21
- "path": f"../docs/{design_name}.md",
22
- "macros": design_info.get("macros", {}),
23
- }
24
- for design_name, design_info in {
25
- "battery-bus": design(
26
- battery_bus_items,
27
- battery_bus_parts,
28
- ),
29
- "bryce": design(
30
- bryce_items,
31
- ),
32
- "cheshmak": design(
33
- cheshmak_items,
34
- ),
35
- "nafha": design(
36
- nafha_items,
37
- ),
38
- "shelter": design(
39
- shelter_items,
40
- ),
41
- "swallow-head": design(
42
- swallow_head_items,
43
- swallow_head_parts,
44
- ),
45
- "swallow": design(
46
- swallow_items,
47
- swallow_parts,
48
- ),
49
- "ultrasonic-sensor-tester": design(
50
- ultrasonic_sensor_tester_items,
51
- ),
52
- "x": design(
53
- x_items,
54
- ),
55
- }.items()
56
- ]
15
+ docs = (
16
+ battery_bus.docs
17
+ + adapter_bus.docs
18
+ + bryce.docs
19
+ + cheshmak.docs
20
+ + nafha.docs
21
+ + shelter.docs
22
+ + swallow_head.docs
23
+ + swallow.docs
24
+ + ultrasonic_sensor_tester.docs
25
+ + template.docs
26
+ )
@@ -0,0 +1,59 @@
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="adapter-bus",
10
+ volume=2,
11
+ )
12
+
13
+ marquee = README.Items(
14
+ [
15
+ {
16
+ "name": "adapter bus",
17
+ "marquee": f"{assets2}/20251017_222911.jpg",
18
+ "url": "./bluer_sbc/docs/adapter-bus.md",
19
+ }
20
+ ]
21
+ )
22
+
23
+ items = ImageItems(
24
+ {
25
+ designs_url(
26
+ "adapter-bus/wiring.png?raw=true",
27
+ ): designs_url(
28
+ "adapter-bus/wiring.svg",
29
+ ),
30
+ **{
31
+ f"{assets2}/{timestamp}.jpg": ""
32
+ for timestamp in [
33
+ "20251017_222911",
34
+ "20251017_222929",
35
+ "20251017_222938",
36
+ "20251017_222943",
37
+ "20251017_222949",
38
+ "20251017_223017",
39
+ "20251017_223034",
40
+ "20251018_213244",
41
+ ]
42
+ },
43
+ }
44
+ )
45
+
46
+ parts = {
47
+ "charging-port": "",
48
+ "dsn-vc288": "",
49
+ "charger-socket": "",
50
+ }
51
+
52
+
53
+ docs = [
54
+ design_doc(
55
+ "adapter-bus",
56
+ items,
57
+ parts,
58
+ )
59
+ ]
@@ -3,7 +3,9 @@ from bluer_objects.README.items import ImageItems
3
3
  from bluer_objects.README.consts import assets_url
4
4
  from bluer_objects.README.consts import designs_url
5
5
 
6
- assets2_battery_bus = assets_url(
6
+ from bluer_sbc.README.design import design_doc
7
+
8
+ assets2 = assets_url(
7
9
  suffix="battery-bus",
8
10
  volume=2,
9
11
  )
@@ -12,7 +14,7 @@ marquee = README.Items(
12
14
  [
13
15
  {
14
16
  "name": "battery bus",
15
- "marquee": f"{assets2_battery_bus}/20251007_221902.jpg",
17
+ "marquee": f"{assets2}/20251007_221902.jpg",
16
18
  "url": "./bluer_sbc/docs/battery-bus.md",
17
19
  }
18
20
  ]
@@ -20,15 +22,31 @@ marquee = README.Items(
20
22
 
21
23
  items = ImageItems(
22
24
  {
23
- f"{assets2_battery_bus}/concept.png": "",
25
+ f"{assets2}/concept.png": "",
24
26
  designs_url(
25
27
  "battery-bus/electrical/wiring.png?raw=true",
26
28
  ): designs_url(
27
29
  "battery-bus/electrical/wiring.svg",
28
30
  ),
29
- f"{assets2_battery_bus}/20251007_221902.jpg": "",
30
- f"{assets2_battery_bus}/20251007_220642.jpg": "",
31
- f"{assets2_battery_bus}/20251007_220520.jpg": "",
32
- f"{assets2_battery_bus}/20251007_220601.jpg": "",
31
+ f"{assets2}/20251007_221902.jpg": "",
32
+ f"{assets2}/20251007_220642.jpg": "",
33
+ f"{assets2}/20251007_220520.jpg": "",
34
+ f"{assets2}/20251007_220601.jpg": "",
33
35
  }
34
36
  )
37
+
38
+ parts = {
39
+ "SLA-Battery": "",
40
+ "on-off-switch": "",
41
+ "charging-port": "",
42
+ "dsn-vc288": "",
43
+ }
44
+
45
+
46
+ docs = [
47
+ design_doc(
48
+ "battery-bus",
49
+ items,
50
+ parts,
51
+ )
52
+ ]
@@ -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
  image_template = assets2 + "bryce/{}?raw=true"
7
8
 
@@ -18,3 +19,10 @@ marquee = README.Items(
18
19
  items = ImageItems(
19
20
  {image_template.format(f"{index+1:02}.jpg"): "" for index in range(9)}
20
21
  )
22
+
23
+ docs = [
24
+ design_doc(
25
+ "bryce",
26
+ items,
27
+ )
28
+ ]
@@ -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
  image_template = assets2 + "cheshmak/{}?raw=true"
7
8
 
@@ -18,3 +19,11 @@ marquee = README.Items(
18
19
  items = ImageItems(
19
20
  {image_template.format(f"{index+1:02}.png"): "" for index in range(1)}
20
21
  )
22
+
23
+
24
+ docs = [
25
+ design_doc(
26
+ "cheshmak",
27
+ items,
28
+ )
29
+ ]
@@ -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
  image_template = assets2 + "nafha/{}?raw=true"
7
8
 
@@ -10,11 +11,47 @@ marquee = README.Items(
10
11
  {
11
12
  "name": "nafha",
12
13
  "marquee": image_template.format("01.png"),
13
- "url": "./bluer_sbc/docs/nafha.md",
14
+ "url": "./bluer_sbc/docs/nafha",
14
15
  }
15
16
  ]
16
17
  )
17
18
 
18
19
  items = ImageItems(
19
- {image_template.format(f"{index+1:02}.png"): "" for index in range(4)}
20
+ {
21
+ image_template.format(f"{filename}"): ""
22
+ for filename in [f"{index+1:02}.png" for index in range(4)]
23
+ + [
24
+ "20251028_123428.jpg",
25
+ "20251028_123438.jpg",
26
+ "20251103_215221.jpg",
27
+ "20251103_215248.jpg",
28
+ "20251103_215253.jpg",
29
+ "20251103_215257.jpg",
30
+ "20251103_215301.jpg",
31
+ "20251103_215319.jpg",
32
+ ]
33
+ },
20
34
  )
35
+
36
+ parts = {
37
+ "dsn-vc288": "",
38
+ "charging-port": "",
39
+ "pwm-manual-dc-motor-controller": "",
40
+ "heater-element": "12 V, 4.5 Ω, 32 w",
41
+ }
42
+
43
+ docs = [
44
+ design_doc(
45
+ "nafha",
46
+ items,
47
+ parts,
48
+ own_folder=True,
49
+ parts_reference="../parts",
50
+ ),
51
+ {
52
+ "path": "../docs/nafha/parts-v1.md",
53
+ },
54
+ {
55
+ "path": "../docs/nafha/parts-v2.md",
56
+ },
57
+ ]
@@ -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,37 @@ 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": "",
32
41
  }
33
42
  )
43
+
44
+ parts = {
45
+ "220VAC-dimmer": "",
46
+ "resistance-heating-wire": "1.59 kΩ",
47
+ "ceramic-terminal": "",
48
+ "mountable-digital-thermometer": "",
49
+ }
50
+
51
+
52
+ docs = [
53
+ design_doc(
54
+ "shelter",
55
+ items,
56
+ parts,
57
+ own_folder=True,
58
+ parts_reference="../parts",
59
+ ),
60
+ {
61
+ "path": "../docs/shelter/parts-v1.md",
62
+ },
63
+ ]
@@ -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 + "swallow/design/v5/{}?raw=true"
@@ -19,3 +20,27 @@ marquee = README.Items(
19
20
  items = ImageItems(
20
21
  {image_template.format(f"{index+1:02}.jpg"): "" for index in range(6)}
21
22
  )
23
+
24
+ parts = {
25
+ "BTS7960": "2 x",
26
+ "connector": "2 females",
27
+ "white-terminal": "8 x",
28
+ "nuts-bolts-spacers": "M3: ({})".format(
29
+ " + ".join(
30
+ [
31
+ "8 x 25 mm spacer",
32
+ "4 x 30 mm spacer",
33
+ "4 x nut",
34
+ ]
35
+ )
36
+ ),
37
+ "solid-cable-1-15": "20 cm x (red + black/blue)",
38
+ }
39
+
40
+ docs = [
41
+ design_doc(
42
+ "swallow",
43
+ items,
44
+ parts,
45
+ )
46
+ ]
@@ -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 + "swallow/design/head-v1/{}?raw=true"
@@ -19,3 +20,70 @@ marquee = README.Items(
19
20
  items = ImageItems(
20
21
  {image_template.format(f"{index+1:02}.jpg"): "" for index in range(6)}
21
22
  )
23
+
24
+ parts = {
25
+ "sd-card-32-gb": "",
26
+ "rpi": "",
27
+ "XL4015": "",
28
+ "470-mF": "",
29
+ "Polyfuse": "optional",
30
+ "TVS-diode": "",
31
+ "resistor": "7 x 330-470 Ω + N x 2.2 kΩ + N x 3.3 kΩ",
32
+ "LED": "green + red + yellow + 4 x blue",
33
+ "rpi-camera": "",
34
+ "PCB-single-14x9_5": "2 x",
35
+ "PCB-double-9x7": "2 x",
36
+ "pushbutton": "",
37
+ "ultrasonic-sensor": "4 x",
38
+ "connector": "1 female",
39
+ "nuts-bolts-spacers": " + ".join(
40
+ [
41
+ "M2: ({})".format(
42
+ " + ".join(
43
+ [
44
+ "2 x bolt",
45
+ "2 x 5 mm spacer",
46
+ "4 x nut",
47
+ ]
48
+ )
49
+ ),
50
+ "M2.5: ({})".format(
51
+ " + ".join(
52
+ [
53
+ "4 x bolt",
54
+ "8 x 10 mm spacer",
55
+ "4 x nut",
56
+ ]
57
+ )
58
+ ),
59
+ "M3: ({})".format(
60
+ " + ".join(
61
+ [
62
+ "1 x bolt",
63
+ "3 x 35 mm spacer",
64
+ "3 x 25 mm spacer",
65
+ "7 x 15 mm spacer",
66
+ "4 x 5 mm spacer",
67
+ "5 x nut",
68
+ ]
69
+ )
70
+ ),
71
+ ]
72
+ ),
73
+ "plexiglass": "14 cm x 9.5 cm",
74
+ "white-terminal": "2 x",
75
+ "dupont-cables": "1 x 30 cm + 1 x 10 cm",
76
+ "16-awg-wire": "40 cm x (red + black/blue)",
77
+ "solid-cable-1-15": "10 cm x (red + black/blue)",
78
+ "strong-thread": "1 m",
79
+ "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",
80
+ }
81
+
82
+
83
+ docs = [
84
+ design_doc(
85
+ "swallow-head",
86
+ items,
87
+ parts,
88
+ )
89
+ ]
@@ -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
@@ -5,6 +5,7 @@ from bluer_sbc.README.designs.swallow_head import marquee as swallow_head_marque
5
5
  from bluer_sbc.README.designs.bryce import marquee as bryce_marquee
6
6
  from bluer_sbc.README.designs.nafha import marquee as nafha_marquee
7
7
  from bluer_sbc.README.designs.shelter import marquee as shelter_marquee
8
+ from bluer_sbc.README.designs.adapter_bus import marquee as adapter_bus_marquee
8
9
  from bluer_sbc.README.designs.battery_bus import marquee as battery_bus_marquee
9
10
  from bluer_sbc.README.designs.ultrasonic_sensor_tester import (
10
11
  marquee as ultrasonic_sensor_tester_marquee,
@@ -17,6 +18,7 @@ docs = [
17
18
  + swallow_head_marquee
18
19
  + swallow_marquee
19
20
  + battery_bus_marquee
21
+ + adapter_bus_marquee
20
22
  + ultrasonic_sensor_tester_marquee
21
23
  + bryce_marquee
22
24
  + cheshmak_marquee
bluer_sbc/__init__.py CHANGED
@@ -4,7 +4,7 @@ ICON = "🌀"
4
4
 
5
5
  DESCRIPTION = f"{ICON} AI for single board computers and related designs."
6
6
 
7
- VERSION = "9.101.1"
7
+ VERSION = "9.168.1"
8
8
 
9
9
  REPO_NAME = "bluer-sbc"
10
10
 
bluer_sbc/config.env CHANGED
@@ -29,4 +29,4 @@ BLUER_SBC_SESSION_REBOOT_PERIOD=14400
29
29
  BLUER_SBC_SESSION_SCREEN_PERIOD=4
30
30
  BLUER_SBC_SESSION_TEMPERATURE_PERIOD=300
31
31
 
32
- BLUER_SBC_ENV=navigation
32
+ BLUER_SBC_ENV=navigation
bluer_sbc/env.py CHANGED
@@ -38,3 +38,7 @@ BLUER_SBC_SESSION_TEMPERATURE_PERIOD = get_env(
38
38
  BLUER_SBC_ENV = get_env("BLUER_SBC_ENV")
39
39
 
40
40
  BLUER_SBC_SWALLOW_HAS_STEERING = get_env("BLUER_SBC_SWALLOW_HAS_STEERING", 0)
41
+ BLUER_SBC_SWALLOW_HAS_FULL_KEYBOARD = get_env("BLUER_SBC_SWALLOW_HAS_FULL_KEYBOARD", 0)
42
+ BLUER_SBC_SWALLOW_HAS_BPS = get_env("BLUER_SBC_SWALLOW_HAS_BPS", 0)
43
+
44
+ BLUER_SBC_BPS_ANCHORED_AT = get_env("BLUER_SBC_BPS_ANCHORED_AT", "")
bluer_sbc/parts/db.py CHANGED
@@ -75,6 +75,7 @@ db_of_parts["rpi"] = Part(
75
75
  images=[
76
76
  "rpi3bplus.png",
77
77
  "gpio-pinout.png",
78
+ "rpi-measurements.png",
78
79
  ],
79
80
  )
80
81
 
@@ -365,7 +366,7 @@ db_of_parts["on-off-switch"] = Part(
365
366
 
366
367
  db_of_parts["charging-port"] = Part(
367
368
  info=[
368
- "charging port",
369
+ "charging port 5.5 mm",
369
370
  ],
370
371
  images=[
371
372
  "charging-port.jpg",
@@ -500,6 +501,114 @@ db_of_parts["tb6612"] = Part(
500
501
  ],
501
502
  )
502
503
 
504
+ db_of_parts["small-on-off-switch"] = Part(
505
+ info=[
506
+ "small on/off switch",
507
+ ],
508
+ images=[
509
+ "small-on-off-switch.jpg",
510
+ ],
511
+ )
512
+
513
+ db_of_parts["double-sided-tape"] = Part(
514
+ info=[
515
+ "double-sided tape.",
516
+ ],
517
+ images=[
518
+ "double-sided-tape.jpg",
519
+ ],
520
+ )
521
+
522
+ db_of_parts["electrical-tape"] = Part(
523
+ info=[
524
+ "electrical tape",
525
+ ],
526
+ images=[
527
+ "electrical-tape.jpg",
528
+ ],
529
+ )
530
+
531
+ db_of_parts["micro-usb-cable"] = Part(
532
+ info=[
533
+ "Micro USB cable",
534
+ ],
535
+ images=[
536
+ "micro-usb-cable.jpg",
537
+ ],
538
+ )
539
+
540
+ db_of_parts["charger-socket"] = Part(
541
+ info=[
542
+ "charger socket 5.5 mm",
543
+ ],
544
+ images=[
545
+ "charger-socket.jpg",
546
+ ],
547
+ )
548
+
549
+ db_of_parts["220VAC-dimmer"] = Part(
550
+ info=[
551
+ "220VAC dimmer",
552
+ ],
553
+ images=[
554
+ "220VAC-dimmer.jpeg",
555
+ ],
556
+ )
557
+
558
+ db_of_parts["resistance-heating-wire"] = Part(
559
+ info=[
560
+ "resistance heating wire",
561
+ ],
562
+ images=[
563
+ "resistance-heating-wire.jpg",
564
+ ],
565
+ )
566
+
567
+ db_of_parts["ceramic-terminal"] = Part(
568
+ info=[
569
+ "ceramic terminal",
570
+ ],
571
+ images=[
572
+ "ceramic-terminal.jpg",
573
+ ],
574
+ )
575
+
576
+ db_of_parts["mountable-digital-thermometer"] = Part(
577
+ info=[
578
+ "mountable digital thermometer",
579
+ ],
580
+ images=[
581
+ "mountable-digital-thermometer.jpeg",
582
+ ],
583
+ )
584
+
585
+ db_of_parts["pwm-manual-dc-motor-controller"] = Part(
586
+ info=[
587
+ "pwm manual DC motor controller, 12 V, ≥ 5 A",
588
+ ],
589
+ images=[
590
+ "pwm-manual-dc-motor-controller.jpg",
591
+ ],
592
+ )
593
+
594
+ db_of_parts["heater-element"] = Part(
595
+ info=[
596
+ "heater element",
597
+ ],
598
+ images=[
599
+ "heater-element.jpg",
600
+ ],
601
+ )
602
+
603
+ db_of_parts["sd-card-32-gb"] = Part(
604
+ info=[
605
+ "SD card, 32 GB",
606
+ ],
607
+ images=[
608
+ "sd-card-32-gb.jpg",
609
+ ],
610
+ )
611
+
503
612
  db_of_parts["template"] = Part(
504
613
  info=[
505
614
  "template",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: bluer_sbc
3
- Version: 9.101.1
3
+ Version: 9.168.1
4
4
  Summary: 🌀 AI for single board computers and related designs.
5
5
  Home-page: https://github.com/kamangir/bluer-sbc
6
6
  Author: Arash Abadpour (Kamangir)
@@ -47,9 +47,10 @@ pip install bluer_sbc
47
47
  | | | |
48
48
  | --- | --- | --- |
49
49
  | [`swallow head`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/swallow-head.md) [![image](https://github.com/kamangir/assets2/blob/main/swallow/design/head-v1/01.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/swallow-head.md) | [`swallow`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/swallow.md) [![image](https://github.com/kamangir/assets2/blob/main/swallow/design/v5/01.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/swallow.md) | [`battery bus`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/battery-bus.md) [![image](https://github.com/kamangir/assets2/raw/main/battery-bus/20251007_221902.jpg)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/battery-bus.md) |
50
- | [`ultrasonic-sensor-tester`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/ultrasonic-sensor-tester.md) [![image](https://github.com/kamangir/assets2/blob/main/ultrasonic-sensor-tester/00.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/ultrasonic-sensor-tester.md) | [`bryce`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) [![image](https://github.com/kamangir/assets2/blob/main/bryce/08.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) | [`cheshmak`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) [![image](https://github.com/kamangir/assets2/blob/main/cheshmak/01.png?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) |
51
- | [`nafha`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/nafha.md) [![image](https://github.com/kamangir/assets2/blob/main/nafha/01.png?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/nafha.md) | [`shelter`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/shelter.md) [![image](https://github.com/kamangir/assets2/raw/main/shelter/20251006_181554.jpg)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/shelter.md) | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/blue3-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) |
52
- | [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/chenar-grove-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/cube-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) | [`eye_nano`](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/eye_nano-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) |
50
+ | [`adapter bus`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/adapter-bus.md) [![image](https://github.com/kamangir/assets2/raw/main/adapter-bus/20251017_222911.jpg)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/adapter-bus.md) | [`ultrasonic-sensor-tester`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/ultrasonic-sensor-tester.md) [![image](https://github.com/kamangir/assets2/blob/main/ultrasonic-sensor-tester/00.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/ultrasonic-sensor-tester.md) | [`bryce`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) [![image](https://github.com/kamangir/assets2/blob/main/bryce/08.jpg?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/bryce.md) |
51
+ | [`cheshmak`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) [![image](https://github.com/kamangir/assets2/blob/main/cheshmak/01.png?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/cheshmak.md) | [`nafha`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/nafha) [![image](https://github.com/kamangir/assets2/blob/main/nafha/01.png?raw=true)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/nafha) | [`shelter`](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/shelter) [![image](https://github.com/kamangir/assets2/raw/main/shelter/20251104_000755.jpg)](https://github.com/kamangir/bluer-sbc/blob/main/bluer_sbc/docs/shelter) |
52
+ | [`blue3`](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/blue3-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/blue3.md) | [`chenar-grove`](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/chenar-grove-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/chenar-grove.md) | [`cube`](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/cube-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/cube.md) |
53
+ | [`eye_nano`](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) [![image](https://github.com/kamangir/blue-bracket/raw/main/images/eye_nano-1.jpg)](https://github.com/kamangir/blue-bracket/blob/main/designs/eye_nano.md) | | |
53
54
 
54
55
  ## shortcuts
55
56
 
@@ -66,7 +67,7 @@ pip install bluer_sbc
66
67
 
67
68
  [![pylint](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pylint.yml) [![pytest](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/pytest.yml) [![bashtest](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml/badge.svg)](https://github.com/kamangir/bluer-sbc/actions/workflows/bashtest.yml) [![PyPI version](https://img.shields.io/pypi/v/bluer-sbc.svg)](https://pypi.org/project/bluer-sbc/) [![PyPI - Downloads](https://img.shields.io/pypi/dd/bluer-sbc)](https://pypistats.org/packages/bluer-sbc)
68
69
 
69
- built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-9.101.1`](https://github.com/kamangir/bluer-sbc).
70
+ built by 🌀 [`bluer README`](https://github.com/kamangir/bluer-objects/tree/main/bluer_objects/README), based on 🌀 [`bluer_sbc-9.168.1`](https://github.com/kamangir/bluer-sbc).
70
71
 
71
72
 
72
73
  built by 🌀 [`blueness-3.118.1`](https://github.com/kamangir/blueness).
@@ -1,7 +1,7 @@
1
- bluer_sbc/__init__.py,sha256=LQHGDUv7yGAKF-uggshpSh59ZMXp58D9k_O9TCCfF5M,312
1
+ bluer_sbc/__init__.py,sha256=lVd6__xpp_wNUzQu08Bmgf1HelmNZi4p1QRyEHDXJtA,312
2
2
  bluer_sbc/__main__.py,sha256=mdHwITYb7ypMkevZnEBqFO-S4MYkdrTfbS8ZYTd5MBM,374
3
- bluer_sbc/config.env,sha256=Lp91dQZrPDtMO-87-pAw1wOqLMIYEI1MlNrXhvKMaoE,706
4
- bluer_sbc/env.py,sha256=saEjdk3FHmuK-WQUUpKfOatwmE93Y2Ula3rtGhRm0Zw,1745
3
+ bluer_sbc/config.env,sha256=kPRvRowaTxEusZE66ME0asy4_cngYh2xcQlFvixvS5I,705
4
+ bluer_sbc/env.py,sha256=Bc8Wjz9e2E2Zv6-POjqil4dgjXAKkeMZh3DoKRw2HlE,1971
5
5
  bluer_sbc/host.py,sha256=RacmqxPRBQrL--JHx_Q-KyuEjEZ1kSFu4fa5pCA0CHQ,209
6
6
  bluer_sbc/logger.py,sha256=4euXgNprDpQSuR45RXy0kWQ1LvCL_dwOi2v37hVBWvk,99
7
7
  bluer_sbc/sample.env,sha256=mX86TGaZvbbGKbiXQdInSBu7sVvLs2IzqYaHNVl0g5M,50
@@ -37,6 +37,7 @@ bluer_sbc/.abcli/seed/headless_rpi_64_bit.sh,sha256=1DzrVSSNIvKLW8J1fI7Iqepk1cB2
37
37
  bluer_sbc/.abcli/seed/headless_ubuntu_rpi.sh,sha256=QQRkOLstdWequW4eutQPimhKwT1yHtHNRUJNhKN3FZ0,2512
38
38
  bluer_sbc/.abcli/seed/jetson.sh,sha256=QAvc-6aQwZ5oEhV5oruGfyFUwftsrPnO_d_7ryRQRkk,971
39
39
  bluer_sbc/.abcli/seed/rpi.sh,sha256=HzCcPnuC2DneMtiHawD6tjcgLuyCstljl-A90kmpDeg,968
40
+ bluer_sbc/.abcli/seed/rpi_64_bit.sh,sha256=eGdViHHnf9rDuBT8YOf-xVApKgkaA6K98wOppyjQymE,1219
40
41
  bluer_sbc/.abcli/seed/swallow_raspbian.sh,sha256=QK9YSkLA0_j5D_r8cp5DENLKhnczUj4a40O4w68ER98,363
41
42
  bluer_sbc/.abcli/tests/README.sh,sha256=0hp3y_URdsFtnYw5Ujty6xy5SNhNHGEVPqpQoYxu0WA,142
42
43
  bluer_sbc/.abcli/tests/camera.sh,sha256=NRr-RbyNORMSHYxNu6VUpVzHIJ2Qy-5NQr2qh54kqUg,1013
@@ -47,32 +48,26 @@ bluer_sbc/.abcli/tests/version.sh,sha256=odDOmAFlzH7KtsAYWOmyLsQ6GAws6XadNlZ6H-N
47
48
  bluer_sbc/README/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
48
49
  bluer_sbc/README/aliases.py,sha256=jv6YlFBk7Bn72MEutmZ6UpELpLQs_i3_3Rm8BlPMc5g,161
49
50
  bluer_sbc/README/build.py,sha256=42pCUarnbdwxuWci1GnCSWMtkt5P-zbiyHRd6ItVMqc,862
50
- bluer_sbc/README/design.py,sha256=gktc7rLWf32XXCVBSJyoVeC3mrGPzPnLDJsVZklCEik,794
51
- bluer_sbc/README/parts.py,sha256=pIF2dzEuXeBi_M8dPEg2GM9dpAgL3EzKgvm0KwrmQFU,382
52
- bluer_sbc/README/root.py,sha256=A8mjA2vqMhUMCef6JfF_Pg9-p6fAQRRvOP9HRggohPA,1180
51
+ bluer_sbc/README/design.py,sha256=UpY8GiE5mNzZndasRCVYROl1OA_If2wqs2SR3HdC29E,987
52
+ bluer_sbc/README/parts.py,sha256=RexP6RRCt2w8Lg8e-_QwP70RzyPyc-AKAycpeK9m5r4,731
53
+ bluer_sbc/README/root.py,sha256=WYUpmpDrkGtwSDV9wiodn_bL1hbl56WlykjWXV7UQiI,1290
53
54
  bluer_sbc/README/shortcuts.py,sha256=Pu7e83Vpz9mZv717jzOluJnGXwo22bUJPZ122NPjUpM,390
54
- bluer_sbc/README/designs/__init__.py,sha256=pgiqjy3TnqTvhMGvepRR--G9gyDNhCQhec8cwzNeHr8,1860
55
- bluer_sbc/README/designs/battery_bus.py,sha256=-neRjUhQO3hh_XjGR11tbnye6gYaBdBkL0sHLLXQIyg,960
55
+ bluer_sbc/README/designs/__init__.py,sha256=-afJImcOdHrprhJseJfHsHEGiKMg20EeNlrlp_jE0CY,428
56
+ bluer_sbc/README/designs/adapter_bus.py,sha256=sO0oRklT60vXRlwdEXALxI0jOlI2p4XEMHqOIKF1LCo,1208
57
+ bluer_sbc/README/designs/battery_bus.py,sha256=9Q314G5OMIA2NYxgPTIM8ga7X-yAcxvk78T8r1KDGd4,1119
56
58
  bluer_sbc/README/designs/blue_bracket.py,sha256=4p80wXEAbn4y7jXrTqK1KFrtcQYJ3zdeBiDWR8E4aCI,866
57
- bluer_sbc/README/designs/bryce.py,sha256=9mfOoMy9Rk1AITj480CoLYdgzWNraAwwypc5kVpEB_Q,474
58
- bluer_sbc/README/designs/cheshmak.py,sha256=fG0zRc6vVm5Nj07Juq13PPGp0ZUWyLqA9-nAUpnzr1Q,483
59
+ bluer_sbc/README/designs/bryce.py,sha256=u6C09hXunGUPpVZVPHKcSdUoDyg1slUzq0AHzCStjV8,587
60
+ bluer_sbc/README/designs/cheshmak.py,sha256=ymLxh4XPurzIoVuFh-ZxWJ54KUIcKScY3uPH6gnD29s,600
59
61
  bluer_sbc/README/designs/consts.py,sha256=de1X1_0CESgSGYUI8dGh8RBoYtu_G3NrBsFvuSdHJWk,59
60
- bluer_sbc/README/designs/nafha.py,sha256=7IOfF_bfWaPNeV-VEXjsXjkydxJKlRTQX6rEOAtmSSc,474
61
- bluer_sbc/README/designs/shelter.py,sha256=uFmhEvXMRBmwE0zXdb37xWt8FnayXijZgfLX2_soxhc,853
62
- bluer_sbc/README/designs/swallow.py,sha256=jyl_oJNsTcBGzDLDAYRt-Vi-YmuuEt3iSCNTxaUKRXI,491
63
- bluer_sbc/README/designs/swallow_head.py,sha256=dDGTjEbTiELTPQxGZ7fJeq2F9fJpGg-umP8fz7bZlBg,506
64
- bluer_sbc/README/designs/ultrasonic_sensor_tester.py,sha256=fljUikScYa9Y2tcMs7QRwYbUd-NA59Pc7IQtyZyA2w0,524
65
- bluer_sbc/README/designs/x.py,sha256=1AmuFV4WmVwE8lwZMn_juwFSlwC2VHVgcDbkCdAt_FM,474
62
+ bluer_sbc/README/designs/nafha.py,sha256=xIVQB30mxtORNAsVTjgMvcAs4qzL92mlwO3IM8n6t5M,1279
63
+ bluer_sbc/README/designs/shelter.py,sha256=3V0VVZ_MqTv7OvwOFJLHJq93VsxCVHl0EwrTMTIMwLM,1470
64
+ bluer_sbc/README/designs/swallow.py,sha256=FosdJYthZOIrNRgiUJpwW_5ngJiORMYUyHi0LajJOFQ,978
65
+ bluer_sbc/README/designs/swallow_head.py,sha256=sKz0Tim3HcXQ27IELsoTUPeTNhxxKxh1KZ3IWezEfgQ,2346
66
+ bluer_sbc/README/designs/template.py,sha256=SY7PjPf219TDGyhwzHGtF67cylhNl4zJKqWqAfVu57U,618
67
+ bluer_sbc/README/designs/ultrasonic_sensor_tester.py,sha256=8LOGpQ61zbiO5a4kutY5uMfZHLRz9SBKUacyx2MdpjA,656
66
68
  bluer_sbc/ROS/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
67
69
  bluer_sbc/algo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
68
70
  bluer_sbc/algo/diff.py,sha256=ZCUkRgip-Uss86r--RuEwyYtFjpukM3fbY_yovXwgNw,2190
69
- bluer_sbc/designs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
- bluer_sbc/designs/battery_bus/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
71
- bluer_sbc/designs/battery_bus/parts.py,sha256=nmstgbDftDUE5N4HS4x7RE_QSKUdHVm1ieNlwtL1tb4,114
72
- bluer_sbc/designs/swallow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
73
- bluer_sbc/designs/swallow/parts.py,sha256=MDp3AKD6D5Bn2S35BcF2iRov9gqvuRk_luX1r6s64cg,364
74
- bluer_sbc/designs/swallow_head/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
- bluer_sbc/designs/swallow_head/parts.py,sha256=b1gi1B-923emUCobDmAkWQgqNFiili3F5YsE40Hj_o4,1686
76
71
  bluer_sbc/hardware/__init__.py,sha256=EW_u4fRXPVpAO47EaLZn0Vxo_rfE9a1O4cPdl_w6vOI,1421
77
72
  bluer_sbc/hardware/adafruit_rgb_matrix.py,sha256=4xFRghBXJWkDDOhPvO-Yt6xY61D451KKxjrUL8ZxXQ8,803
78
73
  bluer_sbc/hardware/display.py,sha256=bRjemItjmF3tJcWxP3e2lVB5Ul8br3_3PcJhfrBT7mY,3057
@@ -116,15 +111,15 @@ bluer_sbc/imager/lepton/python2.py,sha256=1jAHHzmda_bmqKj0b0X-2KONW5s9umxKaTY4Zi
116
111
  bluer_sbc/parts/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
117
112
  bluer_sbc/parts/__main__.py,sha256=8gIFylyfCv35e3VOlt0LY_K4oCMdmW9OFkj54bFab9k,903
118
113
  bluer_sbc/parts/consts.py,sha256=UIld-5czxqoAtMTeTZM4LQZXC-CXU53LVmVzFekZLJQ,98
119
- bluer_sbc/parts/db.py,sha256=zEBPGkxtKRX-6Dnb9DZWO3ERUi2d_awZWmjhMsiWQPY,11791
114
+ bluer_sbc/parts/db.py,sha256=IM5d1MgkS5iUIyx6a0_CfLxC-2t7skH12I4AjmBPL80,13626
120
115
  bluer_sbc/parts/classes/db.py,sha256=Yij--zP566wBpXFoKWsGQddrM28otTVvoez-4Qj2Rtg,6551
121
116
  bluer_sbc/parts/classes/part.py,sha256=tKXjipFRwu0-Gc53VXivwaeqhyYr9uunG6EUzcdr_x8,2181
122
117
  bluer_sbc/session/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
123
118
  bluer_sbc/session/__main__.py,sha256=O2Tv6HgE8Bos7ASIViYludpWVi6EEc9XRoP8jYC2-2Q,534
124
119
  bluer_sbc/session/classes.py,sha256=6pEh-TBjekUZBbWj_zKh3LAntAoGfcMHtS2SJ77nyC8,9355
125
120
  bluer_sbc/session/functions.py,sha256=eRJKSczRjKn3Fo2jv8_4EMAZwfJBj5cIPg2WqHkC2Q8,481
126
- bluer_sbc-9.101.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
127
- bluer_sbc-9.101.1.dist-info/METADATA,sha256=dv4cn4SXwes4Ene3rwnOO-FVLH0NDwGxrQ4ynoW7wxY,5748
128
- bluer_sbc-9.101.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
129
- bluer_sbc-9.101.1.dist-info/top_level.txt,sha256=DsLDHFiTeAj2mctGVmCSgWUhzCznWSQoUmQ1VyEmnT0,10
130
- bluer_sbc-9.101.1.dist-info/RECORD,,
121
+ bluer_sbc-9.168.1.dist-info/licenses/LICENSE,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
122
+ bluer_sbc-9.168.1.dist-info/METADATA,sha256=I26l_Q9fNJli4otxBb1iIslvhtSlteD1qfxDIxXFbHs,6010
123
+ bluer_sbc-9.168.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
124
+ bluer_sbc-9.168.1.dist-info/top_level.txt,sha256=DsLDHFiTeAj2mctGVmCSgWUhzCznWSQoUmQ1VyEmnT0,10
125
+ bluer_sbc-9.168.1.dist-info/RECORD,,
File without changes
File without changes
@@ -1,6 +0,0 @@
1
- dict_of_parts = {
2
- "SLA-Battery": "",
3
- "on-off-switch": "",
4
- "charging-port": "",
5
- "dsn-vc288": "",
6
- }
File without changes
@@ -1,15 +0,0 @@
1
- dict_of_parts = {
2
- "BTS7960": "2 x",
3
- "connector": "2 females",
4
- "white-terminal": "8 x",
5
- "nuts-bolts-spacers": "M3: ({})".format(
6
- " + ".join(
7
- [
8
- "8 x 25 mm spacer",
9
- "4 x 30 mm spacer",
10
- "4 x nut",
11
- ]
12
- )
13
- ),
14
- "solid-cable-1-15": "20 cm x (red + black/blue)",
15
- }
File without changes
@@ -1,56 +0,0 @@
1
- dict_of_parts = {
2
- "rpi": "",
3
- "XL4015": "",
4
- "470-mF": "",
5
- "Polyfuse": "optional",
6
- "TVS-diode": "",
7
- "resistor": "7 x 330-470 Ω + N x 2.2 kΩ + N x 3.3 kΩ",
8
- "LED": "green + red + yellow + 4 x blue",
9
- "rpi-camera": "",
10
- "PCB-single-14x9_5": "2 x",
11
- "PCB-double-9x7": "2 x",
12
- "pushbutton": "",
13
- "ultrasonic-sensor": "4 x",
14
- "connector": "1 female",
15
- "nuts-bolts-spacers": " + ".join(
16
- [
17
- "M2: ({})".format(
18
- " + ".join(
19
- [
20
- "2 x bolt",
21
- "2 x 5 mm spacer",
22
- "4 x nut",
23
- ]
24
- )
25
- ),
26
- "M2.5: ({})".format(
27
- " + ".join(
28
- [
29
- "4 x bolt",
30
- "8 x 10 mm spacer",
31
- "4 x nut",
32
- ]
33
- )
34
- ),
35
- "M3: ({})".format(
36
- " + ".join(
37
- [
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
- "5 x nut",
44
- ]
45
- )
46
- ),
47
- ]
48
- ),
49
- "plexiglass": "14 cm x 9.5 cm",
50
- "white-terminal": "2 x",
51
- "dupont-cables": "1 x 30 cm + 1 x 10 cm",
52
- "16-awg-wire": "40 cm x (red + black/blue)",
53
- "solid-cable-1-15": "10 cm x (red + black/blue)",
54
- "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",
56
- }