Pololu Robotics & Electronics
My account Comments or questions? About Pololu Contact Ordering information Distributors

Pololu Forum

Wixel-Wixel Communication Breakdown


I’m developing a system where 1 battery-powered Wixel (“WXT”) collects data from the minIMU-v9 over I2C and wirelessly sends the data (using the radio_link library interface) to another Wixel (“WXR”), which sends the received data to a PC terminal through a serial port. WXT starts up in sleep mode where it enters PM2 for 30 seconds, wakes up and listens for commands from WXR for 3 seconds, and repeats. During this 3-second period, it’s designed to send an “I’m alive” signal to WXR (3 “pings” about a second apart), which show up on the PC terminal. WXT is also programmed to blink the yellow LED every time it sends a ping for visual confirmation.

We’ve been able to record pings consistently for several hours with the same model,
but are encountering a recent issue wherein WXT will successfully continue its sleep/ping cycle as expected (visually confirmed), while pings stop appearing on the PC terminal after some indeterminate amount of time. WXT can’t be easily reprogrammed once it’s installed, so debugging has been limited primarily to WXR. However, given the LED confirmation (30 seconds with no LEDs, blinking yellow LED for 3 seconds, repeat), it seems like WXT is working properly.

On the receiver side, I’ve tried power cycling WXR, closing and reopening the serial port, and decreasing the distance between WXR & WXT until they’re nearly adjacent, with no change in behavior. Sending commands from WXR to WXT also doesn’t have any effect (i.e. WXT remains in sleep/ping mode), so it seems like an issue with radio communication, but we’re unsure what the root cause could be. Any debugging tips or theories are much appreciated!


I am sorry you are having trouble with the Wixels.

You might consider getting a third Wixel and running the radio_sniffer app on it in order to see the radio packets being exchanged by the other two Wixels. If you post some samples of the communication while the system is working and also while it is failing, that might help us see what is happening.

We have not developed our Wixel libraries with sleep modes in mind, so it is possible that going to sleep is causing some problem with the radio. You might consider removing the sleeping code from WXT and generally simplifying the code on both Wixels as much as possible in order to narrow down the problem.

I also recommend checking the code running on both Wixels to make sure you are using the radio_link library properly. For example, if radioLinkTxCurrentPacket returns 0, it means there is no buffer space left for transmitting packets. Is WXT programmed to blink its yellow LED even if that is happening?