This instructable will construct a series of custom sensor modules and an Arduino shield. Such modules are available from many different sources, but fans of the Instructables website would probably find satisfaction in making their own. Each module will be a set size of 1.5cm by 2.5cm and employ a three pin connector of the form Signal-Voltage-Ground. The custom shield will break out the Arduino pins into the same Signal-Voltage-Ground configuration. Thus, electronic connections will be reduced to using a three pin cable to attach a sensor to its corresponding pin set on the Arduino shield. Uniformly spaced mounting holes at the corners of the modules will allow for interchangeable configurations on a robot deck or in other electronics projects. The embedded video displays the sensors in action on an autonomous obstacle avoiding robot. The Arduino code for the robot is given below. The light sensors described in step three of this instructable were also used in my previous instructable.

The construction of the sensors will involve some basic materials including several perf boards, header strips, socket strips and three pin cables. Both straight and right angle headers will be used. The perf boards need to be cut into several 1.5cm by 2.5cm rectangles with a screw hole drilled into each corner. (See figures in the following steps.) In the following steps, an image note in the upper left will give each figure a number of the form Figure x-x. For example, Figure 2-4 refers to the fourth figure of step two.

Step 1: Leaf Switches


2x leaf switches

2x 10K resistors

2x three pin connectors

2x sensor platforms

suitable nuts and bolts

The leaf switches are designed to be used as contact sensors on the sides of a robot. Thus they will be constructed as mirror image pairs, one for the left side and one for the right side of the robot. Placement of the components for the left leaf switch are shown on the left in Figure 1-2. I hot glued the three pin connector into place, but I used nuts and bolts to secure the switch itself to the sensor platform for greater stability. Solder a white wire from normally open contact on the switch to the signal pin of the sensor. See figure 1-3. (Note, for all of the sensors in this instructable, when the three pin connector is positioned on the sensor platform and pointing down, the pin order from left to right is Signal, Voltage, Ground. Of course when viewing the back side of the sensor, the order from left to right is Ground, Voltage, Signal.) Next, solder a white wire from the signal pin to one lead of the 10K resistor. Solder a black wire from other end of the 10K resistor to the ground pin. Finally, solder a red wire from the common contact of the switch to the voltage pin. The resistor pulls the signal pin low. Pressing the switch then pulls the signal pin high.

<p>amazing post, i love making shields and i think i have something exciting to share with you :)</p><p>once your shields are done, you can also make a custom body/case for them really cheap, check this out; <a href="http://www.instructables.com/id/Custom-arduino-parts/" rel="nofollow">http://www.instructables.com/id/Custom-arduino-par...</a><br>.</p><p>thank you for sharing !!</p>
<p>excellent. Loved it. Lots of hard work</p>
<p>Seems like a lot of work, but I bet is totally rewarding when you look at it and say, "I made the whole thing. No, really, I did."</p>
<p>Thank you for the kind words. Seeing all the sensors work together on the robot was very rewarding.</p>
<p>Anybody knows what he means by &quot;shield&quot;? </p>
<p>A shield is an Arduino attachment dedicated to some specific purpose; controlling motors or establishing wireless communication, for example. See <a href="http://arduino.cc/en/Main/Products" rel="nofollow">http://arduino.cc/en/Main/Products</a>. The purpose of this shield is to provide simple plug-in connections for the sensor modules.</p>
<p>Very cool. Here is a neat module you can make to control 2 LED's with 4+ states. All off one output pin. Took me a few days to develop it. One LED on, one off. The other LED on and one off. Both LEDs on. Both LEDs off. Plus PWM, all with ONE output pin. One LED or the other on, just a High or Low. Both LEDs on, fast clock. Both LEDs off, set pin to input. Use any type inverting IC, 74LS04, 74LS02 etc. See image, how to do it.</p>
<p>See my Module, now has 8 functions, on YouTube at:</p><p><a href="http://youtu.be/8uZndVTIc24" rel="nofollow">http://youtu.be/8uZndVTIc24</a></p>
<p>You're too quick for me. I breadboarded your circuit and took a video of if, but I see you beat me to it. My video of your circuit is contained below. I wasn't sure where the resistor listed in your description went, so I just put in one on each LED. Thanks for sharing this clever idea.</p>
<p>Great. Looks real nice.</p>
<p>JDS 2 LED Module<br>by: Jim Steinbrecher<br>8 functions, all off one Arduino pin.</p><p>One LED on<br>Other LED on<br>One LED Flashing<br>Other LED Flashing<br>Flashing LEDs<br>Both LEDs on<br>Both LEDs off<br>Flashing LEDs with PWM</p><p>&lt;CODE&gt;<br>/* Module_2_LEDs 17 May 2014 JDS<br> To make this module:<br> 1) 1&quot; X 1.5&quot; perf board<br> 1) male 3 pin header<br> 2) female 2 pin headers<br> 1) 220 Ohm reststor<br> 1) 74LS04 IC or any inverter IC like 74LS02 etc.<br> 2) LEDs <br> <br> Wireing the module:<br> 3 pin male header pins are:<br> Signal, 5 Volts, Ground.<br> Connect the Signal pin to a inverter input and one pin<br> of each 2 pin female headers.<br> Connect the inverter output to the other side of the<br> two female 2 pin headers.<br> Connect the 5 Volt male header to the IC pin 14 of 74LS04<br> Connect the Ground male header to the IC pin 7 of 74LS04.<br> Plug 2 LEDs into the 2 female 2 pin headers, one<br> cathode, and on Anode, to the signal side.<br> That's it!<br> Then connect the Signal to Arduino pin 3 'in this example'.<br> Connect 5 Volt pin to Arduino 5 Volts<br> Connect Ground pin to Arduino Ground.<br> Then load and run this program.<br>*/<br>int i;<br>int j;<br>int SignalPin = 3;</p><p>void setup() {<br> pinMode(SignalPin,OUTPUT);<br> Serial.begin(9600);<br>}</p><p>void loop() {<br> Serial.println();<br> Serial.println(&quot;JDS LED Module&quot;);<br> Serial.println(&quot;by: Jim Steinbrecher&quot;);<br> Serial.println(&quot;All off one Arduino pin.&quot;);<br> Serial.println();<br> <br> digitalWrite(SignalPin,HIGH);<br> Serial.println(&quot;One LED on&quot;);<br> delay(5000);<br> <br> digitalWrite(SignalPin,LOW);<br> Serial.println(&quot;Other LED on&quot;);<br> delay(5000);<br> <br> Serial.println(&quot;One LED Flashing&quot;);<br> digitalWrite(SignalPin,HIGH);<br> for (i = 1; i &lt; 25; i++)<br> {<br> pinMode(SignalPin, INPUT);<br> delay(100);<br> pinMode(SignalPin, OUTPUT);<br> digitalWrite(SignalPin,HIGH);<br> delay(100);<br> }<br> <br> Serial.println(&quot;Other LED Flashing&quot;);<br> digitalWrite(SignalPin, LOW);<br> for (i = 1; i &lt; 25; i++)<br> {<br> pinMode(SignalPin, INPUT);<br> delay(100);<br> pinMode(SignalPin, OUTPUT);<br> digitalWrite(SignalPin, LOW);<br> delay(100);<br> }<br> <br> <br> Serial.println(&quot;Flashing LEDs&quot;);<br> for (i = 1; i &lt; 25; i++)<br> {<br> digitalWrite(SignalPin,HIGH);<br> delay(100);<br> digitalWrite(SignalPin,LOW);<br> delay(100);<br> }<br> <br> Serial.println(&quot;Both LEDs on&quot;);<br> for (i = 1; i &lt; 2500; i++)<br> {<br> digitalWrite(SignalPin,HIGH);<br> delay(1);<br> digitalWrite(SignalPin,LOW);<br> delay(1);<br> }<br> <br> pinMode(SignalPin,INPUT);<br> Serial.println(&quot;Both LEDs off&quot;);<br> delay(5000);<br> pinMode(SignalPin,OUTPUT);<br> <br> Serial.println(&quot;Flashing LEDs with PWM&quot;);<br> for (i = 1; i &lt; 10; i++)<br> {<br> for (j = 1; j &lt; 255; j++)<br> {<br> analogWrite(SignalPin, j); <br> delay(2);<br> }<br> for(j = 255; j &gt; 0; j--)<br> {<br> analogWrite(SignalPin, j); <br> delay(2); <br> }<br> }<br>}</p><p>&lt;/CODE&gt;</p>
<p>I very often see 10k resistors needed for these things. I just started fiddling with this stuff and it also works without these diodes. Why are they needed? And why does it also work without?</p>
<p>Those 10k resistors are needed to give a stable analog output with out it the values you will see in the arduino analog read will be fluctuating now again to remove that problem we connect a 10k resistor from the ground pin of the sensor to the signal pin of the sensor </p>
<p>Very Well done!</p>
<p>Totally fab. I can see myself building some of these sensors tomorrow ;)</p>

About This Instructable


537 favorites


More by joesinstructables: Arduino Controlled Lighthouse Custom Arduino Shield and Sensors Arduino Light Following Robot
Add instructable to: