You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+59-3Lines changed: 59 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
A control panel for under my desk that allows me to control my KVM as well as other peripherals.
6
6
7
-
A MCU like an ESP32 enables a fancier interface with a 0.96" OLED screen.
7
+
A MCU like an ESP32-C3 enables a fancier interface with a 0.96" OLED screen.
8
8
9
9
### Peripherals
10
10
@@ -37,6 +37,8 @@ When active, the LED has a 1.8V potential difference. However, relative to a sha
37
37
| ON | 1.8V | 0V | OFF | 0V | 0V |
38
38
| OFF | 3.3V | 3.3V | ON | 0V | 1.8V |
39
39
40
+
> Due to lack of pins on the ESP32-C3, the state of the HDMI Switches will *not* be monitored by the ESP32-C3. The latching switches should be sufficient for state UI.
41
+
40
42
#### USB Hub Switch
41
43
42
44
The USB hub switch directs 4 USB ports between upstream computer A or upstream computer B.
@@ -74,17 +76,27 @@ P_total = V_in × I_total
74
76
= 0.833 mW
75
77
```
76
78
79
+
> Since the USB hub switch is triggered with a momentary switch rather than a latching switch, the ESP32-C3 will monitor state for presentation to the user on the OLED screen. The monitored pins are `LED A Pin 1` and `LED B Pin 1`.
80
+
77
81
#### Speaker Channels
78
82
79
83
There is currently two toggle switches that are manually spliced into the 3.5mm audio cables from two computers to direct the output from each computer to the speaker left and right channels.
80
84
This implementation will remain the same as this simple analog switching is working well.
81
85
86
+
> The toggle switches are sufficient state UI and therefore does not require monitoring by the ESP32-C3.
87
+
88
+
-[x] Refine design of enclosure
89
+
- Orient inputs and outputs on the same side
90
+
- Use PETG instead of PLA for better durability
91
+
- Use fuzzy skin to camouflage layer lines for improved aesthetics
92
+
-[~] Redo connections to use hot-swappable DuPont connectors and longer, more flexible stranded wires
93
+
82
94
#### USB Power
83
95
84
96
Control USB power using MOSFETs. Planned USB-powered peripherals include:
85
97
86
98
- Pyle PAD43MXUBT Audio Mixer (500mA @ 5V)
87
-
-Arduino LED sign (200mA @ 5V)
99
+
-Meeting Sign (200mA @ 5V)
88
100
89
101
To be triggered by an ESP32, this should be accomplished with a _logic level_ P-Channel MOSFET. The MOSFET should be logic level in order to be driven by a 3.3V ESP32 directly. The IRLML6402 is widely available and cheaper but without features like short-circuit and thermal protection of a dedicated USB Switch IC.
90
102
@@ -95,11 +107,47 @@ Using the P-Channel MOSFET should include
95
107
- A 1kΩ inline series gate resistor to reduce inrush current and EMI when switching the gate. [Source](https://www.build-electronic-circuits.com/mosfet-gate-resistor/)
96
108
- A 10kΩ pull-up resistor to ensure the MOSFET stays off during MCU boot/reset, while the GPIO is floating.
97
109
110
+
##### Meeting Sign
111
+
112
+
An [existing project](https://github.com/noahbaculi/embedded-meeting-sign) that is USB-powered and utilizes an Arduino Nano to countdown a timer and indicate the remaining duration on a series of LEDs.
113
+
114
+
-[x] Rewrite firmware
115
+
-[x] Use the ESP32-C3 instead of the Arduino Nano in order to use consistent `esp-hal` and `embassy` tooling
116
+
-[x] Allow the timer to be controlled via UART
117
+
-[x] If no UART commands are received, there should be a default timer
118
+
-[x] There should be a `SENSE` connection between the Meeting Sign ESP32-C3 and the Control Panel ESP32-C3 that allows the Control Panel to detect if the Meeting Sign is online
119
+
- This can be a Meeting Sign output that is set high when the Meeting Sign is online and low when it is not
120
+
- The Control Panel can use this signal on an input with a pull-down resistor to determine if the Meeting Sign is online and display the status on the OLED screen
121
+
-[~] Once a timer completes, the ESP32-C3 should go into deep sleep
122
+
-[ ] Archive the previous version of the repository with a link to this new version
123
+
-[x] Refine design of enclosure
124
+
-[x] Shrink footprint thanks to smaller size of the ESP32-C3
125
+
-[~] Use USB-C socket instead of Arduino Nano's micro USB for power
126
+
-[~] Use power switch for manual operation if not using the Meeting Sign with the Control Panel
127
+
98
128
### Important Concepts
99
129
100
130
- Make sure to connect the grounds of all the peripherals.
0 commit comments