TonyCode 2018-08-07
Hello,我起爱的伙计们,好久不见了。已经两个多月没有更新文章了,看到大家还在,鄙人心里是十分的感动啊!
由于前段时间在忙一些项目(搞不好要蹚一下智能家居的浑水),最近呢又忙着给我的学员备课(关于网络安全编程的,感兴趣的可以讨论一下)一直没来更新文章,对于私信也都没来得及回。
还请伙计们海涵!鄙人不周到之处还请恕罪恕罪...
现在“智能家居”这个词是很火热,各大厂家也都纷纷推出了自己的产品,那作为平民的我们,买的时候还是会考虑一下,家里的老设备,食之乏味弃之可惜,那能不能改装一下呢?
没错,答案是能,而且很简单(要求不复杂的情况下),我们今天就来实现改造一台废旧的风扇。原理也简单,代码也简单。
如果亲爱的伙计们,你们感觉有意思的话,那么这篇文章可以继续看下去了。
做一些简单的实验,可以让没入门的小兄弟感受到创客的奇妙,说不定就进了改造世界的坑了呢~
arduino nano(其它型号也行)
bth蓝牙模块(推荐HC-05)
跳线若干
继电器模块 *n个
arduino扩展板(最好有)
Android手机
Amarino蓝牙调试助手
有伙计可能问,你改造啥不好,偏偏改造这么个玩意。
其实呢,前段时间回老家。我母亲跟我讲,家里的风扇坏掉了,天热了,你看看能不能找人去修理一下子。
要换做现在的年轻人,那没得说。破风扇还修啥?开空调多好,不行买个新的也行啊。
可我老母亲,简朴了一辈子,省点钱都是为了儿女,这么热的天也就开个风扇。一时心酸,我就回答道,不用了,这点小事我来就行了,找人修还得花钱。
于是就有了今天的文章。
把风扇拆开之后,测了测电路板,推断应该是电容不行了。家里又没有,淘宝一个吧又不值当的,一想,抽屉里还有几块arduino的开发板,还有几个继电器没用,那合得来了,改装一下吧。
当然,如果你的风扇的PCB板子不是这样的也没关系,找到关键点就行,其实都差不多构造。
板子上有四个点,分别对应着高中低四个风速以及一个摆头。
虽然电容坏掉了,但如果直接把风扇的电源接到上图四个点上,风扇同样可以工作。那这就放心了,直接在这几个点与电机的连接上加一个继电器不就可以控制了嘛。
继电器:
继电器模块
这里我们再来补充一下关于继电器的一些小知识:
继电器输出端:
1、NO: 继电器常开接口,继电器吸合前悬空,吸合后与COM短接
2、COM:继电器公用接口
3、NC: 继电器常闭接口,继电器吸合前与COM短接,吸合后悬空
因为继电器里面是线圈,是通过上电后吸合来来控制导通的,所以我们可以用单片机供给高低电平来控制。
继电器上的IN:接收单片机管脚传来的高低电平,高或低电平控制继电器吸合。
高低电平触发选择端:
1、跳线与LOW短接时为低电平触发;
2、跳线与HIGH短接时为高电平触发。
(接线图)
以上是花的草图,大体上表示的就那么个意思。
注:
由于继电器有常开常闭两个端,且有一端通电导通,我们的风扇由于考虑到控制问题所以接常开,上电才能工作。
其次,继电器不能全部导通,比如我们要调到抵挡的风速,那么中高档的继电器需要断开,否则容易烧坏风扇,其它档位同理。
继电器说完了,接下来就是arduino跟蓝牙串口通讯了。
(连接HC-05)
由于Arduino跟蓝牙模块的通讯是串口模式,所以arduino的RX/TX要接蓝牙模块的TX/RX(注意是反着的)
然后就是arduino串口读取蓝牙模块串口的数据了,这里我们用到Serial.available() 这个方法:
void setup(){
Serial.begin(9600); //设置波特率
}
void loop(){
while(Serial.available()) //接收来自蓝牙模块的数据
{
data = Serial.read(); //读取数据
Serial.print(data); //打印数据
}
}
一个简单的串口通讯程序就写出来啦,是不是很简单。
接下来我们说几个常见的函数做拓扑就直接上代码了。
pinMode() //定义管脚输入输出
digitalWrite() //控制管脚输出高低电平
注意:由于单片机的引脚有的加了上拉,所以初始状态下,不一定都是低电平(导致都是低电平效果有的继电器导通,有的不导通),这个自己测试。
(上部分)
(下部分)
我们将代码通过arduinoIDE烧录上去之后,然后用安卓手机打开蓝牙调试工具(这个随便下载一个即可)推荐Amarino挺好用的。
(Amarino蓝牙助手)
然后连接蓝牙模块(HC-05默认的密码为:1234),之后就发送ABCDE来测试效果就OK了。
简陋的APP
顺便自己写了一个简陋的APP来控制,效果还是可以的,我这边一天24小时运行,开了好多天了。稳定性不错!
有些人很不待见arduino这个平台,这里简单表示下鄙人的看法。作为一个新兴的平台,我觉得arduino的存在是很好的,它十分轻便容易上手,在一些企业产品的架构阶段,有很多人都喜欢用arduino来实现功能。
毕竟现在市场竞争越来越大,很多中小企业追求的是产品开发上架的速度,如果把握不好,很可能就被别人抢占市场。再加上现在的很多芯片厂商都喜欢跟arduino沾点边,一些厂商直接标识“支持arduino编程”,可见arduino已经慢慢开始走向台面。
这就跟当年python不受开发者待见一样,未来的发展好坏谁也不能预测,大家喜欢就去深究吧。