刘家宝
近些年来,随着科技尤其是物联网技术的快速发展,家庭中的智能电器越来越多,它们能够根据家中的实际状况,自动开关或进行调整,使用起来非常方便。这些电器设备只是普普通通的硬件,怎么会这么聪明?怎么会有感知判断的能力?它们是如何做到的呢?笔者将以“会听话的风扇——声控智能风扇”这个项目的实现为例,来回答这些问题。
声控智能风扇,当对着它说“开”时,风扇开始转动;再对它说“关”,风扇停止转动。这是使用者操作后直观的感受。
从声控智能风扇角度来说,它能够听到外界的声音,听到后能控制自己的开和关。因此,要实现这个智能风扇,需要解决怎样让风扇听到外界的声音和风扇获取指令决定开还是关这两个问题。
怎样让风扇听到外界的声音?人是通过耳朵来获取外界声音的,在物联网技术应用中,物体是通过各种传感器来感知世界的,因此可以借助声音传感器来让风扇获取外界的声音。
风扇获取指令后如何做出开、关的命令?物体其实是没有智能的,它的智能是人给予的,智能硬件设备是通过人编写的程序作出决定的,因此智能的核心在于算法,在于编写的程序。
1.明确声控智能风扇工作的具体流程
明确了声控智能风扇工作的整个流程,其实也就确定了声控智能风扇的算法。
声控智能风扇收集当前环境声音音量值,据此来判断开、关,接着让风扇转动或者停止,这个过程一直在重复执行着。
2.声控智能风扇的输入、输出
声控智能风扇获取外界声音后作出反应,因此声控智能风扇的输入是当前声音音量值;作出的反应是风扇转还是停,因此声控智能风扇的输出为风扇的转速。以Python语言为例,使用input语句输入声音的具体数值,数值越大,声音越强,使用print语句输出风扇的转速。
声控智能风扇的工作过程中,一直在接收当前工作环境下的音量值,判断后,输出转速值,重复执行这个操作,没有停止的时候,除非拔掉电源。因此,风扇的工作过程是一个没有结束条件的循环。在Python语言中可以使用while条件循环,且循环条件一直为真,用伪代码表示如下:
3.判断风扇的开和关
风扇什么时候开、什么时候关,需要确定风扇的开、关条件。
声控智能风扇打开的条件是获取的当前声音音量值高于标准值(无指令时环境的声音音量值),声控智能风扇关闭的条件也是获取的当前音量值高于标准值的时候,用伪代码表示如下:
为了便于后面阅读和理解程序,统一变量名,当前音量值用变量x来存储(x类型为整型),音量标准值为20,速度变量名为v(值为0表示不转,值为100表示转)。用Python语言描述风扇工作过程(本文代码均用Python语言描述),参考程序代码如下:
程序运行调试,验证发现问题,转速值一直为0没有变化,问题出在哪里?
声控智能风扇开和关的判断条件是相同的,音量值高于标准值时,风扇开和关的条件都满足,两条给风扇速度的语句都执行了,无法区分是转还是停。回想风扇工作过程,音量值第一次高于标准值时,风扇转,第二次停,第三次转,第四次停……我们可以发现這个规律:当音量值高于标准值的时候,奇数次转,偶数次停,需要记录次数。
1.Python编程完成风扇的程序
至此,声控智能风扇程序部分完成了,参考代码如下(代码不唯一):
2.实际产品中输入、输出
将程序代码中input输入当前声音音量值的语句改为由声音传感器自动获取,通过声音传感器获取当前环境标准值,替换程序中设定的标准值20,再将print输出风扇速度改为给电机一个电流,可以借助例如Arduino这类的开源硬件,将声音传感器、风扇电机与Arduino连接起来,将程序代码灌入硬件中,就可以看到实际效果。
了解了声控智能风扇智能的核心和实现过程,那么,温控智能风扇、光控智能灯等智能设备是怎么做出来的、怎么会这么聪明、怎么会感知判断等问题,也就能回答了。
对着声控智能风扇说“开”,它真的能听懂意思吗?其实不然,根据编写的代码,它只是通过声音传感器获取声音,并没有理解“开”这个语音的意思,第一次对着它说“关”,同样也会转起来。要想让声控风扇真正理解“开”这个语音,还得加上语音识别技术。
随着人工智能时代的到来,生活中的智能设备会越来越聪明,功能会越来越强大,使用会越来越便捷。科技改变未来,让我们一起期待更加美好的未来吧!
(责任编辑:白玉磊)