¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io

Re: NTP-Server - location of STL case files

 

¿ªÔÆÌåÓý

Hello Bill

A bit more information about the W8TEE version of the MCT.? Jack (W8TEE) has a groups.io forum called SoftwareControlledHamRadio and located at:
/g/SoftwareControlledHamRadio
To join send a message to:
[email protected]

Once you have joined you can check the file section and search for MCT:
/g/SoftwareControlledHamRadio/filessearch?p=updated%2C%2C%2C20%2C2%2C20%2C0&q=mct

As I recall,? Jack made the MCT open source and the one Hackaday page ( ) I saw when looking for "w8tee morse code tutor" said that W8BH had seen Jack's presentation that Jack did.? I also seem to recall that Jack had the project in his Microcontroller book that ARRL sold at least for a while.

Good luck.

Jim Pruitt
WA7DUY


On 2/25/2024 8:23 AM, Bill Gunshannon wrote:



On 2/25/2024 12:13 AM, Mitch W4OA via groups.io wrote:
The link on the W8BH NTP Server tutorial points to Bruce's Thingiverse page. The NTP Server is not listed as a project on the page. Anyone have a link to the STL case files?? I have ordered the pcboards from JLCPCB and would like to get a case printed before the boards arrieve.

Tnx
Mitch W4OA
Opelika, AL

Is this what you are looking for?? It worked fine for mine.



If for some reason you can not find/get it I have the files and
could send them to you.

bill








Re: Looking for a PCB

 

¿ªÔÆÌåÓý

Bill the Thingiverse description for that box says it is for the W8TEE version of the morse tutor.

Good luck.

Jim Pruitt
WA7DUY

On 3/1/2024 6:45 AM, Bill Gunshannon wrote:


I have a nice enclosed version of the w8BH MCT.? I also have
2 boards for equivalent MCTs made by other people. But, I also
have an enclosure which doesn't take any of these boards.

Does anyone know what PCB is needed for this enclosure?



It probably seems silly, but I am hoping to have at least one
of each of these MCTs if possible.

bill







Re: laser cut case for esp32 tutor version

 

Great Case!

The more the merrier - here is another:??

Bruce

On Fri, Mar 1, 2024 at 5:43?PM Wil <clouserw@...> wrote:
I couldn't find a case that fit the esp32 version of the W8BH morse
tutor so I made one with a laser cutter.

Some more info here:


The SVG file to make your own:


Cheers






laser cut case for esp32 tutor version

 

I couldn't find a case that fit the esp32 version of the W8BH morse
tutor so I made one with a laser cutter.

Some more info here:


The SVG file to make your own:


Cheers


Looking for a PCB

 

I have a nice enclosed version of the w8BH MCT. I also have
2 boards for equivalent MCTs made by other people. But, I also
have an enclosure which doesn't take any of these boards.

Does anyone know what PCB is needed for this enclosure?



It probably seems silly, but I am hoping to have at least one
of each of these MCTs if possible.

bill


Re: NTP-Server - location of STL case files

 

On 2/25/2024 12:13 AM, Mitch W4OA via groups.io wrote:
The link on the W8BH NTP Server tutorial points to Bruce's Thingiverse page. The NTP Server is not listed as a project on the page. Anyone have a link to the STL case files?? I have ordered the pcboards from JLCPCB and would like to get a case printed before the boards arrieve.
Tnx
Mitch W4OA
Opelika, AL
Is this what you are looking for? It worked fine for mine.



If for some reason you can not find/get it I have the files and
could send them to you.

bill


Re: NTP-Server - location of STL case files

 

¿ªÔÆÌåÓý

Mitch,

Send me an email at my qrz page

Dean KL7OR
On 2/24/2024 9:13 PM, Mitch W4OA via groups.io wrote:
The link on the W8BH NTP Server tutorial points to Bruce's Thingiverse page. The NTP Server is not listed as a project on the page. Anyone have a link to the STL case files?? I have ordered the pcboards from JLCPCB and would like to get a case printed before the boards arrieve.

Tnx
Mitch W4OA
Opelika, AL

Virus-free.


NTP-Server - location of STL case files

 

The link on the W8BH NTP Server tutorial points to Bruce's Thingiverse page. The NTP Server is not listed as a project on the page. Anyone have a link to the STL case files?? I have ordered the pcboards from JLCPCB and would like to get a case printed before the boards arrieve.

Tnx
Mitch W4OA
Opelika, AL


Re: Show my own coding speed on Morse Code Tutor

 

Hi Erik,

Thank you for your message. It looks very interesting and I will try it.

73,
Vincenzo - DL2VC / IZ0RUS


Re: Show my own coding speed on Morse Code Tutor

 

Hi Vincero,

Nice work!? Someone told me they liked the Morserino's wpm display, so I tried their code, it seems to work reasonably well too, even for shorter words.

It calculates a moving average dit length and dah length instraightKeyInput()

in the dah-path
? ? ? ? ? avgDahTime = (3* avgDitTime + avgDahTime + timeDown) / 3;
in the dit-path
? ? ? ? ? avgDitTime = (4 * avgDitTime + timeDown) / 5;? ? ?

And then in the CheckSpeedLive it calculates wpm
? wpm = (wpm + (int) (7200 / (avgDahTime + 3*avgDitTime))) / 2;? ? ?//// recalculate speed in wpm

Sorry for the delayed response, but perhaps you'd find this an interesting alternative.

73,

Erik - n2epe


Re: SD Reader Difficulty (MorseTutor, ESP32 version)

 

Thanks George. ?I believe I have files named correctly. ?Beginning to wonder if the card reader is malfunctioning.


Re: SD Reader Difficulty (MorseTutor, ESP32 version)

 

I just checked my SD card. It works fine. So, the question I have first is the file name.

I Insert the card first, then turn on the Tutor.

Make sure the file names are old school 8.3 filenames. I use a something like testtext.txt; in fact, all the files I have are *.txt.

Ask Dann, he is a great fount of information.

73 dit dit


SD Reader Difficulty (MorseTutor, ESP32 version)

 

Brand new to the group and have a question after searching previous posts.
I have successfully (I think) assembled Bruce's MorseTutor?(ESP32 version) after receiving the parts kit from Vince and Dan.
Everything works great except the SD card option.? I have loaded files onto a couple of different SD cards, and they appear in the file section list (first character dropped in each, however).? I am able to move down the file list as I rotate the encoder.? Upon depressing the rotary encoder to select a file, the program just opts back to the Receive Menu.? Have examined the script and double checked that the libraries are installed in the Arduino IDE.? Everything compiles and uploads without errors. Have checked all pins and solder joints.? Anyone run into this problem? Any suggestion appreciated. Thanks.


Re: Show my own coding speed on Morse Code Tutor

 

Hi Bruce,

I have got a new version that seems to work quite well. Please see below.

The one line change in?char?straightKeyInput()?should be done also in?char paddleInput()
I am not showing it here to avoid unnecessary message lenght.

73, Vincenzo - DL2VC - IZ0RUS

void?displayWPM(uint8_t?wpm?=?255)
{
? ? const?int?x=290,y=200;
? ? tft.fillRect(x,y,24,20,BLACK);
? ? tft.setCursor(x,y);
? ? tft.print(wpm ==?255?? codeSpeed : wpm);
}


uint8_t calculateElements(uint8_t c) {
uint8_t weight = 3; // 3 elements at the end of the character is ok the other 4 elements to make 7 are managed in checkSpeedLive() for the space character ' '

while (c > 1) { // stop when value is 1 (or less)
weight += (c & 1) ? 1 + 1 : 3 + 1; // 1 is dit, 0 is dah + 1 extra element spacing
c >>= 1; // rotate bits right
}
return weight;
}

void checkSpeedLive(uint8_t c, int result) {
static long start = millis();
static uint8_t elements = 0;
const uint8_t PARIS = 50; // "PARIS " is composed of 50 elements, see comment in calculateElements()

elements += (result < 0) ? 4 : calculateElements(c); // Result < 0, is an error. 4 is 7 - 3. 7 is the space between words, 3 is already assigned at the end of each character by calculateelements()
if (elements >= PARIS) {
long stop = millis();
long elapsed = stop - start; // see how long it took
start = stop;
int wpm = 60000 / elapsed; // convert elapsed time to WPM
elements = 0;
if (wpm >= MinSpeed && wpm <= MaxSpeed) {
displayWPM(wpm);
}
}
}



char?straightKeyInput()?// decode straight key input
{
? ? int?bit=0, code=0;
? ? bool?keying =?false;
? ? unsigned?long?start,end,timeUp,timeDown,timer;

? ? timer =?millis();?// start character timer

? ? while
?(!button_pressed)
? ? {
? ? ? ? if?(ditPressed())?timer =?millis();?// dont count keydown time
? ? ? ? if?(ditPressed()?&&?(!keying))?// new key_down event
? ? ? ? {
? ? ? ? ? ? start =?millis();?// mark time of key down
? ? ? ? ? ? timeUp = start-end;
? ? ? ? ? ? if?(timeUp >?10)?// was key up for 10mS?
? ? ? ? ? ? {
? ? ? ? ? ? ? ? keying =?true;?// mark key as down
? ? ? ? ? ? ? ? keyDown();?// turn on sound & led
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? else?if?(!ditPressed()?&& keying)?// new key_up event
? ? ? ? {
? ? ? ? ? ? end =?millis();?// get time of release
? ? ? ? ? ? timeDown = end-start;?// how long was key down?
? ? ? ? ? ? if?(timeDown >?10)?// was key down for 10mS?
? ? ? ? ? ? {
? ? ? ? ? ? ? ? keying =?false;?// not just noise: mark key as up
? ? ? ? ? ? ? ? keyUp();?// turn off sound & led
? ? ? ? ? ? ? ? if?(timeDown >?2*ditPeriod)?// if longer than 2 dits, call it dah
? ? ? ? ? ? ? ? ? ? bit++;?// dah: add '0' element to code
? ? ? ? ? ? ? ? else?code +=?(1<<bit++);?// dit: add '1' element to code
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? int?wait =?millis()?- timer;?// time since last element was sent
? ? ? ? if?(bit &&?(wait > ditPeriod*2))?// waited for more than 2 dits
? ? ? ? {?// so that must be end of character:
? ? ? ? ? ? code +=?(1<<bit);?// add stop bit
? ? ? ? ? ? int?result =?decode(code);?// look up code in morse array
? ? ? ? ? ? checkSpeedLive(code, result);?// Calculate live RPM
? ? ? ? ? ? if?(result<0)?return?' ';?// oops, didn't find it
? ? ? ? ? ? else?return?'!'+result;?// found it! return result
? ? ? ? }
? ? ? ? if?(wait > ditPeriod*5)?return?' ';?// long pause = word space
? ? }
? ? return?' ';?// return on button press
}


Re: Show my own coding speed on Morse Code Tutor

 
Edited

Hi Bruce,

I think I have found a good preliminary solution. Please could you have a look?

I did not make a diff but just copying here the 2 functions I changed and the new one that I wrote.

A further optimization is probably to remove the management of the character sent from?void?checkSpeedLive(char?c) because it is not necessary.

73,
Vincenzo - DL2VC - IZ0RUS


void displayWPM(uint8_t wpm = 0)
{
const int x=290,y=200;
tft.fillRect(x,y,24,20,BLACK);
tft.setCursor(x,y);
tft.print(wpm == 0 ? codeSpeed : wpm);
}


void checkSpeedLive(char c)
{
static long start = millis();
static uint8_t i = 0;
static char buffer[5];

i = i % 5;
buffer[i] = c;

if (i++ == 0) {
long elapsed = millis() - start; // see how long it took
start = millis();
int wpm = 60000.0 / elapsed; // convert time to WPM

Serial.printf("c --> %d\n", wpm);

if (wpm <= MAXSPEED && wpm >= MINSPEED) {
displayWPM(wpm);
}
}
}


char straightKeyInput() // decode straight key input
{
int bit=0, code=0;
bool keying = false;
unsigned long start,end,timeUp,timeDown,timer;
timer = millis(); // start character timer
while (!button_pressed)
{
if (ditPressed()) timer = millis(); // dont count keydown time
if (ditPressed() && (!keying)) // new key_down event
{
start = millis(); // mark time of key down
timeUp = start-end;
if (timeUp > 10) // was key up for 10mS?
{
keying = true; // mark key as down
keyDown(); // turn on sound & led
}
}
else if (!ditPressed() && keying) // new key_up event
{
end = millis(); // get time of release
timeDown = end-start; // how long was key down?
if (timeDown > 10) // was key down for 10mS?
{
keying = false; // not just noise: mark key as up
keyUp(); // turn off sound & led
if (timeDown > 2*ditPeriod) // if longer than 2 dits, call it dah
bit++; // dah: add '0' element to code
else code += (1<<bit++); // dit: add '1' element to code
}
}
int wait = millis() - timer; // time since last element was sent
if (bit && (wait > ditPeriod*2)) // waited for more than 2 dits
{ // so that must be end of character:
code += (1<<bit); // add stop bit
int result = decode(code); // look up code in morse array
if (result<0) return ' '; // oops, didn't find it
else {
checkSpeedLive('!'+result);
return '!'+result; // found it! return result
}
}
if (wait > ditPeriod*5) return ' '; // long pause = word space
}
return ' '; // return on button press
}


Re: Show my own coding speed on Morse Code Tutor

 

Hi Bruce,

Thank you!

I will start investigating from there. I will keep the you updated on my findings and tests.

Thanks
Vincenzo
DL2VC - IZ0RUS


Re: Show my own coding speed on Morse Code Tutor

 

Hi Vincenzo.

Writing code to determine the speed of your fist is... not easy.? ??

If you want to experiment, I suggest looking at the routine called 'checkSpeed'.? ?This routine sends the standard word 'PARIS', then computes the WPM speed based on the number of elements and the elapsed time.? ?Try writing something similar that counts the elements being sent and the time spent sending them.?

Let us know how it goes!

Bruce

On Thu, Sep 21, 2023 at 11:52?AM Vincenzo Capuano <vcapuano@...> wrote:
Hi Bruce,

I am using the ESP32 Morse Code Tutor and enjoying it.

I would like to show on the screen the speed at which I am actually keying with both paddle and straight key.

I think I should add some code in?straightKeyInput() and in?paddleInput(). Could you please give me some hints so I can more easily add it to the code?

Thanks
73 Vincenzo - DL2VC - IZ0RUS


Show my own coding speed on Morse Code Tutor

 

Hi Bruce,

I am using the ESP32 Morse Code Tutor and enjoying it.

I would like to show on the screen the speed at which I am actually keying with both paddle and straight key.

I think I should add some code in?straightKeyInput() and in?paddleInput(). Could you please give me some hints so I can more easily add it to the code?

Thanks
73 Vincenzo - DL2VC - IZ0RUS


Morse Tutor ESP version

 

I had some boards made and assembled without issues.

I am having a hard time understanding on how to program the ESP32 module with Arduino ( I am a real rookie). Seems like I am missing some libraries.


Re: ntp_server.ino Sketch

 

Great job, Ross.? ?I am glad to hear it is working.

Yes, Pin 3 is the time pulse signal (1PPS).? See page 12 of?

I will upload the final sketch soon and post it here.

Bruce

On Wed, Jul 19, 2023 at 4:05?PM Ross Kay <rossakay@...> wrote:
Hi Bruce

I have gone through the whole tutorial (even the interrupt tutorial) and everything is working as advertised.? The only problem I encountered was with my gps module - a GY-GPS6MV2 - which doesn't have a pps output pin.? I soldered a connection to the led resistor which is connected to pin 3 of the NEO-6M-0-001 chip which I assume is the pps signal output.? Perhaps you can confirm this.? Anyways, all is very satisfactory and I am amazed at how far away I can receive a wifi signal from the 8266 module with no external antenna attached!? ??

Thank you for the fun project and learning experience? -? Ross