2017年的暑假,我做了一个不那么正式,不那么艰难的决定。但当我重新想起那次并不艰难的决定时,我都想觉得非常后悔。

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_智能开门

 

当你选择了一号床,你就肩负着为大家开门的义务,然鹅。。。。

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_智能开门_02

 

以及,作为一个并不喜欢带钥匙的人,自己回宿舍的时候

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_智能开门_03

 

 

可以说非常想要一个田螺姑娘给我开门了,所以!!我们自力更生!!

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_大学_04

 (转不过来了嘤嘤嘤)  

 

来看看效果~~

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_大学_05

 

有了这样的一个小装置,就可以遥控开门啦,简直懒人福利~~(悄咪咪说这个小玩意儿经常拉不够距离,门还是开不开)

 

我们需要什么?

Arduino * 1

蓝牙模块 * 1

舵机 *1

智能手机 * 1

PC *1

面包板 *1

数据线 *1

移动电源 * 1

一次性筷子 * 1

杜邦线、导线、led、电阻若干

棉线(缝衣服那种)、胶带

 

首先,我们先设置蓝牙模块,连接Arduino,连接方式是

VCC-3.3V

GND-GND

TXD-12

RXD-11

参照该教程,进入AT模式,为蓝牙设置密码、名称等

https://blog.csdn.net/mtobeiyf/article/details/52096966

 

手机上下载蓝牙串口app,种类不限。我选择的是

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_智能开门_06

 

然后连接舵机,舵机请不要使用Arduino自带的蓝色小舵机,那个貌似力度不够

请自行选择大力的舵机,我购买的是MG 996R

 

连接方式是

红色-5V

棕色-GND

橙色-10

 

连接好蓝牙模块和舵机应该就差不多可以烧正式使用的程序了,代码如下:

 

1#include<SoftwareSerial.h>
2
3SoftwareSerialBT(12,11);
4
5intservopin = 10;
6
7voidservopulse(int angle){
8
9/*
10
11       该函数转自CSDN,稍作修改了。
12
13原po:https://blog.csdn.net/wzxxtt62267018/article/details/79785690
14
15此处不适用Servo库,会造成舵机在没有指令时鬼畜抖动
16
17*/
18
19  int pulsewidth = ( angle * 11 ) + 500;
20
21  for(int i = 0; i < 50; i++){
22
23  digitalWrite(servopin,HIGH);
24
25  delayMicroseconds(pulsewidth);
26
27  digitalWrite(servopin,LOW);
28
29  delayMicroseconds(20000 - pulsewidth);
30
31  }
32
33}
34
35voidsetup() {
36
37  Serial.begin(9600);
38
39  pinMode(servopin,OUTPUT);
40
41  pinMode(2,OUTPUT);
42
43  digitalWrite(2,HIGH);
44
45  servopulse(0);
46
47  BT.begin(9600);  //设置波特率
48
49  Serial.println("准备工作完成,已就绪"); //调试信息
50
51  BT.listen();
52
53}
54
55
56
57voidloop() {
58
59  if(BT.isListening()){
60
61    if(BT.available() > 0 && BT.read()== 'o'){  //检测接收到的信息是否为开门的相关指令
62
63        Serial.println("已经接收信号");    //调试信息,下同
64
65        for(int i=0;i<50;i++){
66
67          servopulse(135);
68
69        }      //令舵机旋转一定角度以拉动绳子开锁
70
71        Serial.println("舵机正在转动");
72
73        for(int i=0;i<50;i++){
74
75          servopulse(0);
76
77        }      //复位
78
79        Serial.println("舵机正在转动回去");
80
81    }
82
83  }
84
85}

 

然后用筷子(或其他比较硬的柱状物体)顶住门锁,另一端顶住舵机,然后用胶带固定。筷子的目的是防止舵机没有拉动门锁反而被门锁拉过去。

 

接下来用棉线将锁把和舵机连接起来像这样

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_大学_07

可能需要多绕几圈,毕竟缝衣服的线还是比较细的,不要吝惜胶带(妈见打),固定住舵机才拉得动门呀~~完成后连接移动电源,就可以打开手机了,连接蓝牙模块。

 

向蓝牙发送字符‘o’//这里也可以换成其他的字符,不过需要在程序中作些许改动

 

来见证奇迹发生~~然而有一天我恰完饭喜滋滋回到宿舍。。打算召唤田螺姑娘开门的时候。

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_智能开门_08

 

这咋回事??

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_智能开门_09

 

原来是移动电源的锅,当蓝牙长时间未连接时且舵机没有转动时,移动电源以为没有要用到它的地方就自行断电了。。。大学寝室 | 有人敲门?如何不下床从而优雅地开门?_智能开门_10

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_智能开门_11

 

 

所以,我们要在Arduino上另外连接一些电阻和led,用来,费电emmmm,没错就是费电,时刻提醒电源不要自暴自弃,继续给电~~~

 

最后别忘了我们的神兽~~我舍守门神!!

 

大学寝室 | 有人敲门?如何不下床从而优雅地开门?_大学_12

 

当然了,经历了这么多事,我最后知道了一个道理。

。。。。

。。。

。。

。。

。。。

。。。。

还是校园卡开门爽啊

最后的最后

Everything I need

是真滴好听啊