PI4-ICE-TOWER-FAN

From Waveshare Wiki
Jump to: navigation, search
PI4-ICE-TOWER-FAN
PI4-ICE-TOWER-FAN
PI4-ICE-TOWER-FAN-B
PI4-ICE-TOWER-FAN-B.jpg
{{{name3}}}

{{{name4}}}

{{{name5}}}

Introduction

Overview

This is an ultra-thin ice tower cooler that only supports Raspberry Pi 4B. It includes ultra-thin fans and supports fan speed regulation. The speed can be controlled by programming the GPIO pins of the Raspberry Pi, and the heat sink is ultra-thin.

Features

  • Ultra Thin
  • Support fan speed regultion
  • Support Raspberry Pi 4B ONLY
  • Good Heat dissipation effect
  • 4010 speed-adjustable Fan with PWM

Gallery

NOTE: Raspberry Pi 4B is not included in the package, need additional purchase.
  • PI4-ICE-TOWER-FAN Outlook
PI4-ICE-TOWER-FAN.jpg
Ultrathin ice tower01.jpg
Ultrathin ice tower03.jpg
  • PI4-ICE-TOWER-FAN-B Outlook
PI4-ICE-TOWER-FAN-B.jpg
PI4-ICE-TOWER-FAN-B-02.JPG
PI4-ICE-TOWER-FAN-B-03.JPG
  • Compare with other products

Compare with other products from Dimensions
PI4-ICE-TOWER-FAN-details-5.jpg

  • Structure of the heat dissipation system

PI4-ICE-TOWER-FAN-details-07.jpg

  • Benchmark by using sysbench on Raspberry Pi 64Bit OS.

PI4-ICE-TOWER-FAN-details-8.jpg

  • Wiring
Ultrathin icetower assembling.jpg


The PWM pin can be connected to TXD(GPIO14)/GPIO12/GPIO18.
When used with FAN Adapter, the default PWM pin is D12(GPIO12) ,You can switch to TXD or D18 by modifying the 0R resistor.


How to assemble

  • 1. Fix the bracket to the ICE tower cooler with M2.5 screws.
  • 2. Peel off the protective film of the thermal pad and paste it on top of the CPU and Memory chip.
  • 3. Fix the copper pillar to the bracket.
  • 4. Fix the ICE tower cooler to Raspberry Pi 4B with M2.5 nuts.
  • 5. Connect the Red wire to Raspberry Pi's GPIO on 5V.
  • 6. Connect the Black wire to Raspberry Pi's GPIO on GND.
  • 7. Connect Blue wire to Raspberry Pi's GPIO on TXD(GPIO14)/D12(GPIO12)/D18(GPIO18) or connect to FAN Adapter (default pwm pin is D12(GPIO12)).
Ep-0163-14.jpg


Package Includes

  • 1 x FAN Adapter (OPTIONAL)
  • 1 x Ultra Thin ICE Tower Cooler
  • 4 x M2.5 Screws
  • 4 x Copper Pillar
  • 1 x Screw driver
  • 4 x Thermal Pad
  • 1 x Acrylic panel
Package-content.jpg


How to control fan speed

  • Controlled by Raspberry Pi OS:
We assume you have a Raspberry Pi OS installed.

1. Connect the pins of the cooling fan to the Raspberry Pi or FAN Adapter. Make sure you have already connected the Red wire to 5V, the Black wire to the GND pin, and Blue Wire to PWM (can be connected to TXD(GPIO14)/GPIO 12/GPIO18).
PWM-FAN-PIN-Definition.jpg
2. Turn on Raspberry Pi and log in, open a terminal and enable Fan control as following Steps: Typing following command in terminal:sudo raspi-config
3. Navigate to Performance options
4. Navigate to Fan
5. Select yes
6. Input 12 means using GPIO12 as PWM output Pin.

If you connect to TXD(GPIO14),pls using GPIO14 as PWM output Pin.

7. Change the threshold trigger temperature to 60 degrees.
8. Confirm it.
9. Navigate to Finish and reboot Raspberry Pi as required to take effect.


In this case, the fan will be triggered to rotate only when the CPU temperature of the Raspberry Pi reaches 60 degrees, otherwise the fan will not spin.

How to enable it via Programming

  • Make sure RPi.GPIO library has been installed.
pip freeze |grep RPi.GPIO
If feedback is:
RPi.GPIO==0.7.0
means library is OK.
  • Open a terminal and create a file named: pwm-fan.py
  • Copy and paste following code into the file and save it.

Demo1

import RPi.GPIO as GPIO
import time
import subprocess

GPIO.setmode(GPIO.BCM)
##Set to false, other processes occupying the pin will be ignored
GPIO.setwarnings(False)
GPIO.setup(12, GPIO.OUT)
pwm = GPIO.PWM(12,100)

print("\nPress Ctrl+C to quit \n")
dc = 0
pwm.start(dc)

def ReadTemp():
        # view CPU temperature 
        file = open("/sys/class/thermal/thermal_zone0/temp")
        cpu = float(file.read()) / 1000
        file.close()
        print('CPU temperature is: %2.2f' % cpu)
        time.sleep(5)

try:
    while True:
        temp = subprocess.getoutput("vcgencmd measure_temp|sed 's/[^0-9.]//g'")
        ReadTemp()
        if round(float(temp)) >= 40:
            dc = 100
            pwm.ChangeDutyCycle(dc)
            time.sleep(0.05)
        else:
            dc = 0
            pwm.ChangeDutyCycle(dc)
            time.sleep(0.05)
except KeyboardInterrupt:
    pwm.stop()
    GPIO.cleanup()
    print("Ctrl + C pressed -- Ending program")

Demo2

import RPi.GPIO as GPIO
import time
import subprocess as sp


# initializing GPIO, setting mode to BOARD.
# Default pin of FAN Adapter is physical pin 32, GPIO12; 
Fan = 32  #if you connect to pin txd physical pin 8, GPIO14,then set to :Fan = 8
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Fan, GPIO.OUT)

p = GPIO.PWM(Fan, 50)
p.start(0)

try:
    while True:
        temp = sp.getoutput("vcgencmd measure_temp|egrep -o '[0-9]*\.[0-9]*'")
        # print(temp)
        if float(temp) < 48.0:
            p.ChangeDutyCycle(0)
        elif float(temp) > 48.0 and float(temp) < 60.0:
            p.ChangeDutyCycle(100)
            time.sleep(0.1)
        elif float(temp) > 60.0:
            p.ChangeDutyCycle(100)
            time.sleep(0.1)

except KeyboardInterrupt:
    pass
p.stop()
GPIO.cleanup()

Run Demo code

  • Execute it by typing:
python3 pwm-fan.py
  • The fan will be turned on when the CPU temperature is reached to 65 degrees.
The PWM control pin in the code needs to be changed according to the GPIO pin actually connected.
  • If you connect TXD (GPIO14), the corresponding number in the code needs to be changed to 14;
GPIO.setup(14, GPIO.OUT)
pwm = GPIO.PWM(14,100)

if it is connected to FAN Adapter, the default is to connect D12 (GPIO12), run the code as follows:

GPIO.setup(12, GPIO.OUT)
pwm = GPIO.PWM(12,100)

How to enable it via Programming

  • Make sure RPi.GPIO library has been installed.
pip freeze |grep RPi.GPIO
If feedback is:
RPi.GPIO==0.7.0
means library is OK.
  • Open a terminal and create a file named: pwm-fan.py
  • Copy and paste following code into the file and save it.

Demo1

import RPi.GPIO as GPIO
import time
import subprocess

GPIO.setmode(GPIO.BCM)
##Set to false, other processes occupying the pin will be ignored
GPIO.setwarnings(False)
GPIO.setup(12, GPIO.OUT)
pwm = GPIO.PWM(12,100)

print("\nPress Ctrl+C to quit \n")
dc = 0
pwm.start(dc)

def ReadTemp():
        # view CPU temperature 
        file = open("/sys/class/thermal/thermal_zone0/temp")
        cpu = float(file.read()) / 1000
        file.close()
        print('CPU temperature is: %2.2f' % cpu)
        time.sleep(5)

try:
    while True:
        temp = subprocess.getoutput("vcgencmd measure_temp|sed 's/[^0-9.]//g'")
        ReadTemp()
        if round(float(temp)) >= 40:
            dc = 100
            pwm.ChangeDutyCycle(dc)
            time.sleep(0.05)
        else:
            dc = 0
            pwm.ChangeDutyCycle(dc)
            time.sleep(0.05)
except KeyboardInterrupt:
    pwm.stop()
    GPIO.cleanup()
    print("Ctrl + C pressed -- Ending program")

Demo2

import RPi.GPIO as GPIO
import time
import subprocess as sp


# initializing GPIO, setting mode to BOARD.
# Default pin of FAN Adapter is physical pin 32, GPIO12; 
Fan = 32  #if you connect to pin txd physical pin 8, GPIO14,then set to :Fan = 8
GPIO.setmode(GPIO.BOARD)
GPIO.setup(Fan, GPIO.OUT)

p = GPIO.PWM(Fan, 50)
p.start(0)

try:
    while True:
        temp = sp.getoutput("vcgencmd measure_temp|egrep -o '[0-9]*\.[0-9]*'")
        # print(temp)
        if float(temp) < 48.0:
            p.ChangeDutyCycle(0)
        elif float(temp) > 48.0 and float(temp) < 60.0:
            p.ChangeDutyCycle(100)
            time.sleep(0.1)
        elif float(temp) > 60.0:
            p.ChangeDutyCycle(100)
            time.sleep(0.1)

except KeyboardInterrupt:
    pass
p.stop()
GPIO.cleanup()

Run Demo code

  • Execute it by typing:
python3 pwm-fan.py
  • The fan will be turned on when the CPU temperature is reached to 65 degrees.
The PWM control pin in the code needs to be changed according to the GPIO pin actually connected.
  • If you connect TXD (GPIO14), the corresponding number in the code needs to be changed to 14;
GPIO.setup(14, GPIO.OUT)
pwm = GPIO.PWM(14,100)

if it is connected to FAN Adapter, the default is to connect D12 (GPIO12), run the code as follows:

GPIO.setup(12, GPIO.OUT)
pwm = GPIO.PWM(12,100)

FAQ

Support



Technical Support

If you need technical support or have any feedback/review, please click the Submit Now button to submit a ticket, Our support team will check and reply to you within 1 to 2 working days. Please be patient as we make every effort to help you to resolve the issue.
Working Time: 9 AM - 6 AM GMT+8 (Monday to Friday)