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

相关推荐
xuxg200521 小时前
4G 模组 AT 命令解析框架课程正式发布
stm32·嵌入式·at命令解析框架
CODECOLLECT1 天前
京元 I62D Windows PDA 技术拆解:Windows 10 IoT 兼容 + 硬解码模块,如何降低工业软件迁移成本?
stm32·单片机·嵌入式硬件
BackCatK Chen1 天前
STM32+FreeRTOS:嵌入式开发的黄金搭档,未来十年就靠它了!
stm32·单片机·嵌入式硬件·freertos·低功耗·rtdbs·工业控制
全栈游侠1 天前
STM32F103XX 02-电源与备份寄存器
stm32·单片机·嵌入式硬件
辰哥单片机设计1 天前
STM32项目分享:车辆防盗报警系统
stm32·单片机·嵌入式硬件
風清掦1 天前
【江科大STM32学习笔记-05】EXTI外部中断11
笔记·stm32·学习
小龙报1 天前
【51单片机】从 0 到 1 玩转 51 蜂鸣器:分清有源无源,轻松驱动它奏响新年旋律
c语言·数据结构·c++·stm32·单片机·嵌入式硬件·51单片机
czwxkn1 天前
4STM32(stdl)TIM定时器
stm32·单片机·嵌入式硬件
Love Song残响1 天前
NVIDIA显卡终极优化指南
stm32·单片机·嵌入式硬件
BackCatK Chen2 天前
第 8 篇:TMC2240 电机正反转实现|DIR 引脚控制 + 代码优化(稳定不抖动)
stm32·单片机·嵌入式硬件·保姆级教程·电机正反转·tmc2240·dir引脚控制