2017年的暑假,我做了一个不那么正式,不那么艰难的决定。但当我重新想起那次并不艰难的决定时,我都想觉得非常后悔。
当你选择了一号床,你就肩负着为大家开门的义务,然鹅。。。。
以及,作为一个并不喜欢带钥匙的人,自己回宿舍的时候
可以说非常想要一个田螺姑娘给我开门了,所以!!我们自力更生!!
(转不过来了嘤嘤嘤)
来看看效果~~
有了这样的一个小装置,就可以遥控开门啦,简直懒人福利~~(悄咪咪说这个小玩意儿经常拉不够距离,门还是开不开)
我们需要什么?
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,种类不限。我选择的是
然后连接舵机,舵机请不要使用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}
然后用筷子(或其他比较硬的柱状物体)顶住门锁,另一端顶住舵机,然后用胶带固定。筷子的目的是防止舵机没有拉动门锁反而被门锁拉过去。
接下来用棉线将锁把和舵机连接起来像这样
可能需要多绕几圈,毕竟缝衣服的线还是比较细的,不要吝惜胶带(妈见打),固定住舵机才拉得动门呀~~完成后连接移动电源,就可以打开手机了,连接蓝牙模块。
向蓝牙发送字符‘o’//这里也可以换成其他的字符,不过需要在程序中作些许改动
来见证奇迹发生~~然而有一天我恰完饭喜滋滋回到宿舍。。打算召唤田螺姑娘开门的时候。
这咋回事??
原来是移动电源的锅,当蓝牙长时间未连接时且舵机没有转动时,移动电源以为没有要用到它的地方就自行断电了。。。
所以,我们要在Arduino上另外连接一些电阻和led,用来,费电emmmm,没错就是费电,时刻提醒电源不要自暴自弃,继续给电~~~
最后别忘了我们的神兽~~我舍守门神!!
当然了,经历了这么多事,我最后知道了一个道理。
。。。。
。。。
。。
。
。。
。。。
。。。。
还是校园卡开门爽啊
最后的最后
Everything I need
是真滴好听啊