關於arduino和zigbee串口16進制通訊問題

      這幾天我作畢業設計遇到的問題。這個問題就是個人uno板子怎樣和zigbee通訊起來。先說說個人思路,把uno作成一個網關,從而連上互聯網,而zigbee就是作無線通訊。去跟個人傳感器通訊,把個人傳感器的數據發給協調器,而後協調器和uno通訊。關鍵就在於怎麼把uno和協調器通訊起來,個人zigbee板子用的是創思通訊的開發板。這板子很不錯,學習資料都有,因爲zigbee協議我看不懂。我就拿來主義,直接用的給好的代碼。一個當終端,一個當協調器。代碼不少,我就看了幾個關鍵的地方。而後又看看協調器是怎麼能過串口跟電腦的串口助手通訊的。oop

      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);
}code

    上面代碼幾行,但是我這幾天百度,學習的結果。只是但願寫下來,給有須要的人幫助。第一次寫這類型的文章。有錯誤的地方,請見諒!
開發

相關文章
相關標籤/搜索