• 串口通信及串口转蓝牙相关知识


    之前没有接触过硬件相关的工作, 因此对硬件的知识一知半解。 最近由于项目需要, 用到了串口通信以及串口跟蓝牙之间通信相关的东西。记录下来, 希望对新手有所帮助。 如有疏漏之处, 欢迎指正。

    1 串口通信

    https://www.jishulink.com/post/1857960 这篇博客对基础知识讲解的不错, 可以参看学习一下。

    总结几点比较重要的:

    • 1 通信的双方波特率需要设置一致
    • 2 通信的双方校验方式(无校验, 奇校验, 偶校验)需要设置一致
    • 3 两个串口的电平要一致,且共地。
      另外总结几个我在项目中用到的,用代码的方式实现串口操作。

    Matlab中串口操作:
    参见我的另外一篇博客: matlab串口读写

    Python中串口操作:

    import serial
    
    ser = serial.Serial(port="/dev/ttyUSB0", parity=serial.PARITY_EVEN, baudrate=9600, timeout=1)
    
    
    #write_data = bytearray([0x44, 0x62, 0x08, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0x4B])
    
    
    wri = ser.write(write_data)   #向串口写数据, 注意写数据的格式, 必要时可以用bytearray转一下
    
    out = ser.read(100)  # 从串口读数据, 必要时可以通过binascii 转格式
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    以上就是串口通信的基本操作, 比较简单。

    2 串口与蓝牙通信

    直接串口通信虽然比较简单, 但是有一个明显的缺点是需要用有线连接, 这通常是不方便的。 那么此时就需要无线通信方案了。

    常用的无线方式是蓝牙, wifi。 蓝牙相比wifi的优势是低功耗, 抗干扰能力强; wifi的优势是传输速度快, 传输距离远。因为传输速率要求不高, 我采用的是蓝牙连接。

    大致的应用场景如下:
    在这里插入图片描述

    蓝牙选用的是这一款: https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-22466397656.11.6b6a6433sDE3LH&id=616978694684 (在此声明, 没有打广告的意思)

    这里遇到了一个坑,由于传感器和蓝牙通过串口直连, 因此也需要满足上述串口通信中说的3点, 即:

    • 1 通信的双方波特率需要设置一致
    • 2 通信的双方校验方式(无校验, 奇校验, 偶校验)需要设置一致
    • 3 两个串口的电平要一致, 并且传感器和蓝牙模块要共地。 (这里我曾经踩了一个坑, 由于所用的电源没有2个5V输出, 所以用了2个独立的电源供电, 结果一直无法通信, 换成用一个电源且共地就好了。)
      一开始买的蓝牙不支持校验(即校验方式是无校验, 因此没法用。
  • 相关阅读:
    Scala 04 —— Scala Puzzle 拓展
    Mysql高级——性能分析工具(2)
    Camunda 7.x 系列【49】存储服务 RepositoryService
    Java学生管理系统升级版
    Java多线程及原理
    【愚公系列】华为云系列之DevCloud+ECS+MySQL搭建超级冷笑话网站【开发者专属集市】
    2020 年 Java 面试题集锦(金九银十)
    分享15个国家的独特国际商业习俗
    关于对Java泛型的解释和思考
    外设篇:触摸屏
  • 原文地址:https://blog.csdn.net/leo0308/article/details/128119709