<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Episode 9: GUI-O and HM-10 BLE]]></title><description><![CDATA[<p dir="auto">The following example shows how to connect GUI-O app with HM-10 Bluetooth Low Energy (BLE) module. Arduino Uno is used as an intermediary between the HM-10 and PC serial terminal.</p>
<p dir="auto"><strong>Software prerequisites:</strong></p>
<ul>
<li>
<p dir="auto">Arduino IDE (<a href="https://www.arduino.cc/en/software" rel="nofollow ugc">https://www.arduino.cc/en/software</a>)</p>
</li>
<li>
<p dir="auto">GUI-O application (<a href="https://play.google.com/store/apps/details?id=com.guio.guioapp" rel="nofollow ugc">https://play.google.com/store/apps/details?id=com.guio.guioapp</a>), updated to at least <strong>v1.0.25</strong></p>
</li>
<li>
<p dir="auto">For additional information about the GUI-O application, download the developer manual from <a href="https://www.gui-o.com/" rel="nofollow ugc">https://www.gui-o.com/</a></p>
</li>
</ul>
<p dir="auto"><strong>Components needed:</strong></p>
<ul>
<li>HM-10 BLE module</li>
<li>Arduino Uno</li>
</ul>
<p dir="auto"><strong>The entire tutorial is split into various steps. All necessary information is given in each step</strong>.</p>
<h3>1. CONNECT THE COMPONENTS</h3>
<p dir="auto">Connect the components as shown in the schematic below. Note that the Arduino Uno transmit pin (pin "D3") uses a voltage divider to reduce 5V to roughly 3.3V.</p>
<p dir="auto"><img src="https://i.imgur.com/p7Ov5UVl.png" alt="schematic.png" class=" img-fluid img-markdown" /></p>
<h3>2. UPLOAD THE SOURCE CODE</h3>
<p dir="auto">The source code is really simple and has inline comments, describing the parts of the code. You can copy the source code from the snippet below, or download it <a href="https://drive.google.com/uc?export=download&amp;id=14V0jg_0fdsQqDcxg8kpotrFxjukQPTgE" rel="nofollow ugc">here</a>.</p>
<p dir="auto">Upload the code to your Arduino Uno board (make sure that the correct board and upload port are selected).</p>
<pre><code>/*
 * GUI-O BLE HM-10 example (using HM-10 and Arduino Uno)
 *
 * Copyright (C) 2022, GUI-O Team
 *
 * SPDX-License-Identifier: BSD-3-Clause
 */

#include &lt;SoftwareSerial.h&gt;

// communicating with HM-10 using Arduino Uno 
// via software serial, so set it up (Rx - pin2, Tx - pin3)
SoftwareSerial bt(2, 3);

void setup() {
  // 1. Arduino Uno sends data to HM-10 (via PC teriminal)
  // 2. Arduino Uno receives data from HM-10
  Serial.begin(115200);
  
  // 1. HM-10 sends data Arduino Uno
  // 2. HM-10 receives data from Arduino Uno
  bt.begin(9600);
}

void loop() {
  // listen for HM-10 data
  bt.listen();

  // if HM-10 has data, send it to Arduino Uno to be displayed on PC terminal
  while(bt.available() &gt; 0) {
    Serial.write(bt.read());
  }

  // if Arduino Uno has data (via PC terminal), send it to HM-10
  if(Serial.available()) {
    delay(10);
    bt.write(Serial.read());
  }
}
</code></pre>
<h3>3. ESTABLISH CONNECTION</h3>
<ol>
<li>
<p dir="auto">Open GUI-O app, navigate to settings and select "Connections -&gt; Bluetooth LE"</p>
</li>
<li>
<p dir="auto">Search for BLE devices (enable Bluetooth and Location services, if prompted)</p>
</li>
<li>
<p dir="auto">Select HM-10 module (named HMSoft or similar)</p>
</li>
<li>
<p dir="auto">Wait for successful connection</p>
</li>
<li>
<p dir="auto">Open any serial terminal on PC (e.g., Arduino Serial Monitor)</p>
</li>
<li>
<p dir="auto">Close the settings menu and press the <strong>Initialize</strong> button (see image below) from the GUI-O application home screen and observe the result on serial terminal on PC</p>
</li>
</ol>
<p dir="auto"><img src="https://i.imgur.com/DDEHAR7l.jpg" alt="initialize_button.jpg" class=" img-fluid img-markdown" /></p>
<ol start="7">
<li>Send any valid command (see example below) via serial terminal on PC and observe the result in GUI-O app</li>
</ol>
<p dir="auto"><strong>EXAMPLE COMMAND</strong>:  "<strong>|TG UID:toggle X:50 Y:50</strong>" (omitting the quotes). Make sure all commands are terminated by carriage return (<strong>\r</strong>) and line feed (<strong>\n</strong>). See the GUI-O manual for all supported commands.</p>
<hr />
<p dir="auto">If you have any questions or run into any problems, please let me know!</p>
<p dir="auto">Best regards,<br />
kl3m3n</p>
]]></description><link>https://forum.gui-o.com/topic/94/episode-9-gui-o-and-hm-10-ble</link><generator>RSS for Node</generator><lastBuildDate>Mon, 11 May 2026 00:02:26 GMT</lastBuildDate><atom:link href="https://forum.gui-o.com/topic/94.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Dec 2022 17:58:03 GMT</pubDate><ttl>60</ttl></channel></rss>