Arduino

Happy Arduino/Genuino Day 2016!

Take some time today to do a little project with your Arduino!

Testing a Power Relay

My tech savvy grandma recently got me a very nice IoT power relay! I spent a while testing it out by making a simple system to automatically turn my desk light and my Pi monitor on or off. I hooked an SR-04 ultrasonic sensor to my Arduino Uno and wrote a sketch to have it detect when my hulking mass is close to my desk and send a signal to turn the relay on or off.

This is my power relay setup connected to an Arduino and ultrasonic sensor. I taped the ultrasonic sensor down to keep it from wiggling about. The Arduino is being powered by a USB port on my Pi 2.

The most challenging part of creating this little system was getting accurate readings from the ultrasonic sensor. They can read inaccurately if objects are moving around in front of the sensor, and the light would flicker annoyingly if I moved too quickly. I figured out how to smooth the value by reading from the sensor 30 times in 1.5 seconds, and then taking the average of all 30 values.

The power relay works great. It required no setup out of box, and it’s simple to connect your controller. Its only disadvantage is that it doesn’t have an ‘always-on’ power source, which requires you to have an external power source for the device controlling the relay.

This is the power relay I tested.

Check out the sketch I wrote for this project below, or click here to download.

/*
Using an Arduino with a Power RelayParts used:--ultrasonic sensor--desk lamp
--Arduino Uno--120v relayThis sketch uses an ultrasonic sensor to detect whethera person in near or sitting at a desk, and sends a signal to a power relay to turn desk lighting on or off.*/#include<NewPing.h>constintLIGHT=10;constintTRIGGER=12;constintECHO=11;NewPingsonar(TRIGGER,ECHO);voidsetup(){pinMode(LIGHT,OUTPUT);}/* The main loop iterates every 2.5 seconds. */voidloop(){/*In order to get a accurate measure of whether someone is near, we read the ultrasonic sensor 30 times and take the average. That way, if the ultrasonic sensor reads sporadically as it occasionally does, those values will be averaged out. This takes 0.05 * 30 = 1.5 seconds to get a value from the sensor. */while(inti,i<30,i++){sum=sum+sonar.ping_cm();delay(50);}intaverage_distance=sum/30;/* Using the value, we send a signal to the relay depending on whether someone is detected less than 130 cm away. We also pause for a second for good measure. */if(average_distance<130){digitalWrite(LIGHT,HIGH);delay(1000);}else{digitalWrite(LIGHT,LOW);delay(1000);}}

I’ve made my first video tutorial! I obtained some SR-04 ultrasonic sensors quite cheaply, and I’ve been learning how to use them with the Arduino, with good results. I’ve created a tutorial covering how to get the proper libraries and how to use the basic functions in the Arduino IDE to interface with the sensor.

Here’s the steps (covered in the video) on how to get NewPing, a library created for controlling ultrasonic sensors, up and running with the Arduino IDE:

Having the urge to make a ‘pointless invention’, I made a candle snuffer from a DC motor off an old helicopter, a 9V battery, and Erector set pieces. Basically, a fan blade attached to the motor and wired to a pushbutton sends a sufficient gust of air to blow out the flame of a small candle. I made two different versions of the snuffer, one with a only a 9V battery and one with an Arduino powered of a 9V battery, with the motor connected to 9V.

The snuffer basically has a little tray for a candle, with a fan pointed down at the top of the candle. A breadboard is mounted upright on the side, and the 9V battery is stowed under the tray. Below is a view of the whole thing lying on it’s side without the candle

Arduino Micro Candle Snuffer

When I first got the idea for a candle snuffer, I immediately thought using the Arduino Micro with a fan and allowing for time delays, temperature sensing for ‘overheat’ shutoff, and a photoresistor to detect if the candle is lit or not. The first thing I made was the breadboard mount and the candle tray out of Erector set pieces, and then I attempted to add the photoresistor, near the candle. However the heat from the candle would have likely damaged the photoresistor.

Getting the motor to spin fast enough to blow out the candle flame was a challenge with Arduino due to power constraints and transistor problems. I first tried direct drive off an Arduino pin’s 5V, but that did not make the motor spin nearly fast enough. Then I tried driving the motor with 9V via PNP transistor controlled by the Arduino, which, after a couple transistor overheats, still did not allow the motor to spin fast enough maybe due to voltage drops and such. My final version uses a 5V relay which seems to work really well. The fan spins more than fast enough using the relay. I’m not a huge fan (no pun intended) of relays because they can be difficult to wire and take up a lot of space on the breadboard. I had to tape my relay in place with my bright yellow electrical tape to keep it from popping out.

Because of all the frustration with driving the tiny little fan motor, I didn’t do much with the Arduino software side of things. You can check out the code I used here, which basically sends a gust of air at the candle flame when the button is held down. I didn’t add a time-delay or other sensing capabilities yet, though I may not because this is kind of already a benched project.

In my wiring, the 9V battery is connected to the Arduino’s Vin pin, and its ground is tethered to the Arduino’s ground. The relay turns on and off when it gets a signal from the Arduino. The fan runs off of the Arduino’s constant 5V pin. I’m not sure how this differs from direct motor drive from a pin, but the fan spins moves much faster.

Candle Snuffer Powered Off of 9V

Halfway through building the Arduino Micro version, I tore it all up and resorted to a pushbutton wired between 9V and the motor. When you press the button, the fan comes on and blows out the candle. I did look into using a 555 timer IC to try and create a 30 minute time delay until the candle is snuffed, but that ended up being a little complicated since I don’t have all the capacitor values. Ironically, this version of the candle snuffer does exactly the same thing as the Arduino Micro version.

I’ve finished up my oscillating fan! My final design changed significantly though due to some technical difficulties. In the end I opted to use the Arduino Micro because it was the right size for this smaller project. Unable to obtain a 9v battery, I used 4 AA batteries, which barely power the Arduino and the fan. I was originally was going to use a temperature sensor with temperature indicator LEDs, but my temperature sensor was behave erratically. Sadly, I may have fried it at some point. Instead, I used two potentiometers, one controlling the fan speed, and one controlling the oscillation speed, and they work quite nicely. Using Erector set pieces, I made a tray for the breadboad it taped to the battery pack. I used more pieces to mount the fan and support the breadboard, and the final project is nice and compact.

To view code, click here.If you build a project like this, with external power, you have to be careful of which rail has which power connection. In this project, I had one rail on 6v (the battery) and one on 5v (the Arduino’s logic voltage). If you draw from the 6v to power the potentiometers or other sensors, you could damage your Arduino. It’s also important to remember to connect the Arduino’s and the batteries’ ground together.

Having made a simple air conditioning system with the Arduino Uno a few months ago, I’ve decided to upgrade that project by adding a servo to the fan. I spent a little time yesterday to build an assembly out of Erector set pieces for the 2 inch computer fan and standard servo. I created a primitive prototype with a potentiometer that can control the position of the servo, thus making the fan ‘oscillate.’

Now that I have most of the mechanics figured out, I plan on adding an indicator LED, temperature sensor, and a button to toggle between turning on and off the oscillating. I’ll keep the potentiometer to control turn on the threshold temperature for the fan. I will also probably add an external power supply; the Arduino’s 5v doesn’t cut it for the maximum fan speed. It’ll be a nice little desk fan once I’m finished!

The first ‘big’ project I tackled with my Arduino is a simple air conditioning system. Using an old computer fan and a TMP36 temperature sensor, I programmed the fan to turn on whenever the temperature gets to high. The Arduino’s 5v wasn’t enough power for the fan to spin effectively, so I used a transistor and a 9v battery instead of the digital output directly.

After getting the fan to work, I added an indication LED as well as potentiometer thermostat, which in my code sets the temperature between 50-100 degrees F. The LED turns on whenever the fan is on.

Here’s the code. Just copy and paste it into the Arduino IDE. Make any improvements that you like on it.

Build the circuit using the following schematic. You don’t have to add the LED or potentiometer, or even the 9v battery and transistor. Depending on your fan type you might be able to run the fan with the Arduino’s 5 volts.