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灯就亮了。

相关推荐
polarislove02142 小时前
9.1[ 定时器 ] 时基单元-嵌入式铁头山羊STM32笔记
笔记·stm32·嵌入式硬件
三品吉他手会点灯2 小时前
STM32F103 学习笔记-21-串口通信(第1节)-串口通信协议简介
笔记·stm32·单片机·嵌入式硬件·学习
竹叶萧萧2 小时前
stm32u575从bank2启动,擦写bank1失败
stm32·单片机·嵌入式硬件·双bank升级·双bank切换·bank2·dual-bank
福尔摩斯张2 小时前
嵌入式硬件篇:常见单片机型号深度解析与技术选型指南
网络·数据库·stm32·单片机·网络协议·tcp/ip·mongodb
辰哥单片机设计3 小时前
STM32项目分享:智能家用垃圾桶
stm32·单片机·嵌入式硬件
DIY机器人工房13 小时前
简单理解:新唐 NuMicro M483这款MCU
stm32·diy机器人工房·新唐 numicro m480·m480
某林21213 小时前
基于SLAM Toolbox的移动机器人激光建图算法原理与工程实现
stm32·嵌入式硬件·算法·slam
章鱼哥嵌入式开发18 小时前
【 STM32 ADC电压采集与串口显示系统】
stm32·单片机·课程设计·嵌入式学习·实验室测量
树上掉下一只鱼18 小时前
STM32F4xxx系列 - DAC生成噪声波
stm32