Makerverse LoRa-E5 Breakout

Rating:
100% of 100
SKU: CE09196 Brand: Makerverse Guides (1)
CE Original

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

$35.25 AUD, inc GST
$32.05 AUD, exc GST

In stock, ships same business day if ordered before 2PM
Delivered by Tue, 30th of Apr

Quantity Discounts:

  • 4-12 $28.85 (exc GST)
  • 12+ $27.24 (exc GST)
  • 50+ $20.83 (exc GST)

Restrictions apply to this RF Equipment for use in Australia:

  • Only to be operated on 433Mhz / 915-930Mhz / 2.4Ghz  (check the product description for compatible frequency ranges).
  • If operating outside of shared frequencies or in such a way that is beyond low interference potential devices are intended to function, then you have obtained the appropriate authorisation to do so.

For use in other locations around the world:

  • Follow region-specific frequency spectrum rules.

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

- +

151 from local stock, 1 supplier stock; your order will dispatch between Dec 1 to Dec 10. And yes, stock levels and lead times are accurate!

Shipping:

  • $6+ Standard (5+ days*, tracked)
  • $10+ Express (2+ days*, tracked)
  • FREE Pickup (Newcastle only - must order online*)

Shipping costs may increase for heavy products or large orders.

Exact shipping can be calculated on the view cart page.

*Conditions apply, see shipping tab below.

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 or patch-lead; or bring-your-own SMA connector and resolder the antenna jumper resistor.

Ways to use the Makerverse LoRa-E5 Breakout

  • Basic: Connect to a computer with a USB-UART converter 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, 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

Example Code (MicroPython)

The following script has been tested with a Raspberry Pi Pico. It joins The Things Network (TTN) and publishes some test data. Read the AT Command Specification 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)

Product Comments

Exact shipping can be calculated on the view cart page (no login required).

Products that weigh more than 0.5 KG may cost more than what's shown (for example, test equipment, machines, >500mL liquids, etc).

We deliver Australia-wide with these options (depends on the final destination - you can get a quote on the view cart page):

  • $3+ for Stamped Mail (typically 10+ business days, not tracked, only available on selected small items)
  • $6+ for Standard Post (typically 6+ business days, tracked)
  • $10+ for Express Post (typically 2+ business days, tracked)
  • Pickup - Free! Only available to customers who live in the Newcastle region (must order online and only pickup after we email to notify you the order is ready). Orders placed after 2PM may not be ready until the following business day.

Non-metro addresses in WA, NT, SA & TAS can take 2+ days in addition to the above information.

Some batteries (such as LiPo) can't be shipped by Air. During checkout, Express Post and International Methods will not be an option if you have that type of battery in your shopping cart.

International Orders - the following rates are for New Zealand and will vary for other countries:

  • $11+ for Pack and Track (3+ days, tracked)
  • $16+ for Express International (2-5 days, tracked)

If you order lots of gear, the postage amount will increase based on the weight of your order.

Our physical address (here's a PDF which includes other key business details):

Unit 18, 132 Garden Grove Parade
Adamstown
NSW, 2289
Australia

Take a look at our customer service page if you have other questions such as "do we do purchase orders" (yes!) or "are prices GST inclusive" (yes they are!). We're here to help - get in touch with us to talk shop.

Have a product question? We're here to help!

Write Your Own Review

Videos

View All

Guides

Raspberry Pi Pico with LoRaWAN and The Things Network - Makerverse LoRa-E5 Module - Transmit Weather Data into IoT

Feel restricted by your connectivity? Want to send data from a remote node 10km away from civilizat...
Feel restricted by your connectivity? Want to send data from a remote node 10km away from civilizat...

Send a Downlink from Adafruit.io via The Things Network

Note: With the rollout of TTNv3, the "Setup" section of this guide no longer works - but we're keepi...
Note: With the rollout of TTNv3, the "Setup" section of this guide no longer works - but we're keepi...

The Things Network, IFTTT, and BEYOND!

Note: With the rollout of TTNv3, the "Setup" section of this guide no longer works - but we're keepi...
Note: With the rollout of TTNv3, the "Setup" section of this guide no longer works - but we're keepi...

The Maker Revolution

The Maker Revolution celebrates the creation of new devices and the modification of existing ones - ...
The Maker Revolution celebrates the creation of new devices and the modification of existing ones - ...

Projects

Have you ever wanted to make a Weatherproof Weather and Air Quality System that transmits its edge-...
Feedback

Please continue if you would like to leave feedback for any of these topics:

  • Website features/issues
  • Content errors/improvements
  • Missing products/categories
  • Product assignments to categories
  • Search results relevance

For all other inquiries (orders status, stock levels, etc), please contact our support team for quick assistance.

Note: click continue and a draft email will be opened to edit. If you don't have an email client on your device, then send a message via the chat icon on the bottom left of our website.

Makers love reviews as much as you do, please follow this link to review the products you have purchased.