Release of CEC firmware v1.1 (non-Beta)

Ian KD8CEC has released version 1.1 of his CEC firmware.  This the first major release since Beta version 1.097.    He has also released new versions of uBITx Manager (for Windows) and Nextion screen firmware.

Version 1.1 includes all additions or improvements from the last non-Beta release version 1.08.   This includes features and bug fixes addressed in Beta versions 1.09, 1.093, 1.095,  and 1.097.   No further changes have been made to the Version 1.097 Beta version.

You do not need to upgrade if you are using Version 1.097. This is the version with only the version number changed.

Major Changes since the last official release

  •  The firmware supports additional features for the Nextion  and TJC LCDs
  •  Read & Backup uBITX, ADC Monitoring, ATT, IF-Shift and more on Nextion LCD (TJC LCD)
  •  Factory Reset (Both Character LCD and Nextion LCD are applicable)
  • Signal Meter using ADC (A7 Port)
  • I2C Signal Meter
  • Spectrum display
  • Band Scan
  • Memory Control on Nextion LCD (TJC LCD)
  • Speed Change CW-Option on Nextion LCD
  • Fixed Band Change Bug (Both Character LCD and Nextion LCD are applicable)
  •  uBITX Manager removed the Encode and Decode buttons. The procedure has become a bit easier.
  • I2C Device Scan on uBITX Manager ( Both Character LCD and Nextion LCD are applicable)
  • Si5351 I2C Address can be changed
  • Recovery using QR-Code Data from Server
  • Nextion LCD and TJC LCD can display Spectrum and CW Decode (using Stand alone S-Meter)
  • Fixes for other Minor Bugs

Please refer to the link below for details.
http://www.hamskey.com/2018/09/ubitx-firmware-cec-version-11-release.html

Please download the related files from the link below.
https://github.com/phdlee/ubitx/releases/tag/1.1

Nextion LCD or TJC LCD’s GUI have not changes since the 1.097 (Beta) distribution. If you are using a different GUI that is customized by other helpful developers, you should not need to upgrade the firmware.  Some screen sizes are still not supported in ver 1.097 (and therefore in version 1.1).

For further details see Ian’s blog at www.hamskey.com

Why has KD8CEC’s firmware been so successful?

There are several alternative firmware versions available for use with the µBITx transceiver.   So why has the KD8CEC firmware been so successful with uBITx owners?

Some key reasons put forward by uBITx.net:

  1. KD8CEC firmware is fully compatible with the standard issue kit.  No hardware changes are required to make it work.  This is a critical point of difference with all of the other variants, and probably the most important factor associated with the success of CEC firmware.
  2. No custom wiring changes are required when using the firmware.  This is a further significant factor in widespread adoption.
  3. The firmware fixes problems that come with the factory firmware – although some argue that CW modes are still not fully addressed in the CEC firmware.
  4. Using CEC firmware means no loss of features from the default factory firmware.   Other alternatives offer fewer or different features from the factory firmware.
  5. Users are familiar with the  user interface, as it reflects the default firmware’s “look and feel” with the standard display supplied with the kit.
  6. It is easy to upload a hex file to the Raduino. Constructors without a working knowledge of the Arduino IDE can upload files easily.
  7. All full releases of CEC Firmware are available as open source firmware.  This follows the same structure as the original code, although most of the code has been replaced.  Open source is not released for beta versions (and for good reason).
  8. No additional processor is required, unlike other firmware variants.  A mechanism for adding additional processors has been added in ver 1.097 (Beta).   This promises a future where multiple processor support will be available.  You won’t be locked into a single processor type.
  9. Addition of a Nextion display or additional processor is relatively straightforward.
  10. The firmware on the Nextion display can be edited by others to provide a different “look and feel” or to add or subtract features.   This is independent of the firmware for the transceiver.

Using uBITx Memory Manager with the HF Signals v4.3 Firmware

Remi F1MQJ has modified the manufacturer’s v4.3 original firmware (published on may 23 2018) to include communication with KD8CEC memory manager.  

This could be very useful for those wanting to stick with the HF Signals latest firmware, while making it easier to view or update initialisation settings, such as calibration of frequency or setting the BFO injection point, in the original firmware.

Modifications are the same as those described by Ian KD8CEC  here but are adapted to the HF Signals V4.3 original firmware.

The file removes all text after .ino in your firmware directory replacing the original ubitx_cat.ino file.   

You can access this file at the following URL:
https://groups.io/g/BITX20/files/ubitx_cat.ino_modified_KD8CEC_F1MQJ.txt

KD8CEC v1.097 Beta will be released shortly

Ian KD8CEC has been busy again in conjuring up new features in his CEC firmware.   He is tempting us with descriptions of two new features:

  • Nextion display update that makes it easy to adjust keying speed and to select the keyer type (Iambic A, Iambic B or Straight Key) even while in TX
  • Adding an additional arduino, connected to the Raduino via i2c, to provide an S-meter function.

The first feature is well explained by the photo above. The second feature is a bit more difficult to describe.   By adding a US$3 additional arduino the µBITx now has double the number of analogue and digital ports and another 32K of program space.   This could be a fun ride!  The first function is a basic one, but an important one.   A much more sensitive S-meter.   But wait there’s more, as yet to be fully described.  If you already have a Nextion screen, it looks like you may be in line for a half decent signal analyser function.

Connecting up the arduino

The circuit is pretty straight forward, and involves just a couple of resistors and a capacitor, along with wiring to +5v and ground, and the two i2c lines.

Freeing up a pin on the arduino

Previously Don ND6T used pins D0 and D1 as a means of accessing two additional digital pins on the Raduino for other purposes. These are used in USB and serial communications and are mostly available for use (except when programming the arduino or using CAT).

Another interesting approach is to use another arduino nano as an i2c slave while at the same time functioning as a backpack to your 1602 display.

 Allison KB1GMX has come up with another way of reclaiming pins. 

Looking at the relay tree it is notable there are only 4 used states and one that is “don’t care”.  That “don’t care” state allowed me to remove C155, R151, and Q17. That is replaced with two diodes to the collector of both Q18 and Q19 (cathode to the collectors) and anodes to the formerQ17 collector.

What that does is any time Q18 or Q19 is active KT1 is activated.  If that seems odd the relays are a partial decoding tree so if we encode the controls correctly we get the needed result and one free IO pin. To make it work Relay KT1 must be activated when we leave the 20-30mhz region for 20/17M or lower. Since to go lower than 20mhz we must have a signal the TXC is used as that controls the 40/80M relay KT3 but means nothing unless KT2 is activated Using two diodes as a logical OR we can then use Q18 and Q19 to force KT1 to be active. So for 20M and down KT1 is active and the other three select what bands below that. I got the IO pin and the firmware got simpler.

The code changes from:
/**
* Select the properly tx harmonic filters
* The four harmonic filters use only three relays
* the four LPFs cover 30-21 Mhz, 18 – 14 Mhz, 7-10 MHz and 3.5 to 5 Mhz
* Briefly, it works like this,
* – When KT1 is OFF, the ‘off’ position routes the PA output through the 30 MHz LPF
* – When KT1 is ON, it routes the PA output to KT2. Which is why you will see that
* the KT1 is on for the three other cases.
* – When the KT1 is ON and KT2 is off, the off position of KT2 routes the PA output
* to 18 MHz LPF (That also works for 14 Mhz)
* – When KT1 is On, KT2 is On, it routes the PA output to KT3
* – KT3, when switched on selects the 7-10 Mhz filter
* – KT3 when switched off selects the 3.5-5 Mhz filter
* See the circuit to understand this
*/
void setTXFilters(unsigned long freq){
if (freq >= 21000000L){
digitalWrite(TX_LPF_A, 0);
digitalWrite(TX_LPF_B, 0);
digitalWrite(TX_LPF_C, 0);
}
else if (freq >= 14000000L){
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 0);
digitalWrite(TX_LPF_C, 0);
}
else if (freq >= 7000000L){
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 0);
}
else {
digitalWrite(TX_LPF_A, 1);
digitalWrite(TX_LPF_B, 1);
digitalWrite(TX_LPF_C, 1);
}
}

To this.

/**
* this version version uses two diodes to get rid of needing TX-A
* and takes advantage of TX_LPF_C having an meaningless state
* unless KT2 is active (TX_LPF_B=1).
* tx-b tx-c band
* 0 0 10m
* 0 1 20M we enable TX-A, and get 20m, KT2 is not active.
* 1 0 40m make KT2 active and KT3 selects 40 or 80m.
* 1 1 80m
*/
void setTXFilters(unsigned long freq){

if (freq >= 20000000L){
digitalWrite(TX_LPF_B, 0); // 10m
digitalWrite(TX_LPF_C, 0);
}
else if (freq >= 14000000L){
digitalWrite(TX_LPF_B, 0); // 20M
digitalWrite(TX_LPF_C, 1);
}
else if (freq >= 7000000L){
digitalWrite(TX_LPF_B, 1); // 40m
digitalWrite(TX_LPF_C, 0);
}
else {
digitalWrite(TX_LPF_B, 1); // 80m
digitalWrite(TX_LPF_C, 1);
}
}

Reference

Some great mods from PH2LB

 

Lex PH2LB  wrote to uBITx.net to tell us about a page on his website where he describes his uBitx (V3) mods.   This is a very nice build, and he has some good ideas.   Check his page out here

http://www.ph2lb.nl/blog/index.php?page=ubitx-mods

In particular Lex has developed some custom firmware that firmware geeks may be quite interested in …

“Second mod : custom firmware”

Originally based on the v2 software but merged to v4.3 and updated to code to have a lower RAM footprint (usage of F(…) macro and strcpy_P) with about 50%.

Source files can be found here : https://github.com/ph2lb/ubitx4

Over the last few months there have been a range of ideas to boost mic drive output or to add compression.  Here’s a mod designed to work with a dynamic microphone …

“Fourth mod : dynamic microphone amplifier.”

Because I like to work with dynamic microphones, I added a dynamic microphone amplifier based on the microphone preamp designed by Javier Solans Badia, EA3GCY for his ILER transceivers.

There are a whole bunch of ways to add buttons. KD8CEC does this through paralleling up buttons with different series resistor values on the encoder analogue port).   Lex has taken a different approach that will be of interest to some constructors.   He uses a PCF8574 I2C encoder (like the backpacks for a 16×2 or 20×4 LCD display) and uses the existing I2C bus…

“Fifth mod : again adding extra buttons.”

Using a PCF8574AP I2C IO Extender and hooked it up to the all-ready existing I2C bus on the Raduino for more direct menu buttons. Needs the custom firmware to direct switch between bands with a PA bandplan limitation (also has FULL option) and Step size up and down.

 

Something that a number of constructors have done is to remove the 7805  and supply 5v to the Raduio using a separate 5v supply.  Most are using buck or buck boost modules, but Lex has used a P-MOSFET.   There’s a good description of his approach on his website …

“Sixth mod : removing 7805 from Raduino and reverse power protection.”

Relocating the 7805 is a good idea, but adding a reversed voltage polarity to a uBitx is a must. I used a P-MOSFETs for that (also link to good video about using P-MOSFETS for reverse power protection).

Finally, you may be interested in Lex’s use of the Manhattan style technique for PCB layout.  It can look very professional as per this example:

Latest firmware release v6.00R for BITeensio

W0EB and W2CTX have just completed and released a powerful new set of firmware for their BITeensio card.

Details about the BITeensio and links to the firmware can be found on the website at www.w0eb.com.

Release Announcement

“As of this morning, July 8, we have released a powerful new version of the firmware for our BITeensio card, V6.00R, that utilizes the Teensy 3.6’s capability to utilize USB “Host” mode  and connect a standard USB ASCII keyboard (many wireless ones work too).  PJRC (the people that make the Teensy  www.pjrc.com ) offer a standard USB cable thatcan plug into the Teensy. (You do have to add a 5 pin header to the Teensy 3.6 board) on the same side, and just to the right of the USB “Micro B” connector into which you will be able to plug the standard USB 2.0 cable.  The red wire (+5V) must be plugged into the pin indicated by a white square in the outline on the Teensy 3.6.In this version, we have implemented a comprehensive command list that allows many of the standard “menu” commands, including the operating frequency, to be entered using the keyboard.

“Also included is a brand new Keyboard CW keyer that uses most of the K1EL keyboard keyer’s character/key mapping.  The V6.00R firmware is released as pre-compiled “HEX” files and placed in the appropriate directory of the “Files” link on the www.w0eb.com website.   We are not denying anyone that wants it the source code, but you will have to ask for it with the understanding that if you cannot compile it or if you modify it, you are on your own as we just don’t have time to troubleshoot it for you.”

Reference

An amazingly smart idea for extra I/O ports

Tom WB6B want to expand the number of digital and analog I/O pins available to him in adding enhancements to his uBITx.

He came up with an ingenious idea, by creating a Smart LCD Backpack to replace the commonly found ones on inexpensive 2×16 and 4×20 I2C displays found on eBay and Amazon.

He has uploaded a library to GitHub that allows you to program a Arduino Nano to emulate the common I2C to parallel backpack used on an I2C display (either size). The Smart I2C Backpack, additionally, allows you to read and write the analog and digital pins on the Smart I2C Display Backpack.

The package includes a interface library that you include in your code to interface with the Extended I/O functionally. Also included are two example sketches. One is the code you program into the smart backpack. The other is a demo/test program you program into another arduino and connected via the I2C bus to the Smart Backpack Display.

The Smart Display Backpack should work with firmware using standard I2C LiquidCrystal drivers such as the KD8CEC firmware.

The code uses libraries that are installable from the Arduino library manager,.  The GitHub URLs are just for reference.

The following libraries should be part of the base Arduino software install:

  • Wire
  • LiquidCrystal

Tom hopes that others will enjoy this new display and I/O expander.

And the link to the code …
https://github.com/mountaintom/SmartLCDandIOexpander_I2C

Reference

KD8CEC firmware hint – CW frequency display

The KD8CEC firmware provides a lot of customisation features through uBITx Manager software.  Many user of Ian’s firmware are not aware of all the built-in features of his firmware.   This is one such instance!

JJ1EPE raised a concern that his display in CW mode was “off frequency”.  Well, it was from his perspective, but then the display was all the time showing the TX frequency not the offset frequency where the station he was listening to.

CW offsets create headaches in how you represent the frequency on a display.  In SSB the frequency you see on the display is the frequency of the suppressed carrier on receive and the same on transmit.   If you tune to the carrier frequency of a received station you won’t hear anything.  To get a sidetone we have to tune off the transmit frequency by a few hundred hertz.  Most people have worked out how to set the offset on the uBITx.

The standard that Ian KD8CEC has applied is to always show the TX frequency  by default (except where RIT or SPLIT mode is selected).

However, if you want to change the approach, do the following in uBITX Manager:

– Enable Adjust CW Frequency

– Shift Display Frequency on CWL, CWU Mode

If you select this function, the LCD will show the frequency at which the radio is being transmitted (the offset you prefer is added or subtracted to the actual RX frequency reflecting the CW-L or CW-U mode selected).   This may be just the thing you were looking for!

Reference