本帖最后由 czd886 于 2024-7-2 20:58 编辑

采用32位单片机作为核心控制器,并通过外围电路实现多个功能模块的集成,水泵灌溉系统结构框图如下图所示。
image.png

       本次设计采用了基于STM32单片机的最小系统,它包括了单片机自身、时钟电路和复位电路。在这个最小系统中,YL-69土壤湿度传感器和光敏传感器负责将环境参数转换为数字电平信号。这些信号由单片机处理后,再通过液晶显示屏(LCD)显示出测量得到的湿度和光照强度值。整个设计中,除了主控制芯片外,还涉及了多种外部电路模块,例如时钟晶振电路、湿度检测电路、温度采集模块、无线传输模块、继电器控制、液晶显示模块、报警模块以及按键模块等,以实现综合的功能需求。
1、单片机
       单片机是一种将CPU、内存和输入输出接口集成在单个芯片上的微型计算机系统。它由中央处理单元(CPU)、程序和数据存储组件、多种输入输出端口以及基础功能模块构成。通过软件指令,单片机能够精确且迅速地执行设计者设定的任务。由于其高性价比、低能耗、可靠性强以及出色的控制和扩展能力,单片机已成为电子系统设计中不可或缺的组成部分。它的诞生极大地简化了复杂电路的设计工作,并提升了系统的智能化水平[2]。目前,单片机已广泛应用于科技发展及日常生活的众多方面,并正朝向性能更强大、类型更多样化的趋势发展,预示着其在未来有着广泛的应用潜力。其结构如下图所示:
image.png


       单片机的最小系统是集成于单一芯片的完备计算系统,它能保证单片机正常运作并充分发挥其功能。这个系统就像是一个微型计算机,拥有作为控制核心的“大脑”,以及必要的输出装置和定时器,后者充当时间管理的中心。此外,它还具备通讯接口,将所有必要组件都集成在这块小巧的芯片上,形成了单片机这一高效且集中的控制单元。其结构如下图所示:
image.png


       STM32F103单片机是STC出品的一款适用于工业控制的高性能芯片,常作为数据处理和控制中枢,在各类传感器和外设间发挥桥梁作用。尽管单片机功能相比个人电脑更为专注和精简,但其应用范围却十分广泛,从家电、消费电子产品到高科技领域都有其身影。在本设计中,我们采用了STM32F103C8T6型号,相较于经典51系列,该单片机具有更快的运行速度和更多的先进特性。随着智能设备对传感器需求的增长,此类高级单片机得到了进一步发展和应用。它还内置了两个模数转换器(AD转换器),极大地简化了我们在设计检测功能时的复杂性,因为这样就无需额外添加外部模数转换芯片,这显著提升了设计的便利性和实用性。
       STM32单片机在通信和控制功能上的能力很强。STM32拥有五个串口,大大增强了其通信能力。此外,STM32能够以多种不同的时钟模式工作,这使其在对功耗有严格要求的产品中占据了重要位置。
       STM32单片机在多个方面展现出独特的优势特性。其中,STM32C8T6系列采用了RTC低负载起振方案,而非传统的成本导向型圆柱晶振设计,以实现更高的效率和稳定性。该单片机配备48个引脚,可满足复杂的系统集成需求。其运行在72MHz的工作频率下,确保了高效的处理速度。在定时器资源方面,它内建了3个通用定时器和1个高级定时器,增加了灵活性和控制精度。此外,单片机还集成了2个具备2位至16通道配置能力的ADC模数转换器,以适应多样化的数据采集需求。
       在电源管理方面,STM32C8T6采用3.3V稳压芯片,确保能够安全稳定地提供最大300mA的电流输出。为方便开发调试,该单片机支持ST-LINK和JTAG两种调试下载接口。存储资源方面,它配置了64kB的FLASH存储空间和20kB的SRAM内存,为用户程序和数据暂存提供了充足的支持。STM32实物图如下图所示:
image.png


2、电源电路设计

       在此次设计的单片机系统中,采用5V直流电作为供电来源。供电部分主要包含一个三针电源插口和一个六针电源开关两部分。电源插口负责接入外部电源输入,而电源开关则用来掌控整套电路的开启与关闭状态。插口中,中间引脚接地,第三个引脚仅起固定作用,不具备其他特殊功能;首引脚则与电源开关的第三引脚相连,形成通路。如下图:
image.png


3、LCD1602液晶显示电路
       在本设计中,我们采用了型号为SMC1602A的液晶显示屏。该屏幕基于液晶材料的独特物理属性,通过施加电压至显示区间来实现控制。当屏幕得到电源供应,它便能够展示图像与文本信息。这种显示方式不仅能够提供清晰的显示效果,而且还能有效地降低功耗,使得设备在长时间运行过程中能够保持较低的能耗。总的来说,液晶显示器在现代电子产品中的应用非常广泛,其优越的性能和低功耗特性使其成为了许多智能设备的理想选择,如下图所示。
image.png


4、土壤湿度传感器  
       湿度传感器的工作原理如同一个随湿度变化而改变电阻值的可变电阻器。在湿度较低时电阻可高达10KΩ,湿度较大时则可低至0.1Ω。湿度变化引起传感器电阻值的改变,进一步导致电路输出电压变化。通过调整电阻值,可获得满足电路需求的电压输出。此次设计采用的是土壤湿度传感器YL-69,如下图所示。
image.png


土壤湿度传感器YL-69具备以下特点:
1)传感器表面经镀镍处理,拥有扩大的感应区域,可增强导电性,避免与土壤接触时的腐蚀问题,从而延长其使用寿命;
2)可实现对土壤湿度的广泛控制,并利用ADC0832进行模数转换;
3)采用三线制设计,连接简单,只需将VCC外接3.3V-5V电压,GND外接数字地,AO“小板数字量输出接口”接入AD的模数转换通道即可;
此款湿度传感器特别适用于土壤湿度的精确测定。模块中配置了一个蓝色电位器用以设定湿度警戒阈值,顺时针转动电位器时,预设的湿度限制值会相应上调;反之,逆时针转动则会使阈值下降。此外,模拟输出接口A0可以直接与单片机连接,允许单片机读取土壤湿度数据。土壤湿度的模拟信号通过ADC0832模数转换器转换成数字信号,以便于单片机处理和分析。
5、继电器驱动电路
       在本次设计中,控制外围设备如水泵和照明系统等,主要是通过继电器实现的。为了使用继电器进行控制,我们在其端口连接了负载电路。这些负载主要用于操作水泵和提供光照补偿。当继电器接通时,水泵将启动,对植物进行灌溉、降温以及提供照明。因此,通过简单地操控继电器,我们能够实现对这些设备的控制。
继电器的优点包括快速的动作、稳定的工作性能、长寿命以及小巧的体积。由于这些优点,继电器被广泛地应用在许多领域,如电力系统的保护、自动化设备、运动控制、遥控技术、测量设备和通信系统等。电磁继电器工作原理和特性如下图所示:
image.png


       电磁继电器是一种包含铁芯、线圈、衔铁和触点簧片等组件的电子器件。当适当电压施加在线圈两端时,会在线圈内诱发电流并生成磁场,进而牵引衔铁朝向铁芯运动。这一运动会导致衔铁上的活动触点与静态触点(通常处于断开状态的“常开触点”)闭合,实现电路联通。当线圈电源断开时,磁场消散,弹簧的回复力促使衔铁复位,从而使活动触点脱离原本的静态触点(常态下接通的“常闭触点”),电路随之断开。如此,继电器通过吸合和释放这两个动作过程,有效地实现了对电路的开启和关闭控制。值得注意的是,“常开触点”是指在无激励电流时仍保持断离状态的触点,而“常闭触点”则是在无激励时依然保持闭合的触点。在继电器系统中,通常有一个用于操控继电器动作的低压控制回路,以及另一个由继电器控制通断的高压负载回路,如下图所示。
image.png

6、DS18B20温度电路设计
       DS18B20温度传感器利用温度对内部振荡器频率的影响来测定温度,其原理图如下图所示。该器件内部集成两个具有不同温度系数的振荡器作为温度测量的基础元件。其工作过程为:低温系数振荡器产生的时钟脉冲在受到高温系数振荡器门控周期的约束下进行计数,该计数值与-55°C的标准温度相对应。当在门控周期内计数值降为零,表明当前温度高于-55°C,此时温度寄存器内的数值将按一定规则递增。为补偿振荡器因温度变化产生的非线性误差,计数器会在斜率累加器设定的基础上重新初始化,并继续计数直到再次归零。若高温系数振荡器的门控周期还未结束,上述计数过程将持续循环,直到门控周期完全结束为止。最终,温度寄存器内以16位二进制补码形式存储的数值即代表所测得的温度值,主机可通过发送读取存储器命令获取这些数据,之后通过相应的数据解码和转换(包括补码还原和转为十进制),得出实际的温度读数。
image.png


7、蜂鸣器报警电路设计
       在无水情况下,我们的设计方案中,基于STM32单片机的控制系统会触发蜂鸣器报警。考虑到STM32单片机上电后其引脚呈高电平状态,我们无法直接使用8550型三极管,因为它在低电平时才能导通。因此,我们选用了8050型三极管,该型号能在高电平状态下导通。欲启动蜂鸣器报警功能时,只需向三极管施加高电平信号即可。三极管的核心作用在于电流放大,其电流放大倍数可达200倍左右。为限制电路中的电流,我们串联了一个1K欧姆的电阻。该蜂鸣器的规格参数包括:工作电压5伏特,最低灵敏度为75分贝,能在5伏电源下良好运行,且P3端口无需额外配置上拉电阻。我们通过一个1K欧姆电阻将IO口的输出信号连接至NPN型三极管(型号为S8050)的基极,而PNP型三极管的发射极则与5伏电源相连。接着,三极管的集电极接到蜂鸣器的正极,蜂鸣器负极则接地。根据电阻计算公式R=(5V-0.6V-3V)/2mA=0.7K欧姆,我们选择了一个1K欧姆的电阻进行匹配,具体电路连接如下图所示。
image.png


8、光照采集电路设计

       在设计光敏电路时,我们经常选择使用白炽灯或自然光作为光源,以便通过光敏电阻的阻值变化来控制。此外,光敏电阻对光线的敏感度与人类眼睛对可见光(0.4~0.76)微米的响应非常相似,也就是说,凡是可以被人眼察觉的光线变化都能够引起光敏电阻阻值的改变。一般来说,光敏电阻器由半导体材料制成,例如硫化镉。这种光敏电阻器具有独特的性能,随着科技的进步,其应用范围将进一步扩大。
       在光敏电路中,通过AD进行模数转换,可以校准当前光照值。光敏电阻的特殊性质使其在光照控制和测量中发挥着重要作用。光敏电路如下图所示:
image.png


9、WiFi无线传输电路设计
在本次设计中,我们选择了WIFI模块作为无线通信的解决方案。利用这个模块,我们可以将实时数据和参数以无线的方式传输到用户的手机上,以便进行查看。
在本次设计方案的无线通讯环节,我们选用了ESP8266无线串口模组作为数据传输组件。这款ESP8266模块因其低能耗特性、集成UART至WiFi的透明传输能力、远距离通信覆盖、价格亲民和小巧体积等特点,特别适宜嵌入到各类产品设计之中。模块内建了LWIP协议堆栈,支持接入点(AP)、站(STA)以及混合(AP+STA)三种模式运行,并可通过简洁高效的AT指令集进行灵活配置。尽管ESP8266的工作电压标准为3.3V,但得益于电压转换,本设计中单片机提供的5V电压也能确保其正常运行。本次设计借助ESP8266模块成功建立了单片机与智能手机间的无线通信链路。通过WIFI功能,单片机采集到的温度、湿度以及烟雾浓度等数据能够实时发送至手机应用,从而在屏幕上清晰展示。观察如下图所示的ESP8266模块电路布局,可以看到其2、4和8号引脚连接到了地线,而1号引脚则对接单片机的RXD接收端,5号引脚则对应连接至单片机的TXD发送端。
image.png

10、软件设计所用的流程图
image.png


12、土壤湿度光照子程序
在本次设计中,土壤湿度和光照的检测数据是通过单片机的内部模数转换器(AD转换器)获取的。程序的处理逻辑对于两种数据是相同的,不同之处在于选择了不同的AD通道进行数据的采集。具体来说,当土壤湿度和光照传感器捕获到当前环境的数据时,这些模拟信号会被传输到单片机的AD引脚,然后通过AD转换器进行初始化和模数转换,以获得当前的数值。在本设计中,我们使用了B0和B1引脚作为数据采集的通道。
在数据读取阶段,每个数据单元包含8位二进制数,程序会逐步提取这些位数据,然后将这些读取到的位信息解码成数字量,并进一步换算成相应的电压值。首先,须对ADC输入引脚进行初始化配置,之后方可开始数据读取操作。例如,通过调用Read_ADC(0)函数,我们可以获得转换后的数据值。在数据输出的过程中,数据从最高位D7开始,按顺序向下递减至最低位D0进行输出。在这个过程中,使用了一个循环来逐位处理数据:
for(i = 0; i < 8; i++) {
    dat <<= 1; // 将dat左移1位,相当于乘以2
    dat |= ADDO; // 使用按位或运算将ADDO的值合并到dat中
}
在这段代码中,左移运算符(<<)用于将数据向左移动指定的位数,而按位或运算(|=)用于将两个数值进行按位或操作,并将结果赋给左侧的变量。这个过程会重复进行,直到所有的8位数据都被处理完毕。
A/D转换的程序流程图(如下图所示):
image.png