使用Blinker蓝牙控制Arduino开宿舍门 您所在的位置:网站首页 arduino蓝牙手机显示 使用Blinker蓝牙控制Arduino开宿舍门

使用Blinker蓝牙控制Arduino开宿舍门

2024-07-17 12:09| 来源: 网络整理| 查看: 265

使用Blinker蓝牙控制Arduino开宿舍门 前提条件与思路硬件部分硬件准备硬件连接 软件部分基本思路具体代码代码补充手机端blinker的使用 最终实现效果指纹开门

前提条件与思路

我的宿舍门是这种旋转锁舌式的,所以可以通过舵机拉动门锁旋转即可完成开门动作。不是这种门锁的也可以参考一下。

如图为锁的样式

硬件部分 设备采用两节18650电池供电。蓝牙模块连在Arduino上,Arduino通过一个小型的继电器控制舵机电源的连接,舵机的PWM引脚连在Arduino上。舵机不能连在Arduino的板载5V上,因为舵机电流太大,会把Arduino开发板烧坏。其次,需要在开门动作完成后就将舵机电源断开,不然舵机在通电的情况下会一直处于保持状态,不能通过外力转动,而且在外力作用下,舵机为了保持角度,容易电流过大烧坏。 硬件准备

参考链接仅供参考,请自行选择

物品数量arduino nano一个JDY-18蓝牙模块一个舵机一个小型固态继电器一个小面包板一个跳线、杜邦线若干

Arduino 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 实验室设备网 版权所有