如何使用Arduino Uno的硬件RX/TX引脚向HM-10发送AT指令?
用硬件串口(引脚0/1)与HM-10通信的实现方法
嘿,我之前也把SoftwareSerial换成硬件串口和HM-10通信过,其实完全不需要额外的库,直接用Arduino自带的Serial对象就行,操作比软串口还稳定!
接线要点
先理清楚硬件连接,这步错了后面全白搭:
- HM-10的Tx引脚 → Arduino的Rx(数字引脚0)
- HM-10的Rx引脚 → Arduino的Tx(数字引脚1)
- HM-10的VCC接3.3V(划重点!HM-10是3.3V电平模块,直接接5V大概率会烧)
- 最后把Arduino和HM-10的GND连在一起,保证共地
⚠️ 必看提醒:上传程序到Arduino时,必须断开HM-10与引脚0/1的连接!因为这两个引脚同时负责Arduino和电脑USB的通信,模块插在上面会干扰程序上传。等程序传完,再把接线插回去就行。
示例代码
这个极简代码就能实现发送AT指令并读取模块响应:
void setup() { // 初始化硬件串口,波特率要和HM-10一致(默认是9600) Serial.begin(9600); // 针对Leonardo/Micro这类需要等待USB串口连接的板子,加个等待逻辑 while (!Serial) { ; // 空循环,直到串口连接成功 } } void loop() { // 每隔5秒发送一次AT指令测试连通性 Serial.println("AT"); delay(5000); // 读取HM-10返回的响应并打印到串口监视器 if (Serial.available() > 0) { String response = Serial.readStringUntil('\n'); Serial.print("HM-10响应:"); Serial.println(response); } }
额外实用提示
- 电平转换:Arduino的Tx引脚输出是5V,而HM-10的Rx是3.3V输入,短时间直接接可能没事,但长期用建议加个电平转换模块(比如TXB0104),避免损坏模块引脚。
- 串口监视器设置:打开Arduino串口监视器时,波特率要选9600(和代码一致),换行符选「NL & CR」,这样发送的AT指令才符合HM-10的解析要求。
- 多串口需求:如果你的项目需要同时和电脑通信+控制HM-10,可以换带多硬件串口的板子(比如Arduino Mega,有Serial1/Serial2/Serial3),这样就不用频繁插拔接线了。
内容的提问来源于stack exchange,提问作者AravindGanesh




