如何将Arduino Uno红外传感器数据导入Android应用
如何将Arduino红外传感器数据传输到Android应用?
看起来你已经把Arduino端的红外传感器调试得很到位了——串口输出正常,检测逻辑也没问题(检测到物体输出0,未检测到输出1)。接下来要把数据传到Android应用,这里给你几个实用的方案,都是实际开发中常用的:
方案1:蓝牙模块(低成本、无线首选方案)
这是最适合近距离传输的方案,推荐用HC-05或HC-06蓝牙模块,成本低还容易上手。
硬件连接步骤
- VCC引脚接Arduino的5V,GND接Arduino的GND
- 蓝牙模块的TX接Arduino的RX(引脚0),RX接Arduino的TX(引脚1)
注意:烧录Arduino代码的时候,必须拔掉这两根TX/RX连接线,否则串口被蓝牙占用,会导致烧录失败! - 如果不想占用硬件串口,也可以用
SoftwareSerial库把蓝牙模块接在其他数字引脚(比如2和3)
修改后的Arduino代码
在你原有代码基础上,添加蓝牙数据发送逻辑:
#include <SoftwareSerial.h> // 定义蓝牙模块的软串口引脚(RX=2, TX=3) SoftwareSerial bluetooth(2, 3); int sensorPin = A0; int sensorValue = 0; int LED_H = 5; void setup() { pinMode(LED_H, OUTPUT); Serial.begin(9600); // 保留硬件串口用于调试 bluetooth.begin(9600); // 蓝牙模块默认波特率一般为9600,可根据模块参数调整 } void loop() { sensorValue = digitalRead(sensorPin); // 读取传感器电平(0=检测到物体,1=未检测到) // 控制LED逻辑保持不变 if (sensorValue == 0) { digitalWrite(LED_H, HIGH); } else { digitalWrite(LED_H, LOW); } // 发送数据到蓝牙模块,添加换行符方便Android端解析 bluetooth.println(sensorValue); Serial.println(sensorValue); // 保留串口调试输出 delay(100); // 控制发送频率,避免数据过载 }
Android端实现要点
- 打开手机蓝牙,搜索并配对蓝牙模块(默认配对密码一般是
1234或0000) - 用Android的
BluetoothSocket建立连接,获取输入流读取蓝牙发送的数据 - 解析读取到的字符串(每次读取一行),转换成整数后即可在APP中使用
方案2:USB OTG连接(有线稳定方案)
如果你的Android设备支持OTG功能,可以直接用USB线将Arduino和手机连接,把Arduino当作串口设备读取数据。
Arduino端代码
不需要做太多修改,保持你原有代码中的Serial.println(sensorValue)输出即可,OTG连接后手机会识别Arduino为串口设备。
Android端实现要点
- 在
AndroidManifest.xml中添加USB权限声明 - 使用USB Host API或者第三方库(比如
usb-serial-for-android)来识别并读取串口数据 - 注意处理设备连接/断开的状态变化
方案3:WiFi模块(远程传输方案)
如果需要远程传输数据,或者不想用蓝牙/有线连接,可以给Arduino Uno搭配ESP8266 WiFi模块(比如ESP-01),或者直接换成ESP32开发板(自带WiFi和蓝牙)。
实现思路
- Arduino端通过WiFi连接到局域网,将传感器数据通过TCP/UDP发送到Android设备的IP地址,或者上传到MQTT服务器
- Android端作为TCP/UDP客户端接收数据,或者从MQTT服务器订阅数据
这个方案适合需要远程监控的场景,但配置相对复杂一些。
内容的提问来源于stack exchange,提问作者EKJUN
相关产品推荐
相关产品推荐

