I was inspired to fully develop a wireless DCC transmitter and receiver by two sources: Martin Sant, who runs the BlueRidge Engineering website, and an article by Mark and Vince Buccini titled “Build Your Own Wireless DCC System” that appeared in the April, June, and August 2014 editions of Garden Railways magazine. These back issues are still available.
The Buccini’s showed that it was possible to home-build a wireless DCC system at all. And Martin became a great collaborator who got me concretely started with the initial version of the “ProMini Air” wireless DCC transmitter/receiver hardware and the wireless DCC software for the Pro Mini microcontroller board. I am deeply indebted to these people.
Disclaimer: I have a close association with Blueridge Engineering, and I have worked with Blueridge to make the ProMini Air transmitter/receiver available as a kit. I am a hobbyist providing a hobbyist’s kit. I have meager experience designing PCB’s and providing kits, and it will have less “polish” than commercial “kit” offerings.
Note: Some photographs may show a prototype transceiver (a red PCB), but we recommend using the Anaren “daughterboard” that comprises the very small, FCC/IC-approved Anaren transceiver PCB that is surface-mounted to a PCB with a 10-pin interface for easy mounting to the ProMini Air PCB.
You can mount other, less expensive transceiver daughterboards to the ProMini Air PCB using the 10-pin interface. However, most of these transceiver daughterboards are not FCC/IC-approved as an “intentional transmitter.” In many cases, the manufacturers have NOT optimized these transceiver daughterboards to operate in the US/Canadian 915MHz ISM band (or the European 868-870MHz ISM band), resulting in reduced range performance.
Our goal for offering the ProMini Air receiver/transmitter is to allow those interested in “dead-rail” (radio control, battery power of a model railroad locomotive) an inexpensive way to build wireless, DCC compatible transmitters and receivers for radio-control of model railroad locomotives in the US/Canadian 915MHz ISM band – the same band and protocol as the Tam Valley Depot and CVP Airwire transmitters and receivers (and the QSI Gwire receiver). Also, you can operate the ProMini Air transmitter and receiver in the European ISM band at 869.850MHz, and we have verified interoperability with Tam Valley Depot European DRS1 transmitters and receivers.
The “ProMini Air” receiver is compatible with the Tam Valley DRS1 transmitter, both the CVP AirWire T5000 and T1300 wireless throttles, and the no longer manufactured NCE GWire CAB. The ProMini Air transmitter is compatible with the Tam Valley Depot DRS1 receiver, the CVP Airwire CONVRTR receivers, and the QSI Gwire Receiver. Of course, the ProMini Air transmitters and receivers are compatible with each other!
The ProMini Air has some features that may be of interest when compared to commercial offerings. See the Comparison Tables below.
Ch 16 (or 17(E))
In fairness, the Airwire T5000 wireless throttle was never intended to interface to standard DCC throttles. But, as Tam Valley Depot recognized, it is advantageous to use any device that supplies DCC to the rails and transmit this DCC wirelessly to DCC-compatible receivers. A notable limitation of the Tam Valley Depot DRS1 transmitter is that it does not provide DCC “IDLE” packets that the Airwire receivers require unless the original DCC throttle does so (which most, if not all, do NOT). Also, the Tam Valley Depot DRS1 transmitter can only broadcast on one Channel (near Airwire Channel 16).
The comparisons for wireless DCC receivers are shown in the Comparison Table below.
|0-16, 17(E)||None or|
Perhaps the most important difference among the receivers is “DCC filtering,” i.e., how does the receiver behave when valid RF DCC signal is lost.
When the Tam Valley DRS1 or QSI Gwire lose valid RF signal, they output random pulses. I have discussed the pros and cons of this in another post.
On the other hand, the Airwire CONVRTR outputs constant-level DC when it loses valid RF signal, or more correctly, when it doesn’t receive enough DCC “IDLE” packets. Again, as discussed in another post, the DCC decoder may halt the locomotive dead in its tracks when it receives this constant-level DC, which may or may not be what the user wants.
The Airwire CONVRTR performs “DCC filtering” by evaluating whether it’s receiving DCC “IDLE” pulses periodically. So, even if a stream of completely-valid DCC packets are received, but there are few or no “IDLE” packets, then the Airwire CONVRTR will become inactive and output constant DC to the decoder.
This is why the Tam Valley DRS1 transmitter will usually NOT work with Airwire CONVRTR receivers because the DRS1 will not insert additional DCC “IDLE” packets! The Tam Valley Depot DRS1 transmitter is a passive participant: if the input DCC throttle doesn’t produce frequent DCC “IDLE” pulses, then the Tam Valley Depot DRS1 will not transmit frequent DCC “IDLE” pulses.
The ProMini Air receiver, via OPS mode reconfiguration (by default at DCC address 9001), can select either option – output random pulses or output constant-level DCC when valid RF signal is lost. This reconfigurability makes the ProMini Air receiver the most versatile of the wireless DCC receivers. The ProMini Air receiver’s valid RF detection is somewhat more sophisticated than Airwire’s. The ProMini Air receiver detects how long it’s been since it received ANY valid DCC packet. And, after a preset time interval (which is reconfigurable via OPS mode changing of a CV), the ProMini Air receiver will output either the random pulses it’s receiving (DCC filtering “off”) or output constant-level DC (DCC filtering “on”). The DC level that is output when DCC filtering is “on,” and there is no valid RF signal is also reconfigurable via an “OPS” mode setting of a CV at the ProMini Air’s DCC address.
Once valid RF signal is received again, the ProMini Air receiver detects this condition and outputs these valid DCC packets to the “DCC amplifier” that in turn sends “track-level” DCC to the decoder as discussed below.
Another important feature of wireless DCC receivers is Channel selection and searching.
The Tam Valley Depot DRS1 receiver will “listen” on a fixed Airwire Channel if you set some hardware jumpers. Otherwise, the DRS1 will automatically search all of the Airwire Channels for a valid RF signal if you do NOT set the jumpers. This behavior may or may NOT be a good idea if multiple wireless DCC transmitters are transmitting simultaneously on different Channels. And, changing the Channel selection behavior (fixed Channel or auto-scan) requires physical access to the receiver to connect or disconnect jumpers.
On startup, the Airwire CONVRTR “listens” for a valid RF signal on its “startup” Channel (which is reconfigurable by accessing a CV using the wireless throttle’s “OPS” mode). If the CONVRTR finds no valid RF signal after a given time, the CONVRTR will switch to Channel 0. This behavior is usually a good idea.
Like the Airwire CONVRTR, on startup, the ProMini Air receiver will “listen” for valid RF on its “startup” Channel (default, 0) stored in EEPROM memory. This startup Channel is changeable using the transmitting throttle’s “OPS” mode by setting CV255 to a value of 0 through 16 at the ProMini Air transmitter’s DCC Address (default, 9001). Like the Tam Valley Depot DRS1 receiver, if the ProMini Air does not find a valid RF signal on its startup Channel, the ProMini Air receiver will then auto-scan Channels 0, 16, 17(E), 1, 2, …, 15 (in that order) for valid RF signal. This scan sequence guarantees that a wireless DCC transmitter (if one is available) is selected, but only if the ProMini Air does NOT find a valid RF DCC signal on its startup Channel from another wireless DC transmitter.
If no valid RF DCC signal is found at all on any Channel on startup, the ProMini Air receiver will select Channel 0 and wait for a valid RF DCC signal. Also, upon reset, the ProMini Air’s Channel search process will be unchanged: try the “startup” Channel stored in EEPROM memory, then try auto-searching Channels, and if all else fails, just wait on Channel 0.
So, in summary, we are offering the ProMini Air DCC transmitter and receiver kit to provide a low-cost alternative with a set of features not completely found in commercial offerings.
The downside (or flexibility) to our offering is that you need a few additional items. In the case of the ProMini Air transmitter, you need a simple “DCC Converter” PCB (available very inexpensively from Blueridge and is discussed in detail below) that converts DCC output to the track into Ground, 5V power, and 5V logic DCC. These outputs provide the ProMini Air transmitter with power and DCC packets to transmit. For the ProMini Air receiver, you will need a low-cost “DCC amplifier” that converts the ProMini Air receiver’s 5V logic DCC back to DCC that the onboard DCC decoder would in its customary configuration pick up from the track (again, discussed in detail below). The ProMini Air receiver can be powered either directly from the battery or a small external 5V power supply.
And, you will need an antenna of your choosing! I love antennas, but your antenna requirements are too diverse to offer a “one size fits all” antenna solution. We provide an FCC/IC-approved Anaren “whip” antenna with the Anaren transceiver that is surface-mounted to a 10-pin interface daughterboard. This Anaren antenna-transceiver combination should work well for most transmitter applications and is FCC/IC approved for “intentional radiators.” For the ProMini Air receiver, some can use the small whip antenna directly mounted to the transceiver onboard the ProMini Air receiver; others will need to run an antenna connecting cable to a small, externally-mounted antenna.
We discuss several nice antenna options below.
Hang with me…
The ProMini Air receiver/transmitter (Rx/Tx) kit is easy to assemble, requiring only the soldering in place of some pin rows, battery terminal (for the receiver option), and a Pro Mini PCB (not to be confused with the ProMini Air PCB) that are provided with the kit. The potential kit-builder should also be somewhat familiar with downloading firmware into micro-controller boards (an Arduino or clone Pro Mini in our case) using the Arduino IDE.
Note: We may include some of the “male” and “female” pin row connectors with the kit that may differ from the photos or descriptions here. Which pin rows go where is easy to determine since the transceiver daughtercard mounts with dual 5-position pin rows and the Pro Mini PCB mounts with two 12-position pin rows and a one two-position pin row, regardless of whether you use round or square pin rows.
The ProMini Air PCB, as you receive it, has the difficult-to-solder and easily-confused components already installed: the transceiver daughterboard, the surface-mount resistors and MOSFETs, and the 5V and 3.3V regulators. The transceiver has a U.FL antenna connector that interfaces to the provided Anaren whip antenna. If a remote antenna is required, U.FL to SMA or RP-SMA antenna cables are widely available.
Shown below is a close-up of the round pin headers. Compared to standard square-pin headers, round pin headers reduce the overall height of the assembled ProMini Air PCB when the Pro Mini PCB is mounted.
Step 1: Solder the 6-position DIP pins into the Pro Mini PCB as shown below. You can carefully bend the pins inward over the Pro Mini PCB to prevent clearance interference with other components on the assembled ProMini Air PCB. The angle of the bent pins should allow for the insertion of the USB connector that we discuss later.
Step 2: Install the supplied the two 5-position male pin rows into the transceiver daughterboard. The Anaren PCB is surface-mount, so we mount it on a dual 5-position pin row interface PCB for ease of soldering and interface. The kit provides two female rows of 5-position pin rows that you can solder to the ProMini Air PCB that allows easy insertion/removal of the transceiver daughterboard with its corresponding dual rows of male pins. Or, you can directly solder the male pins to the ProMini Air PCB for a strong, but permanent mount.
Step 3: Install the standard DIP pins and battery terminal on the ProMini Air PCB, as shown below. If you are using the ProMini Air as a transmitter, you can omit the battery terminal installation because the “DCC Converter” PCB will supply GND and +5V power as well as 5V logic DCC on the column of 3 pins adjacent to the 4-pin I2C display interface at the lower right of the ProMini Air PCB shown below.
Step 4: Solder the round DIP pins to the Pro Mini PCB and the ProMini Air PCB. The male rows will be mounted underneath and soldered on the top of the Pro Mini PCB, and the female rows will be mounted to the top and soldered underneath the ProMini Air PCB.
The technique I use is to insert, but do not solder, the round DIP pins onto the Pro Mini PCB, as shown below (12-position left, 12-position right, and two-position P4/P5). I then overlay the ProMini Air PCB on top of this temporary assembly, aligning the round pins with the corresponding mount holes in the ProMini Air PCB. Be sure that the extra, unused holes in the ProMini Air PCB align with the Pro Mini PCB’s USB pins!!!
Holding all of this temporary assembly together, solder the pins to the bottom of the ProMini Air PCB and then carefully turn the assembly over and solder the round pins to the top of the Pro Mini PCB. I use this technique to provide accurate alignment when the Pro Mini PCB removed and then re-inserted into the ProMini Air PCB.
Of course, you may have a better or more comfortable technique for soldering pin rows into place!
Below is the final mating of the Pro Mini PCB to the ProMini Air PCB with the Pro Mini PCB soldered to the male round pin rows. Once you solder the round pin rows to the Pro Mini PCB “in situ,” the Pro Mini PCB can be carefully lifted off the ProMini Air PCB, along with its male rows of round pins, for firmware loading.
That’s it for hardware assembly!
The ProMini Air can be configured as either a receiver (Rx) or transmitter (Tx) by loading firmware into the Pro Mini using a “USB Breakout Module” (available here or here) that inserts into the USB DIP pins as shown below. Since the Pro Mini PCB operates at +5V, please ensure that you use a 5V USB Breakout Module, NOT one that supplies 3.3V! Note the alignment of GND and DTR on the Pro Mini and the USB Breakout Module. Some clones of the Pro Mini have the USB pin-out reversed, so you will need to turn over the USB Breakout Module before insertion!
Once you connect the USB Breakout Module to a PC via a USB cable, the Arduino IDE can be used to download the ProMini Air’s compiled firmware. In the Arduino IDE, to set the correct microcontroller board, select: Tools > Board > Arduino Pro or Pro Mini. To set the correct chip, select: Tools > Processor > ATmega328P (5V, 16 MHz). To set the correct port, select: Tools > Port > the_correct_USB_serial_port, which you will need to figure out. I use the “AVRISP mkII” Programmer (Tools > Programmer > AVRISP mkII) because it was the default selected by the IDE.
Important Note: Since the ProMini Air’s firmware makes extensive use of the EEPROM, before installing the ProMini Air transmitter or receiver firmware, we strongly advise that you completely clear the Pro Mini’s EEPROM. Use the Arduino IDE and selecting File > Examples > Examples for Arduino Pro or Pro Mini > EEPROM > eeprom_clear program. Once eeprom_clear has been compiled and downloaded to the Pro Mini, there will be a short delay, and then one of the Pro Mini’s diagnostic LED’s will turn on continuously. Then, compile and install the ProMini Air firmware as described below.
The source code is available from this GitHub site. The source code should be placed in a directory where the Arduino IDE can find it. The subdirectory structure should be maintained so that the Arduino IDE can properly access the “project.”
Depending on whether you want a transmitter or receiver, edit libraries/config/config.h to select the “define” for the transmitter or receiver.
For a receiver (Rx), config.h should look like:
... /////////////////////////////////// // vvv User Entry Area Below vvv //////////////////////// // Set band of operation //////////////////////// /* Use ONLY ONE #define*/ /* For 896/915MHz EU/NA ISM bands*/ #define NAEU_900MHz /* For EU-only 434MHz ISM band*/ // #define EU_434MHz /* For World-Wide 2.4GHz ISM band*/ // #define NAEU_2p4GHz ////////////////////////////// // Set Transmitter or Receiver ////////////////////////////// /* Uncomment ONLY ONE #define*/ /* For receiver*/ #define RECEIVER /* For transmitter*/ // #define TRANSMITTER ///////////////////////////////////////////////// // Set the default channel for NA/EU 900MHz only! ///////////////////////////////////////////////// #if defined(NAEU_900MHz) /* Uncomment ONLY ONE #define*/ /* To set the default to NA channel 0 for 869/915MHz ISM bands only!*/ #define NA_DEFAULT /* To set the default to EU channel 17 for 869/915MHz ISM bands only!*/ // #define EU_DEFAULT #endif ////////////////////////////////////////// // Set the transceiver's crystal frequency ////////////////////////////////////////// /* Uncomment ONLY ONE #define*/ /* For 27MHz transceivers (e.g., Anaren 869/915MHz (CC110L) and Anaren 869MHz (CC1101) radios)*/ #define TWENTY_SEVEN_MHZ /* For 26MHz transceiver (almost all other radios, including Anaren 433MHz (CC1101), 915MHz (CC1101), and 2.4GHz (CC2500) radios)*/ // #define TWENTY_SIX_MHZ //////////////////////////////// // Set the LCD's default address //////////////////////////////// /* Uncomment ONLY ONE #define*/ /* The LCD display's default address.*/ /* O=Open jumper (=High); C=Closed jumper (=Low),*/ /* addresses are A2,A1,A0 from left to right on the boards*/ /* The address range for TI serial drivers */ /* PC8574: 0x20(CCC=LLL) to 0x27(OOO=HHH)(default)*/ #define LCDADDRESSDEFAULT 0x27 /* PC8574A: 0x38(CCC=LLL) to 0x3F(OOO=HHH)(default)*/ // #define LCDADDRESSDEFAULT 0x3F ... // ^^^ User Entry Area Above ^^^ /////////////////////////////////// ...
If you want a transmitter (Tx), then config.h should be
... /////////////////////////////////// // vvv User Entry Area Below vvv //////////////////////// // Set band of operation //////////////////////// /* Use ONLY ONE #define*/ /* For 896/915MHz EU/NA ISM bands*/ #define NAEU_900MHz /* For EU-only 434MHz ISM band*/ // #define EU_434MHz /* For World-Wide 2.4GHz ISM band*/ // #define NAEU_2p4GHz ////////////////////////////// // Set Transmitter or Receiver ////////////////////////////// /* Uncomment ONLY ONE #define*/ /* For receiver*/ // #define RECEIVER /* For transmitter*/ #define TRANSMITTER ///////////////////////////////////////////////// // Set the default channel for NA/EU 900MHz only! ///////////////////////////////////////////////// #if defined(NAEU_900MHz) /* Uncomment ONLY ONE #define*/ /* To set the default to NA channel 0 for 869/915MHz ISM bands only!*/ #define NA_DEFAULT /* To set the default to EU channel 17 for 869/915MHz ISM bands only!*/ // #define EU_DEFAULT #endif ////////////////////////////////////////// // Set the transceiver's crystal frequency ////////////////////////////////////////// /* Uncomment ONLY ONE #define*/ /* For 27MHz transceivers (e.g., Anaren 869/915MHz (CC110L) and Anaren 869MHz (CC1101) radios)*/ #define TWENTY_SEVEN_MHZ /* For 26MHz transceiver (almost all other radios, including Anaren 433MHz (CC1101), 915MHz (CC1101), and 2.4GHz (CC2500) radios)*/ // #define TWENTY_SIX_MHZ //////////////////////////////// // Set the LCD's default address //////////////////////////////// /* Uncomment ONLY ONE #define*/ /* The LCD display's default address.*/ /* O=Open jumper (=High); C=Closed jumper (=Low),*/ /* addresses are A2,A1,A0 from left to right on the boards*/ /* The address range for TI serial drivers */ /* PC8574: 0x20(CCC=LLL) to 0x27(OOO=HHH)(default)*/ #define LCDADDRESSDEFAULT 0x27 /* PC8574A: 0x38(CCC=LLL) to 0x3F(OOO=HHH)(default)*/ // #define LCDADDRESSDEFAULT 0x3F ... // ^^^ User Entry Area Above ^^^ /////////////////////////////////// ...
Note that two additional options are available for using transceivers that operate with 27MHz (such as the FCC/IC/CE-approved Anaren transceivers) or 26MHz transceivers and whether the operation is for North American or European operation (the latter of which only operates at 869.850MHz).
After downloading the firmware into the Pro Mini completes, please do not remove the USB connection from the computer until the “secondary” LED, which indicates attempted communication over the SPI (serial peripheral interface), flashes on (it will not be bright). This will ensure that the initial round of writes to the blank EEPROM was completed!
Alternatively, you can load the firmware into the Pro Mini MCU using an “AVR ISP,” such as the Sparkfun Pocket AVR Programmer or a less-expensive clone. This “ISP” downloading mode will bypass and erase the bootloader to directly load the firmware into the Pro Mini MCU. On boot-up with the bootloader now erased, the Pro Mini MCU will almost instantly supply “5V logic DCC” to the DCC amplifier, which in turn, provides the DCC decoder with standard DCC waveforms. There is no “boot-up DC” to speak of and no need to set CV29, bit2=0. (I set it anyway.) With this solution, all DCC decoders I’ve tried (ESU, Zimo, MTH) start-up without the “boot-up jerk.”
This “ISP” form of loading firmware is not as extensively used by folks using the Arduino IDE, but ISP loading is easily accessible within the Arduino IDE. The overly-brief method of ISP programming steps are the following:
1. Connect the USBtinyISP Programmer to the following six Pro Mini pins: GND, RST, VCC, SCK (pin 13), MISO (pin 12), and MOSI (pin 11). Be sure the “power the target” switch is set so that the USBtinyISP will supply power to the Pro Mini MCU. I have developed a very simple Pro Mini ISP Programming Board that I will make available at a nominal cost (<$3.00+shipping). This board has a pair of pins for optional GND/VCC power input because some ISP programming boards, unlike the USBtinyISP, do NOT provide +5V DC power.
2. From the Arduino IDE, Select Tools → Programmer → “USBtinyISP”
3. Select the AirMiniSketchTransmitter sketch.
4. Select Sketch → Upload using a Programmer.
The Arduino IDE will then compile the sketch and download the resulting firmware to the Pro Mini via the USBtinyISP, bypassing (and erasing) the bootloader.
Once the ProMini Air receiver or transmitter firmware is installed in the Pro Mini and inserted into the ProMini Air PCB, the ProMini Air is ready for integration!
To complete the integration of the ProMini Air receiver (Rx) or transmitter (Tx), you must establish several connections.
Overview of Connections
See the picture below for an overview of the connections to and from the ProMini Air. Which connections used depends on whether the ProMini Air will act as a receiver (Rx) or a transmitter (Tx). THERE IS NO PROTECTION AGAINST INCORRECT BATTERY OR EXTERNAL POWER CONNECTIONS!!! The ProMini Air will be destroyed immediately if the GROUND and POSITIVE POWER SUPPLY are reversed!
The U.FL connector on the Anaran transceiver may be directly connected to the provided Anaren whip antenna, or you can connect a U.FL to SMA or RP-SMA cable the ProMini Air to a remotely-mounted antenna. Also, a two-pin output provides Ground and the DCC input to (Tx) or output from (Rx) the RF transceiver board as signals to an oscilloscope for waveform review.
The ProMini Air has several connections that provide power, I2C display outputs, and 5V logic DCC inputs or outputs.
We will break down these connections for the ProMini Air receiver and transmitter in the next two sections.
Starting with the ProMini Air configured as a receiver (Rx), there are several options for providing power. The first option is to use external battery power and jumper the +5V and +5V (Battery) pins together to use the on-board 5V regulator to provide board +5V supply.
Since you may not like the heat generated by the onboard 5V regulator when you supply power with external battery power and install the jumper, as an alternative, you may use an external +5V power supply, as shown below where the external power supply provides Ground and +5V. Of course, you do NOT install the jumper.
The ProMini Air receiver must connect to an external DCC amplifier that converts the 5V logic DCC from the ProMini Air receiver to DCC A/B that a DCC decoder requires. This DCC amplifier uses battery power and the inputs from the ProMini Air receiver to provide the power and DCC messages, coded as a bipolar DCC waveform, to the decoder for both power and DCC messages. These “DCC amplifiers” are usually medium to large amperage amplifiers that accept pulse width modulation (PWM) input to provide precision output control for electric motors. The maximum PWM frequency of these amplifiers is usually high enough (> 20kHz) to reproduce DCC packets accurately.
Some DCC amplifiers have their specialized connector configurations, as shown below, for a GROVE-compliant amplifier.
Integration of the ProMini Air Receiver into a Locomotive
Of course, the real purpose of the ProMini Air receiver is to integrate it into a locomotive for wireless DCC control using an onboard battery as power. An excellent, reasonably-priced (about $14 US as of 2020), high-power (13A continuous) DCC amplifier may be purchased here as shown below. Considerably smaller (0.8″ x 1.3″), but more expensive high-amperage amplifiers (about $30 US as of 2020) that have been used with success can be found at Pololu here or here.
Now, let’s turn the ProMini Air used as a transmitter (Tx) of DCC messages from any DCC compatible throttle.
The photo below shows the connections between an interface board that takes throttle DCC A/B inputs (“track” DCC) and rectifies these inputs to provide Ground and +5V power supply output. This “DCC Converter” PCB also “taps off” the DCC A input and converts it to a 5V logic DCC output that is suitable for the ProMini Air transmitter. These outputs provide to the ProMini Air transmitter as shown below with Ground, +5V power, and 5V logic DCC input. The “DCC Converter” PCB is available from Blueridge Engineering, or the user can make this uncomplicated board based on the schematic shown below. Note: the ProMini Air transmitter IS NOT connected to a battery since it receives its power from the “DCC Converter” PCB.
Below is a schematic of the straightforward circuit that takes throttle DCC input and converts it to Ground, +5V power, and 5V logic DCC for the ProMini Air receiver.
The user can change the ProMini Air transmitter’s Channel (Airwire channels 0-16) and Power Level (0-10) by setting the DCC throttle’s address to that of the ProMini Air transmitter’s (9000 by default). Then, using the throttle’s OPS mode, change the value of a configuration variable (CV255 for Channel: 0-16, and CV254 for Power Level: 0-10), exiting OPS mode, and changing the throttle back to the locomotive’s DCC address.
Receiver/Transmitter Antenna Connections
For the ProMini Air transmitter, we strongly urge you to use the FCC/IC-approved Anaren “whip” antenna supplied with the Anaren transceiver that is surface-mounted to a 10-pin interface daughterboard. This Anaren whip antenna/transceiver combination is the FCC/IC-approved as an “intentional radiator.” For experimentation purposes, antennas for the ProMini Air transmitter can be purchased on-line from many sites. For fixed installations of the ProMini Air transmitter, we suggest the reputable products from Linx such as their SMA one-half wave antennas with an internal counterpoise. You can find these antennas at Digi-Key, e.g., ANT-916-OC-LG-SMA ($10.55) and ANT-916-CW-HWR-SMA ($12.85). The former antenna has a slightly better gain (2.2dBi versus 1.2dBi) but is somewhat longer (6.76” versus 4.75”).
The ProMini Air receiver or transmitter provides diagnostic outputs that are not required for operation, but are useful for troubleshooting or just for fun:
- The transceiver’s output (in Rx mode) or input (in Tx mode) can be monitored on the output DIP pins that are described above.
- “I2C” outputs that can drive an inexpensive 2 row, 16 column I2C LCD display.
The ProMini Air software assumes that the I2C LCD address is 0x27 (=39 decimal). Another often-used address is 0x3F (=63 decimal). Changing the address can be controlled by adjusting the following lines in the config.h file, and then recompiling and reloading into the Pro Mini.
... // The LCD display's default address. // The address range for TI serial drivers // PC8574: 0x20(CCC=LLL) to 0x27(OOO=HHH)(default) and // PC8574A: 0x38(CCC=LLL) to 0x3F(OOO=HHH)(default) // O=Open jumper (=High); C=Closed jumper (=Low), // addresses are A2,A1,A0 from left to right on the boards #define LCDADDRESSDEFAULT 0x27 ...
You can also change this address by going into the “OPS” mode to reset either the ProMini Air transmitter or receiver. For the transmitter, you use the DCC throttle that connects to the ProMini Air transmitter (by default at DCC address 9000). For the ProMini Air receiver, you use the wireless DCC throttle transmitting to the ProMini Air receiver (by default at DCC address 9001). In both cases, you set CV243 to the appropriate I2C LCD address. The EEPROM permanently stores the changed address, but this new address is not operative until you power cycle the ProMini Air.
Configuration and Testing
By default, the ProMini Air receiver and transmitter are configured to operate on Airwire Channel 0. This default can be changed by setting the DCC address to 9001(Rx)/9000(Tx) (the default, which can be changed as described in the Users Manual) to access the ProMini Air transmitter, and in OPS or Programming-on-the-Main (POM) mode setting CV255 to the desired channel. Valid channels are 0-16 for North Americal Operation or Channel 17 (869.85MHz) for European operation.
Should the ProMini Air receiver fail to detect valid DCC packets on its default Channel during startup, it will cycle through all Airwire Channels to find a Channel producing valid DCC packets. If this cycling fails to find a valid Channel, the ProMini Air receiver will change to Channel 0 and wait for a valid RF DCC signal. This change of Channel is not permanent, and on a restart, the ProMini Air will revert to its default channel.
There are several other configuration options available through “OPS” mode programming, as described in the ProMini Air Users Manual.
We strongly urge the user to test the ProMini Air before the final deployment. At the least, an inexpensive I2C LCD display can be purchased here or here (and numerous other locations) to gain some insight into the ProMini Air’s state. This display is especially valuable when using the ProMini Air as a transmitter.
Examples of Testing
In the examples below, the Yellow waveform is the signal from/to the RF transceiver for Rx/Tx, respectively, and the blue waveform is one channel of the resulting DCC (Rx) sent to the decoder or DCC received from the throttle via wireless transmission (Tx).
The photo below shows the ProMini Air operating as a receiver. Of course, an RF transmitter wirelessly sends DCC packets. This transmitter may be a dedicated wireless DCC throttle, such as the Airwire Tx5000. Or, it may be a transmitter that converts standard “track DCC” to wireless DCC such as the Tam Valley Depot DRS1 transmitter or the ProMini Air used as a transmitter (as discussed in the next section)!
On the LCD, “My Ad: #” is the DCC address of the ProMini Air itself. The “(L)” means “long” address. Displayed on the second line is the Channel number and whether DCC “filtering” is “off” (Filter: 0, as shown) or “on” (Filter: 1).
The photo below shows the oscilloscope waveforms when there is no valid RF DCC signal. With filtering off (Filter: 0), the DCC sent to the decoder reproduces the random pulses generated by the receiver.
These two photos show the ProMini Air’s transceiver and DCC amplifier output when valid RF DCC is received and when no valid RF DCC is received. DCC filtering is off, so the DCC amplifier’s output reproduces the transceiver’s DCC in both cases.
The user can reconfigure the ProMini Air receiver using the throttle’s “OPS” mode. Setting the wireless throttle DCC address to 9001 now shows that the Msg address (“Msg Ad: #”) matches the ProMini Air receiver’s address (“My Add: #”).
In OPS mode, change CV246 to “1”, which will turn “on” the ProMini Air receiver’s DCC filtering.
The display now shows that DCC filtering is “on.”
Exiting OPS mode and changing the throttle to the locomotive’s address, now shows an updated “Msg Ad: #” with DCC filtering “on.”
Here is the transceiver’s and DCC amplifier’s DCC output since we are transmitting valid RF DCC.
If we turn off the wireless transmitter/throttle sending RF DCC, now the transceiver outputs random pulses (yellow). Since filtering is “on,” the ProMini Air receiver firmware detects “bad” waveforms that do not appear to represent a valid DCC packet. The ProMini Air receiver then outputs a constant-level signal that causes the DCC amplifier to output a high level on DCC A (blue), and zero on DCC B (not shown). This behavior is similar the that of the Airwire receivers. However, the detection mechanism for Airwire receivers is simply the lack of a sufficient frequency of DCC “IDLE” packets, not an analysis of the transceiver’s pulse train.
Repeating the process of changing the wireless throttle’s DCC address to 9001, going into “OPS” mode, changing CV246 to “0”, exiting “OPS” mode, and changing back to the locomotive’s DCC address will now set DCC filtering to “off.”
So, now when we turn off the wireless DCC throttle/transmitter, the DCC amplifier’s output (blue) will reproduce the random pulses output by the RF transceiver (yellow).
We now turn our attention to testing when the ProMini Air is used as a transmitter.
The display will alternate between showing the ProMini Air transmitter’s DCC address (“My Ad: #”) and the transmitted DCC packet’s DCC address (“Msg Ad: #”). The transmitting Channel (“Ch: #”) and Power Level (“PL: #”) display on the second line.
Below is an oscilloscope trace of the input DCC from the throttle (blue) and the DCC transmitted by the RF transceiver on the ProMini Air transmitter. Since the wireless DCC must keep Airwire RF receiver’s “happy” with numerous DCC “IDLE” packets, the ProMini Air transmitter evaluates the incoming DCC from the throttle. When the throttle outputs frequent, redundant DCC packets, the ProMIni Air transmitter occasionally inserts DCC “IDLE” packets instead of one of the redundant packets. So, the input DCC and the transmitted DCC will not precisely match. Since DCC throttles send many redundant DCC packets, the locomotive will receive sufficient DCC packets to operate correctly.
The ProMini Air transmitter can be reconfigured by setting the throttle’s DCC address to 9000 (which can be changed) and then going into the “OPS” mode to set configuration variables (CV) to new values.
Once we have changed the throttle’s DCC address to 9000, note that the message address (“Msg Ad: #”) now matches the ProMini Air’s address (“My Ad: #”).
For example, while in OPS mode, changing CV246 to “6”, will reset the ProMini Air transmitter’s Power Level to 6, as indicated by the display shown below.
After exiting the “OPS” mode, we see that the display reflects the new Power Level (“PL: #”).
Changing the throttle’s DCC address back to the locomotive’s address will sometimes show “Msg Ad: 255(S)”, which means that the ProMini Air transmitter sent out a DCC “IDLE” packet to make Airwire receiver’s “happy.”
A display refresh (every 4 seconds) will most likely display the locomotive’s DCC address, which is 1654. The “(L)” means “long” address.
Conclusion and Further Information
The ProMini Air is an inexpensive and hopefully fun introduction to wireless DCC control of your model railroad locomotive!
Please see this Blueridge Engineering site for further information on the purchase and assembly of ProMini Air kits. The prices will range from $40 to $50 that includes a DCC amplifier for the receiver and a DCC converter for the transmitter.