查看: 36851|回复: 41

新手入门之自制“智能窗帘”

[复制链接]
  • TA的每日心情
    开心
    2019-1-29 13:59
  • 签到天数: 15 天

    [LV.4]偶尔看看III

    发表于 2016-2-27 14:34 | 显示全部楼层 |阅读模式
    本帖最后由 tttt-top 于 2019-9-7 12:01 编辑

        寒假接触了Arduino,做了个智能窗帘,发个帖把整个过程写下来,各位觉得有帮助就最好啦!
    一、分析目的及流程
        我想做的智能窗帘就是要实现一个功能——清晨能自己拉开,傍晚能自己拉住,简单实用。
        大致的过程就是:
            收集光敏电阻采集到的光强数据;
            判断是否需要打开电机,并确定电机转动方向。    
        至于为什么不做个APP在手机上,是因为个人比较认同智能手机并不是未来智能家居系统的核心的说法。[我才不会说是因为我不会]
    二、准备材料
        要实现这个功能,材料方面包括:外加电源(5V以上)、光敏电阻、直流电机、L293DH桥)和一些电阻、跳线。
    三、动手实现
        1.编写程序
            在东西回来之前,先把程序写了,源码如下:

    kittenblock中小学创客名师推荐的图形化编程软件

    /* smart curtain */
    /* writer: tttt-top */
    /* date:20160227 */
    
    int enablepin=11;
    int in1a=4;
    int in2a=7;
    int photocellPin = 2; // 光敏电阻接口
    int photocellVal = 0; // 光敏输出值初始化
    int curtainState = 0; //窗帘初始为拉开
    int i=0,j=0;
    void setup() {
      //pinMode(ledPin, OUTPUT);
      pinMode(enablepin,OUTPUT);
      pinMode(in1a,OUTPUT);
      pinMode(in2a,OUTPUT);
      digitalWrite(enablepin,LOW);
      Serial.begin(9600);
    }
    
    void loop() {
      //串口输出读到的光敏输出模拟值
      photocellVal = analogRead(photocellPin);
      Serial.print(photocellVal);   
      Serial.print("  ");
      // 光线不足且窗帘没拉
      if (photocellVal< 80 && curtainState==0)    
      {    
        i++;
        Serial.println(i);
       // delay(2000);
      }
      //当光线不足超过15分钟时,关闭窗帘  
      if(i > 10 && curtainState == 0)
      {
        digitalWrite(in1a,LOW);
        digitalWrite(in2a,HIGH);
        digitalWrite(enablepin,HIGH);
        Serial.print("i=");
        Serial.print(i);
        Serial.println("  fan zhuan,close the curtain");//反转拉上窗帘
        delay(4000);
        digitalWrite(enablepin,LOW);
        curtainState = 1; //窗帘拉上    
        i=0;
        } 
        // 光线充足且窗帘拉上     
        if (photocellVal >300 &&curtainState == 1)
       {
        j++;
        Serial.println(j);
        }  
       if(j > 10 && curtainState == 1){
        digitalWrite(in1a,HIGH);
        digitalWrite(in2a,LOW);
        digitalWrite(enablepin,HIGH);   
        Serial.print("j = ");
        Serial.print(j);
        Serial.println(" zheng zhuan,open the curtain");//正转拉开窗帘
        delay(2000);
        digitalWrite(enablepin,LOW);
        curtainState=0;
        j=0;
       }
       delay(2000);
    }

            按图12所示连接各元件;
            放张实物图:
            连接完成后,再检查一遍电路。
    3.烧写测试
            手动改变光照强度,可从串口监视器中看到当前光强的准确值:
            当光照小于80的次数多于10次(模拟实际使用中光线不足长达X秒)时,可以看到电机反转;大于300的次数多于10次(同理)时,看到电机正转,与预期一致,试验成功。
    四、总结
        本次尝试并没有将其用在真正的窗帘上,原因在于电机与窗帘之间的连接问题没有解决。本来的想法是用像自行车车链类似的齿轮连接电机和窗帘的一端,苦于一直没有找到可以试验的东西,所以仅用电机的正转反转来代表窗帘的拉开与关闭。关于这个问题各位朋友有好的建议的话可以一起讨论讨论。
    放上视频链接:http://pan.baidu.com/s/1qYRO7G4

    2019-01-29编辑:
    把源码和电路图整理了下放上来,欢迎交流~https://github.com/ONEONION/auto_curtain.git




    图1 光敏电阻的连接

    图1 光敏电阻的连接

    图2 H桥的连接

    图2 H桥的连接

    实物图

    实物图

    串口监视器的数据

    串口监视器的数据
  • TA的每日心情
    开心
    2019-1-29 13:59
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2017-2-15 17:00 | 显示全部楼层
    本帖最后由 tttt-top 于 2019-1-29 12:28 编辑

        之后我们又对其进行了改进和完善:
            增加了功能:可用红外遥控器或手机APP一键开合窗帘
            完善了系统:装上更大动力的电机,剪了床单做窗帘,搭起了基本模型。
        拿去参加"全国高校物联网应用创新大赛"获得了华北赛区三等奖。本来可以取得更好的成绩,苦于是第一次参加答辩没有经验,回答慌乱没有逻辑,吃了亏。希望不仅我,还有各位,日后参加答辩时提前准备充分,别留遗憾!
    欢迎各位讨论交流!
    放上视频链接:http://pan.baidu.com/s/1qYRO7G4

    2019-01-29编辑:
    把源码和电路图整理了下放上来,欢迎交流~https://github.com/ONEONION/auto_curtain.git
  • TA的每日心情
    开心
    2019-1-29 13:59
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2016-2-27 14:41 | 显示全部楼层
    本帖最后由 tttt-top 于 2016-2-27 14:43 编辑

    怎么才能把图片放到文章里??!!!强迫症好难受。。。感谢在试验期间各方提供的支持~
  • TA的每日心情
    无聊
    2016-2-25 23:10
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2016-2-27 19:59 | 显示全部楼层
    老式拉绳开关窗帘的轨道,把拉绳换成电机就行。 那个小电机恐怕不够用,去修车厂买二手的汽车升窗马达自带减速齿轮。或者雨刷器电机。12V有劲儿。用三极管或者莫斯管控制电机。
    期待您的成品,我也学着做一个。
  • TA的每日心情
    郁闷
    2016-1-26 15:22
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-2-27 21:41 | 显示全部楼层
    suiyuedao 发表于 2016-2-27 19:59
    老式拉绳开关窗帘的轨道,把拉绳换成电机就行。 那个小电机恐怕不够用,去修车厂买二手的汽车升窗马达自带 ...

    还要加编码器,避免窗帘拉到头烧电机。
  • TA的每日心情
    郁闷
    2016-3-7 18:55
  • 签到天数: 22 天

    [LV.4]偶尔看看III

    发表于 2016-2-28 14:48 | 显示全部楼层
    very good project
  • TA的每日心情
    奋斗
    2017-5-24 21:20
  • 签到天数: 88 天

    [LV.6]常住居民II

    发表于 2016-3-1 08:49 | 显示全部楼层
    科技让人变的太懒了,连拉窗帘自己都不愿意干了不过小白还是比较羡慕楼主这样的牛人,好技术,学习了
  • TA的每日心情
    奋斗
    2019-8-8 11:11
  • 签到天数: 218 天

    [LV.7]常住居民III

    发表于 2016-3-1 09:05 | 显示全部楼层
    太占空间了吧 房子那么贵少个1平米不亏大了
  • TA的每日心情
    开心
    2016-2-16 23:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2016-3-1 17:52 | 显示全部楼层
    学习了,以后自己家可以弄个这个试试。
  • TA的每日心情
    开心
    2019-1-29 13:59
  • 签到天数: 15 天

    [LV.4]偶尔看看III

     楼主| 发表于 2016-3-24 08:46 | 显示全部楼层
    suiyuedao 发表于 2016-2-27 19:59
    老式拉绳开关窗帘的轨道,把拉绳换成电机就行。 那个小电机恐怕不够用,去修车厂买二手的汽车升窗马达自带 ...

    感谢您的建议,我试试看!
  • TA的每日心情
    无聊
    2016-4-9 12:35
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    发表于 2016-3-25 20:26 | 显示全部楼层
    都是 会过日子的人!!
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    [限时福利]5分钟带你快速了解新一代开发板:M5STACK
    [限时福利]5分钟带你快速
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    天猫精灵接入语音提示找不到该设备?
    天猫精灵接入语音提示找不
    今天又刷了一遍代码,天猫精灵提示 没有找到你要操作的设备! 怎么回事啊??? 折腾
    引入库的问题,不知道怎么叙述 看图吧
    引入库的问题,不知道怎么
    最左边的是主文件 也就是启动的文件 后边三个是引入的 在后边这个文件再引入库就报错
    blinker电源插座
    blinker电源插座
    这台blinker电源插座有blinker控制和手动控制两种工作方式. 1.blinker控制:滑条用于设
    blinker灯、环境传感器套件意见收集
    blinker灯、环境传感器套
    计划春节后推出blinker氛围灯和环境检测套件。 本帖收集相关建议,如若采纳,发红包(
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表