0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

电脑端BLE蓝牙助手

Harmony&嵌入式学习 来源:Harmony&嵌入式学习 作者:Harmony&嵌入式学 2023-06-14 10:34 次阅读

gitee仓库地址:https://gitee.com/lalhan/PC_BLE_UART

一、需求提出

电脑端BLE蓝牙助手-开源基础软件社区

模块功能:

  • 通过PC电脑蓝牙实现串口透传
  • 制作电脑端上位机(APP端很常见)
  • 波特率可调
  • 对外提供RXD/TXD/GND/5V/3.3V

应用场景:

  • PC端无可用USB口调试远程设备
  • 任何无线串口透传使用场景
  • 私人预留(MAC绑定)串口设备调试接口
  • 需要对板子供电(5V/3.3V)测试场景

二、市场调研

(1)现有市场

pYYBAGSJJxiAdhdQAAJohOOeN64833.png
  • 基本没有
  • 有的上位机也只是支持调试AT

(2)勉强使用的

1、WCH公司BleUart

电脑端BLE蓝牙助手-开源基础软件社区

2、硬件提供的PC端

电脑端BLE蓝牙助手-开源基础软件社区

特点:

  • 不直观不直接
  • 过于通用,且串口界面复杂难操作
  • 没有调整波特率选项

三、方案设计

(1)硬件选择

选用低成本BLE蓝牙方案

电脑端BLE蓝牙助手-开源基础软件社区

淘宝:https://eciot.taobao.com/?spm=2013.1.0.0.18972c6abNXolr

注意:需要购买带OC版本,即可二次编程版本,这个需要提前问下客服

特点:

  • 成本低(甚至1.8元)
  • 体积小
  • 外围简单
  • 可二次开发

(2)电脑端上位机(PYQT5)

电脑端BLE蓝牙助手-开源基础软件社区

优点:

  • 界面清楚简洁
  • 波特率可调整

缺点:

  • 绑定了MAC(但是开源,可自行修改)

(3)电源部分

参考我上个视频,电动螺丝刀

电脑端BLE蓝牙助手-开源基础软件社区
  • 自带锂电池充放电功能
  • 可对外提供5V
  • 使用AMS1117-33后可对外提供3.3V
  • 体积小外围少使用简单

四、制作流程

(1)设备侧程序编写

这里选择提供HEX文件、程序主文件(main)以及资料下载文档

电脑端BLE蓝牙助手-开源基础软件社区
  • MDK5的开发环境
  • APP可烧录(参考我之前的十元蓝牙遥控车的视频)

资料地址:
百度网盘:https://pan.baidu.com/s/1_y1TtyzgXGL5tlVsYmggig 提取码:8888
360云盘:https://yunpan.360.cn/surl_yWr6A5bSpV9 (提取码:5689)

(2)PC端程序编写

电脑端BLE蓝牙助手-开源基础软件社区
  • 提供源代码
  • 使用PyCharm编程
  • 使用PYQT5库实现

五、整体演示

因为硬件部分很简单,我这里就不实际使用IP5306供电了,主要测试串口透传和波特率修改功能

电脑端BLE蓝牙助手-开源基础软件社区

节选部分程序:

class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(510, 430)
        MainWindow.setFixedSize(510, 430)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 10, 111, 31))
        self.label.setAlignment(QtCore.Qt.AlignCenter)
        self.label.setObjectName("label")


        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(175, 10, 50, 31))
        self.pushButton.setObjectName("pushButton")

        self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_5.setGeometry(QtCore.QRect(230, 10, 50, 31))
        self.pushButton_5.setObjectName("pushButton_5")

        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(100, 10, 60, 30))
        self.label_2.setAlignment(QtCore.Qt.AlignCenter)
        self.label_2.setObjectName("label_2")

        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(400, 10, 101, 31))
        self.pushButton_2.setObjectName("pushButton_2")

        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(370, 370, 101, 31))
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(370, 50, 101, 31))
        self.pushButton_4.setObjectName("pushButton_4")
        self.checkBox = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox.setGeometry(QtCore.QRect(370, 90, 91, 31))
        self.checkBox.setObjectName("checkBox")

        self.checkBox_2 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_2.setGeometry(QtCore.QRect(370, 330, 91, 31))
        self.checkBox_2.setObjectName("checkBox_2")

        self.checkBox_3 = QtWidgets.QCheckBox(self.centralwidget)
        self.checkBox_3.setGeometry(QtCore.QRect(370, 300, 91, 31))
        self.checkBox_3.setObjectName("checkBox_3")

        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(390, 150, 101, 101))
        self.label_3.setText("")
        self.label_3.setTextFormat(QtCore.Qt.AutoText)
        #self.label_3.setPixmap(QtGui.QPixmap("联系方式.png"))



        self.label_3.setScaledContents(True)
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(400, 260, 71, 31))
        self.label_4.setAlignment(QtCore.Qt.AlignCenter)
        self.label_4.setObjectName("label_4")

        self.textEdit = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit.setGeometry(QtCore.QRect(290, 12, 100, 25))
        self.textEdit.setObjectName("textEdit")
        self.textEdit.setAlignment((QtCore.Qt.AlignLeft))


        self.textEdit_2 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_2.setGeometry(QtCore.QRect(20, 230, 341, 171))
        self.textEdit_2.setObjectName("textEdit_2")

        self.textEdit_3 = QtWidgets.QTextEdit(self.centralwidget)
        self.textEdit_3.setGeometry(QtCore.QRect(20, 50, 341, 161))
        self.textEdit_3.setObjectName("textEdit_3")
        self.textEdit_3.setReadOnly(True)
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "无线串口(BLE)上位机"))
        self.label.setText(_translate("MainWindow", "当前设备状态:"))
        self.pushButton.setText(_translate("MainWindow", "扫描"))
        self.pushButton_5.setText(_translate("MainWindow", "连接"))
        self.label_2.setText(_translate("MainWindow", "未连接"))
        self.pushButton_2.setText(_translate("MainWindow", "更改波特率"))
        self.pushButton_3.setText(_translate("MainWindow", "发送"))
        self.pushButton_4.setText(_translate("MainWindow", "清屏"))
        self.checkBox.setText(_translate("MainWindow", "十六进制接收"))
        self.checkBox_2.setText(_translate("MainWindow", "十六进制发送"))
        self.checkBox_3.setText(_translate("MainWindow", "后置换行符"))
        self.label_4.setText(_translate("MainWindow", "作者信息"))
        MainWindow.setWindowIcon(QIcon("./ico.ico"))

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 蓝牙
    +关注

    关注

    112

    文章

    5428

    浏览量

    165650
  • 电脑
    +关注

    关注

    15

    文章

    1602

    浏览量

    67297
  • 上位机
    +关注

    关注

    26

    文章

    861

    浏览量

    54044
  • BLE
    BLE
    +关注

    关注

    12

    文章

    608

    浏览量

    58836
收藏 人收藏

    评论

    相关推荐

    FCC & CE认证 蓝牙5.1协议 主从并存 低功耗蓝牙模块BLE5101# 蓝牙

    BLE蓝牙模块
    思为无线
    发布于 :2023年10月12日 09:31:13

    蓝牙hc06与电脑连接,串口调试助手发送信息,手机没反应

    请问蓝牙hc06通过ttl与电脑连接。通讯时手机发送信息,电脑可以接收,但电脑串口调试助手发送信息,手机没反应,是hc06坏了? 想做
    发表于 04-27 20:32

    CANNON试用体验】BLE调试助手調試

    本帖最后由 逸興遄飛 于 2016-4-17 15:04 编辑 看到很多前輩都通過官方提供的藍牙調試軟件分享藍牙調試心得,我再也按捺不住了,找來找去,終於找到BLE调试助手下載地方了。1、安裝
    发表于 04-17 14:40

    汇承HC-02蓝牙双模2.0+4.0BLE与iPhone连接教程

    `1、工具/原料:模块:HC-02模块1个 手机:苹果手机1台(苹果4S及以上)HC-USB-P参数架1个电脑 测试软件:电脑端下载参数架专用的“HID转串口小
    发表于 01-23 15:11

    ESP8266模块手机电脑网络调试助手

    ESP8266模块手机电脑网络调试助手使用方法比较简单,如下界面所示:电脑:确定“协议类
    发表于 04-07 18:29

    请问手机蓝牙串口助手不可以和电脑的串口助手一样使用吗?

    电脑和单片机通过数据线在串口调试助手输入指令实现了功能,现在希望通过蓝牙模块使手机与单片机通信,用手机的蓝牙串口助手发送指令实现同样的功能
    发表于 04-03 05:47

    【FireBeetle低功耗蓝牙控制器试用连载】firebeetle BLE蓝牙测试

    ,我就不啰嗦咯。手机与蓝牙配对的话,我用的软件是“BLE调试助手”,可以测量接收到的信号强度、接发消息等。http://wiki.dfrobot.com.cn/index.php?title=(SKU
    发表于 05-04 21:26

    【FireBeetle低功耗蓝牙控制器试用连载】firebeetle BLE蓝牙测试报告(下)

    ,我就不啰嗦咯。手机与蓝牙配对的话,我用的软件是“BLE调试助手”,可以测量接收到的信号强度、接发消息等。http://wiki.dfrobot.com.cn/index.php?title=(SKU
    发表于 05-06 14:23

    ESP8266调试助手-手机电脑

    ESP8266调试助手-手机电脑
    发表于 05-27 10:28

    ESP32运行bluedroid中的例程ble_spp_server无法连接电脑的原因?

    我的开发板是ESP-Devkitc,我使用了ble_spp_server这个例程改写了一个发送传感器数据的程序,在手机蓝牙串口调试助手APP上能接收到数据,但是想在PC
    发表于 02-14 07:57

    请问ESP作为BLE客户可以扫描到笔记本电脑和苹果手机的蓝牙吗?

    我用ESP32模块作为BLE的客户,运行BLE扫描AT指令,但是在扫描返回结果里面好像找不到笔记本电脑和苹果手机的蓝牙MAC地址(笔记本和
    发表于 03-08 07:02

    蓝牙调试助手扫描BLE设备名称没变是什么原因造成的?

    ESP32 的 BLE 设备,能正常搜索到改 BLE Name 之后的名称;但在 IOS 手机上,使用“蓝牙调试助手” 和 “Light Blue”APP , 发现
    发表于 04-24 09:07

    有无蓝牙4.0BLE简单有效的调试办法?

    这几天做“AT-09蓝牙4.0BLE模块(CC2541芯片)”的实验,在网上一直搜索蓝牙4.0BLE电脑
    发表于 10-19 07:55

    BLE蓝牙模块选型表介绍

    小编从BLE蓝牙模块的功能着手,简单介绍蓝牙模块的物联网应用。 SKYLAB的蓝牙模块根据支持的蓝牙协议分为
    的头像 发表于 07-27 16:39 4396次阅读
    <b class='flag-5'>BLE</b><b class='flag-5'>蓝牙</b>模块选型表介绍

    BLE蓝牙的具体优势以及BLE蓝牙智能门锁的应用

    一、BLE蓝牙的具体优势: 1、BLE蓝牙的待机时间超长, 市面上的蓝牙智能锁基本都是使用干电池供电,而
    发表于 08-17 14:03 2732次阅读
    <b class='flag-5'>BLE</b><b class='flag-5'>蓝牙</b>的具体优势以及<b class='flag-5'>BLE</b><b class='flag-5'>蓝牙</b>智能门锁的应用