OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5093|回复: 1

基于ArduinoUNOR3的智能调速风扇

[复制链接]

50

主题

68

帖子

0

精华

版主

Rank: 7Rank: 7Rank: 7

积分
272
金钱
272
注册时间
2017-3-30
在线时间
25 小时
发表于 2017-12-2 13:29:46 | 显示全部楼层 |阅读模式
一,项目介绍
  如今相当一部分的家庭依然使用着一些老式家电,扔掉浪费,继续使用又有点土不拉叽的。利用机智云的云计算IoT软件平台,可以轻而易举地实现一些智能功能,旧瓶装新酒,让老式电气发出现代异彩,感觉有点像用古代的缶装上现代的人头马XO,把风筝搞成隐形飞行器一样,极具科技感酷劲。为了更利于老式电气的改装,通过手机-gokit-无线模块-风扇等一系列硬件的中继接力,完成对一台老式风扇的调速过程。
  请看一下项目视频


二 硬件准备
序号
名称
规格/型号
数量
1
老式风扇
三档手动调速
一台
2
机智云开发板
Gokit2
一套
3
无线发射模块
L24YK-TXH
一个
4
4路功率驱动模块
TB6612FNG
一个
5
无线接收模块
L24YK-RX4
一个
6
电源模块
AC220V/DC3.3V
一个
7
继电器模块
4路光耦
一个
8
电阻,电容,LED灯等
200Ω,1K,RGB共阴极LED
若干

项目完成后的图片
1)Gokit+无线发射模块

2)接收板
4路功率驱动模块+无线接收模块+电源模块+继电器模块


3)接收板通过一个插座盒安装到老式风扇


三 软件开发环境
  • 机智云账号一个

        用于使用机智云的物联网云服务和开发工具,如自动代码生成等,这方面的教程机智云社区的前辈们已经介绍的非常详细,在此就不再啰嗦了。

四 代码说明
        通过自动生成的代码+机智云宠物屋的云端部分+添加部分逻辑和自定义函数,就可以完成项目,可靠地进行控制。下面介绍一下逻辑和自定义函数部分的代码:
1)修改原来宠物屋的WiFi配置状态显示代码
  • void wifiStatusHandle()
  • {
  •   if(myGizwits.wifiHasBeenSet(WIFI_SOFTAP))
  •   {
  •     Serial.println(F("WIFI_SOFTAP!"));
  •     ControlFan_1();        //Soft AP模式,向无线接收模块发送红灯点亮和启动第一档风量数据
  •   }
  •   if(myGizwits.wifiHasBeenSet(WIFI_AIRLINK))
  •   {
  •     Serial.println(F("WIFI_AIRLINK!"));
  •         ControlFan_2();        //AirLink模式,向无线接收模块发送蓝灯点亮和启动第二档风量数据
  •   }
  •   if(myGizwits.wifiHasBeenSet(WIFI_STATION))
  •   {
  •     Serial.println(F("WIFI_STATION!"));
  •   }
  •   if(myGizwits.wifiHasBeenSet(WIFI_CON_ROUTER))
  •   {
  •     Serial.println(F("WIFI_CON_ROUTER!"));
  •         ControlRst();//配置成功后,关闭远程设备。
  •   }
  •   }

[color=rgb(0, 0, 0) !important]复制代码

void wifiStatusHandle(),是宠物屋代码里的函数,用于监视Gokit开发板上的Key2状态,也就是手机与硬件设备配置时,自动或手动配置WiFi连接的按钮短按或长按的状态,只不过经过修改以上代码,该设备的Gokit开发板上不会有任何表示,取而代之的是,接收板收到数据后,RGBLDE灯点亮的同时,会以接收到的相应风量指令启动风扇,也就是远程配置。

2)添加逻辑控制代码
  • void loop() {
  •   bool varR_Switch = 0;//系统根据数据点自动生成的开关变量,以下相同。
  •   bool varR_Fan_1 = 0;//风量一档
  •   bool varR_Fan_2 = 0;//风量二挡
  •   bool varR_Fan_3 = 0;//风量三档
  •   KEY_Handle();//key handle , network configure
  •   wifiStatusHandle();//WIFI Status Handle
  •   //手机发过来的开关事件
  •   if(myGizwits.hasBeenSet(EVENT_Switch))
  •   {
  •     myGizwits.read(EVENT_Switch,&varR_Switch);
  •         if(varR_Switch == 1)//当开关为开状态时
  •         {
  •         ControlFan_1();//默认风量一档开启
  •         }
  •         else{
  •         ControlRst();//当开关为关闭时,风扇停止。
  •         }
  •   }
  •   //手机发过来的第一档风量事件
  •   if(myGizwits.hasBeenSet(EVENT_Fan_1))
  •   {
  •     myGizwits.read(EVENT_Fan_1,&varR_Fan_1);//Address for storing data
  •     if(varR_Fan_1 == 1)//接收到云端一档时
  •         {
  •         ControlFan_1();//风量一档开启
  •         }
  •         else{
  •         ControlRst();//当开关为关闭时,风扇停止。
  •         }
  •   }
  •   //手机发过来的第二档风量事件
  •   if(myGizwits.hasBeenSet(EVENT_Fan_2))
  •   {
  •     myGizwits.read(EVENT_Fan_2,&varR_Fan_2);//Address for storing data
  •     if(varR_Fan_2 == 1)//接收到云端二档时
  •         {
  •         ControlFan_2();//风量二档开启
  •         }
  •         else{
  •         ControlRst();//当开关为关闭时,风扇停止。
  •         }
  •   }
  •   //手机发过来的第三档风量事件
  •   if(myGizwits.hasBeenSet(EVENT_Fan_3))
  •   {
  •     myGizwits.read(EVENT_Fan_3,&varR_Fan_3);//Address for storing data
  •     if(varR_Fan_3 == 1)//接收到云端三档时
  •         {
  •         ControlFan_3();//风量三档开启
  •         }
  •         else{
  •         ControlRst();//当开关为关闭时,风扇停止。
  •         }
  •   }
  •   myGizwits.process();
  • }
  • //关闭设备函数
  • void ControlRst(){
  •    val = 0;
  •    for(int i = 9;i <= 11;i++){
  •   pinMode(i,OUTPUT);
  •   digitalWrite(i,HIGH);
  •    }
  • }
  • //风量一档控制函数
  • void ControlFan_1(){
  •     ControlRst();//启动设备前,先关闭其他档位的风量
  •         digitalWrite(Pin9,LOW);//向接收端无线模块发送开关启动信号
  • }
  • //风量二档控制函数
  • void ControlFan_2(){
  •         ControlRst();//启动设备前,先关闭其他档位的风量
  •         digitalWrite(Pin10,LOW);//向接收端无线模块发送开关启动信号
  • }
  • //风量三档控制函数
  • void ControlFan_3(){
  •         ControlRst();//启动设备前,先关闭其他档位的风量
  •         digitalWrite(Pin11,LOW);//向接收端无线模块发送开关启动信号
  • }


[color=rgb(0, 0, 0) !important]复制代码

    核心功能就是利用三个void ControlFan()风扇控制函数,依次启动ardiuno的9,10,11三个引脚低电位,从而控制连接在三个脚上面的无线发射模块三路开关信号发送出去。当风扇上的无线接收模块收到信号后,会立刻触发对应的继电器闭合,从而启动风扇运行和RGBLED灯点亮。
    关闭设备函数void ControlRst(),其实质就是复位三个ardiuno引脚,从而触发接收模块动作,关闭风扇,不管风扇运行在任何风量档位上,都可以立刻关闭。

五 关于模块使用说明,完整代码,测试用APK
  • 1)本文提到的模块,电路图,完整代码等请参照附件的资料
  • 2)本文使用的手机APK是机智云提供的标准测试调试软件,大家请上云端下载就可以了。


配置前后的图标和界面如下图所示:

L24YK 2.4G无线模块.pdf (731.99 KB, 下载次数: 1)
Fan_Smart_4.zip (28.27 KB, 下载次数: 0)

智能调速风扇电路图.pdf (674.95 KB, 下载次数: 2)
零部件资料.zip (1.38 MB, 下载次数: 2)
原文:http://club.gizwits.com/thread-7992-1-1.html
IoT软件平台
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2019-4-11
在线时间
4 小时
发表于 2019-4-12 16:19:51 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 15:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表