https://github.com/roccomuso/rpi-fan
Basic Node.js Fan controller for Raspberry Pi.
https://github.com/roccomuso/rpi-fan
circuit-scheme fan node nodejs raspberry-pi temperature transistor
Last synced: about 1 year ago
JSON representation
Basic Node.js Fan controller for Raspberry Pi.
- Host: GitHub
- URL: https://github.com/roccomuso/rpi-fan
- Owner: roccomuso
- Created: 2015-12-11T01:47:20.000Z (over 10 years ago)
- Default Branch: master
- Last Pushed: 2016-09-24T11:49:28.000Z (almost 10 years ago)
- Last Synced: 2025-03-24T15:11:24.421Z (over 1 year ago)
- Topics: circuit-scheme, fan, node, nodejs, raspberry-pi, temperature, transistor
- Language: JavaScript
- Size: 449 KB
- Stars: 4
- Watchers: 4
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# rpi-fan
## Basic Node.js Fan controller for Raspberry Pi.
When The temperature reachs a specific threshold value, the gpio is activated and the transistor lets the fan spin!
You can see the current RPi temperature and Fan status using the built-in server functionality or installing the basic RPi-Dashboard: https://github.com/roccomuso/rpi-dashboard
Once the fan starts to spin, there will not be a temperature check for 5 minutes. This behavior avoids too many fan switches in short periods of time.
## Hardware
1. Scheme (works on both Raspberry Pi and Raspberry Pi 2 model):

For Raspberry Pi pinout, check out https://www.raspberrypi.org/documentation/usage/gpio-plus-and-raspi2/
2. Recommended Transistor: 2N7000
3. Recommended Fan: 5V - 0.2A
## Software
### Configuration
1. You can edit the gpio number, temperature threshold, refresh time etc. directly in the config.json file:
"PIN_NUMBER" : 18,
"REFRESH_TIME" : 60,
"TEMPERATURE_THRESHOLD" : 45.0
2. Optionally, you can also activate a web server to show the current temperature on http://ip_address:SERVER_PORT/. Make sure to choose a free port.
"WEB_SERVER": true,
"SERVER_PORT": 4949
Another available option is to pass these parameteres through the CLI:
node index.js -n 18 # 'Choose the GPIO number'
node index.js -p 4949 # 'Start the server on port 4949'
node index.js -t 45 # 'Set a temperature threshold of 45 degrees'
node index.js -r 60 # 'Check the temperature every 60 seconds'
### Run on start up
1. clone the repo on the /home/pi/Desktop:
git clone https://roccomuso@github.com/roccomuso/rpi-fan.git
cd rpi-fan && npm install
2. add this rule to crontab:
- Launch from CLI crontab -e and add the following line:
@reboot /usr/local/bin/node /home/pi/Desktop/rpi-fan/index.js >/tmp/fan_output 2>/tmp/fan_error
(General console.log and error messages are respectively in /tmp/fan_output and /tmp/fan_error - Update: /tmp/fan_output can now be seen on the web server page.)
You can also better use a process manager (like PM2):
sudo pm2 start index.js --name="rpi-fan"
#### Author @ Rocco Musolino - hackerstribe.com