This app allows you to connect two Wixels together to make a wireless, bidirectional, lossless serial link. It uses an RF bit rate of 350 kbps, is capable of carrying up to 10 KB of payload data per second, and can reach a range of approximately 50 feet (under typical conditions indoors). You can also use it to turn one Wixel into a USB-to-TTL serial adapter.
This app can run on multiple pairs of Wixels as long as each pair operates on a different radio channel (the channels should be separated by 2 to avoid interference).
This app is designed for pairs of Wixels; it will not work properly if three or more Wixels are broadcasting on the same radio channel.
Download the Wireless Serial App (v1.3) (26k wxl). Open it with the Wixel Configuration Utility, choose your parameters, and then write it to two Wixels. See Section 4 for more information on how this is done.
This device appears to the USB host as a 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 the app is running.
There are three basic serial modes that can be selected:
You can select which serial mode you want to use by setting the serial_mode parameter to the appropriate number (from the list above) or you can leave the serial mode at 0 (which is the default). If the serial_mode is 0, then the Wixel will automatically choose a serial mode based on how it is being powered as described in the table below, and it will switch between the different serial modes on the fly.
The RX pin has an internal 20 kΩ pull-up resistor.
The PA_PD pin (P1_5) is a debugging output that goes low while the Wixel is transmitting a packet on the radio.
The serial data format used by this app is 8 data bits, one stop bit, with no parity, which is often expressed 8-N-1. The data is non-inverted, so 0 V represents 0 and 3.3 V represents 1.
The green LED behaves as described in Section 1.a, and also flickers when there is data transferred over USB.
The yellow LED represents the state of the radio. If the Wixel is in a serial mode where the radio is not used, the yellow LED will be off. Otherwise, the yellow LED turns on and off slowly until radio communication is established for the first time, after which it blinks briefly once per second and flickers whenever data is sent or received via the radio.
The red LED indicates errors. The red LED will flash briefly if a byte is received on the UART’s RX line that had to be discarded because the receive buffers were full. The red LED will turn on when a framing error occurs on the RX line and will stay on until the RX line goes high.
In addition to relaying bidirectional serial data, this app also relays the values of four control signals: DTR, RTS, DSR, and CD. The names of these control signals come from the RS-232 protocol, but in this app they do not actually have the same role as they have in that protocol: they are general purpose digital control signals that can carry any kind of data that you want them to, as long as that data changes slowly (on the order of 5 Hz or slower) and is limited to two bits in each direction.
In USB-to-Radio mode, the DTR and RTS signals from USB are transmitted wirelessly to the other Wixel, while the control signals wirelessly received from the other Wixel are relayed to USB as DSR and CD.
In UART-to-Radio mode, the DSR and CD signals from the digital input pins are transmitted wirelessly to the other Wixel, while the control signals wirelessly received from the other Wixel are relayed to the DTR and RTS output pins.
In USB-to-UART mode, the DTR and RTS signals from USB are relayed to the corresponding output pins, while the values of the DSR and CD input pins are relayed to USB.
If two Wixels are communicating wirelessly with each other and both are in UART-to-Radio mode or both are in USB-to-Radio mode, then the correspondence between the control lines is as follows: DSR on one Wixel corresponds to DTR on the other Wixel, while RTS on one Wixel corresponds to CD on the other Wixel.
The default configuration of this app (as shown in the table above) gives the Wixel two inverted output pins (DTR and RTS), and two inverted input pins (DSR and CD). These pins are inverted, which means that a logical value of 0 corresponds to high voltage (usually 3.3 V), while a logical value of 1 corresponds to 0 V (GND).
By changing the configuration parameters (see below), you can disable these signals, reassign them to different I/O lines, or add non-inverted inputs and outputs.
Any pin configured as an input will have an internal 20 kΩ pull-up resistor unless it is assigned to P1_0 or P1_1, which do not have pull-up or pull-down resistors.
You do not have to connect anything to the control signal pins in order to send and receive serial data. These pins are optional.
Pin Assignment Parameters
The following parameters can be used to reassign the control signals to different pins on the Wixel. The value of each parameter must be the number of an unused pin on the Wixel. The number can be computed by multiplying the first digit in the pin name by 10 and adding it to the second digit in the pin name. For example, if you wanted to assign the DSR pin to P1_2, you would set nDSR_pin to 12. To disable a signal (assign it to no pin), set the corresponding parameter to -1.
You should not simultaneously enable the non-inverted and inverted input for the same signal. Specifically, either nCD_pin or CD_pin should be -1 and either nDSR_pin or DSR_pin should be -1.
Data will be lost if the Wixel receives bytes on the RX line faster than the radio can convey them to the other Wixel. If you have trouble, try reducing the amount of data sent to the RX line by lowering the baud rate or adding delays to your microcontroller’s code.
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.
The Wixel does not support the RS-232 voltage levels typically used by DB9 serial ports. The Wixel’s I/O lines, including the RX and TX lines, operate on voltages between 0 and 3.3 V. To connect the Wixel to an RS-232 serial signal, you will need additional level-shifting and inverting hardware like the Pololu 23201a serial adapter (RS-232 serial is inverted; the Wixel’s serial interface expects non-inverted serial).
Versions Configured for the Wixel Shield for Arduino
These are special versions of the app that have the same code as the corresponding standard versions, but have different settings so that they will work well with the Wixel Shield for Arduino. The default baud_rate was changed to 115200, which is the baud rate used by the Arduino Uno’s bootloader. All the pin assignment parameters were set to -1 (disabled) except arduino_DTR_pin, which was left at 0 (P0_0). The framing_error_ms parameter was set to 5. The only parameters of these apps that can be modified by the user are the radio_channel parameter and baud_rate parameter. For more information about configuring this version, please see the Section 2.c of the Wixel Shield User’s Guide.