¿ªÔÆÌåÓý

Date

Re: Socketing a Nano to the other side of the Raduino

 

Might be able to dampen those birdies by fiddling with si5351 output drive levels,
which determines how hard the diode mixers are driven.

It's also possible these birdies are due in part to crosstalk between the three clocks
coming out of the si5351.? ?(Which would be affected by the drive level selected.)
If so, could be addressed by a better Raduino using something other than a single si5351.??


On Tue, May 22, 2018 at 09:34 am, Jerry Gaffke wrote:
But lots of other birdies, strong and pure, clearly heard with an antenna?connected,
and clearly harmonics of something?since they?zip by much faster than?I am tuning.
These don't move when I put my finger on the Nano's resonators, I haven't tried to?
identify exactly where they are coming from.


Re: Socketing a Nano to the other side of the Raduino

 

I butchered mine, have the Nano socketed into the back of the Raduino as suggested,
hanging over the radio.? Works fine, and no mechanical conflicts.? Not much RFI either.

Difficult to cut the old Nano free using diagonal cutters, I wound up shredding the Nano
into tiny little pieces.? Maybe better to use a Dremel tool using a mini angle grinder:
? ?
Then remove what's left on the black plastic from that header? and pluck the pins out from that
black plastic side of the board while heating them one at a time with a soldering iron.
Don't pull the cut side of the pin through the board, the ragged ends of the pins where they
were cut will rip up the pads.

Clean the board well with alcohol when done, a little bit of metalic grit in the wrong place
will cause big trouble.

LED's on the Nano are no longer visible, but I seldom look for them.? Only need them when
programming, and even then not much.? And since the Nano is socketed, you can pop
the Nano out of there when programming and get full access if you wish.
This also gives access to the reset switch, though the reset comes out to that unused
6 pin programming header on one end of?the Nano, could add a second reset switch there.

Here's a schematic of the Chinese Nano Clones:
? ??

With the USB cable from the host not plugged into the Nano, I see no 12mhz?
on the CH340's resonator.? When a USB cable is plugged in, I see 5v pk-pk there, would?
expect that to be causing all sorts of havoc.

But curiously enough, only a very faint raspy little bird, in my case around 12.05mhz.
That can vary by 100khz from the nominal 12mhz, as the ceramic resonators are not
very accurate.? Not much evidence of the dreaded 16mhz oscillator either, just a
very faint bird when tuning around without an antenna.? Signals from those 12
and 16mhz resonators can be identified by bringing your finger near the resonator,
the frequency will change by several khz.? Since the 16mhz resonator is now hidden,
I brought a wire out from the ATMega328P pin 8 (TOSC2, drives the resonator) where
I could touch it.? Under one volt pk-pk there, the Nano is apparently programmed to use
the low power oscillator.?

But lots of other birdies, strong and pure, clearly heard with an antenna?connected,
and clearly harmonics of something?since they?zip by much faster than?I am tuning.
These don't move when I put my finger on the Nano's resonators, I haven't tried to?
identify exactly where they are coming from.
The (minor) downside of an?unshielded radio that doesn't bother with the extra $100 of sheet metal.?
And of course, I can hear the?BFO quite well too.?

Would be very interesting to get one of those Nano's that was?
creating all the obnoxious audio tones, see exactly what's going on.? A possible fix might
be to program the Nano to use the internal RC oscillator instead of the 12mhz?
resonator.? Factory default for the Atmel chip is around 8mhz using the RC oscillator,
this can be trimmed to most anything you want via flash bits.

Here's the Atmel datasheet:
??




##########
Programming the Nano through a CP2102 instead of the onboard CH340:

The 12mhz CH340 resonator may not be an issue, it's disabled when no cable to the host is plugged
into the Nano's mini-USB port, and even when plugged in I didn't hear much of it when tuning the radio
around 12mhz.? However, I was able to verify that a CP2102 adapter such as this:
? ??
worked fine with the Nano under the Arduino IDE.? So I'll document that here in case it's of interest:

The Nano's CH340 has series 1k resistors on the?TXD and RXD UART lines to the ATMega328P's D0,D1.?
So when the CH340 is not plugged?into a USB host and is quiet, we can drive D0,D1 from the external CP2102.? ?
Hookup is as follows:?
CP2102 GND to Nano GND
CP2102 5v to Nano 5v
CP2102 RXD to Nano TXD (D0)
CP2102 TXD to Nano RXD (D1)

The 5v pin from the CP2102 is there to supply power to our Nano, about 100ma max I believe.
The 3.3v pin from the CP2102 is there to provide 3.3v if you need it, we don't.
The CP2102 chip from SiLabs runs on 3.3v, and so drives TXD to a max of 3.3v
but?that is sufficient to work with the RXD input of our 5v Nano.
The CP2102 chip has 5v tolerant inputs, so the 5v TXD from the Nano is perfectly fine.

Verify that your operating system sees the CP2102, and select the correct port within the Arduino IDE.
(Doing that was trivial under Ubuntu, but you and google are on your own here.)
Hold the Nano reset button down, click Upload in the Nano IDE, wait till the compile is complete, release the button.
Should just load exactly as it did with the CH340.

You can avoid messing with the Nano's reset button if you hook the CP2012 DTR line to one of
the RST pins on the Nano through a series capacitor.? The cap is typically 0.1uF, but I found that not to be
sufficient, probably because the 0.1uF cap to the CH340 on the Nano was sucking away much of the DTR's
attempt at reset.? Bumping that series cap in the DTR from the CP2102 up to a 3.3uF cap worked for me.

You could also use one of the very popular FTDI cables in a similar manner.
Try to get a real one, avoid the clones, as FTDI is now engaging in defensive driver writing, disabling any clones it sees.
They got tired of most calls to their product support team turning out to be a problem with a clone.
I'm speaking here of devices that pretend to be an FTDI chip, the CH340 is not an FTDI clone.
#########

Jerry, KE7ER


?


Re: Coding for JackAl

Jack Purdum
 

We have several graphs of the filters and the equalizer. For example:

Inline image
Inline image

Specifically what are you looking for?

Jack, W8TEE

On Tuesday, May 22, 2018, 11:44:24 AM EDT, bobh_us <rwhinric@...> wrote:


On Tue, May 22, 2018 at 07:34 am, Jack Purdum wrote:
JackAl uses the audio board and its library, so, yes, very much so.
Outstanding.?
Will comply.
At what sample rate is the processing done?
Do you have a jpg of the audio graph in the deliverable?
...so I can get a head start :-)


Re: Coding for JackAl

Jack Purdum
 

Hi Daniel:

No, I haven't. One reason is because I have tried to keep all function prototypes, globals, and symbolic constants in one place. When you eventually see that header file, you will also find that I've tried to keep all of those files and variables in alphabetical order within the header file. If users write functions that belong in setup() rather than loop() (or elsewhere), I would call such a function MyExtensionsInitializations() rather than use the word setup in its name. This makes it easy to locate the setup() function using the search function in the IDE editor. It would also make it easier to find your initialization routine. Also, programs that can search multiple files for a certain string (e.g., grep, wingrep, powergrep) work better, too.

Obviously, this is a style issue and there are a bazillion permutations possible. Pick one you like and use it consistently.

Jack, W8TEE

On Tuesday, May 22, 2018, 11:52:16 AM EDT, D. Daniel McGlothin KB3MUN <kb3mun@...> wrote:


Jack,

Please note: Because I feel very strongly about the safety that type checking brings to the table, there are are currently 12 source code files: one *.ino file, one *.h file, and ten *.cpp files. One of those files carries a fairly stern warning in a comment at the top about making changes to it, as messing that file up may well ripple through the rest of the code, especially the filters that we've added.

Have you considered directly provisioning for this by making an "empty" extensions header/code file, perhaps named MyExtensions.h & MyExtensions.cpp, and including these files in the framework.? I'd go so far as to include a MyExtensionsSetup() function called from setup(), and a MyExtensions() function called from the loop().

Anyway, that is how I'd start with an adaptation of your (or anyone else's) codebase.

Daniel


Re: Coding for JackAl

 

¿ªÔÆÌåÓý

Jack,

Please note: Because I feel very strongly about the safety that type checking brings to the table, there are are currently 12 source code files: one *.ino file, one *.h file, and ten *.cpp files. One of those files carries a fairly stern warning in a comment at the top about making changes to it, as messing that file up may well ripple through the rest of the code, especially the filters that we've added.

Have you considered directly provisioning for this by making an "empty" extensions header/code file, perhaps named MyExtensions.h & MyExtensions.cpp, and including these files in the framework.? I'd go so far as to include a MyExtensionsSetup() function called from setup(), and a MyExtensions() function called from the loop().

Anyway, that is how I'd start with an adaptation of your (or anyone else's) codebase.

Daniel


Re: Coding for JackAl

 

On Tue, May 22, 2018 at 07:34 am, Jack Purdum wrote:
JackAl uses the audio board and its library, so, yes, very much so.
Outstanding.?
Will comply.
At what sample rate is the processing done?
Do you have a jpg of the audio graph in the deliverable?
...so I can get a head start :-)


Re: Knob adapter sleeve (6mm ID, 1/4 inch OD)

 

0.25" polyethylene pressure tubing is ~4mm ID.? Cut a short piece to make an insert for your 0.25" knob and drill a hole for the set screw.?
-Paul? K9MV


Re: Knob adapter sleeve (6mm ID, 1/4 inch OD)

 

I hit this problem last night. The difference between 6 mm and 0.25" is only 0.014". I had a piece of 7 mil copper foil. I rolled it out flat then cut a tiny shim rectangle. I wrapped that around the 6 mm shaft and installed the knob. Works fine - no obvious wobble. If you have 3 mil foil, use 2 wraps. With the 7 mil foil, I actually used just a 180 degree half wrap place opposite the set screw.

73,

Paul K2AYZ


Re: Socketing a Nano to the other side of the Raduino

Jack Purdum
 

Some displays might be configured to work with the SPI interface, too.

Jack, W8TEE

On Tuesday, May 22, 2018, 7:22:37 AM EDT, Rod Davis <km6sn@...> wrote:


Allison and all,

with the KD8CEC firmware you can opt for a I2C display
connection; the display can be remote quite some distance
with just 2 wires (plus power and ground).

Rod KM6SN



On 05/21/2018 07:23 PM, ajparent1/KB1GMX wrote:

Why not remote it some from the mainboard and put a box around the back of it
with the wires sneaking out of? it.? The front of the box is the front panel and the
Raduino is tinned up.? Take care with the signal leads (use SHORT twisted pairs).
Used those tricks for old style counter circuits that radiated digital noise like mad.

In my case the height of the board when mounted is a problem.? Solution is change
the board connector into a right angle and then relocate the display with wires.
That lowers the profile.? ?Both boards can easily then have a cover over them
made of soldered up PCB, hobby brass, or copper screening.? Control pins will
exit though the screen box via 1000pf feedthroughs.? I try to keep noise in
the box so to speak.

Allison


JackAl coding...OOPS!

Jack Purdum
 

All:

In my long email, I have:

?? callDone = void MySlickFeature(int whichButton, int whichDisplayPage);?? // ERROR!!

and it should be something like:

?? callDone = MySlickFeature(myButton, myPage);?? // ERROR!!

That is, the call should not have the return data type or parameter data types as part of the call.

Jack, W8TEE


Re: #ubitx #ubitx-help #ubitx-help #ubitx

 

No mention of "fuse" here:??
What looks like a fuse at the top left of the schematic is labeled "ON/OFF",
so I take that to be the power switch on the volume pot.

The 26 gauge stranded wire in the wiring harness might be considered an adequate fuse by some.
Unfortunately that comes after the shunt protection diode.? As you so rightly pointed out.? ;-)

Jerry


On Tue, May 22, 2018 at 03:13 am, ajparent1/KB1GMX wrote:
For the life of me I do not understand why the diode is before the fuse.

The fuse should always be first as it needs to operate for all faults even reverse polarity.


Re: Coding for JackAl

Jack Purdum
 


Are the filters/equalizer/etc. compatible (as blocks) with that Teensy visual system audio library they have?

All:

JackAl uses the audio board and its library, so, yes, very much so.

Please note: Because I feel very strongly about the safety that type checking brings to the table, there are are currently 12 source code files: one *.ino file, one *.h file, and ten *.cpp files. One of those files carries a fairly stern warning in a comment at the top about making changes to it, as messing that file up may well ripple through the rest of the code, especially the filters that we've added.

Of course, we encourage everyone to experiment with the JackAl board and is the primary reason that we picked an expensive processor: You have a mega-munch of memory resources (currently over 800K idle), a small knot of empty I/O pins, and a 10x clock speed to experiment with. That said, I strongly urge experimenters to create a new *.cpp file for your changes/additions. There's nothing magical about using *.cpp instead of *.ino. For the most part, it can be straight C code. Because I choose to do things this way, I needed to add a header file (MyButtons.h, which I will likely rename to JackAl.h) which contains little more than symbolic constants, prototype definitions, EEPROM offsets, and extern declarations for the project. The header file is important so that type checking takes place across files. That is, if you write a new function:

??? void MySlickFeature(int whichButton, int whichDisplayPage)
??? {
??????? // all your new code...
??? }

Then the function prototype in the header file is just a copy of the function's signature:

??? void MySlickFeature(int whichButton, int whichDisplayPage);????// Add to header file
?

Doing this makes sure you call it with two integer variables and that you don't try to use it as though it has a return value:

??? callDone = void MySlickFeature(int whichButton, int whichDisplayPage);?? // ERROR!!

?as that would be an error since it's a void function. Also, suppose you have a global name slickFeatureColor defined in your new *.cpp file, but you must let other files know about it so those files can use it. The header file would then need this statement:

??? extern int slickFeatureColor;

The extern keyword tells the compiler: "You're going to see a variable used in several files named slickFeatureColor. Even though you don't know its memory address right now, you may use it as an int data type in those files." What this does is allows the compiler to create an attribute list (e.g., name and type) in the symbol table, but put two question marks in that table for where it resides in memory (its lvalue). (This is precisely what a data declaration is, but most programmers use the term declaration and declare when they should say "define". The terms "define" and "declare" are TOTALLY different things. That is, a data declaration is an attribute list, but without a defined memory space.) Then in your CPP file you have:

??? int slickFeatureColor;

When the compiler sees this statement, it uses the Memory Manager to find a memory location where slickFeatureColor will live (i.e., its lvalue). Now, when the linker pass ties everything together, it can use the symbol table to take the proper memory address and put it where the two question marks are. If you define a variable, its memory address is known, unlike a data declaration.

So, what do you gain for this extra work?

First, debugging will be easier because you now can't call a function with the improper number of function parameters, you can't call it with improper types of parameters, and you can try to use it improperly in an assignment statement (i.e., if the function returns a float but you try to assign the return value into an int). This is the real value win for not using all *.ino files. However, there is another one.

Second, the GCC compiler that hides below the IDE can do "incremental compiles". As you work, suppose you are only changing your new *.cpp file. The compiler has a "dirty flag" for each file. If you're mucking about in only one file, only that file has its dirty flag set. When you go to compile, the compiler looks to see which files have the dirty file set. Since only one file has a set dirty flag, only that file gets recompiled! The linker can then take the old object files and splice the newly-compiled code into it, saving somme time. When I start work in the morning (i.e., all? dirty flags set), it takes almost two minutes to compile the JackAl code, and my machine is no speed slouch. However, because one tends to work with only one or two source files at a time, subsequent compiles may take 15 seconds to compile/load. While a reduction of 1.75 minutes may not seem like much, run that out to a 100 compiles a week and you're talking about almost wasting 3 hours twiddling your thumbs.

This is a long explanation, but hopefully it serves two purposes: 1) to explain why JackAl has only one INO file, and 2) to encourage you to make your additions as CPP files.

Jack, W8TEE



On Tuesday, May 22, 2018, 8:28:45 AM EDT, bobh_us <rwhinric@...> wrote:


Agreed. Great work.
Mine will have that plexiglass panel. Makes the display pop. All kinds of gamer pc lighting possibilities. And the visual ¡°works¡± very Mr. Machine-like.

Are the filters/equalizer/etc. compatible (as blocks) with that Teensy visual system audio library they have??


Can¡¯t wait.


Re: UBITX_CEC firmware upload and uBITX_Manager from a Mac #ubitx #radiuno #firmware

 

Tom

I appreciate your effort.
I received a question about MAC from a number of users.?But I did not have a MAC and it was difficult to test.
Your test has helped me a lot.

Thank you

Ian KD8CEC



2018-05-21 18:02 GMT+09:00 Tom, wb6b <wb6b@...>:

Hi,

I've managed to get the CEC uBITX Memory Manager running and the uBITX_CEC firmware uploaded to my uBITX from my Mac.

uBITX Manager:

I have Microsoft Visual Studio Community (a free version) already install on my Mac, so Mono was already installed. When I first tried to run?uBITX_Manager it crashed with the warning "The Carbon driver has not been ported to 64bits, and very few parts of Windows.Forms will work properly, or at all".

After a little Googling I found the solution was to run mono in the 32 bit mode with the following command:
mono --arch=32 uBITX_Manager.exe

The uBITX Manager UI runs painfully slow on the Mac. Scrolling is next to impossible. But, with patients it is useful. The buttons will be covered over often, but just hover the mouse over them to bring them back.

The manager crashed when connecting to the USB serial chip unless the "Linux" mode check box was checked.

Also, I already had the USB serial driver installed because I'd purchased a temperature logger from this company "Elitech" and the driver was included with their software. However, the Mac "Homebrew" installer now has an updated signed driver for the CH340 chip. I found this on Github:??

uBITX CEC Firmware Upload:

I decided the best way to upload the firmware was through the Arduino sketch IDE. I downloaded the firmware source code and compiled it. The only issue I had with comping the code was I named the base directory with the version number of the code as part of the name. The source code wants to be in a directory named ubitx_20. I installed this directory under the "~/Documents/Arduino/" directory where all my other sketches are located. I have a fair number of libraries already installed, so it is possible you may need to add a library here or there if the CEC uBITX firmware needs any other libraries.

Running the Firmware:

The firmware seems to be running just fine. I used the uBITX Manager to copy the memory values from my Radiuno and save them to a file. I'm particularly interested in using the CAT interface to control my uBITX from a Raspberry Pi.

This software and the fact that it exposes all the memory settings, may have already started to point to some of the mysteries involving my radio. I have noticed my receiver is about 100hz low on sideband signals. That is no big deal. However, it looks like my transmitter frequency is about 1khz low on CW. I can't quite wrap my head around the standard factory setup calibration method and if it could result in an unwanted difference in the transmit and receive frequency calibrations (or fix it).?

I wanted to try the IF shift to get a handle of where my radio may be operating in the 12Mhz crystal filter bandpass. Interestingly, tuning the IF shift up a kHz makes the received SSB signals much clearer. So, maybe my uBITX is out of calibration.?

There truly are a lot of numbers and such to digest in the uBITX Manager, but I'll read the posts (and the synthesizer chip's app notes) on how the calculations are done and then I'll know for sure when my radio is calibrated. At least now, rather than not quite knowing what the assumptions are in the factory calibration, I can directly experiment with the values to understand them and see what works.?

Tom, wb6b




--
Best 73
KD8CEC / Ph.D ian lee
kd8cec@...
(my blog)


Re: ubitx code version 4.3 for review, testing

 

Ashhar Farhan
First of all, congratulations on recent things.
You did a hard job in a busy schedule.
I have confirmed that you have maintained the existing code and have at least a few modifications.
It will satisfy users who want to keep existing code. (usage 57%)
I accept whatever you decide.? and I will test your new firmware.

Ian KD8CEC



2018-05-22 17:24 GMT+09:00 Ashhar Farhan <farhanbox@...>:

peeps, jack, ian, allard, arv

i have created a next version of the base software after thinking hard about it. you can download it from?. I invite you all to test it. if you are not familiar with C code or Arduino programming, I suggest you wait for a few days until we get all the bugs sorted out. This is only for the Arduino regulars.

Sending bugs:
Send me the bug reports directly to my email farhanbox@.... In the subject line use the word "#ubitx40". I will try to answer all emails but I can't promise responses to all.?

Before you start reviewing the code, let me give you a heads up of what to expect. Going by the general mood, I have taken the call to substantially borrow from Ian, KD8CEC's code and back port it to the original ubitx code. I guess that the new code has about 10% more lines but it is substantially more robust and useful.? The main features that I cherry picked from Ian's code are:

1. Keyer. You have to choose which keyer to use, but the keying is much better and robust now. This code is a total copy/paste of Ian's keyer. The auto-keyer (that sends out preset phrases in cw) is left out. The Iamabic A, Iambic B and the handkey sending works very well.
2. CAT control. Given the popularity of FT8, I rewrote the cat by following Ian's code but rewrote it to follow the ubitx coding conventions. It is a miminal set.
3. Split operations: My own interest of working with satellites have prompted me to add split operation.?
4. Rationalized menus: The menu system is now more consistent.
5. Tuning mechanism. The accelerated tuning works, though it doesn't jump randomly like before nor does it work at that speed. For very long band changes, it is recommended to do that through the menu option to change the band.

Among the things left out was support for different other types of displays, wspr beacon and many other goodies. The eeprom memory map is kept consistent with the KD8CEC's plan. You can switch between both the codes easily.

I have kept usage of english words at a minimum.??

- f



--
Best 73
KD8CEC / Ph.D ian lee
kd8cec@...
(my blog)


Re: Knob adapter sleeve (6mm ID, 1/4 inch OD)

 

I had some M3 Nylon Standoffs and drilled a hole through it so It just slid over the shaft.? I put a drop of super glue in from the end and rounded the corners with a dremel a little.
--
Lee - N9LO? "I Void Warranties"

?


Re: Nextion Display

 

I am interested in this too. I have not received ?my ubitx yet but have been playing around with the Arduino and stm. I've ?not had much luck with stm ?f303k8 ?nucleo , mostly because like it has been mentioned library ?issues ?I have not tried ?the ?blue pill or the f4 boards I have.
--
73's ?kn4ud
Allen ?Merrell


Re: Knob adapter sleeve (6mm ID, 1/4 inch OD)

 

?
I ( 192319573070 )



I got these 5 knobs for $1.23 on ebay.?

Greg KD4VV


Re: JackAl Board Debut

 

Agreed. Great work.
Mine will have that plexiglass panel. Makes the display pop. All kinds of gamer pc lighting possibilities. And the visual ¡°works¡± very Mr. Machine-like.

Are the filters/equalizer/etc. compatible (as blocks) with that Teensy visual system audio library they have??


Can¡¯t wait.


Re: Raduino CAD Files

 

My present layout (on the screen now) extends the Raduino width about an inch or so to the right (inside). The Pill board is set in toward the left about 1.5", leaving room on the right for a very short USB pigtail from the Pill USB connector that solders to the Raduino board. There's a Micro USB connector on the Raduino board that connects to all the USB signals from the pigtail, but has a breakout for a Schottky diode in the 5V path. All of this should fix the dual-power problem while allowing an unmodified Pill to be used.

I'm providing a couple connectors for the I2C bus and the SPI bus, and all the unused Pill I/O's will go to yet another connector. I'm putting a capacitor coupled DC voltage divider on one of the Pill analog inputs for audio input to drive my software S-meter. Perhaps there should be optional voltage dividers on other analogs?

For now, I'm calling this the "Raduino Pill".

Comments/Suggestions?
Joe
W3JDR


Re: Socketing a Nano to the other side of the Raduino

Rod Davis
 

¿ªÔÆÌåÓý

Allison and all,

with the KD8CEC firmware you can opt for a I2C display
connection; the display can be remote quite some distance
with just 2 wires (plus power and ground).

Rod KM6SN



On 05/21/2018 07:23 PM, ajparent1/KB1GMX wrote:

Why not remote it some from the mainboard and put a box around the back of it
with the wires sneaking out of? it.? The front of the box is the front panel and the
Raduino is tinned up.? Take care with the signal leads (use SHORT twisted pairs).
Used those tricks for old style counter circuits that radiated digital noise like mad.

In my case the height of the board when mounted is a problem.? Solution is change
the board connector into a right angle and then relocate the display with wires.
That lowers the profile.? ?Both boards can easily then have a cover over them
made of soldered up PCB, hobby brass, or copper screening.? Control pins will
exit though the screen box via 1000pf feedthroughs.? I try to keep noise in
the box so to speak.

Allison