{"id":718,"date":"2015-05-07T16:45:53","date_gmt":"2015-05-07T23:45:53","guid":{"rendered":"http:\/\/appinventor.pevest.com\/?p=718"},"modified":"2015-05-07T16:45:53","modified_gmt":"2015-05-07T23:45:53","slug":"how-to-connect-app-inventor-apps-to-arduino-using-bluetooth-wireless","status":"publish","type":"post","link":"https:\/\/coldstreams.com\/appinventor\/2015\/05\/07\/how-to-connect-app-inventor-apps-to-arduino-using-bluetooth-wireless\/","title":{"rendered":"How to connect App Inventor apps to Arduino using Bluetooth wireless"},"content":{"rendered":"<h2>How to Connect App Inventor apps to Arduino Using Bluetooth<\/h2>\n<p>Bluetooth is a low power, short range wireless technology built in to many phones, tablets and other devices.<\/p>\n<p>MIT App Inventor 2 supports a set of Bluetooth communication functions that may be used to send data between smart phones and tablets (see previous tutorials: <a href=\"http:\/\/appinventor.pevest.com\/?p=520\">Part 1<\/a>, <a href=\"http:\/\/appinventor.pevest.com\/?p=569\">Part 2<\/a>)<\/p>\n<p>This capability may be extended so that App Inventor apps can communicate with Arduino-based devices and other embedded systems.<\/p>\n<p><span style=\"text-decoration: underline;\"><em>This tutorial describes how to interface App Inventor apps running on Android to Arduino devices, via the Bluetooth wireless link.<\/em><\/span><\/p>\n<h2><strong>What is Bluetooth?<\/strong><\/h2>\n<p>Bluetooth is an industry standard for low power, short range wireless communications between devices such as personal computers, printers, smart phones, tablets, wireless headphones, wireless stereo speakers, sensor systems (like in security alarms) and other applications.<\/p>\n<p>To learn more about Bluetooth technology (and why it has a funny name!), please read <a href=\"http:\/\/appinventor.pevest.com\/?p=520\">our first tutorial on Bluetooth<\/a>.<\/p>\n<h2><strong>What is Arduino?<\/strong><\/h2>\n<p>Arduino is an open hardware, open software platform for building small electronic devices. The Arduino board is a &#8220;microcontroller&#8221; &#8211; that is, a complete &#8211; albeit small, inexpensive and with limited function &#8211; computer. Arduino is a popular choice for do-it-yourself projects and is well established in the &#8220;Maker&#8221; community of DIY project builders. (Side note: I will be at the San Francisco Maker Faire on Saturday, May 16th, 2015).<\/p>\n<p><strong><span style=\"color: #ff0000;\"><em><span style=\"text-decoration: underline;\">This is not a tutorial about Arduino boards, software or electronics<\/span><\/em> <span style=\"text-decoration: underline;\"><em>and presumes the reader is familiar with Arduino development<\/em><\/span>.<\/span> <\/strong>To learn more about Arduino (and you should learn more about it!) start at the <a href=\"http:\/\/www.arduino.cc\">Arduino web site<\/a>.<\/p>\n<p><em>This tutorial assumes you have the Arduino software development environment installed on your computer and are familiar with Arduino development.<\/em><\/p>\n<h2><strong>HARDWARE: Setting Up Arduino for Bluetooth Wireless Communications<\/strong><\/h2>\n<p>There are several versions of the Arduino board; I used the <em>Uno<\/em> version but others should work just fine.<\/p>\n<p>The Arduino board does not contain Bluetooth hardware &#8211; to implement Bluetooth requires using a third-party Bluetooth module. I use the JY-MCU Bluetooth module . <strong>IMPORTANT &#8211; not all Bluetooth modules will work with App Inventor!\u00a0 While new versions of Android support all versions of Bluetooth, App Inventor (at the time of this writing) supports &#8220;classic&#8221; Bluetooth only. In particular, App Inventor does not support the newer Bluetooth LE (Low Energy) version, at least it does not support the Bluetooth LE module that I have.<\/strong><\/p>\n<p>I can confirm that the JY-MCU Bluetooth module works but the Bluetooth LE modules I have do not work with App Inventor.\u00a0 My phone can see the Bluetooth LE device but the App Inventor source code cannot communicate with the LE devices.<\/p>\n<p>Where to buy the JY-MCU Module online: <a href=\"http:\/\/www.amazon.com\/gp\/product\/B0093XAV4U\/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0093XAV4U&amp;linkCode=as2&amp;tag=commonsensevi-20&amp;linkId=4L5VQJW7JJKBGCMU\">Amazon (Prime)<\/a>, <a href=\"http:\/\/www.amazon.com\/gp\/product\/B009DZQ4MG\/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B009DZQ4MG&amp;linkCode=as2&amp;tag=commonsensevi-20&amp;linkId=S6VEEZVTF4GBGYWC\">Amazon (non-Prime)<\/a><\/p>\n<p>The module is also available from other vendors.<\/p>\n<p>Photo shows my Arduino UNO board, at left, a prototyping breadboard with a status LED set up, and the JY-MCU Bluetooth module, just above the breadboard.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/DSC_1266.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\" size-large wp-image-716 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/DSC_1266-1024x683.jpg\" alt=\"DSC_1266\" width=\"625\" height=\"417\" \/><\/a><em>Click through to\u00a0 see how the Arduino and Bluetooth module are setup, and get the Arduino source code and the App Inventor source code!<\/em><\/p>\n<p><!--more--><\/p>\n<p>To learn how to set up this hardware, please refer to this external tutorial from <a href=\"http:\/\/robotosh.blogspot.com\/2012\/07\/arduino-jy-mcu-bluetooth.html\">roboTosh<\/a> on setting up the JY-MCU Bluetooth module with your Arduino board. Be sure to use the sample Arduino source code on that web page to test your hardware set up and verify that everything is working.<\/p>\n<p>The hardware configuration sets up power and interface to the JY-MCU module, and configures a single LED as a status indicator when the code is running.<\/p>\n<p>In the test case (on that page), you&#8217;ll program the Arduino using the USB-serial link, and then run the Arduino Serial Monitor to type commands to the Arduino board. Type &#8216;H&#8217; to turn on the status LED light, and then type &#8216;L&#8217; (actually anything other than H) to turn the light off.<\/p>\n<h2><strong>ARDUINO SOFTWARE: Arduino Source Code for Bluetooth Communications<\/strong><\/h2>\n<p>Once the Arduino and JY-MCU hardware are set up,\u00a0 install the software on the Arduino board.<\/p>\n<p>You may download the following source code as both a text file (.txt) and as an Arduino .ino project file (see end of this post for download links).<\/p>\n<p>A description of what this Arduino code does and how it works follows the code listing. If you are not familiar with Arduino source code, it is similar to the C++ programming language.<\/p>\n<pre>\/*\nBTArduino sketch By Edward Mitchell http:\/\/appinventor.pevest.com\nDescription:\nUses the JY-MCU Bluetooth module to enable an Arduino board to communicate over Bluetooth\nwireless to an Android app written in MIT App Inventor 2, running on an Android device.\n\nBuy the JY-MCU module here\n(Amazon Prime) http:\/\/www.amazon.com\/gp\/product\/B0093XAV4U\/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B0093XAV4U&amp;linkCode=as2&amp;tag=commonsensevi-20&amp;linkId=4L5VQJW7JJKBGCMU\n(Amazon non Prime option) http:\/\/www.amazon.com\/gp\/product\/B009DZQ4MG\/ref=as_li_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=B009DZQ4MG&amp;linkCode=as2&amp;tag=commonsensevi-20&amp;linkId=S6VEEZVTF4GBGYWC\n\nCredit:\nThis Arduino code based very loosely on the original Arduino code for the JY-MCU Bluetooth module tutorial at\nhttp:\/\/robotosh.blogspot.com\/2012\/07\/arduino-jy-mcu-bluetooth.html\n\nA tutorial for using this code with App Inventor 2, is available at the appinventor.pevest.com\nweb site. Please refer to the tutorial for information and source code for the Android side of this sketch.\n\nNote - this sample code is intended only to show how the basic Bluetooth communications link may\nbe set up, and illustrates just one possible way of sending commands from the Android device\nto the Arduino phone. The purpose of this code is as an introduction\/tutorial and is not meant\nto be used for any particular purpose. No warranties.\n*\/\n\n\/\/ Constant Definitions\n#define LEDPIN 8 \/\/ Pin on Arduino board to which status LED is connected\n#define READ_RATE 100 \/\/ How often the serial link is read, in milliseconds\n#define FLASH_RATE 100 \/\/ The on\/off period in milliseconds, for the LED Flash status feedback\n\n\/\/ Declarations\nbyte cmd; \/\/ Stores the next byte of incoming data, which is a \"command\" to do something\nbyte param; \/\/ Stores the 2nd byte, which is the command parameter\n\n\/\/ Initialization\nvoid setup() {\n\npinMode(LEDPIN, OUTPUT); \/\/ pin 48 (on-board LED) as OUTPUT\ndigitalWrite(LEDPIN, LOW);\nSerial.begin(9600); \/\/ start serial communication at 9600bps\n}\n\n\/\/ Arduino Execution Loop\nvoid loop() {\n\nif ( Serial.available() ) \/\/ if data is available to read\n{\ncmd = Serial.read(); \/\/ read it and store it in 'cmd'\n\/\/ Data format is byte 1 = command, byte 2 = parameter\n};\n\nswitch ( cmd ) {\ncase 1:\n\/\/ First byte contains a generic \"command\" byte. We arbitrarily defined '1' as the command to then check the 2nd parameter byte\n\/\/ User can additional commands by adding case 2, 3, 4, etc\n{\n\/\/ read the parameter byte\nparam = Serial.read();\nswitch (param)\n{\ncase 1:\n\/\/ Android device requests the Arduino to send some data back to Android\nflashLED(1);\nif (Serial)\n{\n\/\/ Send back 2 bytes with a value of 1, 2\nSerial.write(1);\nSerial.write(2);\n};\nbreak;\ncase 2:\n\/\/ Turn on status LED\nflashLED(2);\ndigitalWrite(LEDPIN, HIGH );\nbreak;\ncase 3:\n\/\/ Turn off status LED\nflashLED(3);\ndigitalWrite(LEDPIN, LOW);\nbreak;\ncase 4:\n\/\/ Demonstrate flashing the LED 4 times\nflashLED(4);\nbreak;\ncase 5:\n\/\/ Demonstrate flashing the LED 5 times\n\/\/ Could add code here to control a servo via PWM outputs\nflashLED(5);\nbreak;\ndefault: break; \/\/ do nothing\n} \/\/ switch (param)\n} \/\/ switch (cmd) case 1\ndefault: break; \/\/ do nothing\n} \/\/ switch (cmd)\n\ndelay(READ_RATE); \/\/ wait 100ms for next reading\n}\n\n\/\/ Support routine\nvoid flashLED (int n) {\n\/\/ Flash the LED n times, to provide an on board status indicator\nfor (int i=1; i&lt;=n; i++) {\ndigitalWrite (LEDPIN, HIGH);\ndelay (FLASH_RATE);\ndigitalWrite (LEDPIN, LOW);\ndelay(FLASH_RATE);\n};\nreturn;\n}\n<\/pre>\n<p><strong>Description of the Arduino Code<\/strong><\/p>\n<p>This description assumes you are familiar with Arduino projects.<\/p>\n<p>The basic operation configures a <em>Serial<\/em> port to communicate with the JY-MCU module. Data is\u00a0 received or transmitted between the JY-MCU module using the <em>Serial<\/em> interface.<\/p>\n<p>This project defines a very simple protocol for communicating between the Arduino and the App Inventor app running on an Android device.<\/p>\n<p>The protocol is merely a 2-byte sequence. The first byte contains a value that we interpret as a &#8220;command&#8221;, and the second byte contains a parameter value for the command. When the code reads incoming data from the JY-MCU module, the first byte is stored in a variable named <em>cmd<\/em> and the second byte is stored in a variable named <em>param<\/em>.<\/p>\n<p>The initialization code, in <em>setup<\/em>() sets the <em>Serial<\/em> data rate to 9600 bps as this is the default data rate on the JY-MCU module. The module may be configured to use different (and faster) data rates but for this tutorial, the data rate is left at the default value of 9600 bps.<\/p>\n<p>The <em>loop<\/em>() section of the Arduino code reads an incoming <em>cmd<\/em> byte value, and then uses a <em>switch<\/em> statement to select from among a set of possible values. This tutorial implements only a command value of 1; you can add additional values to define additional commands. For a command of 1, the 2nd byte is then read as the parameter value. (One could define a command value of say, 2, and then define that the next several bytes contains a text string, for example.)<\/p>\n<p>Depending on the parameter value (2, 3, 4, etc) a different function may be performed. As defined here, a value of 2 turns on the status LED; a value of 3 turns off the status LED.<\/p>\n<p>A parameter value of 1 tells the Arduino to send 2 bytes of data back to the App Inventor app, via the Bluetooth connection. This could be modified to send back other types of data (2 byte or 4 byte numbers or text strings).<\/p>\n<p>Additionally, the LED flashes the value of the parameter byte. For example, if a parameter value of 4 is received, the LED flashes 4 times, to provide visible feedback.<\/p>\n<p>You can modify this code to implement new functions on the Arduino that are controlled remotely from the App Inventor app. For example, you could define that a parameter value of 4 means to set pin 9 of the Arduino HIGH and a parameter value of 5 means to set pin 9 to LOW. You could also use this to pass control information to operate a PWM interfaced servo or motor.<\/p>\n<p>Finally, <em>flashLED<\/em>() is a simple function to flash the LED the number of times indicated by its argument.<\/p>\n<h2><strong>APP INVENTOR 2 SOFTWARE for Bluetooth<\/strong><\/h2>\n<p>The &#8220;Bluetooth Client for Arduino&#8221; is based on the similar client code introduced in the part 1 and 2 tutorials on Bluetooth. The app provides a simple interface to connect to the Bluetooth device, to disconnect from the device, to send a numeric value (such as 1, 2, 3, etc) and to display link status and data received from the Arduino.<\/p>\n<p>The blocks code for this app may be downloaded at the link provided at the end of this tutorial.<\/p>\n<p><strong>\u00a0The Designer View<\/strong><\/p>\n<p>The user interface has 3 buttons: Connect to device, Disconnect device and Send Numeric.<\/p>\n<p><em>Labels<\/em> are used to display status and received data.<\/p>\n<p>The User Interface, as seen in the MIT App Inventor Designer:<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/BTClient_ArduinoDesigner.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-730 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/BTClient_ArduinoDesigner.png\" alt=\"BTClient_ArduinoDesigner\" width=\"300\" height=\"189\" \/><\/a><strong>The App Inventor App In Operation<\/strong><\/p>\n<p><em><strong>FIRST! &#8220;Pair&#8221; Your Bluetooth Devices!<br \/>\n<\/strong><\/em><\/p>\n<p>Prior to running the App, you must go into the Android Settings | Bluetooth options and &#8220;pair&#8221; the JY-MCU Bluetooth module with your Android phone. With the Arduino and JY-MCU powered up, you should see a device named &#8220;HC-06&#8221;. Please see the section titled <strong>Setting Up A Bluetooth Connection<\/strong> in <a href=\"http:\/\/appinventor.pevest.com\/?p=520\">Part 1: Basic Bluetooth communications using App Inventor<\/a>. You may need to enter a pairing code of &#8220;1234&#8221; to set up the HC-6 device. (See\u00a0 the <a href=\"http:\/\/robotosh.blogspot.com\/2012\/07\/arduino-jy-mcu-bluetooth.html\">roboTosh<\/a> link for details on that.)<\/p>\n<p>Once the app is running, you should see that the link is Disconnected.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-34-301.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-735 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-34-301-576x1024.png\" alt=\"Screenshot_2015-05-07-15-34-30\" width=\"300\" height=\"533\" \/><\/a>Select Connect to device.<\/p>\n<p>The app displays a list of potential Bluetooth devices. Select the HC-06 device from the list. There will be a pause for a second or two as the connection is established.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-05-17-48-39.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-710 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-05-17-48-39-576x1024.png\" alt=\"Screenshot_2015-05-05-17-48-39\" width=\"350\" height=\"622\" \/><\/a><\/p>\n<p>If you see the following error message when you attempt to connect, it means your Arduino\/Bluetooth module is probably not powered up or is too far away:<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-39-26.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-736 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-39-26-576x1024.png\" alt=\"Screenshot_2015-05-07-15-39-26\" width=\"300\" height=\"533\" \/><\/a><\/p>\n<p>Once the link is set up, the Link status will display &#8220;Client connected&#8221;:<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-34-47.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-737 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-34-47-576x1024.png\" alt=\"Screenshot_2015-05-07-15-34-47\" width=\"300\" height=\"533\" \/><\/a><\/p>\n<p>Enter a numeric value of 2 and press Send Numeric &#8211; the status LED should turn on. To turn it off, enter a value of 3 and press Send Numeric &#8211; the status LED should turn off. Note that the LED will also flash a number of times equal to the numeric value sent.<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-35-02.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-738 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-35-02-576x1024.png\" alt=\"Screenshot_2015-05-07-15-35-02\" width=\"300\" height=\"533\" \/><\/a><\/p>\n<p>To demonstrate sending data from the Arduino device to the App Inventor app, enter a numeric value of 1 and press Send Numeric. A moment later you should see that the Data received status displays &#8220;1,2&#8221;:<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-35-24.png\"><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-739 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/Screenshot_2015-05-07-15-35-24-576x1024.png\" alt=\"Screenshot_2015-05-07-15-35-24\" width=\"300\" height=\"533\" \/><\/a><\/p>\n<h2>\u00a0The Blocks Code<\/h2>\n<p>The original Bluetooth client code (see the original Parts 1 and 2) has been simplified to do only what is needed for the Arduino link.<\/p>\n<p>The Send Numeric click event handler sends the numeric value across the Bluetooth link. For simplicity, only positive numbers are permitted (the <em>absolute<\/em> value function converts negative values to positive values), and since a byte may only represent values between 0 and 255, anything larger is set to 255.<\/p>\n<p>The command byte value of 1 is sent, followed by the numeric value:<\/p>\n<p><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/BTArduino_SendNumeric.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-full wp-image-713 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/BTArduino_SendNumeric.png\" alt=\"BTArduino_SendNumeric\" width=\"506\" height=\"241\" \/><\/a>Data is received inside the Click Timer event. The two incoming bytes are read and displayed on the screen:<\/p>\n<h2><a href=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/BTArduino_TimerEvent.png\"><img loading=\"lazy\" decoding=\"async\" class=\" size-large wp-image-721 aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2015\/05\/BTArduino_TimerEvent-1024x487.png\" alt=\"BTArduino_TimerEvent\" width=\"625\" height=\"297\" \/><\/a>Key Features Shown<\/h2>\n<ul>\n<li>Setting up the Arduino hardware to demonstrate Bluetooth communications using the JY-MCU module<\/li>\n<li>Writing and installing Arduino code to use the JY-MCU module for Bluetooth communications<\/li>\n<li>Writing the blocks code in MIT App Inventor for an app that links to the Arduino device over Bluetooth wireless.<\/li>\n<li>Operation of sample programs showing how to send and receive data via Bluetooth.<\/li>\n<\/ul>\n<h2>Future Development<\/h2>\n<p>The command\/parameter protocol may be extended to support many types of data transfer and a greater set of remote control functions.<\/p>\n<p>The communication protocol, in a production system, might be improved to include data error detection. If data bytes are missed or damaged, they should be detected and handled or discarded.<\/p>\n<h2>Source Code Downloads<\/h2>\n<ul>\n<li>Arduino source code (in text form): <a href=\"http:\/\/appinventor.pevest.com\/source\/tutorials\/BTArduino_Sketch_Source.txt\">BTArduino_Sketch_Source.txt<\/a><\/li>\n<li>Arduino project file (.ino file) &#8211; use your browser&#8217;s right-click Save As option: <a href=\"http:\/\/appinventor.pevest.com\/source\/tutorials\/sketch_ArduinoBT.ino\">sketch_ArduinoBT.ino<\/a><\/li>\n<li>App Inventor project file (.aia file) &#8211; use your browser&#8217;s right-click Save As option: <a href=\"http:\/\/appinventor.pevest.com\/source\/tutorials\/sketch_ArduinoBT.ino\">sketch_ArduinoBT.ino<\/a> <a href=\"http:\/\/appinventor.pevest.com\/source\/tutorials\/BTArduino_Client.aia\">BTArduino_Client.aia<\/a><\/li>\n<\/ul>\n<h2>DISCLAIMER<\/h2>\n<p>These code files and instructions are provided solely for educational purposes but you are free to use these in your projects. No warranty of any type is implied. I will\u00a0 respond to reports of defects in the code but I am unable to debug your hardware or software projects or to develop custom code for you!<\/p>\n<h2>E-Books and Printed Books<\/h2>\n<p>If you find these tutorials helpful (I hope you do!) please take a look at my books on App Inventor. To learn more about the books and where to get them (they are inexpensive) please see my <a href=\"http:\/\/appinventor.pevest.com\/?page_id=33\">App Inventor Books page<\/a>.<\/p>\n<ul>\n<li><strong>App Inventor 2 Introduction (Volume 1 e-book)<\/strong><br \/>\nStep-by-step guide to easy Android programming<\/li>\n<li><strong>App Inventor 2 Advanced Concepts\u00a0(Volume\u00a02 e-book)<\/strong><br \/>\nStep-by-step guide\u00a0to\u00a0Advanced features including TinyDB<\/li>\n<li><strong>App Inventor 2 Databases and Files<\/strong>\u00a0<strong>(Volume 3 e-book)<\/strong><br \/>\nStep-by-step TinyDB, TinyWebDB, Fusion Tables and Files<\/li>\n<li><strong>App Inventor 2 Graphics, Animation and Charts (Volume 4 e-book <em>and printed book<\/em>)<\/strong><br \/>\nStep-by-step guide to graphics, animation and charts<\/li>\n<\/ul>\n<p>Thank you for visiting! &#8212; Ed<\/p>\n<h2><strong>Please Share on Social Media<\/strong><\/h2>\n<p>Please click on the buttons below this post to share with your friends on Facebook or other social media.<\/p>\n<p>If you are not already following this blog, click on the following links to like on Facebook, add to your Google+ circles or follow on Twitter or in your RSS news reader. Thank you for visiting!<\/p>\n<p><a href=\"https:\/\/www.facebook.com\/appinventor2\"><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/appinventor.pevest.com\/wp-content\/uploads\/2014\/10\/facebook-like.png\" alt=\"\" width=\"150\" \/><\/a><a href=\"https:\/\/plus.google.com\/107302082825289724871\/posts\"><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/coldstreams.com\/images\/plus-badge.png\" alt=\"\" width=\"48\" \/><\/a><a href=\"http:\/\/twitter.com\/appinventorplus\"><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/coldstreams.com\/images\/twitter-follow.png\" alt=\"\" width=\"100\" \/><\/a><img decoding=\"async\" class=\"aligncenter\" src=\"http:\/\/coldstreams.com\/images\/rss.png\" alt=\"\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>How to Connect App Inventor apps to Arduino Using Bluetooth Bluetooth is a low power, short range wireless technology built in to many phones, tablets and other devices. MIT App Inventor 2 supports a set of Bluetooth communication functions that may be used to send data between smart phones and tablets (see previous tutorials: Part &hellip; <a href=\"https:\/\/coldstreams.com\/appinventor\/2015\/05\/07\/how-to-connect-app-inventor-apps-to-arduino-using-bluetooth-wireless\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">How to connect App Inventor apps to Arduino using Bluetooth wireless<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[19,22,28,32,46,61,130,133,179,213],"class_list":["post-718","post","type-post","status-publish","format-standard","hentry","category-programming-method","tag-android","tag-app-inventor","tag-appinventor","tag-arduino","tag-bluetooth","tag-communications","tag-mit-app-inventor","tag-network","tag-source-code","tag-wireless"],"_links":{"self":[{"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/posts\/718","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/comments?post=718"}],"version-history":[{"count":0,"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/posts\/718\/revisions"}],"wp:attachment":[{"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/media?parent=718"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/categories?post=718"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/coldstreams.com\/appinventor\/wp-json\/wp\/v2\/tags?post=718"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}