Arduino Controlled Personal Fan With Ping Sensor / ATtiny2313




Introduction: Arduino Controlled Personal Fan With Ping Sensor / ATtiny2313

About: Why would i buy something ready made when i can make it myself with half the features for twice the money? DIY!

                                                      What does this do?

This is a fan that will automatically come on when i sit at my workbench and off when i leave.
It uses an Ultrasonic Distance Sensor, or commonly called a  "Ping " sensor for detection.
An ATtiny2313 to handle the processing.
A power supply from a router. ( Wall wort )
A relay to switch the AC power.

The ping sensor works by sending out radio waves and times how long it takes for the radio waves to bounce off of an object then return. From this time we can calculate distance. I know it is more complicated than this but this is the simplified version 

Video Link

Step 1: BOM

  • ATtiny2313
  • 6v relay
  • 20 pin socket
  •  Ping sensor
  • Fan
  • 2n2222 transistor
  • 1N4004 Diode (2)
  • 10K resistor
  • 330R Resistor
  • 8.2v power supply
  • Perf board
  • Switch
Wire Glue

Step 2: Circuit

 Not much to say here it is pretty straight forward.

The one thing that needs explaining is the power supply.
It is a 5v ( wall wort ) that puts out 6.08v whether under a load or not.  Just rite for a 6v relay, but not a micro-controller
Scenes the ATtiny2313 needs 5v i put a 1N4004 diode in the VCC line to reduce the voltage by .6v. That is the standard voltage drop for a rectifier diode.  

 6.08v - .6v = 5.48v.

Maximum allowable operating voltage is 5.5v in the data sheet. Yes it is pushing to run piratically at max volts. But it is an experiment to see how it works out. So far it has been running for 3 months and all is well.  

Data Sheet

Step 3: Power Supply

I could of just plugged the wall wart directly into the wall outlet then powered the circuit with a power jack but that means i would use 2 plugins. With taking the wall wart apart and using only the circuit i could make this all on one board and one plugin.

Step 4: Main Board

Arrange the components for best fit and clearance. Solder everything down and run traces as per the circuit diagram. 

Step 5: Fan Motor

This was of those little 6" all plastic fans. After it had dropped for the umpthteen time the glue just couldn't hold it together any longer. After it sat in my junk box for a year or so i decided i found a good place i could make use of it. I stripped it down and glued the motor in the corner of a shelf that sits on top of my workbench. 

Step 6: Ping Sensor

This a 5 pin sensor. It could be called a 4 pin i suppose scene 2 of the pins are grounds.
  1. Ground
  2. Trigger
  3. Echo
  4. VCC

While this sketch is for a 4 pin sensor, i have successfully ran this 4 pin sensor on a 3 pin sketch also. Tie the Trigger and Echo pins together on the same output pin of the Arduino. It works just as well either way.

Step 7: Programing

For programming i used the methods found in this Instructable as well as this Instructable. 

Step 8: Code

 #include "Ultrasonic.h"

int RELAY = 9;  // RELAY Pin.  
int TRIG = 11; // Trigger Pin
int ECHO = 10; // Echo Pin
int Range; // The range of the object from Ping Sensor
int Dist; // The Distance value

Ultrasonic ultrasonic(TRIG,ECHO); // Create and initialize the Ultrasonic object.

void setup() {
  pinMode(RELAY, OUTPUT); //To the relay via the transistor
  Dist = 32; //The distance in inches. Change this for increasted or dicreasted range.

void loop() {
  //Range = ultrasonic.Ranging(CM); // Range is calculated in Centimeters.
  Range = ultrasonic.Ranging(INC); // Range is calculated in Inches.

  if (Range < Dist) {
    digitalWrite(RELAY, HIGH);   
  } else if (Range > Dist) {
    digitalWrite(RELAY, LOW);


Don't forget to make sure you have the "Ultrasonic.h" library installed or this sketch wont work.
Here is a link to the "Ultrasonic.h code if needed.

There is a delay on the end so that if something passing quickly by the sensors range it will not trigger it. Only if an object has been in the sensor range for more that the delay time will the fan come on.

Step 9: Thank You

Thanks for looking!

If there is any questions i can answer i am happy to.

UP! Contest

Participated in the
UP! Contest

Be the First to Share


    • Digital Fabrication Student Design Challenge

      Digital Fabrication Student Design Challenge
    • Go Big Challenge

      Go Big Challenge
    • Tinkercad to Fusion 360 Challenge

      Tinkercad to Fusion 360 Challenge



    7 years ago on Introduction

    Wow... simple and good example on how to use ultrasound sensor... I've made something similar... but trying to get the ultrasound sensor to activate the relay... but cant figure out the configartion... fairly new to arduino...

    Nice idea. I came here to find some inspiration for my project where the Ultrasonic Sensor trigger the relay for the light. Anyway, two things I noticed and I believe should be said for the newcomers:

    1. The so called ping sensor does not emit radio waves. As the name suggests it emits ultrasounds. Sound which cannot be heard by humans. The following is true - by measuring the time needed for the sound to bounce we can calculate the distance.

    2. Please work on your spelling :) I am not an English speaker but fortunately I understood what you meant by 'scenes' :) It's spelled 'since'.


    Reply 7 years ago on Introduction

    You come to this site and the first thing you do is complain about one of my projects. This is your one and only contribution to this community. I suggest you actually do something of your own instead of complaining about somebody else hobbies. I am sure you do not realize that making an Instructable is far more work than the actual project and is done for the sure pleasure of sharing with other DIY'ers. If you do not like somebody's Instructable i suggest you move on and not try to fix people to conform to the way you think the world should be. This explains why your FB link on your Instructables page shows only one friend.


    7 years ago on Introduction

    I am working on a project which requires that a very powerful bulb gets brighter as a person aproaches it.

    How could I modify this to give an output voltage which increases in a linear fashion from 0 to 10 volts?

    are many projects on instructables and elsewhere that either use the
    distance information to output to a digital display or light up a few
    leds in steps as with car reverse sensors, but I have not found anything
    which will give a continous analogue output voltage neccessary to
    operate a lighting dimmer. Can anyone point me in the right direction?


    8 years ago on Introduction

    When I upload the code it gives an error saying that 'class Ultrasonic' has no member named 'Ranging'
    What do I do now?


    Reply 8 years ago on Introduction

    Did you install the Ultrasonic library?


    Reply 8 years ago on Introduction

    It works fine, just had to install a newer version of the Ultrasonic library, thanks for the tutorial :D


    Reply 8 years ago on Introduction

    Your welcome.
    I also was trying to get the ranging adjustable with a pot but never got that worked out.


    9 years ago on Introduction

    Nicely done!
    Well suit for the tropical climate!


    9 years ago on Introduction

    You do good work !
    And that is a heavily well worked bench.



    Reply 9 years ago on Introduction

    Thanks A

    i was trying to prevent myself from getting tennis elbow from turning the fan switch on and off, You know how dangerous that can be.


    Reply 9 years ago on Introduction

    Extremely elbow hazardous !
    And very humid by the iron oxide on the fan lamination :-P
    Especially since I see you are using a 220VAC style of power connector.


    Reply 9 years ago on Introduction

    Thank You for looking at one my Instructable and it is a honor to have you comment also.
    I follow you work as well.

    Thank You