物联网Lora模块从入门到精通(八)Lora无线通信

这篇具有很好参考价值的文章主要介绍了物联网Lora模块从入门到精通(八)Lora无线通信。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

        在某些环境下,无法通过有线传输数据,这时候我们需要使用Lora无线通信传输数据,Lora无线数据传输具有低功耗、距离长的特点,常用于工厂内等,需要Lora基站。

        我曾做过距离测试:Lora模块距离测试-物联网Lora开发

二、代码实现

        本次的任务目标为将光照数据由传感器端传至节点端。

        由于我们需要在传感器端和节点端完成不同的程序设计,因此我们需要完成两份例程。

        在提供的基础例程中,为我们提供了关于Lora基础通信的库,帮助我们尽快的完成程序的设计开发。这两个库文件分别是NS_Radio.c与sx1276.h,这是因为开发板的Lora模块使用的是sx1276模块完成的。

        初始化与接收的函数是在NS_Radio.c中实现的:

/**********************************************************************************************
*函数:void NS_RadioInit( uint32_t freq, int8_t power, uint32_t txTimeout, uint32_t rxTimeout)
*功能:对射频模块发送、接收参数进行初始化
*输入:
*			freq载波频率,建议433MHz附近频率最佳
*			power发射功率,最大20
*			txTimeout发送超时时间
*			uint32_t rxTimeout 接收超时时间
*输出:无
*特殊说明:无
**********************************************************************************************/
void NS_RadioInit( uint32_t freq, int8_t power, uint32_t txTimeout, uint32_t rxTimeout)
{
	 NS_RadioEventsInit();//无线射频模块注册事件回调函数
     NS_RadioSetTxRxConfig( freq, power, txTimeout );
	 Radio.Rx( rxTimeout );//设置LoRa模块为接收模式,同时设置超时时间,必许步骤
}

/**********************************************************************************************
*函数:uint16_t ReadRadioRxBuffer( uint8_t *payload)
*功能:读取射频接收缓存信息,包括读取接收到的数据长度和缓存数据。
*输入:无
*输出:uint8_t *payload, 指针,指向要用于存放接收缓存的地址
*返回:返回接收到的数据长度
*特殊说明:每调用一次ReadRadioRxBuffer( )函数,LoRaBufferSize会被置0.
**********************************************************************************************/
uint16_t ReadRadioRxBuffer( uint8_t *payload)
{
	  uint16_t LengthTemp;
	  LengthTemp = LoRaBufferSize;
	  if(LengthTemp <= 0)
	  {
        return 0;
	  }
	  LoRaBufferSize = 0;
    //payload = LoRaBuffer;
	  memcpy( payload, LoRaBuffer, LengthTemp );
	  return LengthTemp;
}

        而发送的函数是在sx1276.c中实现的:

lora csdn,新大陆物联网Lora模块开发,新大陆物联网设备学习,物联网        下面来看具体的代码实现。

        传感器端

float temp=0,hum=0,light=0;
uint8_t data[30];
int main( void )
{
    Init();
		ADCS_Init();//初始化ADC
		NS_RadioInit(433000000,10,1000,1000);//初始化无线通信
    while( 1 )
    {
				HAL_Delay(1000);//延时1000ms
				AdcScanChannel();//更新通道值
				light=((5.0/2.0)*AdcReadCh0())*100.0;//获取光照并通过公式计算
				memset(data,'\0',30);//清空数据数组
				sprintf((char *)data,"%.2f",light);//将数据写入数组
				SX1276Send(data,30);//发送数据
				
    }
}

        节点端

float temp=0,hum=0,light=0;
uint8_t data[30];
int main( void )
{
    Init();
		ADCS_Init();//初始化ADC
		NS_RadioInit(433000000,10,1000,1000);//注意与传感器端相同
    while( 1 )
    {
				HAL_Delay(1000);//延时1000ms
				memset(data,'\0',30);//清空数据数组
				if(ReadRadioRxBuffer(data)!=0)
				{
					light=atof((char *)data);
				}
				
    }
}

        值得注意的是,数据的传输是受环境因素影响的,根据前文提到的NS_RadioInit()函数来看,其含有四个参数,第二个参数为发射功率,第三个参数与第四个参数分别为发送、接收的超时时间,当遇到环境问题,可以适当调整参数,以达到最好效果。文章来源地址https://www.toymoban.com/news/detail-621308.html

到了这里,关于物联网Lora模块从入门到精通(八)Lora无线通信的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【物联网无线通信技术】802.11无线安全认证

    本文由简入繁介绍了IEEE802.11i无线局域网安全技术的前世今生,帮助路由器开发者对WLAN的加密安全策略有一个概念上的认知,能够更好地分析STA掉线以及漫游等问题。 目录 WEP WPA WPA/WPA2-PSK认证过程 802.11i WEP是Wired Equivalent Privacy的简称,有线等效保密(WEP)协议对在两台设备间

    2024年02月11日
    浏览(36)
  • 物联网Lora模块从入门到精通(七)串口通讯

            在Lora模块的程序设计中,串口通信一定是一个极其重要且常用的通信方式,借助串口通信,我们不但可以向外传输我们获取的数据,还可以根据外部指令做出相应。         同样的,在例程中,为我们提供了一个名为usart1-board.c的库,帮助我们更好更快的完成串口通

    2024年02月08日
    浏览(35)
  • 物联网Lora模块从入门到精通(六)OLED显示屏

            获取到数据后我们常需要在OLED显示屏上显示,本文中我们需要使用上一篇文章(光照与温湿度数据获取)的代码,在其基础上继续完成本文内容。         基础代码:         例程中,为我们提供了hal_oled.c文件,其中为我们常使用下列方法:         OLED的屏幕是1

    2024年02月08日
    浏览(29)
  • 物联网Lora模块从入门到精通(二) LED灯泡闪烁与呼吸灯

    目录 一、前言 二、实践与代码         1.电亮LED1         2.熄灭LED1         3.翻转LED电平         4.LED1与LED2交替闪烁         5.LED1呼吸灯 三、程序代码         本篇内容属于新大陆物联网Lora模块开发,使用给定的Lora基础例程,并在其基础上开发完成,并可

    2024年02月09日
    浏览(33)
  • 物联网Lora模块从入门到精通(四)对某些端口的初始化

            由于程序设计开发具有的不确定性,我们常常需要初始化某些特定的引脚,并读取引脚电平状态或向引脚输出高低电平。         快速找到端口的初始化语句:         首先,找到board.c文件,在下图的位置,我们可以看到关于LED灯的端口的初始化语句。        

    2024年02月08日
    浏览(35)
  • 【物联网无线通信技术】ZigBee从理论到实践(CC2530)

    文章延续之前【物联网无线通信技术】系列文章的风格,首先对ZigBee这种在物联网发展初期出现的无线通信技术进行了相关背景概念的介绍,并横向介绍了几款时间跨度比较大的ZigBee芯片。然后以CC2530为例,从硬件到软件介绍了ZigBee这中无线通信技术的实现。相信读者通过通

    2024年02月04日
    浏览(32)
  • 【物联网无线通信技术】UWB定位从理论到实现(DW1000)

    超宽带(UWB)是一种基于IEEE 802.15.4a和802.15.4z标准的无线电技术,可以非常精确地测量无线电信号的飞行时间,从而实现厘米级精度的距离/位置测量。UWB技术除了提供定位功能外,它本身是一种通信技术,其提供了一种安全的无线通信新方式,为新形式的安全交易打开了大门

    2024年02月14日
    浏览(27)
  • 【毕业设计 - 教学】单片机常用模块:433无线数传通信

    Hi,大家好,这里是丹成学长,今天向大家介绍一个单片机开发常用模块:433无线数传模块 单片机常用模块:433无线数传模块 大家可用于 课程设计 或 毕业设计 无线收发模块433MHz,采用高频射频技术,所以又称RF433射频小模块。它以全数字技术生产的单IC射频前端和ATMEL的A

    2024年02月12日
    浏览(41)
  • 【物联网无线通信技术】NFC从理论到实践(FM17XX)

    NFC,全称是Near Field Communication,即“近场通信”,也叫“近距离无线通信”。NFC诞生于2004年,是基于RFID非接触式射频识别技术演变而来,由当时的龙头企业NXP(原飞利浦半导体)、诺基亚以及索尼联合发起。NFC采用13.56MHz频段,设计运行于20厘米距离之间,传输速度分为13.25KB

    2024年02月11日
    浏览(25)
  • 基于I.MX6ULL的Linux C多线程物联网网关+STM32+Qt上位机+Linux C++多线程服务器(含web)的多种无线通信系统的智慧农场

    我国是农业大国,而非农业强国。近30年来农业高产量主要依靠农药化肥的大量投入,大部分化肥和水资源没有被有效利用而随地弃置,导致大量养分损失并造成环境污染。我国农业生产仍然以传统生产模式为主,传统耕种只能凭经验施肥灌溉,不仅浪费大量的人力物力,也

    2024年04月14日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包