传感器大作业--基于arduino的蓝牙控制舵机和温湿度传感器的数据回传

1、蓝牙模块调试

1.1 进入 At 模式进行蓝牙基本参数设置

进入 AT 模式设置蓝牙的接线如下:
Arduino 5V – VCC
Arduino GND – GND
Arduino Pin10 – TXD
Arduino Pin11 – RXD
接下来,我们需要为使用 Arduino 设置蓝牙模块 AT 模式编写程序,这个程序是让我们可以通过 Arduino IDE 提供的串口监视器来设置蓝牙模块。

#include <SoftwareSerial.h> 
 
// Pin10为RX,接HC05的TXD
// Pin11为TX,接HC05的RXD
SoftwareSerial BT(10, 11); 
char val;
 
void setup() {
  Serial.begin(38400); 
  Serial.println("BT is ready!");
  // HC-05默认,38400
  BT.begin(38400);
}
 
void loop() {
  if (Serial.available()) {
    val = Serial.read();
    BT.print(val);
  }
 
  if (BT.available()) {
    val = BT.read();
    Serial.print(val);
  }
}

首先,将 Arduino 断电,然后按住蓝牙模块上的黑色按钮同时 Arduino 通电,如果蓝牙模块指示灯按2秒的频率闪烁,表明蓝牙模块已经正确进入 AT 模式。打开 Arduino IDE 的串口监视器,选择正确的端口,将输出格式设置为 Both: NL & CR波特率设置为 38400 ,可以看到串口监视器中显示 BT is ready! 的信息。然后,输入 AT ,如果一切正常,串口显示器会显示 OK。
接下来,我们即可对蓝牙模块进行设置,常用 AT 命令如下:
AT+ORGL # 恢复出厂模式
AT+NAME= # 设置蓝牙名称
AT+ROLE=0 # 设置蓝牙为从模式
AT+CMODE=1 # 设置蓝牙为任意设备连接模式
AT+PSWD= # 设置蓝牙匹配密码
正常情况下,命令发送后,会返回 OK ,如果没有返回任何信息,请检查接线是否正确
这里需要注意需要设置蓝牙为从模式要不然可能手机搜索不到蓝牙!!!
设置完毕后,断开电源,再次通电,这是,蓝牙模块指示灯会快速闪烁,这表明蓝牙已经进入正常工作模式。可以通过蓝牙串口调试工具进行链接,手机连接成功后闪烁频率会下降

舵机模块

采用MG92s舵机

舵机是一种位置(角度)伺服的驱动器。舵机只是一种通俗的叫法,其实质是一个伺服马达。在需要角度不断变化并可以保持的控制系统中应用广泛。如遥控机械人、飞机模型等。 舵机的转动角度为0~180°,其内部结构包括电机,控制电路和机械结构三部分;
具体接线为:
棕、红、橙(棕色连接GND、红色连接VCC、橙色连接信号);
测试代码

#include <Servo.h>
Servo myservo;
void setup()
{
myservo.attach(2);//定义PWM输出的引脚
}

void loop()
{
myservo.write(90); //写出输出角度
delay(1000);
myservo.write(0); 
delay(1000); 
}

蓝牙控制舵机

这里的电路设计比较简单,主要是两部分:
Arduino 与 HC05 模块连接
这里有两点需要注意,
1、在将代码烧入时hc05的RXD和TXD可以悬空但是不能接到arduino上的对应的TX和RX上,要不然会报错,烧不进去。
2、烧进去后,在使用时Arduino 上的 TXD 应与 HC05 模块上的 RXD 端连接,Arduino 上的 RXD 应与 HC05 模块上的 TXD 连接
Arduino 与 舵机 连接
Arduino 5V – 红色
Arduino GND – 棕色
Arduino Pin6– 橙色

Arduino 程序代码如下:

#include <Servo.h>//引头文件
 
Servo myservo;

void setup() {
  myservo.attach(6);  //定义舵机接口为6号引脚
  myservo.write(90);
  Serial.begin(38400); //初始化蓝牙,波特率为9600
}
 
void loop() {

if(Serial.available()>0)//判断串口是否有数据
{
  int val = Serial.read();//读取串口数据赋给val
  if(val=='0')//关
  {       

      Serial.println(": The light opened successfully.");
      myservo.write(0);//初始仰角
      delay(1000);
      myservo.write(90);
    } 
    
  else if(val=='1')//开
  { 

      Serial.println(": The light closed successfully.");
   
       myservo.write(180);//初始仰角
 // myservo.write(180);
      delay(1000);//
      myservo.write(90);
  }
 
  }
}

遇到的bug:最开始初始化设置的波特率是9600,蓝牙无法实现通信。后来改成了38400才可以正常通信。总结:HC05默认波特率是38400
在 Android 端上进行调试,需要下载蓝牙串口调试 APP,然后打开 蓝牙串口调试APP ,让 APP 连接上蓝牙模块,然后我们可以在 APP 中输入 1,接下来可以看到舵机旋转到180°位置然后复原,并且能在 APP 中看到 The light closed successfully. 的返回。我们再在 APP 中输入 0,可以看到舵机旋转到0°位置然后复原, APP 中返回The light opened successfully。

温湿度模块

温湿度模块的调试:

我之前的记录过一篇,可以参考。
接线
Arduino 与 温湿度传感器dht11 连接
Arduino 5V – VCC
Arduino GND – GND
Arduino Pin2– DATA

系统展示

1、系统实物展示

在这里插入图片描述

2、连接:

蓝牙模块:
Arduino 5V – VCC
Arduino GND – GND
Arduino RX – TXD
Arduino TX – RXD
(PS:再次强调在烧入程序时候Arduino的RX和TX引脚不能被占用)
舵机模块:
Arduino 与 舵机 连接
Arduino 5V – 红色
Arduino GND – 棕色
Arduino Pin6– 橙色
温湿度传感器模块:
Arduino 5V – VCC
Arduino GND – GND
Arduino Pin2– DATA

3、源码:

#include <Servo.h>//引头文件
#include <dht11.h> 

dht11 DHT11; 

#define DHT11PIN 2 
 
Servo myservo;

void setup() {
  myservo.attach(6);  //定义舵机接口为6号引脚
  myservo.write(90);
  Serial.begin(38400); //初始化蓝牙,波特率为9600
}
 
void loop() {

if(Serial.available()>0)//判断串口是否有数据
{
  int val = Serial.read();//读取串口数据赋给val
  if(val=='0')//{       

      Serial.println(": The light opened successfully.");
      myservo.write(0);//初始仰角
      delay(1000);
      myservo.write(90);
    } 
    
  else if(val=='1')//{ 

      Serial.println("The light closed successfully.");
  
       myservo.write(180);//初始仰角
 // myservo.write(180);
      delay(1000);//
      myservo.write(90);
  }
    else if(val=='2')//{ 
      int chk = DHT11.read(DHT11PIN);
      Serial.print("Humidity (%): "); 
      Serial.println((float)DHT11.humidity, 2); 

      Serial.print("Temperature (oC): "); 
      Serial.println((float)DHT11.temperature, 2); 
   
      
  }
 
  }
}

4、效果

在这里插入图片描述

  • 38
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值