3、硬件搭建:Arduino/ESP32开发板介绍、振动传感器与开发板的接线方法、电源与布线注意事项
3.1 选哪块板子?Arduino还是ESP32
做共享单车振动采集,选开发板是第一关。我个人习惯是:能用ESP32就别用Arduino Uno。为什么?
你想想看,共享单车是移动的,数据要传回服务器。Arduino Uno没有WiFi模块,你还得外挂一个ESP8266,麻烦不说,稳定性也打折扣。ESP32自带蓝牙和WiFi,双核处理器,价格也就二十来块。我在项目里吃过亏——最早用Arduino Uno搭原型,结果布线乱成一团,后来全换成ESP32,清爽多了。
当然,如果你只是做桌面测试,手头有Arduino也能用。但真要做单车上的部署,我建议直接上ESP32。
| 特性 | Arduino Uno | ESP32 |
|---|---|---|
| 主频 | 16MHz | 240MHz |
| WiFi/蓝牙 | 无 | 双模 |
| ADC精度 | 10位 | 12位 |
| 价格 | 约25元 | 约30元 |
| 适用场景 | 桌面原型 | 实际部署 |
3.2 振动传感器选型与接线
振动传感器种类很多,我常用的是SW-420和ADXL345。前者是数字开关型,后者是模拟加速度计。
SW-420:说白了就是个震动开关。有震动时输出低电平,没震动时高电平。接线简单,三根线:VCC接3.3V,GND接地,DO接开发板的数字引脚(比如D2)。
ADXL345:这个就高级一点了。能测X、Y、Z三轴的加速度,精度到±16g。我建议用I2C通信,只需要四根线:VCC、GND、SDA、SCL。
接线口诀:红正黑负,数据中间。红色VCC,黑色GND,黄色/白色是信号线。
具体接法(以ESP32为例):
SW-420 → ESP32
VCC → 3.3V
GND → GND
DO → GPIO2
ADXL345 → ESP32
VCC → 3.3V
GND → GND
SDA → GPIO21
SCL → GPIO22
嗯,这里要注意:ESP32的GPIO引脚有些是“危险引脚”。比如GPIO0、GPIO2在启动时有特殊功能,接传感器可能导致无法烧录程序。我建议避开这些引脚,用GPIO4、GPIO16、GPIO17这些安全引脚。
3.3 电源与布线——别让细节毁了项目
电源这块,我踩过坑。共享单车用的是18650锂电池,电压3.7V。ESP32需要3.3V供电,所以必须加一个AMS1117-3.3稳压模块。
警告:千万不要直接把锂电池正极接到ESP32的3.3V引脚!电压过高会烧芯片。我曾经有一次急着测试,直接怼上去,结果一股青烟……嗯,板子废了。
正确的供电方案:
- 锂电池正极 → 稳压模块输入
- 稳压模块输出 → ESP32的VIN或3.3V引脚
- 电池负极 → 共地(所有GND连在一起)
布线方面,我总结了几条经验:
- 线要短:信号线超过20cm容易引入噪声,振动数据会飘
- 电源线要粗:我用的是AWG24的硅胶线,柔软又耐弯折
- 接口要牢固:别用杜邦线直接插,骑几下就松了。我习惯用XH2.54端子,插拔方便还不会掉
- 加个电容:在电源正负极之间并联一个100μF电解电容,能滤掉电机启动时的尖峰脉冲
小技巧:布线完成后,用热熔胶把接头封一下。既能固定,又能防水。我在户外测试时,一场雨下来,没封胶的板子全挂了,封胶的安然无恙。
3.4 避坑指南——我踩过的那些坑
做硬件搭建,坑是真的多。我挑几个典型的说说:
- 共地问题:传感器和开发板必须共地。我曾经偷懒没接GND,结果数据读出来全是乱码。记住:所有GND要连在一起。
- 上拉电阻:SW-420的输出引脚是开漏的,需要加一个10kΩ上拉电阻到3.3V。不然信号不稳定,会误触发。
- 电池保护板:18650电池必须带保护板,防止过放。我有一批电池没加保护板,放到2.5V以下,直接报废了。
- 防水处理:共享单车在户外,雨水是常态。我建议用纳米防水漆喷涂电路板,或者直接买防水盒。
好了,硬件搭建就这些。下一章我们开始写代码,让传感器真正跑起来。记住:硬件是骨架,软件是灵魂。骨架搭好了,灵魂才能安放。