之前没有接触过硬件相关的工作, 因此对硬件的知识一知半解。 最近由于项目需要, 用到了串口通信以及串口跟蓝牙之间通信相关的东西。记录下来, 希望对新手有所帮助。 如有疏漏之处, 欢迎指正。
1 串口通信
https://www.jishulink.com/post/1857960 这篇博客对基础知识讲解的不错, 可以参看学习一下。
总结几点比较重要的:
- 1 通信的双方波特率需要设置一致
- 2 通信的双方校验方式(无校验, 奇校验, 偶校验)需要设置一致
另外总结几个我在项目中用到的,用代码的方式实现串口操作。
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 转格式
以上就是串口通信的基本操作, 比较简单。
2 串口与蓝牙通信
直接串口通信虽然比较简单, 但是有一个明显的缺点是需要用有线连接, 这通常是不方便的。 那么此时就需要无线通信方案了。
常用的无线方式是蓝牙, wifi。 蓝牙相比wifi的优势是低功耗, 抗干扰能力强; wifi的优势是传输速度快, 传输距离远。因为传输速率要求不高, 我采用的是蓝牙连接。
大致的应用场景如下:
蓝牙选用的是这一款: https://item.taobao.com/item.htm?spm=a1z10.3-c-s.w4002-22466397656.11.6b6a6433sDE3LH&id=616978694684 (在此声明, 没有打广告的意思)
这里遇到了一个坑,由于传感器和蓝牙通过串口直连, 因此也需要满足上述串口通信中说的2点, 即:
- 1 通信的双方波特率需要设置一致
- 2 通信的双方校验方式(无校验, 奇校验, 偶校验)需要设置一致
一开始买的蓝牙不支持校验(即校验方式是无校验, 因此没法用。