关于arduino和zigbee串口16进制通信问题

      这几天我做毕业设计遇到的问题。这个问题就是我的uno板子怎样和zigbee通信起来。先说说我的思路,把uno做成一个网关,从而连上互联网,而zigbee就是做无线通信。去跟我的传感器通信,把我的传感器的数据发给协调器,然后协调器和uno通信。关键就在于怎么把uno和协调器通信起来,我的zigbee板子用的是创思通信的开发板。这板子很不错,学习资料都有,由于zigbee协议我看不懂。我就拿来主义,直接用的给好的代码。一个当终端,一个当协调器。代码很多,我就看了几个关键的地方。然后又看看协调器是怎么能过串口跟电脑的串口助手通信的。

      zigbee串口通信就是上图红色所看来的要求。由于我对串口通信不太熟悉,当我第一次看到要HEX显示和HEX发送时,我是来懂的。然后上百度,看了几个网页。才知道,哦!原来就是以16进制发送显示啊。(到现在我也不知道是不是这样的)知道了zigbee是怎么通信的。那下一步,我就让我的uno板子按上面的要求来和zigbee通信了。由于我不知道uno要怎么代码才可以达到上要的要求。我又一次百度了。这个过程,我看了好几天。因为,我对hex方式通信不懂啊,走了很多的弯路。而我的这篇文章就是要帮助像我之前不怎么懂的人,可以从我这里有所帮助。

      说回正文,我从百度中看到了,如果要串口发送hex16进制的话。uno是要用Serial.write的,我不知道是为什么,我之前用Serial.print发送有问题。再用Serial.print(xxx,HEX)发送还是有问题。最后,我就用了Serial.write就可以发送成功了。下面我就把我的代码显示下

unsigned char d_ligth[7]={0x3a,0x00,0x04,0x0a,0x01,0x35,0x23};//这是发送协调器代码
unsigned char d_dark[7]={0x3a,0x00,0x04,0x0a,0x00,0x34,0x23};
void setup() {
  // put your setup code here, to run once:
  Serial.begin(38400,SERIAL_8N1);
}

void loop() {
  // put your main code here, to run repeatedly:
  Serial.write(d_ligth,7);//uno发送的方式
  time_10s();
  Serial.write(d_dark,7);
  time_10s();
}
void time_10s(){
  delay(1000);
  delay(1000);
  delay(1000);
  delay(1000);
  delay(1000);
  delay(1000);
  delay(1000);
  delay(1000);
  delay(1000);
  delay(1000);
}

    上面代码几行,可是我这几天百度,学习的结果。只是希望写下来,给有需要的人帮助。第一次写这类型的文章。有错误的地方,请见谅!



























你可能感兴趣的:(arduino,zigbee)