YaaCWk – Yet Another Arduino CW Keyer

EDIT 1. Aggiunti riferimenti a nuovo PCB YaaCWk v1.3, nuovi link e informazioni vendita PCB.
EDIT 2. Aggiornato il capitolo tastiera USB, modulo USB host.
EDIT 3. Stampate nuovi PCB YaaCWk v1.3, in magazzino oltre 25 pezzi.
EDIT 4. Aggiunti dettagli su note di assemblaggio e dettagli sul funzionamento winkey.

In questo articolo parleremo di YAACWK, un progetto dedicato agli appassionati di telegrafia che amano cimentarsi nei contest, nei dx e anche per rilassanti QSO tra amici, quindi non solo per coloro che hanno già molta esperienza ma anche per i meno abili che stanno muovendo i primi passi.

PXL_20210221_173105724

YaaCWk è stato ideato da Iz1glg e I1cra, parliamo di un circuito stampato che si prefigge come scopo primario quello di fornire un’alternativa economica da auto costruirsi per realizzare un tasto CW (codice morse) intelligente, che può tranquillamente rivaleggiare con tasti commerciali anche molto costosi.
Questo circuito stampato è fatto per essere utilizzato con una MCU ATmega644AP (64k di flash) o ATmega1284P (128k) dove è stato caricato un software opensource Arduino k3ng_cw_keyer sviluppato da Anthony Good K3ng, un progetto iniziato nel 2013 e nel tempo maturato molto arrivando oggi a supportare diversi keyer e offrendo moltissime funzionalità.

YAACWK, è l’acronimo scelto per questo progetto, letteralmente sta per “Yet Another Arduino CW Keyer” ovvero “Ancora un altro tasto telegrafico con Arduino”, il progetto è stato scritto attraverso un software CAD chiamato Kicad, rilasciato anch’esso open come codice sorgente.

K3ng keyer offre moltissime funzionalità tra queste ricordiamo le principali che abbiamo voluto integrare su YAACWK e nel software preinstallato:

  • 7 memorie cw programmabili e richiamabili attraverso pulsanti dedicati
  • DSP Goertzel per decodifica CW durante QSO
  • supporto per tastiera PS2 (eventualmente anche per tastiera USB ma senza funzionalità Winkey) per codifica cw diretta.
  • Supporto LCD 20×4 compatibile Hitachi HD44780 (a richiesta anche 16×2 caratteri)
  • supporto per due differenti ricetrasmettitori oppure singolo nel caso sprovvisto di commutazione PTT automatica
  • tastiera command mode, qui maggiori info: https://github.com/k3ng/k3ng_cw_keyer/wiki/320-Feature:-Command-Mode
  • protocollo Winkey e Winkey2 (per i log context, testato: cqrlog, N1mm e log4om), utilizzabile tramite porta seriale USB (alla velocità di 1200bps), qui maggiori info: https://github.com/k3ng/k3ng_cw_keyer/wiki/370-Feature:-Winkey
  • command line interface, utilizzabile direttamente da qualsiasi terminale seriale (es. Putty, hyperterminal) tramite porta seriale (per attivare questa modalità tenete premuto il bottone SW1 mentre accendete YAACWK), qui maggiori info: https://github.com/k3ng/k3ng_cw_keyer/wiki/310-Feature:-Command-Line-Interface

Una volta che YAACWK è programmato non necessita di altro hardware esterno per funzionare, lo stesso PC è opzionale se non utilizzate winkey.

yaacwk

PCB YaaCWk v1.3 disponibile ora per l’acquisto.
Siamo lieti di annunciare la disponibilità del nuovo circuito stampato YaaCWk versione 1.3, che possiamo spedire assieme ad una MCU ATmega644AP preprogrammata con la configurazione richiesta tra quelle disponibili alla pagina: preconfigurations/YaaCWk .

yaacwk_v1.3

Le spedizioni avvengono tramite poste Italiane, i prezzi comprendono anche l’imballaggio, tramite posta raccomandata (in italia 8 euro, in europa 10 euro e nel resto del mondo 12 euro fino a 100 gr) eventualmente per spedizioni non tracciate è possibile utilizzare la posta ordinaria al costo di 3 euro in Europa.

ArticoloPrezzo
Circuito stampato YaaCWk versione 1.37 Euro (spedizione esclusa)
ATmega644AP già programmato con software k3ng12 Euro (spedizione esclusa)
YaaCWk versione 1.3 + ATmega644AP preprogrammato.25 Euro (sconto e spedizione raccomandata con tracciatura inclusa)
27 Euro (sconto e spedizione raccomandata con tracciatura estera inclusa)

Per ulteriori informazioni o invio voucher di pagamento paypal il contatto è: federicobriata@gmail.com

A questo indirizzo trovate tutti i pdf e gerber di YaaCWk versione 1.3:
https://github.com/federicobriata/iz1glg_yaacw_keyer/tree/master/Plot_out/yaacwk_v1.3

CP2102

Porta Seriale – USB SERIAL Port Module
Per l’utilizzo con WinKEY, ma anche per la programmazione di YAACWK con Arduino IDE, è necessario collegare un modulo UART TTL/seriale RS232-USB, ai pin TX0 e RX0 della porta di espansione J6. Noi abbiamo utilizzato con successo il modulo “CP2102 USB to UART TLL Module 6Pin Serial Converter Adapter” che oltre a convertire il segnale seriale può anche essere utilizzato per alimentare YaaCWk.

BOM – Lista componenti e note di assemblaggio

Per utilizzare Yaacwk è necessario rivolgersi al proprio negozio di elettronica al dettaglio di fiducia e procurarsi quanto segue:

Quantità Etichetta PCBDettagli componente
1xJ6CP2102 USB to UART TLL Module 6Pin Serial Converter Adapter
Nota: il modulo è necessario se volete usare la funzionalità WinKey o per alimentare yaacwk quando non utilizzate J1.
Nota2: FT232RL potrebbe anche funzionare, ma pinout e dimensioni differiscono, quindi potrebbe essere necessario adattare i collegamenti.
1×IC1MCU ATmega644P 40-PDIP
Nota: questa è la MCU che spedisco già programmata.
1×Y1Crystal 16 MHz
1×DS1LCD 20×4 compatibile Hitachi HD44780
1×LCDPot1Trim Potentiometer 10 kOhm WH06-2
1×SpeedPot1Linear Potentiometer 10 kOhm
1xU1LM7805
Nota: il regolatore è necessario solo se il modulo UART TTL/seriale RS232-USB (CP2102 su J6) non e’ presente e quindi alimentate da J1.
1xU2LM3940 per Yaacwk v1.3
oppure
LM2937 per Yaacwk da v1.4 e successive versioni.
Nota: A seconda del modello di Yaacwk è necessario il relativo regolatore per i 3.3V: LM3940/LM2937 solo se si vuole usare la porta di espansione J8.
Nota2: LM3940 è necessario sia quando alimentate da J1 che quando utilizzate il modulo UART TTL/seriale RS232-USB (CP2102 su J6). LM2937 è necessario solo se non utilizzate il modulo UART TTL/seriale RS232-USB (CP2102 su J6).
2×C13, C15Electrolytic Capacitors 22 uF, 25V
Nota: C13 e C15 sono necessari se alimentate da J1, altrimenti solo C15 non è necessario con Yaacwk da v1.4 se già utilizzate il modulo UART TTL/seriale RS232-USB (CP2102 su J6).
2×C14, C16Electrolytic Capacitors 330 uF, 25V
Nota: C14 e C16 sono necessari se alimentate da J1, altrimenti solo C16 non è necessario con Yaacwk da v1.4 se già utilizzate il modulo UART TTL/seriale RS232-USB (CP2102 su J6).
2×D5, D6Generic Diode (come 1N4007 che regge 1A è OK)
Nota: D5 è necessario solo se alimentate da J1, viceversa D6 è necessario solo se alimentate dal modulo UART TTL/seriale RS232-USB (CP2102 su J6).
2×C10, C11Ceramic Capacitors 22 pF
1×C1Ceramic Capacitors 5 nF
4×C2, C3, C4, C5Ceramic Capacitors 10 nF
8×C6, C7, C8, C9, C12, C17, C18, C19Ceramic Capacitors 100 nF
1×IC2TLP627-2 Optocouplers
1×BZ1Analog/passive buzzer 5V
1×J1DC Power Supply Jack Socket Female PCB Mount Connector 5.5mm x 2.1mm
1×PS2CONN1Mini 6PIN FEMALE PCB MOUNT PS2 JACK mouse keyboard plug connector (su ebay si trova quello colore Purple / 141884938650)
Nota: se usate il modulo USB Host su J8, questo non è necessario.
4×D1, D2, D3, D4LED
8×SW1, SW2, SW3, SW4, SW5, SW7, SW8 ,SW9Omron B3F-1052 Switches
Nota: su Yaacwk v1.3 devono essere girati di 90° (=Pi/2) rispetto al piano orizzontale, grazie a DL1WOL Wolfgang per la segnalazione. Se i bottoni sono montati in maniera scorretta, avrete malfunzionamenti alla pressione dei tasti.
2xJ3, J4RCA-103P PCB Mount
2×J2 (AUDIO_IN), J5 (PADDLES)pj-320a Jack – 3.5mm – 4 pin
2×L1, L2Inductor 4.7 uH
Nota: se usate il modulo USB Host su J8, queste non sono necessarie.
Nota2: quelle da 5 uH non si trovano in commercio, ma da 4.7 uH vanno comunque bene, grazie a Mario IZ8DBJ per la segnalazione, alla prima occasione anche lo schematico verrà aggiornato.
3×R1, R12, R13Resistor 10 kOhm
12×R2, R3, R4, R5, R6, R7, R8, R10, R11, R14, R15, R16Resistor 1 kOhm
1×R9Resistor 220 Ohm

Bene, questo è l’ultimo capitolo necessario per completare l’assemblaggio del vostro YAACWK, dal prossimo capitolo verranno affrontati altri temi come la programmazione della CPU ATmega (nel caso avete deciso di seguire questo progetto in maniera autonoma) e altre informazioni extra.
Per ulteriori dettagli sul software K3NG dovete fare riferimento al sito ufficiale disponibile all’URL http://blog.radioartisan.com/arduino-cw-keyer/ dove viene spiegato dettagliatamente come programmare il keyer con la tastiera e il paddle per inserire tutti i vari comandi disponibili, per informazioni sul codice ed eventuali modifiche potete consultare il wiki https://github.com/k3ng/k3ng_cw_keyer/wiki .

Configurazione Arduino IDE
La programmazione di un chip ATmega vergine, comprato online, avviene in due fasi tramite Arduino Ide >= 1.6.7:

  • l’aggiunta di Sanguino su Arduino Ide, il bootloader da caricare tramite IDE con USBASP o Arduino remoto via pin ICSP (vedi doc in rete specializzata). E’ stato caricato Sanguino di Kristian Sloth come spiegato su https://github.com/Lauszus/sanguino.
    Questo passaggio è necessario eseguirlo una sola volta all’acquisto della MCU.
  • l’aggiunta dell’ambiente core megax4 su arduino ide. E’ stato caricato megax4 di Leonardo Miliani come spiegato su https://github.com/leomil72/megax4
    Questo passaggio è necessario eseguirlo ogni volta che volete riprogrammare Yaacwk con una versione di K3ng keyer.

Programmazione MCU Yaacwk
In preconfigurations/YaaCWk potrete trovare le configurazioni USB testate con Yaacwk. Per provarle è sufficiente copiare i files nella cartella principale sostituendo quelli originali e come riportato da k3ng: installare in Arduino IDE la libreria USB_Host_Shield e abilitare le 3 librerie USB in k3ng_keyer.ino come riportato nel codice alla voce: note_usb_uncomment_lines.

Sviluppo, lavori in corso e bachi software
Ho riscontrato nel tempo alcuni piccoli problemi con il software di k3ng.
La versione 20180830, se opportunamente configurata funziona sia con tastiere PS2 che USB (tramite modulo USB host) ma a causa di un baco questa non supporta correttamente la funzionalità winkey.
Per coloro con tastiera PS2, o che sono disposti a rinunciare ad utilizzare la tastiera USB, con un aggiornamento software alla versione 20190503 il baco su winkey è stato fortunatamente risolto da k3ng, tuttavia questa versione è affetta da un altro baco che non permette di far funzionare il modulo USB host e quindi con questa versione non è possibile utilizzare una tastiera USB e ci si deve accontentare di quella PS2.
Non ho ancora trovato una versione o configurazione del codice arduino k3ng appropriata per avere sia funzionalità winkey assieme al supporto per tastiere USB, quando avrò aggiornamenti sarete informati, al momento se avete necessità di usare winkey dovete necessariamente usare una tastiera PS2 mentre se avete necessità di usare una tastiera USB dovete rinunciare ad utilizzare winkey.
Per quelli che oggi vorrebbero iniziare ad utilizzare Yaacwk, vi confermo che da Maggio 2022 tutte le MCU atmega che spedisco sono già programmate per essere utilizzate con tastiere PS2 e winkey al fine di offrire tutte le funzionalità disponibili e supportate da Yaacwk v1.3.
Coloro che hanno ricevuto prima di Maggio 2022 una MCU e non avessero ancora provveduto a contattarmi per ricevere assistenza ma vorrebbero aggiornare autonomamente il software alla versione 20190503, sto preparando uno capitolo dedicato all’aggiornamento software, nel frattempo vi segnalo che a questo indirizzo: https://pub.briata.org/yaacwk_firmware trovate i firmare di k3ng già compilati e pronti per essere caricati tramite avrdude, come accennato alcuni di voi mi hanno già contattato e con il mio aiuto sono riusciti ad effettuare l’aggiornamento.

Tastiera USB – Modulo USB Host (OPZIONALE e, al momento, sconsigliata!)
Premesso che una vecchia tastiera PS2 riciclata o una tastiera USB con emulazione PS2 (NOTA: non tutte le tastiere USB sono compatibili con adattatore PS2 se non è specificato) vi assicura di realizzare questo progetto con un budget sicuramente più contenuto rispetto alla versione USB, come accennato YaaCWk è compatibile anche con tastiere di tipo USB tramite l’aggiunta di un modulo USB host dedicato.

Su YaaCWK v1.3 abbiamo testato con successo un modulo USB Host economico, modello: “DuinoFun UHS mini v2.0″ lotto: “Aug. 16,2014“, se non conoscete già il modulo vi consiglio di cercare lo stesso identico modello in quanto essendo un prodotto cinese ci sono molte schede simili ma con pinout differente (rispetto quello riportato in questa immagine), per maggiori informazioni su questo argomento, fate riferimento al forum disponibile a questo link .
Il modulo va collegato alla porta di espansione J8 di YAACWK seguendo i collegamenti riportati nell’immagine a lato, è molto importante interrompere la pista 5V come riportato nell’immagine in quanto YaaCWk ha il suo circuito di alimentazione che verrà usato anche per alimentare la vostra tastiera USB. Inoltre questo modulo, come la maggior parte di quelli economici, è progettato per funzionare a 3.3V mentre ATmega644P su YAACWK viene alimentato a 5V, di conseguenza per una corretta comunicazione SPI vanno adattati i livelli di comunicazione del bus SPI aggiungendo 4 resistenze da 220 Ohm tra il modulo USB host e la porta di espansione J8 per i pin SS, MISO, MOSI e SCK come riportato nell’immagine a lato. E’ possibile che alcuni moduli USB host riescano a funzionare anche con bus logico a 5V, quindi senza le resistenze, ma si tratta di pura fortuna e potreste trovarvi con un bus SPI instabile in quando il modo corretto di utilizzo prevede 3.3V (grazie DL1WOL Wolfgang per la segnalazione), qui maggiori dettagli: https://create.arduino.cc/projecthub/139994/plug-any-usb-device-on-an-esp8266-e0ca8a .

Configurazione software K3NG / hardware Yaacwk
A questo indirizzo: https://github.com/k3ng/k3ng_cw_keyer trovate l’attuale versione aggiornata del software di k3ng dove decommentando (rimuovendo //) dalla riga “#define HARDWARE_YAACWK” nel file k3ng_keyer/keyer_hardware.h potrete configurare il software di K3NG per YaaCWk. Vi segnalo inoltre che su https://github.com/federicobriata/k3ng_cw_keyer/tree/yaacwk_dev_NEW trovate il mio fork non aggiornato del codice sorgente di K3NG già preconfigurato per so1r con tastiera PS2, seriale WINKEY, decoder CW e display 20×4 compatibile Hitachi HD44780 per essere caricato su YaaCWk.

PCB YaaCWk DIY
Se volete stamparvi il vostro PCB, a questo indirizzo https://github.com/federicobriata/iz1glg_yaacw_keyer potete trovare tutti i sorgenti del progetto completo Kicad, incluso il gerber allineato sulla versione 1.4 attualmente in sviluppo e il relativo eeschema della revisione I, dove è stato implementato il reset via DTR, un fix sul jack Audio_IN e una nuova gestione dell’alimentazione 3v3 anche via porta seriale USB.

Ulteriori NOTE
Inizialmente YAACW Keyer fu progettato attorno ad Arduino Nano V3.0 ma in corso d’opera ci siamo resi conto che i 32k di memoria flash dell’ATmega328 non erano sufficienti per il numero di funzionalità che volevamo utilizzare con il keyer di K3ng, costringendoci quindi a non abilitare il display e quindi anche il decoder DSP.
A questo link trovate il vecchio codice delle prime sperimentazioni con il software k3ng modificato per Arduino Nano e a quest’altro link trovate il relativo schema sempre basato sul vecchio progetto per Arduino Nano con protezioni antirimbalzo per i pulsanti delle memorie, per ulteriori dettagli come la procedura per programmare l’Arduino Nano tramite il suo IDE potete far riferimento all’articolo uscito sulla rivista Radiokit di marzo 2016.

3 Replies to “YaaCWk – Yet Another Arduino CW Keyer”

  1. Is the YaaCWk still available for sale? If so, what is the price USD shipped to USA for pcb and programmed memory chip? Thanks, Dale KS4NS

    1. Yes it’s available, I’m just not offering a kit, but CPU and YAACWK PCB are both available, I’m trying to avoid to be without YAACWK PCB, and when it happen it’s just for short time.
      Shipping cost to USA it’s 12 EURO, so the total for shipping one YAACWK and one CPU would be 29 EURO.
      If you’re interested please write me directly by email because wordpress will not notify me your reply.
      thanks and 73 iz1glg – federico

  2. Now the Arduino projects are in vogue, so I also reached for the K3NG software out of curiosity.
    I was impressed with the ability to decode and display the received and transmitted text with adaptive speed and good WinKey 2.3 emulation.
    After several tests with different projects, that did not satisfy me, I chose YAACWK.
    I1CRA and IZ1GLG supplied a perfectly manufactured double-sided PCB board with the printing and a programmed processor.
    So just buy a few common components (not SMD), a suitable box and the rest is a simple brick-box that works on the first connection.
    I assembled and brought the ready product for presentation to our Radio Club.
    It aroused interest and we agreed that it is also excellent for teaching Morse code.
    It is clear to see where the adept makes keying mistakes (but this is also a common problem when decoding the audio of stations from a band where their broadcast quality is very important, the human ear adjusts for inaccuracies, the processor does not yet).
    Fans of Morse broadcasting from a computer keyboard will also appreciate the possibility of connecting an external PS2 keyboard (US).
    Of course, YAACWK is well suited for regular work on the amateur bands, even in conjunction with N1MM+ Logger.
    It is not a product for fanatics of miniature constructions, but an appropriately chosen compromise is even for the designers who are not good in soldering of microscopic SMD components and for familiarizing with the do it your self world.

Rispondi a Stanislav Burian, OK2BPV Annulla risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *