Hello,
I am looking for some assistance for a few thing related to the SparkFun Digi XBee® Arduino Shield i purchased.
The goal here is to establish basic communication between an Arduino Uno r4 Wifi, the SparkFun Digi XBee® Arduino Shield and the Digi XBee3 Global LTE-M Module. I am attempting to do this using the UART software serial connection on the Arduino.
These are the Products that i am using (they from what i can tell are designed specifically for the Xbee 3 Series and should work together)
LTE Module: Digi XBee® 3 Low-Power LTE-M/NB-IoT, GNSS, no SIM - WRL-22329 - SparkFun Electronics
Shield: SparkFun Digi XBee® Arduino Shield - USB-C (Qwiic) - WRL-22131 - SparkFun Electronics
The Xbee ecosystem is new to me but i do have some basic experience with Arduino boards but not to the level of an engineer.
A Little Context as to where i am so far. I have tested the Xbee 3 LTE module on my windows PC with the USB explorer. I am able to communicate with it using the XCTU and digi Xbee studio software and can perform all normal operations as well as serial commands via the built in serial program in the XCTU (Enter command mode, sent AT Commands, Etc).
But i am unable to get any communication at all when the Module is mounted on the Shield and connected to the arduino.
From here i have 2 questions:
- Should i be able to connect the LTE module to the Xbee Arduino Shield and connect that shield itself via the onboard USB-C connection to my PC and communicate with it via the XCTU with the same process as the Xbee USB explorer? Currently when i try this it doesn’t detect anything even connected to the PC in device manager or the XCTU software. Is this normal or do i have a defective Xbee Arduino shield?
Assuming a hardware issue is not the problem with the shield, my second question is why am i unable to establish basic communication between the Arduino and the LTE Module. I am a little new to this so bear with me but here is a sample of the code i am attempting to use to simply enter command mode and see if i get an OK response.
#include <SoftwareSerial.h>
#define RX_PIN 2
#define TX_PIN 3
SoftwareSerial xbeeSerial(RX_PIN, TX_PIN);
void setup() {
Serial.begin(9600); // Serial monitor for debugging
xbeeSerial.begin(9600); // XBee communication baud rate
Serial.println("Initializing XBee communication...");
delay(2000);
// Send an AT command to check if the XBee is responsive
xbeeSerial.println("+++"); // Enter command mode
delay(2000);
if (xbeeSerial.available()) {
String response = xbeeSerial.readString();
Serial.print("Response: ");
Serial.println(response);
} else {
Serial.println("No response from XBee. Check connections.");
}
}
void loop() {
// Continuously listen for responses from XBee
if (xbeeSerial.available()) {
Serial.write(xbeeSerial.read());
}
}
As of now the only response i am getting is No response from XBee. Check connections.
If anyone has any insights, resources or information that i can use to progress that would be great. (It could be something simple in the arduino code i am missing)