top of page

Lora Low Cost SX1278 433Mz Long-Range module working with obstacles from 3rd floor

Lora Low Cost SX1278 433Mz Long-Range module  working with obstacles from 3rd floor
Lora Low Cost SX1278 433Mz Long-Range module working with obstacles from 3rd floor


In the world of wireless communication, the need for long-range, low-cost solutions has grown rapidly. One such technology gaining popularity is Long Range (LoRa) communication. #LoRa offers an efficient and cost-effective way to transmit data over long distances with minimal power consumption. In this blog, we will delve into an exciting experiment involving LoRa SX1278 433MHz module and its performance when transmitting data from the 3rd floor of a building with obstacles in the way.

Understanding LoRa SX1278 433MHz Module:

The LoRa SX1278 433MHz module is a low-power, long-range transceiver module based on Semtech's SX1278 IC. It operates on the 433MHz frequency band, providing a communication range of several kilometers, making it ideal for various IoT and long-range applications. The module uses spread spectrum modulation, enabling it to achieve remarkable resilience against interference and noise. #IoT #WirelessCommunication #LongRange #SX1278 #433MHz


The primary aim of this experiment is to evaluate the performance of the LoRa SX1278 433MHz module when transmitting data from the 3rd floor of a building, simulating real-world conditions with potential obstacles. #ObstacleTesting #SmartCities

Experimental Setup:

  1. LoRa SX1278 433MHz Module: The heart of the experiment, acting as the transmitter and receiver for the LoRa communication.

  2. Antennas: High-gain antennas are used to enhance the communication range and improve signal penetration through obstacles.

  3. Microcontroller: A microcontroller such as Arduino or Raspberry Pi will control the LoRa module and process the data for transmission and reception.

  4. Power Supply: A stable 3.3V power supply ensures uninterrupted experimentation.

  5. Laptop/PC: Used for data logging and monitoring the communication.


  1. Configuration: Set up the LoRa SX1278 433MHz module with the microcontroller, establishing communication parameters such as frequency, spreading factor, bandwidth, and coding rate.

  2. 3rd Floor Transmission: Position the transmitter (LoRa module) on the 3rd floor of the building. Ensure that the antennas have a clear line-of-sight without any obstructions for the initial tests.

  3. Receiver Placement: Position the receiver on the ground floor of the building, simulating a typical scenario where the receiver is situated far away from the transmitter.

  4. Data Transmission: Implement a simple data transmission program in the microcontroller to send packets containing test data from the transmitter to the receiver.

  5. Obstacle Introduction: Gradually introduce various obstacles on the 3rd floor, such as walls, large objects, and metallic barriers, which may obstruct the line-of-sight communication.

  6. Data Collection: Record the performance metrics of the LoRa module, such as signal strength, packet loss, and communication range, during each test scenario.

Results and Observations:

Upon analyzing the experiment's results, several key insights can be drawn:

  1. Signal Penetration: The LoRa SX1278 433MHz module's spread spectrum modulation showcase excellent signal penetration capabilities through various obstacles, allowing successful data transmission despite some obstructions.

  2. Signal Strength: The signal strength may degrade as obstacles increase, resulting in reduced communication range. However, the LoRa module is designed to maintain a reliable link under challenging conditions.

  3. Packet Loss: As obstacles increase, there might be a slight increase in packet loss. However, LoRa's robust error correction techniques minimized the impact of packet loss on data integrity.


The experiment demonstrates the exceptional capabilities of the LoRa SX1278 433MHz module in maintaining long-range communication while facing obstacles. Despite being on the 3rd floor of a building, the LoRa module's spread spectrum technology allows it to penetrate obstacles and maintain a reliable link with the receiver on the ground floor. This makes it a promising technology for various IoT and long-range applications, especially in urban environments with dense infrastructures.

Remember that this experiment is a basic exploration, and further optimizations and configurations can be applied to achieve even better performance based on specific use cases. With the ever-growing demand for low-cost, long-range communication solutions, LoRa technology is undoubtedly a fascinating option to consider. #LoRa #IoT #WirelessCommunication #LongRange #SX1278 #433MHz #ObstacleTesting #SmartCities

Code for Node A

#include <SPI.h>

#include <LoRa.h>

const int csPin = 7;

const int resetPin = 6;

const int irqPin = 1;

byte localAddress = 0xAA;

byte destinationAddress = 0xBB;

long lastSendTime = 0;

int interval = 2000;

int count = 0;

void setup() {


Serial.println("Start LoRa duplex");

LoRa.setPins(csPin, resetPin, irqPin);

if (!LoRa.begin(433E6)) {

Serial.println("LoRa init failed. Check your connections.");

while (true) {}



void loop() {

if (millis() - lastSendTime > interval) {

String sensorData = String(count++);


Serial.print("Sending data " + sensorData);

Serial.print(" from 0x" + String(localAddress, HEX));

Serial.println(" to 0x" + String(destinationAddress, HEX));

lastSendTime = millis();

interval = random(2000) + 1000;




void sendMessage(String outgoing) {








void receiveMessage(int packetSize) {

if (packetSize == 0) return;

int recipient =;

byte sender =;

byte incomingLength =;

String incoming = "";

while (LoRa.available()) {

incoming += (char);


if (incomingLength != incoming.length()) {

Serial.println("Error: Message length does not match length");



if (recipient != localAddress) {

Serial.println("Error: Recipient address does not match local address");



Serial.print("Received data " + incoming);

Serial.print(" from 0x" + String(sender, HEX));

Serial.println(" to 0x" + String(recipient, HEX));


Code for Node B



For more useful information like experiments and DIY projects for Kids visit


Recent Posts

See All


bottom of page