当前位置:首页 > 物联网 > IoT设计分享
[导读]无论是物联网、M2M还是工业4.0,LoRa都是最流行的无线通信媒介之一。LoRa网络日益普及,在世界各地都有许多LoRaWAN网络。它消耗非常低的功率,可以进行远程通信。以前我们使用LoRa进行Arduino到Arduino和ESP32到ESP32的通信。

无论是物联网、M2M还是工业4.0,LoRa都是最流行的无线通信媒介之一。LoRa网络日益普及,在世界各地都有许多LoRaWAN网络。它消耗非常低的功率,可以进行远程通信。以前我们使用LoRa进行Arduino到Arduino和ESP32到ESP32的通信。

在本教程中,我们将使用LoRa模块SX1278在树莓派和Arduino之间进行点对点通信。这里Arduino将作为发射器/服务器和树莓派作为接收器/客户端。一个DHT 11传感器连接到发送端,将温度和湿度数据发送到接收端。在接收端,树莓派将在卡宴仪表板上发布这些读数。

组件的要求

•树莓派4

•Arduino Uno

•SX1278 433MHz LoRa收发模块

•DHT11

线路图

LoRa发送器/服务器和接收器/客户端部分的电路图如下所示。在这个项目中,我们将使用LoRa SX1278模块将温度和湿度值从Arduino发送到树莓派。DHT11传感器连接到发送端,Arduino将从DHT11获取温度和湿度值,然后通过LoRa SX1278模块将其发送给树莓派。这些湿度和温度值将被上传到卡宴物联网平台,该平台可以通过互联网从世界任何地方进行监控。

发送部分- LoRa与Arduino UNO的接口

在发送端,Arduino UNO与LoRa模块和DHT11传感器接口。Arduino UNO与LoRa和DHT11的接口如下图所示。另外,请查看Arduino Uno与LoRa接口的详细说明。

LoRa模块由16个引脚组成,其中6个引脚是GPIO引脚,4个是接地引脚。这个LoRa模块工作在3.3V,因此LoRa上的3.3V引脚连接到Arduino UNO板上的3.3V引脚。下表给出了完整的连接。DHT11传感器连接到Arduino的A0引脚。

接收器部分-接口树莓派与LoRa模块

在接收端,Raspberry Pi用于从LoRa receiver获取数据并将其发送到Cayenne平台。

LoRa模块与树莓派之间的完整连接如下表所示。

LoRa通信的卡宴设置

卡宴是一个物联网平台,允许您控制微控制器。它还用于将任何传感器数据上传到卡宴云。在这里,来自DHT11传感器的温度和湿度数据将被上传到卡宴。

首先,登录/注册到你的Cayenne账户,然后进入Cayenne仪表盘,点击“添加新”,然后点击“设备/小部件”。

之后,向下滚动并点击“带你自己的东西”。

将出现一个显示设备详细信息的窗口。复制这些细节;它将在python代码中使用。

基于LoRa通信的Arduino编程

Arduino和Raspberry Pi之间的通信使用Radiohead库。这个库可以从这里下载。在这里,Arduino作为发射器/服务器工作,并将DHT传感器数据发送到树莓派。

完整的Arduino代码在页面末尾给出。这里我们将解释代码的一些重要部分。

像往常一样,通过包含所有必需的库来开始代码。SPI库用于Arduino和LoRa模块之间的SPI通信。RH_RF95库用于LoRa通信,DHT库用于读取DHT传感器的温湿度值。

然后定义DHT类型和连接DHT传感器的引脚。

在真空循环中,读取温度和湿度值。

现在要将温度和湿度值发送给树莓派,必须将它们转换为字符数组。为此,首先将整数值转换为字符串,然后将温度和湿度值添加到单个字符串中。

现在将字符串值转换为字符数组。这里‘ data ’是字符串,‘ d ’是字符数组。

最后,将值发送到LoRa接收器。

树莓派设置LoRa通信

如前所述,Radiohead库用于Arduino和Raspberry Pi之间的点对点通信。LoRa模块与SPI协议一起工作,因此我们必须在树莓派中启用SPI接口。使用下面的命令进入配置窗口。

现在在配置窗口中,转到接口选项并启用SPI接口。

启用SPI接口之后,现在使用下面的命令安装spidev包。它是一个python模块,用于通过spidev Linux内核驱动程序从用户空间连接SPI设备。

然后使用下面的命令安装pyLoRa包。此包安装LoRa通信所需的模型。

树莓派LoRa通信编程

这里树莓派作为Receiver/client,接收Arduino发送的DHT传感器数据。

完整的Python程序在本页末尾给出。在这里,我将解释代码的一些重要部分。

在代码的开头,导入所有必需的库。MQTT库用于将温度和湿度值发送到辣椒平台。

现在输入Raspberry Pi和Cayenne之间MQTT通信所需的凭据。

之后,为温度和湿度值创建两个通道。

现在创建一个带有三个函数的LoRa类,即init、class和on_rx_done。init函数用于初始化433MHz带宽为125khz的LoRa模块。

start功能用于将模块配置为接收器,获取RSSI值、工作频率等。

on_rx_done函数用于读取传入的值。然后将接收到的值移动到一个名为payload的变量中,并使用utf-8进行解码,然后移动到一个名为data的变量中。

现在将温度和湿度值拆分并发布在Cayenne平台上

建立Arduino与树莓派之间的通信

硬件和程序准备好后,将Arduino代码上传到Arduino板,并在Pi中启动python代码。如果一切正常,您应该看到通过shell窗口在pi中接收到的温度和湿度值,如下所示。

现在使用默认浏览器打开Cayenne,您应该在仪表板上看到温度和湿度值,如下所示。

这就是Arduino如何使用LoRa模块与树莓派进行无线通信,进一步的树莓派可以将传感器数据上传到任何云,这样就可以从任何地方监控它。

本文编译自iotdesignpro

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭