{"id":175,"date":"2017-10-15T20:29:07","date_gmt":"2017-10-15T18:29:07","guid":{"rendered":"https:\/\/arduinoforlammers.wordpress.com\/?p=175"},"modified":"2021-12-21T22:10:31","modified_gmt":"2021-12-21T21:10:31","slug":"bluetooth-hc05-arduino-uno-android","status":"publish","type":"post","link":"https:\/\/arduino.net.pl\/index.php\/bluetooth-hc05-arduino-uno-android\/","title":{"rendered":"Modu\u0142 bluetooth HC-05 + Arduino\/ESP8266\/ESP32  + Android"},"content":{"rendered":"\n<div class=\"wp-block-image is-style-default\"><figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/1-HC-05-1024x680.jpg\" alt=\"\"\/><figcaption>Modu\u0142 HC-05<\/figcaption><\/figure><\/div>\n\n\n\n<p>Bluetooth HC-05 to \u015bwietny modu\u0142 umo\u017cliwiaj\u0105cy komunikacj\u0119 w obie strony z innym modu\u0142em albo z telefonem czy tabletem wykorzystuj\u0105cym komunikacj\u0119 BT. Aby przygotowa\u0107 modu\u0142 do transmisji musimy ustawi\u0107 go tak, by przyjmowa\u0142 komendy AT. Poni\u017cej pokazuj\u0119 jak to zrobi\u0107 wykorzystuj\u0105c niezawodne Arduino Uno.<br><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Komendy AT<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\n#include &amp;lt;SoftwareSerial.h&gt;\nSoftwareSerial mySerial(10, 11); \/\/ RX, TX Arduino\n\/\/SoftwareSerial mySerial(D2, D3); \/\/ RX, TX ESP8266\n\nvoid setup() {\nSerial.begin(115200);\nSerial.println();\nSerial.println(&quot;Wpisz komendy AT:&quot;);\nmySerial.begin(38400); \/\/ szybko\u015b\u0107 transmisji dla AT \n}\n\nvoid loop()\n{\nif (mySerial.available())\nSerial.write(mySerial.read());\nif (Serial.available())\nmySerial.write(Serial.read());\n}\n<\/pre><\/div>\n\n\n<p>Wgrywamy program do Arduino Uno:<\/p>\n\n\n\n<!--more-->\n\n\n\n<h5 class=\"wp-block-heading\">Pod\u0142\u0105czamy modu\u0142 HC-05 &nbsp;do Arduino &nbsp;w nast\u0119puj\u0105cy spos\u00f3b:<\/h5>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td>HC-05<\/td><td>Arduino<\/td><td>ESP8266<\/td><\/tr><tr><td>VCC<\/td><td>+5V<\/td><td>+5V<\/td><\/tr><tr><td>GND<\/td><td>GND<\/td><td>GND<\/td><\/tr><tr><td>TX (przez konwerter)<\/td><td>PIN 10 ( RX )<\/td><td>D2 (RX)<\/td><\/tr><tr><td>RX&nbsp;(przez konwerter)<\/td><td>PIN 11 ( TX )<\/td><td>D3 (TX)<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/Zrzut-ekranu-2017-10-20-o-21.02.59.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"364\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/Zrzut-ekranu-2017-10-20-o-21.02.59-1024x364.png\" alt=\"\" class=\"wp-image-769\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/Zrzut-ekranu-2017-10-20-o-21.02.59-1024x364.png 1024w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/Zrzut-ekranu-2017-10-20-o-21.02.59-300x107.png 300w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/Zrzut-ekranu-2017-10-20-o-21.02.59-768x273.png 768w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/Zrzut-ekranu-2017-10-20-o-21.02.59.png 1545w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption>Spos\u00f3b pod\u0142\u0105czenie HC-05 do Arduino NANO i UNO przez konwertery poziom\u00f3w logicznych<\/figcaption><\/figure>\n\n\n\n<p>Podczas pod\u0142\u0105czenia zasilania do modu\u0142u nale\u017cy przytrzyma\u0107 przycisk znajduj\u0105cy si\u0119 przy pinach. W\u00f3wczas dioda zacznie miga\u0107 z mniejsz\u0105 cz\u0119stotliwo\u015bci\u0105. To oznacza&nbsp;wej\u015bcie w stan umo\u017cliwiaj\u0105cy konfiguracj\u0119 AT.<\/p>\n\n\n\n<p>Otwieramy&nbsp;monitor portu szeregowego w Arduino IDE i wpisujemy komend\u0119 &#8222;AT&#8221; i wciskamy ENTER. Nale\u017cy pami\u0119ta\u0107, \u017ceby ustawi\u0107 opcj\u0119 &#8222;Both NL &amp; CR&#8221; &nbsp;i &#8222;Autoscroll&#8221;.<br>Je\u015bli wszystko dzia\u0142a poprawnie, powinni\u015bmy otrzyma\u0107 w oknie odpowied\u017a &#8222;OK&#8221;<\/p>\n\n\n\n<blockquote>\n<h3>KILKA UWAG!<\/h3>\n<p>Jeden z moich modu\u0142\u00f3w reagowa\u0142 na ma\u0142e litery komend inny nie. Lepiej pisa\u0107 komendy AT WIELKIMI LITERAMI.<\/p>\n<p>Niekt\u00f3re komendy wymagaj\u0105 dodatkowego dzia\u0142ania aby si\u0119 wy\u015bwietla\u0142y. Jeden z modu\u0142\u00f3w nie chcia\u0142 wy\u015bwietla\u0107 nazwy &#8222;AT+NAME?&#8221;, dopiero jednoczesne wci\u015bni\u0119cie przycisku (tego samego, kt\u00f3ry wprowadza w tryb AT) spowodowa\u0142o, \u017ce nazwa pojawi\u0142a si\u0119 na monitorze portu szeregowego Arduino IDE.<\/p>\n<\/blockquote>\n\n\n\n<h3 class=\"wp-block-heading\">Inne komendy AT:<\/h3>\n\n\n\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/AT-commands-list.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"611\" height=\"778\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/AT-commands-list.jpg\" alt=\"\" class=\"wp-image-781\" srcset=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/AT-commands-list.jpg 611w, https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/AT-commands-list-236x300.jpg 236w\" sizes=\"auto, (max-width: 611px) 100vw, 611px\" \/><\/a><\/figure>\n\n\n\n<p><a href=\"http:\/\/elecfreaks.com\/estore\/download\/EF03080-HC-0305%20serail%20module%20AT%20commamd%20set%20201104%20revised.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Pe\u0142en zestaw komend AT dla modu\u0142u HC-05<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Android i HC-05.&nbsp;Komunikacja w obie strony.<\/h2>\n\n\n\n<p>Du\u017ce podzi\u0119kowania ElektroPrzewodnikowi za \u015bwietny<a href=\"https:\/\/youtu.be\/8DOg8onUvks\" target=\"_blank\" rel=\"noopener noreferrer\"> film instrukta\u017cowy&nbsp;<\/a>na YouTube.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Pod\u0142\u0105czenie:<\/h3>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/arduino.net.pl\/wp-content\/uploads\/2017\/04\/Zrzut-ekranu-2017-10-24-o-22.23.27.png\" alt=\"\"\/><figcaption>Po\u0142\u0105czenie Arduino Uno z HC-05 przez konwerter poziom\u00f3w.<\/figcaption><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">I kod programu.<\/h3>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\n\/*\n * Program, kt\u00f3ry lekko zmieni\u0142em\n * napisa\u0142 ElektroPrzewodnik\n * https:\/\/youtu.be\/8DOg8onUvks\n *\/\n\nvoid setup() {\n  Serial.begin(9600);\n  pinMode(8, INPUT_PULLUP);\n  pinMode(9, INPUT_PULLUP);\n}\n\nchar cmd&#x5B;100];\nchar cmdIndex;\nboolean prz1, prz2, prz1_old, prz2_old = true;\n\nvoid exeCmd()  {\n\n  if (cmd&#x5B;0] == &#039;s&#039;) {\n    unsigned int val = atol(cmd + 2);\n    Serial.println(val);\n  }\n}\n\nvoid loop() {\n  if (Serial.available() &gt; 0)\n  {\n    char c = (char)Serial.read();\n    if (c == &#039;\\n&#039;) {\n      cmd&#x5B;cmdIndex] = 0;\n      exeCmd();\n      cmdIndex = 0;\n    } else {\n      cmd&#x5B;cmdIndex] = c;\n      if (cmdIndex &amp;lt; 99) cmdIndex++;\n    }\n  }\n\n  prz1 = digitalRead(8);\n  prz2 = digitalRead(9);\n\n  if (prz1 != prz1_old)\n  {\n    prz1_old = prz1;\n    if (prz1)\n    Serial.println(&quot;led1 0\\n&quot;);\n    else\n    Serial.println(&quot;led1 1\\n&quot;);\n  }\n\n  if (prz2 != prz2_old)\n  {\n    prz2_old = prz2;\n    if (prz2)\n    Serial.println(&quot;led2 0\\n&quot;);\n    else\n    Serial.println(&quot;led2 1\\n&quot;);\n  }\n}\n<\/pre><\/div>\n\n\n<p><em>Pami\u0119tamy \u017ceby przy \u0142adowaniu programu od\u0142\u0105czy\u0107 RX .<\/em><\/p>\n\n\n\n<p>Aplikacja na Arduino to <a href=\"https:\/\/www.youtube.com\/channel\/UCuChsnBDsbz-3okYHiIqHSw\" target=\"_blank\" rel=\"noopener noreferrer\">RoboRemoFree<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">HC-05 i ESP8266<\/h2>\n\n\n\n<h2 class=\"wp-block-heading\">KOD<\/h2>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\n#include &amp;lt;SoftwareSerial.h&gt;\nSoftwareSerial SerialBT(D2, D3); \/\/ RX, TX\n\nvoid setup() {\n  Serial.begin(38400);\n  SerialBT.begin(38400); \n  Serial.println(&quot;The device started, now you can pair it with bluetooth!&quot;);\n}\n\nvoid loop() {\n  if (Serial.available()) {\n    SerialBT.write(Serial.read());\n  }\n  if (SerialBT.available()) {\n    Serial.write(SerialBT.read());\n  }\n  delay(20);\n}\n<\/pre><\/div>\n\n\n<p>ESP8266 z HC-05 \u0142\u0105czymy jak pokaza\u0142em w tabelce. Moje modu\u0142y s\u0105 na VCC = 5V. Oczywi\u015bcie nie potrzeba konwertor\u00f3w, bo logika pin\u00f3w ESP8266 dzia\u0142a na 3.3V, co jest bardzo przyjemne w tym wypadku. Kod powy\u017cej umo\u017cliwia konwersacj\u0119 w obie strony na przyk\u0142ad z programem <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=de.kai_morich.serial_bluetooth_terminal&amp;hl=en&amp;gl=US\" target=\"_blank\">Serial Bluetooth Terminal<\/a><\/strong> na Androidzie. Pami\u0119ta\u0107 nale\u017cy, by dla szeregowego monitora Arduino ustawi\u0107 szybko\u015b\u0107 transmisji na 38400. Jak te\u017c dla transmisji modu\u0142u HC-05. Inaczej zobaczymy krzaczki.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">HC-05 i ESP32<\/h2>\n\n\n\n<p>ESP32 jak wiemy ma wbudowany modu\u0142 BT. Je\u015bli u\u017cyjemy klasycznej jego formy (takiej jak HC-05) program kontaktuj\u0105cy si\u0119 z <strong><a rel=\"noreferrer noopener\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=de.kai_morich.serial_bluetooth_terminal&amp;hl=en&amp;gl=US\" target=\"_blank\">Serial Bluetooth Terminal<\/a><\/strong> b\u0119dzie banalnie prosty:<\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: plain; light: false; title: Kod:; toolbar: true; notranslate\" title=\"Kod:\">\n\/\/This example code is in the Public Domain (or CC0 licensed, at your option.)\n\/\/By Evandro Copercini - 2018\n\/\/\n\/\/This example creates a bridge between Serial and Classical Bluetooth (SPP)\n\/\/and also demonstrate that SerialBT have the same functionalities of a normal Serial\n\n\/\/#include \"BluetoothSerial.h\"\n\/\/\n\/\/#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)\n\/\/#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it\n\/\/#endif\n\/\/\n\/\/BluetoothSerial SerialBT;\n\nvoid setup() {\n  Serial.begin(115200);\n  \/\/SerialBT.begin(\"ESP32test\"); \/\/Bluetooth device name\n  Serial.println(\"The device started, now you can pair it with bluetooth!\");\n}\n\nvoid loop() {\n  if (Serial.available()) {\n    SerialBT.write(Serial.read());\n  }\n\/\/  if (SerialBT.available()) {\n\/\/    Serial.write(SerialBT.read());\n\/\/  }\n  delay(20);\n}\n<\/pre><\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Bluetooth HC-05 to \u015bwietny modu\u0142 umo\u017cliwiaj\u0105cy komunikacj\u0119 w obie strony z innym modu\u0142em albo z telefonem czy tabletem wykorzystuj\u0105cym komunikacj\u0119 BT. Aby przygotowa\u0107 modu\u0142 do transmisji musimy ustawi\u0107 go tak,&#8230;<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2,80,5,37],"tags":[12],"class_list":["post-175","post","type-post","status-publish","format-standard","hentry","category-arduino","category-esp32","category-esp8266","category-komunikacja","tag-hc05"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/175","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/comments?post=175"}],"version-history":[{"count":26,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/175\/revisions"}],"predecessor-version":[{"id":4752,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/posts\/175\/revisions\/4752"}],"wp:attachment":[{"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/media?parent=175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/categories?post=175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/arduino.net.pl\/index.php\/wp-json\/wp\/v2\/tags?post=175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}