在本文中,将演示如何使用Arduino(Arduino UNO)和蓝牙模块HC-05构建一个物联网项目来控制LED灯。在这个项目中,我们将使用Android智能手机将蓝牙信号发送到蓝牙模块。
在这个项目中,使用了三个主要组件; Android智能手机,蓝牙收发器和Arduino。
Android应用程序可通过按ON按钮将串行数据发送到蓝牙模块HC-05。蓝牙模块HC-05用于串行通信。它从应用程序接收数据并通过蓝牙模块的TX引脚发送到Arduino的RX引脚。Arduino中上传的代码检查收到的数据。如果接收数据为1
,则LED变为ON,如果接收的数据为0
,则LED变为OFF。
数字电路图
Bluetooth Module HC-05 Arduino UNO TX --------------------------------> RX (Pin 0) RX --------------------------------> TX (Pin 1) VCC --------------------------------> 5v GND --------------------------------> GND LED Pin Arduino UNO Pin 1 --------------------------------> GND Pin 2 --------------------------------> Pin 13
要进行Arduino板的编程,需要下载Arduino软件。可以从Arduino官方网站: https://www.arduino.cc/ 下载。如下图所示:
根据您的操作系统兼容性(Windows Installer)下载Arduino软件。
点击下载(Download),如下所示:
下载成功后,运行安装程序并按照说明进行操作。
当它要求安装驱动程序软件时,单击然后安装:
安装后,打开软件,如果它生成安全警报,则允许它。
为Arduino UNO主板写一个程序,如果接收的数据等于1
,LED亮,如果数据等于0
,则LED熄灭。参考代码如下:
char data = 0; //Variable for storing received data void setup() { Serial.begin(9600); //Sets the baud for serial data transmission pinMode(13, OUTPUT); //Sets digital pin 13 as output pin } void loop() { if(Serial.available() > 0) // Send data only when you receive data: { data = Serial.read(); //Read the incoming data and store it into variable data Serial.print(data); //Print Value inside data in Serial monitor if(data == '1') // Checks whether value of data is equal to 1 digitalWrite(13, HIGH); //If value is 1 then LED turns ON else if(data == '0') // Checks whether value of data is equal to 0 digitalWrite(13, LOW); //If value is 0 then LED turns OFF } }
保存上面程序并进行编译。
通过Arduino UNO USB线将Arduino设备连接到笔记本电脑(或显示器)。在Arduino UNO上传程序时,删除Arduino UNO设备(如蓝牙模块和LED)的所有其他连接。
编译代码后,将其上传到Arduino UNO设备中。在Arduino上传代码之前,UNO设备确保选择了Arduino串口,否则会生成错误消息“未选择串口”。
要选择串行端口,请打开“设备管理器” -> “端口” -> “Arduino Uno”,然后上传代码。
点击“ON”按钮,它将数据1
发送到蓝牙模块,这些数据从蓝牙模块传输到Arduino设备,并打开LED。点击“OFF”时,Android应用程序将数据0
发送到蓝牙模块,此数据从蓝牙模块传输到Arduino,并关闭LED。