{"id":2332,"date":"2020-06-07T17:22:31","date_gmt":"2020-06-07T22:22:31","guid":{"rendered":"http:\/\/blog.espol.edu.ec\/girni\/?p=2332"},"modified":"2026-08-04T21:49:02","modified_gmt":"2026-08-05T02:49:02","slug":"hm-10-serial-con-arduino-a-pc","status":"publish","type":"post","link":"https:\/\/blog.espol.edu.ec\/girni\/hm-10-serial-con-arduino-a-pc\/","title":{"rendered":"M\u00f3dulos Bluetooth"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">Bluetooth LE - CC2541 SOC \/HM-10<\/h2>\n\n\n\n<figure class=\"wp-block-image alignright\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"217\" height=\"300\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo02-217x300.png\" alt=\"https:\/\/e2e.ti.com\/support\/wireless-connectivity\/bluetooth\/f\/538\/t\/812294\" class=\"wp-image-2325\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo02-217x300.png 217w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo02.png 340w\" sizes=\"auto, (max-width: 217px) 100vw, 217px\" \/><\/a><\/figure>\n\n\n\n<p>CC2541SOC es el componente principal de los m\u00f3dulos HM-10 gen\u00e9ricos que se encuentran en el mercado local. <\/p>\n\n\n\n<p>El fabricante del chip es Texas Instruments con algunas versiones CC2540\/2541.<\/p>\n\n\n\n<p><a href=\"https:\/\/www.ti.com\/product\/CC2541\">https:\/\/www.ti.com\/product\/CC2541<\/a><\/p>\n\n\n\n<p>Hoja de datos de CC2541<\/p>\n\n\n\n<p><a href=\"https:\/\/www.ti.com\/lit\/ds\/symlink\/cc2541.pdf?ts=1591538569573&amp;ref_url=https:\/\/www.ti.com\/product\/CC2541\">https:\/\/www.ti.com\/lit\/ds\/symlink\/cc2541.pdf?ts=1591538569573&amp;ref_url=https:\/\/www.ti.com\/product\/CC2541<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">M\u00f3dulo HM-10<\/h1>\n\n\n\n<figure class=\"wp-block-image alignright\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"241\" height=\"300\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo03-241x300.png\" alt=\"\" class=\"wp-image-2326\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo03-241x300.png 241w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo03.png 331w\" sizes=\"auto, (max-width: 241px) 100vw, 241px\" \/><\/a><\/figure>\n\n\n\n<p>En el mercado se encuentran la versi\u00f3n como m\u00f3dulo HM-10 presentado como m\u00f3dulo Bluetooth LE en varios formatos gen\u00e9ricos o como m\u00f3dulo para \"arduino\".<\/p>\n\n\n\n<p><a href=\"https:\/\/e2e.ti.com\/support\/wireless-connectivity\/bluetooth\/f\/538\/t\/812294\">https:\/\/e2e.ti.com\/support\/wireless-connectivity\/bluetooth\/f\/538\/t\/812294<\/a><\/p>\n\n\n\n<p>&nbsp;<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">&nbsp;HM-10 Serial con Arduino a PC\/Tablet\/m\u00f3vil<\/h2>\n\n\n\n<p>Los m\u00f3dulos HM-10 permiten usar comunicaci\u00f3n serial usando instrucciones AT, tanto para configuraci\u00f3n como para mensajer\u00eda de datos.<\/p>\n\n\n\n<p>Para conectase con el m\u00f3dulo desde el computador se puede usar un arduino como intermediario, pudiendo as\u00ed configurar el dispositivo. Posteriormente, usando un esquema semejante se puede ampliar para enviar\/recibir un mensaje a un dispositivo, por ejemplo una tablet o un m\u00f3vil.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/EsquemaSerialAT01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"979\" height=\"449\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/EsquemaSerialAT01.png\" alt=\"\" class=\"wp-image-2333\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/EsquemaSerialAT01.png 979w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/EsquemaSerialAT01-300x138.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/EsquemaSerialAT01-768x352.png 768w\" sizes=\"auto, (max-width: 979px) 100vw, 979px\" \/><\/a><\/figure>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/people.ece.cornell.edu\/land\/courses\/ece4760\/PIC32\/uart\/HM10\/DSD%20TECH%20HM-10%20datasheet.pdf\">https:\/\/people.ece.cornell.edu\/land\/courses\/ece4760\/PIC32\/uart\/HM10\/DSD%20TECH%20HM-10%20datasheet.pdf<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Conexi\u00f3n con Arduino<\/h2>\n\n\n\n<p>La comunicaci\u00f3n hacia el HM-10 se realiza con un computador y un Arduino, aprovechando la conexi\u00f3n serial del m\u00f3dulo y enviando instrucciones AT.<\/p>\n\n\n\n<p>El m\u00f3dulo tiene dos pines para alimentaci\u00f3n Vcc y GND y los dos pines de comunicaci\u00f3n Tx y Rx.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_Arduinonano01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"876\" height=\"717\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_Arduinonano01.png\" alt=\"\" class=\"wp-image-2337\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_Arduinonano01.png 876w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_Arduinonano01-300x246.png 300w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_Arduinonano01-768x629.png 768w\" sizes=\"auto, (max-width: 876px) 100vw, 876px\" \/><\/a><\/figure>\n\n\n\n<p>La conexi\u00f3n con el Arduino requiere el acondicionamiento de la se\u00f1al de transmisi\u00f3n Tx desde el Arduino a 5V hacia el m\u00f3dulo HM-10 a 3.3V mediante un divisor de voltaje. El divisor de voltaje se implementa con las resistencias R1 de 1K\u03a9 y R2 de 2.2K\u03a9.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Configuraci\u00f3n Serial - Arduino<\/h2>\n\n\n\n<p>La configuraci\u00f3n serial se puede realizar mientras el m\u00f3dulo no se encuentre conectado o \"emparejado\" a otro dispositivo.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"150\" height=\"150\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo03-150x150.png\" alt=\"\" class=\"wp-image-2326\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo03-150x150.png 150w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/CC2541Modulo03-100x100.png 100w\" sizes=\"auto, (max-width: 150px) 100vw, 150px\" \/><\/a><\/figure>\n\n\n\n<p>El led del m\u00f3dulo parpadea en esta modalidad, indicando que no est\u00e1 emparejado y contesta instrucciones de configuraci\u00f3n.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_consola01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"683\" height=\"290\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_consola01.png\" alt=\"\" class=\"wp-image-2341\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_consola01.png 683w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_consola01-300x127.png 300w\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" \/><\/a><\/figure>\n\n\n\n<p>La terminal o \"monitor de Arduino\" se debe configurar a ala misma velocidad que lo indicado en la secci\u00f3n script de Arduino, y se usa env\u00edo de NL y CR (nueva linea y enter)<\/p>\n\n\n\n<p>Ejemplos de instrucciones enviadas desde \"monitor de Arduino\"<\/p>\n\n\n\n<pre class=\"wp-block-code alignwide\"><code>AT+VERSION\n\n+VERSION=Firmware V4.2.0,Bluetooth V4.0 LE\n\nAT+NAME\n\n+NAME=BT05\n\nAT+ROLE\n\n+ROLE=0\n\nAT+HELP\n\n********************************************************************\n* Command             Description\t\t\t           *\n* ---------------------------------------------------------------- *\n* AT                  Check if the command terminal work normally  *\n* AT+RESET            Software reboot\t\t\t\t   *\n* AT+VERSION          Get firmware, bluetooth, HCI and LMP version *\n* AT+HELP             List all the commands\t\t           *\n* AT+NAME             Get\/Set local device name                    *\n* AT+PIN              Get\/Set pin code for pairing                 *\n* AT+PASS             Get\/Set pin code for pairing                 *\n* AT+BAUD             Get\/Set baud rate\t\t                   *\n* AT+LADDR            Get local bluetooth address\t\t   *\n* AT+ADDR             Get local bluetooth address\t\t   *\n* AT+DEFAULT          Restore factory default\t\t\t   *\n* AT+RENEW            Restore factory default\t\t\t   *\n* AT+STATE            Get current state\t\t\t\t   *\n* AT+PWRM             Get\/Set power on mode(low power) \t\t   *\n* AT+POWE             Get\/Set RF transmit power \t\t   *\n* AT+SLEEP            Sleep mode \t\t                   *\n* AT+ROLE             Get\/Set current role.\t                   *\n* AT+PARI             Get\/Set UART parity bit.                     *\n* AT+STOP             Get\/Set UART stop bit.                       *\n* AT+START            System start working.\t\t\t   *\n* AT+IMME             System wait for command when power on.\t   *\n* AT+IBEA             Switch iBeacon mode.\t                   *\n* AT+IBE0             Set iBeacon UUID 0.            \t           *\n* AT+IBE1             Set iBeacon UUID 1.            \t           *\n* AT+IBE2             Set iBeacon UUID 2.            \t           *\n* AT+IBE3             Set iBeacon UUID 3.            \t           *\n* AT+MARJ             Set iBeacon MARJ .            \t           *\n* AT+MINO             Set iBeacon MINO .            \t           *\n* AT+MEA              Set iBeacon MEA .            \t           *\n* AT+NOTI             Notify connection event .                    *\n* AT+UUID             Get\/Set system SERVER_UUID .            \t   *\n* AT+CHAR             Get\/Set system CHAR_UUID .            \t   *\n* -----------------------------------------------------------------*\n* Note: (M) = The command support slave mode only. \t\t   *\n* For more information, please visit http:\/\/www.cyobd.com          *\n* Copyright@2013 www.cyobd.com.   All rights reserved.\t\t   *\n********************************************************************<\/code><\/pre>\n\n\n\n<p>Algunas instrucciones pueden variar en otros m\u00f3dulos con diferente firmware.<br>Lo presentado es solo un ejemplo de lo que se puede hacer en \u00e9ste m\u00f3dulo de www.cyobd.com<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h1 class=\"wp-block-heading\">Instrucciones Arduino<\/h1>\n\n\n<div class=\"wp-block-syntaxhighlighter-code alignwide\"><pre class=\"brush: arduino; title: ; notranslate\" title=\"\">\n\/* Comunicaci\u00f3n Serial por Bluetooth\nBasada en: https:\/\/www.arduino.cc\/en\/Tutorial\/SoftwareSerialExample\n*\/\n\n#include &lt;SoftwareSerial.h&gt;\nint Rx = 10; \/\/conexi\u00f3n al m\u00f3dulo\nint Tx = 11;\nSoftwareSerial moduloBtLE(Rx,Tx);\n\nvoid setup(){\n \u00a0\n \u00a0int baudiosArduino = 9600;\n \u00a0\/\/ Serial USB\n \u00a0Serial.begin(baudiosArduino);\n \u00a0while (!Serial) {\n \u00a0\u00a0\u00a0}\/\/ espera conexi\u00f3n\n \u00a0Serial.println(&quot;\\n USB &lt;-&gt;PC, Listo..!!&quot;);\n \u00a0\n \u00a0\/\/Puerto Serial M\u00f3dulo Bluetooth\n \u00a0int baudiosBtLE = 9600;\n \u00a0moduloBtLE.begin(baudiosBtLE);\n \u00a0moduloBtLE.println(&quot;Listo Bluetooth a Tablet\/m\u00f3vil&quot;);\n \u00a0delay(1000);\n \u00a0moduloBtLE.write(&quot;AT+VERSION&quot;);\n \u00a0delay(1000);\n}\n\nvoid loop(){\n \u00a0\/\/ recibe mensaje Bluetooth y envia por USB a PC\n \u00a0if (moduloBtLE.available()){\n \u00a0\u00a0\u00a0Serial.write(moduloBtLE.read());\n \u00a0\u00a0\u00a0}\n \u00a0\/\/ envia mensaje Serial-USB a Bluetooth\n \u00a0if (Serial.available()){\n \u00a0\u00a0\u00a0moduloBtLE.write(Serial.read());\n \u00a0\u00a0\u00a0}\n \u00a0}\n<\/pre><\/div>\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Conexi\u00f3n a tablet\/m\u00f3vil<\/h2>\n\n\n\n<p>Se realiz\u00f3 la prueba en una tablet con Arduino, descargando el programa \"Serial Bluetooth terminal\" desde la tienda Play Store de Google.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp01.png\"><img loading=\"lazy\" decoding=\"async\" width=\"732\" height=\"227\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp01.png\" alt=\"\" class=\"wp-image-2343\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp01.png 732w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp01-300x93.png 300w\" sizes=\"auto, (max-width: 732px) 100vw, 732px\" \/><\/a><\/figure>\n\n\n\n<p><em><strong>Referencia<\/strong><\/em>: <a href=\"https:\/\/play.google.com\/store\/apps\/details?id=de.kai_morich.serial_bluetooth_terminal&amp;hl=es_EC\">https:\/\/play.google.com\/store\/apps\/details?id=de.kai_morich.serial_bluetooth_terminal&amp;hl=es_EC<\/a><\/p>\n\n\n\n<p>El siguiente paso en la tablet es usando la aplicaci\u00f3n, realizar una b\u00fasqueda de dispositivos, men\u00fa\/dispositivos\/scan, y as\u00ed encontrar el que tiene el nombre de la secci\u00f3n anterior donde se pide AT+NAME, en este caso: \"BT05\".<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"627\" height=\"177\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp02.png\" alt=\"\" class=\"wp-image-2344\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp02.png 627w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp02-300x85.png 300w\" sizes=\"auto, (max-width: 627px) 100vw, 627px\" \/><\/a><\/figure>\n\n\n\n<p>una vez que se han conectado al m\u00f3dulo desde la tablet\/m\u00f3vil se pueden intercambier mensajes con la PC.<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"475\" height=\"303\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp03.png\" alt=\"\" class=\"wp-image-2345\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp03.png 475w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/BtLEAndroidApp03-300x191.png 300w\" sizes=\"auto, (max-width: 475px) 100vw, 475px\" \/><\/a><\/figure>\n\n\n\n<p>y la consola de Arduino<\/p>\n\n\n\n<figure class=\"wp-block-image aligncenter\"><a href=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_consola02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"681\" height=\"302\" src=\"http:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_consola02.png\" alt=\"\" class=\"wp-image-2346\" srcset=\"https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_consola02.png 681w, https:\/\/blog.espol.edu.ec\/girni\/files\/2020\/06\/HM10_consola02-300x133.png 300w\" sizes=\"auto, (max-width: 681px) 100vw, 681px\" \/><\/a><\/figure>\n","protected":false},"excerpt":{"rendered":"<p>Bluetooth LE - CC2541 SOC \/HM-10 CC2541SOC es el componente principal de los m\u00f3dulos HM-10 gen\u00e9ricos que se encuentran en el mercado local. El fabricante del chip es Texas Instruments con algunas versiones CC2540\/2541. https:\/\/www.ti.com\/product\/CC2541 Hoja de datos de CC2541 https:\/\/www.ti.com\/lit\/ds\/symlink\/cc2541.pdf?ts=1591538569573&amp;ref_url=https:\/\/www.ti.com\/product\/CC2541 M\u00f3dulo HM-10 En el mercado se encuentran la versi\u00f3n como m\u00f3dulo HM-10 presentado como [&hellip;]<\/p>\n","protected":false},"author":8043,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1321654],"tags":[],"class_list":["post-2332","post","type-post","status-publish","format-standard","hentry","category-modulos"],"_links":{"self":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2332","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/users\/8043"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/comments?post=2332"}],"version-history":[{"count":13,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2332\/revisions"}],"predecessor-version":[{"id":4857,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/posts\/2332\/revisions\/4857"}],"wp:attachment":[{"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/media?parent=2332"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/categories?post=2332"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.espol.edu.ec\/girni\/wp-json\/wp\/v2\/tags?post=2332"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}