Blynk

Smart DIY Hardware Apps

Small, inexpensive, programmable computers like the Arduino have democratized hardware design, making it possible for makers and hobbyists to build computing into their designs more easily than ever before. But when it comes to making a mobile app to go along with a project, things get a lot trickier.

Blynk, a New York City software startup, aims to change that by creating an all-purpose app for controlling development boards from a smartphone. A simple interface filled with widgets will provide drag-and-drop graphical controls for whatever mishmash of software and hardware a maker has cobbled together.

Some widgets mirror physical controls like buttons, switches, sliders and knobs. Others interface with sensors like GPS or an accelerometer, or connect to web services to send updates and notifications to a phone or social media platform.

Blynk is also providing a server that the app can connect to, so projects can easily be controlled from anywhere in the world without the maker having to add additional and complicated code.

Hardware support is key to Blynk’s all-purpose appeal. The team is supporting several popular modules right out of the gate, including Arduino’s ethernet and WiFi shields, Arduino Yún, and Raspberry Pi. Testing for other components is ongoing and will be a major part of Blynk’s continuing development as the team releases open-source hardware libraries to extend compatibility.

Smart DIY Hardware Apps

 

Smart DIY Hardware Apps

Smart DIY Hardware Apps

Smart DIY Hardware Apps

Smart DIY Hardware Apps: Blynk

Other long-term goals are to integrate Blynk with automation services like Xively and IFTTT, add support for existing home automation products, and eventually release an SDK so that commercial developers can use Blynk as the starting point for developing their own apps.

Development of Blynk is well underway, and the team is seeking funding on Kickstarter starting today to bring the project to the finish line. Backers have the choice of receiving the basic app, which includes a number of starter widgets, or the “full box” option stuffed with all the widgets the Blynk team (or high-rolling backers) can dream up. Learn more in the video below.

Related: MakerSwarm

Blynk
[gravityform id="38" title="false" description="false" ajax="true" tabindex="49"]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_38' ><div id='gf_38' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_38' id='gform_38' action='/smart-hardware-apps-blynk/#gf_38'> <div class='gform_body'><ul id='gform_fields_38' class='gform_fields top_label form_sublabel_below description_below'><li id='field_38_2' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' >Your Name</label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_38_2'> <span id='input_38_2_3_container' class='name_first' > <input type='text' name='input_2.3' id='input_38_2_3' value='' aria-label='First name' tabindex='50' aria-invalid="false" /> <label for='input_38_2_3' >First</label> </span> </div></li><li id='field_38_3' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_38_3' >Can you share a high level overview of what you are looking for?</label><div class='ginput_container ginput_container_textarea'><textarea name='input_3' id='input_38_3' class='textarea medium' tabindex='54' aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id='field_38_4' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_38_4' >Best way to reach you?</label><div class='ginput_container ginput_container_text'><input name='input_4' id='input_38_4' type='text' value='' class='medium' tabindex='55' aria-invalid="false" /></div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_38' class='gform_button button' value='Submit' tabindex='56' onclick='if(window["gf_submitting_38"]){return false;} window["gf_submitting_38"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_38"]){return false;} window["gf_submitting_38"]=true; jQuery("#gform_38").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=38&amp;title=&amp;description=&amp;tabindex=49' /> <input type='hidden' class='gform_hidden' name='is_submit_38' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='38' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_38' value='WyJbXSIsIjI0MzNjYTY3YTUxNWM5ZTM5NmFkOWNiZWJiMjkyMDYyIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_38' id='gform_target_page_number_38' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_38' id='gform_source_page_number_38' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_38' id='gform_ajax_frame_38'>This iframe contains the logic required to handle Ajax powered Gravity Forms.</iframe> <script type='text/javascript'>jQuery(document).ready(function($){gformInitSpinner( 38, 'https://www.postscapes.com/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery('#gform_ajax_frame_38').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_38');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_38').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_38').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_38').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_38').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_38').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_38').val();gformInitSpinner( 38, 'https://www.postscapes.com/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery(document).trigger('gform_page_loaded', [38, current_page]);window['gf_submitting_38'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_38').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_38').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [38]);window['gf_submitting_38'] = false;}, 50);}else{jQuery('#gform_38').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [38, current_page]);} );} );</script><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 38) {} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [38, 1]) } ); </script>
[gravityform id="38" title="false" description="false" ajax="true" tabindex="49"]
<div class='gf_browser_unknown gform_wrapper' id='gform_wrapper_38' ><div id='gf_38' class='gform_anchor' tabindex='-1'></div><form method='post' enctype='multipart/form-data' target='gform_ajax_frame_38' id='gform_38' action='/smart-hardware-apps-blynk/#gf_38'> <div class='gform_body'><ul id='gform_fields_38' class='gform_fields top_label form_sublabel_below description_below'><li id='field_38_2' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label gfield_label_before_complex' >Your Name</label><div class='ginput_complex ginput_container no_prefix has_first_name no_middle_name no_last_name no_suffix gf_name_has_1 ginput_container_name' id='input_38_2'> <span id='input_38_2_3_container' class='name_first' > <input type='text' name='input_2.3' id='input_38_2_3' value='' aria-label='First name' tabindex='50' aria-invalid="false" /> <label for='input_38_2_3' >First</label> </span> </div></li><li id='field_38_3' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_38_3' >Can you share a high level overview of what you are looking for?</label><div class='ginput_container ginput_container_textarea'><textarea name='input_3' id='input_38_3' class='textarea medium' tabindex='54' aria-invalid="false" rows='10' cols='50'></textarea></div></li><li id='field_38_4' class='gfield field_sublabel_below field_description_below gfield_visibility_visible' ><label class='gfield_label' for='input_38_4' >Best way to reach you?</label><div class='ginput_container ginput_container_text'><input name='input_4' id='input_38_4' type='text' value='' class='medium' tabindex='55' aria-invalid="false" /></div></li> </ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_38' class='gform_button button' value='Submit' tabindex='56' onclick='if(window["gf_submitting_38"]){return false;} window["gf_submitting_38"]=true; ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_38"]){return false;} window["gf_submitting_38"]=true; jQuery("#gform_38").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=38&amp;title=&amp;description=&amp;tabindex=49' /> <input type='hidden' class='gform_hidden' name='is_submit_38' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='38' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_38' value='WyJbXSIsIjI0MzNjYTY3YTUxNWM5ZTM5NmFkOWNiZWJiMjkyMDYyIl0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_38' id='gform_target_page_number_38' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_38' id='gform_source_page_number_38' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_38' id='gform_ajax_frame_38'>This iframe contains the logic required to handle Ajax powered Gravity Forms.</iframe> <script type='text/javascript'>jQuery(document).ready(function($){gformInitSpinner( 38, 'https://www.postscapes.com/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery('#gform_ajax_frame_38').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_38');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_38').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_38').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_38').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_38').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_38').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_38').val();gformInitSpinner( 38, 'https://www.postscapes.com/wp-content/plugins/gravityforms/images/spinner.gif' );jQuery(document).trigger('gform_page_loaded', [38, current_page]);window['gf_submitting_38'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_38').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_38').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [38]);window['gf_submitting_38'] = false;}, 50);}else{jQuery('#gform_38').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [38, current_page]);} );} );</script><script type='text/javascript'> jQuery(document).bind('gform_post_render', function(event, formId, currentPage){if(formId == 38) {} } );jQuery(document).bind('gform_post_conditional_logic', function(event, formId, fields, isInit){} );</script><script type='text/javascript'> jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [38, 1]) } ); </script>