So meanwhile I have decided to stay with the ESP32 micro controller as my preferred solution to turn the signal of the additional buttons into commands for the hypervisor to start and stop VMs.
I also sorted out the issue with the connections to my computer. It seems that I had an old/wrong driver for the CP210x USB to UART Bridge installed, that I had to remove first.
Then I installed the latest drivers from Silicon Labs and it works like a charm.
The next issue was the SSH client that I wanted to use to login to the hypervisor from the ESP32. I spent a whole Sunday to troubleshoot the package I found on GitHub. Long story short, I could not get it work, somewhere in the hex.c I lost it and had no desire to continue.
But, then I tried the precompiled micro python package from Boris Lovosevic:
https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo/wiki
It is basically a python interpreter that you install as new firmware on the ESP32. First I was sceptic because I did lose the ability to use the Arduino style C to program the ESP32, with all the existing libraries. But then I realized that this package had everything I needed and more.
Also I did some python scripting in the past, so this was not completely new to me.
But most important, it contain a working SSH client that already had a function to remotely execute commands. It worked on the first try.
Shortly after that I had another idea. The fan control outputs on my Gigabyte Designare are not enough to control all the fans I have. Alphacool recommended to get 6 fans for my monster radiator, 3 pull and 3 push fans.
Hey, I have an ESP32 with a lot of unused pins. To my luck the ESP32 can do PWM and the micro python package from Boris has a lib for that. The next problem would be the tacho signal for the fans.
I already did some research how exactly the tacho signal and the PWM control for PC fans work, when I built my first water cooled Prusa MK3 3D printer clone with water cooling.
Noctua provides a white paper on more details about the PWM and the tacho signal:
https://noctua.at/media/wysiwyg/Noctua_PWM_specifications_white_paper.pdf
And there is also the definition from Intel from 2004.
Basically PWM means that the fan is turned on/off with a square wave signal. The rate between the high(on) and low(off) signal is promotional to the speed of the fan. This works much better as lowering the voltage of fan to regulate the speed. A frequency of 25KHz is used for the square wave signal to avoid any noise.
The PWM input on 3/4 pin PWM PC fans have an internal pull up resistor to 5V or 3.3V, even if the fan has a supply voltage of 12V.
The most GPIO pins on the ESP32 can be used for a PWM signal. Only problem is that the ESP32 needs 3.3V for the signals and will be damaged if you connect it to 5V.
Even thought Intel recommended already in 2004 to use an internal pull up resistor to 3.3V instead of 5V, in the Noctua White paper they have written 5V all over the document, except for on sentence.
But there is an easy way to determine if the pull up is to 3.3V or 5V. When the fan is powered up with the 12V supply voltage and nothing connected to the PWM input, you can use a simple multimeter to measure the voltage between ground and the PWM input.
If it is 3.3V you can directly connect it to the ESP32, maybe add a resistor to limit the current.
In the case of a 5V internal pull up, you need a little voltage divider circuit to limit the voltage to the 3.3V.
The tacho signal is an open drain output. You can use a 10KΩ pull up resistor to 3.3Vcc for the connection to the ESP32. But I was curious if the ESP32 could measure the frequency to get the rpm of the fan.
And the frequency is proportional to the rpm. You get 2 pulses from the hall sensor per rotation of the fan. The max RPM of the NF-F12 I use is 1500RPM which translates into 50Hz.
fan speed [rpm] = frequency [Hz] × 60 ÷ 2
1500 rpm = 50 Hz *60 ÷ 2
I will try to use an IRQ to time the signal and get a value for the rpm. It will not be perfect, but for a fan control absolutely sufficient.
I have enough GPIOs left on the ESP32 to control all 6 fans.
The last element will be a temperature sensor for the water. I will use a analog input with a simple circuit to get a value for the temperature.
When I was shopping at Aliexpress I was tempted to order a small LCD or OLED display for the ESP32. I could display the water temperature, fan speeds or display what VM is started/stopped.
But then I realized that those display take up a lot of the GPIO ports.
On ebay I found 2 very good deals this week.
1) I was looking for the Dark Power Pro 11 power supply from beQuiet! with 1200W. I found that beQuiet! has a official store with refurbished ps. Then I found another dealer who offered the ps from a show case with 0 operating hours and full warranty. I made an offer and got it for only 180€, that is 100€ less than the official list price. It came with all the cables and was in perfect condition.
2) Noctua has also an official store at ebay and sell refurbished fans with full 6 year warranty. I bought my 6 fans there in bulk and saved quite a bit of money as well. Unfortunately they did not come with ANY accessories expect for 30cm cables. So the anti vibration pads were missing as well. As I only wanted to have the white ones I got them after friendly asking and reminding that the product photo show the fans with all accessories
I was also hoping to see a price drop for the Intel Core i9 9900 now that Intel announced the new line of CPU. But Intel did not lower any prices, instead you can get the new more powerful CPU for the same price as the old ones. My hope is that the sellers will start to sell off the old CPU for a lower price. The CPU is the last missing piece for my built.
Samstag, 12. Oktober 2019
Mittwoch, 2. Oktober 2019
Calculating the Specs for the PS and finishing the power buttons details.
After some tests with acpid daemon on linux and scripts to monitor the power button, I am not happy how this turned out. It is difficult to detect a single press vs a double press as you have to store the 1 press for a short time and then please it again.
So I am back to my idea to use some extra buttons in my chassis. I even managed to get some nice aluminum buttons with LED light. Then I had the idea that I still have some ESP8266 development board lying around. They have WLAN onboard and should be up for the task.
But I was not able to find a SSH client on this platform, but for successor the ESP32. So I ordered one in form of a development board.
There is a SSH client that can be used in Arduino https://github.com/J-Rios/Arduino-esp32sshclient .
Even though the author does not recommend it for usage in production, I guess for my purpose it should be ok.
The other option is to use MicroPython on the ESP32. I would have to flash a new firmware, but would get more programming options as python is a more powerful language than the Arduino IDE. There is a SSH client as well, but as it uses libssh2 also, it might have the same issues as the other client. https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo/wiki/ssh
I would have started testing both, if I could connect to the board on any of my Macs. For some reason I see the CP2102 USB to UART Bridge Controller in the system report under USB connections. But I cannot get the /dev/tty.SLAB_USBtoUART even I have installed the driver from Silicon Labs https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers .
So once I have figured that out, I can see which is the easiest way to implement this.
The other obstacle is that those nice 12mm button I have found have an integrated LED that runs on 12V, because the are supposed to be used in cars. There is 12V from the pc power supply, but I need to design a small transistor output to drive this with the ESP32 IO ports. So I will add a little perf board to solder the required components together.
On the pc hardware side I made some progress as well. I had a email exchange with Alphacool and got some recommendations. They also replied to my request on the bad reviews of the VPP755 pump and stated that the Version 3 has several changes to address the issues, like ceramic bearings for example. The other recommendation they gave me is to use 6 instead of 3 fans on NexXxoS Monsta 360mm Radiator. Because it is so thick, one set of fans might not ba able to push/suck enough air thru. So I will need 6 of the Noctua fans, 3 will push and 3 will pull air form the other side.
With this setup they were also confident that this one radiator will be enough to cool the CPU and 2 GPU under full load.
I also used the power calculator from beQuiet!. I already estimated around 800W (200W for the CPU and 300W for each GPU) and was prepared to go for the 1000W Dark Power Pro 11 PS. But using the power calculator took also the water cooling, fans and SSD/HDD in consideration and calculated a power consumption between 990W and 1090W depending on the number of drives, fans and loads you add to the USB ports.
Usually I like to go much higher with the PS than I need, just because I hope the fans on the PS will not start as often as if I would be close to the max. But here I don't have a lot options, so the 1200W Dark Power Pro 11 will be the one for my build.
So I am back to my idea to use some extra buttons in my chassis. I even managed to get some nice aluminum buttons with LED light. Then I had the idea that I still have some ESP8266 development board lying around. They have WLAN onboard and should be up for the task.
But I was not able to find a SSH client on this platform, but for successor the ESP32. So I ordered one in form of a development board.
There is a SSH client that can be used in Arduino https://github.com/J-Rios/Arduino-esp32sshclient .
Even though the author does not recommend it for usage in production, I guess for my purpose it should be ok.
The other option is to use MicroPython on the ESP32. I would have to flash a new firmware, but would get more programming options as python is a more powerful language than the Arduino IDE. There is a SSH client as well, but as it uses libssh2 also, it might have the same issues as the other client. https://github.com/loboris/MicroPython_ESP32_psRAM_LoBo/wiki/ssh
I would have started testing both, if I could connect to the board on any of my Macs. For some reason I see the CP2102 USB to UART Bridge Controller in the system report under USB connections. But I cannot get the /dev/tty.SLAB_USBtoUART even I have installed the driver from Silicon Labs https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers .
So once I have figured that out, I can see which is the easiest way to implement this.
The other obstacle is that those nice 12mm button I have found have an integrated LED that runs on 12V, because the are supposed to be used in cars. There is 12V from the pc power supply, but I need to design a small transistor output to drive this with the ESP32 IO ports. So I will add a little perf board to solder the required components together.
On the pc hardware side I made some progress as well. I had a email exchange with Alphacool and got some recommendations. They also replied to my request on the bad reviews of the VPP755 pump and stated that the Version 3 has several changes to address the issues, like ceramic bearings for example. The other recommendation they gave me is to use 6 instead of 3 fans on NexXxoS Monsta 360mm Radiator. Because it is so thick, one set of fans might not ba able to push/suck enough air thru. So I will need 6 of the Noctua fans, 3 will push and 3 will pull air form the other side.
With this setup they were also confident that this one radiator will be enough to cool the CPU and 2 GPU under full load.
I also used the power calculator from beQuiet!. I already estimated around 800W (200W for the CPU and 300W for each GPU) and was prepared to go for the 1000W Dark Power Pro 11 PS. But using the power calculator took also the water cooling, fans and SSD/HDD in consideration and calculated a power consumption between 990W and 1090W depending on the number of drives, fans and loads you add to the USB ports.
Usually I like to go much higher with the PS than I need, just because I hope the fans on the PS will not start as often as if I would be close to the max. But here I don't have a lot options, so the 1200W Dark Power Pro 11 will be the one for my build.
Abonnieren
Posts (Atom)
