0
点赞
收藏
分享

微信扫一扫

基于Arduino实现的蓝牙自动开关灯

you的日常 2022-04-29 阅读 48

文章目录


前言

例如:随着人工智能的不断发展,智能化越来越融入人们生活,很多人都开启了嵌入式学习,本文就介绍了如何用Arduino实现蓝牙自动开关灯。


提示:以下是本篇文章正文内容,下面案例可供参考

一、单片机简介

Arduino是一款便捷灵活、方便上手的开源电子原型平台。包含硬件(各种型号的Arduino板)和软件(ArduinoIDE)。由一个欧洲开发团队于2005年冬季开发。它构建于开放原始码simple I/O介面版,并且具有使用类似Java、C语言的Processing/Wiring开发环境。主要包含两个部分:硬件部分是可以用来做电路连接的Arduino电路板;另外一个则是Arduino IDE,你的计算机中的程序开发环境。你只要在IDE中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉Arduino电路板要做些什么了。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和Arduino开发环境(基于 Processing)来实现的。基于Arduino的项目,可以只包含Arduino,也可以包含Arduino和其他一些在PC上运行的软件,它们之间进行通信 (比如 Flash, Processing, MaxMSP)来实现。

二、系统实现

1.系统组成

本系统组成元器件包括:9g舵机、HC-06蓝牙模块、Arduino控制板、LCD1602显示屏、DHT11(感知温湿度)DHT11温湿度传感器
LCD1602显示屏
Arduino UNO
9g舵机
HC06 模块

2.接线

DHT11

DHT11ARDUINO UNO
DATA数字 7号口
VCC5V
GNDGND

LCD1602

LCD1602ARDUINO UNO
SDAA4
VCC5V
GNDGND
SCLA5

HC-06

HC-06ARDUINO UNO
TXRX
VCC5V
GNDGND
RXTX

9g舵机

9g舵机ARDUINO UNO
signal数字9号口
VCC5V
GNDGND

3.代码实现

代码如下(示例):

#include <dht.h>//库文件
#include <Servo.h>
#include <LiquidCrystal_I2C.h>
#include <Wire.h> 

LiquidCrystal_I2C lcd(0x27,16,2);  
dht DHT;
Servo myservo;

const int DHT11_PIN=7;//定义引脚
const int analogPin=A3; 
const int digitalPin=7; 
const int analogPin1=A2; 
const int digitalPin1=8;
const int ledPin=13; 
const int photocellPin = A5; 
char serialData;  

int Astate=0; 
boolean Dstate=0;  
int Astate1=0;
boolean Dstate1=0;

int outputValue = 0;

//char array2[]="This is SUDA.              ";  //the string to print on the LCD
//char array1[]="Hello everybody. ";  //the string to print on the LCD

void setup()
{
  myservo.attach(10);//舵机引脚
  myservo.write(90);
  delay(1000);
  Serial.begin(9600);//波特率
  lcd.init();  
  lcd.backlight();  
  pinMode(ledPin,OUTPUT); 
  pinMode(digitalPin,INPUT);  
  pinMode (digitalPin1,INPUT);
 
}

void loop()
{
  Astate=analogRead(analogPin);
  Dstate=digitalRead(digitalPin);  
  Astate1=analogRead(analogPin1);
  Dstate1=digitalRead(digitalPin1);
  outputValue = analogRead(photocellPin);
   if( Serial.available() > 0 ){   
      
    serialData =  Serial.read();
      
    if ('m' == serialData) {    
      Serial.print(serialData);   
      Serial.println(": manual mode.");
       myservo.write(90);
    }   
    else if('o' == serialData) {  
      Serial.print(serialData);   
      Serial.println(": The light opened successfully.");
      myservo.write(50);//初始仰角
 // myservo.write(720);
  delay(1000);//
    }   
    else if( 'c' == serialData){  
      Serial.print(serialData);  
      Serial.println(": The light closed successfully.");
   
       myservo.write(140);//初始仰角
 // myservo.write(180);
  delay(1000);//
   }  
    else if('r' == serialData){  
      Serial.print(serialData);  
      Serial.println(": rightTurn Command.");
    }  
    else{  
      //do nothing.  
    }  
  }  
D: int chk = DHT.read11(DHT11_PIN);
  switch (chk)
  {
  case DHTLIB_OK:  
    break;
  case DHTLIB_ERROR_CHECKSUM: 
    break;
  case DHTLIB_ERROR_TIMEOUT: 
      goto D;
    break;
  default: 
    break;
  }
   
  lcd.setCursor(0, 0);
  lcd.print("Tem:");
  lcd.print(DHT.temperature,1); 
  lcd.print(char(223));
  lcd.print("C");
  lcd.setCursor(0, 1);
  lcd.print("Hum:");
  lcd.print(DHT.humidity,1); 
  lcd.print(" %"); 
  delay(2000); //wait a while 
 
}

三、系统展示

1.蓝牙控制实现

使用应用商店蓝牙调试软件进行连接调试,发送O、C、M命令分别进行远程开、关、手动操作模式。
蓝牙控制界面

2.成果图

成品展示

总结

以上就是今天要讲的内容,本文使用Arduino与蓝牙简单实现了自动开关灯,经测试效果良好,符合预期需求。

举报

相关推荐

0 条评论