2、物理层接口:RS232电平转换、USB转串口芯片选型(CH340/CP2102)、蓝牙模块(HC-05/HC-06)接线
好,咱们接着聊。上一章讲了串口协议本身,这一章咱们得落地了——物理层怎么连?
说白了,上位机和按摩仪之间,信号得有个“翻译官”。单片机出来的是TTL电平,电脑串口是RS232电平,USB口又是另一套。你直接怼上去,轻则通信失败,重则烧芯片。我早年就干过这种事,嗯,不提了。
2.1 RS232电平转换:为什么需要它?
先看个基本事实:
单片机(STM32、51等)的串口引脚,输出的是0~3.3V或0~5V的TTL电平。
而电脑的DB9串口(老式COM口),用的是RS232标准:逻辑“1”是-3V~-15V,逻辑“0”是+3V~+15V。
你看,电压范围完全不一样。直接连?不行的。
所以需要一颗电平转换芯片,比如经典的MAX232。它内部有电荷泵,能把单电源(5V)转换成±10V左右的RS232电平。
典型接线(MAX232):
- VCC接5V,GND接地
- C1+、C1-、C2+、C2-:接4个电解电容(通常1μF~10μF)
- T1IN:接单片机TX(发送)
- R1OUT:接单片机RX(接收)
- T1OUT:接DB9的2脚(RS232 TX)
- R1IN:接DB9的3脚(RS232 RX)
我个人习惯,电容用10μF的钽电容,稳定。别用瓷片,电荷泵纹波会大。
小提示:现在很多新电脑没有DB9口了。所以RS232电平转换,更多是用于和老设备对接。新项目我建议直接跳过这步,用USB转串口。
2.2 USB转串口芯片选型:CH340 vs CP2102
这是目前最常用的方案。电脑USB口出来,经过一颗芯片,直接变成TTL串口,连到按摩仪主控板上。
市面上主流的两款:CH340(国产)和CP2102(Silicon Labs)。
| 对比项 | CH340 | CP2102 |
|---|---|---|
| 价格 | 便宜(2~3元) | 稍贵(5~8元) |
| 驱动兼容性 | Win/Linux/Mac都行,但Mac需额外装驱动 | Mac免驱,Win需装驱动 |
| 稳定性 | 够用,但高速下偶有丢包 | 更稳定,适合115200以上波特率 |
| 封装 | SOP-16,手工焊接友好 | QFN-28,需要热风枪 |
| 外围电路 | 需要晶振(12MHz) | 内置晶振,外围更简洁 |
我个人的建议:
- 做产品、批量生产:用CH340。成本低,货源足,国产芯片现在很成熟。
- 做原型、调试用:用CP2102。稳定,省心,少折腾。
我曾经在一个项目里,因为CH340在高温下(按摩仪内部温度高)偶尔丢包,排查了两天才发现。后来换成CP2102,问题消失。所以如果你对稳定性要求高,别省那几块钱。
注意:CH340的VCC引脚,有些模块是3.3V输出,有些是5V。买之前看清楚。接错电压,按摩仪主控芯片可能直接冒烟。
2.3 蓝牙模块(HC-05/HC-06)接线
无线方案,现在越来越流行。用户不想拖根线,对吧?
HC-05和HC-06是市面上最常见的蓝牙串口模块。它们本质上是把蓝牙协议封装成了串口——你发串口数据,它自动通过蓝牙发出去;对方发蓝牙数据,它从串口吐出来。
两者区别:
- HC-05:主从一体。可以做主机(主动连接别人),也可以做从机(被连接)。支持AT指令配置。
- HC-06:只能做从机。不能主动连接。AT指令也少一些。
对于按摩仪上位机,我建议用HC-05。为什么?因为你可以通过AT指令修改模块名称、配对密码、波特率。比如把模块名改成“Massage_Device_01”,用户手机一搜就知道是哪个。
接线方式:
HC-05/HC-06 按摩仪主控(STM32/51)
VCC ---------- 3.3V 或 5V(看模块规格)
GND ---------- GND
TXD ---------- RX(主控的接收引脚)
RXD ---------- TX(主控的发送引脚)
EN/KEY ---------- 3.3V(进入AT指令模式时拉高)
关键点:
- HC-05的RXD引脚,只能接3.3V电平!如果主控是5V,必须加电阻分压或用电平转换芯片。我见过有人直接接5V,结果蓝牙模块的RXD引脚烧了。
- HC-05默认波特率是9600,但可以通过AT指令改成115200。我个人习惯改成115200,因为按摩仪需要实时传输力度、温度等数据,9600有点慢。
AT指令怎么用?简单说:把EN/KEY引脚拉高(接3.3V),然后上电。模块就进入AT模式。此时用串口助手发指令,比如:
AT+NAME=Massage_Pro // 改名字
AT+UART=115200,0,0 // 改波特率115200,1位停止位,无校验
AT+PSWD=1234 // 改配对密码
嗯,这里要注意:AT指令必须以回车换行结尾(\r\n)。串口助手记得勾选“发送新行”。
避坑指南:我曾经在HC-05的AT模式下,忘记断开EN引脚,结果模块一直处于AT模式,无法正常通信。折腾了半天才发现。所以正常通信时,EN引脚要悬空或拉低。
2.4 三种方案怎么选?
最后给个总结,帮你快速决策:
- 有线、调试阶段:USB转串口(CH340或CP2102)。简单,便宜,稳定。
- 有线、老设备对接:RS232电平转换(MAX232)。
- 无线、产品化:蓝牙模块(HC-05)。用户体验好,手机或电脑都能连。
我个人现在做按摩仪项目,基本是:调试用CP2102,量产用HC-05。CH340偶尔用,但高温环境我会避开。
好了,物理层就这些。下一章咱们聊数据链路层——怎么组帧、怎么校验、怎么保证数据不丢不重。到时候见。