首页 / 行业
如何用鸿蒙开发板轻松做一个报警器(内附教程)
2021-10-11 14:36:00
通过前面两篇贴子的介绍,相信大家已经掌握如何使用 Python 操作 GPIO 和 I2C 了。
那么今天我们可以更进一步,通过 Python 中的 GPIO 和 PWM 接口使蜂鸣器发声。
当然,如果只是实现这个功能就太无聊了,所以我们可以扩展一下,做个稍微有意思一些的东西。
嗯。。。想想做点啥呢?!翻箱倒柜一番之后,我找到了下面这块扩展板。
这是小熊派鸿蒙开发套件中的“智慧安防”扩展板,板子上搭配了一个红外传感器和一个蜂鸣器。
基于这个板子,可以开发一个简单的安防案例:当红外传感器有感应(有人靠近)时,触发蜂鸣器发出警告(发声)。
在开始之前需要先介绍一个新概念:脉冲宽度调制(Pulse Width Modulation),即:PWM。
这是一个属于硬件电路层面的概念,对于物联网开发来说不需要特别深入的对它进行研究,只需要掌握基本原理后应用到开发中即可。
简单的说,PWM 就是利用数字信号输出模拟信号的一种技术。众所周知,现代计算机系统是数字驱动的,即:所有计算机部件在高低电平的交替驱动下工作。
如果所有的外设都是数字的,那么事情就很简单了,直接 GPIO 连接就可以通信。
然而,有些外设就不是数字的,而是模拟的,需要接收模拟信号(如:正弦波信号),所以需要借助处理器使用 PWM 技术实现模拟信号。
基本原理如下:
根据电工电子学老师的说法,如果需要产生这样的一个正弦波,可以用多个方波代替,其效果是相同的。
图 a) 中的正弦波可以用一个个幅值相同但是宽度不同的方波代替,如图 b) ,只要这些方波与 t 轴围起来的面积和原始正弦波与 t 轴围起来的面积相同即可。
有了上面的原理之后,接下来需要讨论的就是:如何调节出等效的方波?
为了解决这个问题,需要了解占空比的概念!占空比指在一个周期内,信号处于高电平的时间占据整个信号周期的百分比。
在上图中一个周期是 4ms ,而高电平在一个周期中的持续时间是 1ms,所以占空比为 25% 。
掌握了这些理论性的东西之后,就可以考虑如何实操的问题了:怎么实现 PWM 信号(方波信号)输出?
很幸运,Hi3861中自带了 PWM 模块,所以在代码层面只需要调用相关 API 接口向 PWM 模块设置必要参数,就可以输出需要的连续 PWM 信号(方波信号)。
上面表格中的接口功能可谓一目了然,几乎可以做到“开箱即用”,唯一需要做解释的就是 start(port,duty,freq)这个函数。
port 表示 PWM 信号的输出通道编号,freq 用于控制 PWM 信号的输出频率,duty 用于指定占空比,占空比的值为 duty 和 freq 的比值。
Ok!有了这些铺垫,可以上代码了!
Snippet 1部分的代码先对 GPIO_7 进行初始化和功能设置,目的是接收 is1 也就是红外传感器的感应信号,当 Hi3861 接收到这个红外感应信号就会触发回调 is1_callback() 。
Snippet 2 部分的代码复用 GPIO_8 使其连接 PWM 模块,目的是对 PWM 进行参数设置。
这里可以更进一步的给大家科普一下 GPIO 和 PWM 的关系:在理论上可以直接用 GPIO 产生需要的方波信号,但现实中并不会这么做!
原因很简单,这么做会耗费大量的处理器资源,并且产生的方波信号频率有限。
所以,一般都会引入独立的 PWM 模块,处理器通过 GPIO 与这个模块连接在一起,从而能够对其进行参数设置。之后,具体产生方波的工作就由 PWM 模块完成了。
接下来,看看回调函数 is1_callback() 的实现。
代码很简单,核心部分就是对变量 pwm_on 进行标记,即:当接收到红外感应信号的时候将 pwm_on 赋值为 True。
然后呢?然后在别处进行处理!
脚本文件的最后,可以看到处理 pwm_on 为 True 的代码,即:当 pwm_on 为 True 时,调用 start() 函数促使 1 号 PWM 通道产生方波信号。
而 1 号 PWM 通道连接的是一个蜂鸣器,产生方波信号的最终结果就是使得蜂鸣器发声。
整体流程如下:
最终效果如下:
可以看到,当我靠近开发板时,红外感应器立即发送感应信号,进而触发蜂鸣器发声。
WOW!一个简单的安防系统就这么完成了!
PS:最新版 Python 引擎库能够支持几乎所有鸿蒙的外设接口,以及基础浮点运算。
感兴趣的同学可下载附件中的代码和文件自行编程尝试。
Enjoy It!
代码开源地址:
https://gitee.com/delphi-tang/python-for-hos
最新内容
手机 |
相关内容
英伟达芯片开发过程引入聊天机器人
英伟达芯片开发过程引入聊天机器人,扩展更多AI应用,聊天机器人,扩展,芯片,英伟达,开发过程,调试,英伟达是一家全球领先的半导体公司,消除“间隙”:力敏传感器如何推动新
消除“间隙”:力敏传感器如何推动新颖的HMI设计,传感器,智能手机,交互,交互方式,操作,用户,随着科技的不断发展,人机交互界面(HMI)的设振弦传感器智能化:电子标签模块
振弦传感器智能化:电子标签模块,模块,传感器,操作,连接,安装,控制,mbrs360t3g振弦传感器是一种常用的测量设备,用于检测物体的振动。工业物联网模块应用之砂芯库桁架机
工业物联网模块应用之砂芯库桁架机器人远程无线控制,模块,物联网,控制,操作,安全性,无线通信,砂芯库桁架机器人是一种用于制造业中语音芯片故障的原因简述
语音芯片故障的原因简述,原因,故障,芯片,语音,温度,确保,TS5A3157DCKR语音芯片是一种集成电路,用于处理和识别语音信号。通常由数字什么是屏蔽触发器,屏蔽触发器的组成
什么是屏蔽触发器,屏蔽触发器的组成、特点、原理、分类、操作规程及发展趋势,触发器,屏蔽,发展趋势,分类,事件,机制,屏蔽触发器(Shiel什么是密封继电器,密封继电器的基本
什么是密封继电器,密封继电器的基本结构、特点、工作原理、应用、操作方法、主要问题、保养方法及发展历程,继电器,密封,工作原理,什么是ESD防护器,ESD防护器的组成、
什么是ESD防护器,ESD防护器的组成、特点、原理、分类、操作规程及发展趋势,分类,发展趋势,操作,护垫,安全性,用于,ESD(Electrostatic