1<!DOCTYPE html> 2<html class='v2' dir='ltr' xmlns='http://www.w3.org/1999/xhtml' xmlns:b='http://www.google.com/2005/gml/b' xmlns:data='http://www.google.com/2005/gml/data' xmlns:expr='http://www.google.com/2005/gml/expr'> 3<head> 4<link href='https://www.blogger.com/static/v1/widgets/2872013778-css_bundle_v2.css' rel='stylesheet' type='text/css'/> 5<link href='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.css' rel='stylesheet' type='text/css'/>
6<script src='http://google-code-prettify.googlecode.com/svn/trunk/src/prettify.js' type='text/javascript'></script>
6 7<style type='text/css'>@font-face{font-family:'Allerta Stencil';font-style:normal;font-weight:400;font-display:swap;src:url(//fonts.gstatic.com/s/allertastencil/v24/HTx0L209KT-LmIE9N7OR6eiycOe1_Db2.woff2)format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;}</style> 8<style> 9pre.prettyprint { 10 display: block; 11 width: auto; 12 overflow: auto; 13 max-height: 600px; 14 white-space: pre; 15 word-wrap: normal; 16 padding: 10px; 17} 18</style> 19<meta content='IE=EmulateIE7' http-equiv='X-UA-Compatible'/> 20<meta content='width=1100' name='viewport'/> 21<meta content='text/html; charset=UTF-8' http-equiv='Content-Type'/> 22<meta content='blogger' name='generator'/> 23<link href='http://www.diyphonegadgets.com/favicon.ico' rel='icon' type='image/x-icon'/> 24<link href='http://www.diyphonegadgets.com/' rel='canonical'/> 25<link rel="alternate" type="application/atom+xml" title="DIY Phone Gadgets - Atom" href="http://www.diyphonegadgets.com/feeds/posts/default" /> 26<link rel="alternate" type="application/rss+xml" title="DIY Phone Gadgets - RSS" href="http://www.diyphonegadgets.com/feeds/posts/default?alt=rss" /> 27<link rel="service.post" type="application/atom+xml" title="DIY Phone Gadgets - Atom" href="https://www.blogger.com/feeds/2092526155528722833/posts/default" /> 28<link rel="me" href="https://www.blogger.com/profile/05261381115653026389" /> 29<!--Can't find substitution for tag [blog.ieCssRetrofitLinks]--> 30<meta content='http://www.diyphonegadgets.com/' property='og:url'/> 31<meta content='DIY Phone Gadgets' property='og:title'/> 32<meta content='Another way to change the world with your smartphone' property='og:description'/> 33<title>DIY Phone Gadgets</title> 34<style id='page-skin-1' type='text/css'><!-- 35/* 36----------------------------------------------- 37Blogger Template Style 38Name: Simple 39Designer: Blogger 40URL: www.blogger.com 41----------------------------------------------- */ 42/* Content 43----------------------------------------------- */ 44body { 45font: normal normal 12px 'Trebuchet MS', Trebuchet, Verdana, sans-serif; 46color: #666666; 47background: #ffffff none repeat scroll top left; 48padding: 0 0 0 0; 49} 50html body .region-inner { 51min-width: 0; 52max-width: 100%; 53width: auto; 54} 55h2 { 56font-size: 22px; 57} 58a:link { 59text-decoration:none; 60color: #2288bb; 61} 62a:visited { 63text-decoration:none; 64color: #888888; 65} 66a:hover { 67text-decoration:underline; 68color: #33aaff; 69} 70.body-fauxcolumn-outer .fauxcolumn-inner { 71background: transparent none repeat scroll top left; 72_background-image: none; 73} 74.body-fauxcolumn-outer .cap-top { 75position: absolute; 76z-index: 1; 77height: 400px; 78width: 100%; 79} 80.body-fauxcolumn-outer .cap-top .cap-left { 81width: 100%; 82background: transparent none repeat-x scroll top left; 83_background-image: none; 84} 85.content-outer { 86-moz-box-shadow: 0 0 0 rgba(0, 0, 0, .15); 87-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .15); 88-goog-ms-box-shadow: 0 0 0 #333333; 89box-shadow: 0 0 0 rgba(0, 0, 0, .15); 90margin-bottom: 1px; 91} 92.content-inner { 93padding: 10px 40px; 94} 95.content-inner { 96background-color: #ffffff; 97} 98/* Header 99----------------------------------------------- */ 100.header-outer { 101background: transparent none repeat-x scroll 0 -400px; 102_background-image: none; 103} 104.Header h1 { 105font: normal bold 60px Allerta Stencil; 106color: #444444; 107text-shadow: 0 0 0 rgba(0, 0, 0, .2); 108} 109.Header h1 a { 110color: #444444; 111} 112.Header .description { 113font-size: 18px; 114color: #000000; 115} 116.header-inner .Header .titlewrapper { 117padding: 22px 0; 118} 119.header-inner .Header .descriptionwrapper { 120padding: 0 0; 121} 122/* Tabs 123----------------------------------------------- */ 124.tabs-inner .section:first-child { 125border-top: 0 solid #dddddd; 126} 127.tabs-inner .section:first-child ul { 128margin-top: -1px; 129border-top: 1px solid #dddddd; 130border-left: 1px solid #dddddd; 131border-right: 1px solid #dddddd; 132} 133.tabs-inner .widget ul { 134background: transparent none repeat-x scroll 0 -800px; 135_background-image: none; 136border-bottom: 1px solid #dddddd; 137margin-top: 0; 138margin-left: -30px; 139margin-right: -30px; 140} 141.tabs-inner .widget li a { 142display: inline-block; 143padding: .6em 1em; 144font: normal normal 12px 'Trebuchet MS', Trebuchet, Verdana, sans-serif; 145color: #000000; 146border-left: 1px solid #ffffff; 147border-right: 1px solid #dddddd; 148} 149.tabs-inner .widget li:first-child a { 150border-left: none; 151} 152.tabs-inner .widget li.selected a, .tabs-inner .widget li a:hover { 153color: #000000; 154background-color: #eeeeee; 155text-decoration: none; 156} 157/* Columns 158----------------------------------------------- */ 159.main-outer { 160border-top: 0 solid transparent; 161} 162.fauxcolumn-left-outer .fauxcolumn-inner { 163border-right: 1px solid transparent; 164} 165.fauxcolumn-right-outer .fauxcolumn-inner { 166border-left: 1px solid transparent; 167} 168/* Headings 169----------------------------------------------- */ 170div.widget > h2, 171div.widget h2.title { 172margin: 0 0 1em 0; 173font: normal bold 11px 'Trebuchet MS',Trebuchet,Verdana,sans-serif; 174color: #000000; 175} 176/* Widgets 177----------------------------------------------- */ 178.widget .zippy { 179color: #999999; 180text-shadow: 2px 2px 1px rgba(0, 0, 0, .1); 181} 182.widget .popular-posts ul { 183list-style: none; 184} 185/* Posts 186----------------------------------------------- */ 187h2.date-header { 188font: normal bold 11px Arial, Tahoma, Helvetica, FreeSans, sans-serif; 189} 190.date-header span { 191background-color: #bbbbbb; 192color: #ffffff; 193padding: 0.4em; 194letter-spacing: 3px; 195margin: inherit; 196} 197.main-inner { 198padding-top: 35px; 199padding-bottom: 65px; 200} 201.main-inner .column-center-inner { 202padding: 0 0; 203} 204.main-inner .column-center-inner .section { 205margin: 0 1em; 206} 207.post { 208margin: 0 0 45px 0; 209} 210h3.post-title, .comments h4 { 211font: normal normal 22px 'Trebuchet MS',Trebuchet,Verdana,sans-serif; 212margin: .75em 0 0; 213} 214.post-body { 215font-size: 110%; 216line-height: 1.4; 217position: relative; 218} 219.post-body img, .post-body .tr-caption-container, .Profile img, .Image img, 220.BlogList .item-thumbnail img { 221padding: 2px; 222background: #ffffff; 223border: 1px solid #eeeeee; 224-moz-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); 225-webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); 226box-shadow: 1px 1px 5px rgba(0, 0, 0, .1); 227} 228.post-body img, .post-body .tr-caption-container { 229padding: 5px; 230} 231.post-body .tr-caption-container { 232color: #666666; 233} 234.post-body .tr-caption-container img { 235padding: 0; 236background: transparent; 237border: none; 238-moz-box-shadow: 0 0 0 rgba(0, 0, 0, .1); 239-webkit-box-shadow: 0 0 0 rgba(0, 0, 0, .1); 240box-shadow: 0 0 0 rgba(0, 0, 0, .1); 241} 242.post-header { 243margin: 0 0 1.5em; 244line-height: 1.6; 245font-size: 90%; 246} 247.post-footer { 248margin: 20px -2px 0; 249padding: 5px 10px; 250color: #666666; 251background-color: #eeeeee; 252border-bottom: 1px solid #eeeeee; 253line-height: 1.6; 254font-size: 90%; 255} 256#comments .comment-author {
257padding-top: 1.5em; 258border-top: 1px solid transparent; 259background-position: 0 1.5em; 260} 261#comments .comment-author:first-child { 262padding-top: 0; 263border-top: none; 264} 265.avatar-image-container { 266margin: .2em 0 0; 267} 268#comments .avatar-image-container img { 269border: 1px solid #eeeeee; 270} 271/* Comments 272----------------------------------------------- */ 273.comments .comments-content .icon.blog-author { 274background-repeat: no-repeat; 275background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAASCAYAAABWzo5XAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEgAACxIB0t1+/AAAAAd0SU1FB9sLFwMeCjjhcOMAAAD+SURBVDjLtZSvTgNBEIe/WRRnm3U8RC1neQdsm1zSBIU9VVF1FkUguQQsD9ITmD7ECZIJSE4OZo9stoVjC/zc7ky+zH9hXwVwDpTAWWLrgS3QAe8AZgaAJI5zYAmc8r0G4AHYHQKVwII8PZrZFsBFkeRCABYiMh9BRUhnSkPTNCtVXYXURi1FpBDgArj8QU1eVXUzfnjv7yP7kwu1mYrkWlU33vs1QNu2qU8pwN0UpKoqokjWwCztrMuBhEhmh8bD5UDqur75asbcX0BGUB9/HAMB+r32hznJgXy2v0sGLBcyAJ1EK3LFcbo1s91JeLwAbwGYu7TP/3ZGfnXYPgAVNngtqatUNgAAAABJRU5ErkJggg==); 276} 277.comments .comments-content .loadmore a { 278border-top: 1px solid #999999; 279border-bottom: 1px solid #999999; 280} 281.comments .comment-thread.inline-thread { 282background-color: #eeeeee; 283} 284.comments .continue { 285border-top: 2px solid #999999; 286} 287/* Accents 288---------------------------------------------- */ 289.section-columns td.columns-cell { 290border-left: 1px solid transparent; 291} 292.blog-pager { 293background: transparent url(http://www.blogblog.com/1kt/simple/paging_dot.png) repeat-x scroll top center; 294} 295.blog-pager-older-link, .home-link, 296.blog-pager-newer-link { 297background-color: #ffffff; 298padding: 5px; 299} 300.footer-outer { 301border-top: 1px dashed #bbbbbb; 302} 303/* Mobile 304----------------------------------------------- */ 305body.mobile { 306background-size: auto; 307} 308.mobile .body-fauxcolumn-outer { 309background: transparent none repeat scroll top left; 310} 311.mobile .body-fauxcolumn-outer .cap-top { 312background-size: 100% auto; 313} 314.mobile .content-outer { 315-webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .15); 316box-shadow: 0 0 3px rgba(0, 0, 0, .15); 317} 318.mobile .tabs-inner .widget ul { 319margin-left: 0; 320margin-right: 0; 321} 322.mobile .post { 323margin: 0; 324} 325.mobile .main-inner .column-center-inner .section { 326margin: 0; 327} 328.mobile .date-header span { 329padding: 0.1em 10px; 330margin: 0 -10px; 331} 332.mobile h3.post-title { 333margin: 0; 334} 335.mobile .blog-pager { 336background: transparent none no-repeat scroll top center; 337} 338.mobile .footer-outer { 339border-top: none; 340} 341.mobile .main-inner, .mobile .footer-inner { 342background-color: #ffffff; 343} 344.mobile-index-contents { 345color: #666666; 346} 347.mobile-link-button { 348background-color: #2288bb; 349} 350.mobile-link-button a:link, .mobile-link-button a:visited { 351color: #ffffff; 352} 353.mobile .tabs-inner .section:first-child { 354border-top: none; 355} 356.mobile .tabs-inner .PageList .widget-content { 357background-color: #eeeeee; 358color: #000000; 359border-top: 1px solid #dddddd; 360border-bottom: 1px solid #dddddd; 361} 362.mobile .tabs-inner .PageList .widget-content .pagelist-arrow { 363border-left: 1px solid #dddddd; 364} 365 366--></style> 367<style id='template-skin-1' type='text/css'><!-- 368body { 369min-width: 860px; 370} 371.content-outer, .content-fauxcolumn-outer, .region-inner { 372min-width: 860px; 373max-width: 860px; 374_width: 860px; 375} 376.main-inner .columns { 377padding-left: 0px; 378padding-right: 260px; 379} 380.main-inner .fauxcolumn-center-outer { 381left: 0px; 382right: 260px; 383/* IE6 does not respect left and right together */ 384_width: expression(this.parentNode.offsetWidth - 385parseInt("0px") - 386parseInt("260px") + 'px'); 387} 388.main-inner .fauxcolumn-left-outer { 389width: 0px; 390} 391.main-inner .fauxcolumn-right-outer { 392width: 260px; 393} 394.main-inner .column-left-outer { 395width: 0px; 396right: 100%; 397margin-left: -0px; 398} 399.main-inner .column-right-outer { 400width: 260px; 401margin-right: -260px; 402} 403#layout { 404min-width: 0; 405} 406#layout .content-outer { 407min-width: 0; 408width: 800px; 409} 410#layout .region-inner { 411min-width: 0; 412width: auto; 413} 414--></style> 415<link href='https://www.blogger.com/dyncss/2092526155528722833/authorization.css?zx=663e56ff-ad62-4d79-afac-23ae7a890ed9' media='none' onload='if(media!='all')media='all'' rel='stylesheet'/><noscript><link href='https://www.blogger.com/dyncss/2092526155528722833/authorization.css?zx=663e56ff-ad62-4d79-afac-23ae7a890ed9' rel='stylesheet'/>
415</noscript> 416<meta name='google-adsense-platform-account' content='ca-host-pub-1556223355139109'/> 417<meta name='google-adsense-platform-domain' content='blogspot.com'/> 418 419<!-- data-ad-client=ca-pub-5463474479468511 --> 420 421</head> 422<body class='variant-simplysimple' onload='prettyPrint()'> 423<div class='navbar section' id='navbar'><div class='widget Navbar' data-version='1' id='Navbar1'>
423<script type="text/javascript"> 424 function setAttributeOnload(object, attribute, val) { 425 if(window.addEventListener) { 426 window.addEventListener('load', 427 function(){ object[attribute] = val; }, false); 428 } else { 429 window.attachEvent('onload', function(){ object[attribute] = val; }); 430 } 431 } 432 </script>
432 433<div id="navbar-iframe-container"></div>
434<script type="text/javascript" src="https://apis.google.com/js/platform.js"></script>
vendor: 1 bytes, line 434
434
435<script type="text/javascript"> 436 gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { 437 if (gapi.iframes && gapi.iframes.getContext) { 438 gapi.iframes.getContext().openChild({ 439 url: 'https://www.blogger.com/navbar/2092526155528722833?origin\x3dhttp://www.diyphonegadgets.com', 440 where: document.getElementById("navbar-iframe-container"), 441 id: "navbar-iframe" 442 }); 443 } 444 }); 445 </script>
445<script type="text/javascript"> 446(function() { 447var script = document.createElement('script'); 448script.type = 'text/javascript'; 449script.src = '//pagead2.googlesyndication.com/pagead/js/google_top_exp.js'; 450var head = document.getElementsByTagName('head')[0]; 451if (head) { 452head.appendChild(script); 453}})(); 454</script>
454 455</div></div> 456<div class='body-fauxcolumns'> 457<div class='fauxcolumn-outer body-fauxcolumn-outer'> 458<div class='cap-top'> 459<div class='cap-left'></div> 460<div class='cap-right'></div> 461</div> 462<div class='fauxborder-left'> 463<div class='fauxborder-right'></div> 464<div class='fauxcolumn-inner'> 465</div> 466</div> 467<div class='cap-bottom'> 468<div class='cap-left'></div> 469<div class='cap-right'></div> 470</div> 471</div> 472</div> 473<div class='content'> 474<div class='content-fauxcolumns'> 475<div class='fauxcolumn-outer content-fauxcolumn-outer'> 476<div class='cap-top'> 477<div class='cap-left'></div> 478<div class='cap-right'></div> 479</div> 480<div class='fauxborder-left'> 481<div class='fauxborder-right'></div> 482<div class='fauxcolumn-inner'> 483</div> 484</div> 485<div class='cap-bottom'> 486<div class='cap-left'></div> 487<div class='cap-right'></div> 488</div> 489</div> 490</div> 491<div class='content-outer'> 492<div class='content-cap-top cap-top'> 493<div class='cap-left'></div> 494<div class='cap-right'></div> 495</div> 496<div class='fauxborder-left content-fauxborder-left'> 497<div class='fauxborder-right content-fauxborder-right'></div> 498<div class='content-inner'> 499<header> 500<div class='header-outer'> 501<div class='header-cap-top cap-top'> 502<div class='cap-left'></div> 503<div class='cap-right'></div> 504</div> 505<div class='fauxborder-left header-fauxborder-left'> 506<div class='fauxborder-right header-fauxborder-right'></div> 507<div class='region-inner header-inner'> 508<div class='header section' id='header'><div class='widget Header' data-version='1' id='Header1'> 509<div id='header-inner'> 510<a href='http://www.diyphonegadgets.com/' style='display: block'> 511<img alt='DIY Phone Gadgets' height='99px; ' id='Header1_headerimg' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_vjO2Kb7nKHxllYbziDPGIP7PAdzexCxPBDIu42MkIzOO2fCwaRr-F3sALZbrO9r9C0neTmHM_y_cilTk0yvpPr5A8uZlwuJnfSPYD5ZqyCitYyD9hVPBv9qo8Af7qeOVexE6Gfwj4rQ/s1600/logo80.png' style='display: block' width='768px; '/> 512</a> 513<div class='descriptionwrapper'> 514<p class='description'><span>Another way to change the world with your smartphone</span></p> 515</div> 516</div> 517</div></div> 518</div> 519</div> 520<div class='header-cap-bottom cap-bottom'> 521<div class='cap-left'></div> 522<div class='cap-right'></div> 523</div> 524</div> 525</header> 526<div class='tabs-outer'> 527<div class='tabs-cap-top cap-top'> 528<div class='cap-left'></div> 529<div class='cap-right'></div> 530</div> 531<div class='fauxborder-left tabs-fauxborder-left'> 532<div class='fauxborder-right tabs-fauxborder-right'></div> 533<div class='region-inner tabs-inner'> 534<div class='tabs section' id='crosscol'><div class='widget PageList' data-version='1' id='PageList1'> 535<h2>Making Hardware Apps for Smartphones</h2> 536<div class='widget-content'> 537<ul> 538<li class='selected'> 539<a href='http://www.diyphonegadgets.com/'>Home</a> 540</li> 541<li> 542<a href='http://www.diyphonegadgets.com/p/about-community.html'>About the community</a> 543</li> 544<li> 545<a href='http://www.diyphonegadgets.com/p/solutions.html'>Top Solutions</a> 546</li> 547<li> 548<a href='https://play.google.com/store/apps/details?id=com.diyphonegadgets.freeblog'>Download Android App</a> 549</li> 550<li> 551<a href='http://www.diyphonegadgets.com/p/share-your-own-ideas-and-projects.html'>Share your own ideas and projects</a> 552</li> 553</ul> 554<div class='clear'></div> 555</div> 556</div></div> 557<div class='tabs no-items section' id='crosscol-overflow'></div> 558</div> 559</div> 560<div class='tabs-cap-bottom cap-bottom'> 561<div class='cap-left'></div> 562<div class='cap-right'></div> 563</div> 564</div> 565<div class='main-outer'> 566<div class='main-cap-top cap-top'> 567<div class='cap-left'></div> 568<div class='cap-right'></div> 569</div> 570<div class='fauxborder-left main-fauxborder-left'> 571<div class='fauxborder-right main-fauxborder-right'></div> 572<div class='region-inner main-inner'> 573<div class='columns fauxcolumns'> 574<div class='fauxcolumn-outer fauxcolumn-center-outer'> 575<div class='cap-top'> 576<div class='cap-left'></div> 577<div class='cap-right'></div> 578</div> 579<div class='fauxborder-left'> 580<div class='fauxborder-right'></div> 581<div class='fauxcolumn-inner'> 582</div> 583</div> 584<div class='cap-bottom'> 585<div class='cap-left'></div> 586<div class='cap-right'></div> 587</div> 588</div> 589<div class='fauxcolumn-outer fauxcolumn-left-outer'> 590<div class='cap-top'> 591<div class='cap-left'></div> 592<div class='cap-right'></div> 593</div> 594<div class='fauxborder-left'> 595<div class='fauxborder-right'></div> 596<div class='fauxcolumn-inner'> 597</div> 598</div> 599<div class='cap-bottom'> 600<div class='cap-left'></div> 601<div class='cap-right'></div> 602</div> 603</div> 604<div class='fauxcolumn-outer fauxcolumn-right-outer'> 605<div class='cap-top'> 606<div class='cap-left'></div> 607<div class='cap-right'></div> 608</div> 609<div class='fauxborder-left'> 610<div class='fauxborder-right'></div> 611<div class='fauxcolumn-inner'> 612</div> 613</div> 614<div class='cap-bottom'> 615<div class='cap-left'></div> 616<div class='cap-right'></div> 617</div> 618</div> 619<!-- corrects IE6 width calculation --> 620<div class='columns-inner'> 621<div class='column-center-outer'> 622<div class='column-center-inner'> 623<div class='main section' id='main'><div class='widget Blog' data-version='1' id='Blog1'> 624<div class='blog-posts hfeed'> 625 626 <div class="date-outer"> 627 628<h2 class='date-header'><span>Wednesday, December 4, 2013</span></h2> 629 630 <div class="date-posts"> 631 632<div class='post-outer'> 633<div class='post hentry' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> 634<a name='438480975296889554'></a> 635<h3 class='post-title entry-title' itemprop='name'> 636<a href='http://www.diyphonegadgets.com/2013/12/yun-plug-alows-everyone-to-build-smart.html'>Yún Plug allows everyone to build a smart home in 5 minutes, reduce energy bills and have fun </a> 637</h3> 638<div class='post-header'> 639<div class='post-header-line-1'></div> 640</div> 641<div class='post-body entry-content' id='post-body-438480975296889554' itemprop='articleBody'> 642The earth is suffering. The more we pursue life comforts, the more we consume. We are all involved in an inevitable rule in this materialistic world full of energy consumption.<br /> 643<br /> 644Reducing energy consumption while improving the comforts of life, it sounds contradictory. But <a href="http://yunplug.org/" target="_blank">Yún Plug</a> is made for both purposes.<br /> 645<br /> 646<div class="separator" style="clear: both; text-align: center;"> 647<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA3ssu1Ta9ZgTOPJyDvOmDHEe3XlaEUfSTM0a0XeZAD2AH-XMoLbMviauwWRuTX3esPx1ItQjmEj6JgownKAoN3o8Hf5Xhp_pIsMbNmW-yZhR1TIYxliRMkJaMp95cBBhxP9_zHYPOPVA/s1600/web_hi_res_512.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="200" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA3ssu1Ta9ZgTOPJyDvOmDHEe3XlaEUfSTM0a0XeZAD2AH-XMoLbMviauwWRuTX3esPx1ItQjmEj6JgownKAoN3o8Hf5Xhp_pIsMbNmW-yZhR1TIYxliRMkJaMp95cBBhxP9_zHYPOPVA/s200/web_hi_res_512.png" width="200" /></a></div> 648<br /> 649<br /> 650<a href="http://yunplug.org/" target="_blank">Yún Plug</a> is an intelligent and budget-friendly power plug that is compatible with standard home appliances, which allows everyone to easily create an ecosystem of home automation, bringing energy efficie
650ncy and comfortable life experience.<br /> 651<br /> 652<div class="separator" style="clear: both; text-align: center;"> 653<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmQsdTLy4eK7gpW6kDH9KwDlrxpbf2LlOSk9Hg6AHV1ZYqzZ7T77cgC_QzqtXptJPCZGko9RQnMukCneYBYVDHJN57WBiLchYNIUXjG4Ifsm3aOb4a0Rfae4NiXDNK3J7OXMvKRaHdG88/s1600/slide3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="76" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhmQsdTLy4eK7gpW6kDH9KwDlrxpbf2LlOSk9Hg6AHV1ZYqzZ7T77cgC_QzqtXptJPCZGko9RQnMukCneYBYVDHJN57WBiLchYNIUXjG4Ifsm3aOb4a0Rfae4NiXDNK3J7OXMvKRaHdG88/s320/slide3.png" width="320" /></a></div> 654<br /> 655Simple and easy as plug and play, <a href="http://yunplug.org/" target="_blank">Yún Plug</a> allows you to connect any home appliance to the Internet.<br /> 656<br /> 657To those who are curious: Yún means “cloud” in chinese language, as <a href="http://yunplug.org/" target="_blank">Yún Plug</a> makes it very simple for the home appliances and sensors to connect to complex web services, offering intelligent interactions between home appliances and different computing devices, such as smartphones and PCs.<br /> 658<br /> 659You can manually switch the appliance on and off from your smartphone app or set up some rules so that under some conditions (time, temperature, your location, etc), the appliance will automatically start or stop working.<br /> 660<br /> 661<div class="separator" style="clear: both; text-align: center;"> 662<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEBaaTuPAeBVNljEGyajzAS9OEh8Y_v5o5phyWYC0QjkRP1Z3dP95DSntV51pGLCJUsBmw73FrgrTQj1f2X_9FGS0CAcMC9HVcpJUaRe7PTzQCGIokDGtjEgUaKczkZXoth4HmFbbdR8E/s1600/Screenshot_2013-11-24-08-59-47.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEBaaTuPAeBVNljEGyajzAS9OEh8Y_v5o5phyWYC0QjkRP1Z3dP95DSntV51pGLCJUsBmw73FrgrTQj1f2X_9FGS0CAcMC9HVcpJUaRe7PTzQCGIokDGtjEgUaKczkZXoth4HmFbbdR8E/s320/Screenshot_2013-11-24-08-59-47.png" width="192" /></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirAl-AkDauSUgdvkwmbYzm09V-1ee_zVrEwuhq-guPB2QZByH9bKbx4TEOmzE43ngOqKedE3xiO6yCS4TXb_scCfBwG2S_n0KwQ_z52qMx3Jj8-E8fj8j57K4-yOpwkVRPIg-s-bv2DGA/s1600/Screenshot_2013-11-24-11-43-11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEirAl-AkDauSUgdvkwmbYzm09V-1ee_zVrEwuhq-guPB2QZByH9bKbx4TEOmzE43ngOqKedE3xiO6yCS4TXb_scCfBwG2S_n0KwQ_z52qMx3Jj8-E8fj8j57K4-yOpwkVRPIg-s-bv2DGA/s320/Screenshot_2013-11-24-11-43-11.png" width="192" /></a></div> 663<br /> 664Interested? <a href="http://yunplug.org/benefits-and-use-cases/" target="_blank">Here</a> are some use cases to show how <a href="http://yunplug.org/" target="_blank">Yún Plug</a> reduces your bill of energy consumption and improves your life comforts.<br /> 665<br /> 666Ready to use? Click <a href="http://yunplug.org/how-to-use/" target="_blank">here</a> to follow the 3 easy steps. 667<div style='clear: both;'></div> 668</div> 669<div class='post-footer'> 670<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'> 671Posted by 672<span class='fn'> 673<a href='https://www.blogger.com/profile/05261381115653026389' itemprop='author' rel='author' title='author profile'> 674DIY Phone Gadgets 675</a> 676</span> 677</span> 678<span class='post-timestamp'> 679at 680<a class='timestamp-link' href='http://www.diyphonegadgets.com/2013/12/yun-plug-alows-everyone-to-build-smart.html' itemprop='url' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2013-12-04T07:25:00-08:00'>7:25 AM</abbr></a> 681</span> 682<span class='post-comment-link'> 683<a class='comment-link' href='http://www.diyphonegadgets.com/2013/12/yun-plug-alows-everyone-to-build-smart.html#comment-form' onclick=''>227 684comments</a> 685</span> 686<span class='post-icons'> 687<span class='item-control blog-admin pid-685983255'> 688<a href='https://www.blogger.com/post-edit.g?blogID=2092526155528722833&postID=438480975296889554&from=pencil' title='Edit Post'> 689<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> 690</a> 691</span> 692</span> 693<div class='post-share-buttons goog-inline-block'> 694<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=438480975296889554&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=438480975296889554&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=438480975296889554&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=438480975296889554&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=438480975296889554&target=pinterest' target='_blank' title='Share to P
694interest'><span class='share-button-link-text'>Share to Pinterest</span></a> 695</div> 696</div> 697<div class='post-footer-line post-footer-line-2'><span class='post-labels'> 698</span> 699</div> 700<div class='post-footer-line post-footer-line-3'><span class='post-location'> 701</span> 702</div> 703</div> 704</div> 705</div> 706<div class='inline-ad'>
707<script type="text/javascript"><!-- 708google_ad_client="pub-5463474479468511"; 709google_ad_host="pub-1556223355139109"; 710google_ad_width=200; 711google_ad_height=200; 712google_ad_format="200x200_as"; 713google_ad_type="text_image"; 714google_ad_host_channel="0001+S0006+L0001"; 715google_color_border="FFFFFF"; 716google_color_bg="FFFFFF"; 717google_color_link="000000"; 718google_color_url="2288BB"; 719google_color_text="666666"; 720//--></script>
vendor: 1 bytes, line 720
720
721<script type="text/javascript" 722 src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 723</script>
723 724</div> 725 726 </div></div> 727 728 729 <div class="date-outer"> 730 731<h2 class='date-header'><span>Friday, October 25, 2013</span></h2> 732 733 <div class="date-posts"> 734 735<div class='post-outer'> 736<div class='post hentry' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> 737<a name='1040971285111042277'></a> 738<h3 class='post-title entry-title' itemprop='name'> 739<a href='http://www.diyphonegadgets.com/2013/10/udoo-best-tool-so-far-to-create-diy.html'>UDOO: the BEST tool so far to create DIY Phone Gadgets</a> 740</h3> 741<div class='post-header'> 742<div class='post-header-line-1'></div> 743</div> 744<div class='post-body entry-content' id='post-body-1040971285111042277' itemprop='articleBody'> 745The DIY Phone Gadgets community is so excited to introduce UDOO: Android Linux Arduino in a tiny single-board computer!<br /> 746<br /> 747<div class="separator" style="clear: both; text-align: center;"> 748<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Q74v_LSagglT5zl9w-YqZrhF5aN8kCCk8MWGvtz6gZJYJxNndROFEgSK3cpJIGu6oxN94-ES8_LIfqFJ6H8zNIox0cvYY0Uwny2QNBpBYqlvYLLeWf6dD9CnGGYdXZX_OjFvIPH95cs/s1600/udoo+android+diy+phone+gadgets.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Q74v_LSagglT5zl9w-YqZrhF5aN8kCCk8MWGvtz6gZJYJxNndROFEgSK3cpJIGu6oxN94-ES8_LIfqFJ6H8zNIox0cvYY0Uwny2QNBpBYqlvYLLeWf6dD9CnGGYdXZX_OjFvIPH95cs/s400/udoo+android+diy+phone+gadgets.jpg" width="400" /></a></div> 749<br /> 750<br /> 751<div class="separator" style="clear: both; text-align: center;"> 752<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoIEsIEfD5jqChmJQMg5CMrUREjQppuvv_95-IGAp0iCZ0_sngwEanoD8mRVl6Qe5HksfK1Dsr8ykQkKOX8t61piy5SDdL5tNPQMdKaq_BBaWAvNQdVcgTdfqsJ5afnJzMe5WdwokoJPo/s1600/get+started.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="153" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoIEsIEfD5jqChmJQMg5CMrUREjQppuvv_95-IGAp0iCZ0_sngwEanoD8mRVl6Qe5HksfK1Dsr8ykQkKOX8t61piy5SDdL5tNPQMdKaq_BBaWAvNQdVcgTdfqsJ5afnJzMe5WdwokoJPo/s400/get+started.jpg" width="400" /></a></div> 753<br /> 754<br /> 755Hopefully you have already received yours and already <a href="http://www.udoo.org/getting-started/" target="_blank">started your first UDOO project</a>!<br /> 756<br /> 757Remember the bad old days when we were trying hard to squeeze Android into the Raspberry Pi? That was just 5 months ago. Well, perhaps we can already throw the Pi away and use something more powerful: the UDOO, who runs Android natively. What's more thrilling for DIY Phone Gadgets makers is that we don't actually need another Arduino board: Arduno is already on UDOO!<br /> 758<br /> 759<div class="separator" style="clear: both; text-align: center;"> 760<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixaTDnRod2-O7GtD7nwr2pD33Y_PwB4nQtfCnqMrjqS3ebjOXFCl_IS7cLzW3o2eOqPnnLbtPr7xQqvsGvP0CLQZ3t2bK3ecMfvwKo3DCE3vGRH4cyBYYu4EzBKH3R3MdJ9zIm-DOlQME/s1600/DIY+Phone+Gadgets+Udoo.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="197" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixaTDnRod2-O7GtD7nwr2pD33Y_PwB4nQtfCnqMrjqS3ebjOXFCl_IS7cLzW3o2eOqPnnLbtPr7xQqvsGvP0CLQZ3t2bK3ecMfvwKo3DCE3vGRH4cyBYYu4EzBKH3R3MdJ9zIm-DOlQME/s400/DIY+Phone+Gadgets+Udoo.jpg" width="400" /></a></div> 761<br /> 762<br /> 763UDOO is a powerful prototyping board for software development and design, it’s easy to use and with a few steps you can start using it and creating your projects with minimum knowledge.<br /> 764<br /> 765UDOO merges different computing worlds in one; each world has its strengths and weaknesses, and all of them are useful today in education as well as Do-It-Yourself (DIY) and rapid prototyping endeavors.<br /> 766<br /> 767UDOO is an open hardware, low-cost computer equipped with an ARM i.MX6 Freescale processor for Android and Linux, alongside Arduino DUE’s ARM SAM3X, both CPU integrated on the same board!<br /> 768<br /> 769UDOO’s size is 4.33 inch x 3.35 inch (11 cm x 8.5 cm) and it has low power consumption.<br /> 770<br /> 771It is incredibly simple to make DIY Phone Gadgets with UDOO. Want to build a LED light-controller, a RFID reader or a creative game c
771ontroller? UDOO allows you to create any kind of project and share it with the community.Combining the flexibility of ArduinoTM with the power of Android or Linux, you can create and update tons of stand-alone solutions without worrying about the linking between the two worlds and their wiring.<br /> 772<br /> 773Here is an example of UDOO with shield and sensors:<br /> 774<br /> 775<div class="separator" style="clear: both; text-align: center;"> 776<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPILoHFYUjVAFXw6zTMHz5FssP-Yt2FvOmBVLSlP0FmpzlD4fSIEKfPaWcAKbxpAQcYhFj-9g_4T4xnS8zmKGxWtd2GHDhyNRmSUVxocQeZaoOxEgdv-Wh2sV-3aBlwNKJs3_b1DyFPEg/s1600/DIY+Phone+Gadgets+Udoo+Sensors.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="193" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPILoHFYUjVAFXw6zTMHz5FssP-Yt2FvOmBVLSlP0FmpzlD4fSIEKfPaWcAKbxpAQcYhFj-9g_4T4xnS8zmKGxWtd2GHDhyNRmSUVxocQeZaoOxEgdv-Wh2sV-3aBlwNKJs3_b1DyFPEg/s400/DIY+Phone+Gadgets+Udoo+Sensors.jpg" width="400" /></a></div> 777<br /> 778<br /> 779With UDOO, companies can build high level prototype in a fast and easy way. UDOO provides companies with a powerful tool to create fast prototyping for any kind of needs. Prototyping with physical computing toolkits has become a widespread method for technology development, design exploration and creative expression. The board allows researchers and designers working for companies to quickly create and explore new interaction techniques and design devices in the protoptyping sessions of a project. UDOO provides a full suite for developing prototypes based on Android platform alone or combined with ADK2012.<br /> 780<br /> 781Enjoy the video:<br /> 782<br /> 783<iframe frameborder="0" height="360" scrolling="no" src="http://www.kickstarter.com/projects/435742530/udoo-android-linux-arduino-in-a-tiny-single-board/widget/video.html" width="480"> </iframe> 784 785<br /> 786<br /> 787<div style='clear: both;'></div> 788</div> 789<div class='post-footer'> 790<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'> 791Posted by 792<span class='fn'> 793<a href='https://www.blogger.com/profile/05261381115653026389' itemprop='author' rel='author' title='author profile'> 794DIY Phone Gadgets 795</a> 796</span> 797</span> 798<span class='post-timestamp'> 799at 800<a class='timestamp-link' href='http://www.diyphonegadgets.com/2013/10/udoo-best-tool-so-far-to-create-diy.html' itemprop='url' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2013-10-25T07:31:00-07:00'>7:31 AM</abbr></a> 801</span> 802<span class='post-comment-link'> 803<a class='comment-link' href='http://www.diyphonegadgets.com/2013/10/udoo-best-tool-so-far-to-create-diy.html#comment-form' onclick=''>74 804comments</a> 805</span> 806<span class='post-icons'> 807<span class='item-control blog-admin pid-685983255'> 808<a href='https://www.blogger.com/post-edit.g?blogID=2092526155528722833&postID=1040971285111042277&from=pencil' title='Edit Post'> 809<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> 810</a> 811</span> 812</span> 813<div class='post-share-buttons goog-inline-block'> 814<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=1040971285111042277&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=1040971285111042277&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=1040971285111042277&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=1040971285111042277&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=1040971285111042277&target=pinterest' target='_blank' title='Share to P
814interest'><span class='share-button-link-text'>Share to Pinterest</span></a> 815</div> 816</div> 817<div class='post-footer-line post-footer-line-2'><span class='post-labels'> 818</span> 819</div> 820<div class='post-footer-line post-footer-line-3'><span class='post-location'> 821</span> 822</div> 823</div> 824</div> 825</div> 826 827 </div></div> 828 829 830 <div class="date-outer"> 831 832<h2 class='date-header'><span>Thursday, June 6, 2013</span></h2> 833 834 <div class="date-posts"> 835 836<div class='post-outer'> 837<div class='post hentry' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> 838<a name='3367589690989902772'></a> 839<h3 class='post-title entry-title' itemprop='name'> 840<a href='http://www.diyphonegadgets.com/2013/06/developing-useful-android-apps-with.html'>Developing useful Android apps with infrared (IR) modules and open source libraries</a> 841</h3> 842<div class='post-header'> 843<div class='post-header-line-1'></div> 844</div> 845<div class='post-body entry-content' id='post-body-3367589690989902772' itemprop='articleBody'> 846Almost everyone uses infrared remote controls at home: to control your TV, your air conditioner, etc.<br /> 847<br /> 848We naturally come to the idea of using one Android smarphone or tablet to replace these multiple remote controls.<br /> 849<div class="separator" style="clear: both; text-align: center;"> 850<br /></div> 851<div class="separator" style="clear: both; text-align: center;"> 852<iframe allowfullscreen="allowfullscreen" frameborder="0" height="266" mozallowfullscreen="mozallowfullscreen" src="https://www.youtube.com/embed/QaTbPTAv9pw?feature=player_embedded" webkitallowfullscreen="webkitallowfullscreen" width="320"></iframe></div> 853<br /> 854<br /> 855<br /> 856However, developing and using infrared on most of the Android devices requires the use of external hardware. How to do it? Perhaps the easiest way is to follow what Irdroid tells us.<br /> 857<br /> 858<div class="separator" style="clear: both; text-align: center;"> 859<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1S521Qw4An-CBT8GUklvzU-s0GDepq1qX4CUXsS-3V-8qDGPj0HD7tuxKNJssD2lJFLW7_Fneia56lnwDlZlNihaVjv6WhJnabPil4ctOgU2das-i1-EnkPfLhGX9jM2yF0rnkDXIznQ/s1600/FAY7I5KHEI4FOZU.LARGE.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1S521Qw4An-CBT8GUklvzU-s0GDepq1qX4CUXsS-3V-8qDGPj0HD7tuxKNJssD2lJFLW7_Fneia56lnwDlZlNihaVjv6WhJnabPil4ctOgU2das-i1-EnkPfLhGX9jM2yF0rnkDXIznQ/s320/FAY7I5KHEI4FOZU.LARGE.jpg" width="320" /></a></div> 860<br /> 861<br /> 862Irdroid is a universal infrared remote control for smartphones, tablets and other devices, working with the Google Android operating system. To control your favorite TV, STB or DVD, you need to download the Irdroid APP for Android and to purchase a Irdroid module.. The Irdroid application is available for download from the Android Market and from Appslib (for android tablets).<br /> 863<br /> 864The biggest benefit of Irdroid is that it is compatible with the LIRC project in which database, there are a lot of supported equipment vendor’s some of the famous are Samsung, Sony, Motorola, LG, Panasonic, Philips and many, many more (see here: <a href="http://lirc.sourceforge.net/remotes/" target="_blank">http://lirc.sourceforge.net/remotes/</a>).Another benefit for the public is that the Irdroid application is free, open source and the source code can be downloaded from:<br /> 865<a href="http://www.irdroid.com/purchase/?ap_id=1004" target="_blank">http://www.irdroid.com/purchase/?ap_id=1004</a><br /> 866<a href="http://www.irdroid.com/purchase/?ap_id=1004" target="_blank"><img alt="Irdroid - IR remote for Android" border="0" src="http://www.electronics-lab.com/advertising/banners/irdroid_152x106.gif" /></a><br /> 867<br /> 868Features:<br /> 869<br /> 870 Free and open source application and open hardware module<br /> 871 Available from Android Market, AppsLib<br /> 872 Low cost Irdroid infrared module<br /> 873 Plug and play design<br /> 874 Extended remote control range – 10+ meters<br /> 875 Small Dimensions 17×43,2 mm<br /> 876 Design based on the principle KISS (Keep it simple stupid!)<br /> 877<br /> 878Let’s start with the Hardware:<br /> 879<div class="separator" style="clear: both; text-align: center;"> 880<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuFlQPf_s9nmPNHf9Vd5TWxhTJz5cY_5Yauy4vNrs5kTJgptnxpBqyruGmIfyzMViXIgNLHX1Y6XsFb63Woi5YY1NGTjSt9rWX7dYroA5MIk7c_n_8EOheGKYbRB5rraJXk3FI8RXZzgY/s1600/954633_475170939227164_2099458269_n.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="214" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjuFlQPf_s9nmPNHf9Vd5TWxhTJz5cY_5Yauy4vNrs5kTJgptnxpBqyruGmIfyzMViXIgNLHX1Y6XsFb63Woi5YY1NGTjSt9rWX7dYroA5MIk7c_n_8EOheGKYbRB5rraJXk3FI8RXZzgY/s320/954633_475170939227164_2099458269_n.png" width="320" /></a></div> 881The module’s main task is to amplify the signal, generated from the app and to provide an IR interface to the relevant Android device. The active amplification is necessary, because the output signal from an Android device is not powerful enough to light up IR LEDs, as well as to provide a decent remote control range.<br /> 882<br />
883The module practically amplifies the generated waveform from the app and emits IR Light via the IR LEDs at 940nm wavelength. The input of the module is provided by the Android Device 3.5mm Audio jack.<br /> 884<br /> 885The Left and The Right audio channels are used, (GND) is not connected. The amplification is done using an inexpensive LM386-M1 mono audio amplifier which is configured for a gain of 200 times.<br /> 886<br /> 887This configuration assures enough power @ 6V in order to achieve a remote control distance of about 10 meters.<br /> 888<br /> 889Тhe Irdroid app is responsible for generating a 19kHz audio tone. The infared data is modulated on the 19kHz sine wave. The signal is amplified via the LM386 audio amplifier and rectified via the two IR leds, doubling the frequency to 38kHz. The first IR led rectifies the positive halfwave of the audio signal and the second IR led the negative halfwave of the signal.<br /> 890<br /> 891The LM386 mono audio amplifier is configured to amplify the signal 200 times so that the radiated IR light power is enough to achieve a remote control distance of about 10 meters.<br /> 892<br /> 893Most of the components are SMD (surface mount) only the Jumper, the two IR Leds, the Battery Holder and the audio jack are coventional parts. The download section at http://www.irdroid.com contains a zip archive of the schematics and the production files of the module:<br /> 894<br /> 895<a href="http://www.irdroid.com/purchase/?ap_id=1004" target="_blank">http://www.irdroid.com/purchase/?ap_id=1004</a><br /> 896<br /> 897You could use the schematics and the production files to produce boards using your favourite printed circuit board manufacturer. In most of the companies offering pcb manufacturing service you will find out that they could also solder the SMD components for you, as well as to build complete modules.<br /> 898<br /> 899<a href="http://www.instructables.com/files/orig/FS0/UCZ4/GUXKZ9DP/FS0UCZ4GUXKZ9DP.pdf" target="_blank">http://www.instructables.com/files/orig/FS0/UCZ4/GUXKZ9DP/FS0UCZ4GUXKZ9DP.pdf</a><br /> 900<br /> 901<div class="separator" style="clear: both; text-align: center;"> 902<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSn0FoAuHG8M2ssxwiQSZ1XKH40BO3vbokqgl5sRDDltvGkfiFqHoIGR-2LUHh9-AT7UNG8scCHGZKb3pJetxrTFv_DaywroRVa5HLkkjkoIfmJxGHXWDmcBIUnQ5Aa5okxLKZwQbVU3Q/s1600/FVJHQ3YHEKLLTYV.LARGE.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="326" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgSn0FoAuHG8M2ssxwiQSZ1XKH40BO3vbokqgl5sRDDltvGkfiFqHoIGR-2LUHh9-AT7UNG8scCHGZKb3pJetxrTFv_DaywroRVa5HLkkjkoIfmJxGHXWDmcBIUnQ5Aa5okxLKZwQbVU3Q/s400/FVJHQ3YHEKLLTYV.LARGE.jpg" width="400" /></a></div> 903<br /> 904<br /> 905All the documentation, schematics, user's manual and a handbook for building your own Irdroid IR module is attached to this instructable: <a href="http://www.instructables.com/answers/DIY-IR-Droid-Module-35mm-to-Infrared-Breadboa/" target="_blank">http://www.instructables.com/answers/DIY-IR-Droid-Module-35mm-to-Infrared-Breadboa/</a><br /> 906<br />
907For more information and support:<br /> 908<a href="http://www.irdroid.com/purchase/?ap_id=1004" target="_blank"><img alt="" border="0" src="http://www.irdroid.com/wp-content/uploads/2013/08/Irdroid_banner120240.png" /></a> 909<br /> 910<div class="separator" style="clear: both; text-align: center;"> 911<br /></div> 912<div style='clear: both;'></div> 913</div> 914<div class='post-footer'> 915<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'> 916Posted by 917<span class='fn'> 918<a href='https://www.blogger.com/profile/05261381115653026389' itemprop='author' rel='author' title='author profile'> 919DIY Phone Gadgets 920</a> 921</span> 922</span> 923<span class='post-timestamp'> 924at 925<a class='timestamp-link' href='http://www.diyphonegadgets.com/2013/06/developing-useful-android-apps-with.html' itemprop='url' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2013-06-06T06:20:00-07:00'>6:20 AM</abbr></a> 926</span> 927<span class='post-comment-link'> 928<a class='comment-link' href='http://www.diyphonegadgets.com/2013/06/developing-useful-android-apps-with.html#comment-form' onclick=''>85 929comments</a> 930</span> 931<span class='post-icons'> 932<span class='item-control blog-admin pid-685983255'> 933<a href='https://www.blogger.com/post-edit.g?blogID=2092526155528722833&postID=3367589690989902772&from=pencil' title='Edit Post'> 934<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> 935</a> 936</span> 937</span> 938<div class='post-share-buttons goog-inline-block'> 939<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=3367589690989902772&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=3367589690989902772&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=3367589690989902772&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=3367589690989902772&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=3367589690989902772&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> 940</div> 941</div> 942<div class='post-footer-line post-footer-line-2'><span class='post-labels'> 943</span> 944</div> 945<div class='post-footer-line post-footer-line-3'><span class='post-location'> 946</span> 947</div> 948</div> 949</div> 950</div> 951 952 </div></div> 953 954 955 <div class="date-outer"> 956 957<h2 class='date-header'><span>Wednesday, April 10, 2013</span></h2> 958 959 <div class="date-posts"> 960 961<div class='post-outer'> 962<div class='post hentry' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> 963<a name='8755400594871843160'></a> 964<h3 class='post-title entry-title' itemprop='name'> 965<a href='http://www.diyphonegadgets.com/2013/04/phone-apps-ninja-blocks-easy-to-build.html'>Phone apps + Ninja Blocks = easy-to-build DIY Phone Gadgets</a> 966</h3> 967<div class='post-header'> 968<div class='post-header-line-1'></div> 969</div> 970<div class='post-body entry-content' id='post-body-8755400594871843160' itemprop='articleBody'> 971<div class="separator" style="clear: both; text-align: left;"> 972James, our Aussie friend who worked here with us in Paris, came back to Sydney to make one of the most interesting things on this planet: the <a href="http://ninjablocks.com/" target="_blank">Ninja Blocks</a>.</div> 973<div class="separator" style="clear: both; text-align: center;"> 974<br /></div> 975<div class="separator" style="clear: both; text-align: center;"> 976<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy47m5SCkIEL89orWpM94Q2r2XOvp8T3EFMCqSN01C87H00e5BngLUjFnn3ni8jVgBNIr3fZNSh-TmJ-kpYomKTFIcd1f2XTWuuaSa9V1dsnEOSJySHrjULNf2SSSiDaU0QbCqGJ724
976iY/s1600/ninja+tablet.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="275" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgy47m5SCkIEL89orWpM94Q2r2XOvp8T3EFMCqSN01C87H00e5BngLUjFnn3ni8jVgBNIr3fZNSh-TmJ-kpYomKTFIcd1f2XTWuuaSa9V1dsnEOSJySHrjULNf2SSSiDaU0QbCqGJ724iY/s400/ninja+tablet.png" width="400" /></a></div> 977<br /> 978<span style="color: #222222; font-family: arial, sans-serif; font-size: x-small;"><br /></span> 979<br /> 980<div class="separator" style="clear: both; text-align: center;"> 981<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQjJKl0SLkls_VXhGPR5KM4WxMHEN9eQ2JCQ8Z8fMYCK9Psbh1aj-7UJO7-X7oTHXPAoJWyyeCZArciqYjBMIkVxjyloDWIUTTpOC6mEqaZ3MfT47ItfQXKixLZ3LEmvUbV56YTNbcuJg/s1600/ninja.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="150" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiQjJKl0SLkls_VXhGPR5KM4WxMHEN9eQ2JCQ8Z8fMYCK9Psbh1aj-7UJO7-X7oTHXPAoJWyyeCZArciqYjBMIkVxjyloDWIUTTpOC6mEqaZ3MfT47ItfQXKixLZ3LEmvUbV56YTNbcuJg/s400/ninja.jpg" width="400" /></a></div> 982<br /> 983<br /> 984<div> 985The Ninja Blocks platform makes it trivial to build web & mobile apps that talk to hardware. Get up and running in minutes, and begin talking to hardware & connected devices with the web languages you already know. Focus 100% on your app, and never have to worry about embedded programming, electronics, & networking protocols again.<br /> 986<br /> 987<div class="separator" style="clear: both; text-align: center;"> 988<iframe allowfullscreen="allowfullscreen" frameborder="0" height="266" mozallowfullscreen="mozallowfullscreen" src="https://www.youtube.com/embed/wCbbyovtWMs?feature=player_embedded" webkitallowfullscreen="webkitallowfullscreen" width="320"></iframe></div> 989<br /> 990What can we do with Ninja Blocks?<br /> 991<div> 992<br /> 993<b>Rule the connected devices in your life</b>With the Ninja Rules Engine we can create rules that turn on the lights when we're not at home, or send an SMS to our phone when someone is at the front door.<br /> 994<br /> 995<b> Run apps for the internet of things</b><br /> 996With apps built on REST API, the Ninja Block can be whatever we want it to be. It's our security system, our wine monitor, our cat's entertainer, it's our home thermostat, and more.<br /> 997<br /> 998<b> Build a web connected security solution</b>Within five minutes we can create a security system that texts us whenever motion is detected, or if a door or window is opened. We can even have images saved to Dropbox.<br /> 999<br /> 1000<b> Monitor and control our things anywhere</b>Make sure the iron is turned off or if the kids are at home? With the remote control app we can control things or keep an eye on our home from wherever we go.</div> 1001<div class="separator" style="clear: both; text-align: center;"> 1002<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMNlqHthGtsxsKUKUcQXdK-Hey64EjkwwPtk2bstKNM3NXqWadslHzssTdvu2CG7nPELqsapeaIx-Tovm50UJzwAeV0ynHFVc8qwq2Ot9lAWeWZfkrXAIdQ0-T5Y3u99ENdXqPeRx21nw/s1600/ninja+cloud.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="101" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjMNlqHthGtsxsKUKUcQXdK-Hey64EjkwwPtk2bstKNM3NXqWadslHzssTdvu2CG7nPELqsapeaIx-Tovm50UJzwAeV0ynHFVc8qwq2Ot9lAWeWZfkrXAIdQ0-T5Y3u99ENdXqPeRx21nw/s400/ninja+cloud.jpg" width="400" /></a></div> 1003<div> 1004Included inside the Ninja Kit are:</div> 1005<div> 1006<br /> 10071x Wireless motion sensor<br /> 10081x Wireless door/window contact sensor<br /> 10091x Wireless button<br /> 10101x Wireless temperature and humidity sensor<br /> 10111x Ninja Block (BeagleBone Linux computer with and Arduino)<br /> 10121x USB Wi-Fi module<br /> 10131x Ethernet Cable<br /> 10141x 5VDC 3 Amp Power supply with connectors for US, EU, UK, and AU</div> 1015<div class="separator" style="clear: both; text-align: center;"> 1016<br /></div> 1017<div class="separator" style="clear: both; text-align: center;"> 1018<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKMkOs0NIAt0O1QPM1gOyGBUugYelXeHoLHTlazpaY-xe5tcVfoTWPB855IylK5XoXqnJTnbYlzyf-o1i_mooE1bCB9pdR83dBM3b_HFKmzDrDnqJwMgrFE8BvqDpImDFz-ur2AYASA_s/s1600/ninja+hard.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="300" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgKMkOs0NIAt0O1QPM1gOyGBUugYelXeHoLHTlazpaY-xe5tcVfoTWPB855IylK5XoXqnJTnbYlzyf-o1i_mooE1bCB9pdR83dBM3b_HFKmzDrDnqJwMgrFE8BvqDpImDFz-ur2AYASA_s/s400/ninja+hard.jpg" width="400" /></a></div> 1019<div> 1020<br /></div> 1021<div> 1022<br /> 1023If you have a Raspberry Pi, you can turn it into a Ninja Block by following this guide:<br /> 1024<a href="http://ninjablocks.com/blogs/how-to/7195040-using-a-raspberry-pi-as-a-ninja-block" target="_blank">http://ninjablocks.com/blogs/how-to/7195040-using-a-raspberry-pi-as-a-ninja-block</a><br /> 1025<div class="separator" style="clear: both; text-align: center;"> 1026<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBLrUo_PdG9oGOEazfQQJPSEwlpmKSzSdBv8jAKdH36GdnlJoR6wpxGsWaflJ001PNTxZPurGZNd4tT5-wHtZjF3LdslfbN09gMuNkV6cw81y4q8REYlWANfaLNvH3qcP5OwZ2vYmbIto/s1600/ninPi_large.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="185" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhBLrUo_PdG9oGOEazfQQJPSEwlpmKSzSdBv8jAKdH36GdnlJoR6wpxGsWaflJ001PNTxZPurGZNd4tT5-wHtZjF3LdslfbN09gMuNkV6cw81y4q8REYlWANfaLNvH3qcP5OwZ2vYmbIto/s400/ninPi_large.gif" width="400" /></a></div> 1027<div class="separator" style="clear: both; text-align: left;"> 1028Here is the link to get started:</div> 1029<a href="http://ninjablocks.com/pages/developers" target="_blank">http://ninjablocks.com/pages/developers</a><br /> 1030<div class="separator" style="clear: both; text-align: center;"> 1031<br /></div> 1032</div> 1033</div> 1034<div style='clear: both;'></div> 1035</div> 1036<div class='post-footer'> 1037<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'> 1038Posted by 1039<span class='fn'> 1040<a href='https://www.blogger.com/profile/05261381115653026389' itemprop='author' rel='author' title='author profile'> 1041DIY Phone Gadgets 1042</a> 1043</span> 1044</span> 1045<span class='post-timestamp'> 1046at 1047<a class='timestamp-link' href='http://www.diyphonegadgets.com/2013/04/phone-apps-ninja-blocks-easy-to-build.html' itemprop='url' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2013-04-10T03:48:00-07:00'>3:48 AM</abbr></a> 1048</span> 1049<span class='post-comment-link'> 1050<a class='comment-link' href='http://www.diyphonegadgets.com/2013/04/phone-apps-ninja-blocks-easy-to-build.html#comment-form' onclick=''>25 1051comments</a> 1052</span> 1053<span class='post-icons'> 1054<span class='item-control blog-admin pid-685983255'> 1055<a href='https://www.blogger.com/post-edit.g?blogID=2092526155528722833&postID=8755400594871843160&from=pencil' title='Edit Post'> 1056<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> 1057</a> 1058</span> 1059</span> 1060<div class='post-share-buttons goog-inline-block'> 1061<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=8755400594871843160&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=8755400594871843160&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=8755400594871843160&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=8755400594871843160&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=8755400594871843160&target=pinterest' target='_blank' title='Share to P
1061interest'><span class='share-button-link-text'>Share to Pinterest</span></a> 1062</div> 1063</div> 1064<div class='post-footer-line post-footer-line-2'><span class='post-labels'> 1065</span> 1066</div> 1067<div class='post-footer-line post-footer-line-3'><span class='post-location'> 1068</span> 1069</div> 1070</div> 1071</div> 1072</div> 1073 1074 </div></div> 1075 1076 1077 <div class="date-outer"> 1078 1079<h2 class='date-header'><span>Tuesday, July 24, 2012</span></h2> 1080 1081 <div class="date-posts"> 1082 1083<div class='post-outer'> 1084<div class='post hentry' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> 1085<a name='7545865843424479585'></a> 1086<h3 class='post-title entry-title' itemprop='name'> 1087<a href='http://www.diyphonegadgets.com/2012/07/raspberry-pi-runs-android-for-first.html'>Raspberry Pi runs Android for the first time in history</a> 1088</h3> 1089<div class='post-header'> 1090<div class='post-header-line-1'></div> 1091</div> 1092<div class='post-body entry-content' id='post-body-7545865843424479585' itemprop='articleBody'> 1093<span style="background-color: white;">Porting Android on Raspberry Pi so that we can transform our TV into a big Android tablet or a connected cheap Google TV? This is a dream of many Raspberry Pi owners. Needless to say, if this can be realized, it will be a cool Smart TV device, even cheaper than the popular MK802 Android Mini-PC!</span><br /> 1094<br /> 1095Despite the great technical difficulties and failures, after being discussed thousands of times, for the first time in history, the porting has been proven to be successful.<br /> 1096<br /> 1097An image based on Cyanogenmod 7.2 version of Android 2.3 has been successfully cooked for Raspberry Pi.<br /> 1098It really runs, slowly, but runs! Here is a video of how it works in action:<br /> 1099<br /> 1100<div class="separator" style="clear: both; text-align: center;"> 1101<iframe allowfullscreen="allowfullscreen" frameborder="0" height="266" mozallowfullscreen="mozallowfullscreen" src="https://www.youtube.com/embed/paUgfXKDt7I?feature=player_embedded" webkitallowfullscreen="webkitallowfullscreen" width="320"></iframe></div> 1102<br /> 1103This is pretty much smoother than the previous CM9 version two days ago.<br /> 1104<br /> 1105Hackers from both the Raspberry Pi and Android communities are trying to add hardware acceleration to create faster and more usable images.<br /> 1106<br /> 1107Download the image here and flash it into an SD card, exactly the same way as we flash a normal Debian image for the Pi:<br /> 1108<a href="https://docs.google.com/open?id=0B2qw32upVDnkT0JXNkoyY1hSOUU" target="_blank">https://docs.google.com/open?id=0B2qw32upVDnkT0JXNkoyY1hSOUU</a><br /> 1109Android Pi Wiki:<br /> 1110<a href="http://androidpi.wikia.com/wiki/Android_Pi_Wiki" target="_blank">http://androidpi.wikia.com/wiki/Android_Pi_Wiki</a><br /> 1111Raspberry Pi Forum Page:<br /> 1112<a href="http://www.raspberrypi.org/phpBB3/viewtopic.php?f=56&t=8780" target="_blank">http://www.raspberrypi.org/phpBB3/viewtopic.php?f=56&t=8780</a><br /> 1113<br /> 1114<div class="separator" style="clear: both; text-align: center;"> 1115<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvz5opIQMGpCVBq2s_TgpIinmW_XnnkB2F9AZDd8yQCcO5r7Ncc0WEgUECyOj4tV4W5-u2E6gd35M8rv7xkZB8F746yprbSMTOJ-tet0JiMuzzYFNFhv8sQE2vp1VqYE4TQOICWchd54Y/s1600/G3125.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjvz5opIQMGpCVBq2s_TgpIinmW_XnnkB2F9AZDd8yQCcO5r7Ncc0WEgUECyOj4tV4W5-u2E6gd35M8rv7xkZB8F746yprbSMTOJ-tet0JiMuzzYFNFhv8sQE2vp1VqYE4TQOICWchd54Y/s1600/G3125.png" /></a></div> 1116<div style='clear: both;'></div> 1117</div> 1118<div class='post-footer'> 1119<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'> 1120Posted by 1121<span class='fn'> 1122<a href='https://www.blogger.com/profile/05261381115653026389' itemprop='author' rel='author' title='author profile'> 1123DIY Phone Gadgets 1124</a> 1125</span> 1126</span> 1127<span class='post-timestamp'> 1128at 1129<a class='timestamp-link' href='http://www.diyphonegadgets.com/2012/07/raspberry-pi-runs-android-for-first.html' itemprop='url' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-07-24T23:50:00-07:00'>11:50 PM</abbr></a> 1130</span> 1131<span class='post-comment-link'> 1132<a class='comment-link' href='http://www.diyphonegadgets.com/2012/07/raspberry-pi-runs-android-for-first.html#comment-form' onclick=''>34 1133comments</a> 1134</span> 1135<span class='post-icons'> 1136<span class='item-control blog-admin pid-685983255'> 1137<a href='https://www.blogger.com/post-edit.g?blogID=2092526155528722833&postID=7545865843424479585&from=pencil' title='Edit Post'> 1138<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> 1139</a> 1140</span> 1141</span> 1142<div class='post-share-buttons goog-inline-block'> 1143<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=7545865843424479585&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=7545865843424479585&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=7545865843424479585&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=7545865843424479585&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=7545865843424479585&target=pinterest' target='_blank' title='Share to P
1143interest'><span class='share-button-link-text'>Share to Pinterest</span></a> 1144</div> 1145</div> 1146<div class='post-footer-line post-footer-line-2'><span class='post-labels'> 1147Labels: 1148<a href='http://www.diyphonegadgets.com/search/label/Android' rel='tag'>Android</a>, 1149<a href='http://www.diyphonegadgets.com/search/label/Gingerbread' rel='tag'>Gingerbread</a>, 1150<a href='http://www.diyphonegadgets.com/search/label/Ice%20Cream%20Sandwich' rel='tag'>Ice Cream Sandwich</a>, 1151<a href='http://www.diyphonegadgets.com/search/label/Raspberry%20Pi' rel='tag'>Raspberry Pi</a> 1152</span> 1153</div> 1154<div class='post-footer-line post-footer-line-3'><span class='post-location'> 1155</span> 1156</div> 1157</div> 1158</div> 1159</div> 1160 1161 </div></div> 1162 1163 1164 <div class="date-outer"> 1165 1166<h2 class='date-header'><span>Saturday, July 14, 2012</span></h2> 1167 1168 <div class="date-posts"> 1169 1170<div class='post-outer'> 1171<div class='post hentry' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> 1172<a name='6903875361583012600'></a> 1173<h3 class='post-title entry-title' itemprop='name'> 1174<a href='http://www.diyphonegadgets.com/2012/07/adk-2012-for-android.html'>ADK 2012 for Android</a> 1175</h3> 1176<div class='post-header'> 1177<div class='post-header-line-1'></div> 1178</div> 1179<div class='post-body entry-content' id='post-body-6903875361583012600' itemprop='articleBody'> 1180<span style="background-color: white;">Despite the popularity of the IOIO board for Android (a tool for adding external hardware to Android devices), which has the largest developer/hacker community, Google does not abandon its Accessory Development Kit (ADK). At Google I/O 2012, the team made another demo of ADK, using another board different from what we saw (or used) last year.</span><br /> 1181<span style="background-color: white;"><br /></span><br /> 1182<div class="separator" style="clear: both; text-align: center;"> 1183<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL_ZjYoEds3txx8hyphenhyphenZ6zA5tAhAwjGHYbP15a7HaMPJVff-z4izVBOKG0afuqwkLBWSUC0WkbZsksyHHhdIQ8IVILaUujcnM3hxVhEDKurPj7ExgOqm_DerCmbBsPrWqgK2B9nVuBQWhs8/s1600/colors_large_large.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL_ZjYoEds3txx8hyphenhyphenZ6zA5tAhAwjGHYbP15a7HaMPJVff-z4izVBOKG0afuqwkLBWSUC0WkbZsksyHHhdIQ8IVILaUujcnM3hxVhEDKurPj7ExgOqm_DerCmbBsPrWqgK2B9nVuBQWhs8/s1600/colors_large_large.png" /></a></div> 1184<br /> 1185ADK 2011:<br /> 1186<br /> 1187<div class="separator" style="clear: both; text-align: center;"> 1188<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQr6y78FsSlflJVCzMrWdPmVu9pvv7g-WA0MKe3NFvCJXIA4iDhzts0E_ZesxDaszytIPUAyPxu9HPX0wNTjs5WLbFZUq7CG0JsgB5-hs5cpODYjB2LS0u_SaH5zIG8tJ7DBz3Pi5OThI/s1600/ADK+2011.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="238" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhQr6y78FsSlflJVCzMrWdPmVu9pvv7g-WA0MKe3NFvCJXIA4iDhzts0E_ZesxDaszytIPUAyPxu9HPX0wNTjs5WLbFZUq7CG0JsgB5-hs5cpODYjB2LS0u_SaH5zIG8tJ7DBz3Pi5OThI/s320/ADK+2011.jpg" width="320" /></a></div> 1189<br /> 1190<br /> 1191This time, you get some serious design:<br /> 1192<br /> 1193ADK 2012:<br /> 1194<div class="separator" style="clear: both; text-align: center;"> 1195<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0DDv0VZZ9qU1pwzM0TWzx-hGmuW_qeZJGuW1AVt9qW_3u8370yB1mk1Cs90qvrEf_f-uLN7s0-qA86fvvxOz_bFfNNhf2I8KDileCeZ5ogYvrMwC3afRHImwYJaya2M5V8KFoyAV3zqE/s1600/2.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0DDv0VZZ9qU1pwzM0TWzx-hGmuW_qeZJGuW1AVt9qW_3u8370yB1mk1Cs90qvrEf_f-uLN7s0-qA86fvvxOz_bFfNNhf2I8KDileCeZ5ogYvrMwC3afRHImwYJaya2M5V8KFoyAV3zqE/s320/2.JPG" width="320" /></a></div> 1196<div class="separator" style="clear: both; text-align: center;"> 1197<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPRlEzJOIUcIDO72QtvPsI2utTQERCPhb4LJArd81f96vRsOUJlsL6nD70PLvZcCEc_PdO7W8aSQXCr2gybDZKHDzcijKAW2ID3uNDS7NDtNF-xwP-e2N6gZn6AnF0pUVqoTt-qGwzoO0/s1600/3.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjPRlEzJOIUcIDO72QtvPsI2utTQERCPhb4LJArd81f96vRsOUJlsL6nD70PLvZcCEc_PdO7W8aSQXCr2gybDZKHDzcijKAW2ID3uNDS7NDtNF-xwP-e2N6gZn6AnF0pUVqoTt-qGwzoO0/s320/3.JPG" width="320" /></a></div> 1198<div class="separator" style="clear: both; text-align: center;"> 1199<br /></div> 1200<br /> 1201<span style="background-color: white;">The new Audio dock API and HID API seem to be the main interests of this ADK 2.0, which are very easy to implement.</span><br /> 1202<br /> 1203<br /> 1204The entire project is open-source as usual. If you want to make your own ADK 2012 board, please get the schematics and source code here:<br /> 1205<a href="http://developer.android.com/tools/adk/adk2.html#src-download" target="_blank">http://developer.android.com/tools/adk/adk2.html#src-download</a><br /> 1206<br /> 1207Once you get your ADK board, you can play with it using the official application available in the play store:<br /> 1208<br /> 1209<div class="separator" style="clear: both; text-align: center;"> 1210<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoaQ96B-Y5FvGiddNt-_uZ7Z5tH3DiJMq0kXIuQ2FPaA03H8yUOnZ6iDIapABymwKOxKUTtcbjTE05unpekGZl_r6U-io0fzRgzHMXmvqJX1L5eYGHxreifp0Shh0UMYu3BGrJSYABk94/s1600/ADK+2012.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="156" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoaQ96B-Y5FvGiddNt-_uZ7Z5tH3DiJMq0kXIuQ2FPaA03H8yUOnZ6iDIapABymwKOxKUTtcbjTE05unpekGZl_r6U-io0fzRgzHMXmvqJX1L5eYGHxreifp0Shh0UMYu3BGrJSYABk94/s320/ADK+2012.png" width="320" /></a></div> 1211<br /> 1212ADK 2012: <a href="https://play.google.com/store/apps/details?id=com.google.android.apps.adk2" target="_blank">https://play.google.com/store/apps/details?id=com.google.android.apps.adk2</a><br /> 1213ADK 2011: <a href="https://play.google.com/store/apps/details?id=com.diyphonegadgets.DemoKit" target="_blank">https://play.google.com/store/apps/details?id=com.diyphonegadgets.DemoKit</a><br /> 1214<br /> 1215<br />
1216For example, for those of you who want to make an external audio dock for Android that is able to play audio over a USB connection, simply grab a device running Android 4.1 (API Level 16) or higher (e.g., Galaxy Nexus), prepare your ADK 2012 board, open your favorite Arduino IDE, and start your pleasant development now.<br /> 1217<br /> 1218The ADK 2012 provides a reference implementation of this functionality for accessory developers. No software application is required to be installed on the connected Android device, accessory developers only need to support AOA v2. This implementation demonstrates audio output of 16bit, 44.1kHz stereo PCM source data compressed into a single channel due to the audio hardware available on the accessory.<br /> 1219<br /> 1220Using the audio output features provided by the ADK library requires only a few function calls. The first few calls are in the accessory setup() routine, which prepare the accessory for USB connections and audio output, as summarized in the code example below:<br /> 1221<br /> 1222ADK L;<br /> 1223void setup() {<br /> 1224 L.audioInit();<br /> 1225 L.usbh_init()<br /> 1226 L.usbStart();<br /> 1227}<br /> 1228<br />
1229For more information about the ADK::audioInit() function, see the libraries/ADK/Audio.c library file. For more information about the ADK::usbh_init() function, see the libraries/ADK/Usbh.c library file.<br /> 1230<br /> 1231After completing this setup, the loop() function calls ADK::adkEventProcess() to handle audio output and other ADK functions:<br /> 1232<br /> 1233void loop(void)<br /> 1234{<br /> 1235 ...<br /> 1236 L.adkEventProcess(); //let the adk framework do its thing<br /> 1237 ...<br /> 1238}<br /> 1239<br /> 1240This call executes task queuing for the ADK and as part of the execution process, the task queue executes usbh_work() inlibraries/ADK/Usbh.c, which handles audio output requests. Review the implementation of this function for details. For additional implementation details on audio output, see the libraries/ADK/accessory.c library file.<br /> 1241<br /> 1242Enjoy the official presentation here:<br /> 1243<br /> 1244<div class="separator" style="clear: both; text-align: center;"> 1245<iframe allowfullscreen="allowfullscreen" frameborder="0" height="266" mozallowfullscreen="mozallowfullscreen" src="https://www.youtube.com/embed/ZUaKSs3utrs?feature=player_embedded" webkitallowfullscreen="webkitallowfullscreen" width="320"></iframe></div> 1246<br /> 1247<div style='clear: both;'></div> 1248</div> 1249<div class='post-footer'> 1250<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'> 1251Posted by 1252<span class='fn'> 1253<a href='https://www.blogger.com/profile/05261381115653026389' itemprop='author' rel='author' title='author profile'> 1254DIY Phone Gadgets 1255</a> 1256</span> 1257</span> 1258<span class='post-timestamp'> 1259at 1260<a class='timestamp-link' href='http://www.diyphonegadgets.com/2012/07/adk-2012-for-android.html' itemprop='url' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-07-14T00:10:00-07:00'>12:10 AM</abbr></a> 1261</span> 1262<span class='post-comment-link'> 1263<a class='comment-link' href='http://www.diyphonegadgets.com/2012/07/adk-2012-for-android.html#comment-form' onclick=''>64 1264comments</a> 1265</span> 1266<span class='post-icons'> 1267<span class='item-control blog-admin pid-685983255'> 1268<a href='https://www.blogger.com/post-edit.g?blogID=2092526155528722833&postID=6903875361583012600&from=pencil' title='Edit Post'> 1269<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> 1270</a> 1271</span> 1272</span> 1273<div class='post-share-buttons goog-inline-block'> 1274<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6903875361583012600&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6903875361583012600&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6903875361583012600&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6903875361583012600&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6903875361583012600&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> 1275</div> 1276</div> 1277<div class='post-footer-line post-footer-line-2'><span class='post-labels'> 1278</span> 1279</div> 1280<div class='post-footer-line post-footer-line-3'><span class='post-location'> 1281</span> 1282</div> 1283</div> 1284</div> 1285</div> 1286 1287 </div></div> 1288 1289 1290 <div class="date-outer"> 1291 1292<h2 class='date-header'><span>Monday, April 9, 2012</span></h2> 1293 1294 <div class="date-posts"> 1295 1296<div class='post-outer'> 1297<div class='post hentry' itemscope='itemscope' itemtype='http://schema.org/BlogPosting'> 1298<a name='6204042993917881299'></a> 1299<h3 class='post-title entry-title' itemprop='name'> 1300<a href='http://www.diyphonegadgets.com/2012/04/tutorial-how-to-control-ir-helicopter.html'>Tutorial: how to control an IR helicopter programmatically with Arduino, Android, Kinect, brain, and more!</a> 1301</h3> 1302<div class='post-header'> 1303<div class='post-header-line-1'></div> 1304</div> 1305<div class='post-body entry-content' id='post-body-6204042993917881299' itemprop='articleBody'> 1306For those of you who are not familiar with an infrared helicopter, please search "SYMA S107" on eBay or on YouTube. It's a little indoor coaxial helicopter around 20 USD, recharged through USB cable.<br /> 1307<div> 1308<br /></div> 1309<div class="separator" style="clear: both; text-align: center;"> 1310<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_b
1310j09wrGf1nc1aM79Veh5xnN2ynnLe5bR4T7RQqshTNSpw27cAM_UL4z4KPwcXZrkTu4q4Qdm4iV6qVz6K98tBQsXk_-YCHoGzDJNNKQFX3ea6S7wR3xsh58vb_EEc4nTYv1d00PiEd4/s1600/syma6.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_bj09wrGf1nc1aM79Veh5xnN2ynnLe5bR4T7RQqshTNSpw27cAM_UL4z4KPwcXZrkTu4q4Qdm4iV6qVz6K98tBQsXk_-YCHoGzDJNNKQFX3ea6S7wR3xsh58vb_EEc4nTYv1d00PiEd4/s1600/syma6.jpg" /></a></div> 1311<br /> 1312<div class="separator" style="clear: both; text-align: center;"> 1313<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2V4xaEcpE1-8jzB7e1yoOUV1T0VIRyaWB1b1CKVrNmAOfUWPRMyQtX7R4BZVn-5O8Z1Hb168sluu9cXmgQtEOrP7_9aTsmpSbR5Pb9ixrFJj-X5Q-AaK_cSsum70gkFHh3SGvh1DrSUQ/s1600/syma-s107_usb.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi2V4xaEcpE1-8jzB7e1yoOUV1T0VIRyaWB1b1CKVrNmAOfUWPRMyQtX7R4BZVn-5O8Z1Hb168sluu9cXmgQtEOrP7_9aTsmpSbR5Pb9ixrFJj-X5Q-AaK_cSsum70gkFHh3SGvh1DrSUQ/s1600/syma-s107_usb.jpg" /></a></div> 1314<div> 1315<br /> 1316<div> 1317<br /></div> 1318<div> 1319<div> 1320The original remote control that comes with the helicopter is pretty good, at least a lot easier to use than a touchscreen. </div> 1321<div> 1322<br /></div> 1323<div class="separator" style="clear: both; text-align: center;"> 1324<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl04sXziY9cc-wQdDnHwMacn2BCVmvzuF4RIrDG8pfegwiXv4bqTMHKDz_reELECMIDiuFG86Yk8EHy6Wx15SRGOJlTop2R2V7tL0_SPdA-e5yqIjUA7fXdHL7MABjMtiWws6w5z1giyI/s1600/1312738730_Syma+S107G+Micro+Radio+Control+Helicopter+Photo+8_w450_h400.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="184" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgl04sXziY9cc-wQdDnHwMacn2BCVmvzuF4RIrDG8pfegwiXv4bqTMHKDz_reELECMIDiuFG86Yk8EHy6Wx15SRGOJlTop2R2V7tL0_SPdA-e5yqIjUA7fXdHL7MABjMtiWws6w5z1giyI/s200/1312738730_Syma+S107G+Micro+Radio+Control+Helicopter+Photo+8_w450_h400.jpg" width="200" /></a></div> 1325<div> 1326<br /></div> 1327<div> 1328<br /></div> 1329<div> 1330However, our passion doesn't end here with mere manual control. Inspired by all those <a href="http://www.robodance.com/" target="_blank">robodance</a> projects, we need more joy of robotic automation. </div> 1331<div> 1332<br /></div> 1333<div> 1334Let's hack the SYMA S107 helicopter to give it some artificial intelligence! </div> 1335<div> 1336<br /></div> 1337<div> 1338You might wonder why this particular model (Syma S107)? Well, simply because it is perhaps the most popular one in the IR helicopter market. And many brilliant hackers have already done the work for us. We don't have to reinvent the wheel to hack it again.</div> 1339<div> 1340<br /></div> 1341<div> 1342As usual, let's start with an Arduino, the most simple way to prototype electronic projects. Our goal here is to make an arduino based IR transmitter to programmatically control the helicopter. </div> 1343<div> 1344<br /></div> 1345<div> 1346<b>Step 1. Prepare the circuit </b></div> 1347<div> 1348<br /></div> 1349<div class="separator" style="clear: both; text-align: center;"> 1350<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhii2Hb2qSODHR7GuF-t7pLi64PnpDc20Gy1G280uKuYu0lh91bbpbU7Ejxewg66975IG3ywn8fbAMBHOT2vyhkSXwlC5TnPwPJyhVqEr6eh8_4irk_BU6rn3ZgYyUChtcrQtBDrmtOfGI/s1600/ir_circuit.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="296" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhii2Hb2qSODHR7GuF-t7pLi64PnpDc20Gy1G280uKuYu0lh91bbpbU7Ejxewg66975IG3ywn8fbAMBHOT2vyhkSXwlC5TnPwPJyhVqEr6eh8_4irk_BU6rn3ZgYyUChtcrQtBDrmtOfGI/s320/ir_circuit.jpg" width="320" /></a></div> 1351<div> 1352<br /></div> 1353<div> 1354The circuit is extremely simple, we just need:</div> 1355<div> 1356<br /></div> 1357<div> 13581 Arduino, 1 IR LED and 1 resister of 200 to 1000 ohm.</div> 1359<div> 1360<br /></div> 1361<div> 1362Optional: an IR receiver (for testing).</div> 1363<div> 1364<br /></div> 1365<div class="separator" style="clear: both; text-align: center;"> 1366<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYXtnl7GosAINu4YOi9a3Q4wKfTq_NN3Vw_maDpFqw7N5pyEQG-9pMGVRDJQv31NWKQl7ezED7cMvkKMa7YfMGUnMl0FP6_u6NFMJenKlPJ8_6L70tDYcHPEPZfq2yK5nlCByryfIj9e0/s1600/ir_commande_hard.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="266" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYXtnl7GosAINu4YOi9a3Q4wKfTq_NN3Vw_maDpFqw7N5pyEQG-9pMGVRDJQv31NWKQl7ezED7cMvkKMa7YfMGUnMl0FP6_u6NFMJenKlPJ8_6L70tDYcHPEPZfq2yK5nlCByryfIj9e0/s320/ir_commande_hard.gif" width="320" /></a></div> 1367<div> 1368<br /></div> 1369<div> 1370<br /></div> 1371<div> 1372That's all to transmit IR signal from Arduino to the helicopter. If you already have an Arduino board, it costs you almost nothing to get the rest parts.</div> 1373<div> 1374<br /></div> 1375<div> 1376If you are interested in IR tests, here is a detailed tutorial: http://www.ladyada.net/learn/sensors/ir.html</div> 1377<div> 1378<br /></div> 1379<div> 1380Otherwise, we can directly load the Arduino code and control the helicopter!</div> 1381<div> 1382<br /></div> 1383<div> 1384<b>Step 2. Program the Arduino</b></div> 1385<div> 1386<br /></div> 1387<div> 1388Fortunately, there are several existing Arduino projects we can directly use and customize. </div> 1389<div> 1390<br /></div> 1391<div> 1392<b>The first working code (tested):</b></div> 1393<pre class="prettyprint">//Arduino code to control a helicotper. 1394int IRledPin = 12; 1395int incomingByte = 0; 1396String incomingString; 1397int pulseValues[33]; 1398int pulseLength = 0; 1399 1400void setup() { 1401 // initialize the IR digital pin as an output: 1402 pinMode(IRledPin, OUTPUT); 1403 pinMode(13, OUTPUT); 1404 Serial.begin(9600); 1405 1406 for (int i=0; i < 13; i++) 1407 pulseValues[i] = 0; 1408 1409 1410} 1411 1412void loop() 1413{ 1414 SendCode(); 1415} 1416 1417 1418void pulseIR(long microsecs) { 1419 cli(); // this turns off any background interrupts 1420 1421 while (microsecs > 0) { 1422 // 38 kHz is about 13 microseconds high and 13 microseconds low 1423 digitalWrite(IRledPin, HIGH); // this takes about 3 microseconds to happen 1424 delayMicroseconds(10); // hang out for 10 microseconds 1425 digitalWrite(IRledPin, LOW); // this also takes about 3 microseconds 1426 delayMicroseconds(10); // hang out for 10 microseconds 1427 1428 // so 26 microseconds altogether 1429 microsecs -= 26; 1430 1431 } 1432 1433 sei(); // this turns them back on 1434} 1435 1436void Zero() 1437{ 1438 pulseIR(300); 1439 delayMicroseconds(300); 1440 pulseLength += 600; 1441} 1442 1443void One() 1444{ 1445 pulseIR(300); 1446 delayMicroseconds(600); 1447 pulseLength += 900; 1448} 1449 1450void sendPulseValue(int pulseValue) 1451{ 1452 if (pulseValue == 1) 1453 One(); 1454 else 1455 Zero(); 1456} 1457 1458void checkPulseChanges() 1459{ 1460 if (Serial.available() > 0) 1461 { 1462 incomingByte = Serial.read(); 1463 1464 //Pulse 1 1465 if (incomingByte == 'a') 1466 pulseValues[0] = 0; 1467 if (incomingByte == 'A') 1468 pulseValues[0] = 1; 1469 1470 //Pulse 2 1471 if (incomingByte == 'b') 1472 pulseValues[1] = 0; 1473 if (incomingByte =='B') 1474 pulseValues[1] = 1; 1475 1476 //Pulse 3 1477 if (incomingByte == 'c') 1478 pulseValues[2] = 0; 1479 if (incomingByte == 'C') 1480 pulseValues[2] = 1; 1481 1482 //Pulse 4 1483 if (incomingByte == 'd') 1484 pulseValues[3] = 0; 1485 if (incomingByte == 'D') 1486 pulseValues[3] = 1; 1487 1488 //Pulse 5 1489 if (incomingByte == 'e') 1490 pulseValues[4] = 0; 1491 if (incomingByte == 'E') 1492 pulseValues[4] = 1; 1493 1494 //Pulse 6 1495 if (incomingByte == 'f') 1496 pulseValues[5] = 0; 1497 if (incomingByte == 'F') 1498 pulseValues[5] = 1; 1499 1500 //Pulse 7 1501 if (incomingByte == 'g') 1502 pulseValues[6] = 0; 1503 if (incomingByte == 'G') 1504 pulseValues[6] = 1; 1505 1506 //Pulse 8 1507 if (incomingByte == 'h') 1508 pulseValues[7] = 0; 1509 if (incomingByte == 'H') 1510 pulseValues[7] = 1; 1511 1512 //Pulse 9 1513 if (incomingByte == 'i') 1514 pulseValues[8] = 0; 1515 if (incomingByte == 'I') 1516 pulseValues[8] = 1; 1517 1518 //Pulse 10 1519 if (incomingByte == 'j') 1520 pulseValues[9] = 0; 1521 if (incomingByte == 'J') 1522 pulseValues[9] = 1; 1523 1524 //Pulse 11 1525 if (incomingByte == 'k') 1526 pulseValues[10] = 0; 1527 if (incomingByte == 'K') 1528 pulseValues[10] = 1; 1529 1530 //Pulse 12 1531 if (incomingByte == 'l') 1532 pulseValues[11] = 0; 1533 if (incomingByte == 'L') 1534 pulseValues[11] = 1; 1535 1536 //Pulse 13 1537 if (incomingByte == 'm') 1538 pulseValues[12] = 0; 1539 if (incomingByte == 'M') 1540 pulseValues[12] = 1; 1541 1542 //Pulse 14 1543 if (incomingByte == 'o') 1544 pulseValues[13] = 0; 1545 if (incomingByte == 'O') 1546 pulseValues[13] = 1; 1547 1548 //Pulse 15 1549 if (incomingByte == 'p')
1550 pulseValues[14] = 0; 1551 if (incomingByte == 'P') 1552 pulseValues[14] = 1; 1553 1554 //Pulse 16 1555 if (incomingByte == 'q') 1556 pulseValues[15] = 0; 1557 if (incomingByte == 'Q') 1558 pulseValues[15] = 1; 1559 1560 //Pulse 17 1561 if (incomingByte == 'r') 1562 pulseValues[16] = 0; 1563 if (incomingByte == 'R') 1564 pulseValues[16] = 1; 1565 1566 //Pulse 18 1567 if (incomingByte == 's') 1568 pulseValues[17] = 0; 1569 if (incomingByte == 'S') 1570 pulseValues[17] = 1; 1571 1572 //Pulse 19 1573 if (incomingByte == 't') 1574 pulseValues[18] = 0; 1575 if (incomingByte == 'T') 1576 pulseValues[18] = 1; 1577 1578 //Pulse 20 1579 if (incomingByte == 'u') 1580 pulseValues[19] = 0; 1581 if (incomingByte == 'U') 1582 pulseValues[19] = 1; 1583 1584 //Pulse 21 1585 if (incomingByte == 'v') 1586 pulseValues[20] = 0; 1587 if (incomingByte == 'V') 1588 pulseValues[20] = 1; 1589 1590 //Pulse 22 1591 if (incomingByte == 'w') 1592 pulseValues[21] = 0; 1593 if (incomingByte == 'W') 1594 pulseValues[21] = 1; 1595 1596 //Pulse 23 1597 if (incomingByte == 'x') 1598 pulseValues[22] = 0; 1599 if (incomingByte == 'X') 1600 pulseValues[22] = 1; 1601 1602 //Pulse 24 1603 if (incomingByte == 'y') 1604 pulseValues[23] = 0; 1605 if (incomingByte == 'Y') 1606 pulseValues[23] = 1; 1607 1608 //Pulse 25 1609 if (incomingByte == 'z') 1610 pulseValues[24] = 0; 1611 if (incomingByte == 'Z') 1612 pulseValues[24] = 1; 1613 1614 //Pulse 26 1615 if (incomingByte == '1') 1616 pulseValues[25] = 0; 1617 if (incomingByte == '2') 1618 pulseValues[25] = 1; 1619 1620 //Pulse 27 1621 if (incomingByte == '3') 1622 pulseValues[26] = 0; 1623 if (incomingByte == '4') 1624 pulseValues[26] = 1; 1625 1626 //Pulse 28 1627 if (incomingByte == '5') 1628 pulseValues[27] = 0; 1629 if (incomingByte == '6') 1630 pulseValues[27] = 1; 1631 1632 //Pulse 29 1633 if (incomingByte == '7') 1634 pulseValues[28] = 0; 1635 if (incomingByte == '8') 1636 pulseValues[28] = 1; 1637 1638 //Pulse 30 1639 if (incomingByte == '9') 1640 pulseValues[29] = 0; 1641 if (incomingByte == '!') 1642 pulseValues[29] = 1; 1643 1644 //Pulse 31 1645 if (incomingByte == '@') 1646 pulseValues[30] = 0; 1647 if (incomingByte == '#') 1648 pulseValues[30] = 1; 1649 1650 //Pulse 32 1651 if (incomingByte == '$') 1652 pulseValues[31] = 0; 1653 if (incomingByte == '%') 1654 pulseValues[31] = 1; 1655 1656 //Pulse 33 1657 if (incomingByte == '^') 1658 pulseValues[32] = 0; 1659 if (incomingByte == '&') 1660 pulseValues[32] = 1; 1661 } 1662 1663} 1664 1665void SendCode() { 1666 1667 while (true) 1668 { 1669 checkPulseChanges(); 1670 1671 pulseIR(4000); 1672 delayMicroseconds(2000); 1673 pulseLength=6000; 1674 1675 sendPulseValue(pulseValues[0]); 1676 sendPulseValue(pulseValues[1]); 1677 sendPulseValue(pulseValues[2]); 1678 sendPulseValue(pulseValues[3]); 1679 sendPulseValue(pulseValues[4]); 1680 sendPulseValue(pulseValues[5]); 1681 sendPulseValue(pulseValues[6]); 1682 sendPulseValue(pulseValues[7]); 1683 sendPulseValue(pulseValues[8]); 1684 sendPulseValue(pulseValues[9]); 1685 sendPulseValue(pulseValues[10]); 1686 sendPulseValue(pulseValues[11]); 1687 sendPulseValue(pulseValues[12]); 1688 sendPulseValue(pulseValues[13]); 1689 sendPulseValue(pulseValues[14]); 1690 sendPulseValue(pulseValues[15]); 1691 sendPulseValue(pulseValues[16]); 1692 sendPulseValue(pulseValues[17]); 1693 sendPulseValue(pulseValues[18]); 1694 sendPulseValue(pulseValues[19]); 1695 sendPulseValue(pulseValues[20]); 1696 sendPulseValue(pulseValues[21]); 1697 sendPulseValue(pulseValues[22]); 1698 sendPulseValue(pulseValues[23]); 1699 sendPulseValue(pulseValues[24]); 1700 sendPulseValue(pulseValues[25]); 1701 sendPulseValue(pulseValues[26]); 1702 sendPulseValue(pulseValues[27]); 1703 sendPulseValue(pulseValues[28]); 1704 sendPulseValue(pulseValues[29]); 1705 sendPulseValue(pulseValues[30]); 1706 sendPulseValue(pulseValues[31]); 1707 1708 //Footer 1709 pulseIR(360); 1710 delayMicroseconds( (28600 - pulseLength) ); 1711 } 1712} 1713</pre> 1714<br /> 1715<div> 1716This is the processing code to control the helicopter using the PC's camera and mouse wheel: </div> 1717<pre class="prettyprint"> 1718import processing.serial.*; 1719import controlP5.*; 1720import JMyron.*; 1721 1722JMyron m; 1723 1724ControlP5 controlP5; 1725CheckBox checkbox; 1726Button b; 1727 1728float boxX; 1729float boxY; 1730int boxSize = 20; 1731boolean mouseOverBox = false;
1732byte[] previousFlags = new byte[32]; 1733byte[] flagsToSend = new byte[32]; 1734Serial port; 1735String outString; 1736 1737int helicopterUpSpeed = 0; 1738int helicopterPitch = 63; 1739int helicopterYaw = 68; 1740 1741void setup() { 1742 m = new JMyron(); 1743 m.start(640,480); 1744 size(640, 480); 1745 1746 controlP5 = new ControlP5(this); 1747 checkbox = controlP5.addCheckBox("checkBox", 20, 20); 1748 // make adjustments to the layout of a checkbox. 1749 checkbox.setColorForeground(color(120)); 1750 checkbox.setColorActive(color(255)); 1751 checkbox.setColorLabel(color(128)); 1752 checkbox.setItemsPerRow(8); 1753 checkbox.setSpacingColumn(30); 1754 checkbox.setSpacingRow(10); 1755 // add items to a checkbox. 1756 checkbox.addItem("1", 0); 1757 checkbox.addItem("2", 0); 1758 checkbox.addItem("3", 0); 1759 checkbox.addItem("4", 0); 1760 checkbox.addItem("5", 0); 1761 checkbox.addItem("6", 0); 1762 checkbox.addItem("7", 0); 1763 checkbox.addItem("8", 0); 1764 checkbox.addItem("9", 0); 1765 checkbox.addItem("10", 0); 1766 checkbox.addItem("11", 0); 1767 checkbox.addItem("12", 0); 1768 checkbox.addItem("13", 0); 1769 checkbox.addItem("14", 0); 1770 checkbox.addItem("15", 0); 1771 checkbox.addItem("16", 0); 1772 checkbox.addItem("17", 0); 1773 checkbox.addItem("18", 0); 1774 checkbox.addItem("19", 0); 1775 checkbox.addItem("20", 0); 1776 checkbox.addItem("21", 0); 1777 checkbox.addItem("22", 0); 1778 checkbox.addItem("23", 0); 1779 checkbox.addItem("24", 0); 1780 checkbox.addItem("25", 0); 1781 checkbox.addItem("26", 0); 1782 checkbox.addItem("27", 0); 1783 checkbox.addItem("28", 0); 1784 checkbox.addItem("29", 0); 1785 checkbox.addItem("30", 0); 1786 checkbox.addItem("31", 0); 1787 checkbox.addItem("32", 0); 1788 1789 checkbox.deactivateAll(); 1790 1791 1792 controlP5.addButton("Up", 0, 120, 120, 35, 20); 1793 controlP5.addButton("Down", 0, 120, 160, 35, 20); 1794 1795 controlP5.addButton("Forward", 0, 180, 120, 45, 20); 1796 controlP5.addButton("Backward", 0, 180, 160, 45, 20); 1797 1798 controlP5.addButton("TurnLeft", 0, 60, 120, 40, 20); 1799 controlP5.addButton("TurnRight", 0, 60, 160, 40, 20); 1800 1801 1802 port = new Serial(this, Serial.list()[0], 9600); 1803 1804 for (int i=0;i<32;i++) 1805 { 1806 flagsToSend[i] = 0; 1807 previousFlags[i] = 0; 1808 } 1809 1810 addMouseWheelListener(new java.awt.event.MouseWheelListener() { 1811 public void mouseWheelMoved(java.awt.event.MouseWheelEvent evt) { 1812 mouseWheel(evt.getWheelRotation()); 1813 } 1814 } 1815 ); 1816 1817 startSetUp(); 1818} 1819 1820String addForwardZeroesTT(String inputString, int totalLength) 1821{ 1822 1823 String outString = ""; 1824 for (int i = 0; i < (totalLength - inputString.length()); i++) 1825 outString += "0"; 1826 1827 outString = outString + inputString; 1828 1829 return outString; 1830} 1831 1832 1833//Incremental like bits 1834//0000, 0001, 0010, 0011, 0100, etc 1835void Up() 1836{ 1837 String currentSpeed = addForwardZeroesTT(binary(helicopterUpSpeed), 7); 1838 1839 if(helicopterUpSpeed <= 125) 1840 helicopterUpSpeed += 1; 1841 1842 String newSpeed = addForwardZeroesTT(binary(helicopterUpSpeed), 7); 1843 1844 setNewSpeed(currentSpeed, newSpeed); 1845} 1846 1847void Down() 1848{ 1849 String currentSpeed = addForwardZeroesTT(binary(helicopterUpSpeed), 7); 1850 if (helicopterUpSpeed > 0) 1851 helicopterUpSpeed -= 1;
1852 String newSpeed = addForwardZeroesTT(binary(helicopterUpSpeed), 7); 1853 1854 setNewSpeed(currentSpeed, newSpeed); 1855} 1856 1857 1858void Backward() 1859{ 1860 String currentSpeed = addForwardZeroesTT(binary(helicopterPitch), 7); 1861 1862 helicopterPitch += 1; 1863 1864 String newSpeed = addForwardZeroesTT(binary(helicopterPitch), 7); 1865 1866 setNewPitch(currentSpeed, newSpeed); 1867} 1868 1869void Forward() 1870{ 1871 String currentSpeed = addForwardZeroesTT(binary(helicopterPitch), 7); 1872 1873 helicopterPitch -= 1; 1874 1875 String newSpeed = addForwardZeroesTT(binary(helicopterPitch), 7); 1876 1877 setNewPitch(currentSpeed, newSpeed); 1878} 1879 1880void TurnLeft() 1881{ 1882 String currentSpeed = addForwardZeroesTT(binary(helicopterYaw), 7); 1883 1884 helicopterYaw -= 1; 1885 1886 String newSpeed = addForwardZeroesTT(binary(helicopterYaw), 7); 1887 1888 setNewYaw(currentSpeed, newSpeed); 1889} 1890 1891void TurnRight() 1892{ 1893 String currentSpeed = addForwardZeroesTT(binary(helicopterYaw), 7); 1894 1895 helicopterYaw += 1; 1896 1897 String newSpeed = addForwardZeroesTT(binary(helicopterYaw), 7); 1898 1899 setNewYaw(currentSpeed, newSpeed); 1900} 1901 1902 1903void setNewSpeed(String currentSpeed, String newSpeed) 1904{ 1905 1906 //Compare each bit and see if it needs changing. 1907 if (newSpeed.charAt(6) != currentSpeed.charAt(6) ) 1908 checkbox.toggle(23); 1909 1910 if (newSpeed.charAt(5) != currentSpeed.charAt(5) ) 1911 checkbox.toggle(22); 1912 1913 if (newSpeed.charAt(4) != currentSpeed.charAt(4) ) 1914 checkbox.toggle(21); 1915 1916 if (newSpeed.charAt(3) != currentSpeed.charAt(3) ) 1917 checkbox.toggle(20); 1918 1919 if (newSpeed.charAt(2) != currentSpeed.charAt(2) ) 1920 checkbox.toggle(19); 1921 1922 if (newSpeed.charAt(1) != currentSpeed.charAt(1) ) 1923 checkbox.toggle(18); 1924 1925 if (newSpeed.charAt(0) != currentSpeed.charAt(0) ) 1926 checkbox.toggle(17); 1927} 1928 1929void setNewPitch(String currentSpeed, String newSpeed) 1930{ 1931 if (newSpeed.charAt(6) != currentSpeed.charAt(6) ) 1932 checkbox.toggle(15); 1933 1934 if (newSpeed.charAt(5) != currentSpeed.charAt(5) ) 1935 checkbox.toggle(14); 1936 1937 if (newSpeed.charAt(4) != currentSpeed.charAt(4) ) 1938 checkbox.toggle(13); 1939 1940 if (newSpeed.charAt(3) != currentSpeed.charAt(3) ) 1941 checkbox.toggle(12); 1942 1943 if (newSpeed.charAt(2) != currentSpeed.charAt(2) ) 1944 checkbox.toggle(11); 1945 1946 if (newSpeed.charAt(1) != currentSpeed.charAt(1) ) 1947 checkbox.toggle(10); 1948 1949 if (newSpeed.charAt(0) != currentSpeed.charAt(0) ) 1950 checkbox.toggle(9); 1951} 1952 1953void setNewYaw(String currentSpeed, String newSpeed) 1954{ 1955 if (newSpeed.charAt(6) != currentSpeed.charAt(6) ) 1956 checkbox.toggle(7); 1957 1958 if (newSpeed.charAt(5) != currentSpeed.charAt(5) ) 1959 checkbox.toggle(6); 1960 1961 if (newSpeed.charAt(4) != currentSpeed.charAt(4) ) 1962 checkbox.toggle(5); 1963 1964 if (newSpeed.charAt(3) != currentSpeed.charAt(3) ) 1965 checkbox.toggle(4); 1966 1967 if (newSpeed.charAt(2) != currentSpeed.charAt(2) ) 1968 checkbox.toggle(3); 1969 1970 if (newSpeed.charAt(1) != currentSpeed.charAt(1) ) 1971 checkbox.toggle(2); 1972 1973 if (newSpeed.charAt(0) != currentSpeed.charAt(0) ) 1974 checkbox.toggle(1); 1975} 1976 1977void startSetUp() 1978{ 1979 //First clear the arduino. 1980 port.write('a'); 1981 port.write('b'); 1982 port.write('c'); 1983 port.write('d'); 1984 port.write('e'); 1985 port.write('f'); 1986 port.write('g'); 1987 port.write('h'); 1988 port.write('i'); 1989 port.write('j'); 1990 port.write('k'); 1991 port.write('l'); 1992 port.write('m'); 1993 port.write('o'); 1994 port.write('p'); 1995 port.write('q'); 1996 port.write('r'); 1997 port.write('s'); 1998 port.write('t'); 1999 port.write('u'); 2000 port.write('v'); 2001 port.write('w'); 2002 port.write('x'); 2003 port.write('y'); 2004 port.write('z'); 2005 port.write('1'); 2006 port.write('3'); 2007 port.write('5'); 2008 port.write('7'); 2009 port.write('9'); 2010 port.write('@'); 2011 port.write('$'); 2012 port.write('^'); 2013 2014 2015 //Set the pulse to the basic configuration. 2016 checkbox.toggle(1); 2017 checkbox.toggle(6); 2018 2019 2020 checkbox.toggle(10); 2021 checkbox.toggle(11); 2022 2023 checkbox.toggle(12); 2024 checkbox.toggle(13); 2025 checkbox.toggle(14); 2026 checkbox.toggle(15); 2027 checkbox.toggle(16); 2028 2029 checkbox.toggle(25); 2030 2031 checkbox.toggle(28); 2032 checkbox.toggle(29); 2033 checkbox.toggle(30); 2034} 2035 2036 2037void draw() 2038{ 2039 background(200); 2040 2041 m.update(); 2042 int[] img = m.image(); 2043 2044 //first draw the camera view onto the screen 2045 loadPixels(); 2046 2047 for(int i=0;i<640*480;i++){ 2048 pixels[i] = img[i]; 2049 } 2050 updatePixels(); 2051 noFill(); 2052 int[][] a; 2053 2054 CheckHelicopterPosition(); 2055 2056 2057 text(" Current Speed: " + helicopterUpSpeed, 230, 135); 2058 text(" Pitch: " + helicopterPitch, 230, 165); 2059 text(" Yaw: " + helicopterYaw, 230, 195); 2060} 2061 2062 2063void CheckHelicopterPosition() 2064{ 2065 2066 noFill(); 2067 int[][] a; 2068 2069 m.trackColor(255,255,0,255);
2070 //draw bounding boxes of globs 2071 a = m.globBoxes(); 2072 stroke(255,0,0); 2073 2074 int averageY = 0; 2075 2076 for(int i=0;i<a.length;i++){ 2077 int[] b = a[i]; 2078 rect(b[0], b[1], b[2], b[3]); 2079 2080 averageY += b[1]; 2081 2082 } 2083 2084 if (a.length > 0) 2085 { 2086 averageY = averageY / a.length; 2087 line(0,averageY,640,averageY); 2088 2089 text(" Average Y: " + averageY, 230, 215); 2090 2091 if (averageY > 240) 2092 { 2093 text(" Action: up ", 350, 20); 2094 delay(150); 2095 //Up(); 2096 } 2097 else 2098 { 2099 text(" Action down ", 350,20); 2100 //delay(250); 2101 //Down(); 2102 } 2103 } 2104 2105 2106} 2107 2108 2109 2110void controlEvent(ControlEvent theEvent) { 2111 if (theEvent.isGroup()) { 2112 2113 for (int i=0;i<theEvent.group().arrayValue().length;i++) 2114 { 2115 byte n = (byte)theEvent.group().arrayValue()[i]; 2116 flagsToSend[i] = n; 2117 //there was a change in the flags, send the update. 2118 if (previousFlags[i] != flagsToSend[i]) 2119 { 2120 println(i); 2121 2122 if (i==0) { 2123 if (n == 0) { 2124 port.write('a'); 2125 } 2126 else { 2127 port.write('A'); 2128 } 2129 } 2130 if (i==1) { 2131 if (n == 0) { 2132 port.write('b'); 2133 } 2134 else { 2135 port.write('B'); 2136 } 2137 } 2138 if (i==2) { 2139 if (n == 0) { 2140 port.write('c'); 2141 } 2142 else { 2143 port.write('C'); 2144 } 2145 } 2146 if (i==3) { 2147 if (n == 0) { 2148 port.write('d'); 2149 } 2150 else { 2151 port.write('D'); 2152 } 2153 } 2154 if (i==4) { 2155 if (n == 0) { 2156 port.write('e'); 2157 } 2158 else { 2159 port.write('E'); 2160 } 2161 } 2162 if (i==5) { 2163 if (n == 0) { 2164 port.write('f'); 2165 } 2166 else { 2167 port.write('F'); 2168 } 2169 } 2170 if (i==6) { 2171 if (n == 0) { 2172 port.write('g'); 2173 } 2174 else { 2175 port.write('G'); 2176 } 2177 } 2178 if (i==7) { 2179 if (n == 0) { 2180 port.write('h'); 2181 } 2182 else { 2183 port.write('H'); 2184 } 2185 } 2186 if (i==8) { 2187 if (n == 0) { 2188 port.write('i'); 2189 } 2190 else { 2191 port.write('I'); 2192 } 2193 } 2194 if (i==9) { 2195 if (n == 0) { 2196 port.write('j'); 2197 } 2198 else { 2199 port.write('J'); 2200 } 2201 } 2202 if (i==10) { 2203 if (n == 0) { 2204 port.write('k'); 2205 } 2206 else { 2207 port.write('K'); 2208 } 2209 } 2210 if (i==11) { 2211 if (n == 0) { 2212 port.write('l'); 2213 } 2214 else { 2215 port.write('L'); 2216 } 2217 } 2218 if (i==12) { 2219 if (n == 0) { 2220 port.write('m'); 2221 } 2222 else { 2223 port.write('M'); 2224 } 2225 } 2226 if (i==13) { 2227 if (n == 0) { 2228 port.write('o'); 2229 } 2230 else { 2231 port.write('O'); 2232 } 2233 } 2234 if (i==14) { 2235 if (n == 0) { 2236 port.write('p'); 2237 } 2238 else { 2239 port.write('P'); 2240 } 2241 } 2242 if (i==15) { 2243 if (n == 0) { 2244 port.write('q'); 2245 } 2246 else { 2247 port.write('Q'); 2248 } 2249 } 2250 if (i==16) { 2251 if (n == 0) { 2252 port.write('r'); 2253 } 2254 else { 2255 port.write('R'); 2256 } 2257 } 2258 if (i==17) { 2259 if (n == 0) { 2260 port.write('s'); 2261 } 2262 else { 2263 port.write('S'); 2264 } 2265 } 2266 if (i==18) { 2267 if (n == 0) { 2268 port.write('t'); 2269 } 2270 else { 2271 port.write('T'); 2272 } 2273 } 2274 if (i==19) { 2275 if (n == 0) { 2276 port.write('u'); 2277 } 2278 else { 2279 port.write('U'); 2280 } 2281 } 2282 if (i==20) { 2283 if (n == 0) { 2284 port.write('v'); 2285 } 2286 else { 2287 port.write('V'); 2288 } 2289 } 2290 if (i==21) { 2291 if (n == 0) { 2292 port.write('w'); 2293 } 2294 else { 2295 port.write('W'); 2296 } 2297 } 2298 if (i==22) { 2299 if (n == 0) { 2300 port.write('x'); 2301 } 2302 else { 2303 port.write('X'); 2304 } 2305 } 2306 if (i==23) { 2307 if (n == 0) { 2308 port.write('y'); 2309 } 2310 else { 2311 port.write('Y'); 2312 } 2313 } 2314 if (i==24) { 2315 if (n == 0) { 2316 port.write('z'); 2317 } 2318 else { 2319 port.write('Z'); 2320 } 2321 } 2322 if (i==25) { 2323 if (n == 0) { 2324 port.write('1'); 2325 } 2326 else { 2327 port.write('2'); 2328 } 2329 } 2330 if (i==26) { 2331 if (n == 0) { 2332 port.write('3'); 2333 } 2334 else { 2335 port.write('4'); 2336 } 2337 } 2338 if (i==27) { 2339 if (n == 0) { 2340 port.write('5'); 2341 } 2342 else { 2343 port.write('6'); 2344 } 2345 } 2346 if (i==28) { 2347 if (n == 0) { 2348 port.write('7'); 2349 } 2350 else { 2351 port.write('8'); 2352 } 2353 } 2354 if (i==29) { 2355 if (n == 0) { 2356 port.write('9'); 2357 } 2358 else { 2359 port.write('!'); 2360 } 2361 } 2362 if (i==30) { 2363 if (n == 0) { 2364 port.write('@'); 2365 } 2366 else { 2367 port.write('#'); 2368 } 2369 } 2370 if (i==31) { 2371 if (n == 0) { 2372 port.write('$'); 2373 } 2374 else { 2375 port.write('%'); 2376 } 2377 } 2378 if (i==32) { 2379 if (n == 0) { 2380 port.write('^'); 2381 } 2382 else { 2383 port.write('&'); 2384 } 2385 } 2386 } 2387 2388 previousFlags[i]=n; 2389 } 2390 } 2391} 2392 2393 2394void mouseWheel(int delta) { 2395 if (delta == 1) 2396 Down(); 2397 else 2398 Up(); 2399} 2400</pre> 2401We have tested it. It worked like a charm. Exactly as the project creator says:<br /> 2402<br />
2403"Utilizing the input from the webcam, it adjusts the speed until the helicopter is in the middle of the screen.<br /> 2404If it goes too high, it lowers the speed. If it gets too low or is stopped, it slowly increases the upwards speed."<br /> 2405<br /> 2406<div class="separator" style="clear: both; text-align: center;"> 2407<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYG86b9f6SSnVVisromhaa2xGT34SwCrzyilFboKZOkcVsVsb1tUkk0j0778uILpYFPbo174oqku5HvjfFdUsuBGDTagZlhiLQOCr9oJ_rhIF-trhMk8LYcVQuYnG6wkjYhb9z8WuwZj4/s1600/P1030060.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgYG86b9f6SSnVVisromhaa2xGT34SwCrzyilFboKZOkcVsVsb1tUkk0j0778uILpYFPbo174oqku5HvjfFdUsuBGDTagZlhiLQOCr9oJ_rhIF-trhMk8LYcVQuYnG6wkjYhb9z8WuwZj4/s320/P1030060.JPG" width="320" /></a></div> 2408<br /> 2409<br /> 2410For more details on this project, please have a glance here: <a href="http://www.avergottini.com/2011/05/arduino-helicopter-infrared-controller.html" target="_blank">http://www.avergottini.com/2011/05/arduino-helicopter-infrared-controller.html</a><br /> 2411<br /> 2412<br /> 2413<b>The second working code (not yet tested by DIY Phone Gadgets):</b><br /> 2414<b><br /></b><br /> 2415Of course, your SYMA S107 helicopter might not always be exactly the same as others'. The first code might not work for your helicopter. Don't worry, it is possible that you have a 3-channel (30-bit) version, which uses a different protocol. Just load the following Arduino code:<br /> 2416<pre class="prettyprint">/* S107 3-channel with checksum helicopter control code 2417 * Copyright (C) 2012, Andrew Barry, Dan Barry 2418 * 2419 * Uses an Arduino to control a S107 helicopter 2420 * 2421 * 2422 * Instructions: 2423 * Connect an IR LED array to pin 8 (using a FET to amplify the signal) 2424 * and use the serial monitor to send commands to the system 2425 * 2426 */ 2427 2428#define LED 8 2429 2430#define STATUS 13 2431 2432//#define TAKEOFF_THROTTLE 240 2433//#define HOLDING_THROTTLE 130 2434 2435byte yawCmd, pitchCmd, throttleCmd, trimCmd; 2436 2437// Set this value for the default channel 2438// A = 0 2439// B = 1 2440// C = 2 2441byte channel = 0; 2442 2443/* 2444 * Setup function that initializes the serial port and 2445 * sets some default values for the control variables. 2446 * Also sets up the pins we'll be using. 2447 */ 2448void setup() 2449{ 2450 Serial.begin(9600); 2451 pinMode(STATUS,OUTPUT); 2452 digitalWrite(STATUS,LOW); 2453 2454 pinMode(LED,OUTPUT); 2455 digitalWrite(LED,LOW); 2456 2457 yawCmd = 8; 2458 pitchCmd = 8; 2459 trimCmd = 0; 2460 throttleCmd = 0; 2461 2462 Serial.println("throttle = 0, standing by for commands."); 2463} 2464 2465/* 2466 * Function that does the actual work of converting commands into 2467 * IR LED pulses and changes the pins in the appropriate manner. 2468 */ 2469byte sendPacket(byte yaw, byte pitch, byte throttle, byte trim) 2470{ 2471 2472 int packetData[100]; 2473 int pulseNum; 2474 2475 digitalWrite(STATUS,HIGH); 2476 2477 float channelDelayValue = 136500; 2478 2479 // channel A B or C 2480 // A is 10 with 136500us packet delay 2481 // B is 01 with 105200us packet delay 2482 // C is 11 with 168700us packet delay 2483 if (channel == 0) 2484 { 2485 packetData[0] = 1; 2486 packetData[1] = 0; 2487 channelDelayValue = 136500; 2488 2489 } else if (channel == 1) 2490 { 2491 packetData[0] = 0; 2492 packetData[1] = 1; 2493 channelDelayValue = 105200; 2494 2495 } else { 2496 packetData[0] = 1; 2497 packetData[1] = 1; 2498 channelDelayValue = 168700; 2499 2500 } 2501 packetData[2] = 0; 2502 packetData[3] = 0; 2503 2504 // pitch 2505 2506 packetData[7] = (pitch & 0b1000) >> 3; // direction bit 2507 2508 if (pitch < 8) { pitch = 8 - pitch; } packetData[6] = (pitch & 0b0100) >> 2; // others are speed bits, note that they are reversed 2509 packetData[5] = (pitch & 0b0010) >> 1; 2510 packetData[4] = (pitch & 0b0001); 2511 2512 // throttle 2513 // bits are reversed in the throttle command 2514 packetData[15] = (throttle & 0b10000000) >> 7; 2515 packetData[14] = (throttle & 0b01000000) >> 6; 2516 packetData[13] = (throttle & 0b00100000) >> 5; 2517 packetData[12] = (throttle & 0b00010000) >> 4; 2518 2519 packetData[11] = (throttle & 0b00001000) >> 3; 2520 packetData[10] = (throttle & 0b00000100) >> 2; 2521 packetData[9] = (throttle & 0b00000010) >> 1; 2522 packetData[8] = (throttle & 0b00000001); 2523 2524 // yaw 2525 packetData[19] = (yaw & 0b1000) >> 3; // direction bit 2526 if (yaw < 8) { yaw = 8 - yaw; } packetData[18] = (yaw & 0b0100) >> 2; 2527 packetData[17] = (yaw & 0b0010) >> 1; 2528 packetData[16] = (yaw & 0b0001); 2529 2530 // these 4 bits are the checksum, so make sure they 2531 // are 0s so they don't change the XOR later on 2532 packetData[20] = 0; 2533 packetData[21] = 0; 2534 packetData[22] = 0; 2535 packetData[23] = 0; 2536 2537 // yaw trim / yaw adjust (the little dial on the controller)
2538 // 6 bits 2539 packetData[24] = 0; 2540 packetData[25] = 0; 2541 packetData[26] = 0; 2542 packetData[27] = 0; 2543 2544 packetData[28] = 0; 2545 packetData[29] = 0; 2546 2547 // these bits are never sent but we do the checksum 2548 // computation in 4-bit chunks, with the trailing two 2549 // bits set to zero, so we set them to zero here to make 2550 // the checksum a bit easier to compute 2551 packetData[30] = 0; 2552 packetData[31] = 0; 2553 2554 int i; 2555 2556 int checksum[10]; 2557 checksum[0] = 0; 2558 checksum[1] = 0; 2559 checksum[2] = 0; 2560 checksum[3] = 0; 2561 2562 // compute checksum -- bitwise XOR of 4-bit chunks 2563 // with two zeros padding the *end* of the last two bits 2564 for (i=0; i 0) 2565 { 2566 if (Serial.available() == true) 2567 { 2568 Serial.println("HOLD ABORTED"); 2569 break; 2570 } 2571 2572 packetDelay = sendPacket(yawIn, pitchIn, throttleIn, trimCmd); 2573 delayTime = delayTime - packetDelay; 2574 2575 delay(packetDelay); 2576 2577 delay(delayAmount); 2578 delayTime = delayTime - delayAmount; 2579 } 2580 Serial.println("Done holding."); 2581} 2582 2583void Land() 2584{ 2585 static int i; 2586 Serial.println("Landing"); 2587 for(i=throttleCmd;i>0;i--){ 2588 HoldCommand(8,8,throttleCmd,50); 2589 } 2590 throttleCmd = 0; 2591} 2592 2593/* 2594 * Function that manages receiving data from the serial port. 2595 * Mostly changes the global variables that are passed to the 2596 * control functions. 2597 */ 2598void serialEvent() 2599{ 2600 char cmd = Serial.read(); 2601 Serial.println(); 2602 Serial.print("command received is "); 2603 Serial.println(cmd); 2604 2605 switch (cmd) 2606 { 2607 // Take off with 't' 2608 case 't':
2609 Serial.println("Taking Off"); 2610 2611 // Yaw: 1-15 2612 // 8 = no turn 2613 // 1 = max right turn 2614 // 15 = max left turn 2615 // 2616 // Pitch: 1-15 2617 // 8 = no pitch 2618 // 15 = max forward 2619 // 1 = max backwards 2620 // 2621 // Throttle: 0-255 2622 // 0 = off 2623 // ~130 = steady flight 2624 // ~240 = fast climb 2625 2626 // First, go up with lots of throttle for 650ms 2627 // yaw: 8 --> no yaw 2628 // pitch: 8 --> no pitch 2629 // throttle: 240 --> fast climb 2630 // delay: 650ms --> enough time to climb, not too long so won't hit ceiling 2631 2632 // HoldCommand: a function that sends the same data for a given amount of time 2633 // HoldCommand(yaw, pitch, throttle, time-to-hold-in-ms); 2634 HoldCommand(8, 8, 240, 650); 2635 2636 // set the *global* throttle to steady flight throttle 2637 throttleCmd = 130; 2638 break; 2639 2640 // land with 'x' or 'q' 2641 case 'x': 2642 case 'q': 2643 Land(); 2644 break; 2645 2646 // throttle commands 2647 case '0': 2648 case '1': 2649 case '2': 2650 case '3': 2651 case '4': 2652 case '5': 2653 case '6': 2654 case '7': 2655 case '8': 2656 case '9': 2657 throttleCmd = atoi(&cmd) * 25; //single character, so we can go from 0 to 255 by inputting 0 to 9 in the serial monitor 2658 break; 2659 2660 // turn left 2661 case 'a': 2662 if (yawCmd < 15) { yawCmd ++; } Serial.print("Yaw is "); Serial.println(yawCmd); break; // turn right case 'd': if (yawCmd > 1) 2663 { 2664 yawCmd --; 2665 } 2666 Serial.print("Yaw is "); 2667 Serial.println(yawCmd); 2668 break; 2669 2670 // move forwards 2671 case 'w': 2672 if (pitchCmd < 15){ pitchCmd ++; // moves forward } Serial.print("Pitch is "); Serial.println(pitchCmd); break; // move backwards case 's': if (pitchCmd > 1) 2673 { 2674 pitchCmd --; // moves backward 2675 } 2676 Serial.print("Pitch is "); 2677 Serial.println(pitchCmd); 2678 break; 2679 2680 // increase throttle 2681 case 'u': 2682 if (throttleCmd < 255 - 6) { throttleCmd += 6; } Serial.print("Throttle is "); Serial.println(throttleCmd); break; // decrease throttle case 'j': if (throttleCmd > 6) 2683 { 2684 throttleCmd -= 6; 2685 } 2686 Serial.print("Trottle is "); 2687 Serial.println(throttleCmd); 2688 break; 2689 2690 // change channel 2691 case 'c': 2692 Serial.println("Changing channel"); 2693 if (channel >= 2) 2694 { 2695 channel = 0; 2696 } else 2697 { 2698 channel ++; 2699 } 2700 Serial.print("Channel is: "); 2701 Serial.println(channel); 2702 break; 2703 2704 // reset yaw and pitch 2705 case 'r':
2706 Serial.println("resetting yaw and pitch"); 2707 yawCmd = 8; 2708 pitchCmd = 8; 2709 break; 2710 2711 default: 2712 Serial.println("Unknown command"); 2713 } 2714 Serial.print("Throttle is at "); 2715 Serial.println(throttleCmd); 2716} 2717 2718/* 2719 * Loops continuously sending and delaying for the transmission 2720 */ 2721void loop() 2722 2723{ 2724 // Note that serialEvent() gets called on each path of the loop 2725 // and runs if there is data at the serial port 2726 2727 // we call delay here on the return value of sendPacket because that will 2728 // cause us to put the right amount of time between packets. The delay is 2729 // not constant, but is instead based on how long the packet was 2730 // that we sent 2731 delay(sendPacket(yawCmd, pitchCmd, throttleCmd, trimCmd)); 2732} 2733</pre> 2734<br /> 2735<br /> 2736To use the code, open the Serial Monitor (Tools > Serial Monitor) and use the following commands:<br /> 2737<br /> 27380-9: throttle<br /> 2739w: forward<br /> 2740a: left<br /> 2741s: backwards<br /> 2742d: right<br /> 2743t: take off<br /> 2744u: increase throttle<br /> 2745j: decrease throttle<br /> 2746r: reset pitch and yaw<br /> 2747<br />
2748For more details on this project, please go to:<br /> 2749<a href="http://www.abarry.org/likelytobeforgotten/?p=55" target="_blank">http://www.abarry.org/likelytobeforgotten/?p=55</a><br /> 2750<br /> 2751<b>What's next?</b><br /> 2752<b><br /></b><br /> 2753Now that we can successfully send programmatical commands from Arduino, we can take advantage of the solutions we have learned <a href="http://www.diyphonegadgets.com/2011/10/diyers-lets-make-complete-list-of.html" target="_blank">here </a> in DIY Phone Gadgets to control the IR helicopter using PCs, game consoles, Kinect, tablets, smartphones or whatever electronic gadgets.<br /> 2754<br /> 2755Here is a project using Kinect:<br /> 2756<br /> 2757<div class="separator" style="clear: both; text-align: center;"> 2758<iframe allowfullscreen="allowfullscreen" frameborder="0" height="266" mozallowfullscreen="mozallowfullscreen" src="https://www.youtube.com/embed/Pol_OTWXH9s?feature=player_embedded" webkitallowfullscreen="webkitallowfullscreen" width="320"></iframe></div> 2759<div class="separator" style="clear: both; text-align: center;"> 2760<br /></div> 2761<div class="separator" style="clear: both; text-align: left;"> 2762Here is a project using brain (your mind) to control a helicopter:</div> 2763<div style="text-align: left;"> 2764<br /></div> 2765<div class="separator" style="clear: both; text-align: center;"> 2766<iframe allowfullscreen="allowfullscreen" frameborder="0" height="266" mozallowfullscreen="mozallowfullscreen" src="https://www.youtube.com/embed/0XpU33uQJx4?feature=player_embedded" webkitallowfullscreen="webkitallowfullscreen" width="320"></iframe></div> 2767<br /> 2768Or a Nunchuk-Wiimote-controlled helicopter, if you need more accuracy:<br /> 2769<br /> 2770<div class="separator" style="clear: both; text-align: center;"> 2771<iframe allowfullscreen="allowfullscreen" frameborder="0" height="266" mozallowfullscreen="mozallowfullscreen" src="https://www.youtube.com/embed/lJby43Ci9Aw?feature=player_embedded" webkitallowfullscreen="webkitallowfullscreen" width="320"></iframe></div> 2772<br /> 2773<br /> 2774<div> 2775<b>How to decode IR signal (very useful if you don't have a SYMA S107):</b><br /> 2776<br /> 2777Of course, you can always decode the IR signal from scratch, if your helicopter is not SYMA S107. Here is a great video tutorial:<br /> 2778<br /> 2779<div class="separator" style="clear: both; text-align: center;"> 2780<iframe allowfullscreen="allowfullscreen" frameborder="0" height="266" mozallowfullscreen="mozallowfullscreen" src="https://www.youtube.com/embed/QGSSTABCnH8?feature=player_embedded" webkitallowfullscreen="webkitallowfullscreen" width="320"></iframe></div> 2781<br /> 2782Here is the project owner's original blog: <a href="http://technologyonmymind.blogspot.fr/2012/03/helicopter-auto-pilot-introduction.html" target="_blank">http://technologyonmymind.blogspot.fr/2012/03/helicopter-auto-pilot-introduction.html</a><br /> 2783<br /> 2784<b>DIY Phone-controlled helicopters with Arduino:</b><br /> 2785<b><br /></b><br /> 2786Needless to say, using Arduino as a bridge, we can easily control helicopters. Here is "Yan's helicopter Controller" from DIY Phone Gadgets.<br /> 2787<br /> 2788Here is how it works:<br /> 2789<br /> 27901. The Android phone is controlling the Arduino using bluetooth.<br /> 27912. Arduino is controlling the original helicopter transmitter.<br /> 27923. The transmitter is programmatically controlling the helicopter.<br /> 2793<br /> 2794<br /> 2795<div class="separator" style="clear: both; text-align: center;"> 2796<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZMzxTDV8eljGR7Svie7trr-9XRvzWwBNokknG_0us0BTK5EvMk3NkhAiFjKxlcNnxtFmkOi2iT6E_RaeIO9ApNpX-9puZWHZsY5OlQUY1dJPXUfYHfI8xrjpjIsz0UNhnzMf_3AvZxcI/s1600/b_large_XoDZ_5c07000760815c44.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZMzxTDV8eljGR7Svie7trr-9XRvzWwBNokknG_0us0BTK5EvMk3NkhAiFjKxlcNnxtFmkOi2iT6E_RaeIO9ApNpX-9puZWHZsY5OlQUY1dJPXUfYHfI8xrjpjIsz0UNhnzMf_3AvZxcI/s320/b_large_XoDZ_5c07000760815c44.jpg" width="320" /></a></div> 2797<br /> 2798<br /> 2799<div class="separator" style="clear: both; text-align: center;"> 2800<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi748nM_80-5P6jsJT4NpC77jZA6IzIU_ur16_2w4BmEiaiSb_qKkqnQGrtXkNxebxtzK8-uNBLr6Llj6H-SJ2faFNBuJMFhWiNIW_cxg8b4d3KVuugCZcFePrtRtuLsoHzJN4ahBkMQTY/s1600/b_large_dSe0_09ad0004b76d5c41.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="213" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi748nM_80-5P6jsJT4NpC77jZA6IzIU_ur16_2w4BmEiaiSb_qKkqnQGrtXkNxebxtzK8-uNBLr6Llj6H-SJ2faFNBuJMFhWiNIW_cxg8b4d3KVuugCZcFePrtRtuLsoHzJN4ahBkMQTY/s320/b_large_dSe0_09ad0004b76d5c41.jpg" width="320" /></a></div> 2801<br /> 2802<b><br /></b><br /> 2803<div class="separator" style="clear: both; text-align: center;"> 2804<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPatNqWD2HDikU5VVN8SXjOVbwgc2j5cac6-IGVdqmk_DAjlGo-qLV90wlFIoNkpv9Tgt-u057L_Rqah-Q-t9-dUII8SKzUehyphenhyphen8lq-mMGeM9d1JWltyuPr6Y_Tv-a_A7XLK5eVFvMIckM/s1600/b_large_jajw_69a8000738555c3f.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="235" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgPatNqWD2HDikU5VVN8SXjOVbwgc2j5cac6-IGVdqmk_DAjlGo-qLV90wlFIoNkpv9Tgt-u057L_Rqah-Q-t9-dUII8SKzUehyphenhyphen8lq-mMGeM9d1JWltyuPr6Y_Tv-a_A7XLK5eVFvMIckM/s320/b_large_jajw_69a8000738555c3f.jpg" width="320" /></a></div> 2805<b><br /></b><br /> 2806<b><br /></b><br /> 2807<b>DIY Phone-controlled helicopters with audio dongle:</b><br /> 2808<div> 2809<br /></div> 2810<br /> 2811There are already some fantastic existing tools in the toy market that are really helpful. Like these audio jack dongles:<br /> 2812<br /> 2813<div class="separator" style="clear: both; text-align: center;"> 2814<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMPkNMqnIxilxxogG7do-Kl7LsSbFlPo9mxUwtWpGWJ60fH62XGeRTr7p6-mU1sdkb1BoMIfVkF1vgpuH5gRzP4Ba0XB1occZt6tK-iz87fE665X-kDn61NziHn2JN1_-d0Ww225h_F4I/s1600/image003.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="194" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiMPkNMqnIxilxxogG7do-Kl7LsSbFlPo9mxUwtWpGWJ60fH62XGeRTr7p6-mU1sdkb1BoMIfVkF1vgpuH5gRzP4Ba0XB1occZt6tK-iz87fE665X-kDn61NziHn2JN1_-d0Ww225h_F4I/s320/image003.png" width="320" /></a></div> 2815<div class="separator" style="clear: both; text-align: center;"> 2816<br /></div> 2817<div class="separator" style="clear: both; text-align: center;"> 2818<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlBesDCgasPgBv32i61IyN94izN2aN-htxENqp_WhcRD3fJdsXvOHa691P8ImZyNmduQzTbZEN5y9N4lZ8wS-6AJZfJmCDEkwg4qWOkhus5ETNh4XsBTxG1HYHPD1cMCQXauU-Z4rFRxQ/s1600/ucontrollerg31_b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhlBesDCgasPgBv32i61IyN94izN2aN-htxENqp_WhcRD3fJdsXvOHa691P8ImZyNmduQzTbZEN5y9N4lZ8wS-6AJZfJmCDEkwg4qWOkhus5ETNh4XsBTxG1HYHPD1cMCQXauU-Z4rFRxQ/s320/ucontrollerg31_b.png" width="320" /></a></div> 2819<div class="separator" style="clear: both; text-align: center;"> 2820<br /></div> 2821<div class="separator" style="clear: both; text-align: center;"> 2822<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggz9njVDGrUlwxh_y3eAnSUQdK1ZdK3DvXoCQB3ngOZRZ_dYOqyTvkBitqqA-uS7Ykpb98mE21_77gc1vy2mkdlw6rkSu3Ys-bOLnI2XobVLS4duYETBfFGmjKy_RU6zKhX3ROU6Qmf6E/s1600/ucontrollerrf1_b.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="180" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEggz9njVDGrUlwxh_y3eAnSUQdK1ZdK3DvXoCQB3ngOZRZ_dYOqyTvkBitqqA-uS7Ykpb98mE21_77gc1vy2mkdlw6rkSu3Ys-bOLnI2XobVLS4duYETBfFGmjKy_RU6zKhX3ROU6Qmf6E/s320/ucontrollerrf1_b.png" width="320" /></a></div> 2823<br /> 2824These dongles capture the audio signal in the 3.5 audio jack and translate the audio signal into wireless signal.<br /> 2825<div> 2826<br /></div> 2827For normal users, these dongles are just wireless transmitters, compatible with Android or iPhone apps. They can use it to control the helicopter with their smartphones.<br /> 2828<br />
2829For DIYers, the dongles should be capable of transmitting IR or other wireless signals from any smartphone or tablet (Android, iPhone, Blackberry or Windows Phone). You simply produce programmatically some audio sound from the phone. To make a touchscreen controller is so boring because the physical joysticks are way better and more precise. A phone should be a mobile command station to interact with the helicopter with a lot more intelligence. The helicopter should be able to dance with your own written program!<br /> 2830<br /> 2831The easiest way to get these dongles is searching "iPhone Android Helicopter" on eBay. Then write your iOS or Android code to produce some audio signal, control your TV, fly your helicopter! Don't forget to share your exciting discoveries with the DIY Phone Gadgets community.<br /> 2832<br /> 2833Imagine that you are playing your favorite music while watching a bunch of helicopters dancing in the sky, following the melody and rhythm. Yes, that's so geeky. But you are so happy. What's more beautiful than a creative mind? </div> 2834</div> 2835</div> 2836<div style='clear: both;'></div> 2837</div> 2838<div class='post-footer'> 2839<div class='post-footer-line post-footer-line-1'><span class='post-author vcard'> 2840Posted by 2841<span class='fn'> 2842<a href='https://www.blogger.com/profile/05261381115653026389' itemprop='author' rel='author' title='author profile'> 2843DIY Phone Gadgets 2844</a> 2845</span> 2846</span> 2847<span class='post-timestamp'> 2848at 2849<a class='timestamp-link' href='http://www.diyphonegadgets.com/2012/04/tutorial-how-to-control-ir-helicopter.html' itemprop='url' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2012-04-09T07:29:00-07:00'>7:29 AM</abbr></a> 2850</span> 2851<span class='post-comment-link'> 2852<a class='comment-link' href='http://www.diyphonegadgets.com/2012/04/tutorial-how-to-control-ir-helicopter.html#comment-form' onclick=''>81 2853comments</a> 2854</span> 2855<span class='post-icons'> 2856<span class='item-control blog-admin pid-685983255'> 2857<a href='https://www.blogger.com/post-edit.g?blogID=2092526155528722833&postID=6204042993917881299&from=pencil' title='Edit Post'> 2858<img alt='' class='icon-action' height='18' src='https://resources.blogblog.com/img/icon18_edit_allbkg.gif' width='18'/> 2859</a> 2860</span> 2861</span> 2862<div class='post-share-buttons goog-inline-block'> 2863<a class='goog-inline-block share-button sb-email' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6204042993917881299&target=email' target='_blank' title='Email This'><span class='share-button-link-text'>Email This</span></a><a class='goog-inline-block share-button sb-blog' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6204042993917881299&target=blog' onclick='window.open(this.href, "_blank", "height=270,width=475"); return false;' target='_blank' title='BlogThis!'><span class='share-button-link-text'>BlogThis!</span></a><a class='goog-inline-block share-button sb-twitter' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6204042993917881299&target=twitter' target='_blank' title='Share to X'><span class='share-button-link-text'>Share to X</span></a><a class='goog-inline-block share-button sb-facebook' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6204042993917881299&target=facebook' onclick='window.open(this.href, "_blank", "height=430,width=640"); return false;' target='_blank' title='Share to Facebook'><span class='share-button-link-text'>Share to Facebook</span></a><a class='goog-inline-block share-button sb-pinterest' href='https://www.blogger.com/share-post.g?blogID=2092526155528722833&postID=6204042993917881299&target=pinterest' target='_blank' title='Share to Pinterest'><span class='share-button-link-text'>Share to Pinterest</span></a> 2864</div> 2865</div> 2866<div class='post-footer-line post-footer-line-2'><span class='post-labels'> 2867</span> 2868</div> 2869<div class='post-footer-line post-footer-line-3'><span class='post-location'> 2870</span> 2871</div> 2872</div> 2873</div> 2874</div> 2875 2876 </div></div> 2877 2878</div> 2879<div class='blog-pager' id='blog-pager'> 2880<span id='blog-pager-older-link'> 2881<a class='blog-pager-older-link' href='http://www.diyphonegadgets.com/search?updated-max=2012-04-09T07:29:00-07:00&max-results=7' id='Blog1_blog-pager-older-link' title='Older Posts'>Older Posts</a> 2882</span> 2883<a class='home-link' href='http://www.diyphonegadgets.com/'>Home</a> 2884</div> 2885<div class='clear'></div> 2886<div class='blog-feeds'> 2887<div class='feed-links'> 2888Subscribe to: 2889<a class='feed-link' href='http://www.diyphonegadgets.com/feeds/posts/default' target='_blank' type='application/atom+xml'>Posts (Atom)</a> 2890</div> 2891</div> 2892</div><div class='widget HTML' data-version='1' id='HTML4'> 2893<h2 class='title'>Disqus for DIY Phone Gadgets</h2> 2894<div class='widget-content'> 2895<!-- Disqus Widget --> 2896</div> 2897<div class='clear'></div> 2898</div><div class='widget BlogArchive' data-version='1' id='BlogArchive1'> 2899<h2>Blog Archive</h2> 2900<div class='widget-content'> 2901<div id='ArchiveList'> 2902<div id='BlogArchive1_ArchiveList'> 2903<ul class='hierarchy'> 2904<li class='archivedate expanded'> 2905<a class='toggle' href='javascript:void(0)'> 2906<span class='zippy toggle-open'> 2907 2908 ▼  2909 2910</span> 2911</a> 2912<a class='post-count-link' href='http://www.diyphonegadgets.com/2013/'> 29132013 2914</a> 2915<span class='post-count' dir='ltr'>(4)</span> 2916<ul class='hierarchy'> 2917<li class='archivedate expanded'> 2918<a class='toggle' href='javascript:void(0)'> 2919<span class='zippy toggle-open'> 2920 2921 ▼  2922 2923</span> 2924</a> 2925<a class='post-count-link' href='http://www.diyphonegadgets.com/2013/12/'> 2926December 2927</a> 2928<span class='post-count' dir='ltr'>(1)</span> 2929<ul class='posts'> 2930<li><a href='http://www.diyphonegadgets.com/2013/12/yun-plug-alows-everyone-to-build-smart.html'>Yún Plug allows everyone to build a smart home in ...</a></li> 2931</ul> 2932</li> 2933</ul> 2934<ul class='hierarchy'> 2935<li class='archivedate collapsed'> 2936<a class='toggle' href='javascript:void(0)'> 2937<span class='zippy'> 2938 2939 ►  2940 2941</span> 2942</a> 2943<a class='post-count-link' href='http://www.diyphonegadgets.com/2013/10/'> 2944October 2945</a> 2946<span class='post-count' dir='ltr'>(1)</span> 2947</li> 2948</ul> 2949<ul class='hierarchy'> 2950<li class='archivedate collapsed'> 2951<a class='toggle' href='javascript:void(0)'> 2952<span class='zippy'> 2953 2954 ►  2955 2956</span> 2957</a> 2958<a class='post-count-link' href='http://www.diyphonegadgets.com/2013/06/'> 2959June 2960</a> 2961<span class='post-count' dir='ltr'>(1)</span> 2962</li> 2963</ul> 2964<ul class='hierarchy'> 2965<li class='archivedate collapsed'> 2966<a class='toggle' href='javascript:void(0)'> 2967<span class='zippy'> 2968 2969 ►  2970 2971</span> 2972</a> 2973<a class='post-count-link' href='http://www.diyphonegadgets.com/2013/04/'> 2974April 2975</a> 2976<span class='post-count' dir='ltr'>(1)</span> 2977</li> 2978</ul> 2979</li> 2980</ul> 2981<ul class='hierarchy'> 2982<li class='archivedate collapsed'> 2983<a class='toggle' href='javascript:void(0)'> 2984<span class='zippy'> 2985 2986 ►  2987 2988</span> 2989</a> 2990<a class='post-count-link' href='http://www.diyphonegadgets.com/2012/'> 29912012 2992</a> 2993<span class='post-count' dir='ltr'>(3)</span> 2994<ul class='hierarchy'> 2995<li class='archivedate collapsed'> 2996<a class='toggle' href='javascript:void(0)'> 2997<span class='zippy'> 2998 2999 ►  3000 3001</span> 3002</a> 3003<a class='post-count-link' href='http://www.diyphonegadgets.com/2012/07/'> 3004July 3005</a> 3006<span class='post-count' dir='ltr'>(2)</span> 3007</li> 3008</ul> 3009<ul class='hierarchy'> 3010<li class='archivedate collapsed'> 3011<a class='toggle' href='javascript:void(0)'> 3012<span class='zippy'> 3013 3014 ►  3015 3016</span> 3017</a> 3018<a class='post-count-link' href='http://www.diyphonegadgets.com/2012/04/'> 3019April 3020</a> 3021<span class='post-count' dir='ltr'>(1)</span> 3022</li> 3023</ul> 3024</li> 3025</ul> 3026<ul class='hierarchy'> 3027<li class='archivedate collapsed'> 3028<a class='toggle' href='javascript:void(0)'> 3029<span class='zippy'> 3030 3031 ►  3032 3033</span> 3034</a> 3035<a class='post-count-link' href='http://www.diyphonegadgets.com/2011/'> 30362011 3037</a> 3038<span class='post-count' dir='ltr'>(12)</span> 3039<ul class='hierarchy'> 3040<li class='archivedate collapsed'> 3041<a class='toggle' href='javascript:void(0)'> 3042<span class='zippy'> 3043 3044 ►  3045 3046</span> 3047</a> 3048<a class='post-count-link' href='http://www.diyphonegadgets.com/2011/11/'> 3049November 3050</a> 3051<span class='post-count' dir='ltr'>(7)</span> 3052</li> 3053</ul> 3054<ul class='hierarchy'> 3055<li class='archivedate collapsed'> 3056<a class='toggle' href='javascript:void(0)'> 3057<span class='zippy'> 3058 3059 ►  3060 3061</span> 3062</a> 3063<a class='post-count-link' href='http://www.diyphonegadgets.com/2011/10/'> 3064October 3065</a> 3066<span class='post-count' dir='ltr'>(5)</span> 3067</li> 3068</ul> 3069</li> 3070</ul> 3071</div> 3072</div> 3073<div class='clear'></div> 3074</div> 3075</div></div> 3076</div> 3077</div> 3078<div class='column-left-outer'> 3079<div class='column-left-inner'> 3080<aside> 3081</aside> 3082</div> 3083</div> 3084<div class='column-right-outer'> 3085<div class='column-right-inner'> 3086<aside> 3087<div class='sidebar section' id='sidebar-right-1'><div class='widget BlogSearch' data-version='1' id='BlogSearch1'> 3088<h2 class='title'>Search in DIY Phone Gadgets</h2> 3089<div class='widget-content'> 3090<div id='BlogSearch1_form'> 3091<form action='http://www.diyphonegadgets.com/search' class='gsc-search-box' target='_top'> 3092<table cellpadding='0' cellspacing='0' class='gsc-search-box'> 3093<tbody> 3094<tr> 3095<td class='gsc-input'> 3096<input autocomplete='off' class='gsc-input' name='q' size='10' title='search' type='text' value=''/> 3097</td> 3098<td class='gsc-search-button'> 3099<input class='gsc-search-button' title='search' type='submit' value='Search'/> 3100</td> 3101</tr> 3102</tbody> 3103</table> 3104</form> 3105</div> 3106</div> 3107<div class='clear'></div> 3108</div><div class='widget HTML' data-version='1' id='HTML8'> 3109<h2 class='title'>Follow us on Google+</h2> 3110<div class='widget-content'> 3111<!-- Place this tag in the <head> of your document -->
3112<script type="text/javascript"> 3113(function() 3114{var po = document.createElement("script"); 3115po.type = "text/javascript"; po.async = true;po.src = "https://apis.google.com/js/plusone.js"; 3116var s = document.getElementsByTagName("script")[0]; 3117s.parentNode.insertBefore(po, s); 3118})();</script>
3118 3119 3120<!-- Place this tag where you want the badge to render --> 3121<div class="g-plus" data-href="https://plus.google.com/101426279578959924463" data-size="badge"></div> 3122</div> 3123<div class='clear'></div> 3124</div><div class='widget HTML' data-version='1' id='HTML11'> 3125<h2 class='title'>Purchase an IRDroid To Start Your First Project!</h2> 3126<div class='widget-content'> 3127<a href="http://www.irdroid.com/purchase/?ap_id=1004" target="_blank" ><img src="http://www.irdroid.com/wp-content/uploads/2013/08/Irdroid_banner120240.png" alt="" border="0" /></a> 3128</div> 3129<div class='clear'></div> 3130</div><div class='widget HTML' data-version='1' id='HTML9'> 3131<h2 class='title'>Follow us on Twitter</h2> 3132<div class='widget-content'> 3133<a href="https://twitter.com/diyphonegadgets" class="twitter-follow-button" data-show-count="false" data-size="large" data-dnt="true">Follow @diyphonegadgets</a>
3134<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
3134 3135</div> 3136<div class='clear'></div> 3137</div><div class='widget AdSense' data-version='1' id='AdSense1'> 3138<div class='widget-content'>
3139<script type="text/javascript"><!-- 3140google_ad_client="pub-5463474479468511"; 3141google_ad_host="pub-1556223355139109"; 3142google_alternate_ad_url="http://img2.blogblog.com/img/blogger_ad.html"; 3143google_ad_width=200; 3144google_ad_height=200; 3145google_ad_format="200x200_as"; 3146google_ad_type="text_image"; 3147google_ad_host_channel="0001+S0006+L0001"; 3148google_color_border="FFFFFF"; 3149google_color_bg="FFFFFF"; 3150google_color_link="000000"; 3151google_color_url="2288BB"; 3152google_color_text="666666"; 3153//--></script>
vendor: 1 bytes, line 3153
3153
3154<script type="text/javascript" 3155 src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> 3156</script>
3156 3157<div class='clear'></div> 3158</div> 3159</div><div class='widget PopularPosts' data-version='1' id='PopularPosts1'> 3160<h2>Popular Posts</h2> 3161<div class='widget-content popular-posts'> 3162<ul> 3163<li> 3164<div class='item-thumbnail-only'> 3165<div class='item-thumbnail'> 3166<a href='http://www.diyphonegadgets.com/2011/10/diyers-lets-make-complete-list-of.html' target='_blank'> 3167<img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_ty2YbRnuiO3BeaMljnY2thoxnKJxyxQoi1Vi68GUiZw0LnuwLanONNxDN0ndPNuOWxxQAvryRpcjZGAT4kDSHJHFV0vvOGFKWMGJqMoiYUqqVnWZKhGVU4ix3sCvsTwujsI9J0nSVWSCWAiIp3=w72-h72-p-k-no-nu'/> 3168</a> 3169</div> 3170<div class='item-title'><a href='http://www.diyphonegadgets.com/2011/10/diyers-lets-make-complete-list-of.html'>DIYers, let's make a complete list of Android Hardware Interface Tools and Solutions</a></div> 3171</div> 3172<div style='clear: both;'></div> 3173</li> 3174<li> 3175<div class='item-thumbnail-only'> 3176<div class='item-thumbnail'> 3177<a href='http://www.diyphonegadgets.com/2011/11/programmatically-enable-and-configure.html' target='_blank'> 3178<img alt='' border='0' src='http://3.bp.blogspot.com/U-o5LusvkjozZu48QoJAPpqebcp754Oe22bvbG8sY4AleDj4yJo78k_8-zkC5YgRvb8=w72-h72-p-k-no-nu'/> 3179</a> 3180</div> 3181<div class='item-title'><a href='http://www.diyphonegadgets.com/2011/11/programmatically-enable-and-configure.html'>Enable and configure Android WiFi tethering hotspot AP without root</a></div> 3182</div> 3183<div style='clear: both;'></div> 3184</li> 3185<li> 3186<div class='item-thumbnail-only'> 3187<div class='item-thumbnail'> 3188<a href='http://www.diyphonegadgets.com/2013/12/yun-plug-alows-everyone-to-build-smart.html' target='_blank'> 3189<img alt='' border='0' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjA3ssu1Ta9ZgTOPJyDvOmDHEe3XlaEUfSTM0a0XeZAD2AH-XMoLbMviauwWRuTX3esPx1ItQjmEj6JgownKAoN3o8Hf5Xhp_pIsMbNmW-yZhR1TIYxliRMkJaMp95cBBhxP9_zHYPOPVA/w72-h72-p-k-no-nu/web_hi_res_512.png'/> 3190</a> 3191</div> 3192<div class='item-title'><a href='http://www.diyphonegadgets.com/2013/12/yun-plug-alows-everyone-to-build-smart.html'>Yún Plug allows everyone to build a smart home in 5 minutes, reduce energy bills and have fun </a></div> 3193</div> 3194<div style='clear: both;'></div> 3195</li> 3196<li> 3197<div class='item-thumbnail-only'> 3198<div class='item-thumbnail'> 3199<a href='http://www.diyphonegadgets.com/2012/04/tutorial-how-to-control-ir-helicopter.html' target='_blank'> 3200<img alt='' border='0' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_bj09wrGf1nc1aM79Veh5xnN2ynnLe5bR4T7RQqshTNSpw27cAM_UL4z4KPwcXZrkTu4q4Qdm4iV6qVz6K98tBQsXk_-YCHoGzDJNNKQFX3ea6S7wR3xsh58vb_EEc4nTYv1d00PiEd4/w72-h72-p-k-no-nu/syma6.jpg'/> 3201</a> 3202</div> 3203<div class='item-title'><a href='http://www.diyphonegadgets.com/2012/04/tutorial-how-to-control-ir-helicopter.html'>Tutorial: how to control an IR helicopter programmatically with Arduino, Android, Kinect, brain, and more!</a></div> 3204</div> 3205<div style='clear: both;'></div> 3206</li> 3207<li> 3208<div class='item-thumbnail-only'> 3209<div class='item-thumbnail'> 3210<a href='http://www.diyphonegadgets.com/2011/11/android-raspberry-pi-microcontroller.html' target='_blank'> 3211<img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_seuvYUUNtEgAE--yzo7D0qFV1SLFASkw0gJ0x5ieVF3Zq9CqdfdRcB1jq914v6qDku-UnHp0lbLcjyD246MKrA9bB822fHXjs=w72-h72-n-k-no-nu'/> 3212</a> 3213</div> 3214<div class='item-title'><a href='http://www.diyphonegadgets.com/2011/11/android-raspberry-pi-microcontroller.html'>Android + Raspberry Pi + Microcontroller = Intelligent gadgets with everything possible</a></div> 3215</div> 3216<div style='clear: both;'></div> 3217</li> 3218<li> 3219<div class='item-thumbnail-only'> 3220<div class='item-thumbnail'> 3221<a href='http://www.diyphonegadgets.com/2013/06/developing-useful-android-apps-with.html' target='_blank'> 3222<img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_s77u2UBlGlt7d_te3b51cbJ6KWxUyeVunHoqb7yiJY0mmnp5buC_wLLe9oYT9UP7q6Yl7PsQt-UL0eoNnZWDUOZZGeKsJRw6nDURTWvrs=w72-h72-n-k-no-nu'/> 3223</a> 3224</div> 3225<div class='item-title'><a href='http://www.diyphonegadgets.com/2013/06/developing-useful-android-apps-with.html'>Developing useful Android apps with infrared (IR) modules and open source libraries</a></div> 3226</div> 3227<div style='clear: both;'></div> 3228</li> 3229<li> 3230<div class='item-thumbnail-only'> 3231<div class='item-thumbnail'> 3232<a href='http://www.diyphonegadgets.com/2012/07/raspberry-pi-runs-android-for-first.html' target='_blank'> 3233<img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_tvGpSueZmgsFzgZVN7UkFvjypdKSbn2Fj-SLSBQ3JXRsA6bfbqvTqvHm7kQINrdWg_rivy25BYr2EJQmgzZPRaQiMWd-8nBGHJ=w72-h72-n-k-no-nu'/> 3234</a> 3235</div> 3236<div class='item-title'><a href='http://www.diyphonegadgets.com/2012/07/raspberry-pi-runs-android-for-first.html'>Raspberry Pi runs Android for the first time in history</a></div> 3237</div> 3238<div style='clear: both;'></div> 3239</li> 3240<li> 3241<div class='item-thumbnail-only'> 3242<div class='item-thumbnail'> 3243<a href='http://www.diyphonegadgets.com/2013/10/udoo-best-tool-so-far-to-create-diy.html' target='_blank'> 3244<img alt='' border='0' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh_Q74v_LSagglT5zl9w-YqZrhF5aN8kCCk8MWGvtz6gZJYJxNndROFEgSK3cpJIGu6oxN94-ES8_LIfqFJ6H8zNIox0cvYY0Uwny2QNBpBYqlvYLLeWf6dD9CnGGYdXZX_OjFvIPH95cs/w72-h72-p-k-no-nu/udoo+android+diy+phone+gadgets.jpg'/> 3245</a> 3246</div> 3247<div class='item-title'><a href='http://www.diyphonegadgets.com/2013/10/udoo-best-tool-so-far-to-create-diy.html'>UDOO: the BEST tool so far to create DIY Phone Gadgets</a></div> 3248</div> 3249<div style='clear: both;'></div> 3250</li> 3251<li> 3252<div class='item-thumbnail-only'> 3253<div class='item-thumbnail'> 3254<a href='http://www.diyphonegadgets.com/2012/07/adk-2012-for-android.html' target='_blank'> 3255<img alt='' border='0' src='https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgL_ZjYoEds3txx8hyphenhyphenZ6zA5tAhAwjGHYbP15a7HaMPJVff-z4izVBOKG0afuqwkLBWSUC0WkbZsksyHHhdIQ8IVILaUujcnM3hxVhEDKurPj7ExgOqm_DerCmbBsPrWqgK2B9nVuBQWhs8/w72-h72-p-k-no-nu/colors_large_large.png'/> 3256</a> 3257</div> 3258<div class='item-title'><a href='http://www.diyphonegadgets.com/2012/07/adk-2012-for-android.html'>ADK 2012 for Android</a></div> 3259</div> 3260<div style='clear: both;'></div> 3261</li> 3262<li> 3263<div class='item-thumbnail-only'> 3264<div class='item-thumbnail'> 3265<a href='http://www.diyphonegadgets.com/2011/10/3-possible-ways-for-android-to-control.html' target='_blank'> 3266<img alt='' border='0' src='https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_t2w4yZql0nSaQWTqs_JqNKvZzzTd_rMho9lRNRBzd6-2TXbjoYVPEWsh2IIwVECSLx5rX691gqcixEB0AfhjKGCePcagyMnA=w72-h72-n-k-no-nu'/> 3267</a> 3268</div> 3269<div class='item-title'><a href='http://www.diyphonegadgets.com/2011/10/3-possible-ways-for-android-to-control.html'>3 possible ways for Android to control the outside world using WiFi</a></div> 3270</div> 3271<div style='clear: both;'></div> 3272</li> 3273</ul> 3274<div class='clear'></div> 3275</div> 3276</div><div class='widget Label' data-version='1' id='Label1'> 3277<h2>Keywords</h2> 3278<div class='widget-content cloud-label-widget-content'> 3279<span class='label-size label-size-5'> 3280<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Android'>Android</a> 3281</span> 3282<span class='label-size label-size-5'> 3283<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/DIY%20Phone%20Gadgets'>DIY Phone Gadgets</a> 3284</span> 3285<span class='label-size label-size-4'> 3286<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/DIY'>DIY</a> 3287</span> 3288<span class='label-size label-size-4'> 3289<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/High-tech'>High-tech</a> 3290</span> 3291<span class='label-size label-size-4'> 3292<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Arduino'>Arduino</a> 3293</span> 3294<span class='label-size label-size-4'> 3295<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Bluetooth'>Bluetooth</a> 3296</span> 3297<span class='label-size label-size-4'> 3298<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Gadgets'>Gadgets</a> 3299</span> 3300<span class='label-size label-size-4'> 3301<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Tools'>Tools</a> 3302</span> 3303<span class='label-size label-size-4'> 3304<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/WiFi'>WiFi</a> 3305</span> 3306<span class='label-size label-size-4'> 3307<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Wireless'>Wireless</a> 3308</span> 3309<span class='label-size label-size-4'> 3310<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Raspberry%20Pi'>Raspberry Pi</a> 3311</span> 3312<span class='label-size label-size-3'> 3313<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Access%20Point'>Access Point</a> 3314</span> 3315<span class='label-size label-size-3'> 3316<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Android%20Market'>Android Market</a> 3317</span> 3318<span class='label-size label-size-3'> 3319<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Camera'>Camera</a> 3320</span> 3321<span class='label-size label-size-3'> 3322<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Domotic'>Domotic</a> 3323</span> 3324<span class='label-size label-size-3'> 3325<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Hotspot'>Hotspot</a> 3326</span> 3327<span class='label-size label-size-3'> 3328<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/IOIO'>IOIO</a> 3329</span> 3330<span class='label-size label-size-2'> 3331<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/ADB'>ADB</a> 3332</span> 3333<span class='label-size label-size-2'> 3334<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/AP'>AP</a> 3335</span> 3336<span class='label-size label-size-2'> 3337<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/AR%20Drone'>AR Drone</a> 3338</span> 3339<span class='label-size label-size-2'> 3340<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Amarino'>Amarino</a> 3341</span> 3342<span class='label-size label-size-2'> 3343<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Code'>
3343Code</a> 3344</span> 3345<span class='label-size label-size-2'> 3346<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Home%20Automation'>Home Automation</a> 3347</span> 3348<span class='label-size label-size-2'> 3349<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Ice%20Cream%20Sandwich'>Ice Cream Sandwich</a> 3350</span> 3351<span class='label-size label-size-2'> 3352<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Microcontroller'>Microcontroller</a> 3353</span> 3354<span class='label-size label-size-2'> 3355<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/P2P'>P2P</a> 3356</span> 3357<span class='label-size label-size-2'> 3358<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/PPM'>PPM</a> 3359</span> 3360<span class='label-size label-size-2'> 3361<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/PWM'>PWM</a> 3362</span> 3363<span class='label-size label-size-2'> 3364<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/RC'>RC</a> 3365</span> 3366<span class='label-size label-size-2'> 3367<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Tethering'>Tethering</a> 3368</span> 3369<span class='label-size label-size-2'> 3370<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/UAV'>UAV</a> 3371</span> 3372<span class='label-size label-size-2'> 3373<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Video%20Streaming'>Video Streaming</a> 3374</span> 3375<span class='label-size label-size-1'> 3376<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/ADK'>ADK</a> 3377</span> 3378<span class='label-size label-size-1'> 3379<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/APK'>APK</a> 3380</span> 3381<span class='label-size label-size-1'> 3382<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Audio'>Audio</a> 3383</span> 3384<span class='label-size label-size-1'> 3385<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Auto%20Signal%20Off'>Auto Signal Off</a> 3386</span> 3387<span class='label-size label-size-1'> 3388<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Auto%20Signal%20On'>Auto Signal On</a> 3389</span> 3390<span class='label-size label-size-1'> 3391<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Bluetooth%20Dongle'>Bluetooth Dongle</a> 3392</span> 3393<span class='label-size label-size-1'> 3394<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Chcken%20Haha'>Chcken Haha</a> 3395</span> 3396<span class='label-size label-size-1'> 3397<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Chicken%20Haha%20Robot'>Chicken Haha Robot</a> 3398</span> 3399<span class='label-size label-size-1'> 3400<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Digital%20Camera'>Digital Camera</a> 3401</span> 3402<span class='label-size label-size-1'> 3403<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Gingerbread'>Gingerbread</a> 3404</span> 3405<span class='label-size label-size-1'> 3406<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Healthcare'>Healthcare</a> 3407</span> 3408<span class='label-size label-size-1'> 3409<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Microbridge'>Microbridge</a> 3410</span> 3411<span class='label-size label-size-1'> 3412<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/PIC24'>PIC24</a> 3413</span> 3414<span class='label-size label-size-1'> 3415<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Quadcopter'>Quadcopter</a> 3416</span> 3417<span class='label-size label-size-1'> 3418<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/RC%20Model'>RC Model</a> 3419</span> 3420<span class='label-size label-size-1'> 3421<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/USB%20Host'>USB Host</a> 3422</span> 3423<span class='label-size label-size-1'> 3424<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/Video'>Video</a> 3425</span> 3426<span class='label-size label-size-1'> 3427<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/WiFi%20M
3427odule'>WiFi Module</a> 3428</span> 3429<span class='label-size label-size-1'> 3430<a dir='ltr' href='http://www.diyphonegadgets.com/search/label/WiFi%20Shield'>WiFi Shield</a> 3431</span> 3432<div class='clear'></div> 3433</div> 3434</div><div class='widget Profile' data-version='1' id='Profile1'> 3435<h2>About DIY Phone Gadgets</h2> 3436<div class='widget-content'> 3437<a href='https://www.blogger.com/profile/05261381115653026389'><img alt='My photo' class='profile-img' height='60' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhgw9xILffRNZyzwECJgqIdENLFLpuDnQyOf3mMyFF3KEx6shXNb-hZsyIPWEzWfhE2a4_m0JXcpXExyOCqoU93mIcJ1khF1eK7ZtbDJVCAKNEa0-VISnRYdiqhRwuAAuY/s220/2011-01-10+01.08.29.jpg' width='80'/></a> 3438<dl class='profile-datablock'> 3439<dt class='profile-data'> 3440<a class='profile-name-link g-profile' href='https://www.blogger.com/profile/05261381115653026389' rel='author' style='background-image: url(//www.blogger.com/img/logo-16.png);'> 3441</a> 3442</dt> 3443</dl> 3444<a class='profile-link' href='https://www.blogger.com/profile/05261381115653026389' rel='author'>View my complete profile</a> 3445<div class='clear'></div> 3446</div> 3447</div><div class='widget HTML' data-version='1' id='HTML2'> 3448<h2 class='title'>About the author</h2> 3449<div class='widget-content'> 3450<p><a href="http://fr.linkedin.com/pub/yan-zhang/12/138/91/en"> <img src="http://www.linkedin.com/img/webpromo/btn_viewmy_160x33.png" alt="View Yan ZHANG's profile on LinkedIn" width="160" height="33" border="0" /></a></p> 3451</div> 3452<div class='clear'></div> 3453</div><div class='widget HTML' data-version='1' id='HTML5'> 3454<h2 class='title'>Share this on Linkedin</h2> 3455<div class='widget-content'>
3456<script src="http://platform.linkedin.com/in.js" type="text/javascript"></script>
vendor: 1 bytes, line 3456
3456
3457<script type="IN/Share" data-counter="top"></script>
3457 3458</div> 3459<div class='clear'></div> 3460</div><div class='widget HTML' data-version='1' id='HTML3'> 3461<div class='widget-content'> 3462<table border=0 style="background-color: #fff; padding: 5px;" cellspacing=0> 3463 <tr><td> 3464 <img src="http://groups.google.com/intl/en/images/logos/groups_logo_sm.gif" 3465 height="30" width="140" alt="Google Groups" /> 3466 </td></tr> 3467 <tr><td style="padding-left: 5px"> 3468 <b>Subscribe to DIY Phone Gadgets</b> 3469 </td></tr> 3470 <form action="http://groups.google.com/group/diyphonegadgets/boxsubscribe"> 3471 <input type="hidden" name="hl" value="en" /> 3472 <tr><td style="padding-left: 5px;"> 3473 Email: <input type="text" name="email" /> 3474 <input type="submit" name="sub" value="Subscribe" /> 3475 </td></tr> 3476</form> 3477<tr><td align=right> 3478 <a href="http://groups.google.com/group/diyphonegadgets?hl=en">Visit this group</a> 3479</td></tr> 3480</table> 3481</div> 3482<div class='clear'></div> 3483</div><div class='widget HTML' data-version='1' id='HTML6'> 3484<h2 class='title'>Visitors</h2> 3485<div class='widget-content'> 3486<a href="http://s10.flagcounter.com/more/mJz"><img src="http://s10.flagcounter.com/count/mJz/bg_FFFFFF/txt_000000/border_CCCCCC/columns_2/maxflags_248/viewers_3/labels_0/pageviews_1/flags_0/" alt="free counters" border="0" /></a> 3487</div> 3488<div class='clear'></div> 3489</div><div class='widget HTML' data-version='1' id='HTML1'> 3490<div class='widget-content'>
3491<script type="text/javascript" src="http://jh.revolvermaps.com/r.js"></script>
3491<script type="text/javascript">rm_f1st('1','220','true','false','000000','71kvc8n6kmj','true','ff0000');</script>
3491<noscript><applet codebase="http://rh.revolvermaps.com/j" code="core.RE" width="220" height="220" archive="g.jar"><param name="cabbase" value="g.cab" /><param name="r" value="true" /><param name="n" value="false" /><param name="i" value="71kvc8n6kmj" /><param name="m" value="1" /><param name="s" value="220" /><param name="c" value="ff0000" /><param name="v" value="true" /><param name="b" value="000000" /><param name="rfc" value="true" /></applet></noscript> 3492</div> 3493<div class='clear'></div> 3494</div><div class='widget Followers' data-version='1' id='Followers1'> 3495<h2 class='title'>Followers</h2> 3496<div class='widget-content'> 3497<div id='Followers1-wrapper'> 3498<div style='margin-right:2px;'> 3499<div>
3499<script type="text/javascript" src="https://apis.google.com/js/platform.js"></script>
3499 3500<div id="followers-iframe-container"></div>
3501<script type="text/javascript"> 3502 window.followersIframe = null; 3503 function followersIframeOpen(url) { 3504 gapi.load("gapi.iframes", function() { 3505 if (gapi.iframes && gapi.iframes.getContext) { 3506 window.followersIframe = gapi.iframes.getContext().openChild({ 3507 url: url, 3508 where: document.getElementById("followers-iframe-container"), 3509 messageHandlersFilter: gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER, 3510 messageHandlers: { 3511 '_ready': function(obj) { 3512 window.followersIframe.getIframeEl().height = obj.height; 3513 }, 3514 'reset': function() { 3515 window.followersIframe.close(); 3516 followersIframeOpen("https://www.blogger.com/followers/frame/2092526155528722833?colors\x3dCgt0cmFuc3BhcmVudBILdHJhbnNwYXJlbnQaByM2NjY2NjYiByMyMjg4YmIqByNmZmZmZmYyByMwMDAwMDA6ByM2NjY2NjZCByMyMjg4YmJKByM5OTk5OTlSByMyMjg4YmJaC3RyYW5zcGFyZW50\x26pageSize\x3d21\x26hl\x3den\x26origin\x3dhttp://www.diyphonegadgets.com"); 3517 }, 3518 'open': function(url) { 3519 window.followersIframe.close(); 3520 followersIframeOpen(url); 3521 } 3522 } 3523 }); 3524 } 3525 }); 3526 } 3527 followersIframeOpen("https://www.blogger.com/followers/frame/2092526155528722833?colors\x3dCgt0cmFuc3BhcmVudBILdHJhbnNwYXJlbnQaByM2NjY2NjYiByMyMjg4YmIqByNmZmZmZmYyByMwMDAwMDA6ByM2NjY2NjZCByMyMjg4YmJKByM5OTk5OTlSByMyMjg4YmJaC3RyYW5zcGFyZW50\x26pageSize\x3d21\x26hl\x3den\x26origin\x3dhttp://www.diyphonegadgets.com"); 3528 </script>
3528</div> 3529</div> 3530</div> 3531<div class='clear'></div> 3532</div> 3533</div><div class='widget HTML' data-version='1' id='HTML7'> 3534<div class='widget-content'> 3535<p><iframe style="border: none; overflow: hidden; width: 240px; height: 590px;" src="//www.facebook.com/plugins/likebox.php?href=http%3A%2F%2Fwww.facebook.com%2Fpages%2FDIY-Phone-Gadgets%2F214527995278639&width=240&colorscheme=light&show_faces=true&border_color&stream=true&header=true&height=590" frameborder="0" scrolling="no" width="240" height="240"></iframe></p> 3536</div> 3537<div class='clear'></div> 3538</div></div> 3539</aside> 3540</div> 3541</div> 3542</div> 3543<div style='clear: both'></div> 3544<!-- columns --> 3545</div> 3546<!-- main --> 3547</div> 3548</div> 3549<div class='main-cap-bottom cap-bottom'> 3550<div class='cap-left'></div> 3551<div class='cap-right'></div> 3552</div> 3553</div> 3554<footer> 3555<div class='footer-outer'> 3556<div class='footer-cap-top cap-top'> 3557<div class='cap-left'></div> 3558<div class='cap-right'></div> 3559</div> 3560<div class='fauxborder-left footer-fauxborder-left'> 3561<div class='fauxborder-right footer-fauxborder-right'></div> 3562<div class='region-inner footer-inner'> 3563<div class='foot no-items section' id='footer-1'></div> 3564<table border='0' cellpadding='0' cellspacing='0' class='section-columns columns-2'> 3565<tbody> 3566<tr> 3567<td class='first columns-cell'> 3568<div class='foot no-items section' id='footer-2-1'></div> 3569</td> 3570<td class='columns-cell'> 3571<div class='foot no-items section' id='footer-2-2'></div> 3572</td> 3573</tr> 3574</tbody> 3575</table> 3576<!-- outside of the include in order to lock Attribution widget --> 3577<div class='foot section' id='footer-3'><div class='widget Attribution' data-version='1' id='Attribution1'> 3578<div class='widget-content' style='text-align: center;'> 3579Simple theme. Powered by <a href='https://www.blogger.com' target='_blank'>Blogger</a>. 3580</div> 3581<div class='clear'></div> 3582</div></div> 3583</div> 3584</div> 3585<div class='footer-cap-bottom cap-bottom'> 3586<div class='cap-left'></div> 3587<div class='cap-right'></div> 3588</div> 3589</div> 3590</footer> 3591<!-- content --> 3592</div> 3593</div> 3594<div class='content-cap-bottom cap-bottom'> 3595<div class='cap-left'></div> 3596<div class='cap-right'></div> 3597</div> 3598</div> 3599</div>
3600<script type='text/javascript'> 3601 window.setTimeout(function() { 3602 document.body.className = document.body.className.replace('loading', ''); 3603 }, 10); 3604 </script>
3604 3605
3606<script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/851759228-widgets.js"></script>
vendor: 1 bytes, line 3606
3606
3607<script type='text/javascript'> 3608window['__wavt'] = 'AAPvtVmYrPqljD8xnB-mJBVicFga:1790153856102';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d2092526155528722833','//www.diyphonegadgets.com/','2092526155528722833'); 3609_WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '2092526155528722833', 'title': 'DIY Phone Gadgets', 'url': 'http://www.diyphonegadgets.com/', 'canonicalUrl': 'http://www.diyphonegadgets.com/', 'homepageUrl': 'http://www.diyphonegadgets.com/', 'searchUrl': 'http://www.diyphonegadgets.com/search', 'canonicalHomepageUrl': 'http://www.diyphonegadgets.com/', 'blogspotFaviconUrl': 'http://www.diyphonegadgets.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': false, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': '', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22DIY Phone Gadgets - Atom\x22 href\x3d\x22http://www.diyphonegadgets.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22DIY Phone Gadgets - RSS\x22 href\x3d\x22http://www.diyphonegadgets.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22DIY Phone Gadgets - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/2092526155528722833/posts/default\x22 /\x3e\n', 'meTag': '\x3clink rel\x3d\x22me\x22 href\x3d\x22https://www.blogger.com/profile/05261381115653026389\x22 /\x3e\n', 'adsenseClientId': 'ca-pub-5463474479468511', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': true, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'isGoogleEverywhereLinkTooltipEnabled': true, 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/7ce469edaf870342', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}
3609, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': 'Read more', 'pageType': 'index', 'pageName': '', 'pageTitle': 'DIY Phone Gadgets'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': false, 'isAlternateRendering': false, 'isCustom': true, 'variant': 'simplysimple', 'variantId': 'simplysimple'}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'DIY Phone Gadgets', 'description': 'Another way to change the world with your smartphone', 'url': 'http://www.diyphonegadgets.com/', 'type': 'feed', 'isSingleItem': false, 'isMultipleItems': true, 'isError': false, 'isPage': false, 'isPost': false, 'isHomepage': true, 'isArchive': false, 'isLabelSearch': false}}]); 3610_WidgetManager._RegisterWidget('_NavbarView', new _WidgetInfo('Navbar1', 'navbar', document.getElementById('Navbar1'), {}, 'displayModeFull')); 3611_WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); 3612_WidgetManager._RegisterWidget('_PageListView', new _WidgetInfo('PageList1', 'crosscol', document.getElementById('PageList1'), {'title': 'Making Hardware Apps for Smartphones', 'links': [{'isCurrentPage': true, 'href': 'http://www.diyphonegadgets.com/', 'title': 'Home'}, {'isCurrentPage': false, 'href': 'http://www.diyphonegadgets.com/p/about-community.html', 'id': '441594611586718904', 'title': 'About the community'}, {'isCurrentPage': false, 'href': 'http://www.diyphonegadgets.com/p/solutions.html', 'id': '1968348181786015686', 'title': 'Top Solutions'}, {'isCurrentPage': false, 'href': 'https://play.google.com/store/apps/details?id\x3dcom.diyphonegadgets.freeblog', 'title': 'Download Android App'}, {'isCurrentPage': false, 'href': 'http://www.diyphonegadgets.com/p/share-your-own-ideas-and-projects.html', 'id': '6223354161463477907', 'title': 'Share your own ideas and projects'}], 'mobile': false, 'showPlaceholder': true, 'hasCurrentPage': true}, 'displayModeFull')); 3613_WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/120969204-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css'}, 'displayModeFull')); 3614_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML4', 'main', document.getElementById('HTML4'), {}, 'displayModeFull')); 3615_WidgetManager._RegisterWidget('_BlogArchiveView', new _WidgetInfo('BlogArchive1', 'main', document.getElementById('BlogArchive1'), {'languageDirection': 'ltr', 'loadingMessage': 'Loading\x26hellip;'}, 'displayModeFull')); 3616_WidgetManager._RegisterWidget('_BlogSearchView', new _WidgetInfo('BlogSearch1', 'sidebar-right-1', document.getElementById('BlogSearch1'), {}, 'displayModeFull')); 3617_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML8', 'sidebar-right-1', document.getElementById('HTML8'), {}, 'displayModeFull')); 3618_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML11', 'sidebar-right-1', document.getElementById('HTML11'), {}, 'displayModeFull')); 3619_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML9', 'sidebar-right-1', document.getElementById('HTML9'), {}, 'displayModeFull')); 3620_WidgetManager._RegisterWidget('_AdSenseView', new _WidgetInfo('AdSense1', 'sidebar-right-1', document.getElementById('AdSense1'), {}, 'displayModeFull')); 3621_WidgetManager._RegisterWidget('_PopularPostsView', new _WidgetInfo('PopularPosts1', 'sidebar-right-1', document.getElementById('PopularPosts1'), {}, 'displayModeFull'));
3622_WidgetManager._RegisterWidget('_LabelView', new _WidgetInfo('Label1', 'sidebar-right-1', document.getElementById('Label1'), {}, 'displayModeFull')); 3623_WidgetManager._RegisterWidget('_ProfileView', new _WidgetInfo('Profile1', 'sidebar-right-1', document.getElementById('Profile1'), {}, 'displayModeFull')); 3624_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'sidebar-right-1', document.getElementById('HTML2'), {}, 'displayModeFull')); 3625_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML5', 'sidebar-right-1', document.getElementById('HTML5'), {}, 'displayModeFull')); 3626_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML3', 'sidebar-right-1', document.getElementById('HTML3'), {}, 'displayModeFull')); 3627_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML6', 'sidebar-right-1', document.getElementById('HTML6'), {}, 'displayModeFull')); 3628_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML1', 'sidebar-right-1', document.getElementById('HTML1'), {}, 'displayModeFull')); 3629_WidgetManager._RegisterWidget('_FollowersView', new _WidgetInfo('Followers1', 'sidebar-right-1', document.getElementById('Followers1'), {}, 'displayModeFull')); 3630_WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML7', 'sidebar-right-1', document.getElementById('HTML7'), {}, 'displayModeFull')); 3631_WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull')); 3632</script>
3632 3633</body> 3634</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.