在上一篇文章中,我已经将两块Nano板通过蓝牙进行了连接,那么现在这一节就让两块Nano板子通过蓝牙进行通信(信息交互);(代码见附录)
模块A
模块A为智能硬件模块,上装有蓝牙、蜂鸣器,开关等传感器,实物图如下:
模块B
模块B为信息采集模块,上面装有蓝牙、门磁和红外传感器等,实物图如下:
信息采集模块上的红外传感器监测是否有人经过,门磁传感器监测是否门被打开,当两者都发生时(即有人经过且门被打开),模块B通过蓝牙向模块A发送一个字符'V',当模块A接收到字符'V'时,就会启动蜂鸣器发声提醒。
通过以上过程来模仿家居进出门提醒功能。
代码比较简单,且含有注释,就不再赘述。
附录
//模块A,智能硬件模块,与家居常用物品绑定使用,成为智慧物品
#include<SoftwareSerial.h>
SoftwareSerial BT(8, 9); // RX,TX
char val;//定义参数接收蓝牙的值
int buzzer=7;
void setup() {
Serial.begin(38400);
BT.begin(38400);//蓝牙波率设置为38400
pinMode(7,OUTPUT);
pinMode(5,INPUT);
}
void loop() {
if(BT.available()){
val=BT.read();
// BT.println(val);
Serial.println(val);
if(val=='V'){
//接收到V,蜂鸣器一直响
for(int i=0;i<=80;i++){
digitalWrite(buzzer,HIGH);
delay(1);
digitalWrite(buzzer,LOW);
delay(1);
}
}
}
}
//模块B,信息采集模块,与家居大门进行绑定使用,用以采集进出门信息
#include <SoftwareSerial.h>//引用串口
SoftwareSerial BT(8, 9); //设置软件串口,接收和发送
const int pirPin = 6;//红外线传感器信号端口
const int ledPin = 13;
int HighPin1 = 5;//门磁开关传感器信号端口
void setup()
{
Serial.begin(38400);
BT.begin(38400);
pinMode(pirPin, INPUT); //设置人体红外接口为输入状态
pinMode(ledPin, OUTPUT);
pinMode(HighPin1,OUTPUT);
for (int i = 0; i++; i < 5) {
digitalWrite(ledPin, HIGH);
delay(1000);
digitalWrite(ledPin, LOW);//开启设备时LED闪烁
delay(1000);
}
}
void loop()
{
int val = digitalRead(pirPin); //定义参数存储人体红外传感器读到的状态
Serial.print("H");
Serial.println(val);
if (val == 1) { //如果检测到有动物运动(在检测范围内),下一步监测门磁状态
int by = digitalRead(HighPin1);//定义参数存储门磁开关传感器读到的状态
Serial.print("S");
Serial.println(by);
if (by == LOW) {//如果检测到门磁打开,则为LOW,下一步发送蓝牙信号
BT.println('V'); //发送蓝牙信,提醒用户携带放置物品
}
delay(100); //延时100毫秒
}
}