对于养花的人来说,如果因为某些事情需要离家几天(比如出差、回老家过节等),那么离家的最近一段时间里,及时给花浇水,就是一个很大的问题。我之前也有类似的经历:孩子上高中,需要临时搬家到高中附近,虽然还是在一个城市,但距离还是挺远的,往来路程需要2 个多小时。在这种情况下,有一个能自动完成浇水的装置,就能解决这一个大问题。
也刚好赶上EEPW 举办一个活动, 使用TI 的MSPM0开发板实现一个方案分享的活动,有幸报上自己的姓名去参加,获得机会,使用MSPM0开发板制作这个装置。整个装置的系统构成:
给花浇水,通常有下两种方式:1. 定时浇水;2. 根据花盆中土壤的干湿度,确定几天浇一次水,一次性浇透。第二种方式因为涉及检测土壤的干湿度,需要增减一个传感器。常用的土壤干湿度传感器,在长时间使用后,会发生腐蚀。因此在制作这个装置的时候,选择的是第一种方案。这个方案的优点是,每天只需要浇少量的水。在天气比较炎热,环境和温度也比较高的时候,可以适当增加浇水量。
而实现定时,可通过单片机的定时器功能实现,也能够正常的使用时钟实现。我因需要获取每天的气温信息,要通过天气预报网站获得相关信息。既然使用网络,索性同时利用网络获得当前时间,并以这一段时间为基础,作为定时的标准。这样更准确。MSPM0G3507本身没提供网络访问功能接口,我就把以前常用的ESP8266 加进来,同时使用Arduino 编程ESP8266,快速获取当前时间信息和当日气温信息。MSPM0G3507 的外设接口很丰富,方便连接各种接口设备。这里使用MSPM0G3507 的串口功能,快速实现和ESP8266 的通信。
这次之所以选择的MSPM0G3507 开发板,一个重要缘由是因为MSPM0G3507 提供了丰富的接口,通过排针输出,用户都能够自由选择自身喜欢和习惯的外设;同时,配合设计工具,简化了开发过程,是的整个工程看起来很简洁、不凌乱。不需要单独的外部下载器,只需要用板载的下载器,就可以方便地下载、调试程序。下载上也不要说明特殊设置。因为在建立开发、调试环境上,MSPM0G3507 也具有很大的优势。MSPM0G3507 的低功耗特性,也很适合使用电池作为电源的场景。在关断模式下最低电流消耗仅78 nA,且支持IO 中断唤醒,非常省电。像我的这套装置,如果改用电池供电,调整程序只在特殊时间点才进行浇水处理。平时处于关断状态,只在需要浇水的时刻由ESP8266 完成唤醒,执行对应的处理(总系统中只有抽水马达用电比较大,OLED 显示部分,在实际应用时是可完全断开不显示的)。因此即使使用电池,也可以让整个系统工作很久。这样即使出现市电因为某个原因出现暂时断电,也不可能影响总系统的运行。
MSPM0G3507 就完全满足以上要求。作为TI 公司的产品,TI 公司是一家久负盛名的半导体公司,其生产的半导体产品一向以稳定性高、可靠性高而闻名。MSPM0G3507 当然也不例外。在使用MSPM0G3507 开发板开发的过程中,有官方网站提供了资料,有例程可供下载,让开发者不至于摸黑开发。另外使用TI 的Code Composer Studio 开发工具。这个IDE 提供了图形化的设置工具,对于设置怎么样去使用GPIO 口以其它外设,十分便捷。使用这个工具,可以非常容易配置各个外设,而不用用户花太多时间去查找库函数或者寄存器的说明。这种配置模式,可以极大地提高用户的开发速度,让用户在编程时,集中精力,把开发时间花费在业务应用上。对比其他单片机,这一点非常明显。
MSPM0G3507 内部集成了128 K 的flash,如此大的空间,使开发者根本不需要过多的担心程序空间不够用的问题。片内提供最高4 个串口设备,我实际使用了两个,一个作为调试口,在调试程序的时候,方便及时获取程序运行信息。另外一个串口用来实现和ESP8266 模块之间的数据通讯。芯片本身还有很多其他功能,尤其是数学加速器部分,可通过硬件加速数学函数的处理。
把更多的精力用在业务处理的实现,而不是花大量时间熟悉芯片的方方面面上,这是每个开发者的愿望。MSPM0G3507 就完全满足这一点, 开发IDE 和设置工具,都简单好用,让我这样一个不怎么熟悉TI单片机的,都能够迅速入手,完成开发工作,可以说MSPM0G3507 是一个相当的好的选择。事实上,MSPM0G3507 还有很多出色的功能,值得我去学习和探索,期待后面有时间,再花时间继续深入学习。
总体而言,MSPM0G3507 是一款很出色的单片机。功能丰富,综合性价比,是一款低成本的ARM32 bit M0 + 单片机,对于普通开发者而言,可完全用来作为单片机开发核心,去实现大多数的任务。