使用Blinker蓝牙控制Arduino开宿舍门 | 您所在的位置:网站首页 › arduino蓝牙手机显示 › 使用Blinker蓝牙控制Arduino开宿舍门 |
使用Blinker蓝牙控制Arduino开宿舍门
前提条件与思路硬件部分硬件准备硬件连接
软件部分基本思路具体代码代码补充手机端blinker的使用
最终实现效果指纹开门
前提条件与思路
我的宿舍门是这种旋转锁舌式的,所以可以通过舵机拉动门锁旋转即可完成开门动作。不是这种门锁的也可以参考一下。 参考链接仅供参考,请自行选择 物品数量arduino nano一个JDY-18蓝牙模块一个舵机一个小型固态继电器一个小面包板一个跳线、杜邦线若干
蓝牙模块的连接 JDY-18ArduinoRXDTXDTXDRXDVCC3VGNDGDNSTATP4注意: 文章使用硬串口,在烧录程序的时候记得将RXD、TXD断开,否则不能烧录程序。 自己可以改为使用软串口,就可以不断开蓝牙模块的连接烧录。 舵机的连接 连接是自由的,只要连在Arduino上可以输出PWM的引脚就行,哪几个可以输出PWM自行查找。同时,引脚号与程序中的统一即可。 舵机ArduinoVCC3-7.2V(继电器)GNDGND(继电器)PWM信号线P9整体连接图 借助Blinker平台,可以比较方便快捷地搭建控制平台。使用Blinker通过蓝牙连接设备,按下开门按钮,控制舵机打开门。 具体代码 #define BLINKER_PRINT Serial #define BLINKER_BLE #include #include //定义引脚号 #define pin_bluetooth_stat 4 #define pin_led 6 #define pin_servo 9 #define servoPWM 8 //舵机变量 Servo s; // 新建组件对象 BlinkerButton Button1("btn-abc");//开门 BlinkerButton Button2("btn-abd");//更新数据 BlinkerNumber NUM("num-abc"); BlinkerNumber NUM1("num-tim1"); BlinkerNumber NUM2("num-tim2"); BlinkerNumber NUM3("num-tim3"); BlinkerNumber NUM4("num-num"); unsigned int a,b,c; unsigned int tims=0; byte t; void setup() { // 初始化串口与引脚 Serial.begin(9600); pinMode(pin_bluetooth_stat,INPUT); pinMode(pin_led,OUTPUT); pinMode(servoPWM,OUTPUT); // 初始化blinker Blinker.begin(0,1,9600); Button1.attach(button1_callback); Button2.attach(button2_callback); //初始化舵机引脚 s.attach(pin_servo); s.write(45); } void loop() { //判断蓝牙是否连接(蓝牙连接时为高) while(!digitalRead(pin_bluetooth_stat)) { t=1; digitalWrite(pin_led,LOW); digitalWrite(servoPWM,LOW);//关闭舵机电源 } digitalWrite(pin_led,HIGH); digitalWrite(servoPWM,HIGH);//打开舵机电源 Blinker.run(); if(digitalRead(pin_bluetooth_stat)&&t==1) { delay(1000); freshData(); } t=0; } // 按下按键即会执行该函数(开门) void button1_callback(const String & state) { BLINKER_LOG("get button state: ", state); Open(); } //更新数据 void button2_callback(const String & state) { BLINKER_LOG("get button state: ", state); freshData(); } //开门动作 void Open() { Serial.println("Welcome!"); tims=tims+1; freshData(); s.write(180); //开门的角度与延时需按照实际情况调试 delay(500); s.write(45); delay(500); } //更新数据(计算运行时间,可以去掉) void freshData() { NUM3.print((a=millis()/60000)%60); NUM2.print((b=a/60)%24); NUM1.print(c=b/24); NUM4.print(tims); } 代码补充 目前状态下,用两节18650电池供电,可续航7天左右。为降低功耗,可使用Arduino的省电模式,将蓝牙STAT引脚连到Arduino的INT中断pin上,然后在空闲时,Arduino睡眠,STAT为高电平时唤醒。如此可以进一步提升续航。需要省电模式可以参考。代码中的记录工作时间的功能可以自己去掉。代码中展示的蓝牙连接状态的LED灯的引脚连接比较简单,所以硬件部分没有说,看代码应该知道怎么连。 手机端blinker的使用具体的连接与使用参考Blinker官网的文档。安装好Blinker后,连接设备。
连接好设备后在布局中创建两个按钮。按钮的ID需要与代码中的一致。即“btn-abc”与“btn-abd”。 BlinkerButton Button1(“btn-abc”);//开门 BlinkerButton Button2(“bin-bad”);//更新数据Blinker的具体使用可以参考官网文档: blinker的使用 最终实现效果下一篇,将分享指纹开门。已经做好了,还没写,需要的可以关注一下。(新人初来乍到) |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |