The module I am building right now is designed for low power applications that require low bandwidth but with a wider range of broadcast frequencies. Currently capable of producing frequencies from 35 MHz to about 4.4 GHz with 812 kHz of bandwidth, the prototype runs at 3.3 while only drawing sub- 70 mA at its maximum output of 16 dBm. Experimentation is very much possible as it accesses a prime spectrum that telecoms would pay a lot of money for to use.
These are the components needed:
QTY | COMPONENT | |
1 | × | CC430F5137 Application Specific ICs / Telecom ICs |
1 | × | ADF4351 Wideband frequency synthesizer |
1 | × | ADEX-10L Passive mixer |
2 | × | PSA4-5043+ LNA |
12 | × | 10 pF capacitor |
14 | × | 0.1 uF capacitor |
2 | × | 27 pF capacitor |
1 | × | 0.0022 uF capacitor |
17 | × | 100 nF capacitor |
4 | × | 2 pF capacitor |
11 | × | 10 uF capacitor |
1 | × | 100 pF capacitor |
2 | × | 2.7 pF capacitor |
1 | × | 470 nF capacitor |
2 | × | 0.8 pF capacitor |
4 | × | 13.8 pF capacitor |
1 | × | 532 pF capacitor |
1 | × | 1.17 nF capacitor |
1 | × | 15.9 pF capacitor |
2 | × | 5 pF capacitor |
1 | × | 1 nF capacitor |
1 | × | 120 pF capacitor |
2 | × | 15 pF capacitor |
5 | × | LED Fiber Optics / Emitters |
1 | × | 10x1 0.1" header |
2 | × | 8x1 0.1" header |
1 | × | 6x1 0.1" header |
4 | × | 18 nH inductor |
2 | × | 120 ohm choke |
2 | × | 0.07 uH inductor |
4 | × | 0.004 uH inductor |
1 | × | 94 nH inductor Electronic Components / Misc. Electronic Components |
2 | × | 23 nH inductor |
1 | × | 19 nH inductor |
1 | × | 2x1 0.1" header |
2 | × | MMCX connector |
1 | × | SMA connector |
4 | × | 330 ohm resistor |
1 | × | 47k ohm resistor |
1 | × | 56k ohm resistor, 1% |
3 | × | 0 ohm resistor |
1 | × | 23k ohm resistor |
1 | × | 1k ohm resistor |
1 | × | 11.3k ohm resistor |
1 | × | 5.1k ohm resistor |
4 | × | 10k ohm resistor |
2 | × | 68k ohm resistor |
2 | × | 15k ohm resistor |
2 | × | DBTC-7-152X+ directional coupler |
1 | × | AP1117 regulator |
1 | × | 0896BM15A0001 balun |
2 | × | ADG918 RF switch |
1 | × | FOX924 crystal |
1 | × | B3744 SAW filter |
1 | × | NX3225GA-26MHZ-TI crystal |
Ease of use is one of the factors taken into account when creating a design. By allowing it to be coupled with a different open-source piece of material such as the Arduino, along with its shield libraries, it is able to create connections between your wireless experiments and your Wifi/BT or whatever interface suits you. These libraries already exist, so there is a nice way to leverage other work and not have to change everything in the process. I also implemented HAL for higher level of functionality, so that there is no need for setting registers and bitmasks. Below are the syntaxes that utilize the module.
set_datarate(float) - Sets the datarate of the CC430. Returns 1 if the datarate is outside of what the CC430 can provide.
set_frequency(float) - Sets the transmit and receive frequency. Returns 1 if the frequency is out of bounds. Functionally, this programs the VCO. It may be possible to have separate transmit and receive frequencies, but I'm not sure how long the PLLs take to settle, so for now the HAL will only support a single transmit and receive frequency.
set_power(int) - Sets the transmit power. Returns 1 if out of bounds.
set_mode(string) - Takes in either "tx" or "rx" and puts the device into either transmit or receive mode. Returns 1 if not "tx" or "rx". Functionally, this controls the RF switches.
get_status(void) - Returns a struct of various status information.
get_device_id(void) - Returns device ID. Useful for simple testing.
set_message(char *buf, int length) - Takes in a pointer to a byte array and a length. The buffer is loaded into a FIFO for transmitting. If the buffer is larger than the FIFO, the FIFO is filled and transmitting automatically starts. This process repeats until the FIFO is loaded with the last chunk of data.
transmit_now(void) - This should always be called immediately after set_message(). This will force the transmit FIFO to empty by transmitting, which will send any fractional buffers still in the FIFO that did not fill it completely.
get_message() - Returns a pointer to a byte array that is the size of the receive FIFO. This array contains demodulated data from the CC430. It's up to the user to loop on this function until the end of message identifier is hit.
set_modulation(string) - Takes in "FSK", "GFSK", "MSK", "OOK", or "ASK". Sets the modulation used by the CC430.