
毕业设计| 想玩STM32浇花机吗?把电脑浇报废的那种 自制浇花机做毕设也是个不错的选择,比如我就是用51单片机实现了主从控制的浇花机。疫情被关在家里时间一大把,就重新改造这个浇花机,使用STM32+机智云实现。 ![]() 为什么只有51版本的呢?在做STM32版本测试时候,由于土质过硬花盆太高,软管蹦出,水浇到了笔记本键盘上,差点当场让电脑报废。心有余悸,因而就没有拍摄演示视频。但我开源的STM32版本的代码功能都是可以实现的,这点大可放心。 51版本的初衷是利用主从机通信的方式实现最浅显意义上的“物物相连”(主要还是因为当时还不太会使用STM32图片)。做出来进行实际测试的时候发现控制距离比较短,主从机通信方式不够便捷,因此想到了用STM32搭配机智云的方法将这个小项目更进一步,升级成入门级的IOT方案。 先来看看在硬件和软件上,51单片机版和STM32版的对比: D' i- h" L& e7 R 实物对比: ![]() 软件流程对比: ![]() 51单片机版本 ![]() STM32版本 51单片机版本里,使用DS18B20测量空气温度,DHT11测量空气湿度,使用了电阻式土壤湿度传感器接入PCF8591进行AD转换。带有各种传感器模块的是放置在田间进行测量与控制的从机,不接入传感器的是手持终端即主机。 ![]() 从机测量灌溉环境中的空气温度、空气湿度、土壤湿度并进行显示,并将这些参数通过蓝牙回传至主机进行显示。同时主机上的屏幕也会显示当前设置的空气温度阈值、土壤湿度阈值。 设计时的想法是超过空气温度阈值板上的蜂鸣器会报警,与蜂鸣器并联的红色LED灯会点亮,提示操作人员适当浇水,但是由于设计的一些问题,蜂鸣器发出的响声非常小、推测是基极电流过小使三极管无法完全导通,所以只有红色LED点亮作为报警提示。 主机的OLED屏幕上还会显示灌溉模式:自动或者是手动。主从机都可以通过自带的矩阵键盘对灌溉模式和执行器的导通关断进行控制,可以同步显示。执行器选用的是普通的继电器模块,控制一个小型的水泵,因为选用的主控是STC89C52RC,没有PWM输出,并且我对机械结构的设计是一窍不通,所以没有用H桥搭配稍微大一点的直流电机做控制。 通信采用的就是简单的串口通信,使用HC-05的蓝牙,比较简单。 " e% h b) W5 j E, l; sSTM32版:使用正点原子的mini开发板和屏幕作为硬件平台,力求保证硬件的稳定性。 本质上的控制还是没变,但是使用了正点原子的esp8266模块,刷入机智云的固件,在机智云官网上自己定义数据点,生成了一个可以使用的demoapp,将主机替换成了手机app,从而实现了初步意义上的物联网。 ![]() 由于使用了机智云平台和320x240的LCD屏幕,加入了一些新元素: 1)空气温度测量模块更换为DHT11,选择了一个质量更好的模块来提高精度,去掉了DS18B20(里面设计到浮点运算,影响系统实时性); 2)使用电容式土壤湿度传感器,直接接入STM32F103RCT6的adc通道,同时使用DMA读取,加快处理速度(虽然也没什么必要,数据量也不大); 3)使用LCD屏幕写了一个简单的显示界面,用红绿颜色块来提示继电器的开关状态; 4)app中添加了报警功能,当环境量超过阈值时,app中会不停弹出alarm显示文字。 v [& } F4 N- Q4 O( w% ^/ c) |![]() 为了降低开发者的开发门槛,缩短开发周期,降低开发资源投入,机智云推出了代码自动生成的服务。目前自动生成服务支持的硬件方案有:独立MCU方案和SOC方案。浇花机项目中使用的是独立MCU方案,因为我用的是标准库,用独立MCU方案方便移植。 两个版本的源文件全部分享给大家,点击阅读原文获取,也可复制链接至浏览器打开:https://darwinlearns.com/productinfo/119899.html 1 t; v( x2 R/ |% A; Q, F$ lEND ( ]8 o5 C( B' v2 H文章出处: star alliance 达尔闻说 |