欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    基于NRF24L01的校园智能路灯课程设计.docx

    • 资源ID:15962923       资源大小:906.24KB        全文页数:25页
    • 资源格式: DOCX        下载积分:5金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要5金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    基于NRF24L01的校园智能路灯课程设计.docx

    1、基于NRF24L01的校园智能路灯课程设计传感器与检测应用设计报告 实验名称: 基于NRF24L01的校园智能路灯课程设计 一 设计名称基于NRF24L01的校园智能路灯初步粗略设计方案二 摘要近年来,低碳生活,节能减排越来越受到国家的大力支持,在校园生活中平均一盏路灯的功率在200W-300W之间,每晚大概需要点亮时长为18:00-5:00,粗略的计算会发现每盏路灯的功耗大概在2.2-3.3kWh,学校大多用电平局一度电在0.55元左右,因此,每晚一盏路灯所产生的电费大概在1.2-1.8元左右,大学校园犹如一个小城市,每个学校的路灯至少上百盏,路灯的数量有的会达到上千盏甚至更多。这给学校每天

    2、的开销带来了一部分没必要的浪费。节约校园照明用电消耗成为响应国家对于节能号召的重要措施之一。一般的校园照明系统只是运用普通的声控及光控传感器组成开环的控制系统,其灵活性差,功耗大,不可人为干预。而市场上闭环控制的照明系统投入资金大,稳定性差,无法在校园中得到推广。三 设计目的1. 了解NRF24L01的基本通信原理2. 掌握stm32f103芯片的AD转换原理3. 熟练掌握光敏电阻的应用4. 将本学年所学知识进行一次综合汇总四 设计原理系统的设计主要有以下四个模块部分:微控制器STM32,光敏电阻模块, LED照明电路.无线射频模块。其中光敏电阻模块与LED照明电路组成检测照明部分,主要负责检

    3、测外界光的强度,人流高峰期会默认开启普通照明模式,夜间会默认开启节能模式。微控制器STM32负责收集采集数据,以及AD转换,通过串口向PC机发送消息。无线射频模块负责向主机传递信息,当从机照明电路出现错误时会触发射频模块发射数据,不同从机对应不同数据。发送完成结束传输。1. 本设计的设计要求(1).综合考虑选择是一主多从还是一从多主。(2).硬件设计上应该考虑到滤波的重要性,结构尽量简单实用,易于实现,使系统电路尽量简单。(3).软件设计必须要有完善的思路,要充分考虑到各种传感器和无线收发器的时序,做到程序简单,调试方便。(4).通过软件设计尽量降低无线数据传输的误码率2.主要硬件介绍(1).

    4、NRF24L01无线模块简介各管脚如下定义:8.IRQ 7.MISO6.MOSI 5.SCK4.CSN 3.CE 2.VCC 1.GND具体说明:3.CE 芯片的模式控制线。在 CSN 为低的情况下,CE 协同NRF24L01 的CONFIG 寄存器共同决定NRF24L01 的状态(参照NRF24L01 的状态机)。 4.CSN 为芯片的片选线 CSN 为低电平芯片工作5.SCK 为芯片控制的时钟线(SPI时钟)6.MOSI 为芯片控制数据线(Master output slave input) 主输出 从输入7.MISO 芯片控制数据线 (Master input slave output)

    5、主输入 从输出8.IRQ 中断信号引脚。中断时变为低电平,即NRF24L01内部发生中断时IRQ 引脚从高电平变为低电平。引脚会在以下三种情况变低:Tx FIFO 发完并且收到ACK(使能ACK情况下)、Rx FIFO 收到数据、达到最大重发次数。中断:nRF24L01 的中断引脚(IRQ)为低电平触发,当状态寄存器中TX_DS(数据发送完成中断位)、RX_DR(接收数据中断位) 或MAX_RT(达到最多次重发中断位)为高时触发中断。当MCU 给中断源写1时,中断引脚被禁止。可屏蔽中断可以被IRQ 中断屏蔽。通过设置可屏蔽中断位为高,则中断响应被禁止。默认状态下所有的中断源是被禁止的。系统结构

    6、框图如下所示五设计原理NRF24L01工作原理发射数据时,首先将nRF24L01配置为发射模式:接着把接收节点地址TX_ADDR和有效数据TX_PLD按照时序由SPI口写入nRF24L01缓存区,TX_PLD必须在CSN为低时连续写入,而TX_ADDR在发射时写入一次即可,然后CE置为高电平并保持至少10s,延迟130s后发射数据;若自动应答开启,那么nRF24L01在发射数据后立即进入接收模式,接收应答信号(自动应答接收地址应该与接收节点地址TX_ADDR一致)。如果收到应答,则认为此次通信成功,TX_DS置高,同时TX_PLD从TXFIFO中清除;若未收到应答,则自动重新发射该数据(自动重

    7、发已开启),若重发次数(ARC)达到上限,MAX_RT置高,TXFIFO中数据保留以便在次重发;MAX_RT或TX_DS置高时,使IRQ变低,产生中断,通知MCU。最后发射成功时,若CE为低则nRF24L01进入空闲模式1;若发送堆栈中有数据且CE为高,则进入下一次发射;若发送堆栈中无数据且CE为高,则进入空闲模式2。 接收数据时,首先将nRF24L01配置为接收模式,接着延迟130s进入接收状态等待数据的到来。当接收方检测到有效的地址和CRC时,就将数据包存储在RXFIFO中,同时中断标志位RX_DR置高,IRQ变低,产生中断,通知MCU去取数据。若此时自动应答开启,接收方则同时进入发射状态

    8、回传应答信号。最后接收成功时,若CE变低,则nRF24L01进入空闲模式1。 在写寄存器之前一定要进入待机模式或掉电模式。如下图,给出SPI操作及时序图:图2.4 SPI读操作SPI口为同步串行通信接口,最大传输速率为10 Mb/s,传输时先传送低位字节,再传送高位字节。但针对单个字节而言,要先送高位再送低位。与SPI相关的指令共有8个,使用时这些控制指令由nRF24L01的MOSI输入。相应的状态和数据信息是从MISO输出给MCU。 nRF24L0l所有的配置字都由配置寄存器定义,这些配置寄存器可通过SPI口访问。nRF24L01 的配置寄存器共有25个,常用的配置寄存器如表2所示。 表2:

    9、常用配置寄存器地址(H)寄存器名称功能00CONFIG设置24L01工作模式01EN_AA设置接收通道及自动应答02EN_RXADDR使能接收通道地址03SETUP_AW设置地址宽度04SETUP_RETR设置自动重发数据时间和次数07STATUS状态寄存器,用来判定工作状态0A0FRX_ADDR_P0P5设置接收通道地址10TX_ADDR设置接收接点地址1116RX_PW_P0P5设置接收通道的有效数据宽度六硬件电路图(1).NRF24L01原理图 (2).光敏电阻模块原理图(3).硬件电路连接图七.程序源码及分析(1).主机程序主机程序主要实现当三个从机中在时间触发的情况下进行AD采集带电

    10、压并且返回给主机,主机进行错误判断一号路灯出现问题时候,主机会通过串口向PC段发送数据,主机端监视助手会进行判断,对应的相应的灯会出现亮灭以及闪烁状态。以达到提醒维修人员及时检查维修路灯。程序部分如下所示/错误检测NRF_RX_Mode();printf(Receive modern);if(NRF_Rx_Dat(rxbuf) = RX_DR);elseprintf(接收失败rn);/第一个路灯出现问题if(rxbuf0=JC10&rxbuf1=JC11&rxbuf2=JC12)bz1=1;USART_SendData(USART1,0x01);while(USART_GetFlagStatu

    11、s(USART1,USART_FLAG_TXE)=RESET);delay_ms(10);printf(出错请检查路灯rn);memcpy(rxbuf,12);printf(%drn,rxbuf0);printf(%drn,rxbuf1);printf(%drn,rxbuf2);/第二个路灯出现问题else if(rxbuf0=JC20&rxbuf1=JC21&rxbuf2=JC22)bz2=1;USART_SendData(USART1,0x02);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)=RESET);delay_ms(10);pri

    12、ntf(出错请检查路灯rn);memcpy(rxbuf,12);printf(%drn,rxbuf0);printf(%drn,rxbuf1);printf(%drn,rxbuf2);/第三个路灯出现问题else if(rxbuf0=JC30&rxbuf1=JC31&rxbuf2=JC32)bz3=1;USART_SendData(USART1,0x03);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)=RESET);delay_ms(10);printf(出错请检查路灯rn);memcpy(rxbuf,12);printf(%drn,rxbu

    13、f0);printf(%drn,rxbuf1);printf(%drn,rxbuf2);/路灯一和路灯二出现问题else if(bz1&bz2=1)USART_SendData(USART1,0x04);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)=RESET);delay_ms(10);bz1=0;bz2=0;/路灯二和路灯三出现问题else if(bz2&bz3=1)USART_SendData(USART1,0x05);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)=RESET);del

    14、ay_ms(10);bz2=0;bz3=0;/路灯一和路灯三出现问题else if(bz1&bz3=1)USART_SendData(USART1,0x06);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)=RESET);delay_ms(10);bz1=0;bz3=0;/路灯一.路灯二.路灯三出现问题else if(bz1&bz2&bz3=1)USART_SendData(USART1,0x07);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)=RESET);delay_ms(10);bz1=

    15、0;bz2=0;bz3=0;else;if(rxbuf0=JN10&rxbuf1=JN11&rxbuf2=JN12)key1=1;if(rxbuf0=JN20&rxbuf1=JN21&rxbuf2=JN22)key2=1;if(rxbuf0=JN30&rxbuf1=JN31&rxbuf2=JN32)key3=1;if(key1&key2&key3=1)USART_SendData(USART1,0x08);while(USART_GetFlagStatus(USART1,USART_FLAG_TXE)=RESET);delay_ms(10);key1=0;key2=0;key3=0;GPIO_

    16、SetBits(GPIOB,GPIO_Pin_5);delay_ms(1000);/* * 函数名:SPI_NRF_Init * 描述 :SPI的 I/O配置 * 输入 :无 * 输出 :无 * 调用 :外部调用 */void SPI_NRF_Init(void) SPI_InitTypeDef SPI_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOG, ENABLE); /使能PB,G端口时钟 RCC_APB2PeriphClockCmd( RCC_A

    17、PB2Periph_GPIOB, ENABLE );/PORTB时钟使能 RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE );/SPI2时钟使能 /*配置 SPI_NRF_SPI的 SCK,MISO,MOSI引脚 */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_P

    18、P; /复用功能 GPIO_Init(GPIOB, &GPIO_InitStructure); /*配置SPI_NRF_SPI的CE引脚和SPI_NRF_SPI的 CSN 引脚: NSS */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_6; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_Init(GPIOG, &GPIO_InitStructure); /*配置SPI_NRF_

    19、SPI的IRQ引脚*/ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU ;/上拉输入 GPIO_Init(GPIOG, &GPIO_InitStructure); /* 这是自定义的宏,用于拉高csn引脚,NRF进入空闲状态 */ NRF_CSN_HIGH(); SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_

    20、FullDuplex; /双线全双工 SPI_InitStructure.SPI_Mode = SPI_Mode_Master; /主模式 SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; /数据大小8位 SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; /时钟极性,空闲时为低 SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; /第1个边沿有效,上升沿为采样时刻 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; /NSS信号由软件产生

    21、SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_8; /8分频,9MHz SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; /高位在前 SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI2, &SPI_InitStructure); /* Enable SPI1 */ SPI_Cmd(SPI2, ENABLE);/* * 函数名:NRF_RX_Mode * 描述 :配置并进入接收模式 * 输入 :无 * 输出

    22、 :无 * 调用 :外部调用 */void NRF_RX_Mode(void) NRF_CE_LOW(); SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH);/写RX节点地址 SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01); /使能通道0的自动应答 SPI_NRF_WriteReg(NRF_WRITE_REG+EN_RXADDR,0x01);/使能通道0的接收地址 SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANAL); /设置RF通信频率

    23、 SPI_NRF_WriteReg(NRF_WRITE_REG+RX_PW_P0,RX_PLOAD_WIDTH);/选择通道0的有效数据宽度 SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f); /设置TX发射参数,0db增益,2Mbps,低噪声增益开启 SPI_NRF_WriteReg(NRF_WRITE_REG+CONFIG, 0x0f); /配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,接收模式 /*CE拉高,进入接收模式*/ NRF_CE_HIGH(); /* * 函数名:NRF_TX_Mode * 描述 :配置发送模式

    24、 * 输入 :无 * 输出 :无 * 调用 :外部调用 */void NRF_TX_Mode(void) NRF_CE_LOW(); SPI_NRF_WriteBuf(NRF_WRITE_REG+TX_ADDR,TX_ADDRESS,TX_ADR_WIDTH); /写TX节点地址 SPI_NRF_WriteBuf(NRF_WRITE_REG+RX_ADDR_P0,RX_ADDRESS,RX_ADR_WIDTH); /设置TX节点地址,主要为了使能ACK SPI_NRF_WriteReg(NRF_WRITE_REG+EN_AA,0x01); /使能通道0的自动应答 SPI_NRF_WriteRe

    25、g(NRF_WRITE_REG+EN_RXADDR,0x01); /使能通道0的接收地址 SPI_NRF_WriteReg(NRF_WRITE_REG+SETUP_RETR,0x1a);/设置自动重发间隔时间:500us + 86us;最大自动重发次数:10次 SPI_NRF_WriteReg(NRF_WRITE_REG+RF_CH,CHANAL); /设置RF通道为CHANAL SPI_NRF_WriteReg(NRF_WRITE_REG+RF_SETUP,0x0f); /设置TX发射参数,0db增益,2Mbps,低噪声增益开启 SPI_NRF_WriteReg(NRF_WRITE_REG+

    26、CONFIG,0x0e); /配置基本工作模式的参数;PWR_UP,EN_CRC,16BIT_CRC,发射模式,开启所有中断 /*CE拉高,进入发送模式*/ NRF_CE_HIGH(); delay_ms(20); /CE要拉高一段时间才进入发送模式此处主要设置ADC的初始化,负责电压采集初始void ADC_Configuration(void) ADC_InitTypeDef ADC_InitStructure; ADC_InitStructure.ADC_Mode=ADC_Mode_Independent; ADC_InitStructure.ADC_ScanConvMode=DISAB

    27、LE; ADC_InitStructure.ADC_ContinuousConvMode=DISABLE; ADC_InitStructure.ADC_ExternalTrigConv=ADC_ExternalTrigConv_None; ADC_InitStructure.ADC_DataAlign=ADC_DataAlign_Right; ADC_InitStructure.ADC_NbrOfChannel=1; ADC_Init(ADC1,&ADC_InitStructure); ADC_RegularChannelConfig(ADC1,ADC_Channel_10,1,ADC_Sam

    28、pleTime_239Cycles5); ADC_Cmd(ADC1,ENABLE); ADC_ResetCalibration(ADC1); while(ADC_GetResetCalibrationStatus(ADC1); ADC_StartCalibration(ADC1); while(ADC_GetCalibrationStatus(ADC1); ADC_SoftwareStartConvCmd(ADC1,ENABLE);(2).从机一程序源码从机一程序即为路灯一控制程序主要实现功能是:通过RTC时钟的触发和光敏电阻模块同时触发来触发不同时间的路灯的工作状态。当通过AD电压检测,检测

    29、到路灯处于断路状态时,会触发射频模块向主机发送错误报警数据,及时在主机PC端显示程序如下所示adcx=Lsens_Get_Val();printf(%drn,adcx);/持续轮询自动检测控制通过光敏电阻/高峰期开启普通模式/并且向主机返回数据4,5,6if(adcx56&calendar.hour=18&calendar.min=0&calendar.sec=0)/普通模式GPIO_ResetBits(GPIOF,GPIO_Pin_11);GPIO_ResetBits(GPIOF,GPIO_Pin_12);GPIO_ResetBits(GPIOF,GPIO_Pin_13);ad=JC11_Get_Val();ad12=JC12_Get_Val();ad13=JC13_Get_Val();mix11=3.3/4095*ad;mix12=3.3/4095*ad12;mix13=3.3/4095*ad13;delay_ms(600);printf(ad =%frn,3.3/4095*ad);/实际电压值printf(ad =%frn,3.3/4095*ad12);/实际电压值prin


    注意事项

    本文(基于NRF24L01的校园智能路灯课程设计.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开