You are on page 1of 9

instructables

Simple Arduino LoRa Communciation (5km and More)

by xxreef

We are going to test E32-TTL-100 with my library. It is a wireless transceiver module, operates at 410 441 MHz (or
868MHz or 915MHz) based on original RFIC SX1278 from SEMTECH, transparent transmission is available, TTL level. The
module adopts LORA spread spectrum technology.
Supplies:

Arduino UNO
LoRa e32 devices

Optional
Mischianti Arduino LoRa shield (Open source)
Mischianti WeMos LoRa shield (Open source)

Simple Arduino LoRa Communciation (5km and More): Page 1


Step 1: Devices Specs

The module features FEC Forward Error Correction algorithm, which ensure its high coding e ciency & good
correction performance. In the case of sudden interference, it can correct the interfered data packets automatically, so
that the reliability and transmission range are improved correspondingly. But without FEC, those da te packets can only
be dropped. And with the rigorous encryption & decryption, data interception becomes pointless. The function of data
compression can decrease the transmission time & probability of being interference, while improving the reliability &
transmission e ciency.
Module size: 21*36mm
Antenna type: SMA-K (50Ω impedance)
Transmission distance: 3000m(max)
Maximum power: 2dB(100mW)
Air rates: 2.4Kbps (6 optional level (0.3, 1.2, 2.4, 4.8, 9.6, 19.2kbps)
Emission length: 512ByteReceive
length: 512Byte
Simple Arduino LoRa Communciation (5km and More): Page 2
Communication Interface: UART – 8N1, 8E1, 8O1,
Eight kinds of UART baud Rate, from 1200 to 115200bps (Default: 9600)
RSSI support: No (Built-in intelligent processing)

Step 2: Transmission Type

Transparent transmission
This can be considered like a “Demo mode”, by default you can send message to all device of same con gured address
and channel.
Fixed transmission
This type of transmission you can specify an address and a channel where where you want send the message. You can
send message to a:
Speci ed device with a predeterminated Address Low, Address High and Channel.
Broadcast message to a set of channel devices Normal mode Simply send message.

Step 3: Device Mode

Normal mode
Simply send message.
Wake-up mode and power-saving mode

Simple Arduino LoRa Communciation (5km and More): Page 3


As you can intend if a device is in Wake-up mode can “wake” one or more devices that are in power-saving mode with a
preamble communication.
Program/sleep mode
With this con guration you can change con guration of your device.

Step 4: Wiring Device

Here the schema of connection of the device, this is a fully connected, with management of M0 and M1 pin permit to
change modality of the device, so you can switch to con guration or wake up mode with program, the library help you in
all this operation.

Simple Arduino LoRa Communciation (5km and More): Page 4


Step 5: Configuration

Exist a speci ed command to set and get con guration

void setup() {
Serial.begin(9600);
delay(500);
// Startup all pins and UART
e32ttl100.begin();
ResponseStructContainer c;
c = e32ttl100.getConfiguration();
// It's important get configuration pointer before all other operation
Configuration configuration = *(Configuration*) c.data;
Serial.println(c.status.getResponseDescription());
Serial.println(c.status.code);
printParameters(configuration);
ResponseStructContainer cMi;
cMi = e32ttl100.getModuleInformation();
// It's important get information pointer before all other operation
ModuleInformation mi = *(ModuleInformation*)cMi.data;
Serial.println(cMi.status.getResponseDescription());
Serial.println(cMi.status.code);
printModuleInformation(mi);
}

Simple Arduino LoRa Communciation (5km and More): Page 5


Step 6: Configuration Result

And the result become


Begin
Success
1
----------------------------------------
HEAD BIN: 11000000 192 C0
AddH BIN: 0
AddL BIN: 0
Chan BIN: 23 -> 433MHz
SpeedParityBit BIN : 0 -> 8N1 (Default)
SpeedUARTDataRate BIN : 11 -> 9600bps (default)
SpeedAirDataRate BIN : 10 -> 2.4kbps (default)
OptionTrans BIN : 0 -> Transparent transmission (default)
OptionPullup BIN : 1 -> TXD, RXD, AUX are push-pulls/pull-ups
OptionWakeup BIN : 0 -> 250ms (default)
OptionFEC BIN : 1 -> Turn on Forward Error Correction Switch (Default)
OptionPower BIN : 0 -> 20dBm (Default)
----------------------------------------
Success
1
----------------------------------------
HEAD BIN: 11000011 195 C3
Model no.: 32
Version : 44
Features : 14
----------------------------------------

Step 7: Send Message

Here a simple sketch to send a message to all device attached to the channel

Simple Arduino LoRa Communciation (5km and More): Page 6


void loop() {
// If something available
if (e32ttl100.available()>1) {
// read the String message
ResponseContainer rc = e32ttl100.receiveMessage();
// Is something goes wrong print error
if (rc.status.code!=1){
rc.status.getResponseDescription();
}else{
// Print the data received
Serial.println(rc.data);
}
}
if (Serial.available()) {
String input = Serial.readString();
e32ttl100.sendMessage(input);
}
}

Step 8: Shield for Arduino

I create also a shield for Arduino that become very usefully for prototyping.
And I release It as open source project here
https://www.pcbway.com/project/shareproject/LoRa_E32_Series_device_Arduino_shield.html

Simple Arduino LoRa Communciation (5km and More): Page 7


Step 9: Library

GitHub repository https://github.com/xreef/LoRa_E32_Series_Library


Support forum
Additional documentation

Simple Arduino LoRa Communciation (5km and More): Page 8


Simple Arduino LoRa Communciation (5km and More): Page 9

You might also like