arduino 蓝牙控制LED灯实验

实验目标:使用手机的蓝牙功能控制LED灯,单片机使用arduino UNO。

物料准备: 单片机arduino UNO 1个;

蓝牙模块HC-05 1个;

串口模块 1个;

LED灯 1个

一、用串口模块配置HC-05蓝牙模块,把蓝牙模块通过串口助手连接于笔记本电脑。

二、蓝牙模块上有个按键,手按着它再通电,这样蓝牙模块进入配置模式。 此时灯闪的频率很慢。

三、在笔记本上打开串口助手。笔者用的是SSCOM V5.

在加回车换行前打勾。

发送以下指令。

四、最后一个指令 AT+RESET蓝牙模块就退出配置模式了。

五、单片机Arduino编程。

复制代码
#include <SoftwareSerial.h>  // 包含软串口库

// 定义软串口引脚 (RX, TX)
SoftwareSerial BT(10, 11);  // HC-05的TX接Arduino的Pin2,RX接Pin3

// LED引脚定义
const int ledPin = 13;
char btData;  // 存储蓝牙接收的数据

void setup() {
  // 初始化硬件串口(用于电脑调试)
  Serial.begin(38400);
  
  // 初始化软串口(用于蓝牙模块)
  BT.begin(38400);  // HC-05默认波特率9600
  
  // 设置LED引脚
  pinMode(ledPin, OUTPUT);
  digitalWrite(ledPin, LOW);
  
  // 打印启动信息
  Serial.println("=== Bluetooth LED Control System ===");
  Serial.println("System initialized successfully!");
  Serial.println("Bluetooth module is ready.");
  Serial.println("Send commands via Bluetooth:");
  Serial.println("  '1' - Turn ON LED");
  Serial.println("  '0' - Turn OFF LED");
  Serial.println("  '?' - Get status");
  Serial.println("==============================");
  
  // 也向蓝牙模块发送欢迎信息
  BT.println("Bluetooth Connected!");
  BT.println("Send commands:");
  BT.println("1 - LED ON");
  BT.println("0 - LED OFF");
  BT.println("? - Status");
}

void loop() {
  // 检查蓝牙是否有数据
  if (BT.available() > 0) {
    btData = BT.read();  // 读取蓝牙数据
    
    // 打印接收到的数据到串口监视器
    Serial.print("Bluetooth received: ");
    Serial.println(btData);
    
    // 处理命令
    processCommand(btData);
  }
  
  // 检查串口监视器是否有数据(从电脑发送到蓝牙)
  if (Serial.available() > 0) {
    char dataFromPC = Serial.read();
    BT.write(dataFromPC);  // 转发到蓝牙模块
    Serial.print("Sent to Bluetooth: ");
    Serial.println(dataFromPC);
  }
}

void processCommand(char cmd) {
  switch(cmd) {
    case '1':  // 打开LED
      digitalWrite(ledPin, HIGH);
      BT.println("LED turned ON");
      Serial.println("LED: ON");
      break;
      
    case '0':  // 关闭LED
      digitalWrite(ledPin, LOW);
      BT.println("LED turned OFF");
      Serial.println("LED: OFF");
      break;
      
    case '?':  // 查询状态
      BT.print("LED status: ");
      BT.println(digitalRead(ledPin) ? "ON" : "OFF");
      Serial.print("LED status: ");
      Serial.println(digitalRead(ledPin) ? "ON" : "OFF");
      break;
      
    default:  // 未知命令
      BT.println("Unknown command. Use: 1, 0, ?");
      Serial.println("Unknown command received");
      break;
  }
}

六、把单片机、蓝牙模块、串口模块、LED灯连接好。

七、打开手机上的蓝牙APP,使用如下图的蓝牙模块,它可以搜索到经典蓝牙。

八、打开蓝牙APP,搜索蓝牙,连接上蓝牙模块,再发送1.

九、此时LED灯就亮了。

相关推荐
ting_zh6 小时前
STM32F7系列MCU上电启动流程
stm32·单片机·嵌入式硬件
五羟基己醛8 小时前
【嵌入式入门】STM32之封装自己的静态链接库(.lib文件)
stm32·单片机·嵌入式硬件
boneStudent11 小时前
BLDC电机无感FOC控制代码实例分享
stm32·单片机·嵌入式硬件
大神与小汪13 小时前
STM32WB55串口蓝牙模块
stm32·单片机·嵌入式硬件
独处东汉14 小时前
AI辅助Stm32l031项目开发调试板子之按键跟adc
stm32·单片机·嵌入式硬件
【 STM32开发 】14 小时前
【STM32 CubeMX】DAC 输出正弦波
stm32·信号·dac·正弦波·数模转换
YouEmbedded17 小时前
解码STM32定时器:原理、配置与实战
stm32·定时器·pwm·sg90舵机
羊小猪~~17 小时前
【QT】-- QT基础类
开发语言·c++·后端·stm32·单片机·qt
Q_219327645518 小时前
基于STM32的智能家居安防系统设计
网络·stm32·智能家居
BreezeJuvenile19 小时前
STM32_存储器与寄存器详细介绍
stm32·存储器·寄存器