This app allows you to wirelessly extend the reach of your microcontroller’s I/O lines up to 50 feet using two or more Wixels. An input pin on one Wixel can be mapped to an output pin on another Wixel. When the input pin reads high, the output pin will be driven high (3.3 V) and when the input pin reads low, the output pin will be driven low (0 V). Each Wixel can have up to 15 input pins, 15 output pins, or a mixture of input and output pins. Each input pin can map to one or more output pins on one or more Wixels.
Download the I/O Repeater App (v1.3) (22k wxl). Open it with the Wixel Configuration Utility, choose your settings, and write it to two or more Wixels. See Section 4 for more information on how this is done.
The following 15 pins on each Wixel can be used as inputs or outputs (or be disabled):
The behavior of each pin is determined by its link ID, which is a parameter that you can set individually for each pin on each Wixel using the Wixel Configuration Utility. A link ID of 0 means the pin will be disabled (it will be an input but its input value will not have any effect). A negative link ID between -1 and -127 means that the pin will be a digital input and its value will be transmitted over the radio. A positive link ID between 1 and 127 means that the pin will be a digital output and its output value will be determined by the input value of the pin with the opposite (negated) link ID on another Wixel. For example, if the P1_3 pin on one Wixel has a link ID of -13, then it will be a digital input and its value will be reflected on all the output pins that have a link ID of 13 on all the other Wixels. Input pins do not have any effect on output pins that are on the same Wixel.
If a Wixel is running this app and has one or more pins configured to be inputs, then it will transmit a single radio packet every 7–10 ms that contains input values and link IDs of all of its inputs. Any other Wixel that successfully receives this packet will process it and use it to update the state of its output pins.
This app will work with more than two Wixels on the same radio channel. In that case, make sure that you do not have multiple input pins on different Wixels with the same link ID: otherwise, the corresponding output pin(s) will change state unpredictably whenever there is a conflict between the different input pins. It is OK to have muliple output pins with the same link ID.
Every pin configured as an input has an internal 20 kΩ pull-up resistor except P1_0 and P1_1, which float when they are inputs. This means that if you leave the input pin disconnected, it will be pulled high by default.
Each output pin will drive low (0 V) by default before any radio packets are received that change its state.
After you have loaded this app onto a Wixel, the Wixel will appear to the computer as Virtual COM Port (with USB product ID 0x2200). If you are using Windows, you should see an entry labeled “Wixel” in your Device Manager in the “Ports (COM & LPT)” category while this app is running. You can not send or receive data on this COM port. Its only purpose is to let the Wixel Configuration Utility easily get the Wixel into bootloader mode.
The default settings are:
Therefore, if you load this app onto two Wixels using the default settings, they should behave as follows: If nothing is connected to either Wixel’s P0_0 line, the red LEDs on both Wixels will be on. If you connect the P0_0 line of one Wixel to GND using a wire, then you should see the red LED on the other Wixel turn off. This demonstrates the basic operation of the app.
Caution: The Wixel’s I/O lines are not 5V tolerant. You must use level-shifters, diodes, or voltage dividers to connect the Wixel to outputs from 5V systems. Also, avoid drawing more current from an I/O line than it can provide (see the discussion of P1_0 and P1_1 in Section 1.a). Avoid connecting multiple output pins together.