本帖最后由 suncat0504 于 2023-1-5 14:29 编辑
#申请原创# @21小跑堂
之前获得了一块nRF52840开发板,本来打算用这块板子的2.4GHz中的无线通讯功能和其它nRF24L01模块组网通信,实现无线控制网络子设备,实现给各个花盆花浇水的功能。但实际开发测试中发现,nRF52840的2.4GHz通讯方式和nRF24L01模块的通讯方式不同,实现地址匹配可不太容易。需要花点时间搞明白才行。无奈之下,就想着把nRF52840开发板新作为主机,像其它开发板一样,利用GPIO口,和nRF24L01模块之间完成数据交换,进而和子机nRF24L01模块之间通信,实现控制子机的动作。
按照这个思路,搭建了如下电路:
主机
子机
主机由nRF52840 DK开发板 + OLED显示屏 + nRF24L01构成。同时利用nRF52840 DK开发板的四个按钮,完成菜单选择、参数设置等处理。经过测试,nRF52840 DK开发板的P1.01 ~ P1.08完全可以作为通用的IO口,完成输入输出处理,所以我就用这几个口,连接OLED显示屏和 nRF24L01无线模块。OLED显示屏和 nRF24L01无线模块的电源使用板载的3V电压输出。
系统配置了三个菜单项目,分别为:
1、设置当前时间
2、设置浇水时间
3、测试子机连接
·设置当前时间,是设置系统当前时间。在浇水计划中,每天根据浇水时间的规划,到了指定时间后(只精确到时:分,不计秒),启动浇水,实现自动定时浇水处理。
可设置项目为年月日+曜日+时分秒。
·设置浇水时间,是设置每天几点几分启动浇水。设置时先选择适用的子机,然后选择浇水时间。
可设置项目为时分 + 浇水时长(单位秒)+是否生效(0:无效,1:有效)。每个子机都有自己独立的浇水计划,通过菜单,进行灵活设置,实现不同的浇水计划。
·测试子机连接,是为了验证主机与自己之间的通讯是否畅通
子机选择AT89C52处理器作为控制核心(因为可以使用3.3V电源,和nRF24L01的工作电压匹配),配合nRF24L01模块,构成网络子机系统。子机板上有拨码开关,用于灵活配置子机的物理地址。以目前的设计,最多允许16个子机,对于一般家庭而言,足够用了。子机在收到主机的通讯数据后,获取浇水时长等信息,控制继电器给抽水马达加电,从水源中抽出水。到达规定的浇水时间后,关闭继电器供电,完成一次浇水任务。
现代生活中,在家里养花,是咱们国家非常常见的。但是养花是需要花精力和时间的。而且有时候因为工作原因需要会长时间出差,有了这套装置,可以保证在无人状态下,根据定时计划,实现自动浇水。同样经过一些改造,也可以用来实现给宠物自动喂粮和提供饮水。
如果在主机中再加入联网、摄像功能,就可以实现异地查看设备的工作情况,以及远程调整浇水计划,会更加方便。
因为时间仓促,只是让系统具备最简单的组织内部网,实现无人状态下的自动浇水功能。而且系统的搭建也很简陋。期待的最终结果是:子机形成独立的一个模块,可以直接挂在饮料桶上,以电池供电,可以灵活拆卸。
后面随着对nRF52840的深入学习,也会逐步完善系统机能。
视频演示地址:
|