{"id":91,"date":"2024-02-27T21:59:11","date_gmt":"2024-02-27T20:59:11","guid":{"rendered":"https:\/\/www.f4laa.fr\/?p=91"},"modified":"2024-03-04T08:47:24","modified_gmt":"2024-03-04T07:47:24","slug":"decodeur-cw-avec-un-esp32","status":"publish","type":"post","link":"https:\/\/www.f4laa.fr\/index.php\/2024\/02\/27\/decodeur-cw-avec-un-esp32\/","title":{"rendered":"D\u00e9codeur CW avec un ESP32"},"content":{"rendered":"\n<p>D\u00e9sireux de participer (un jour) au QSO des Piou-Piou organis\u00e9 par F5NWY sur la r\u00e9gion de Strasbourg dans la bande des 2m, j&rsquo;ai d\u00e9cid\u00e9 de commencer par me r\u00e9aliser un d\u00e9codeur CW bas\u00e9 sur un Microcontr\u00f4leur ESP32 et utilisant l&rsquo;algorithme de Goertzel.<\/p>\n\n\n\n<p>Cet algorithme a \u00e9t\u00e9 invent\u00e9 par Gerald Goertzel en 1958 pour d\u00e9tecter les tonalit\u00e9s DTMF utilis\u00e9es dans l&rsquo;encodage des touches des claviers t\u00e9l\u00e9phoniques. Il s&rsquo;agit d&rsquo;une analyse spectrale simplifi\u00e9e d&rsquo;un signal (DFT = Discrete Fourier Transform) qui permet de mesurer la pr\u00e9sence d&rsquo;une fr\u00e9quence donn\u00e9e dans un \u00e9chantillon de mesures d&rsquo;un signal. <br>Voir cette page : <a href=\"https:\/\/en.wikipedia.org\/wiki\/Goertzel_algorithm\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/en.wikipedia.org\/wiki\/Goertzel_algorithm<\/a> pour plus d&rsquo;informations sur cet algorithme.<\/p>\n\n\n\n<p>L&rsquo;id\u00e9e est de faire brutalement l&rsquo;acquisition par l&rsquo;un des convertisseurs Analogique-Digital d&rsquo;un ESP32 d&rsquo;une centaines de mesures du signal BF sortant d&rsquo;un TX qui \u00e9coute du Morse. L&rsquo;application de cet algorithme sur l&rsquo;\u00e9chantillon va permettre de dire si le signal \u00e9chantillonn\u00e9 contient, ou pas, une fr\u00e9quence de l&rsquo;ordre de 640Hz (Fr\u00e9quence audio d&rsquo;un signal morse produit par le TX). <br>Si OUI, on dira qu&rsquo;on a entendu un signal HAUT, sinon, on aura entendu un signal BAS.<br>Cette succession de signaux HAUT \/ BAS sera interpr\u00e9t\u00e9e comme une s\u00e9rie de Points \/ Traits d&rsquo;un code Morse \u00e0 d\u00e9coder.<br><\/p>\n\n\n\n<p>Je me suis inspir\u00e9 de cette vid\u00e9o YouTube de G6EJD qui d\u00e9crit un tel d\u00e9codeur, mais qui prend son entr\u00e9e depuis un Micro reli\u00e9 \u00e0 l&rsquo;ADC plut\u00f4t que de se connecter directement sur la sortie BF du TX, et utilise un \u00e9cran LCD de deux lignes pour afficher le texte d\u00e9cod\u00e9.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"Tech Note 078 - ESP32 Real Time Morse Decoder\" width=\"1032\" height=\"581\" src=\"https:\/\/www.youtube.com\/embed\/9OWl8zOHgls?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"has-text-align-left\">J&rsquo;ai adapt\u00e9 ce programme pour l&rsquo;utilisation d&rsquo;un \u00e9cran TFT 4&Prime; avec la librairie rapide TFT_eSPI&nbsp;<a href=\"https:\/\/github.com\/Bodmer\/TFT_eSPI\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/github.com\/Bodmer\/TFT_eSPI<\/a>&nbsp;et j&rsquo;ai fait un diviseur de tension entre le +3.3V et la masse, sur lequel j&rsquo;injecte en son point milieu, \u00e0 travers un condensateur de liaison, le signal BF en provenance du TX. Le programme ESP32 \u00e9crit en langage C se charge ensuite de faire l&rsquo;acquisition des \u00e9chantillons du signal, puis applique l&rsquo;algorithme de Goertzel sur cet \u00e9chantillon, et d\u00e9code ensuite le Morse qu&rsquo;il affiche sur l&rsquo;\u00e9cran TFT.<\/p>\n\n\n\n<p class=\"has-text-align-left\">J&rsquo;ai aussi ajout\u00e9 un encodeur rotatif qui permet de modifier certains param\u00e8tres de l&rsquo;algorithme :<br>&#8211; Fr\u00e9quence recherch\u00e9e <br>&#8211; Nombre d&rsquo;\u00e9chantillons acquis<br>&#8211; etc&#8230;<\/p>\n\n\n\n<p class=\"has-text-align-left\">J&rsquo;ai \u00e9galement ajout\u00e9 un potentiom\u00e8tre num\u00e9rique, pilot\u00e9 par l&rsquo;ESP32, qui lui permet d&rsquo;adapter automatiquement le niveau du signal mesur\u00e9.<br>Voici un exemple de d\u00e9codage produit par l&rsquo;\u00e9coute d&rsquo;un QSO des Piou-Piou :<\/p>\n\n\n\n<p class=\"has-text-align-center\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"254\" class=\"wp-image-95\" style=\"width: 400px;\" src=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCWEcran.png\" alt=\"\" srcset=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCWEcran.png 956w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCWEcran-300x191.png 300w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCWEcran-768x488.png 768w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCWEcran-367x233.png 367w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/p>\n\n\n\n<p>Vous trouverez sur mon Github le projet correspondant : <a href=\"https:\/\/github.com\/Christian-ALLEGRE\/CWDecoder\/\" target=\"_blank\" rel=\"noreferrer noopener\">CWDecoder<\/a> <br>Il contient le programme source pour l&rsquo;ESP32, ainsi que quelques photos montrant la r\u00e9alisation sur une breadboard du montage d\u00e9crit.<\/p>\n\n\n\n<p class=\"has-text-align-center\"> <img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"561\" class=\"wp-image-93\" style=\"width: 800px;\" src=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCW.png\" alt=\"\" srcset=\"https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCW.png 941w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCW-300x210.png 300w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCW-768x539.png 768w, https:\/\/www.f4laa.fr\/wp-content\/uploads\/2024\/02\/DecodeurCW-367x257.png 367w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>D\u00e9sireux de participer (un jour) au QSO des Piou-Piou organis\u00e9 par F5NWY sur la r\u00e9gion de Strasbourg dans la bande des 2m, j&rsquo;ai d\u00e9cid\u00e9 de &hellip;<\/p>\n","protected":false},"author":1,"featured_media":93,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,15],"tags":[],"class_list":["post-91","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cw","category-logiciels"],"_links":{"self":[{"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/posts\/91","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/comments?post=91"}],"version-history":[{"count":10,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/posts\/91\/revisions"}],"predecessor-version":[{"id":340,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/posts\/91\/revisions\/340"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/media\/93"}],"wp:attachment":[{"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/media?parent=91"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/categories?post=91"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.f4laa.fr\/index.php\/wp-json\/wp\/v2\/tags?post=91"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}