功能梳理

  • PCB线路板采用核心板+底板实现

核心板:排针引脚间距为2.54mm,2排,双排间距为2.54mm的倍数(方便与面包板联用),未使用引脚全部引出,核心板上的主芯片为STM32F103RET6。

目的:

  • 方便与面包板配合使用;

  • 核心板上预留两个2.54mm间距,4脚座和5脚座,部分传感器模块只需要这两个底座既可以实现模块功能。

  • 核心板上的主芯片相对较贵,做成核心板之后,可以重复利用,方便大家一起跟着做,以后我们只需要修改底板的设计即可。(本月的核心板没有变化,还是使用上个月的核心板

上图中各个模块简要说明:

  • 标号1为最小核心板,上面包括一个Micro USB接口的Debug串口(串口1)、RTC实时时钟电路;

  • 标号2为ESP8266 WiFi模块,用于实现与阿里云物联网平台连接,实现水泵的远程控制功能;

  • 标号3为RGB 全彩LED;

  • 标号4为LCD12864;

  • 标号5为土壤湿度传感器;

  • 标号6为使用光耦+三极管的方式实现继电器控制电路,用于控制水泵的开关;

  • 标号7为底板上的3个按键,从左到右,按键功能分别为:模式选择、关水泵(下限-)及开水泵(上限+);

  • 标号8为供电接口;

  • 标号9为蜂鸣器。

后台回复关键词“每月一练”可以获得PCB工程文件,将下图框选的文件发给线路板加工厂家,可以直接打样。两个板子在某立创十元钱就可以搞定。(202006每月一练活动中的核心板如果你已经打样了,那么本次的核心板就不用打样了,两个是一样的。

参考阅读:
STM32单片机最小系统详解

  • 蜂鸣器

系统状态提示音,比如,土壤干燥的时候,可以每隔5秒滴答响一声。

蜂鸣器的使用,参考阅读:
蜂鸣器演奏音乐“你笑起来真好看”

  • LED指示灯

土壤干燥程度指示;比如可以绿色代表正常,红色代表缺水状态;本设计选用了RGB 全彩LED。

RGB全彩LED的驱动使用PWM的方式进行驱动的,参考阅读:
利用PWM原理,实现呼吸灯功能
STM32驱动RGB全彩LED

  • 继电器模块

控制水泵开关

继电器的使用方法,参考阅读:
继电器(Relay)

  • 土壤湿度传感器

通过AD转换模块,获得到土壤湿度传感器模块的AD值,此值间接等价于土壤的相对湿度。也可以通过STM32的GPIO读取土壤湿度传感器DO的返回值,通过模块上的电位器,可以调整模块的阈值,进而调整模块的灵敏度。

本次活动选用AD值的方式进行判断是否应该启动水泵。

土壤湿度传感器模块的使用方法,参考阅读:
土壤湿度传感器,出远门再也不怕花没人浇水了

  • LCD显示模块

显示当前测量土壤湿度值和土壤湿度的上限和下限阈值。

为了与六月份的设计选用的0.96寸OLED屏有所不同,我们这次选用LCD12864液晶屏。

其实本设计理论上可以不需要液晶屏,增加液晶屏的意义不大,只要有云智能APP即可,而且把设计弄复杂了,我们此处增加液晶屏主要为了学习而添加。

LCD12864屏的使用方法,参考阅读:
STM32串行通信模式驱动LCD12864,结合手册从原理让你理解显示过程

  • 按键模块

手动控制水泵的开启和关闭。

可以设置土壤湿度的上下限,自动模式下低于下限启动水泵浇水,高于上限停止浇水。

按键翻页查看历史温度值,共计可以存24组(理论上24小时每小时一组,但是为了方便演示,默认1分钟存一组)底板上有一个24C02模块的原理图,用于存储历史数据,此部分内容8月份介绍。

  • WiFi模块

在手机APP上可以远程控制水泵的开启和关闭;APP上还可以查看当前土壤湿度。

ESP8266 WiFi模块的使用及连接阿里云物联网平台,参考阅读:
mini D1 WiFi模块Arduino开发简介
七步快速开启产品智能化
ESP8266连接阿里云物联网平台(Arduino方式)
Windows下AliOS Things环境搭建及ESP8266 固件下载
快速接入阿里云物联网平台技术方案分享

  • 串口通信

STM32的串口1作为Debug串口;串口5与ESP8266进行数据通信。

STM32串口通信的使用方法,参考阅读:
STM32F103 串口的使用方法

物联网模块ESP8266返回的数据格式为JSON字符串,对此字符串进行解析,参考阅读:
Keil环境下STM32工程加入cJSON
用cJSON解析心知天气返回的数据包

  • 实时时钟模块

用于记录整秒时间的计时,当土壤处于缺水状态时,每隔五秒滴答一次;使用STM32单片机自带的RTC功能即可。

STM32自带RTC功能的使用方法,参考阅读:
STM32 RTC及定时闹钟功能实现

  • 温度传感器DS18B20

设置上下限,超过蜂鸣器报警,提示防寒或降温;温度模块底板上有预留设计,各位可以自由发挥。

STM32驱动DS18B20温度传感器,参考阅读:
DS18B20温度传感器时序图解析(STM32)

成果展示

,时长03:20

最终实现的功能包括:

  • LCD12864液晶屏上显示土壤湿度的AD值、上下限值、水泵状态、当前运行模式,并将AD值上传至阿里云物联网平台上;

  • 手动和自动两种模式,利用云智能APP可以实现定时功能;

  • 手动模式通过底板上的按键1进行手动开启,湿度达到湿度设定值上限时自动停止;按键2可以手动提前关闭;按键状态与阿里云物联网平台上的状态实时同步;

  • 自动模式时,当土壤湿度低于设定值下限时,自动开启水泵,当湿度达到上限时,停止水泵;自动模式下,按键1和按键2可以手动调整上下限值。

  • 定时模式时,当网络时间达到设定时间时,云智能APP会自动下发开启水泵浇水指令;

  • 当土壤湿度低于设定值下限时,RGB LED呈红色;当土壤湿度介于上下限之间时,LED呈黄色;当土壤湿度高于设定值上限时,LED呈绿色;

  • 任何时候都可以用过手机上的“云智能”APP随时开启或关闭水泵;

  • 当土壤湿度过低时,每隔5秒,蜂鸣器滴答响一声,用于提示主人应该浇水了。