HM-10 Bluetooth LE (4.0) wireless module example

Location:https://github.com/theCore-embedded/example_hm10_bluetooth
External HW:UART-to-USB converter attached to the STM32F4 Discovery, HM-10 module, Android device

This example demonstrates using of HM-10 Bluetooth BTLE module using theCore. With Bluetooth application on Android device it is possible to establish communication link between the smartphone and any embedded device with HM-10 attached.

Supported targets (boards)

Target name Configuration file Description
stm32f4_disc stm32f4_discovery.json STM32F4 discovery board

Wiring

STM32F4 Discovery board

UART, HM-10 and stm32f4discovery board wiring
  1. Connect USART2 and power to HM-10 on the Discovery board using following pins:

    PA2 (USART2 TX) module’s RX
    PA3 (USART2 RX) module’s TX
    +3.3V module’s VDD
    GND module’s GND
  2. Attach any preferable UART-to-USB converter such as this module according to following pinout:

    PD8 (USART3 TX) module’s RX
    PD9 (USART3 RX) module’s TX
    GND module’s GND

Installing additional software on Android smartphone

BLE Terminal download app

To be able to communicate with HM-10 module via Android smartphone, a special application must be installed.

Open Play Store and find BLE Terminal app. Install it as usual.

Preparing

  1. Install and initialize theCore (if not done previously):

    pip3 install tcore
    tcore bootstrap
    
  2. Download the example:

    tcore init --remote https://github.com/theCore-embedded/example_hm10_bluetooth
    
  3. Step into the project directory:

    cd example_hm10_bluetooth
    

Building

tcore compile --target stm32f4_disc

Running

  1. Launch minicom with device associated with USB <-> UART converter. (/dev/ttyUSB0 here used as an example):

    # From new terminal
    tcore runenv "minicom -D /dev/ttyUSB0"
    

    Or the same, but with superuser permissions:

    # From new terminal
    tcore runenv --sudo "minicom -D /dev/ttyUSB0"
    
  2. Determine stm32f4discovery board revision.

    If you don’t remember your board revision, check FAQ section How to check STM32F4 Discovery board revision?.

  3. Launch flash command in separate terminal, as shown below.

    For old STM32F407G-DISC boards, with STLINK/V2:

    tcore flash --sudo
    

    For new STM32F407G-DISC1 boards, with STLINK/V2.1:

    tcore flash --sudo --debugger-config stlink-v2.1
    
  4. Check minicom terminal. You should be able to see:

    Welcome to theCore
    the_core v0.3.236 b9c05be-dirty
    Starting HM-10 Bluetooth example...
    Bytes sent: 16
    Bytes received: 0
    Bytes sent: 16
    Bytes received: 0
    Bytes sent: 16
    Bytes received: 0
    
  5. Open BLE Terminal on your smartphone. You must be able to see nearby BT devices:

    BLE Terminal app main window
  6. Select HM-10 device.

  7. You will be presented with a terminal window where the data sent from device is displayed

  8. Now, type something to the terminal prompt in BLE Terminal app and tap “Send ASCII” button:

    BLE Terminal and HM-10 output window
  9. Check minicom terminal again:

    Bytes received: 0
    Bytes sent: 16
    Bytes received: 16
    data in return