首页 >> 色差计

基于ATtiny85控制器的蓝牙自动控制继电器压铸产品

2022-10-10 02:36:16 继电器    

基于ATtiny85控制器的蓝牙自动控制继电器

本文简单的介绍了一个基于ATtiny85控制器的蓝牙自动控制继电器,该继电器用于家庭自动化,且带有手动按钮,可实时反馈按钮的状态。还可通过Mobile Application以及Manual Button对其进行控制。

该继电器是通过晶体管导出的,并与LED并联,显示继电器ON / OFF的状态。

硬件部件:

Microchip Technology ATtiny85HC-05蓝牙模块线性稳压器(7805)电阻 10kΩ、1kΩ、1MΩ、2.21kΩ、4.75kΩ电容器10 µF、100 µF、100 nF通用晶体管 NPN额定二极管1N4007 LEDCONTACT 12VDC 10A 120V 按钮开关蜂鸣器直流电源连接器

原理图:

代码:

使用Thunkable平台,制作移动应用程序。并将APP命名为“ Tinymation ”。

自动连接需添加蓝牙模块HC-05的地址上“Blueid”块,如果未进行自动连接,一段时间后会打开列表选择器,选择另一个HC-05模块进行连接。

(TInymation APP的块编码)

连接图:

实物图:

测试:

通过12v直流电源(12v直流电源适配器)为电路板供电开机,蓝牙模块的LED开始快速闪烁将蓝牙模块与智能Android手机配对配对后,打开Tinymation应用程序将显示设备已连接,且它将蓝牙模块HC-05地址存储在TOP块中,即“ Blueid”块中否则,该应用会提供一个模块列表,我们可以从中选择/选择蓝牙模块使用“移动APP”以及手动按钮

附件:

/ *

简单的ATtiny 85蓝牙自动化

创建人:Pranav Rokde

蓝牙模块(HC-05)连接

RxD_(3)| IC引脚[2] ---->蓝牙模块的Tx引脚
TxD_(4)| IC引脚[3] ---->蓝牙模块的Rx引脚

* /

#include"SoftwareSerial.h"// 引脚映射
#define RxD 3 // IC引脚[2]定义Rx引脚|| 蓝牙模块的Tx引脚
#define TxD 4 // IC引脚[3]定义Tx引脚|| 蓝牙模块的Rx引脚
#define RELAY 0 // IC引脚[5]定义连接到负载的继电器
#define BUTTON 2 // IC引脚[7]定义按钮
#define BUZZER 1 // IC引脚[6]定义蜂鸣器

SoftwareSerial BT(RxD, TxD); // Rx|Tx

int RLY_FLAG = 0; //中继标志

int BUZZ_FLAG = 0; // 蜂鸣器标志

int BUTTONSTATE; //按钮当前状态
int LASTBUTTONSTATE = HIGH; //按钮先前状态
unsigned long LASTDEBOUNCETIME = 0; // 最后一次切换
unsigned long DEBOUNCEDELAY = 50; // 反跳时间


void setup()
{

pinMode(RELAY, OUTPUT); // 将RELAY引脚设置为输出

pinMode(BUZZER, OUTPUT); // 将BUZZER引脚设置为输出

pinMode(BUTTON, INPUT_PULLUP); // 将BUTTON引脚设置为内部上拉(HIGH)

BT.begin(9600); // 蓝牙模块的串行开始

}

void loop()
{

BluetoothControl(); // 蓝牙控制功能

ButtonControl(); //按钮功能

RelayControl(); // 继电器控制功能

BuzzerControl(); //蜂鸣器控制功能


void ButtonControl()
{

int READING = digitalRead(BUTTON); // 读取按钮

if (READING != LASTBUTTONSTATE)
{
LASTDEBOUNCETIME = millis();
}

if ((millis() - LASTDEBOUNCETIME) > DEBOUNCEDELAY) {

if (READING != BUTTONSTATE)
{
BUTTONSTATE = READING;

if (BUTTONSTATE == LOW)
{
if ( RLY_FLAG == 0) // 读取中继标志状态
{

BT.println('5'); // 发送数据
RLY_FLAG = 1; // 切换中继标志

}
else if ( RLY_FLAG == 1) // 读取中继标志状态
{

BT.println('4'); //发送数据
RLY_FLAG = 0; // 切换中继标志

}
}
delay(100); //小延迟
}

}

LASTBUTTONSTATE = READING; // 保存阅读

}


void BluetoothControl()
{

if (BT.available()) // 串行提供给收到的数据
{

char C = BT.read(); // 串行读取

if (C == '1') // 读取接收到的数据
{
RLY_FLAG = 1; // 打开中继标志
}

if (C == '2') // 读取接收到的数据
{
RLY_FLAG = 0; // 关闭中继标志
}

if (C == '3') // 读取接收到的数据
{
BUZZ_FLAG = 1; //开启蜂鸣器标志
}

C = ""; // 清除串行读取

}

}


void RelayControl()
{

if ( RLY_FLAG == 0) // 读取中继标志状态
{
digitalWrite(RELAY, LOW); // 关闭继电器
}

if ( RLY_FLAG == 1) //读取中继标志状态
{
digitalWrite(RELAY, HIGH); //打开继电器
}

}


void BuzzerControl()
{

if ( BUZZ_FLAG == 1) // 读取蜂鸣器标志状态
{

digitalWrite(BUZZER, HIGH); // 打开蜂鸣器

delay(500); //一点延迟

digitalWrite(BUZZER, LOW); //关闭蜂鸣器

BUZZ_FLAG = 0; // 关闭蜂鸣器标志

}

}

空调出水管堵了怎么处理
燃气灶坏了修不好怎么办
为什么空调开不了
太阳能热水器压力小怎么办
友情链接