蓝牙继电器的学习使用【python篇】

背景知识:

    该蓝牙继电器是利用SPP蓝牙串行端口服务来建立蓝牙串口数据传输。电脑端指令通过蓝牙发送到8路继电器电路板上,该电路板的蓝牙模块会将收到的指令再通过串口给板子上的MCUMCU根据收到的指令来控制8路继电器的通断。


电路介绍:

该8路继电器的功能特点:

1.板载8位高性能微控制器芯片和SPP-C蓝牙2.1从机模块

2.提供蓝牙继电器控制APP

3.控制距离:10M(空旷环境)

4.工作电压:DC7-28V/5V

5.板载85V,10A/250V AC 10A/30V DC继电器,可连续吸合10万次,具有二极管泻流保护,响应时间短

6. 板载蓝牙状态指示灯和继电器指示灯

7.预留UART调试接口和MCU程序下载口


该8路继电器的硬件介绍:

1. 7-28V、GND、5V:7-28V/5V电源输入;

2. TX、RX:UART串口引脚;

3. 5V、GND、SWIM、NRST:单片机程序下载口。

4. LED D1/D7/D12/D17/D2/D8/D13/D18(红灯):继电器工作指示灯,打开时点亮

5. LED D16(蓝灯):蓝牙状态指示灯,描述如下:

      (1)慢闪时代表等待和手机建立连接;

      (2)常亮时代表成功和手机建立连接。

6. 预留的2个跳线帽:正常使用时默认都插到右端(即RXRX1TXTX1),若想单独使用USBTTL串口模块调试SPP-C模组,请都插到左端(不然可能会有干扰)。

7. 继电器COM1-8:公共端;

8. 继电器NC1-8:常闭端,继电器吸合前与COM1短接,吸合后悬空;

9. 继电器NO1-8:常开端,继电器吸合前悬空,吸合后与COM1短接。


环境准备:

1.    win10电脑(带蓝牙功能)

2.    python3.X

3.    8路继电器电路板


硬件连线:

8路继电器电路板的5VGND端子连接5V电源供电, 7~28V的端子不要接。

每个继电器的三个端子,COM*NO*口作用相当于一个开关,将加热模块的导线接入即可控制其通断。

COM1:公共端;

NC1:常闭端,继电器吸合前与COM1短接,吸合后悬空;

NO1:常开端,继电器吸合前悬空,吸合后与COM1短接。


电脑连接

1.确保电脑带有蓝牙设备

2.给8路继电器电路板供电,此时蓝牙的蓝色指示灯闪烁,代表蓝牙尚未连接。

3.配对蓝牙:

windows右下角通知栏 -> 蓝牙 -> 右键"转到设置" -> 添加蓝牙设备”JDY-31-SPP”。蓝牙的配对PIN码为“1234”。配对好之后可以在“其他设备”里看到我们的蓝牙

4.  在“蓝牙与其他设备”窗口,点击“更多蓝牙选项”,查看蓝牙串口的端口号。如图所示,此时该蓝牙的发送端口为”COM6”。在设备管理器里也可以查看这两个端口。

5.  此时操作该COM口就可以控制蓝牙的连接与发送功能。


程序使用:

先安装:   pyserial

   pip install pyserial

详见: pySerial — pySerial 3.0 documentation (pythonhosted.org)


```

from astimport Bytes

import serial

import string

import binascii

import time

class MyBleRelay:

"""My bluetooth wireless 8-port relay"""

    def __init__(self, serPort, baud =9600):

self.ser = serial.Serial(serPort, baud, timeout=0)

self.name =self.ser.name

def open(self):

self.ser.open()

def close(self):

self.ser.close()

def is_open(self):

return self.ser.is_open

def trun_on(self, idx):

HEX_str =0

        if idx ==1:

HEX_str =bytes.fromhex("A0 01 01 A2")

elif idx ==2:

HEX_str =bytes.fromhex("A0 02 01 A3")

elif idx ==3:

HEX_str =bytes.fromhex("A0 03 01 A4")

elif idx ==4:

HEX_str =bytes.fromhex("A0 04 01 A5")

elif idx ==5:

HEX_str =bytes.fromhex("A0 05 01 A6")

elif idx ==6:

HEX_str =bytes.fromhex("A0 06 01 A7")

elif idx ==7:

HEX_str =bytes.fromhex("A0 07 01 A8")

elif idx ==8:

HEX_str =bytes.fromhex("A0 08 01 A9")

else:

HEX_str =0

        self.ser.write(HEX_str)

def trun_off(self, idx):

HEX_str =0

        if idx ==1:

HEX_str =bytes.fromhex("A0 01 00 A1")

elif idx ==2:

HEX_str =bytes.fromhex("A0 02 00 A2")

elif idx ==3:

HEX_str =bytes.fromhex("A0 03 00 A3")

elif idx ==4:

HEX_str =bytes.fromhex("A0 04 00 A4")

elif idx ==5:

HEX_str =bytes.fromhex("A0 05 00 A5")

elif idx ==6:

HEX_str =bytes.fromhex("A0 06 00 A6")

elif idx ==7:

HEX_str =bytes.fromhex("A0 07 00 A7")

elif idx ==8:

HEX_str =bytes.fromhex("A0 08 00 A8")

else:

HEX_str =0

 self.ser.write(HEX_str)

```

调用依赖


在类中定义状态


定义开关打开


定义开关关闭
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 材料 arduino uno蓝牙模块:HC-06220V 1路继电器模块嵌入式220V led装饰灯 全家福:图片...
    爱猫猫的老狗阅读 2,378评论 0 7
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,592评论 28 53
  • 人工智能是什么?什么是人工智能?人工智能是未来发展的必然趋势吗?以后人工智能技术真的能达到电影里机器人的智能水平吗...
    ZLLZ阅读 3,850评论 0 5
  • 首先介绍下自己的背景: 我11年左右入市到现在,也差不多有4年时间,看过一些关于股票投资的书籍,对于巴菲特等股神的...
    瞎投资阅读 5,768评论 3 8
  • ![Flask](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAW...
    极客学院Wiki阅读 7,269评论 0 3