赞
踩
本项目使用Proteus8仿真STM32单片机控制器,使用LCD1602显示模块、DHT11温湿度、DS18B20温度传感器、
土壤湿度、光照传感器、CO2和风速传感器、风速、加热加湿、补光等控制器等。
主要功能:
系统运行后,LCD1604显示传感器检测的环境温湿度、土壤温湿度、
光照强度、CO2浓度和风速值;可通过上位机远程观察传感器采集的数据显示,且可通过上位机远程控制设备,如风速、加热、加湿除湿器、补光灯等;按照自定义协议进行数据传输,
协议:传感器ID+读写方向(写0读1)+数据+结束标记(0X0D、0X0A)
/* 作者:嗨小易(QQ:3443792007) */ //系统数据显示 void sys_data_show(void) { static u8 cnt=0; u8 id=0; while(1) { //DHT11温湿度显示 lcd1604_show_nums(4,0,sys_ctrl.temp,2,0); lcd1604_show_nums(13,0,sys_ctrl.humi,2,0); //土壤温湿度显示 lcd1604_show_nums(4,1,sys_ctrl.trtemp,2,0); lcd1604_show_nums(13,1,sys_ctrl.trhumi,2,0); //光照强度显示 lcd1604_show_nums(4,2,sys_ctrl.light,2,0); //CO2浓度显示 lcd1604_show_nums(13,2,sys_ctrl.co2,2,0); //风速显示 lcd1604_show_nums(5,3,sys_ctrl.wind,2,0); cnt++; if(cnt%5==0) { //按照指定协议传输数据至上位机 for(id=1;id<6;id++) sys_send_data_to_pc(id); } break; } } //系统功能控制 void sys_fun_ctrl(void) { //上位机远程控制设备 switch(USART1_RX_BUF[0]) { case 0X11: SR_PIN=0;break;//打开风扇 case 0X10: SR_PIN=1;break;//关闭风扇 case 0X21: JR_PIN=0;break;//打开加热 case 0X20: JR_PIN=1;break;//关闭加热 case 0X31: JS_PIN=0;break;//打开加湿 case 0X30: JS_PIN=1;break;//关闭加湿 case 0X41: CS_PIN=0;break;//打开除湿 case 0X40: CS_PIN=1;break;//关闭除湿 case 0X51: BG_PIN=0;break;//打开补光 case 0X50: BG_PIN=1;break;//关闭补光 } } //应用控制系统 void appdemo_show(void) { u8 i=5; sys_parm_init();//系统参数初始化 DHT11_Init(); ctrl_pin_init(); pcf8591_init(); DS18B20_Init(); USART1_Init(9600); while(i--) { //读取DHT11温湿度值 DHT11_Read_Data(&sys_ctrl.temp,&sys_ctrl.humi); //获取土壤温湿度 sys_ctrl.trtemp=DS18B20_GetTemperture(); sys_ctrl.trhumi=pcf8591_read_adcvalue(0); sys_ctrl.trhumi=pcf8591_read_adcvalue(0); sys_ctrl.trhumi=cal_map(sys_ctrl.trhumi,0,255,0,99); //获取光照强度 sys_ctrl.light=pcf8591_read_adcvalue(1); sys_ctrl.light=pcf8591_read_adcvalue(1); sys_ctrl.light=cal_map(sys_ctrl.light,0,255,0,99); //获取CO2浓度 sys_ctrl.co2=pcf8591_read_adcvalue(2); sys_ctrl.co2=pcf8591_read_adcvalue(2); sys_ctrl.co2=cal_map(sys_ctrl.co2,0,255,0,99); //获取风速 sys_ctrl.wind=pcf8591_read_adcvalue(3); sys_ctrl.wind=pcf8591_read_adcvalue(3); sys_ctrl.wind=cal_map(sys_ctrl.wind,0,255,0,10); delay_ms(100); } lcd1604_init();//LCD1604初始化 sys_open_show();//系统初始界面显示 while(1) { sys_data_get();//系统数据获取 sys_data_show();//系统数据显示 sys_data_set();//系统数据设置 sys_fun_ctrl();//系统功能控制 } }
B站演示视频:https://space.bilibili.com/444388619
专注于51单片机、STM32、国产32、DSP、Proteus、ardunio、ESP32、物联网软件开发,PCB设计,视频分享,技术交流。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。