我是靠谱客的博主 含蓄钢笔,最近开发中收集的这篇文章主要介绍手机连接蓝牙通过Zigbee无线控制灯珠亮度,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

DL-20型号的zigbee模块,两个zigbee已经事先设置好一个A,一个B,9600波特率,点对点互相通讯。
实现:通过手机蓝牙助手连接主机的蓝牙,发送信息,主机的zigbee将信息传送给从机的zigbee,从而控制从机的灯珠亮度。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

/*
---- 主机电路连接 ----

HC-08蓝牙 Arduino Uno R3 引脚
TX RX
RX TX

VCC +5v
GND GND

ZigBee Arduino Uno R3 引脚
TX 2
RX 3

简单说:发送数据时:蓝牙传送给arduino,arduino传送给主机zigbee,主机zigbee传送给从机的zigbee。
接收数据时:从机的zigbee传回给主机的zigbee,主机zigbee传回给arduino,arduino传回给蓝牙。
所以主机的arduino是充当蓝牙和zigbee之间桥梁。
zigbee使用方法很简单,当作串口来用,简单说就是它的rx与arduino的tx相连,同理它的tx与arduino的rx相连;rx代表接收,tx代表发送,这样连接他们之间就是互通的

说明:
1.我的两个zigbee模块波特率都已经调好都是9600,两个zigbee之间也设置好了一个作为A,一个作为B。两个是互相通信的

2.上传程序时,rx,tx口不能被占用,所以要拔掉蓝牙

*/

#include <SoftwareSerial.h>
SoftwareSerial BTserial(2, 3); // 建立SoftwareSerial对象,zigbee的TX连接引脚2, 蓝牙的RX引脚3(本来咱们可以用zigbee和arduino的rx和tx相连,但是被蓝牙用了,就得再 另外建个对象来实现蓝牙和arduino连接)
void setup() {

Serial.begin(9600);//设置arduino的波特率9600
BTserial.begin(9600); //设置蓝牙 HC-08 默认波特率 9600

}

void loop() {

// 手机通过蓝牙发送给arduino,arduino接收数据

if (Serial.available() > 0) { //如果HC-08接收到发来的数据
char serialData = Serial.read(); //定义serialData ,它等于从蓝牙HC-08读取到的数据
BTserial.print( serialData ); //软件串口发

}

// arduino将接收到的数据发送给zigbee

if ( BTserial.available() > 0 ) { //如果arduino接收到数据
char BTserialData = BTserial.read(); //定义BTserialData,它等于从arduino读取到的数据
Serial.print( BTserialData ); //硬件串口发

}
}

/*程序来源
http://www.taichi-maker.com/homepage/arduino-tutorial-index/mearm-index/mearm-17-bluetooth-arduino-1/
---- 从机电路连接 ----
Zigbee Arduino Uno R3 引脚
TX 0 (RX)
RX 1 (TX)
VCC +5v
GND GND

LED Arduino Uno R3 引脚
正极 11 (RX)
负极 GND (通过220欧姆限流电阻)

说明:
1.我的两个zigbee模块波特率都已经调好都是9600,两个zigbee之间也设置好了一个作为A,一个作为B。两个是互相通信的

2.须先将此程序上传至ARDUINO后,再将Zigbee连接在ARDUINO开发板的串口引脚上。
否则程序将无法正常上传。
简单说:
这个程序都是照搬,唯一区别:只是把蓝牙换成zigbee了。
*/
int brightness; //LED亮度变量
int serialData; //串口数据变量

void setup() {
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT);
pinMode(11, OUTPUT);
}

void loop(){
if( Serial.available()>0 ){ //如果串口缓存有数据
serialData = Serial.parseInt(); //将串口缓存数值存储到serialData变量
Serial.print("serialData = "); Serial.println(serialData);
if (serialData >=0 && serialData <= 255) {
if (serialData >= brightness){ //逐渐调节LED亮度
for (brightness; brightness <= serialData; brightness++){
analogWrite(11, brightness);
Serial.print("brightness = "); Serial.println(brightness);
delay(5);
}
} else {
for (brightness; brightness >= serialData; brightness–){
analogWrite(11, brightness);
Serial.print("brightness = "); Serial.println(brightness);
delay(5);
}
}
}
}
}

最后

以上就是含蓄钢笔为你收集整理的手机连接蓝牙通过Zigbee无线控制灯珠亮度的全部内容,希望文章能够帮你解决手机连接蓝牙通过Zigbee无线控制灯珠亮度所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部