> **Source:** Core Electronics is an Australian maker-electronics retailer and manufacturer based in Newcastle, NSW, run by a team of makers and educators. We design and manufacture our own product lines (PiicoDev, CE originals) and are official retailers for iconic maker and industrial brands including Raspberry Pi, Arduino, Adafruit, SparkFun and DFRobot. Orders ship Australia-wide from our Newcastle warehouse. Prices are in AUD and include GST. Pricing, stock and dispatch on this page are generated from the store's live catalog. Full machine-readable index: https://core-electronics.com.au/llms.txt

# Makerverse LoRa-E5 Breakout

**Type:** Product page · **SKU:** CE09196 · **Brand:** [Makerverse](https://core-electronics.com.au/brands/makerverse-brand)
**Page:** https://core-electronics.com.au/makerverse-lora-e5-breakout-module.html ([markdown](https://core-electronics.com.au/makerverse-lora-e5-breakout-module.html.md))

Long-range and low power data transmission for remote projects.

## Pricing

- **Price:** $30.60 (inc GST) — $27.82 AUD, exc GST
- **Quantity discounts:** 4+ $26.43 (exc GST) · 12+ $25.04 (exc GST) · 50+ $23.65 (exc GST)

## Availability & dispatch

- In stock, ships same business day if ordered before 2PM (Australia/Sydney).
- We can dispatch 23 today, and up to 500 more in 6–42 days.

## Restrictions

**For use in Australia**

- Operate only in bands and with settings that are permitted for your location and application. Check this product’s supported frequencies in the description/specs.
- If you intend to operate outside shared/licence‑exempt conditions (e.g. in other bands, at higher power, with high‑gain antennas, or extended duty cycles), you must have the appropriate authorisation.
 
**For use in other regions**

- Follow the spectrum rules for your country/region and select frequencies and settings accordingly.

A declaration of use will need to be submitted during checkout.

## How to buy

- **Build a cart:** compose `https://core-electronics.com.au/cart/link?items=CE09196:1` (comma-separated SKU:qty pairs) and share the link. Opening it shows a confirmation page with live pricing and stock before anything is added to the cart.
- **Verify the cart first:** fetch `https://core-electronics.com.au/cart/link/CE09196:1.md` for live line prices (inc & exc GST, quantity discounts applied), stock and dispatch estimates, and totals. Append `/to/{AU-postcode}` (or `/to/{country-code}:{postcode}`) before `.md` for delivery options and prices to that destination. Unknown, retired, or out-of-stock SKUs are flagged. (Query form `cart/link.md?items=...` also works but some robots parsers refuse query strings here.)
- **Checkout** is completed on-site and includes a captcha at the payment step. Share the cart link; checkout takes it from there.
- **Search the catalogue:** `https://core-electronics.com.au/search/{query}.md` (URL-encode the query; pages 2-3 at `search/{query}/{page}.md`; `search.md?q=` also works)
- **Payment methods, purchase orders, policies and contact details:** https://core-electronics.com.au/llms.txt
## Description

The **Makerverse LoRa-E5 Breakout** is a compact LoRa radio, ready to bring long-range data transmission to your project.

Connect it to your microcontroller via UART or program it directly using STM32Cube. The LoRa-E5 Breakout provides labelled breakouts, RESET and BOOT buttons, and comes packaged with headers to get you started quickly. Power the Breakout directly from 3.3V or use the on-board regulator and power with up to 5.5V.

There are two ways to connect an antenna: Use the uFL connector to connect directly to an [antenna](https://core-electronics.com.au/915mhz-ufl-antenna.html) or patch-lead; or bring-your-own [SMA connector](https://core-electronics.com.au/sma-connector.html) and resolder the antenna jumper resistor.

### Ways to use the Makerverse LoRa-E5 Breakout

- Basic: Connect to a computer with a [USB-UART converter](https://core-electronics.com.au/usb-to-uart-converter-cp2102.html) and control with AT Commands: Useful enough for learning how AT commands work, prototyping, and getting a "Hello, World!"
- Maker: Connect to a microcontroller via UART and control with AT Commands. Check the examples provided below.
- Super Advanced: User Application Development using the STM32Cube SDK.
 
### Features

The Makerverse LoRa-E5 Breakout relies on a [LoRa-E5 STM32WLE5JC Module](https://www.seeedstudio.com/LoRa-E5-Wireless-Module-p-4745.html), which is an FCC- and CE-certified module that combines a LoRa radio and microcontroller. It is powered by an ARM Cortex-M4 and Semtech SX126X LoRa chip, and supports LoRaWAN frequency bands worldwide with (G)FSK, BPSK, (G)MSK, and LoRa modulations.

- GPIOs broken out from the Lora-E5 STM32WLE5JC
- Global LoRaWAN® and LoRa frequency plans supported
- Long-distance transmission range up to 10km
- Power from 3.3 or 5V.
- Convenient RESET and BOOT buttons on board
 
### Technical Specifications

- Dimensions: 25.4 x 45.72 mm
- Mounting Holes: 3x 3.2 mm on a 2.54 mm (0.1") grid. Spacing: 17.78 x 38.1 mm
- Supply Voltage: 3.3 - 5.5 V
- Logic Voltage: 3.3 V
 
*Note: This product comes with headers as shown in the product photo. They are NOT pre-soldered to the board.*

### Example Code (MicroPython)

- [Publish Data to The Things Network (TTN)](https://core-electronics.com.au/#ABBKHRH)
- [P2P communication](https://core-electronics.com.au/#QH8L09C)

The following script has been tested with a [Raspberry Pi Pico](https://core-electronics.com.au/raspberry-pi/pico.html#category_2118). It joins The Things Network (TTN) and publishes some test data. Read the [AT Command Specification](https://core-electronics.com.au/attachments/uploads/lora-e5-at-command-specification-v1.0.pdf) to learn more.

```

# Connect to The Things Network (TTN) and publish some test data
#
# How to get started:
#   • Create an account on cloud.thethings.network
#   • Create an application
#   • Run this script to get the JoinEUI and DeviceEUI
#   • On your applicaiton, generate an AppKey and paste it as a string in the code below.
#   • Run this script again
#   • Monitor your applicaiton console and look for a test message being received on TTN
#
# This demo is based off the Getting Started Guide by seeedstudio:
# https://wiki.seeedstudio.com/LoRa-E5_STM32WLE5JC_Module/#getting-started
#
# Refer to the AT Command Specification
# https://core-electronics.com.au/attachments/uploads/lora-e5-at-command-specification-v1.0.pdf

# Put your key here (string). This should match the AppKey generated by your application.
#For example: app_key = 'E08B834FB0866939FC94CDCC15D0A0BE'
app_key = 'None'

# Regional LoRaWAN settings. You may need to modify these depending on your region.
# If you are using AU915: Australia
band='AU915'
channels='8-15'
DR='0'

# If you are using US915
# band='US915'
# channels='8-15'
# DR='1'
# 
# If you are using EU868
# band='EU868'
# channels='0-2'
# DR='0'

from machine import UART, Pin
from utime import sleep_ms
from sys import exit

uart1 = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5))
join_EUI = None   # These are populated by this script
device_EUI = None

### Function Definitions

def receive_uart():
    '''Polls the uart until all data is dequeued'''
    rxData=bytes()
    while uart1.any()>0:
        rxData += uart1.read(1)
        sleep_ms(2)
    return rxData.decode('utf-8')

def send_AT(command):
    '''Wraps the "command" string with AT+ and \r\n'''
    buffer = 'AT' + command + '\r\n'
    uart1.write(buffer)
    sleep_ms(300)

def test_uart_connection():
    '''Checks for good UART connection by querying the LoRa-E5 module with a test command'''
    send_AT('') # empty at command will query status
    data = receive_uart()
    if data == '+AT: OK\r\n' : print('LoRa radio is ready\n')
    else:
        print('No LoRa-E5 detected\n')
        exit()

def get_eui_from_radio():
    '''Reads both the DeviceEUI and JoinEUI from the device'''
    send_AT('+ID=DevEui')
    data = receive_uart()
    device_EUI = data.split()[2]

    send_AT('+ID=AppEui')
    data = receive_uart()
    join_EUI = data.split()[2]

    print(f'JoinEUI: {join_EUI}\n DevEUI: {device_EUI}')
    
def set_app_key(app_key):
    if app_key is None or app_key == 'None':
        print('\nGenerate an AppKey on cloud.thethings.network and enter it at the top of this script to proceed')
        exit()

    send_AT('+KEY=APPKEY,"' + app_key + '"')
    receive_uart()
    print(f' AppKey: {app_key}\n')

def configure_regional_settings(band=None, DR='0', channels=None):
    ''' Configure band and channel settings'''
    
    send_AT('+DR=' + band)
    send_AT('+DR=' + DR)
    send_AT('+CH=NUM,' + channels)
    send_AT('+MODE=LWOTAA')
    receive_uart() # flush
    
    send_AT('+DR')
    data = receive_uart()
    print(data)

def join_the_things_network():
    '''Connect to The Things Network. Exit on failure'''
    send_AT('+JOIN')
    data = receive_uart()
    print(data)

    status = 'not connected'
    while status == 'not connected':
        data = receive_uart()
        if len(data) > 0: print(data)
        if 'joined' in data.split():
            status = 'connected'
        if 'failed' in data.split():
            print('Join Failed')
            exit()
        
        sleep_ms(1000)
        
def send_message(message):
    '''Send a string message. The user's message string is wrapped in double quotes by this funciton'''
    send_AT('+MSG="' + message + '"')

    done = False
    while not done:
        data = receive_uart()
        if 'Done' in data or 'ERROR' in data:
            done = True
        if len(data) > 0: print(data)
        sleep_ms(1000)
        
def send_hex(message):
    '''Send a data message in hex format. The user's message string is wrapped in double quotes by this funciton'''
    send_AT('+MSGHEX="' + message + '"')

    done = False
    while not done:
        data = receive_uart()
        if 'Done' in data or 'ERROR' in data:
            done = True
        if len(data) > 0: print(data)
        sleep_ms(1000)

##########################################################
#        
# The main program starts here
#
##########################################################

test_uart_connection()

get_eui_from_radio()

set_app_key(app_key)

configure_regional_settings(band=band, DR=DR, channels=channels)

join_the_things_network()

# Send example data
print("sending test messages")
send_message("Hello, World!")
send_hex("00 11 22 33 44 55 66 77 88 99 AA BB CC DD EE FF")

```

It's possible to send simple P2P messages between LoRa Breakouts as follows

Transmitter Code

```

# P2P Transmitter Example
# Transmit test data direct to another Makerverse LoRa Breakout

from machine import UART, Pin
from utime import sleep_ms, ticks_ms

sleep_ms(1000)
uart = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5), timeout=1000)

def receive_uart():
    '''Polls the uart until all data is dequeued'''
    rxData=bytes()
    while uart.any()>0:
        rxData += uart.read(1)
        sleep_ms(2)
    return rxData.decode('utf-8')

def send_AT(command):
    '''Wraps the "command" string with AT+ and \r\n'''
    buffer = 'AT' + command + '\r\n'
    uart.write(buffer)
#     sleep_ms(300)
    uart.readline()

def echo():
    while uart.any() > 0:
        rxData = uart.readline()
        print(rxData.decode('utf-8'))

send_AT('+MODE=TEST')
send_AT('+TEST=RFCFG,915,SF7')

data = 0
last_transmit = 0
transmit_period = 500

while True:
    now = ticks_ms()
    if now - last_transmit > transmit_period:
        last_transmit = now
        print("Send data:",data)
        send_AT('+TEST=TXLRPKT,"{}"\n'.format(data))  # send test data
        data += 1 # increment and loop test-data
        data = data % 255
    
    echo() # show debug data from LoRa-E5 module
    
    
    sleep_ms(600)

```

Receiver Code

```

# P2P Receiver Example
# Receive test data from another Makerverse LoRa Breakout

from machine import UART, Pin
from utime import sleep_ms

sleep_ms(1000)
uart = UART(1, baudrate=9600, tx=Pin(4), rx=Pin(5))

def receive_uart():
    '''Polls the uart until all data is dequeued'''
    rxData=bytes()
    while uart1.any()>0:
        rxData += uart1.read(1)
        sleep_ms(2)
    return rxData.decode('utf-8')

def send_AT(command):
    '''Wraps the "command" string with AT+ and \r\n'''
    buffer = 'AT' + command + '\r\n'
    uart.write(buffer)
    sleep_ms(300)

def receive():
    uart.write('at+test=rxlrpkt\n')
    out = ''
    rxData=bytes()
    while uart.any()>0:
        rxData += uart.readline()
    data = rxData.decode('utf-8')
    out = data.replace('+TEST: RXLRPKT','') # strip AT command formatting
    return out

send_AT('+MODE=TEST')
send_AT('+TEST=RFCFG,915,SF7')

sleep_ms(100)

while True:   
    raw_data = receive() # show debug data from LoRa-E5 module
    
    if len(raw_data) > 2:
        print(raw_data)
    sleep_ms(200)

```

**Resources**

- [AT Command Specification](https://core-electronics.com.au/attachments/uploads/lora-e5-at-command-specification-v1.0.pdf)
- [LoRa-E5 STM32WLE5JC Datasheet](https://core-electronics.com.au/attachments/uploads/lora-e5-module-datasheet-v1.0.pdf)
- [Hardware Repository](https://github.com/CoreElectronics/CE-Makerverse-LoRa-E5-Breakout-Module)
- [Schematic](https://github.com/CoreElectronics/CE-Makerverse-LoRa-E5-Breakout-Module/raw/main/Documents/schematic.pdf)
 
![](https://core-electronics.com.au/media/wysiwyg/Makerverse-LoRa-E5-Breakout.jpg)![](https://core-electronics.com.au/media/wysiwyg/Makerverse-LoRa-E5-Breakout.jpg)![](https://core-electronics.com.au/media/wysiwyg/product_info/makerverse-labs-banner.jpg)![](https://core-electronics.com.au/media/wysiwyg/product_info/makerverse-labs-banner.jpg)

## Guides for this product

- [Raspberry Pi Pico with LoRaWAN and The Things Network - Makerverse LoRa-E5 Module - Transmit Weather Data into IoT](https://core-electronics.com.au/guides/wireless/lora-pico-the-things-network/)

## Videos for this product

- [Raspberry Pi Pico with LoRaWAN and The Things Network - Makerverse LoRa-E5 Module](https://core-electronics.com.au/videos/-raspberry-pi-pico-with-lorawan-and-the-things-network-makerverse-lora-e5-module)
- [Weatherproof LoRa Environmental Monitor - Makerverse LoRa-E5 and Pico Project - The Things Network and DataCake](https://core-electronics.com.au/videos/weatherproof-lora-environmental-monitor-makerverse-lora-e5-and-pico-project-the-things-network-and-datacake)
- [The Factory \| PiicoDev Now Supporting ESP32 & January Updates](https://core-electronics.com.au/videos/the-factory-piicodev-now-supporting-esp32-january-updates)

## Images

- [Product image 1](https://core-electronics.com.au/media/catalog/product/c/e/ce09196-makerverse-lora-e5-breakout.jpg)
