I haven't figured out the complete picture of what I want for the controller, but it's almost a certainty that I'll use an ESP32. As I write this, the pin assignments are a bit arbitrary and only intended to convince me that I have enough of whatever pins I need. I'll be updating this table over time.
Although I expect to only use 3 fans, I have enough GPIO pins to design for 4 fans (and even a few left over). I expect to use a PWM pin and a tachometer pin separately for each fan (F1, F2, F3, F4). Most PWM fans don't stop completely even at a 0% duty cycle, so I'll use a MOSFET to explicitly control the power lines for each fan. I'll use the I2C interface for a temperature sensor. I'm not sure yet what button, rotary encoders, LEDs, or display I'll use.
This table is based on the more or less standard ESP-WROOM-32 development boards with 30 or 38 pin headers. I plan to use the 38 pin variant. The I/O recommendations in the Specialization column are based on the chart from here (I've seen similar charts on other web sites; this is the one I consult). "I" means OK for input; "(I)" means OK for input with some caveat. Similar notation for outputs.
Pin (30) | Pin (38) | GPIO | Specialization | My usage |
---|---|---|---|---|
- | 25 | 0 | adc11 - touch1 [(I)(O)] | |
28 | 35 | 1 | tx0 [(O)] | |
19 | 24 | 2 | adc12 - touch2 [I O] | |
27 | 34 | 3 | rx0 [(I)] | |
20 | 26 | 4 | adc10 - touch0 [I O] | |
23 | 29 | 5 | VSPI CS [I O] | |
- | 20 | 6 | SPI flash CK | - |
- | 21 | 7 | SPI flash D0 | - |
- | 22 | 8 | SPI flash D1 | - |
- | 16 | 9 | SPI flash D2 - rx1 | - |
- | 17 | 10 | SPI flash D3 - tx1 | - |
- | 18 | 11 | SPI flash CMD | - |
12 | 13 | 12 | HSPI MISO - adc15 - touch5 [(I) O] | F3-PWR |
13 | 15 | 13 | HSPI MOSI - adc14 - touch4 [I O] | F2-PWR |
11 | 12 | 14 | HSPI CLK - adc16 - touch6 [I O] | F1-PWR |
18 | 23 | 15 | HSPI CS - adc13 - touch3 [I O] | F3-PWM |
21 | 27 | 16 | rx2 [I O] | F1-PWM |
22 | 28 | 17 | tx2 [I O] | F2-PWM |
24 | 30 | 18 | VSPI CLK [I O] | F4-PWM |
25 | 31 | 19 | VSPI MISO [I O] | F4-tach |
- | - | 20 | - | - |
26 | 33 | 21 | I2C SDA [I O] | I2C SDA |
29 | 36 | 22 | I2C SCL [I O] | I2C SCL |
30 | 37 | 23 | VSPI MOSI [I O] | F4-PWR |
- | - | 24 | - | - |
8 | 9 | 25 | adc18 - dac1 [I O] | F1-tach |
9 | 10 | 26 | adc19 - dac2 [I O] | F2-tach |
10 | 11 | 27 | adc17 - touch7 [I O] | F3-tach |
- | - | 28 | - | - |
- | - | 29 | - | - |
- | - | 30 | - | - |
- | - | 31 | - | - |
6 | 7 | 32 | adc4 - touch9 [I O] | |
7 | 8 | 33 | adc5 - touch8 [I O] | |
4 | 5 | 34 | Input only - adc6 [I] | |
5 | 6 | 35 | Input only - adc7 [I] | |
2 | 3 | 36 | Input only - adc0 [I] | |
- | - | 37 | - | - |
- | - | 38 | - | - |
3 | 4 | 39 | Input only - adc3 [I] | |
16 | 1 | - | 3.3v | |
1 | 2 | - | enable/reset | |
14 | 14 | - | gnd | |
15 | 19 | - | Vin 5v | |
17 | 32 | - | gnd | |
- | 38 | - | gnd |
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.