|
本帖最后由 topdog 于 2021-7-4 18:04 编辑
zigbee是无线传输工作的一种协议。关于zigbee中的不同频率,主流频段是2.4G,另外还有欧洲频段,868MHz,北美频段,915MHz。工作模式有:点对点和广播。一般由两个模块配合来实现控制。一收一发或者称为一主(Master)一从(Slave)。市场上流行的zigbee模块固件一般采用AT命令,配置可以使用usb-ttl模块来设置。设置好采用MCU软串口发送信息,软串口的波特率要和zigbee模块一致,有的厂商强制9600。接线一般要回避D0,D1管脚,接D2,D3管脚吧。
本例PC发送命令,建立zigbee无线连接,MCU解析和执行命令。接收端D7接led。SoftwareSerial库是Arduino IDE自带的,特别注意rxPin, txPin对象的缺省值:SoftwareSerial mySerial(rxPin, txPin)
程序如下:
接pc的发送端(Master):
[pre]#include <SoftwareSerial.h> //Software Serial Port
const int RxD = 2;
const int TxD = 3;
SoftwareSerial Zigbee(RxD, TxD);
void setup()
{
Serial.begin(9600);
Zigbee.begin(9600);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
}
void loop()
{
char recvChar;
if (Zigbee.available()) { //check if there's any data sent from the remote Zigbee shield
recvChar = Zigbee.read();
Serial.print(recvChar);
}
if (Serial.available()) { //check if there's any data sent from the local serial terminal, you can add the other applications here
recvChar = Serial.read();
Zigbee.print(recvChar);
}
}[/pre]
接MCU接收端(Slave):
[pre]#include <SoftwareSerial.h> //Software Serial Port
const int RxD = 2;
const int TxD = 3;
const int LED = 7;
SoftwareSerial Zigbee(RxD, TxD);
void setup()
{
Serial.begin(9600);
Zigbee.begin(9600);
pinMode(RxD, INPUT);
pinMode(TxD, OUTPUT);
pinMode(LED, OUTPUT);
}
void loop()
{
char recvChar;
if (Zigbee.available() > 0) {
recvChar = Zigbee.read();
Serial.print(recvChar);
digitalWrite(LED, HIGH);
} else {
digitalWrite(LED, LOW);
}
if (Serial.available()) {
recvChar = Serial.read();
Zigbee.print(recvChar);
}
}[/pre]
晋级可以看一下《串口分析字符操作符,灵活的实现自动化控制》https://www.arduino.cn/thread-104455-1-1.html ,实现更多眼花缭乱的应用。
|
|