文章目录
前言
例如:随着人工智能的不断发展,智能化越来越融入人们生活,很多人都开启了嵌入式学习,本文就介绍了如何用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(感知温湿度)
2.接线
DHT11
DHT11 | ARDUINO UNO |
---|---|
DATA | 数字 7号口 |
VCC | 5V |
GND | GND |
LCD1602
LCD1602 | ARDUINO UNO |
---|---|
SDA | A4 |
VCC | 5V |
GND | GND |
SCL | A5 |
HC-06
HC-06 | ARDUINO UNO |
---|---|
TX | RX |
VCC | 5V |
GND | GND |
RX | TX |
9g舵机
9g舵机 | ARDUINO UNO |
---|---|
signal | 数字9号口 |
VCC | 5V |
GND | GND |
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与蓝牙简单实现了自动开关灯,经测试效果良好,符合预期需求。