网站建设分金手指专业十九,专业网站设计推荐,自己怎么做网站网页,wordpress加入移动端导航栏基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STC89C52单片机核心系统电路设计2.2 dht11温湿度检测电路设计2.3 NRF24L01无线通信电路设计3、部分代码展示3.1 NRF24L01初始化3.2 NRF24L01的SPI写时序3.…
基于51单片机环境监测设计 光照 PM2.5粉尘 温湿度 2.4G无线通信1、项目简介1.1 系统构成1.2 系统功能2、部分电路设计2.1 STC89C52单片机核心系统电路设计2.2 dht11温湿度检测电路设计2.3 NRF24L01无线通信电路设计3、部分代码展示3.1 NRF24L01初始化3.2 NRF24L01的SPI写时序3.3 读取BH1750光照数据3.3 串口初始化实物图1、项目简介
选题指导项目分享: https://gitee.com/lighter-z/embedded-base/tree/master点击查看详细资料
1.1 系统构成
本设计共两块电路板无线环境参数采集板将各项信息通过2.4G无线模块传给显示板显示板完成显示及报警功能 接收板电路由NRF24L01无线模块电路LCD12864屏幕显示电路按键电路ds1302实时时钟电路报警电路STC89C52单片机最小系统电路构成 发送板电路STC89C52单片机最小系统电路PM2.5检测电路dht11温湿度传感器电路bh1750光照传感器电路NRF24L01无线模块电路构成
1.2 系统功能
1.设计采用2.4G的NRF24L01无线模块实现无线通信。2.设计采用温湿度传感器DHT11完成温湿度的采集。3.设计采用PM2.5传感器GP2Y1050AU0F或可互换型号粉尘参数的采集。4.光强传感器BH1750FVI或可互换型号完成环境光照强度参数的采集。5.按键可设置温湿度上下限报警值、PM2.5上限报警值蜂鸣器报警、LED报警提示。6.按键可设置日期时间参数。7.按设置键进入设置功能再按加减按键设置对应参数按设置按键切换设置项。8.设计采用LCD12864液晶中文显示各项监测值均在液晶上直观显示。
2、部分电路设计
2.1 STC89C52单片机核心系统电路设计
STC89C52单片机最小系统电路由复位电路、时钟电路和电源电路。拥有这三部分电路后单片机即可正常工作。
单片机最小系统原理图如下图所示
实物图
2.2 dht11温湿度检测电路设计
DHT11 是一款湿温度一体化的数字传感器。
该传感器包括一个电阻式测湿元件和一个 NTC测温元件并与一个高性能 8 位单片机相连接。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11 与单片机之间能采用简单的单总线进行通信仅仅需要一个 I/O 口。
传感器内部湿度和温度数据 40Bit 的数据一次性传给单片机数据采用校验和方式进行校验有效的保证数据传输的准确性。DHT11 功耗很低5V 电源电压下工作平均最大电流 0.5mA。
其具体电路原理图如下图所示
实物图如下图所示
2.3 NRF24L01无线通信电路设计
NRF24L01是NORDIC公司生产的一款无线通信通信芯片采用FSK 调制集成NORDIC自家的Enhanced Short Burst协议。可以实现点对点或是1对6的无线通信。无线通信速度最高可达到2Mbps。
NRF24L01采用SPI通信可以很方便的连接到MCU上面。
特点
2.4G全球开放的ISM频段免许可证使用。126个可选的频道满足多点通信和调频通信的需要。最高工作速率2Mbps高校的GFSK调制抗干扰能力强。内置CRC检错和点对多点的通信地址控制。可设置自动应答确保数据可靠传输。
其具体电路原理图如下图所示
实物图如下
3、部分代码展示
3.1 NRF24L01初始化
由于需要对模拟信号进行处理所以使用到STM32中的ADC
void init_NRF24L01(void)
{inerDelay_us(100);CE0; // chip enableCSN1; // Spi disable SCK0; // Spi clock line init highSPI_Write_Buf(WRITE_REG TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // 写本地地址 SPI_Write_Buf(WRITE_REG RX_ADDR_P0, RX_ADDRESS, RX_ADR_WIDTH); // 写接收端地址SPI_RW_Reg(WRITE_REG EN_AA, 0x01); // 频道0自动 ACK应答允许 SPI_RW_Reg(WRITE_REG EN_RXADDR, 0x01); // 允许接收地址只有频道0如果需要多频道可以参考Page21 SPI_RW_Reg(WRITE_REG RF_CH, 0); // 设置信道工作为2.4GHZ收发必须一致SPI_RW_Reg(WRITE_REG RX_PW_P0, RX_PLOAD_WIDTH); //设置接收数据长度本次设置为32字节SPI_RW_Reg(WRITE_REG RF_SETUP, 0x07); //设置发射速率为1MHZ发射功率为最大值0dB SPI_RW_Reg(WRITE_REG CONFIG, 0x0e); // IRQ收发完成中断响应16位CRC主发送
} 3.2 NRF24L01的SPI写时序
uint SPI_RW(unsigned char uchar)
{unsigned char bit_ctr;for(bit_ctr0;bit_ctr8;bit_ctr) // output 8-bit{MOSI (uchar 0x80); // output uchar, MSB to MOSIuchar (uchar 1); // shift next bit into MSB..SCK 1; // Set SCK high..uchar | MISO; // capture current MISO bitSCK 0; // ..then set SCK low again}return(uchar); // return read uchar
}3.3 读取BH1750光照数据
void Read_BH1750(void)
{ uchar i; BH1750_Start(); //起始信号BH1750_SendByte(SlaveAddress1); //发送设备地址读信号for (i0; i3; i) //连续读取6个地址数据存储中BUF{BUF[i] BH1750_RecvByte(); //BUF[0]存储0x32地址中的数据if (i 3){BH1750_SendACK(1); //最后一个数据需要回NOACK}else{ BH1750_SendACK(0); //回应ACK}}BH1750_Stop(); //停止信号Delay5ms();
}3.3 串口初始化
void UartInit(void) //2400bps11.0592MHz
{SCON 0x50; //8-bit variable UARTPCON0X00;TMOD 0x20; //Set Timer1 as 8-bit auto reload modeTH1 TL1 0XF4; //Set auto-reload vauleTR1 1; //Timer1 start runES 0; //Enable UART interruptEA 0; //Open master interrupt switch
} 实物图