PageSourceSearch

http://www.diyphonegadgets.com/

html diyphonegadgets.com collected 2026-09-24 11:28:47 UTC 163,511 bytes, 3,634 lines download raw bytes

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!=&#39;all&#39;)media=&#39;all&#39;' 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 &#8220;cloud&#8221; 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&#8239;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:&nbsp;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&#8217;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 &nbsp;Arduino DUE&#8217;s ARM SAM3X, both CPU integrated on the same board!<br />
768<br />
769UDOO&#8217;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&#8239;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&#8217;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&nbsp; &nbsp; Free and open source application and open hardware module<br />
871&nbsp; &nbsp; Available from Android Market, AppsLib<br />
872&nbsp; &nbsp; Low cost Irdroid infrared module<br />
873&nbsp; &nbsp; Plug and play design<br />
874&nbsp; &nbsp; Extended remote control range &#8211; 10+ meters<br />
875&nbsp; &nbsp; Small Dimensions 17&#215;43,2 mm<br />
876&nbsp; &nbsp; Design based on the principle KISS (Keep it simple stupid!)<br />
877<br />
878Let&#8217;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&#8217;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:&nbsp;<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&#8239;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&nbsp;<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 &amp; mobile apps that talk to hardware. Get up and running in minutes, and begin talking to hardware &amp; connected devices with the web languages you already know. Focus 100% on your app, and never have to worry about embedded programming, electronics, &amp; 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&nbsp;lights when we're not at home, or send an SMS to our phone when&nbsp;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&nbsp;it to be. It's our security system, our wine monitor, our cat's&nbsp;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&nbsp;whenever motion is detected, or if a door or window is opened. We can&nbsp;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&nbsp;remote control app we can control things or keep an eye on our home&nbsp;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&#8239;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&amp;t=8780" target="_blank">http://www.raspberrypi.org/phpBB3/viewtopic.php?f=56&amp;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&#8239;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&nbsp; L.audioInit();<br />
1225&nbsp; L.usbh_init()<br />
1226&nbsp; 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&nbsp; ...<br />
1236&nbsp; L.adkEventProcess(); //let the adk framework do its thing<br />
1237&nbsp; ...<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&#8239;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.&nbsp;</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.&nbsp;Inspired by all those <a href="http://www.robodance.com/" target="_blank">robodance</a> projects, we need more joy of robotic automation.&nbsp;</div>
1331<div>
1332<br /></div>
1333<div>
1334Let's hack the SYMA S107 helicopter to give it some artificial intelligence!&nbsp;</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.&nbsp;</div>
1343<div>
1344<br /></div>
1345<div>
1346<b>Step 1. Prepare the circuit&nbsp;</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,&nbsp;1 IR LED and&nbsp;1 resister of&nbsp;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:&nbsp;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.&nbsp;</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 &lt; 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 &gt; 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() &gt; 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 == '&amp;')
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&lt;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 &lt; (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 &lt;= 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 &gt; 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&lt;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&lt;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 &gt; 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 &gt; 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&lt;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('&amp;');
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:&nbsp;<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 &amp; 0b1000) &gt;&gt; 3; // direction bit
2507
2508 if (pitch &lt; 8)  {    pitch = 8 - pitch;  }  packetData[6] = (pitch &amp; 0b0100) &gt;&gt; 2; // others are speed bits, note that they are reversed
2509 packetData[5] = (pitch &amp; 0b0010) &gt;&gt; 1;
2510 packetData[4] = (pitch &amp; 0b0001);
2511
2512 // throttle
2513 // bits are reversed in the throttle command
2514 packetData[15] =  (throttle &amp; 0b10000000) &gt;&gt; 7;
2515 packetData[14] =  (throttle &amp; 0b01000000) &gt;&gt; 6;
2516 packetData[13] = (throttle &amp; 0b00100000) &gt;&gt; 5;
2517 packetData[12] = (throttle &amp; 0b00010000) &gt;&gt; 4;
2518
2519 packetData[11] = (throttle &amp; 0b00001000) &gt;&gt; 3;
2520 packetData[10] = (throttle &amp; 0b00000100) &gt;&gt; 2;
2521 packetData[9] = (throttle &amp; 0b00000010) &gt;&gt; 1;
2522 packetData[8] = (throttle &amp; 0b00000001);
2523
2524 // yaw
2525 packetData[19] = (yaw &amp; 0b1000) &gt;&gt; 3; // direction bit
2526 if (yaw &lt; 8)  {    yaw = 8 - yaw;  }  packetData[18] = (yaw &amp; 0b0100) &gt;&gt; 2;
2527 packetData[17] = (yaw &amp; 0b0010) &gt;&gt; 1;
2528 packetData[16] = (yaw &amp; 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&gt;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 --&gt; no yaw
2628     // pitch: 8 --&gt; no pitch
2629     // throttle: 240 --&gt; fast climb
2630     // delay: 650ms --&gt; 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(&amp;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 &lt; 15)      {        yawCmd ++;      }      Serial.print("Yaw is ");      Serial.println(yawCmd);      break;    // turn right    case 'd':      if (yawCmd &gt; 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 &lt; 15){        pitchCmd ++;  // moves forward      }      Serial.print("Pitch is ");      Serial.println(pitchCmd);      break;      // move backwards    case 's':      if (pitchCmd &gt; 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 &lt; 255 - 6)      {        throttleCmd += 6;      }      Serial.print("Throttle is ");      Serial.println(throttleCmd);      break;        // decrease throttle    case 'j':      if (throttleCmd &gt; 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 &gt;= 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 &gt; 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>&nbsp;in DIY Phone Gadgets&nbsp;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:&nbsp;<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.&nbsp;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?&nbsp;</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&#8239;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        &#9660;&#160;
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        &#9660;&#160;
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        &#9658;&#160;
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        &#9658;&#160;
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        &#9658;&#160;
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        &#9658;&#160;
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        &#9658;&#160;
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        &#9658;&#160;
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        &#9658;&#160;
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        &#9658;&#160;
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        &#9658;&#160;
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&amp;width=240&amp;colorscheme=light&amp;show_faces=true&amp;border_color&amp;stream=true&amp;header=true&amp;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.