How best to pass DIO button presses to PC host on the receiving end? Using Xbee3.

Hi there! I’ve been an Xbee user for a few years as a professional and an independent developer. My current project requires receiving API packets from a remote device, but also using some local button presses for user input.

I have an Xbee3 receiving packets from a drone at a rapid pace, and I’m reading the packets over PC. But I also want to get the user button presses into the PC, and I would like to avoid adding a microcontroller or any extra hardware on the PC side.

Ideally, I would just wire the buttons up to the DIO pins and have the local Xbee construct some sort of serial packet and send it to the host PC, but I don’t know if the Xbee3 can even do that.

Is there any simple way I can wire buttons to the local Xbee and read those inputs from the PC? Or would I have to constantly be running AT requests and missing my Rx packets? Alternatively, would the bluetooth functionality work for this? I need to get the user button presses quickly when they occur, but I can’t be tying up the Rx process because I need all the packets I can get, and late packets need to be considered stale.

Thanks for your time and advice!

The XBee 3 will support DIO line passing which is what you want if you use the 802.15.4 firmware.

I feel your pain! I too have a time sensitive application and am considering adding a line passing function to it and concerned how the core serial data would be effected by the line passing “interrupts”. Note that the typical air data rate is 250kbps, so depending on your serial frequency and baud rate there may be more than enough white space to hold a line passing message without interruption. However to find out, mock up a tx/rx pair and sniff both serial streams using an inexpensive PC logic analyzer (while the DIO button is pressed) to see what happens. For the record, I am using DigiMesh vs 802.15.4; some time back I was advised to do so for best latency. We’re measuring only 6 to 7 ms latency on 4 byte packets sent at 80 Hz/115,200 baud. Most curious to see how it works out :slight_smile: .

Steve M.

Thanks for the advice! I’m now attempting to get this to work, but it seems like “line passing” is sending the DIO data over the air. My button presses are local, and so I’m hoping to get a line level change to trigger an API packet to be sent over the UART. I’ve read all of the documentation, but nothing is showing up in the XCTU API window. Am I not able to do that?

If you need, I can send or upload a radio profile.