概述
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无线控制灯珠亮度所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复