{"id":18411155,"url":"https://github.com/gajdipajti/fan-control","last_synced_at":"2026-05-07T00:35:25.971Z","repository":{"id":200580448,"uuid":"705816987","full_name":"gajdipajti/fan-control","owner":"gajdipajti","description":"A project for controlling 2, 3, and 4 wire DC fans using Arduino or a Raspberry Pi. It also integrates into munin monitoring. Funded by the Free Software Foundation Hungary. The code is under GPLv3. Schematics, drawings, and the documentation is under CC BY-SA-4.0. If you have an idea about how to improve the project, jus file an issue.","archived":false,"fork":false,"pushed_at":"2024-07-04T07:40:26.000Z","size":18318,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-12T23:24:43.682Z","etag":null,"topics":["arduino","ds18b20","fsf","lcd","lm35","openhardware","pwm","pwm-fan","raspberrypi"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gajdipajti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-10-16T18:41:50.000Z","updated_at":"2024-07-04T07:40:30.000Z","dependencies_parsed_at":null,"dependency_job_id":"38944c04-a282-42b4-ac07-8f8c48636c91","html_url":"https://github.com/gajdipajti/fan-control","commit_stats":null,"previous_names":["gajdipajti/fan-control"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gajdipajti/fan-control","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gajdipajti%2Ffan-control","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gajdipajti%2Ffan-control/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gajdipajti%2Ffan-control/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gajdipajti%2Ffan-control/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gajdipajti","download_url":"https://codeload.github.com/gajdipajti/fan-control/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gajdipajti%2Ffan-control/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273397843,"owners_count":25098234,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-03T02:00:09.631Z","response_time":76,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","ds18b20","fsf","lcd","lm35","openhardware","pwm","pwm-fan","raspberrypi"],"created_at":"2024-11-06T03:35:26.934Z","updated_at":"2026-05-07T00:35:25.944Z","avatar_url":"https://github.com/gajdipajti.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fan-control\n\nA project for controlling 2, 3, and 4 wire DC fans using an Arduino Nano or a Raspberry Pi. It also integrates into munin monitoring. Funded by the [Free Software Foundation Hungary](https://fsf.hu/). The code is under [GPLv3](https://choosealicense.com/licenses/gpl-3.0/). Schematics, drawings, circuit diagrams, and the documentation is under [CC BY-SA-4.0](https://creativecommons.org/licenses/by-sa/4.0/). If you have an idea about how to improve the project, just file an issue and contribute.\n\n## Pages\n\n* [Bill Of Materials](bom/billofmaterials-nano.md)\n* [Datasheet Archive](bom/datasheets.md)\n* [KiCad and Fritzing](circuits/)\n\n## Wiki\n\nIn **hungarian** and in **english**: [wiki](https://github.com/gajdipajti/fan-control/wiki)\n\n## Fan Control Nano - Schematic\n\n*Note: There are multiple solutions displayed here, only implement the needed ones.*\n\n![image](documentation/img/fan-control-nano-schematic.png)\nHow to start placing the components\n![image](circuits/fan-control-nano_bb.png)\n\n## Fan Control Nano - Code\n\n* [Arduino Nano Code](fan-control-nano/fan-control-nano.ino)\n\n### Serial communication\n\n* 115200 bps\n* Main Functions:\n  * **pwm?**             - GET all PWM outputs\n  * **pwm[A-F]?**        - GET PWM output\n  * **pwm[A-F]p**        - SET PWM output to pilot mode\n  * **pwm[A-F][0-255]**  - SET PWM output manually\n  * **rpm[C,D]?**        - GET RPM output from 4-wire fans\n  * **t?**               - GET measured temperature\n  * **t[A,D,L,N]?**      - GET measured temperature from selected source\n  * **ts?**              - GET temperature source (example Dallas 1-wire)\n  * **tsa?**             - GET all available temperature sources\n* Calibration Functions:\n  * **Ch[L,H,C][A-F]?**        - GET LOW HIGH temperature for a channel\n  * **Ch[L,H,C][A-F][0-100]**  - SET LOW HIGH temperature for a channel\n  * **p[L,H][A-F]?**           - GET LOW HIGH PWM speed for a channel\n  * **p[L,H][A-F][0-255]**     - SET LOW HIGH PWM for a channel\n* Misc Func:\n  * **hrs?**           - get board uptime [%d:%H:%M:%S]\n  * **ver?**           - HW board version number\n  * **cbn?**           - CODE build version number\n  * **?**              - Ping, Are You There?  + Flash a LED\n\n## Fan Control RPi - Schematic\n\n*Note: There are multiple solutions displayed here, only implement the needed ones.*\n\n*Note: Under testing.*\n\n![image](documentation/img/fan-control-rpi-schematic.png)\n\n## Planned updates\n\n* External ADC experiments\n* Other board support (RP2040, Attiny85, ...)\n* Without machine spirit (no microcontroller)\n\n## References\n\n* [Arduino Language Reference](https://www.arduino.cc/reference/en/)\n  * [attachInterrupt()](https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/)\n  * [interrupts](http://gammon.com.au/interrupts)\n  * [libraries](https://www.arduino.cc/reference/en/libraries/)\n* [Arduino Nano](https://docs.arduino.cc/hardware/nano)\n* [1-wire protocol](https://docs.arduino.cc/learn/communication/one-wire)\n* [Raspberry Pi documentation](https://www.raspberrypi.com/documentation/computers/raspberry-pi.html)\n* [Raspberry gpiozero](https://gpiozero.readthedocs.io/en/stable/index.html)\n  * [gpiozero - pwmoutput](https://gpiozero.readthedocs.io/en/stable/api_output.html#pwmoutputdevice)\n* [Raspberry Pi Zero 2 W Pinout](https://linuxhint.com/raspberry-pi-zero-2w-pinout/)\n* [RPI Zero 2W Board Layout](https://www.etechnophiles.com/rpi-zero-2w-board-layout-pinout-specs-price/)\n\n### Free Software used in this project\n\n*Note: I only mention software that can be downloaded and installed.*\n\n* [LibreOffice Writer](https://www.libreoffice.org/) - documentation\n* [Visual Studio Code](https://code.visualstudio.com/) - documentation\n  * [Markdown All in One](https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one)\n  * [Markdown PDF](https://marketplace.visualstudio.com/items?itemName=yzane.markdown-pdf)\n  * [markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint)\n  * [Remote - SSH](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh)\n  * [Remote - SSH: Editing Configuration Files](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-ssh-edit)\n  * [Remote Explorer](https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-explorer)\n  * [Winter is Coming Theme](https://marketplace.visualstudio.com/items?itemName=johnpapa.winteriscoming) - Dark Blue\n  * [Cyberpunk Theme](https://marketplace.visualstudio.com/items?itemName=max-SS.cyberpunk) - UMBRA Protocol\n  * [Code Spell Checker](https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker)\n  * [isort](https://marketplace.visualstudio.com/items?itemName=ms-python.isort)\n  * [Pylance](https://marketplace.visualstudio.com/items?itemName=ms-python.vscode-pylance)\n  * [Python](https://marketplace.visualstudio.com/items?itemName=ms-python.python)\n* [Arduino IDE](https://www.arduino.cc/en/software) - Arduino code\n  * [OneWire](https://www.arduino.cc/reference/en/libraries/onewire/)\n  * [DallasTemperature](https://www.arduino.cc/reference/en/libraries/dallastemperature/)\n* [KiCad](https://www.kicad.org/download/) - schematics\n* [Fritzing](https://github.com/fritzing/fritzing-app/releases/tag/CD-548) - schematics\n* [GNU Octave](https://octave.org/) - drawing graphs, advanced calculations\n* [Qalculate!](http://qalculate.github.io/) - basic calculation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgajdipajti%2Ffan-control","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgajdipajti%2Ffan-control","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgajdipajti%2Ffan-control/lists"}