Offline
Newbie
Karma: 0
Posts: 28
|
 |
« on: July 22, 2012, 08:27:23 pm » |
Hi,
I am trying to send information from arduino to the xbee explorer using Xbee series-1.I am using the following code
/** * Copyright (c) 2009 Andrew Rapp. All rights reserved. * * This file is part of XBee-Arduino. * * XBee-Arduino is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * XBee-Arduino is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBee-Arduino. If not, see <http://www.gnu.org/licenses/>. */ #include <XBee.h> #include <SoftwareSerial.h>
#include <I2C.h> #include <MMA8453_n0m1.h> MMA8453_n0m1 accel; // Define SoftwareSerial TX/RX pins // Connect Arduino pin 9 to TX of usb-serial device uint8_t ssRX = 9; // Connect Arduino pin 10 to RX of usb-serial device uint8_t ssTX = 10; // Remember to connect all devices to a common Ground: XBee, Arduino and USB-Serial device SoftwareSerial nss(ssRX, ssTX);
/* This example is for Series 1 XBee Sends a TX16 or TX64 request with the value of analogRead(pin5) and checks the status response for success Note: In my testing it took about 15 seconds for the XBee to start reporting success, so I've added a startup delay */
XBee xbee = XBee();
unsigned long start = millis();
// allocate two bytes for to hold a 10-bit analog reading uint8_t payload[] = { 0, 0 };
// with Series 1 you can use either 16-bit or 64-bit addressing
// 16-bit addressing: Enter address of remote XBee, typically the coordinator Tx16Request tx = Tx16Request(0x1234, payload, sizeof(payload));
// 64-bit addressing: This is the SH + SL address of remote XBee //XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x406c3887); // unless you have MY on the receiving radio set to FFFF, this will be received as a RX16 packet //Tx64Request tx = Tx64Request(addr64, payload, sizeof(payload));
TxStatusResponse txStatus = TxStatusResponse();
int pin5 = 0;
int statusLed = 11; int errorLed = 12;
void flashLed(int pin, int times, int wait) { for (int i = 0; i < times; i++) { digitalWrite(pin, HIGH); delay(wait); digitalWrite(pin, LOW); if (i + 1 < times) { delay(wait); } } }
void setup() { pinMode(statusLed, OUTPUT); pinMode(errorLed, OUTPUT); xbee.begin(9600); nss.begin(9600); nss.println("starting up yo!"); accel.setI2CAddr(0x1D); //change your device address if necessary, default is 0x1C accel.dataMode(true, 2); //enable highRes 10bit, 2g range [2g,4g,8g] }
void loop() { accel.update(); // start transmitting after a startup delay. Note: this will rollover to 0 eventually so not best way to handle if (millis() - start > 15000) { // break down 10-bit reading into two bytes and place in payload pin5 = accel.x(); payload[0] = pin5 >> 8 & 0xff; payload[1] = pin5 & 0xff; Tx16Request tx = Tx16Request(0x1234, payload, sizeof(payload)); xbee.send(tx);
// flash TX indicator // flashLed(statusLed, 1, 100); } // after sending a tx request, we expect a status response // wait up to 5 seconds for the status response if (xbee.readPacket(5000)) { // got a response!
// should be a znet tx status if (xbee.getResponse().getApiId() == TX_STATUS_RESPONSE) { xbee.getResponse().getZBTxStatusResponse(txStatus); // get the delivery status, the fifth byte if (txStatus.getStatus() == SUCCESS) { // success. time to celebrate flashLed(statusLed, 5, 50); } else { // the remote XBee did not receive our packet. is it powered on? flashLed(errorLed, 3, 500); } } } else if (xbee.getResponse().isError()) { nss.print("Error reading packet. Error code: "); //nss.println(xbee.getResponse().getErrorCode()); // or flash error led } else { // local XBee did not provide a timely TX Status Response. Radio is not configured properly or connected flashLed(errorLed, 2, 50); } delay(1000); }
The serial monitor is displaying some trash. Please tell me whats wrong with my program.
Thnaku very much
|
|
|
|
|
Logged
|
|
|
|
|
Global Moderator
Melbourne, Australia
Offline
Shannon Member
Karma: 219
Posts: 13898
Lua rocks!
|
 |
« Reply #1 on: July 22, 2012, 08:33:01 pm » |
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #2 on: July 22, 2012, 08:39:13 pm » |
Sorry i dont understand what do u mean by "Code tags please".
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #3 on: July 22, 2012, 09:40:06 pm » |
Can u plese tell me how to modify the code to display the correct value in the serial monitor
Thanku very much
|
|
|
|
|
Logged
|
|
|
|
|
Global Moderator
Melbourne, Australia
Offline
Shannon Member
Karma: 219
Posts: 13898
Lua rocks!
|
 |
« Reply #4 on: July 22, 2012, 11:52:57 pm » |
Sorry i dont understand what do u mean by "Code tags please".
Please edit your post, select the code, and put it between [code] ... [/code] tags. You can do that by hitting the # button above the posting area.
|
|
|
|
|
Logged
|
|
|
|
|
Seattle, WA USA
Offline
Brattain Member
Karma: 316
Posts: 35593
Seattle, WA USA
|
 |
« Reply #5 on: July 23, 2012, 04:29:18 am » |
The serial monitor is displaying some trash. Please tell me whats wrong with my program. Probably nothing is wrong with the program. Most likely, you don't have the Serial Monitor baud rate set to match the Arduino's serial baud rate.
|
|
|
|
|
Logged
|
|
|
|
|
Global Moderator
Melbourne, Australia
Offline
Shannon Member
Karma: 219
Posts: 13898
Lua rocks!
|
 |
« Reply #6 on: July 23, 2012, 05:45:48 am » |
The serial monitor is displaying some trash. Please tell me whats wrong with my program. I don't see where you did Serial.begin(). Plus see reply #4.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #7 on: July 23, 2012, 08:23:59 pm » |
Hi, I am trying to send information from arduino to the xbee explorer using Xbee series-1.I am using the following code /** * Copyright (c) 2009 Andrew Rapp. All rights reserved. * * This file is part of XBee-Arduino. * * XBee-Arduino is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * XBee-Arduino is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with XBee-Arduino. If not, see <http://www.gnu.org/licenses/>. */ #include <XBee.h> #include <SoftwareSerial.h>
#include <I2C.h> #include <MMA8453_n0m1.h> MMA8453_n0m1 accel; // Define SoftwareSerial TX/RX pins // Connect Arduino pin 9 to TX of usb-serial device uint8_t ssRX = 9; // Connect Arduino pin 10 to RX of usb-serial device uint8_t ssTX = 10; // Remember to connect all devices to a common Ground: XBee, Arduino and USB-Serial device SoftwareSerial nss(ssRX, ssTX);
/* This example is for Series 1 XBee Sends a TX16 or TX64 request with the value of analogRead(pin5) and checks the status response for success Note: In my testing it took about 15 seconds for the XBee to start reporting success, so I've added a startup delay */
XBee xbee = XBee();
unsigned long start = millis();
// allocate two bytes for to hold a 10-bit analog reading uint8_t payload[] = { 0, 0 };
// with Series 1 you can use either 16-bit or 64-bit addressing
// 16-bit addressing: Enter address of remote XBee, typically the coordinator Tx16Request tx = Tx16Request(0x1234, payload, sizeof(payload));
// 64-bit addressing: This is the SH + SL address of remote XBee //XBeeAddress64 addr64 = XBeeAddress64(0x0013a200, 0x406c3887); // unless you have MY on the receiving radio set to FFFF, this will be received as a RX16 packet //Tx64Request tx = Tx64Request(addr64, payload, sizeof(payload));
TxStatusResponse txStatus = TxStatusResponse();
int pin5 = 0;
int statusLed = 11; int errorLed = 12;
void flashLed(int pin, int times, int wait) { for (int i = 0; i < times; i++) { digitalWrite(pin, HIGH); delay(wait); digitalWrite(pin, LOW); if (i + 1 < times) { delay(wait); } } }
void setup() { pinMode(statusLed, OUTPUT); pinMode(errorLed, OUTPUT); xbee.begin(9600); nss.begin(9600); nss.println("starting up yo!"); accel.setI2CAddr(0x1D); //change your device address if necessary, default is 0x1C accel.dataMode(true, 2); //enable highRes 10bit, 2g range [2g,4g,8g] }
void loop() { accel.update(); // start transmitting after a startup delay. Note: this will rollover to 0 eventually so not best way to handle if (millis() - start > 15000) { // break down 10-bit reading into two bytes and place in payload pin5 = accel.x(); payload[0] = pin5 >> 8 & 0xff; payload[1] = pin5 & 0xff; Tx16Request tx = Tx16Request(0x1234, payload, sizeof(payload)); xbee.send(tx);
// flash TX indicator // flashLed(statusLed, 1, 100); } // after sending a tx request, we expect a status response // wait up to 5 seconds for the status response if (xbee.readPacket(5000)) { // got a response!
// should be a znet tx status if (xbee.getResponse().getApiId() == TX_STATUS_RESPONSE) { xbee.getResponse().getZBTxStatusResponse(txStatus); // get the delivery status, the fifth byte if (txStatus.getStatus() == SUCCESS) { // success. time to celebrate flashLed(statusLed, 5, 50); } else { // the remote XBee did not receive our packet. is it powered on? flashLed(errorLed, 3, 500); } } } else if (xbee.getResponse().isError()) { nss.print("Error reading packet. Error code: "); //nss.println(xbee.getResponse().getErrorCode()); // or flash error led } else { // local XBee did not provide a timely TX Status Response. Radio is not configured properly or connected flashLed(errorLed, 2, 50); } delay(1000); }
The serial monitor is displaying some trash. Please tell me whats wrong with my program. Thnaku very much
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #8 on: July 23, 2012, 11:11:12 pm » |
Hi,Even though after including Serial.begin() also it is showing some trash in the serial monitor and the baud rate is same for serial monitor also. Can u please tell me the configuration settings of the two xbees using XCTU.
Thanku very much
|
|
|
|
|
Logged
|
|
|
|
|
Pittsburgh, PA, USA
Offline
Faraday Member
Karma: 31
Posts: 2947
I only know some basic electricity....
|
 |
« Reply #9 on: July 23, 2012, 11:33:43 pm » |
// Connect Arduino pin 9 to TX of usb-serial device uint8_t ssRX = 9; // Connect Arduino pin 10 to RX of usb-serial device uint8_t ssTX = 10; // Remember to connect all devices to a common Ground: XBee, Arduino and USB-Serial device SoftwareSerial nss(ssRX, ssTX);
What Arduino are you using? My UNO does (hardware) usb-serial on pins 2 and 3 only. But I could go softserial on 9 and 10 to a serial-USB adapter, I suppose.
|
|
|
|
|
Logged
|
Examples can be found at Learning in the Main Site and at the Playground
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 28
|
 |
« Reply #10 on: July 24, 2012, 01:29:24 am » |
I am using Arduino Uno
|
|
|
|
|
Logged
|
|
|
|
|
Seattle, WA USA
Offline
Brattain Member
Karma: 316
Posts: 35593
Seattle, WA USA
|
 |
« Reply #11 on: July 24, 2012, 05:03:26 am » |
Can u please tell me the configuration settings of the two xbees using XCTU. Can you learn to spell. You is not u. You need to have set PAN ID, DL, and MY. What values did you set/do you have? What baud rate are the XBees operating at? What Arduino are you using? My UNO does (hardware) usb-serial on pins 2 and 3 only. The ones labeled 0 and 1 on the board?
|
|
|
|
|
Logged
|
|
|
|
|
Global Moderator
UK
Offline
Brattain Member
Karma: 138
Posts: 19067
I don't think you connected the grounds, Dave.
|
 |
« Reply #12 on: July 24, 2012, 05:31:21 am » |
@OP: You can still go back to the start of this thread and add those code tags - it isn't too late.
|
|
|
|
|
Logged
|
Pete, it's a fool looks for logic in the chambers of the human heart.
|
|
|
|
Global Moderator
Melbourne, Australia
Offline
Shannon Member
Karma: 219
Posts: 13898
Lua rocks!
|
 |
« Reply #13 on: July 24, 2012, 06:11:26 am » |
Sorry i dont understand what do u mean by "Code tags please".
Did you read the thread I linked about how to post a programming question? If not, and if you are going to ignore us, I'll have to lock this thread. Sorry.
|
|
|
|
|
Logged
|
|
|
|
|
Pittsburgh, PA, USA
Offline
Faraday Member
Karma: 31
Posts: 2947
I only know some basic electricity....
|
 |
« Reply #14 on: July 24, 2012, 08:14:37 am » |
What Arduino are you using? My UNO does (hardware) usb-serial on pins 2 and 3 only. The ones labeled 0 and 1 on the board? Hence my confusion over INT0 and INT1 being tied up with Serial when they're not. I swear I go round this monkey ride a few more times and I'll either never forget or never get it right! Yeah... Arduino pins 0 and 1, 328P pins 2 and 3, but definitely not pins 9 and 10. I'm just wondering since the code I've seen doesn't use the usual path to Serial Monitor if the screen garbage has anything to do with the wiring to get data to it. Something must go there or there wouldn't be garbage would there?
|
|
|
|
|
Logged
|
Examples can be found at Learning in the Main Site and at the Playground
|
|
|
|
|