最新消息:

[Arduino]没带钥匙?手机遥控开宿舍之门

Arduino 少儿编程 2905浏览 0评论

(Written By Vector.欢迎转载,保留出处便可)

youku视频
钥匙本身就容易丢,不少人进宿舍忘带钥匙,那个急的。宿舍里面有人还好,没人就尴尬了。如果里面的同学在高床,下来开门也是相当麻烦。为了解决这个困难,通过查阅资料,结合arduino,设计出了这款用手机(连上宿舍wifi)遥控开门的装置。

Clain:Standing on the shoulders of the giants

创新点:

功能方面|软件方面|
-|
手机Wifi遥控开门|20次连续快速判断减少距离判断误差
圆形舵机旋转盘,无视旋转方向|Autodelay:根据距离自动调整测距频率以省电高频测试
成本低廉|三重密码安全性(Wifi密码,开门密码,设备Mac地址绑定)
可拓展性高|

部件|作用|数量|
-|
arduino R3 UNO开发板|单片机主机|1
Wifi模块|提供wifi数据接收&&输出|1
强力舵机|提供旋转动力|1
红外测距模块|提供室内距离检测自动开门|1
杜邦线|连接|若干
坚韧缝纫线|传动|若干
3M胶|粘贴|1
热熔胶|粘贴|少量
胶带|粘贴|少量

先看看效果吧:

视频

[Arduino]没带钥匙?手机遥控开宿舍之门
自然状态
[Arduino]没带钥匙?手机遥控开宿舍之门
自然状态
[Arduino]没带钥匙?手机遥控开宿舍之门
工作
[Arduino]没带钥匙?手机遥控开宿舍之门
舵机安装好


其实思路很简单,就是手机发送信号给单片机,单片机控制舵机旋转,舵机拉动门栓

项目管理

Must have|Should|Nice
-|
wifi接收,舵机|安全性,避免误差|室内走进自动开门,液晶显示,RFID,更低廉的成本

So we begin:
简要步骤(下文再详细介绍)

  • 准备好arduino
  • 连好舵机
  • 连好红外测距模块
  • 设置好wifi模块.
  • 设置好手机软件之Tcp连接
  • 安装调试

程序部分:

  • 手机tcp窗口欢迎界面:

code:

void Welcome(float S)
    {
     
     Serial.println("Hi,this is a Wifi-control door-opening system organized by Vector_Y ^_^");
     Serial.print("The Distance is:");
      Serial.print(S);
    Serial.print("cm now.nn");

    }
  • 红外模块测距扫描,根据距离自动调整频率以省电/快速侦测
float Scan()
{
   long IntervalTime=0;
    digitalWrite(trig,1);
    delayMicroseconds(15);
    digitalWrite(trig,0);
    IntervalTime=pulseIn(echo,HIGH);
    float S=IntervalTime/58.00;
    return S;
  }
int AutoDelay(float Distance)
{
  if( Distance>120.00 )   //Scan according to the Distance.   
    delay(1000);
   else if(  Distance>50.00&&Distance<=120.00  )
    delay(500);
    else if(  Distance>=0.00&&Distance<=50.00  )    //Why alwayts is this
    delay(200);
    return 0;
  }
  • 防误差机制

当检测到第一次有信号后,接下来快速检测19次,期间任何一次出现距离不对则全部break 重新判断。

code:

int Whether_True(float Distance)
{
      int k=1;
   for(int i=1;i<=19;i++)
   {
    if(Distance>0&&Distance<=s1)
    {
      k=1;
      delay(10);  //short enough
    }
    else
    {
      k=0;
      break;
    }
}
 return k;
}
  • 舵机顺逆时针
//舵机顺逆时针 
void Steer_Turn_Clockwise()
{
        int pos;
      for(pos = 0; pos < 180; pos += 1) // 从 0 度-180 度
         { 
           myservo.write(pos); // 输入对应的角度值,舵机会转到此位置
             delay(1); // 5ms 后进入下一个位置
          }
}
void Steer_Turn_Eastern()
{
  int pos;
  for(pos=180;pos>=0;pos--)
      {
        myservo.write(pos);
        delay(1);
       }
}
  • 手机发射的暗号的接受与密码检查

code:

while(Serial.available())     //Get password.
  {
    Password+=(char)Serial.read();
    delay(2);
  }
int Check_Password(String Password)
{
  int k=0;
  if(Password=="k")
  {
    k=1;
   }
  else{
    k=0;
  }
   return k;
}
  • 手机端软件安装:

首先设置好wifi模块.
wifi模块采用TCP串口协议,底层协议怎么回事,我们或许无须现在理解。
要实现手机安装软件,首先,下载Tcp连接。
安装好后,进入,界面如下:

[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png

这里面要检测信息的话,可以用 “聊天”,“终端”。一键式设置的话用“开关”

[Arduino]没带钥匙?手机遥控开宿舍之门
连接正常后arduino返回距离信息

切换到开关栏目,选择一个按钮,设定为我们的开门暗号。目前,开门暗号为k。

[Arduino]没带钥匙?手机遥控开宿舍之门
定义开关,实现一键式操作

设置自动连接与默认开关

[Arduino]没带钥匙?手机遥控开宿舍之门
首选项设置

noise:

大功率舵机的噪音真不是一般的。可以接受,但是还是有点大,就是那种熟悉的齿轮转动的“zizizi”的feeling。

按下 k,

[Arduino]没带钥匙?手机遥控开宿舍之门
开关触发

返回到终端界面,可见arduino返回了信息

[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png

其实把端口公开了也不怕啦,因为我们路由器设置了mac绑定,第三重(最有保障的部分)保证安全性。


实验中遇到的拦路虎与解决:

理论与实际的差距有时真的比想象中的大。本来只是一个简单的东西,没想到实际安装却花了我不少时间。

  • 舵机——快叫你大哥出来。

一开始用的是9g小舵机,优点是旋转快,成本低。
后来发现5格的地方转不动,尼玛
然后选择了2格,这样的话拉力就扩大了2.5倍,拉的动了,可是做工距离比较短。那也没关系,把门栓预先拉一点就好了。
没想到,这个9g舵机因长时间高负荷工作,内部齿轮磨损了,也就是滑齿了!

[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png

没事,那就叫大哥出来——9KG/m大拉力之舵机。哇这黑色金属光芒什么的最喜欢了。
无奈因为用了9kg/m大拉力的舵机,旋转翼太长了会抵门,超强的拉力直接把胶弄下来。
还好后来发现了圆形旋转翼盘,更意外解决了无视旋转方向(顺逆时针)的困难。

  • 连线:接连不断

真的是非常喜欢用线作牵引物。第一是软,第二是便宜、容易得到,最重要的是,不会影响手动开门
用小舵机的时候,一根线就可以拉得动。
用大舵机,由于拉力太强,一根线,断;两根,断;上到四根终于不断了,但是把四根线穿进旋转盘的小孔,真是考眼力……

  • 粘贴-哥们,给力点行吗

本来是想用3M胶贴固定的,发现舵机有旋转趋势,3M胶贴虽然强度不错,但是禁不起旋转。
后来选择了热熔胶固定(相当方便强劲)

[Arduino]没带钥匙?手机遥控开宿舍之门
舵机粘贴

因为用了9kg/m大拉力的舵机,可不敢把舵机粘错地方,否则就会整个把胶都拉下来。

  • 距离设置:红外模块不知道是不是傻了,明明没人,还是动不动就检测到小于设置距离。

100cm太敏感,50cm却来不及开门了。最终设置到80cm感应。
于是写了一个防误差算法——第一次检测到距离小于80cm后,快速连续进行19次检测,所有检测都小于才开门。
防误差code 上文已发布。



成本计算

  • 现机成本:

[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png
[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png
[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png
[Arduino]没带钥匙?手机遥控开宿舍之门
wifi
[Arduino]没带钥匙?手机遥控开宿舍之门
电源延长线:

物件|成本|
-|
ARDUINO R3(质量好)|78
wif模块|60
舵机|30
粘贴|10
usb延长线|10
总计:180¥

上面由于使用的是开发板,较贵。实际使用中,采用工业级配置会相当实惠。


  • 低成本改进装置:

主控板方面:

  • 国产ARDUINO R3
[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png
  • 国产 arduino mini
[Arduino]没带钥匙?手机遥控开宿舍之门
更小

工业mini Wifi模块

[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png

可选:

  • 液晶显示模块:
    已写好一个有装载、滑入效果的图。
    效果

    [Arduino]没带钥匙?手机遥控开宿舍之门
    Paste_Image.png

RFID:

[Arduino]没带钥匙?手机遥控开宿舍之门
Paste_Image.png

物件|成本|
-|
Arduino mini pro|10
迷你省电Wifi|10
延长线|10
粘贴|10
线|1

最低成本41.我的天,批量生产中,50元就能让我们的宿舍配备自动开门系统,你说划不划算,可不可怕~


Anyway,This Budget make my dormitary cooler.Lets play cool._

Ps:想与我交流的话就请评论、关注我吧
  Thumbs up and follow if you wanna get my latest articles.
  大好き?フォロー!

您必须 登录 才能发表评论!