[英]Transmitting Data from Xbee Coordinator to Remote XBee on Arduino Uno
我正在嘗試從連接到計算機的XBee Series 1設備(協調器)向遠程XBee Series 1設備(終端設備)發送數據串,以打開和關閉2個LED。
這是我用來將數據字符串從XBee協調器發送到XBee終端設備的Python代碼:
import serial
import time
arduino = serial.Serial('COM13', 9600, timeout=1)
#msg = arduino.readline() # read everything in the input buffer
time.sleep(3)
ASCIIdata = '121210'
for i in range(len(ASCIIdata)):
if ASCIIdata[i] == '1':
strin = '1'
arduino.write(strin.encode())
print strin.encode()
time.sleep(0.2)
# print(ASCIIdata[i])
try:
print ("Message from arduino: ")
print arduino.readline()
raise
except Exception as e:
print ("Fail to send!")
if ASCIIdata[i] == '2':
strin = '2'
arduino.write(strin.encode())
time.sleep(0.2)
# print(ASCIIdata[i])
try:
print ("Message from arduino: ")
print arduino.readline()
except:
print "Fail to send!"
if ASCIIdata[i] == '0':
strin = '0'
arduino.write(strin.encode())
time.sleep(0.2)
# print(ASCIIdata[i])
try:
print ("Message from arduino: ")
print arduino.readline()
except:
print "Fail to send!"
strin = 'p'
arduino.write(strin.encode()) # tell arduino a phase shifter setting has been finished
strin = 's'
arduino.write(strin.encode())
arduino.close()
time.sleep(0.5) # waits for 2 s
print('Data to be transfered: %s'%ASCIIdata)
這是Arduino端上的代碼,遠程XBee終端設備連接到該端:
#define pins
int pinLED1 = 5;
int pinLED2 = 12;
char c;
void setup() {
pinMode(pinLED1, OUTPUT);
pinMode(pinLED2, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available()) {
c = Serial.read();
Serial.print(c);
if (c == '1') {
digitalWrite(pinLED1, HIGH);
digitalWrite(pinLED2, LOW);
Serial.print("1 ON, 2 OFF\n");
}
else if (c == '2') {
digitalWrite(pinLED1, LOW);
digitalWrite(pinLED2, HIGH);
Serial.print("1 OFF, 2 ON\n");
}
else if (c == '0') {
digitalWrite(pinLED1, LOW);
digitalWrite(pinLED2, LOW);
Serial.print("Both unlit.\n");
}
}
else{
Serial.print("Nope");
}
}
正確的輸出應該是Arduino的2個LED交替切換然后打開,而Serial.print()
輸出應該反映在Python終端上。
但是,當我運行Python腳本時,它不斷拋出異常“發送失敗!”,即Arduino和Python之間沒有通信。
我已經通過連接我的Arduino(Uno)的USB端口通信來測試以上兩個代碼,並且一切正常。
我嘗試以以下方式配置XBees:
請問我哪里出問題了?
更新2018年2月15日:我不確定提供此信息是否有幫助,但是目前,這是我配置XBee Series 1模塊的方式:
我知道XBee無線電有很多固件,我想知道我面臨的問題是否是由於802.15.4協議的限制(盡管我認為情況並非如此)。
我認為您應該解決問題並從頭開始。 您是否嘗試過將Arduino連接到計算機串行監視器並觀察收到的內容? 如果沒有正確接收字符,請嘗試使用xbee軟件終端手動發送它們,以確保可以正確獲得它們並且xbee之間的連接正常。 然后,您可以開始調試代碼(如果問題尚未解決!)
我意識到我錯誤地設置了協調器和終端設備的地址〜協調器可以從終端設備接收消息,因為我將終端設備的地址配置為指向協調器,但是卻忘記了設置目標地址我的協調人必須與我的終端設備相同。
對於我的疏忽,我真的感到非常抱歉。
在2個單獨的設備上使用TeraTerm有助於解決我的問題,因為它消除了我的Arduino代碼的任何問題。
謝謝@TheEngineer!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.