本帖最后由 mylife5566 于 2023-4-20 15:59 编辑
描述: 家里阳台的花经常忘记浇水,导致有的花因为缺水而枯萎,为此产生了制作一个自动浇花器的想法。偶然的机会看到QQ群里发布的武汉芯源半导体开发者扶持计划,正好本人也在学习STM32单片机,借此机会也试试咱国产的芯片(虽然去年参加过一次立创和芯源半导体举办的活动,但是那时纯粹是一个小白,只是跟着教程走了一遍,对这款单片机实际上一点都不了解)。本项目最初的设想就是制作一个具有定时自动浇花、湿度检测自动浇花、联网远程控制浇花的自动浇花器。虽然网上也有卖的成品,但是为了学习也是为了爱好,自己做的更有成就感。
版本说明: 本项目制作了两个版本,第一版实物验证时发现一个问题,采取1S锂电池升压驱动电机时,电池电压会瞬间拉低很多,导致联网模块供电不足重启。目前已废弃。第二版改进了供电方案,采用2-3S锂电池供电,DC-DC降压给电机以及其它设备供电,解决了电机启动瞬间导致联网模块掉电的问题。
V1.0(第一版)主要硬件:
1.MCU:CW32F030C8T6 2.WiFi模块:ESP01S 3.环境光采集:GL5566光敏电阻 4.锂电池和水泵电压采集:高精度电阻(电阻分压) 5.电流检测:INA226A 6.按键:6*6mm轻触开关 3个 7.电机驱动电路:PC817光耦、WSP9926A N沟道MOS管 8.锂电池充电电路:采用TP4056充电芯片 9.升压电路:XL6008E1 DC-DC升压芯片(输入电压:3.6V~32V,输出电流(最大值):3A) 10.降压电路:ME6211C33M5G-N降压芯片,2路3.3V输出,1路给主控以及外围电路供电,1路给ESP01S供电 11.蜂鸣器:12A05有源蜂鸣器 12.显示屏:预留SPI和I2C接口,外置1.7寸12864黑白屏。 13.扩展接口:预留3个扩展接口,可外接温湿度传感器、土壤湿度传感器等其它设备。 14.水泵:使用6V茶水机小水泵。 15.水管和水管分流器:8mm和4mm水管,8转4水管分流器(4孔或6孔)。 16.电池:18650电池2节。 17.电池盒:2节18650并联电池盒。 18.扩展模块1:土壤湿度传感器。 19.扩展模块2:SHT30温湿度传感器(备选)。 V2.0(第二版)主要硬件: 1.MCU:CW32F030C8T6 2.WiFi模块:ESP01S 3.环境光采集:GL5566光敏电阻 4.锂电池和水泵电压采集:高精度电阻(电阻分压) 5.电流检测:INA226A 6.按键:6*6mm轻触开关 3个 7.电机驱动电路:PC817光耦、WSP9926A N沟道MOS管 8.锂电池充放电电路:2串18650锂电池保护板(计划接入单片10V的太能板,直接给锂电池充电) 9.DC-DC降压电路:LM2596S-ADJ DC-DC降压芯片,输入电压范围4.5V-35V,输出1.23V-35V可调节,输出电流:3A(项目中采用7-12V输入,6.0V输出) 10.LDO降压电路:AMS1117-3.3 LDO降压芯片,最大输入电压:18V输出电压:3.3V 输出电流:1A 11.蜂鸣器:12A05有源蜂鸣器 12.显示屏:预留SPI和I2C接口,外置1.7寸12864黑白屏。 13.扩展接口:预留3个扩展接口,可外接温湿度传感器、土壤湿度传感器等其它设备。 14.水泵:使用6V茶水机小水泵。 15.水管和水管分流器:8mm和4mm水管,8转4水管分流器(4孔或6孔)。 16.电池:18650电池2节。 17.电池盒:2节18650串联电池盒。 18.扩展模块1:土壤湿度传感器。 19.扩展模块2:SHT30温湿度传感器(备选)。
功能简介: 1.使用CW32内部RTC时钟计时,通过按键或者手机设置自动浇水间隔时间(X天)、浇花时间(X:00)、浇花时长(X分钟)以及浇花开始日期; 2.采集环境光和土壤湿度,当光照和湿度低于阈值时自动打开水泵,浇水一段时间(程序中可调整)后关闭水泵。程序不断检测湿度,低于阈值继续浇水,直到高于阈值停止浇水; 3.ESP01S连接物联网,用户手机端远程控制浇水,设置浇花参数,ESP01S将控制命令以及参数通过串口发送给CW32; 4.ESP01S每隔一段时间获取网络时间发送给CW32单片机,用于对CW32的RTC时钟进行校准(此功能暂未实现); 5.对输出电机的电压和电流进行检测,电压过高或过低停止电机,空载电流(水箱无水)停止电机; 6.锂电池电压监测,低电量时关闭自动浇水功能; 7.ESP01S电源可通过CW32单片机打开或关闭,用来降低功耗(默认上电自动联网); 8.可设置输出电压电流异常报警,锂电池低压报警; 9.屏幕显示时间以及相关设置参数;
原理图
V1.0原理图
V2.0原理图
软件:程序分两部分1.CW32单片机使用KEIL开发;2.ESP01S使用ARDUINOIDE开发;外壳:网上采购的成品防水接线盒,尺寸158X90X60,在顶盖对应位置开孔安装控制板、显示屏、开关,电池盒使用3M胶带粘在顶盖内部,底盖只安装了水泵,开孔把进水和出水的两个接口伸出去;
实物照片(外观比较丑,见笑了)
V1.0版 焊接板子用到了电烙铁和加热板,焊接的比较丑,但是能用。 显示屏是老王店子里POS机上拆下来的,1.7寸黑白屏 分辨率12864,SPI接口,兼容ST7567,专门做了一个屏幕底板,方便安装到外壳上,使用排线加 8P的PH2.0插头和主控板连在一起。 第一版具有5V充电功能,所以外壳开了充电口。 V2.0版 这是第二版,采用DC-DC降压模式给整个系统供电,大部分元器件包括主控芯片全部从1.0的板子上移过来的,虽然有点费劲,但是至少不浪费,毕竟1.0版本的板子也没什么用了。 屏幕、电路板和电池都放在防水盒的上盖,底盖只放了一个水泵,这个水泵是在某宝买的的茶水机的水泵,商家给的参数是6V供电。 通过按键可以切换屏幕显示内容,第一页是时间、浇花模式、水泵状态、电池电压,第二页显示一些具体参数,第三页是设置页面,需要最右边的按键长按才能进入,短按是切换显示内容。在设置页面可以通过第一和第二的按键(也就是加减)来调整具体参数,比如改变浇花模式、浇花时间、浇花时长等参数。
这种成品的接线盒很适合DIY,唯一的缺点就是丑,还是那句话“又不是不能用” 水平有限,时间也比较紧,把之前贝壳物联的代码拿过来改了改,再加上他们的小程序,很快就能实现联网控制。
这个水泵的固定需要将上面的三个螺丝拧下,从外壳开的三个孔穿进去固定,保险起见,电机下面和底盖还打了热熔胶,防止外面接水管的时候把水泵怼进去。 网上买的水管内径买错了,买大了一号,最后用的是雾化器上的管子。水管分流器也买错了,买个4口的就行了,6口的水压太小,管口的水流的很慢很慢。 外壳上增加了一个充电口,输入电压8.4~9V,充电口可接8.4V的直流电源,也可以接一个10V的太阳能板。充电口正极经过一个二极管接到了一个2串7.4V锂电池保护板,这个锂电池保护板既可以给2串的锂电池充电,也可以放电。
侧边的三个接口用来扩展其他模块,包括温湿度传感器、土壤湿度传感器。
土壤湿度传感器建议用电容式的,反应灵敏、不易被腐蚀。
目前基本功能大部分已经实现,就是联网校准时间的功能还没有实现,程序还有一些BUG没有解决,新手学习之路还很漫长。 程序已开源,本人水平有限,写的不好,请大家指教! 最后,再次感谢CW32生态社区提供的帮助和支持,同时也希望更多的电子工程师和爱好者参与到国产芯片的开发中来,支持国产!
|