硬件电路的设计

(末尾附文件)
3.1系统的功能分析及体系结构设计
3.1.1系统功能分析
本设计由STM32F103C8T6单片机核心电路+温湿度传感器DHT11电路+LCD1602液晶显示电路+继电器控制电路+GSM短信模块SIM800A电路+高亮LED灯补光电路+光照强度电路+电源电路组成。
1、检测花盆湿度、温度和光照状态值,并显示;参数显示通过LCD1602液晶显示,
2、远程控制,通过GSM短信远程浇水和补光灯控制。发送一条短信:jiaoshui,继电器1打开(可外接水泵表示浇水),返回短信jiaoshui_ok,1分钟关闭。发送一条短信:buguang,强制补光,并返回短信buguagn_ok,1分钟关闭。发送短信:get,返回液晶显示内容即温湿度内容,用于远程查看数据。
3、湿度低于35自动浇水、光照较暗自动补光。
4、GSM模块SIM800A和SIM900A电路程序完全兼容外观外形一模一样。
3.1.2系统总体结构
本系统具体框图如下图所示:

原理图:

高亮LED灯照明电路(高电平有效)设计
超高亮LED是比一般LED发光二极管的亮度高近百倍的新型LED,其外壳是无色透明树脂封装,其发光体本身就能发出某一波长的光,从而呈现出某一种颜色。在本设计中,选择白色高亮LED灯作为照明灯使用。
一、白色高亮LED灯的优点。
(1)寿命长,可靠耐用,维护费用极为低廉,可连续使用105h,比普通白炽灯泡长100倍;
(2)高效率,其发光效率可达80%~90%,LED比节能灯还要节能1/4;
(3)点亮速度快。
在本设计中, LED灯均为高亮LED灯,通过三极管驱动LED灯的亮灭,电阻为限流电阻,保护三极管。当单片机的控制引脚为高电平时,三极管导通,此时,高亮LED灯亮。否则,高亮LED灯不亮。 高亮LED灯照明电路原理图如下图所示。

5V继电器控制电路(高电平有效)设计
继电器是一种电控制器件,是当输入量(激励量)的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统(又称输入回路)和被控制系统(又称输出回路)之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种“自动开关”。继电器是具有隔离功能的自动开关元件,广泛应用于遥控、遥测、
通讯、自动控制、机电一体化及电力电子设备中,是最重要的控制元件之一故在电路中起着自动调节、安全保护、转换电路等作用。继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)释放。这样吸合、释放,从而达到了在电路中的导通、切断的目的。在本系统中,通过三极管驱动继电器,当单片机的控制引脚为高电平时,三极管导通,此时继电器供电闭合,同时指示灯LED亮,与LED灯串联的电阻为限流作用保护LED灯,与三极管基集相连的电阻也是限流作用,保护三极管。继电器控制电路的原理图如下图所示。

LED信号指示灯电路设计
LED灯即发光二极管,它是半导体二极管的一种,可以把电能转化成光能。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性。在电路中,电阻的作用是限流,保护LED灯。只要单片机的控制引脚拉低,则LED灯亮,否则,LED灯不亮。其具体电路原理图如下图所示。


DHT11温湿度传感器模块电路设计
DHT11数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。通过单片机等微处理器简单的电路连接就能够实时的采集本地湿度和温度。DHT11与单片机之间能采用简单的单总线进行通信,仅仅需要一个I/O口。传感器内部湿度和温度数据40Bit的数据一次性传给单片机,数据采用校验和方式进行校验,有效的保证数据传输的准确性。DHT11功耗很低,5V电源电压下,工作平均最大电流0.5mA。
一、传感器参数
(1)传感器采用DHT11
(2)工作电压范围:3.3V-5.5V
(3)工作电流 :平均0.5mA
(4)湿度测量范围:20-90%RH
(5)湿度测量误差:±5%
(6)温度测量范围:0-50℃
(7)温度测量误差:±2%
(8)湿度分辨率 :1%RH 8位
(9)温度分辨率 :1℃ 8位
(10)采样周期 :1S
(11)单总线结构
(12)与TTL兼容(5V)
(13)输出形式:数字输出
(14)PCB板尺寸:3.2cm*1.4cm
(15)有固定栓孔,方便安装
二、接口说明
(1)VCC 外接3.5V-5.5V
(2)GND 外接GND
(3)DATA 小板开关量输出接口,可外接单片机

GMDZ光敏电阻传感器模块电路设计
本系统选择光敏电阻传感器模块对光照进行检测,该模块可以实现对周围环境的亮度和光强进行检测。
光敏电阻是用硫化隔或硒化隔等半导体材料制成的特殊电阻器,其工作原理是基于内光电效应。光照愈强,阻值就愈低,随着光照强度的升高,电阻值迅速降低,亮电阻值可小至1KΩ以下。光敏电阻对光线十分敏感,其在无光照时,呈高阻状态,暗电阻一般可达1.5MΩ。光敏电阻的特殊性能,随着科技的发展将得到极其广泛应用。
光敏电阻器一般用于光的测量、光的控制和光电转换(将光的变化转换为电的变化)。常用的光敏电阻器硫化镉光敏电阻器,它是由半导体材料制成的。光敏电阻器对光的敏感性(即光谱特性)与人眼对可见光(0.4~0.76)μm的响应很接近,只要人眼可感受的光,都会引起它的阻值变化。设计光控电路时,都用白炽灯泡(小电珠)光线或自然光线作控制光源,使设计大为简化。
一、传感器参数
(1)采用灵敏型光敏电阻传感器,可以检测周围环境的亮度和光强
(2)灵敏度可调(图中蓝色数字电位器调节)
(3)工作电压3.3V-5V。
(4)输出形式:DO数字开关量输出(0和1)和AO模拟电压输出。
(5)电源指示灯和数字开关量输出指示灯。
(6)比较器输出,信号干净,波形好,驱动能力强,超过15mA。比较器采用LM393芯片,工作稳定。

系统软件设计


1、检测花盆湿度、温度和光照状态值,并显示;参数显示通过LCD1602液晶显示,
2、远程控制,通过GSM短信远程浇水和补光灯控制。发送一条短信:jiaoshui,继电器1打开(可外接水泵表示浇水),返回短信jiaoshui_ok,1分钟关闭。发送一条短信:buguang,强制补光,并返回短信buguagn_ok,1分钟关闭。发送短信:get,返回液晶显示内容即温湿度内容,用于远程查看数据。
3、湿度低于35自动浇水、光照较暗自动补光。

#include "led.h"
#include "delay.h"
#include "sys.h"
#include "key.h"
#include "usart.h"
#include "timer.h"
#include "lcd1602.h"
#include "dht11.h"#define INIT            0x00
#define JIAOSHUI    0x01
#define BUGUANG     0x02
#define GETMESG     0x03
#define SOMEONE   0x09char tab[16];
u8 readDhtFlag=0;      //读取温湿度标志  定时器中处理
u8 lighFlag=0;         //光照标志u8 mesgJiaoShuiFlag=0; //短信浇水标志
u8 countJiao=0;               //短信浇水计时 定时器中处理
u8 mesgBuguangFlag=0;  //短信补光标志
u8 countBu=0;                       //短信补光计时 定时器中处理unsigned char stepNum  =0; //运行步骤
unsigned int timeCount =0;//接收短信处理延时
char Crtl_Z[1]={0x1a};    //发送短信最后字节
char AT_CMGS[26]="AT+CMGS=\"";
unsigned char rebackMesFlag; //返回短信
unsigned char clearMesFlag =0;//定时清除短信
unsigned char readMesIng = 0;//读取短信中标志int main(void){unsigned int i;delay_init();           //延时函数初始化NVIC_Configuration();//设置NVIC中断分组2:2位抢占优先级,2位响应优先级uart_init(9600);   //串口初始化LED_Init();           //LED端口初始化KEY_Init();          //按键端口初始化TIM3_Int_Init(499,7199);//10Khz的计数频率,计数到500为50ms led_gsm=0;//打开蜂鸣器Lcd_GPIO_init();  //初始化lcd引脚Lcd_Init();          //初始化lcd屏幕delay_ms(20);Lcd_Puts(0,0,"My Designer!    ");    //初始化显示sprintf(tab,"Temp:%02d DH:%02d L ",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H);Lcd_Puts(0,1,(unsigned char *)tab);  //初始化显示 ligh=1;        //灯光relay=1;       //继电器delay_ms(200);ligh=0;     //关闭灯光relay=0;     //关闭继电器for(i=0;i<50;i++)delay_ms(100);          //延时有助于稳定UART_SendStr(USART1 , "AT+CMGF=1\r\n",11);   //设置字符集for(i=0;i<5;i++)delay_ms(100);          //延时有助于稳定UART_SendStr(USART1 , "AT+CSCS=\"GSM\"\r\n",15); //设置干什么、for(i=0;i<5;i++)delay_ms(100);          //延时有助于稳定UART_SendStr(USART1 , "AT+CMGDA=\"DEL ALL\"\r\n",20); //删除所有短信for(i=0;i<5;i++)delay_ms(100);          //延时有助于稳定led_gsm=1;//关闭ledwhile(1){if(readDhtFlag==1){readDhtFlag=0;DHT11_ReadData(); //是否读取到温湿度          if(check_ligh==1)         //查看光照强度{lighFlag = 'L';}else{lighFlag = 'H';}    sprintf(tab,"Temp:%02d DH:%02d %c ",(u16)DHT11.Tem_H,(u16)DHT11.Hum_H,lighFlag);Lcd_Puts(0,1,(unsigned char *)tab);   //初始化显示 if(mesgJiaoShuiFlag==0)   //短信不在控制时               {if(DHT11.Hum_H<35)            //{relay=1;}     //打开继电器                                         else{relay=0;}     //关闭继电器                                     }           if(mesgBuguangFlag==0)    //短信不在控制时       {           if(check_ligh==1){ligh=1;}       //打开灯光                                  else{ligh=0;}      //关闭灯光                                          }   }if(readFlag==1)    //读取短信息标志{         readFlag=0;    //读取标志清零readMesIng = 1;//读取短信过程中timeCount++ ;if((stepNum == 0)&&(timeCount>=4))   //定时读取短信{                   UART_SendStr(USART1 , "AT+CMGF=1\r\n",11);   //设置字符集timeCount = 0;//延时设置量  stepNum++;//进入操作过程1}          else if((stepNum == 1)&&(timeCount>=4))   //定时读取短信{for(i=0;i<SIZEBUF;i++){timebuf[i]='0';   //清空timebuf}                 UART_SendStr(USART1 ,"AT+CMGR=1\r\n",11);   timeCount = 0;//延时设置量  stepNum++;//进入操作过程1}else if((stepNum == 2)&&(timeCount >= 4))   //定时读取短信{   rebackMesFlag=INIT;    for(i=0;i<(SIZEBUF-5);i++){if((timebuf[i]=='j')&&(timebuf[i+1]=='i')&&(timebuf[i+2]=='a')&&(timebuf[i+3]=='o')&&(timebuf[i+4]=='s'))  //查询是否接收到jiaoshui{mesgJiaoShuiFlag=1;//短信控制标志countJiao=0;         //浇水计数relay=1;                 //打开继电器rebackMesFlag=JIAOSHUI;     //返回短信标志break;}else if((timebuf[i]=='b')&&(timebuf[i+1]=='u')&&(timebuf[i+2]=='g')&&(timebuf[i+3]=='u')&&(timebuf[i+4]=='a'))   //查询是否接收到buguang{mesgBuguangFlag=1;//短信控制标志countBu=0;             //计数ligh=1;        //打开灯光rebackMesFlag=BUGUANG;       //返回短信标志                    break;}else if((timebuf[i]=='g')&&(timebuf[i+1]=='e')&&(timebuf[i+2]=='t'))   //查询是否接收到get{rebackMesFlag=GETMESG;        //返回短信标志        break;}                         if((timebuf[i]=='+')&&(timebuf[i+1]=='8')&&(timebuf[i+2]=='6'))//查询短信息中的号码{led_gsm = 0;rebackMesFlag = SOMEONE; //有人发送短信 AT_CMGS[9]=timebuf[i+0]; //提取号码AT_CMGS[10]=timebuf[i+1];AT_CMGS[11]=timebuf[i+2];AT_CMGS[12]=timebuf[i+3];AT_CMGS[13]=timebuf[i+4];AT_CMGS[14]=timebuf[i+5];AT_CMGS[15]=timebuf[i+6];AT_CMGS[16]=timebuf[i+7];AT_CMGS[17]=timebuf[i+8];AT_CMGS[18]=timebuf[i+9];AT_CMGS[19]=timebuf[i+10];AT_CMGS[20]=timebuf[i+11];         AT_CMGS[21]=timebuf[i+12];AT_CMGS[22]=timebuf[i+13];}}AT_CMGS[23]='"';    //整理字符串 AT_CMGS[24]=0x0d;AT_CMGS[25]=0x0a;if(rebackMesFlag != INIT){        UART_SendStr(USART1 ,"AT+CMGDA=\"DEL ALL\"\r\n",20);//删除所有短信                                                          for(i=0;i<5;i++)delay_ms(100);          //延时有助于稳定UART_SendStr(USART1 ,"AT+CMGF=1\r\n",11);   //设置字符集for(i=0;i<3;i++)delay_ms(100);          //延时有助于稳定UART_SendStr(USART1 ,"AT+CSCS=\"GSM\"\r\n",15); //设置干什么、for(i=0;i<3;i++)delay_ms(100);          //延时有助于稳定UART_SendStr(USART1 , ( char *)AT_CMGS,26);//准备发送短信for(i=0;i<2;i++)delay_ms(100);          //延时有助于稳定 if(rebackMesFlag==JIAOSHUI){UART_SendStr(USART1 ,"jiaoshui_ok! ",13); //发送短信息内容            }else if(rebackMesFlag==BUGUANG){UART_SendStr(USART1 ,"buguang_ok!  ",13); //发送短信息内容}else if(rebackMesFlag==GETMESG){UART_SendStr(USART1 ,(char *)tab,16); //发送温度湿度}else{UART_SendStr(USART1 ,"cmd_err!     ",13); //发送短信息命令错误}                 delay_ms(100); UART_SendStr(USART1 ,(char *)Crtl_Z, 1);        //发送for(i=0;i<20;i++)delay_ms(100);          //延时有助于稳定 }timeCount = 0;//延时设置量 stepNum++;//进入操作过程1}else if((stepNum == 3)&&(timeCount >= 4))   //定时读取短信{clearMesFlag++;if(clearMesFlag>10){clearMesFlag = 0;UART_SendStr(USART1 ,"AT+CMGDA=\"DEL ALL\"\r\n",20);//删除所有短信}timeCount = 0;//延时设置量    stepNum = 0    ;//进入操作过程1                          led_gsm=1;   //关闭指示灯readMesIng = 0;//读取短信过程中}                                        }        }
}

.

链接:https://pan.baidu.com/s/19G48iDByIchSn3ENkUO_6Q
提取码:1dub

.

基于STM32单片机的远程智能浇花花盆GSM短信浇水补光方案原理图程序设计相关推荐

  1. 基于STM32单片机远程浇花花盆GSM短信浇水补光设计原理图程序

    功能: 0.本项目采用STM32F103C8T6作为单片机系统的控制MCU 1.系统采用LCD1602液晶显示花盆湿度.温度和光照状态值等参数 2.可实现远程控制,通过GSM短信远程浇水和补光灯控制. ...

  2. 基于stm32单片机的WIFI智能联网天气预报自动校时系统(源码+原理图+全套资料)

    资料编号:071 通过wifi 联网获取任何城市的时间和天气,OLED显示,城市位置可以调整, 具体功能请看演示视频  全套资料齐全: 71-基于stm32单片机的WIFI智能联网天气预报自动校时系统 ...

  3. 最简单DIY基于STM32单片机的WIFI智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 第三篇:最简单DIY基于STM32F ...

  4. 最简单DIY基于STM32单片机的蓝牙智能小车设计方案

    STM32库函数开发系列文章目录 第一篇:STM32F103ZET6单片机双串口互发程序设计与实现 第二篇:最简单DIY基于STM32单片机的蓝牙智能小车设计方案 文章目录 STM32库函数开发系列文 ...

  5. c语言51单片机湿度浇花器,基于51单片机的室内自动浇花系统的制作方法

    本实用新型涉及单片机应用领域,具体涉及一种基于51单片机的室内自动浇花系统. 背景技术: 随着科学技术不断进步,人民的消费水平和生活质量逐渐,物质水平已经满足不了人民的需求,精神上的需求越来越受人们的 ...

  6. 【038】基于51单片机的土壤湿度自动浇花系统Proteus仿真设计

    一.压缩包资料内容 (1).基于51单片机的土壤湿度自动浇花系统proteus仿真设计一份: (2).基于51单片机的土壤湿度自动浇花系统proteus仿真设计keli源代码一份: (3).基于51单 ...

  7. STM32单片机蓝牙APP智能鱼缸水位温度加氧定时喂食补光控制系统

    实践制作DIY- GC0093-蓝牙APP智能鱼缸 一.功能说明: 基于STM32单片机设计-蓝牙APP智能鱼缸 功能介绍: 硬件组成: STM32F103C系列最小系统板 +LCD1602显示器+水 ...

  8. arduino智能浇花系统_基于Arduino Android的家庭智能浇花系统设计与实现

    摘要: 在国家的大力倡导与扶持下,物联网掀起了信息产业的又一次浪潮.作为物联网重点发展领域之一的智能家居因此峰回路转,迎来新的发展契机.智能家居系统产品分类较多,经过需求分析和研究,本文设计开发了一套 ...

  9. 51单片机智能家居环境检测 烟雾温度GSM短信提示报警器(原理图+程序+仿真+PCB)

    原理图:Altium Designer 仿真版本:proteus7.8 程序编译器:keil 4 设计编号:C0039 功能介绍: 1.单片机采用内置AD的51系列单片机,型号为STC89c52: 2 ...

最新文章

  1. docker安装Elasticsearch7.6集群并设置密码
  2. 团队-团队编程项目作业名称-模块测试过程
  3. pytorch的多分类问题
  4. PMCAFF问答精选 | 滴滴跟UBER最主要的区别是什么?
  5. scala强制类型转换
  6. empt注意事项 php_PHP编程注意事项
  7. 2015-11-16 入职坑
  8. 【BZOJ4300】—绝世好题(二进制dp)
  9. java游戏暂停弹出字体_小白写了个java的小游戏 想加个暂停的功能 无从下手 求大佬们帮...
  10. __name__ == '__main__'
  11. 指针运算符 * 说明
  12. Matplotlib 中文用户指南 3.5 密致布局指南
  13. The only difference is that they are written
  14. .net语言中使用MapWinGIS.ocx
  15. 管家婆支持mysql_开放多接口,支持对接管家婆等第三方应用
  16. Java的结构之美【2】——销毁对象
  17. Linux中利用NFS实现飞鸽传书
  18. python小学教材全解_小学教材全解五年级数学上人教版
  19. 区块链骇客第二讲: 自毁攻击
  20. 离谱!2019年诺奖得主大翻车!被曝54篇论文涉嫌造假,刚撤回4篇PNAS

热门文章

  1. 关于linux校准时间
  2. 用python画一个蜡笔小新
  3. 一文看尽Stata绘图
  4. 走向.NET架构设计—第三章—分层设计,初涉架构(后篇)
  5. wr720n刷成网络打印_USB打印机通过路由共享wifi局域网打印,同网段
  6. DS,Enovia,MatrixOne, eMatrix
  7. CDA Level1知识点总结之数据分析概述与职业操守
  8. java代码到opcode_OPcode简介
  9. Tomcat启用SSL导致Firefox出现“安全连接失败”错误的解决方法
  10. 优先队列之加油站最小加油次数