功能梳理
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秒,蜂鸣器滴答响一声,用于提示主人应该浇水了。