tag:blogger.com,1999:blog-90512736826188711722024-03-13T01:59:58.097-07:00Cygnet EngineeringStephen Myershttp://www.blogger.com/profile/11378934879753997602noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-9051273682618871172.post-38152836931854293892009-03-11T20:08:00.000-07:002009-03-15T21:42:47.772-07:00RFID activated phone systemI feel most hobbyists make things that are useful. I tend to like to make prototypes. To me that's what I like about the <span class="blsp-spelling-error" id="SPELLING_ERROR_0"><a href="http://www.iobridge.com/">iobridge</a></span> so much. I can prototype things very quickly that in the past would have taken me a long time to create. I was able to make my phone system in the morning before heading off to school. I tend to think about usability more than most engineers, and as a biomedical engineer I like to think about products for physicians, patients, and the elderly. When I was an undergrad I had an idea for a phone system for the elderly. Yes there are phones with large buttons and few features, but they are often very ugly and you still have to remember the phone number. My idea was to create a phone that would dial the desired number based on placing a picture on or near the phone. In essence the device would work like the many <span class="blsp-spelling-error" id="SPELLING_ERROR_1">iphone</span> apps out there that allow you to call a person by pressing their picture on your phone. My dialer could be this advanced, with a touch screen and the whole nine yards, but I really liked the idea of physically doing something. Here's my prototype:<div><div style="text-align: center;"><br /><object width="320" height="265"><param name="movie" value="http://www.youtube.com/v/B-NNGHiohzE&hl=en&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/B-NNGHiohzE&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="320" height="265"></embed></object></div><br />One note about the video. This has nothing to do with an <span class="blsp-spelling-error" id="SPELLING_ERROR_2">iphone</span>. The system will connect any two phones. </div><div><br />To create the <span class="blsp-spelling-error" id="SPELLING_ERROR_3">RFID</span> activated phone dialer I used:<br /><ul><li><a href="http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=50"><span class="blsp-spelling-error" id="SPELLING_ERROR_4">Arduino</span> board</a></li><li><a href="http://www.parallax.com/Store/Microcontrollers/BASICStampModules/tabid/134/ProductID/114/List/1/Default.aspx?SortField=ProductName,ProductName">Parallax <span class="blsp-spelling-error" id="SPELLING_ERROR_5">RFID</span> reader</a></li><li><a href="http://www.parallax.com/Store/Accessories/Communication/tabid/161/List/1/ProductID/115/Default.aspx?SortField=ProductName%2cProductName"><span class="blsp-spelling-error" id="SPELLING_ERROR_6">RFID</span> tag</a></li><li><a href="http://www.iobridge.com/"><span class="blsp-spelling-error" id="SPELLING_ERROR_7">iobridge</span></a></li><li><a href="http://www.iobridge.com/store"><span class="blsp-spelling-error" id="SPELLING_ERROR_8">iobridge</span> serial smart board</a></li><li><a href="http://www.google.com/voice">Google Voice</a><a href="http://code.google.com/p/vocito/"></a></li><li><a href="http://code.google.com/p/vocito/"><span class="blsp-spelling-error" id="SPELLING_ERROR_9">Vocito</span></a></li></ul><br /><div style="text-align: left;">The <span class="blsp-spelling-error" id="SPELLING_ERROR_10">RFID</span> reader is very simple to use and is <span class="blsp-spelling-error" id="SPELLING_ERROR_11">easliy</span> connected to an <span class="blsp-spelling-error" id="SPELLING_ERROR_12">arduino</span>. <a href="http://www.arduino.cc/playground/Learning/PRFID">Code</a> to run the reader can be found on the <span class="blsp-spelling-error" id="SPELLING_ERROR_13">arduino</span> website. For my purposes this did almost everything I needed it to do. My only change was to put a delay after reading a card. This eliminated multiple reads if you swiped the card by the reader slowly. Since the <span class="blsp-spelling-error" id="SPELLING_ERROR_14">iobridge</span> <span class="blsp-spelling-error" id="SPELLING_ERROR_15">JSON</span> object stores the serial data for a period of time, I also added a line of code to change the stored serial data after my javascript had a chance to read the <span class="blsp-spelling-error" id="SPELLING_ERROR_16">RFID</span> tag. If I didn't do this then the phone dialer javascript would keep making phone calls.</div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVY4jgHolZV-OWmkDy4XlXgTYT8oslIyl01mXzw72Vbq1B1BSsNNeFv83qOrS46kDGnwWXPLw2p_LANFBePi2I52GNBQe64pNdMuo5WrG3jmz569cIJGspYQ8-y0W8PXJCAPVNIxtYphE/s1600-h/IMG_1612.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 240px; height: 320px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhVY4jgHolZV-OWmkDy4XlXgTYT8oslIyl01mXzw72Vbq1B1BSsNNeFv83qOrS46kDGnwWXPLw2p_LANFBePi2I52GNBQe64pNdMuo5WrG3jmz569cIJGspYQ8-y0W8PXJCAPVNIxtYphE/s320/IMG_1612.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5312305282692703986" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:small;">Dialer without cover</span></div><br />The <span class="blsp-spelling-error" id="SPELLING_ERROR_17">arduino</span> sends the <span class="blsp-spelling-error" id="SPELLING_ERROR_18">RFID</span> info to the <span class="blsp-spelling-error" id="SPELLING_ERROR_19">iobridge</span> via a connection between the TX pin on the <span class="blsp-spelling-error" id="SPELLING_ERROR_20">arduino</span> and the serial smart board. The dialing is done on my home computer/server that is running a bit of javascript. The javascript compares the <span class="blsp-spelling-error" id="SPELLING_ERROR_21">RFID</span> code and dials the appropriate phone number. This is the heart of the javascript I have running back on my computer.<br /><blockquote><span class="Apple-style-span" style="font-size:small;">function <span class="blsp-spelling-error" id="SPELLING_ERROR_22">testNumber</span>(<span class="blsp-spelling-error" id="SPELLING_ERROR_23">numtocall</span>) {<br /><br />if (<span class="blsp-spelling-error" id="SPELLING_ERROR_24">numtocall</span> == "<span class="blsp-spelling-error" id="SPELLING_ERROR_25">RFIDTAG</span>1") {<br />// <span class="blsp-spelling-error" id="SPELLING_ERROR_26">RFIDTAG</span>1 is the unique tag<br />window.location="tel:<span class="blsp-spelling-error" id="SPELLING_ERROR_27">XXXXXXXXXX</span>";<br />// <span class="blsp-spelling-error" id="SPELLING_ERROR_28">XXXXXXXXXX</span> is the phone number to call<br />}<br />else if (<span class="blsp-spelling-error" id="SPELLING_ERROR_29">numtocall</span> == "<span class="blsp-spelling-error" id="SPELLING_ERROR_30">RFIDTAG</span>2") {<br />// <span class="blsp-spelling-error" id="SPELLING_ERROR_31">RFIDTAG</span>2 is the unique tag<br />window.location="tel:<span class="blsp-spelling-error" id="SPELLING_ERROR_32">XXXXXXXXXX</span>";<br />// <span class="blsp-spelling-error" id="SPELLING_ERROR_33">XXXXXXXXXX</span> is the phone number to call<br /><br />// ... repeat for each tag you have<br />}</span></blockquote><blockquote><span class="Apple-style-span" style="font-size:small;"><br />function <span class="blsp-spelling-error" id="SPELLING_ERROR_34">checkNumber</span>() {<br />$.<span class="blsp-spelling-error" id="SPELLING_ERROR_35">getJSON</span>("http://www.iobridge.com/api/feed/key=YYYYYYYYYYYY&callback=?",<br />// <span class="blsp-spelling-error" id="SPELLING_ERROR_36">YYYYYYYYYYYY</span> is the key for your <span class="blsp-spelling-error" id="SPELLING_ERROR_37">iobridge</span><br />function (data) {<br /> testNumber(data.module.channels[3].LastSerialInput); // 3 is the 4<span class="blsp-spelling-error" id="SPELLING_ERROR_38">th</span> channel on the <span class="blsp-spelling-error" id="SPELLING_ERROR_39">iobridge</span> (0-3)<br />});<br />}<br /><br />$(document).ready(function() {<br /><span class="blsp-spelling-error" id="SPELLING_ERROR_40">checkNumber</span>();<br /><span class="blsp-spelling-error" id="SPELLING_ERROR_41">setInterval</span>("<span class="blsp-spelling-error" id="SPELLING_ERROR_42">checkNumber</span>()", 10000);<br />});</span> </blockquote><br />The script checks the feed of my <span class="blsp-spelling-error" id="SPELLING_ERROR_43">ioBridge</span> every 10 seconds and then parses the <span class="blsp-spelling-error" id="SPELLING_ERROR_44">JSON</span> object. The <span class="blsp-spelling-error" id="SPELLING_ERROR_45">LastSerialInput</span> is then compared to the <span class="blsp-spelling-error" id="SPELLING_ERROR_46">RFID</span> tags I have in the script. If a match is found then the call is placed. <div><br /></div><div>To place the call I used a tel:URL. This works like a <span class="blsp-spelling-error" id="SPELLING_ERROR_47">mailto</span>:URL, but instead of activating your email program to start and email it activated a phone program to dial a number. The program I use all the time for this is <a href="http://code.google.com/p/vocito/"><span class="blsp-spelling-error" id="SPELLING_ERROR_48">Vocito</span></a>. It works with <a href="http://www.google.com/voice">Google Voice</a>. I use google voice and <span class="blsp-spelling-error" id="SPELLING_ERROR_49">Vocito</span> all the time so I didn't think twice before picking this combo as my dialing method. For those of you without google voice, I am sure you could activate a phone call with numerous other programs and systems. </div><div><br /></div></div>Stephen Myershttp://www.blogger.com/profile/11378934879753997602noreply@blogger.com10tag:blogger.com,1999:blog-9051273682618871172.post-46380902756612724522009-03-11T14:39:00.000-07:002009-03-11T15:59:33.338-07:00ioBridge Serial Smart Board Tutorial<div>My little <a href="http://cygnetengineering.blogspot.com/2008/12/controlling-your-lights-with-iobridge.html">tutorial</a> about controlling your lights with an <a href="http://www.iobridge.com/"><span class="blsp-spelling-error" id="SPELLING_ERROR_0">ioBridge</span></a> was well received by the guys over at <span class="blsp-spelling-error" id="SPELLING_ERROR_1">ioBridge</span>.com so I thought I would make another tutorial. This time I wanted to go over a really powerful tool <span class="blsp-spelling-error" id="SPELLING_ERROR_2">ioBridge</span> just released, the serial smart board. The smart board allows an <span class="blsp-spelling-error" id="SPELLING_ERROR_3">iobridge</span> to send and receive serial signals. In this tutorial I will be <span class="blsp-spelling-error" id="SPELLING_ERROR_4">suppling</span> a serial signal from my <a href="http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=50"><span class="blsp-spelling-error" id="SPELLING_ERROR_5">arduino</span></a> <span class="blsp-spelling-error" id="SPELLING_ERROR_6">microcontroller</span>. Here's the video tutorial. Keep reading after the video for more details.</div><div><div style="text-align: center;"><br /><br /><object width="425" height="264"><param name="movie" value="http://www.youtube.com/v/UicQgWtWO2I&hl=en&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/UicQgWtWO2I&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="264"></embed></object><br /><br /></div><div style="text-align: center;"><br /></div>Let's start with the <span class="blsp-spelling-error" id="SPELLING_ERROR_7">arduino</span> sketch. Like I said in the video, this is a really simple circuit that is probably one of the first people make. One of the best <span class="blsp-spelling-error" id="SPELLING_ERROR_8">arduino</span> tutorials around is the one by the fine folks at <a href="http://www.ladyada.net/learn/arduino/"><span class="blsp-spelling-error" id="SPELLING_ERROR_9">ladaya</span>.net</a>, and the circuit I used can be found in their <a href="http://www.ladyada.net/learn/arduino/lesson5.html">5<span class="blsp-spelling-error" id="SPELLING_ERROR_10">th</span> lesson</a>. The only change to the sketch I used is to insert the corresponding <span class="blsp-spelling-error" id="SPELLING_ERROR_11">Serialprintln</span>("I turned it on"); and <span class="blsp-spelling-error" id="SPELLING_ERROR_12">Serialprintln</span>("I turned it off); Into the loops that turn the LED on and off. Since <span class="blsp-spelling-error" id="SPELLING_ERROR_13">ladaya</span>.net covers the <span class="blsp-spelling-error" id="SPELLING_ERROR_14">arduino</span> portion of the tutorial so well, I'll jump to the <span class="blsp-spelling-error" id="SPELLING_ERROR_15">ioBridge</span> section.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.iobridge.com/store/SerialBoard-L.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 300px; height: 222px;" src="http://www.iobridge.com/store/SerialBoard-L.jpg" border="0" alt="" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:small;"><span class="blsp-spelling-error" id="SPELLING_ERROR_16">ioBridge</span> serial smart board</span></div><br /><div><br />After building the circuit and programing your <span class="blsp-spelling-error" id="SPELLING_ERROR_17">arduino</span>, power down your <span class="blsp-spelling-error" id="SPELLING_ERROR_18">iobridge</span>. Plug in the serial smart board to an open channel and then power your <span class="blsp-spelling-error" id="SPELLING_ERROR_19">iobridge</span> back up. Whenever plugging in a new smart board you need to be sure to restart your <span class="blsp-spelling-error" id="SPELLING_ERROR_20">iobridge</span> so it will detect the new board. </div><div><br /></div><div>Connect the grounds of your <span class="blsp-spelling-error" id="SPELLING_ERROR_21">iobridge</span> and <span class="blsp-spelling-error" id="SPELLING_ERROR_22">arduino</span> circuit. If you haven't done so at this time load your sketch onto the <span class="blsp-spelling-error" id="SPELLING_ERROR_23">arduino</span> board. Finally connect the TX pin (pin 1) to the RX pin on your <span class="blsp-spelling-error" id="SPELLING_ERROR_24">iobridge</span> serial smart board. If you make this connection before uploading your sketch you will probably get an error.<br /><br />Head over to the <span class="blsp-spelling-error" id="SPELLING_ERROR_25">iobridge</span>.com website and log in. Click on the module tab and then select the module you plugged the serial smart board into. Change the appropriate channel to the "serial" mode and save the change.</div><div><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xHLGvoTzztw/SbgzGadHjgI/AAAAAAAAAIc/oNFdpQ-XchI/s1600-h/Picture+2.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 174px;" src="http://3.bp.blogspot.com/_xHLGvoTzztw/SbgzGadHjgI/AAAAAAAAAIc/oNFdpQ-XchI/s320/Picture+2.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312051945757183490" /></a><span class="Apple-style-span" style="font-size:small;"><div style="text-align: center;">Select serial as the mode</div></span><div style="text-align: center;"><br /></div></div><div><br /></div><div> The <span class="blsp-spelling-error" id="SPELLING_ERROR_26">iobridge</span> will now "listen" for data. If you go ahead and press the button on your circuit the text should pop up in box just under where you selected the serial mode. If you see garbage instead of the text you are expecting, some of your settings are probably off. Make sure your baud rates are the same on the <span class="blsp-spelling-error" id="SPELLING_ERROR_27">arduino</span> and <span class="blsp-spelling-error" id="SPELLING_ERROR_28">iobridge</span>. Also make sure you have the right pacing and inversion mode set for your setup.<br /><br />I'm using:<br />baud rate = 9600<br />pacing = 0<br />Signal mode = inverted<br /><br /></div><div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_xHLGvoTzztw/SbgzjVBm5yI/AAAAAAAAAIk/82oHcW1bkFk/s1600-h/Picture+3.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 156px;" src="http://2.bp.blogspot.com/_xHLGvoTzztw/SbgzjVBm5yI/AAAAAAAAAIk/82oHcW1bkFk/s320/Picture+3.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312052442515826466" /></a><span class="Apple-style-span" style="font-size:small;"><div style="text-align: center;">Channel listening for serial data</div></span><div style="text-align: center;"><br /></div></div><div><br />Now that everything is set up correctly go to the widgets tab and create a new widget. Select "Monitor Serial Messages (Real-time)". This is the widget you use when you want the <span class="blsp-spelling-error" id="SPELLING_ERROR_29">iobridge</span> to "read" serial data. The other two serial setting "write" serial data. Then click your module, and then select the channel you installed the serial smart board onto. Now you've got a serial monitor. As with all widgets you can copy the provided code to any <span class="blsp-spelling-error" id="SPELLING_ERROR_30">webpage</span> or just view the results from your <span class="blsp-spelling-error" id="SPELLING_ERROR_31">iobridge</span> dashboard.</div><div><br /></div><div><br /></div><div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_xHLGvoTzztw/Sbg_oFJdBDI/AAAAAAAAAI8/78P51WfYm3k/s1600-h/Picture+7.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 226px;" src="http://4.bp.blogspot.com/_xHLGvoTzztw/Sbg_oFJdBDI/AAAAAAAAAI8/78P51WfYm3k/s320/Picture+7.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312065718292644914" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:small;">Completed widget</span></div></div><div><br /></div><div><br /></div><div> In my video I just viewed it from the dashboard. Back in the widget's tab, click the plus next to the widget you just created to add the widget to your dashboard. Next, click on the widget dashboard. You should see your widget here. It is currently listening for data. If you push the push button then serial data will be sent from the <span class="blsp-spelling-error" id="SPELLING_ERROR_32">arduino</span> to the <span class="blsp-spelling-error" id="SPELLING_ERROR_33">iobridge</span> and be displayed on the dashboard. <div><br /></div><div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_xHLGvoTzztw/Sbg_-e63A1I/AAAAAAAAAJE/9WHdOXy95Gw/s1600-h/Picture+10.png"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 209px;" src="http://3.bp.blogspot.com/_xHLGvoTzztw/Sbg_-e63A1I/AAAAAAAAAJE/9WHdOXy95Gw/s320/Picture+10.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5312066103167877970" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:small;">Widget after being added to the dash</span><span class="Apple-style-span" style="font-size:small;">board</span></div><br /></div></div></div>Stephen Myershttp://www.blogger.com/profile/11378934879753997602noreply@blogger.com4tag:blogger.com,1999:blog-9051273682618871172.post-3035088218756234982008-12-06T19:04:00.000-08:002008-12-07T16:21:23.640-08:00Controlling your lights with an ioBridge Module<div><br /></div><div>Controlling my house lights with the <a href="http://www.iobridge.com/">ioBridge</a> module is something that really excites me. It's so simple I didn't want to write about it first since it doesn't give the module justice for how powerful it really is. The ioBridge module is able to control my lights or anything else that plugs into an electrical outlet via x10 modules.<br /></div><div><br /></div><div>x10 and home automation has been around since the 1970's, so controlling your house's lights isn't new. There is software out there to run on your computer to control your x10 setup. That being said, ioBridge's x10 interface is one of the best looking and easiest to use I've ever seen. Plus, with no setup I can control my lights over the internet. What I really like is how controllable it is. Since the iobridge widgets spits out javascript I can embed in a webpage, I can make my controller look and act just like I want it to.</div><div><br /><div style="text-align: center;"><br /><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/Pr-DkaWkK0o&hl=en&fs=1"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/Pr-DkaWkK0o&hl=en&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></div><div style="text-align: center;">Step by step instructions for controlling a lamp</div></div><div><br /></div><div><br /></div><div>I set up x10 controllers in my living room, bedroom, and for my christmas lights. I wanted to be able to turn on my lights when I was away from home or once I was already in bed. I can leave my room a bit messy sometimes so it's key for me to leave a light on as I get into bed. I don't want to kick a random shoe or something and break a toe. </div><div><br /></div><div>The setup is almost as easy as just plugging everything in, so I wanted to talk a little more this time about the ioBridge web interface and how to embedd their javascript into your webpage. </div><div><br /></div><div>The setup:</div><div>ioBridge module</div><div>ioBridge x10 smart board</div><div><a href="http://www.thehomeautomationstore.com/psc04.html">x10 interface module</a></div><div>x10 controllers </div><div><br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://iobridge.com/store/X10Board-L.jpg"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 300px; height: 256px;" src="http://iobridge.com/store/X10Board-L.jpg" alt="" border="0" /></a><span style="font-size:78%;">ioBridge x10 smart board</span><br /></div><br /></div><div>There are many types of controllers out there. I used a old school version I had around the house. I've ordered light switch style versions so I can control my overhead lights.</div><div><br /></div><div>After plugging everything in. I was able to connect everything and make a widget in under minute. </div><div><br /></div><div>The below screen shot is what you get after completing a widget. Clicking on anything underlined in green lets you update it. To the right of the options is what your widget will look like with your current options. Below the live view is the code needed to embed your widget into a website. </div><div><br /></div><div><br /></div><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2SXmoACUarf6D0eFcpvFFtemANrA8-iHjJkI4MscAX4Oj4moZ6Q4r2nl5myh1_ro7fcbjWKWK2OVja4ehCjgRgQANgvAKdobb-E3My2WZu-dwmLoJIFjxNGlFjlmvqx0eol_bmI4j2XM/s1600-h/Picture+1.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 234px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj2SXmoACUarf6D0eFcpvFFtemANrA8-iHjJkI4MscAX4Oj4moZ6Q4r2nl5myh1_ro7fcbjWKWK2OVja4ehCjgRgQANgvAKdobb-E3My2WZu-dwmLoJIFjxNGlFjlmvqx0eol_bmI4j2XM/s320/Picture+1.png" alt="" id="BLOGGER_PHOTO_ID_5276887695259963730" border="0" /></a><span style="font-size:78%;">Widget Creator</span><br /></div><br />The dashboard is the simplest way to interact with you projects. After you make a widget you can choose if you would like it displayed on your dashboard.<br /><br /><div style="text-align: center;"><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW0NJnQ3OJdzaP-63lLeUlpQK7fzjcSO8geqgUpp9iaihgkmDAPqtLcPR5SyUbDY1o_JHqBAM8ugQELcelpA381Q_O_sqP_B8OWC-_7PgzPzDJBjO5ZZ9qNyjKZsH-gdf4eNOn2Y6KSIw/s1600-h/Picture+2.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 209px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgW0NJnQ3OJdzaP-63lLeUlpQK7fzjcSO8geqgUpp9iaihgkmDAPqtLcPR5SyUbDY1o_JHqBAM8ugQELcelpA381Q_O_sqP_B8OWC-_7PgzPzDJBjO5ZZ9qNyjKZsH-gdf4eNOn2Y6KSIw/s320/Picture+2.png" alt="" id="BLOGGER_PHOTO_ID_5276890940796831554" border="0" /></a><span style="font-size:78%;">ioBridge Dashboard</span><br /></div><br />I also created my own webpage to control my lights with the look I wanted. As you can see below I also made a widget that will dim my bedroom lights. While I optimized this page to my liking, all that is required to have your own control page is to save the script in a text file and save it with an html extension.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2C1hjZQGeEds2SeeLT9X8OrTDkz1J2V_CarveZ8wxdOEqjVtOAvzo-M7uVKw2dnFk1z-enUjqx3kVRseVITKTp-Z8cgyEYrjx8N2R1dgYRmxL0c5ZK1fh6vT06oYXcVOSLaHZoGljMJw/s1600-h/Picture+3.png"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 221px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2C1hjZQGeEds2SeeLT9X8OrTDkz1J2V_CarveZ8wxdOEqjVtOAvzo-M7uVKw2dnFk1z-enUjqx3kVRseVITKTp-Z8cgyEYrjx8N2R1dgYRmxL0c5ZK1fh6vT06oYXcVOSLaHZoGljMJw/s320/Picture+3.png" alt="" id="BLOGGER_PHOTO_ID_5276894723488878498" border="0" /></a>Stephen Myershttp://www.blogger.com/profile/11378934879753997602noreply@blogger.com9tag:blogger.com,1999:blog-9051273682618871172.post-23958562704492606882008-12-03T21:48:00.000-08:002008-12-04T13:24:45.880-08:00Iphone as a Universe Controller: Part 1<div>Why have a universal remote control when you can have a universe controller? I was fortunate enough to get to beta test some of <a href="http://www.iobridge.com/">ioBridge</a>'s forthcoming hardware. Their hardware lets you connect just about anything to the internet. The possibilites with these things are just about limitless. I am convinced I can control just about anything in my house with this little board and my iPhone. The company has a number of premade "<a href="http://www.iobridge.com/store">smart boards.</a>" The modules also have input/output pins so you can get any of your microcontroller projects online. I wanted to put together a few simple progects based on their smart boards. I got a x10, light sensor, and a servo smart board. I made a little gizmo with each one. In this write up I'm going to talk about the gizmo I made with their servo smart board. In my next post I'm going to demonstrate how to control you home lights. Then I will post about how the ioBridge module can be used to lock your computer and update your twitter feed automatically when you leave the office. <br /></div><div><br /></div><div>I have a dog that stays home alone while I am at school. I thought it would be nice to be able to check up on my dog Cooper during the day, and even better if I could give him a delicious doggie treat. With the ioBridge module, a servo smart board, and some random parts around the house I was able to put together a dog watching, treat giver that is all controlled with my iPhone over the internet. The whole project took about an hour and because of iobridge's simple internet interface no programing was required. </div><div><br /></div><div>Here is a video <a href="http://www.youtube.com/watch?v=8L3hdPxMa_o">(youtube link)</a> of the finished project. Below the video are my detailed instruction about the project.<br /><br /><div style="text-align: center;"><iframe allowfullscreen='allowfullscreen' webkitallowfullscreen='webkitallowfullscreen' mozallowfullscreen='mozallowfullscreen' width='320' height='266' src='https://www.blogger.com/video.g?token=AD6v5dx3YElB5pgrhPwxhNDmRYK3dTiv2gnbsIJhDiDLuLhp1JEGjf3kFYd2ZMKnUfW-cWcrKf1AtMlE6va-y2NVgQ' class='b-hbp-video b-uploaded' frameborder='0'></iframe><br /></div><span class="Apple-style-span" style="font-size:x-small;"><div style="text-align: center;">Finished project in action<br /></div></span></div><div><br /></div><div>Here's what I used:</div><div>ioBridge I/O module</div><div>ioBridge servo smart board</div><div>servo</div><div>old CD spindle case</div><div>cardboard scrap</div><div>large syringe plunger</div><div>scrap wood</div><div>webcam (just used for visual confirmation that treat was delievered)<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://iobridge.com/store/ServoBoard-L.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 150px; height: 118px;" src="http://iobridge.com/store/ServoBoard-L.jpg" border="0" alt="" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:x-small;">ioBridge servo smart board</span></div></div><div><br /></div><div>I started by cutting a hole in the top of the old CD case for the axel of the servo to fit through. With some scrap wood I mounted the servo above the case.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSDCn2GEXiDSgBXirGsDP_xt8ir-rdQeVhzph2fUzTQsAh3DU9_yq2N1WPMaxCSdAXODASxDxmiUaRd645gJBiCC9nxuudGiNvgehEVuTrzSlGAuBfskUe6fKpU1FyR1dF-tk_oIs0Cqs/s1600-h/housing.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSDCn2GEXiDSgBXirGsDP_xt8ir-rdQeVhzph2fUzTQsAh3DU9_yq2N1WPMaxCSdAXODASxDxmiUaRd645gJBiCC9nxuudGiNvgehEVuTrzSlGAuBfskUe6fKpU1FyR1dF-tk_oIs0Cqs/s320/housing.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5275984191549150226" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:x-small;">Old CD spindle case with servo attached to top. The windows in the side are for loading the dispenser with treats</span></div><br /></div><div><br />I cut the plunger to a length about a quarter of an inch shorter then the interior of the old cd case. After super gluing the servo's detachable wheel to the top of the plunger I glued square cardboard scrap to half of the plunger at 45 degree angles. I made some triagnles out of wood and used them to keep each of the fins seperated by 45 degrees. While the glue dried I cut a pie shaped wedge in the board that was the same size as the wedges created by gluing the cardboard at 45 degree angles around the plunger. <br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi98Nz8tUZvqO8asj2Mt2PXGJUOiDHfmsqR5hZ85FOnYZib_CPINP6UoSMrcMjxa6xhKoKIHNJoyYwzIrDm8FhUizWYAgByaWPkQGZFk4_F9WlH8G9yxYdHSqXBSttXb4-LtL-Uo0vhYBc/s1600-h/fin2.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi98Nz8tUZvqO8asj2Mt2PXGJUOiDHfmsqR5hZ85FOnYZib_CPINP6UoSMrcMjxa6xhKoKIHNJoyYwzIrDm8FhUizWYAgByaWPkQGZFk4_F9WlH8G9yxYdHSqXBSttXb4-LtL-Uo0vhYBc/s320/fin2.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5275984188776841202" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:x-small;">Syringe plunger with cardboard fins attached at 45 degree angles</span></div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj72ot-_7gQaw7o2HPitFN0NBh1f7LQl2wFrZJiyWuJ_n-aPswG3HefQdaHvPBdCOX0SJi7UU6JRGMiFksjHBQpb5GN3v0hLrql2poLqdUWOaXhWScmjPuWfc1GXKOYzEMuZv0cvOJVrgs/s1600-h/board.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj72ot-_7gQaw7o2HPitFN0NBh1f7LQl2wFrZJiyWuJ_n-aPswG3HefQdaHvPBdCOX0SJi7UU6JRGMiFksjHBQpb5GN3v0hLrql2poLqdUWOaXhWScmjPuWfc1GXKOYzEMuZv0cvOJVrgs/s320/board.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5275984180715854706" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:x-small;">Bottom platform with hole cut for treat to drop through</span></div><br /></div><div><br /></div><div>Once the glue dried I attached the plunger to the servo and connected the servo to the ioBridge I/O modeule via the servo smart board.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7NjJIbcm7MjxBDszf-5W9yJCqz0ZS9oFhjmdyDUp2OuAB8ntNmOZZC9lRAENKq93JXCycEP0vaVO8Bgk2mOeG7hEArxOt9lYQIfVX5Yv31WW7hLyJ5w2yTzj1Vse4lAjxaQpuIFk0ug0/s1600-h/housing_fin.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj7NjJIbcm7MjxBDszf-5W9yJCqz0ZS9oFhjmdyDUp2OuAB8ntNmOZZC9lRAENKq93JXCycEP0vaVO8Bgk2mOeG7hEArxOt9lYQIfVX5Yv31WW7hLyJ5w2yTzj1Vse4lAjxaQpuIFk0ug0/s320/housing_fin.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5275984196301717890" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:x-small;">View of bottom of housing with plunger assembly attached to servo</span></div><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNcRzoRgOwDGhSEkphzrwzcyz5ObX1BSP70rBixcFLUNCCmFxHQHdS6Cf8DkVadCOAGW5gyOaoAuSHIw-6sbVsec-1lnHiFiIbsfcxeghD3LaJJ6vmZs4rOss5tj8uaFGXD6625Tajw3c/s1600-h/assembled.JPG"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiNcRzoRgOwDGhSEkphzrwzcyz5ObX1BSP70rBixcFLUNCCmFxHQHdS6Cf8DkVadCOAGW5gyOaoAuSHIw-6sbVsec-1lnHiFiIbsfcxeghD3LaJJ6vmZs4rOss5tj8uaFGXD6625Tajw3c/s320/assembled.JPG" border="0" alt="" id="BLOGGER_PHOTO_ID_5275984177441621058" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:x-small;">Assembled device</span></div><br />I followed the simple ioBridge instructions for getting their board online for the first time. Using the ioBridge web interface it was simple to create a widget that controlled the servo. At the end of the widget wizard it automatically saved the buttons that controlled the position of the servo in my ioBridge dashboard (the dashboard is your home page once you log into the ioBridge website). The wizard also outputs javascript incase you want to embed the controls in your own page as I did. <br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiACKYNAjEMP_tgdFbHgZuPXiVODyygq5aSlJrjSlwYcUIiI7vfcrFWwRVFw6DYapE1kZtilXXatD6BPZXnMI1Cc6z5yc8dqoLKhHvKp1ZF2bkoDT7yrTAq6igUA_I1P-cY1u1cSwcOPY/s1600-h/screenshot.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px; height: 267px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiACKYNAjEMP_tgdFbHgZuPXiVODyygq5aSlJrjSlwYcUIiI7vfcrFWwRVFw6DYapE1kZtilXXatD6BPZXnMI1Cc6z5yc8dqoLKhHvKp1ZF2bkoDT7yrTAq6igUA_I1P-cY1u1cSwcOPY/s400/screenshot.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5276032184845418178" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:x-small;">Screen shot of widget builder</span> </div></div><div><br /></div><div>With all the javascript their site gave me it was no time before I had a webpage that I could access from my iPhone. I could have just pasted the javascript they gave me into notepad and saved it as an html and had controls that would control my device, but I wanted a little something more. I optimized it to be viewed on my iPhone and embedded a feed from a streaming webcam I placed over Cooper's kennel. Now I could see what my dog is up to when I'm away. I saved the website to my iPhone's home screen, and in less than an hour and a half from starting the project I had a web app on my phone from which I could view my dog and give him delicious, steak flavored treats. <br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_FnRuiJu7YTYWRsVuQIBmH1_W8EMR6qEPBSW3pf8lErRt-aq6lgE-amdF6Lc5ltxJB4c5vY9NuqJdhZur2QoiJB9H0jQws8v8vz-3VX9WkY4XoFYl8X64d2duBxsphOHTvY9Ey6AUxhI/s1600-h/photo.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_FnRuiJu7YTYWRsVuQIBmH1_W8EMR6qEPBSW3pf8lErRt-aq6lgE-amdF6Lc5ltxJB4c5vY9NuqJdhZur2QoiJB9H0jQws8v8vz-3VX9WkY4XoFYl8X64d2duBxsphOHTvY9Ey6AUxhI/s400/photo.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5275983826993501090" /></a><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjarCX1U5j2TGJQXfNct4c5uthubwCfkNTamMqd3-ZiKwAwks7GTdXI3wSvBlby-8aFfUHhyJUSjTPx2eTIE09V2Psx7zx8iLpp0rYbUiXP9_BPmHkDxbB2LLYOvZFR8So1hWowDz9tnA/s1600-h/photo-1.jpg"><img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjjarCX1U5j2TGJQXfNct4c5uthubwCfkNTamMqd3-ZiKwAwks7GTdXI3wSvBlby-8aFfUHhyJUSjTPx2eTIE09V2Psx7zx8iLpp0rYbUiXP9_BPmHkDxbB2LLYOvZFR8So1hWowDz9tnA/s400/photo-1.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5275983828727119298" /></a><div style="text-align: center;"><span class="Apple-style-span" style="font-size:x-small;">Icon on iPhone home screen and then view of the web app I created using the ioBridge generated javascript. The picture of my dog is from a streaming webcam.</span></div></div><div><br /></div><div><br /></div><div><br /></div>Stephen Myershttp://www.blogger.com/profile/11378934879753997602noreply@blogger.com42tag:blogger.com,1999:blog-9051273682618871172.post-67260044914966103102008-02-06T11:26:00.000-08:002008-02-06T11:28:21.831-08:00Is this really upside down?<p class="mobile-photo"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-5QS_2S3TDzZtUaxFVP50tIv-Bs81RT3XV-P9oM6a_4XtAoh-sFuuNVKzWpxoXdTfUfW4Kvju7golY5vDrScwV7MrcW4u4o6ed1j07px_nbDNkGaWCLjB-4q7POiVspONCM7EPB6bHJ0/s1600-h/photo-701834.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-5QS_2S3TDzZtUaxFVP50tIv-Bs81RT3XV-P9oM6a_4XtAoh-sFuuNVKzWpxoXdTfUfW4Kvju7golY5vDrScwV7MrcW4u4o6ed1j07px_nbDNkGaWCLjB-4q7POiVspONCM7EPB6bHJ0/s320/photo-701834.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5163951282987211506" /></a></p>I love this type of Colgate toothpaste. The smaller size is great for <br>having to carry down the hall to brush my teeth after lunch at work <br>and was perfect for when I lived in the dorms.<p>I am a little curious, however, the designers of the bottle didn't <br>take gravity into effect. Seems to me the bottle should have been <br>designed to have the opening on the bottom. I always leave mine upside <br>down and in fact every time I see one of these in some one's bathroom <br>they got theirs turned on its head too.Stephen Myershttp://www.blogger.com/profile/11378934879753997602noreply@blogger.com0tag:blogger.com,1999:blog-9051273682618871172.post-64905638466973832372008-01-28T10:29:00.000-08:002008-01-28T11:05:02.967-08:00The same ol same ol<p class="mobile-photo"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBAnCHmn3aHobBmTt81OO_R1Z7tKlTAiQKIO8GdZJWdp9zbjGyraDAjeYRO_7fSze_i6YHF0BCSbpaoK1gpHlx1AZCJRb6AfwmWARlZpPFnf56mbUOYc_3sKvKyK4Kyhz1v-Jz6xyq_GA/s1600-h/photo-741598.jpg"><img src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBAnCHmn3aHobBmTt81OO_R1Z7tKlTAiQKIO8GdZJWdp9zbjGyraDAjeYRO_7fSze_i6YHF0BCSbpaoK1gpHlx1AZCJRb6AfwmWARlZpPFnf56mbUOYc_3sKvKyK4Kyhz1v-Jz6xyq_GA/s320/photo-741598.jpg" border="0" alt="" id="BLOGGER_PHOTO_ID_5160596660125965010" /></a></p><p class="mobile-photo"><br /></p><p class="mobile-photo">While eating lunch, I noticed something. People really don't like change. They pretty much always do whatever they've always done no matter if the circumstances change. As I ate lunch the above rope, rat maze to funnel people to where they order was empty. I was surprised to notice as almost everyone came in they went out of their way to go through the maze instead of just walking up to the man waiting to take their order. </p>Stephen Myershttp://www.blogger.com/profile/11378934879753997602noreply@blogger.com1