本工程包括一下功能:1、环境温湿度监测
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 2、土壤湿度监测
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3、环境可燃气体浓度监测
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4、RTC万年历功能
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 5、数据的实时显示(OLED屏幕、手机app)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 6、自动浇水模式、手动浇水模式
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ①自动浇水:系统自动监测土壤湿度,维持植物生长的湿润环境
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ②手动浇水:通过手机APP控制水泵开启、关闭
一、项目展示

? ? ? ? ??
二、项目实现原理
①手机端app的制作
本项目使用一款麻省理工研发的开发安卓app的平台——appinventor,基于图形化编程,是“不愿意编程党”的福音,不需要使用代码开发app,而是使用一些逻辑关系模块完成开发。首先在主页面拖放好各种想要的按键,之后再编程界面拖放逻辑关系模块,完成开发(与labview相似)。
②手机端连接云平台
在使用appinventor开发的过程中,调用连接云平台接口,连接云平台,博主使用的是巴法云平台,再巴法云官网有详细的教程。
额外说一下这个云平台接口,ClientSocketAI2Ext,这个不是appinventor的原生组件,需要再Extension下导自行导入插件。

另外,有想学习appinventor的可以看一下这个博主的网课,我当时就是跟随这个博主学的,很详细,很好学,两天完成。细说AppInventor【1】课程说明_哔哩哔哩_bilibili
?
我所圈的第一个里面,有appinventor安装教程
第二个所圈的是里面各种实例,有具体开发app的步骤 ,会教授如何完成组件摆放及如何编写逻辑模块。
③设备(单片机)连接云平台
本项目使用esp-01s通过wifi信号连接云平台(环境中必须要有wifi),以云平台为中介,完成与手机app的交互。
?三、各功能介绍及实现
1、远程手动浇水功能:手机端app远程控制水泵开关(手机app自主开发)
手机端通过触发相应的组件,将相应的控制命令上传至云平台,esp-01s通过wifi信号连接该云平台获取到该指令,并将该指令通过串口传给stm32,由stm32控制水泵开关。
2、自动浇水功能:自动监测土壤湿度,并控制水泵开关
系统具备土壤湿度传感器,当系统工作于自动模式下(通过app可切换工作模式),土壤湿度传感器监测到土壤湿度低于某一个阈值时,自动打开水泵进行浇水。
3、远程监测功能:环境温湿度、可燃气体浓度在手机端显示
系统具备dht11测温传感器、MQ-9可燃气体监测模块,单片机驱动这两个传感器工作,并将相应的数据通过esp-01s 、云平台,上传至手机app显示,(相当于时刻监视绿植的生长环境,确保绿植生长环境的正常。如监测绿植大棚内的环境等)。
4、本地监测功能:环境温湿度、可燃气体浓度在OLED屏显示
与功能3一样,单片机驱动这两个传感器工作,将相应的数据显示在oled屏上,但是这个更新的很快,而手机端是一段时间更新一次。
5、RTC实时时钟:OLED显示实时时钟,且支持按键离线修改
本项目利用核心板上的RTC时钟晶振,开发实时时钟,在时间显示界面可以观察到具体时间,且本项目支持“通过按键修改时间”。K1:进入时间设置界面、切换所修改的时间单位、返回时间显示界面,K2:时间加一个单位,K3:时间减一个单位
在时间显示界面触发K1按键,进入时间设置界面;之后触发K1按键设置不同的时间单位,刚进入时间设置界面时是对年份进行修改,再按一下K1对月份进行修改,如此递推(oled屏幕上有个小箭头,小箭头所指的就是当前正在修改的时间单位),当最后在按下一次K1时,返回时间显示界面,并进行时间更新。
|