I just wanted to post a public THANK YOU to Jim, the author of this project, for his unwavering guidance and support to me as I embarked on the quest to get this project assembled and working. It is an awesome project that works remarkably well. It did take a concerted effort to methodically address the various stumbling blocks I encountered as a result of my newbie status to this. But we did get it working and it was well worth the effort, at least for me, to learn more about these devices and processes and end up with a terrific functional and useful result. Kudos again to Jim! 73 de Arnie W8DU
You really should consider selling these ready constructedand programmed !! Better than most of the commercially available units out there. I would buy one
Mike, Thanks for the "kind words". In truth, a few have been sold (mostly at Ham Fests). And like to think, any way to get folks thinking about CW as an option is good. For those who like to DIY I hope this video might get a few more units (and folks) going. As for "decoding", IMO the Blue Pill version does well. But the Maple Mini (and now the Black Pill) are capable of decoding a broader set of receiving conditions. The wiring for each is different but essentially the same. And it needs to noted that the Black Pill requires the STM32CUBEIDE to be programmed. But today, for anyone looking at this project, I'd encourage them to consider these "build" alternatives. Jim(KW4KD)
Hi Jim, I got an error that said "#include "utility/mcufriend_shield.h"" could not be found so went and found the file(mcufriend_shield.h) and included it in the sketch after removing the path to utility. It works great. Thanks a lot. I appreciate your efforts. What fun!
Sorry for the slow response. Not sure how I missed your comment. But appreciate the feedback and kind words. Glad you were able to sort out the error. The Utility folder is now included in the sketches. BTW, if you built the Maple Mini version, you might want to go back and revisit the repository/project. That version has been updated, and now supports setting & storing some user preferences; i.e., Tone freq, LED brightness, Squelch Mode... Tnx, Jim(KW4KD)
Appreciate the comment. Keep me posted how it goes. BTW the project has gone through a couple of iterations since the video was made. There's a Maple mini version and a Black Pill version. With the exception of the MPU, they all use the same hardware. To load the source code, the Maple Mini uses the Arduino IDE, while the Black Pill (F411) uses the STM32CubeIDE. All versions work well in good conditions (signal & fist). But the later versions will do better over a wider range of conditions. Tnx, Jim(KW4KD)
Bonjour, j'ai réalisé votre décodeur cw. j'ai suivi tout votre tuto. Et cela fonctionne parfaitement. J'ai juste une demande, le décodeur ne reconnait pas le " ; " , je ne suis pas programmeur et je ne sais pas comment ajouter ce caractère dans les tableaux. Pourriez vous me décrire la marche à suivre..... Je vous en remercie par avance....Jean-Louis
Congratulations.. Nice Job and thank you for the comment. Given what you have done, this is what I would suggest you do. In the BluePill_CWdecoderW_ToneDetect.ino file, look at line 346. It should read, "#define ARSIZE 43". Change 43 to 44 Next, at line 390, which now reads "85" change it to "85," and then insert a new line after it, and enter the value "106" In the table/array "DicTbl1", at now line 438 and reads, " "." " . Change it to " ".", " And last change, insert a new line that reads " ";" " recompile and load your modified sketch to the bluepill. It should now decode "-.-.-." as ";" The binary value of decimal 106 is 1101010. The first "1" is a marker, or place holder, and the following 1's and 0's represent the dash dot pattern sent as morse code for the character. Now you have the power to add/decode any characters you like. Good Luck, Jim(KW4KD)
Merci pour votre réponse rapide. Je suis en train d'étudier pour passer le certificat de radioamateur. Je vous souhaite une bonne continuation. 73s de Jean-Louis-14FRS3818@@jmhrvy1947
Rebonjour, je viens d’effectuer la modification pour ajouter le caractère " ; " , et cela fonctionne correctement...Je vous remercie vivement pour votre aide et pour votre décodeur qui fonctionne à merveille...73s de Jean-Louis 14FRS3818
That is terrific. Was fearful, that the quotation marks would make the instructions too confusing to follow. Good luck with your studies for the exam. Its a great hobby. One which you can go in many directions. My personal favorite is building the hardware you use. Just worked Japan this morning with a 50 watt home brew station. At 76, that still puts a grin on my face. But so does reading that folks like yourself are looking at getting into the hobby 73, Jim(KW4KD)@@jean-louisrico-moulins3304
Terrific! Sounds like you're the perfect "beta" tester. Please report how it goes. Especially where these instructions leave you guessing. I'll update the GitHub notes to fill in the gaps. Jim(KW4KD)
Hi Joachim, I haven't posted the hex (.elf) file, but I can. To be clear, there are three versions of the decoder: 1. The original Blue Pill 2. The Maple Mini 3. The Black Pill. Other than the MPU (and some minor wiring differences) the hardware is the same. Of the three, the Maple Mini is the most "polished" But some folks report this board is obsolete, and not readily available in their area. IMO, as a decoder, the Black Pill is the best. And today is the one I'm spending most energy to improve. Let me know which board you want to use, and I'll put its hex file on github. Tnx, Jim(KW4KD)
Tried to get it working on an Arduino Uno but the compiler complains about no matching function for call to 'SPIClass::SPIClass(int). Do you have any idea how I can fix that? 73
As written, it wont work on an UNO. The sketch barely fits on a blue pill (STm32F103C). There are a number of other issues that make it (the sketch) incompatible. Speed is may be the biggest thing. The uno is 8 bits running @ 16Mhz. The STM micros are 32 bit MPUs running closer to 100Mhz. Today, the preferred (IMO) solution, is the Black Pill, followed by the Maple-mini. The Maple-mini uses the Arduino IDE to load. While the Black Pill uses STM's CUBEMXIDE . See this Video's intro comments for a link to the maple mini source code. A short demo of the Black Pill can be seen here: th-cam.com/video/1bktMEBSf8s/w-d-xo.html There you'll find links to the Black Pill code and wiring diagrams.Thanks for your interest in the project, and the opportunity to describe how the project has changed since this video was made.
Great project, i have built a couple of decoders including OZ1JHM's which a great starter project. Have just received all my parts and will start this project tonight. Has anyone found a good Fritzing diagram or schematic for the circuit. Was going to do a mod to allow microphone input or Line In input. Of course I have to get the basic project going first. Might also make a change and use a Nextion Display. Anyone doing something similar? I am interested to see how the STM32 CPU handles the load. Thanks for a great project, your video was very well done. Among the best i have watched on an Arduino/STM32 type project. Bravo Zulu!
Charles: I have produced a pcb for this project. It incorporates connections for both the mic input as well as line input as well as a switch to select between the two. Contact me via my email address on qrz.com if you are interested in one. 73 de Arnie W8DU
@@arniep740 Sent you an email as i am interested in obtaining several of your PCB's. Chuck WO1O (you can use ARRL address as well, if you don't receive my email)
I've got a question, since I'm going to be building this for a portable QRP setup, what is the voltage needs of the finished project, and what amperage is drawn? Need to make sure I have the right voltage step down modules, and ensure I have a large enough battery to power this, my qrp rig, and my antenna tuner. Thanks in advance. 73 KE8APH
This answer is based on the display shown in the video, and the Maple Mini as the MPU. Your supply will need to deliver (battery) voltage ~3.8 minimum, @ ~95ma. The display, shown in the video, is powered by a single 3.3v connection. But be aware there are similar (looking) displays that need a 5v source to operate. My "finished" decoder is powered by a single 3.7V/2000ma lipo. In theory, it could run 20hrs. However, I've never come close to pushing it to that limit. But know it will run comfortably for 2 hrs at a time. Thanks for the question & GL, Jim(KW4KD)
Really nice video. Can you recommend what settings to use in the Arduino IDE (I am using v1.8.13) under TOOLS for the Maple Mini board? Tnx de Arnie W8DU
Good question. I think the short answer is "yes". But to be clear, I haven't tried it. When I search "ws2811" eBay returns a range of devices. As I understand it, 2811 is the chip used to do the color decoding and LED driver. If you examine the CW decoder sketch, you'll see that it initializes the LED class as "WS2812B". Finally, looking at the APA106 & WS2812 data sheets, they have a nearly identical data stream (but with slightly different timing values). So unless you're paying an "arm & a leg" for the 2811's, and assuming your 2811 has a 3.3 to 5V rating, I'd say try it. Think the worse that can happen is it (the LED) wont do anything. Last point I want make, is please build the Maple Mini version of this project. For the same cost, you'll have a better decoder, pus a number of extra features that the 64k Blue Pill doesn't have space to support. GL, Jim(KW4KD)
@@jmhrvy1947 Thanks for the reply, I will give the WS2811 a shot. I can get them at Sparkfun. With covid and shipping taking forever from overseas I try to source all my parts here in the US. Your video is top notch and I have been looking for a Blue Pill project.
How does it react to manual CW code.. i have notwd that many op is writing eiter slow or fast.. and some program wont decode. Is anyone have a video on this working on real radio signals? Very nice project indeed
Apparently the earlier comment didn't stick. So will try again. To be clear in the above video, the Blue Pill decoder is decoding real radio signals. But I get your point, "how does it handle slow, manually sent, code?" Technically it can receive code sent as slow as 5WPM (symbol rate). But I find it rare to see anyone sending that slow. Typically, at that word rate, the sender will actually be sending at a 10 to 15 WPM (symbol rate), and use extra wide spacing between the letters. IMO, this decoder does a pretty decent job with straight key operators. What I like to think is the decoder decodes like the receiving station would hear the message. For example, if the letter "C" gets decoded as "NN" , or "KE", then the sender might want to concentrate more on their timing. Here is a video showing the Maple Mini version of this project th-cam.com/video/finhZxlpOo8/w-d-xo.html. This builder (W8DU) added some nice touches to the base project. And here's a video of a decoder (similar to the Maple Mini) with an OTA QSO in the 7050 region of 40 mtrs. Notice what it decodes, and does NOT decode. In the interest of full disclosure. This setup is actually using an STM32F411 with the mic board removed and audio signal applied via wired connection. However, the decoding logic is identical to what is used in the Maple Mini. So with similar conditions the results should be comparable. th-cam.com/video/1bktMEBSf8s/w-d-xo.html Thanks for the question, Jim(KW4KD)
@@jmhrvy1947 Great answer.. i´ll dig into the links there.. im right now building a CW radio with built in decoder and encoder and im using a decoder from another op here. thanks fer answer 73 //Jim
Good Question. But No. Its CW only. Adapting it to do RTTY would be possible, if it had the program space. But the Blue Pill version does not. FT8 is a time synced encoding protocol. This setup has no geo-synced clock. So that's off the table too. Thank you for asking Jim(KW4KD)
Hi Jim I decided to build your project and unfortunately something is not working or something is wrong bluePill project from your files: BluePillTFTClock program works STM32_diagnose_TFT_support program works STM32_TouchScreen_Calibr_native program is not working STM32_CWdecoderW_ToneDetectR03 the program compiles and uploads but does not work, the screen is frozen and the led is not working... could i get a good design for STM32 main ID=0x1581 lcd best wishes Jim
Ryszard, I'm impressed you got as far as you did. For the Blue Pill version, you're correct the STM32_TouchScreen_Calibr_native was corrupt. I've updated the github repository with new calibrate & decoder files (for the blue pill). I don't own a display with an ID=0x1581, so can't confirm that 'out of the box' these new files wont have an issue with your display. But given that your display worked with the clock demo, there's every reason to believe they can be made to work with it. Please download them & check out the "readme" note found in the 'arduino' folder. Finally, if you have a connection with QRZ.com, & if needed, please Email me directly. Want to see you get your decoder up and going GL, Jim(KW4KD)
im having trouble. have 2 of everthing, as i intend to build 2 of these, but when compiling and uploading, it tells me complete, but shows nothing on the display.
Are you building the Blue Pill version, or Maple Mini? And what computer OS are you running? Not knowing either, my first suggestion would be double check the wiring. And if possible use QRZ to send me a photo of the back side of your display. There are two types out there. One (the one I'm using) has no on board 3.3V regulator. If you have one that does, then you'll need to also connect 5Volts to your display's 5V pin. Jim(KW4KD)
@@jmhrvy1947 Hi Jim. I am also building the device and utilizing a Maple mini. I’m also having the problem of the clock display not showing on the display after loading the sketch. I was unable to get the exact same display you show, although mine does have the exact pin out. I created an account on QRZ to send you a photo of the display but it appears that without a call sign, I’m not allowed to see your email address. That said, I believe my display may well have the regulator. Can you describe how to get the 5V to the display? Where exactly is the 5V taken from? Additionally, is it then necessary to remove the 3.3V connection after adding 5V to the display. I can’t tell you how much I appreciate you putting this video out. I really hope I’m able to get mine working. I’m in the process of learning CW now, and although it’s no longer required, I’m looking to take my Technician’s exam soon. Thanks for any insight you can offer me with getting my display up and running.
@@BobGarrett66 Bob, thanks for your interest in this project, & wish you success with the exam. Running a 5v display using the Maple Mini is doable. But if you want to use the maple mini's USB connector as the power source for the project, it will require a solder connection. Typically, 5V displays have a 3 terminal voltage regulator (actually 3 terminals plus a tab) located close to the display's J1 connector (the regulator may be labelled "U1"). Now here's a link to a schematic of the Maple Mini: stm32duinoforum.com/forum/download/file_id_2060.jpeg. Basically what you want to do is create a connection point to the USB's 5 volts input pin, and jumper it to the Display's 5 volt pin. Physically, the most convenient place to tap into the Maple Mini's 5 Volts, is on the underside of the Maple Mini at the diode adjacent to the 3.3 volt regulator. Do not know about your soldering skills, but with a small iron tip, and a steady, but lite touch, it's doable. Once you have the 5 volts linked from the Maple Mini to your display, you then can skip the 3.3 volt connection to the display. Hope this helps, & again GL. Jim(KW4KD/jmh060947@gmail.com)
@@jmhrvy1947 Jim, Thank you for the reply. I’ll take a look at the schematic. I bought the display from Amazon ( smile.amazon.com/dp/B075FP83V5?psc=1&ref=ppx_yo2_dt_b_product_details ) Would you be able to take a look at the photos and confirm what we’ve discussed. I looked at the photo on Amazon of the back of the display and don’t see a chip labeled U1. The “manual” that came with it does say it can be powered with 3.3V though. Thanks again.
@@BobGarrett66 Yes. Your display does have a 5 volt regulator. Its located at a slightly different position from what I described. And your right, it has no board label. But, in the link you included, the chip/regulator itself has the label "AMS1117" and is connected directly to the board's 5V pin. I have no first hand experience working with your display, but what I have seen, on other displays having a 5 V regulator, is the display's LED back-light is connected to the 5V side of the regulator. With only 3.3v applied, the back-light doesn't illuminate, rendering the display unusable; However, if your display actually lights up, with just 3.3v applied, then there's likely another issue. Jim(KW4KD)
Any Ideas why I get Core is held in reset after it uploads, I get the compile and flashing light on on stlink but then the error, and thats it, any suggestions, I'd really like to get this working
Cliff, Just guessing here, but make sure both the boot 0 & 1 jumpers (on the blue pill) are in the zero positions at all times. If the Boot jumpers aren't the issue, then I'd double check the STlink to Blue Pill connections. With more pins than needed (on the STlink) its easy to get things wrong there. If needed, see QRZ to contact me. Jim(KW4KD)
@@jmhrvy1947 Hi Jim, Not sure what the issue is I disconnected everything from the board just in case I had made an error, I did have the two data lines the wrong way from the st link to the board, so it would not upload, once swapped the st link flashes away for a minute or so, says uploaded, but in the command window at the bottom I get the core reset message, I am wondering if I may have an issue with the board, lucky they are cheap enough , just adds a delay to my build, thanks for the input and offer of assistance.
@@jmhrvy1947 hi Jim, I'll see if I can have a look this evening or tomorrow and see if I can get the blinky uploaded and working, if not I'll drop you a line, thanks
@@cliffbarrimore Yep, at this stage, the "Blinky" sketch is the sketch to be working with: FWIW, here's what the IDE output looks like (on my linux machine) when the Blinky sketch loads successfully: Sketch uses 14212 bytes (21%) of program storage space. Maximum is 65536 bytes. Global variables use 3128 bytes (15%) of dynamic memory, leaving 17352 bytes for local variables. Maximum is 20480 bytes. USB Status [unknown] 2021-01-17T15:33:54 INFO src/usb.c: -- exit_dfu_mode 2021-01-17T15:33:54 INFO src/common.c: Loading device parameters.... 2021-01-17T15:33:54 INFO src/common.c: Device connected is: F1 Medium-density device, id 0x20036410 2021-01-17T15:33:54 INFO src/common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x10000 bytes (64 KiB) in pages of 1024 bytes 2021-01-17T15:33:54 INFO src/common.c: Attempting to write 14212 (0x3784) bytes to stm32 address: 134217728 (0x8000000) Flash page at addr: 0x08003400 erased 2021-01-17T15:33:54 INFO src/common.c: Finished erasing 14 pages of 1024 (0x400) bytes 2021-01-17T15:33:54 INFO src/common.c: Starting Flash write for VL/F0/F3 core id 2021-01-17T15:33:54 INFO src/common.c: Successfully loaded flash loader in sram 11/13 pages written2021-01-17T15:33:56 INFO src/common.c: Starting verification of write complete 13/13 pages written2021-01-17T15:33:56 INFO src/common.c: Flash written and verified! jolly good! USB Status [unknown] Waiting for tty device should now be available.
Hello, sir please tell me how can I use pin 8-9-10-11-12-13-14-15 of PORTB as data pin and pin 0 1 2 3 8 of PORTA as command poins ?I tried to modifie the file mcufriend_shield.h , but you used #if 0 for uncommenting the line for setting the pins of stm32..
You're in the right area. But trying to do a complete swap of the PORTA & PORTB pins is considerably more complicated than just changing one statement. It can be done, but its beyond the scope of this project. Thanks for your comment (& interest in the project) GL, Jim(KW4KD)
@@jmhrvy1947 You said I'm in the right area , but in which row you are declaring the data PORT I don't understand because everything that comes after the #if0 statement is not used by the compiler right?
@@kebabsharif9627 That's correct. When I wrote, "you're in the right area" I meant you had the right file. Do a search for "BLUEPILL" and you'll see the lines of code that's relevant to the STM32 MPU's. Swapping GPIO's is doable. But will take a number changes to get there. GL, Jim(KW4KD)
@@jmhrvy1947 So although those lines of code for BLUEPILL come in the region commented by directive #if0 I can make changes of data port modifying them because for some reason the row after #if 0 are compiled ?
@@kebabsharif9627 Yes. Notice that the #if0 is followed by an #elif. Its these #elif conditions that actually control what the compiler uses. Good question, and am betting others probably have thought about it too Jim(KW4KD)
jmhrvy1947.....what would charge to build one for a man i had a stoke so i lost the ability to remember how to do CW or build such as this.Thank you ... would you mind texting me an answer PLEASE
Andy, Many thanks for your interest in the project. Its been through a couple iterations since the vid was posted. Today, I use a black pill (STM32F411). A faster processor, with more programming space. Build info for the F411 version is also available on Github. Several months back another viewer asked the same question. And I agreed to build one. That unit went to Canada. Shipping costs turned out to being more than twice the price of the unit. Bottom line, the experience was a big disappointment for both of us. On the flip side, the feedback from those who have built the unit themselves, has been favorable. I posted the project, thinking that it would/could be a Father/Son project. (Or some other pairing.) Often the younger members of our world know way more about Arduino like processors than we do, but never thought (or heard) of ham radio/CW. Maybe there's a young person near you, that you can team up with, and make this project a reality. If you all get into it, and need more info, please contact me (QRZ.com is a good way to go ) Tnx & GL, Jim(KW4KD)
Hi Thanks for nice video. I Want to add LCD 16x2 to this program for magC only, this is what i did but is not working. What I should do ? STM32 CW Decoder Tone DecodeR 03 on program beginning - #include LiquidCrystal lcd(PB15, PB5, PA2, PB6, PB8, PB9); in setup - lcd.begin(16, 2); and ///////////////// lcd.setCursor(0, 0); lcd.print("M="); lcd.print(magC); //////////////// inside - if(TonPltFlg) { = on LCD I have nothing or at the end of - void loop() = on LCD Ihave - M = 0.00 - no respond to signal on PB1.
Hi galina, Thank you for the question, and interest in the project. As a DIYer, I get your wanting to build with whats available. And you are welcomed to modify the code (sketch) any way to suit your needs. However, here I don't have a magC, so am unable to offer recommendations as to how this code might be altered to work with your display. But can say this. To adapt this sketch to work with a 16X2 character format, and non-touch sensitive screen will require changes to the code that go well beyond the "setup" segment of the sketch. I hope at some point you'll report that that you've succeeded. But you'll need to look to other sources, if outside help is needed. GL & again thank you, Jim(KW4KD)
@@jmhrvy1947 Your video 18:50 you have on serial plotter Red, Green and Blue line so if you have them on serial plotter I can have them on LCD just adding to serial.print lcd.print // Graph Geortzel magnitudes Serial.print(magH);//Blue Serial.print("\t"); Serial.print(magL);//Red Serial.print("\t"); Serial.print(magC);//Green Serial.print("\t"); lcd.print(magC); ?
@@galinakorczak2446 the short answer is "no". Plotting is a feature of the Arduino Ide, and is quite a complicated process (also wholly separate from what the blue is doing) In the decoder sketch, all the blue pill is doing is sending raw numbers via is serial link to the computer. The IDE's plotting tool is figuring out how to scale the data, and which number belongs to a which trace. However, in another video (see th-cam.com/video/PA9UYz__dcc/w-d-xo.html) I demonstrate a very crude plot routine using a 16X2 LCD display. But it would not be applicable to the data generated by the decoder sketch.
I just wanted to post a public THANK YOU to Jim, the author of this project, for his unwavering guidance and support to me as I embarked on the quest to get this project assembled and working. It is an awesome project that works remarkably well. It did take a concerted effort to methodically address the various stumbling blocks I encountered as a result of my newbie status to this. But we did get it working and it was well worth the effort, at least for me, to learn more about these devices and processes and end up with a terrific functional and useful result. Kudos again to Jim!
73 de Arnie W8DU
Built and working. Thanks for all the effort you put in to make the video.
You really should consider selling these ready constructedand programmed !! Better than most of the commercially available units out there.
I would buy one
Mike,
Thanks for the "kind words".
In truth, a few have been sold (mostly at Ham Fests). And like to think, any way to get folks thinking about CW as an option is good. For those who like to DIY I hope this video might get a few more units (and folks) going.
As for "decoding", IMO the Blue Pill version does well. But the Maple Mini (and now the Black Pill) are capable of decoding a broader set of receiving conditions. The wiring for each is different but essentially the same. And it needs to noted that the Black Pill requires the STM32CUBEIDE to be programmed. But today, for anyone looking at this project, I'd encourage them to consider these "build" alternatives.
Jim(KW4KD)
Hi Jim, I got an error that said "#include "utility/mcufriend_shield.h"" could not be found so went and found the file(mcufriend_shield.h) and included it in the sketch after removing the path to utility.
It works great. Thanks a lot. I appreciate your efforts. What fun!
Sorry for the slow response. Not sure how I missed your comment. But appreciate the feedback and kind words. Glad you were able to sort out the error. The Utility folder is now included in the sketches.
BTW, if you built the Maple Mini version, you might want to go back and revisit the repository/project. That version has been updated, and now supports setting & storing some user preferences; i.e., Tone freq, LED brightness, Squelch Mode...
Tnx,
Jim(KW4KD)
Well tnx!! Going to try to follow and achieve a working build!!
Appreciate the comment. Keep me posted how it goes. BTW the project has gone through a couple of iterations since the video was made. There's a Maple mini version and a Black Pill version. With the exception of the MPU, they all use the same hardware. To load the source code, the Maple Mini uses the Arduino IDE, while the Black Pill (F411) uses the STM32CubeIDE. All versions work well in good conditions (signal & fist). But the later versions will do better over a wider range of conditions.
Tnx,
Jim(KW4KD)
Bonjour, j'ai réalisé votre décodeur cw. j'ai suivi tout votre tuto. Et cela fonctionne parfaitement. J'ai juste une demande, le décodeur ne reconnait pas le " ; " , je ne suis pas programmeur et je ne sais pas comment ajouter ce caractère dans les tableaux. Pourriez vous me décrire la marche à suivre..... Je vous en remercie par avance....Jean-Louis
Congratulations.. Nice Job and thank you for the comment.
Given what you have done, this is what I would suggest you do.
In the BluePill_CWdecoderW_ToneDetect.ino file, look at line 346.
It should read, "#define ARSIZE 43". Change 43 to 44
Next, at line 390, which now reads "85" change it to "85,"
and then insert a new line after it, and enter the value "106"
In the table/array "DicTbl1", at now line 438 and reads, " "." " .
Change it to " ".", "
And last change, insert a new line that reads " ";" "
recompile and load your modified sketch to the bluepill.
It should now decode "-.-.-." as ";"
The binary value of decimal 106 is 1101010. The first "1" is a marker, or place holder, and the following 1's and 0's represent the dash dot pattern sent as morse code for the character.
Now you have the power to add/decode any characters you like.
Good Luck,
Jim(KW4KD)
Merci pour votre réponse rapide. Je suis en train d'étudier pour passer le certificat de radioamateur. Je vous souhaite une bonne continuation. 73s de Jean-Louis-14FRS3818@@jmhrvy1947
Rebonjour, je viens d’effectuer la modification pour ajouter le caractère " ; " , et cela fonctionne correctement...Je vous remercie vivement pour votre aide et pour votre décodeur qui fonctionne à merveille...73s de Jean-Louis 14FRS3818
That is terrific. Was fearful, that the quotation marks would make the instructions too confusing to follow.
Good luck with your studies for the exam. Its a great hobby. One which you can go in many directions. My personal favorite is building the hardware you use. Just worked Japan this morning with a 50 watt home brew station. At 76, that still puts a grin on my face. But so does reading that folks like yourself are looking at getting into the hobby
73,
Jim(KW4KD)@@jean-louisrico-moulins3304
Thanks for nice video, Arduino is new for me but i shall try to build one.
Terrific!
Sounds like you're the perfect "beta" tester. Please report how it goes. Especially where these instructions leave you guessing. I'll update the GitHub notes to fill in the gaps.
Jim(KW4KD)
I had to drop back to version 1.7.5 of the Adafruit GFX Library to get this application to compile.
Thanks. Appreciate the feedback. I've updated the repository. A compatible version of the GFX Library is now part of the sketch(es) that need it.
Me too. Thanks for the comment it saved me some time.
Hello Jim tnx for sharing this Project. Is there a HEX file to load it direct to the Blue Piill
Hi Joachim,
I haven't posted the hex (.elf) file, but I can.
To be clear, there are three versions of the decoder:
1. The original Blue Pill
2. The Maple Mini
3. The Black Pill.
Other than the MPU (and some minor wiring differences) the hardware is the same.
Of the three, the Maple Mini is the most "polished"
But some folks report this board is obsolete, and not readily available in their area.
IMO, as a decoder, the Black Pill is the best. And today is the one I'm spending most energy to improve.
Let me know which board you want to use, and I'll put its hex file on github.
Tnx,
Jim(KW4KD)
Tried to get it working on an Arduino Uno but the compiler complains about no matching function for call to 'SPIClass::SPIClass(int). Do you have any idea how I can fix that? 73
As written, it wont work on an UNO. The sketch barely fits on a blue pill (STm32F103C).
There are a number of other issues that make it (the sketch) incompatible. Speed is may be the biggest thing. The uno is 8 bits running @ 16Mhz. The STM micros are 32 bit MPUs running closer to 100Mhz. Today, the preferred (IMO) solution, is the Black Pill, followed by the Maple-mini. The Maple-mini uses the Arduino IDE to load. While the Black Pill uses STM's CUBEMXIDE . See this Video's intro comments for a link to the maple mini source code. A short demo of the Black Pill can be seen here:
th-cam.com/video/1bktMEBSf8s/w-d-xo.html
There you'll find links to the Black Pill code and wiring diagrams.Thanks for your interest in the project, and the opportunity to describe how the project has changed since this video was made.
Great project, i have built a couple of decoders including OZ1JHM's which a great starter project. Have just received all my parts and will start this project tonight. Has anyone found a good Fritzing diagram or schematic for the circuit. Was going to do a mod to allow microphone input or Line In input. Of course I have to get the basic project going first. Might also make a change and use a Nextion Display. Anyone doing something similar? I am interested to see how the STM32 CPU handles the load. Thanks for a great project, your video was very well done. Among the best i have watched on an Arduino/STM32 type project. Bravo Zulu!
Charles: I have produced a pcb for this project. It incorporates connections for both the mic input as well as line input as well as a switch to select between the two. Contact me via my email address on qrz.com if you are interested in one.
73 de Arnie W8DU
@@arniep740 Sent you an email as i am interested in obtaining several of your PCB's. Chuck WO1O (you can use ARRL address as well, if you don't receive my email)
I've got a question, since I'm going to be building this for a portable QRP setup, what is the voltage needs of the finished project, and what amperage is drawn? Need to make sure I have the right voltage step down modules, and ensure I have a large enough battery to power this, my qrp rig, and my antenna tuner. Thanks in advance. 73 KE8APH
This answer is based on the display shown in the video, and the Maple Mini as the MPU. Your supply will need to deliver (battery) voltage ~3.8 minimum, @ ~95ma. The display, shown in the video, is powered by a single 3.3v connection. But be aware there are similar (looking) displays that need a 5v source to operate. My "finished" decoder is powered by a single 3.7V/2000ma lipo. In theory, it could run 20hrs. However, I've never come close to pushing it to that limit. But know it will run comfortably for 2 hrs at a time.
Thanks for the question & GL,
Jim(KW4KD)
Really nice video. Can you recommend what settings to use in the Arduino IDE (I am using v1.8.13) under TOOLS for the Maple Mini board?
Tnx de Arnie W8DU
Arnie, sent an E-mail via ARRL
@@jmhrvy1947 Got it and thanks again!
I am having trouble sourcing the APA106 in the USA. Can I substitute a WS2811 led in it's place?
Good question. I think the short answer is "yes". But to be clear, I haven't tried it. When I search "ws2811" eBay returns a range of devices. As I understand it, 2811 is the chip used to do the color decoding and LED driver. If you examine the CW decoder sketch, you'll see that it initializes the LED class as "WS2812B". Finally, looking at the APA106 & WS2812 data sheets, they have a nearly identical data stream (but with slightly different timing values). So unless you're paying an "arm & a leg" for the 2811's, and assuming your 2811 has a 3.3 to 5V rating, I'd say try it. Think the worse that can happen is it (the LED) wont do anything.
Last point I want make, is please build the Maple Mini version of this project. For the same cost, you'll have a better decoder, pus a number of extra features that the 64k Blue Pill doesn't have space to support.
GL,
Jim(KW4KD)
@@jmhrvy1947 Thanks for the reply, I will give the WS2811 a shot. I can get them at Sparkfun. With covid and shipping taking forever from overseas I try to source all my parts here in the US. Your video is top notch and I have been looking for a Blue Pill project.
@@larrynaumann8169 GL, & let us know how it works out.
How does it react to manual CW code.. i have notwd that many op is writing eiter slow or fast.. and some program wont decode. Is anyone have a video on this working on real radio signals? Very nice project indeed
Apparently the earlier comment didn't stick. So will try again.
To be clear in the above video, the Blue Pill decoder is decoding real radio signals. But I get your point, "how does it handle slow, manually sent, code?" Technically it can receive code sent as slow as 5WPM (symbol rate). But I find it rare to see anyone sending that slow. Typically, at that word rate, the sender will actually be sending at a 10 to 15 WPM (symbol rate), and use extra wide spacing between the letters. IMO, this decoder does a pretty decent job with straight key operators. What I like to think is the decoder decodes like the receiving station would hear the message. For example, if the letter "C" gets decoded as "NN" , or "KE", then the sender might want to concentrate more on their timing.
Here is a video showing the Maple Mini version of this project th-cam.com/video/finhZxlpOo8/w-d-xo.html. This builder (W8DU) added some nice touches to the base project.
And here's a video of a decoder (similar to the Maple Mini) with an OTA QSO in the 7050 region of 40 mtrs. Notice what it decodes, and does NOT decode. In the interest of full disclosure. This setup is actually using an STM32F411 with the mic board removed and audio signal applied via wired connection. However, the decoding logic is identical to what is used in the Maple Mini. So with similar conditions the results should be comparable.
th-cam.com/video/1bktMEBSf8s/w-d-xo.html
Thanks for the question,
Jim(KW4KD)
@@jmhrvy1947 Great answer.. i´ll dig into the links there.. im right now building a CW radio with built in decoder and encoder and im using a decoder from another op here. thanks fer answer 73 //Jim
Many thanks.
Can this tool read RTTY and FT8 signals? De YE8RAF
Good Question. But No. Its CW only. Adapting it to do RTTY would be possible, if it had the program space. But the Blue Pill version does not. FT8 is a time synced encoding protocol. This setup has no geo-synced clock. So that's off the table too.
Thank you for asking
Jim(KW4KD)
May I purchase one of these already assembled from you ? Please ??
Hi Mike
Appreciate the interest in the project.
contact me through the E-mail link shown on QRZ.com
tnx,
Jim(KW4KD)
Hi Jim
I decided to build your project and unfortunately something is not working or something is wrong
bluePill project from your files:
BluePillTFTClock program works
STM32_diagnose_TFT_support program works
STM32_TouchScreen_Calibr_native program is not working
STM32_CWdecoderW_ToneDetectR03 the program compiles and uploads but does not work,
the screen is frozen and the led is not working...
could i get a good design for STM32 main ID=0x1581 lcd
best wishes Jim
Ryszard,
I'm impressed you got as far as you did. For the Blue Pill version, you're correct the STM32_TouchScreen_Calibr_native was corrupt. I've updated the github repository with new calibrate & decoder files (for the blue pill). I don't own a display with an ID=0x1581, so can't confirm that 'out of the box' these new files wont have an issue with your display. But given that your display worked with the clock demo, there's every reason to believe they can be made to work with it.
Please download them & check out the "readme" note found in the 'arduino' folder.
Finally, if you have a connection with QRZ.com, & if needed, please Email me directly. Want to see you get your decoder up and going
GL,
Jim(KW4KD)
@@jmhrvy1947 tnx :) Jim everything is fine now.
im having trouble. have 2 of everthing, as i intend to build 2 of these, but when compiling and uploading, it tells me complete, but shows nothing on the display.
Are you building the Blue Pill version, or Maple Mini? And what computer OS are you running? Not knowing either, my first suggestion would be double check the wiring.
And if possible use QRZ to send me a photo of the back side of your display. There are two types out there. One (the one I'm using) has no on board 3.3V regulator. If you have one that does, then you'll need to also connect 5Volts to your display's 5V pin.
Jim(KW4KD)
@@jmhrvy1947 Hi Jim. I am also building the device and utilizing a Maple mini. I’m also having the problem of the clock display not showing on the display after loading the sketch. I was unable to get the exact same display you show, although mine does have the exact pin out. I created an account on QRZ to send you a photo of the display but it appears that without a call sign, I’m not allowed to see your email address. That said, I believe my display may well have the regulator. Can you describe how to get the 5V to the display? Where exactly is the 5V taken from? Additionally, is it then necessary to remove the 3.3V connection after adding 5V to the display. I can’t tell you how much I appreciate you putting this video out. I really hope I’m able to get mine working. I’m in the process of learning CW now, and although it’s no longer required, I’m looking to take my Technician’s exam soon. Thanks for any insight you can offer me with getting my display up and running.
@@BobGarrett66 Bob,
thanks for your interest in this project, & wish you success with the exam. Running a 5v display using the Maple Mini is doable. But if you want to use the maple mini's USB connector as the power source for the project, it will require a solder connection. Typically, 5V displays have a 3 terminal voltage regulator (actually 3 terminals plus a tab) located close to the display's J1 connector (the regulator may be labelled "U1").
Now here's a link to a schematic of the Maple Mini: stm32duinoforum.com/forum/download/file_id_2060.jpeg.
Basically what you want to do is create a connection point to the USB's 5 volts input pin, and jumper it to the Display's 5 volt pin. Physically, the most convenient place to tap into the Maple Mini's 5 Volts, is on the underside of the Maple Mini at the diode adjacent to the 3.3 volt regulator. Do not know about your soldering skills, but with a small iron tip, and a steady, but lite touch, it's doable. Once you have the 5 volts linked from the Maple Mini to your display, you then can skip the 3.3 volt connection to the display.
Hope this helps, & again GL.
Jim(KW4KD/jmh060947@gmail.com)
@@jmhrvy1947 Jim, Thank you for the reply. I’ll take a look at the schematic. I bought the display from Amazon ( smile.amazon.com/dp/B075FP83V5?psc=1&ref=ppx_yo2_dt_b_product_details ) Would you be able to take a look at the photos and confirm what we’ve discussed. I looked at the photo on Amazon of the back of the display and don’t see a chip labeled U1. The “manual” that came with it does say it can be powered with 3.3V though. Thanks again.
@@BobGarrett66 Yes. Your display does have a 5 volt regulator. Its located at a slightly different position from what I described. And your right, it has no board label. But, in the link you included, the chip/regulator itself has the label "AMS1117" and is connected directly to the board's 5V pin. I have no first hand experience working with your display, but what I have seen, on other displays having a 5 V regulator, is the display's LED back-light is connected to the 5V side of the regulator. With only 3.3v applied, the back-light doesn't illuminate, rendering the display unusable; However, if your display actually lights up, with just 3.3v applied, then there's likely another issue.
Jim(KW4KD)
Any Ideas why I get Core is held in reset after it uploads, I get the compile and flashing light on on stlink but then the error, and thats it, any suggestions, I'd really like to get this working
Cliff, Just guessing here, but make sure both the boot 0 & 1 jumpers (on the blue pill) are in the zero positions at all times. If the Boot jumpers aren't the issue, then I'd double check the STlink to Blue Pill connections. With more pins than needed (on the STlink) its easy to get things wrong there. If needed, see QRZ to contact me.
Jim(KW4KD)
@@jmhrvy1947 Hi Jim, Not sure what the issue is I disconnected everything from the board just in case I had made an error, I did have the two data lines the wrong way from the st link to the board, so it would not upload, once swapped the st link flashes away for a minute or so, says uploaded, but in the command window at the bottom I get the core reset message, I am wondering if I may have an issue with the board, lucky they are cheap enough , just adds a delay to my build, thanks for the input and offer of assistance.
@@cliffbarrimore Cliff,
If you like, Email me (see QRZ) and we can compare in greater detail what's going on.
Tnx,
Jim(KW4KD)
@@jmhrvy1947 hi Jim, I'll see if I can have a look this evening or tomorrow and see if I can get the blinky uploaded and working, if not I'll drop you a line, thanks
@@cliffbarrimore Yep, at this stage, the "Blinky" sketch is the sketch to be working with: FWIW, here's what the IDE output looks like (on my linux machine) when the Blinky sketch loads successfully:
Sketch uses 14212 bytes (21%) of program storage space. Maximum is 65536 bytes.
Global variables use 3128 bytes (15%) of dynamic memory, leaving 17352 bytes for local variables. Maximum is 20480 bytes.
USB Status [unknown]
2021-01-17T15:33:54 INFO src/usb.c: -- exit_dfu_mode
2021-01-17T15:33:54 INFO src/common.c: Loading device parameters....
2021-01-17T15:33:54 INFO src/common.c: Device connected is: F1 Medium-density device, id 0x20036410
2021-01-17T15:33:54 INFO src/common.c: SRAM size: 0x5000 bytes (20 KiB), Flash: 0x10000 bytes (64 KiB) in pages of 1024 bytes
2021-01-17T15:33:54 INFO src/common.c: Attempting to write 14212 (0x3784) bytes to stm32 address: 134217728 (0x8000000)
Flash page at addr: 0x08003400 erased
2021-01-17T15:33:54 INFO src/common.c: Finished erasing 14 pages of 1024 (0x400) bytes
2021-01-17T15:33:54 INFO src/common.c: Starting Flash write for VL/F0/F3 core id
2021-01-17T15:33:54 INFO src/common.c: Successfully loaded flash loader in sram
11/13 pages written2021-01-17T15:33:56 INFO src/common.c: Starting verification of write complete
13/13 pages written2021-01-17T15:33:56 INFO src/common.c: Flash written and verified! jolly good!
USB Status [unknown]
Waiting for tty device
should now be available.
Hello, sir please tell me how can I use pin 8-9-10-11-12-13-14-15 of PORTB as data pin and pin 0 1 2 3 8 of PORTA as command poins ?I tried to modifie the file mcufriend_shield.h , but you used #if 0 for uncommenting the line for setting the pins of stm32..
You're in the right area. But trying to do a complete swap of the PORTA & PORTB pins is considerably more complicated than just changing one statement. It can be done, but its beyond the scope of this project.
Thanks for your comment (& interest in the project)
GL,
Jim(KW4KD)
@@jmhrvy1947 You said I'm in the right area , but in which row you are declaring the data PORT I don't understand because everything that comes after the #if0 statement is not used by the compiler right?
@@kebabsharif9627 That's correct. When I wrote, "you're in the right area" I meant you had the right file. Do a search for "BLUEPILL" and you'll see the lines of code that's relevant to the STM32 MPU's. Swapping GPIO's is doable. But will take a number changes to get there.
GL,
Jim(KW4KD)
@@jmhrvy1947 So although those lines of code for BLUEPILL come in the region commented by directive #if0 I can make changes of data port modifying them because for some reason the row after #if 0 are compiled ?
@@kebabsharif9627 Yes. Notice that the #if0 is followed by an #elif. Its these #elif conditions that actually control what the compiler uses.
Good question, and am betting others probably have thought about it too
Jim(KW4KD)
jmhrvy1947.....what would charge to build one for a man i had a stoke so i lost the ability to remember how to do CW or build such as this.Thank you ... would you mind texting me an answer PLEASE
Andy,
Many thanks for your interest in the project. Its been through a couple iterations since the vid was posted. Today, I use a black pill (STM32F411). A faster processor, with more programming space. Build info for the F411 version is also available on Github.
Several months back another viewer asked the same question. And I agreed to build one. That unit went to Canada. Shipping costs turned out to being more than twice the price of the unit. Bottom line, the experience was a big disappointment for both of us.
On the flip side, the feedback from those who have built the unit themselves, has been favorable.
I posted the project, thinking that it would/could be a Father/Son project. (Or some other pairing.) Often the younger members of our world know way more about Arduino like processors than we do, but never thought (or heard) of ham radio/CW. Maybe there's a young person near you, that you can team up with, and make this project a reality. If you all get into it, and need more info, please contact me (QRZ.com is a good way to go )
Tnx & GL,
Jim(KW4KD)
@@jmhrvy1947 Thank you sir. i just ordered 6.with me luck lol.ttyl
Hi
Thanks for nice video.
I Want to add LCD 16x2 to this program for magC only, this is what i did but is not working.
What I should do ?
STM32 CW Decoder Tone DecodeR 03 on program beginning -
#include
LiquidCrystal lcd(PB15, PB5, PA2, PB6, PB8, PB9);
in setup - lcd.begin(16, 2);
and
/////////////////
lcd.setCursor(0, 0);
lcd.print("M=");
lcd.print(magC);
////////////////
inside - if(TonPltFlg) { = on LCD I have nothing
or at the end of - void loop() = on LCD Ihave - M = 0.00 - no respond to signal on PB1.
Hi galina,
Thank you for the question, and interest in the project. As a DIYer, I get your wanting to build with whats available. And you are welcomed to modify the code (sketch) any way to suit your needs. However, here I don't have a magC, so am unable to offer recommendations as to how this code might be altered to work with your display. But can say this. To adapt this sketch to work with a 16X2 character format, and non-touch sensitive screen will require changes to the code that go well beyond the "setup" segment of the sketch. I hope at some point you'll report that that you've succeeded. But you'll need to look to other sources, if outside help is needed.
GL & again thank you,
Jim(KW4KD)
@@jmhrvy1947
Your video 18:50 you have on serial plotter Red, Green and Blue line so if you have them on serial plotter I can have them on LCD just adding to serial.print lcd.print
// Graph Geortzel magnitudes
Serial.print(magH);//Blue
Serial.print("\t");
Serial.print(magL);//Red
Serial.print("\t");
Serial.print(magC);//Green
Serial.print("\t");
lcd.print(magC); ?
@@galinakorczak2446 the short answer is "no". Plotting is a feature of the Arduino Ide, and is quite a complicated process (also wholly separate from what the blue is doing) In the decoder sketch, all the blue pill is doing is sending raw numbers via is serial link to the computer. The IDE's plotting tool is figuring out how to scale the data, and which number belongs to a which trace.
However, in another video (see th-cam.com/video/PA9UYz__dcc/w-d-xo.html) I demonstrate a very crude plot routine using a 16X2 LCD display. But it would not be applicable to the data generated by the decoder sketch.
Aka Blue pills board cost $8-$10 ...instead of $2 🤦