使用LoRa模块SX1278实现两台Arduino之间的LoRa通信
扫描二维码
随时随地手机看文章
目前有许多通信技术可用于物联网设备之间的交互,最流行的是Wi-Fi和蓝牙。但Wi-Fi和蓝牙技术的问题是高功耗。它们也有其他限制,比如有限的范围,有限的接入点等。ESP8266模块是物联网设备中最流行的Wi-Fi模块,我们之前已经使用它构建了很多物联网项目。
蜂窝网络也有同样的问题,即高功耗,局域网和蜂窝网络都是相当昂贵的,以覆盖广泛的区域。物联网行业引入了许多技术,但它们都不适合物联网设备,因为它们需要在不使用太多功率的情况下远距离传输信息,直到LoRa技术引入。LoRa技术可以实现超低功耗的超远距离传输。
在本文中,我们将学习LoRa技术和Arduino LoRa通信。这里我们将SX1278 Lora模块与Arduino接口,并在两块Arduino Uno板之间建立Lora通信。
LoRa是什么?
LoRa(远程)是一种无线技术,可为M2M(机器对机器)和物联网应用提供远程、低功耗和安全的数据传输。LoRa是由chirp扩频(CSS)技术发展而来的扩频调制技术。LoRa可用于无线连接传感器、网关、机器、设备等。
LoRa是由一家名为Semtech的公司推出的。LoRa Technologies在不同国家的不同频段工作:在美国,它运行在915 MHz频段,在欧洲地区,它运行在868 MHz频段,在亚洲地区,它运行在865至867 MHz, 920至923 MHz频段。
LoRa的工作更像是一种蜂窝通信。LoRa通信框图如下所示。LoRa节点发出的信号通过LoRa网关传送到另一个节点。网络服务器从LoRa网关接收信号,通过应用服务器发送给终端用户。
根据官方信息,当节点和网关之间没有障碍物时,LoRa可以实现715公里的距离。
组件的要求
•2×Arduino Uno
•2×LoRa SX1278模块
•DHT11传感器
•LCD 16×2模块
•跳线
线路图
LoRa发射端和接收端电路图如下。在这个项目中,我们将使用LoRa SX1278模块将温度和湿度值从一个Arduino发送到另一个Arduino。DHT11传感器连接到发送端Arduino。因此,这个Arduino将从DHT11获取温度和湿度值,然后通过LoRa SX1278模块将其发送到另一个Arduino。这些湿度和温度值将打印在连接到第二个Arduino的LCD上。
我们之前使用DHT11温度和湿度传感器与Arduino和树莓派来构建基于物联网的气象站。
发送端- LoRa与Arduino UNO的接口
在发送端,我们将使用带有LoRa模块和DHT11传感器的Arduino UNO。Arduino UNO与LoRa和DHT11的接口如下图:
LoRa模块由16个引脚组成,其中6个引脚是GPIO引脚,4个是接地引脚。这个LoRa模块工作在3.3V,因此LoRa上的3.3V引脚连接到Arduino UNO板上的3.3V引脚。完整的连接见下表。DHT11传感器连接Arduino的A0引脚。
下面是Arduino Lora发射器的硬件设置:
接收端- LoRa SX1278与Arduino UNO接口
对于接收端,我们将使用带有LoRa模块和16×2 LCD显示模块的Arduino Uno。Arduino与LoRa和LCD模块连接的电路图如下图所示
除了LCD模块与Arduino连接外,连接方式与transmitter相同。完整的连接见下表。
下面是Arduino Lora Receiver的硬件设置:
Arduino LoRa作为发射器的编程
在本教程的最后给出了Arduinos(发射器和接收器)的完整程序,在这里我们解释了代码的几个重要部分。
通过添加所需的库和初始化引脚来启动程序。在此代码中,SPI和LoRa库用于LoRa模块。DHT11传感器模块连接Arduino的A0引脚。您可以从这里下载Lora库
在void setup()函数中,我们启动串行监视器。在我的情况下,433E6 (433 MHz)是我的LoRa工作频率,您可能必须根据您使用的模块类型更改它。
在void循环函数中,我们使用DHT.readTemperature()和dht . read湿度()函数计算温度和湿度值,并开始传输这些值。在接收端,将这些值打印在16x2液晶显示器上。我们使用关键字“c”提示接收器在第2行打印以下信息。
本文编译自iotdesignpro