Aqui compartilho projetos, DDS VFO Arduino modificados, esquemas e informações. Incentivo aos iniciantes em modificações DDS VFO Arduino e em montagens de transceptores, transverter etc. ATENÇÃO: Às montagens de transceptores, transverter, acima de 100mW RF em qualquer modalidade de transmissão, frequência terá que ter licença, autorização da ANATEL no Brasil. O autor do blog não se responsabiliza. Muito obrigado por acessar o blog. Bem-vindo espero que gostem das postagens e comentários.
Desculpe-me esta página está em construção pelo autor.
Olá a todos que acompanha nosso blog. Sou agora um caçador pesquisador de sketch código livre para Si5351 e Oled SSD1306. Encontrei mais um campeão em modificações, desde sua primeira publicação 2015, com PIC e código livre na WEB. Achei na página holandesa do PAQRWE, Ver.3.2, por favor leia toda página do link. Há alguns meses atrás, gravei um destes sketch esboço, que não lembro a versão. O display ficou pequeno para os caracteres principalmente os números das frequências, a resolução não estava correta. Então fui pesquisar. Depois de assistir a diversos vídeos destes sketches e versões, e nenhum deles menciona sobre display, em um fórum, aliás tem um vídeo colega brasileiro que mostra o dele também com os nomes e números da frequências grandes e resolução errada, em sua página o colega PA3EQP, PAQRWE em Versão Arduino Notas: ele cita a biblioteca Si5351 que melhor funcionou em seu programa sketch, ele também escreve sobre a resolução do display Oled SSD1306. Eu ainda não tinha lido, e mesmo assim não entenderia o que ele escreveu: "Pelos construtores, entendi que a resolução padrão na biblioteca de SSD1306 do Adafruit está definida para um valor incorreto. Você deve mudar a resolução no arquivo Adafruit_SSD1306.h para 128×64. É uma afirmação #define no início do arquivo." O problema não é a biblioteca,o sketch não aceita esta instrução, ou linha de código. Mas sim este instrução deve ser a melhor opção: Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire); Ao invés do que consta lá no sketch como: Adafruit_SSD1306 display(OLED_RESET); Esta instrução deve ser banida, e a primeiro deve permanecer para algumas telas display ter resolução correta. Eu descobrir depois de tentar várias vezes em outros sketches de versões dos mesmos autores, então todos ficavam assim resolução errada no meu display, então observando nos outros sketches fui mudando o que se referencia ao display, e observei que as maiorias dos sketches são com esta instrução início para o display: Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire); então assim modifiquei tive êxito e aprendi, meu display ficou bom e pude fazer minhas modificações neste e em outros sketches dos autores de referência. Vou passar para vocês minhas atualizações para esta versão 3.2 do PA3EQP, PAQRWEequem teve este problema há anos atrás e deixou de gravar o sketch, agora tem ele muito melhor. Abaixo colocarei algumas fotos,de outros colegas que se depararam com este erro. Além do mais ás linhas de instrução ou comando do Si5351 teriam que acrescentar este: SI5351_PLL_FIXED, no meio da linha assim Ex: si5351.set_freq((vfo_hf * SI5351_FREQ_MULT), SI5351_PLL_FIXED, SI5351_CLK0); em void setup e void loop, e muitas vezes a biblioteca Si5351 dava erros. Ver 3.0, não compila sempre erros em Si5351, não vou perder tempo, a versão Si5351_RxTx_VFO_EQP, atualização de 19/06/2023, compila com aquele mesmo problema da resolução no Oled, vou adicionar foto abaixo, também está para 14.5 Mhz, em: #define F_MAX 14500000UL . O RIT não atua em nenhuma das saídas CLK,
Esses são apenas alguns erros no Oled, mas existe outros erros.
Vou gravar novamente o original da versão V.3.2 e vejam foto abaixo como fica.
Vejam o tamanho dos números e letras, está original com linha de comando Adafruit_SSD1306 display(OLED_RESET);
Vejam o tamanho da fonte.
Com a linha de comando 100 atualizada para: Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire); ficou bom, nenhuma das versões que gravei não atua o RIT, e nem calibra o cristal de 25Mhz, mesmo adicionando a biblioteca <RWE_si5351.h> ou <si5351.h> não tem efeito, mas a FI dá para colocar nos modos AM, SSB, a EEPROM está atuando na frequência e na FI.
Outra versão abaixo que também não tem efeito no RIT e calibração do cristal, é limitado em 14 Mhz. Já está com a linha de comando atualizado para. Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
São usados ás 3 saídas do SI5351, CLK0 = Frequência de saída de TX 10 Khz a 160 Mhz, mesma frequência do display. CLK1 = Frequência calculada CLK0 e CLK2 da soma ou diferença + ou - FI, pronta para TRX. CLK2 = Frequência de saída da FI digitada e salva na tecla D7. Sem perder tempo atualizei a correção na inicialização do Si5351 para: si5351.set_correction(18000); este é o melhor ajuste para o meu cristal Si5351.
Vejam foto abaixo a versão V3.2 já com a linha de comando 100 Adafruit_SSD1306 display = Adafruit_SSD1306(128, 64, &Wire);
Começarei a fazer ás modificações, vou pensando e tentando fazer o melhor vejam abaixo ás fotos.
Arrumando os caracteres nomes e números acho que dá para colocar um S/Meter na parte de baixo então vamos ver como vai ficar. Já atualizei escala para 30db é para o 148 GTL e outros transceptores comerciais HF. É acho que conseguir colocar o S/meter de outro sketch código livre.
Sim ficou muito bom, agora vamos atualizar com algumas perfumarias, vamos ver se dá para colocar algumas linhas divisórias.
Ok, dá para colocar ás linhas divisórias, mas tem algo ainda errado nestas linhas, estão muito grossas, vamos verificar o que esta acontecendo.
Vamos ver como fica outra linha acima do S/meter.
Ok, afinei mais a linha e vamos ver como fica aos 100Mhz. Ótimo para os 160 Mhz.
Vamos então atualizar ás linhas divisórias, parece que ainda tem algo errado, a linha esta curta não esta toda abaixo do último zero "0" da frequência. Vamos mudar o TRx por CLK0, afinal de contas é o que mostra ele na frequência e no display. O STEP pode ser ST ou TS, qual o melhor para entender? CLK0 é bom para transceptores conversão direta.
Ok abaixo foto, estiquei um pouco a linha do zero "0" e diminuir a Mhz, é o máximo. Vamos ver se o S/meter dá para ficar parecido com o 148 GTL. Acho que o SIG está desproporcional, pois a sensibilidade do S/meter deve ser alterada.
Vejam agora coloquei em D7 TRx ou BFO com IF CLK2, é o que mostra no display e saída de frequência em CLK2, poderá ser ajustada para AM, LSB ou USB. Ajuste assim para o Cobra 148 GTL: AM = 7.800.000, LSB = 7.798.500, USB = 7.801.500. CLK2 poderá ser ligado no Carrier do Cobra 148 GTL se não tiver, perdeu ou danificado o cristal de 7.800Mhz. Estas frequências mixadas vocês poderão ver acionando a tecla D6 antes era RIT, agora é a frequência que mostra e sai em CLK1. Vejam segunda foto abaixo.
Uma boa modificação que fiz e poderemos manter pressionada a chave D6 e ver a frequência de saída em CLK1. Vocês poderão colocar no Cobra 148 GTL no modo AM = 34.765.000, no modo LSB = 34.763.500, no modo USB 34.766.500, essa mudança é feita no modo CLK2 foto acima. É só adicionar um circuito de pré amplificador ou Buffer e ligar sua saída em L20 do Cobra 148 GTL, se quiser poderá deixar o UHIC 070 mas a banda de frequência será estreita e mais silenciosa.
Olá pessoal, e todos que acompanha o blog e nosso canal no YouTube. Trago para o final de ano um presente de Natal. Ainda sobre o esboço que copiei do vídeo e publicado aqui no blog e no YouTube, com pequenas atualizações. Assistam o vídeo explicativo como ser adaptados no Cobra 148 GTL ou outros transceptores. O esboço ou sketch é simples mas temos em CLK0 VFO com adição ou subtração da FI configurando no esboço, temos em CLK1 BFO frequência de FI digitada no começo do esboço, esta frequência tem variação em LSB, USB, com 1500Hz abaixo e acima da frequência do AM, que são refletidas no VFO CLK0. Assim para quem quiser poderá usar CLK1 como Carrier oscilador, poderá precisar de um Buffer, ou simplesmente ligar no local do cristal de 7.800Mhz, se alguém perdeu o cristal ou está danificado de Carrier oscilador 7.800 Mhz Cobra 148 GTL, ou outros transceptores podem usar este recurso com sucesso para reviver seu transceptor.
Bem como já relatei no começo deste, o sketch é atualizado no STEP agora fixo, começo da frequência imediato mesmo depois da tela de inicialização Cobra 148 GTL. O sketch ficou mais leve, estável, e muito melhor que o primeiro foi até 110 Mhz com ótima estabilidade, não mais de 110 Mhz, o que dá para ser usado em transceptores comerciais ou montagens em casa homebrew, nas faixas de HF, VHF até 50 ou 70 Mhz, tudo isso com os modos AM, LSB, USB. Fiz algumas alterações para ver se ele subiria até os 160 Mhz mas não deu, tentei modificar a biblioteca, também não tive sucesso. Outras tentativas de colocar um S/Meter na parte de baixo do display, chave TX, RX em CLK0 com frequência do display e frequência do VFO +/- do BFO, não deram certo além da memoria EEPROM que não deu certo também. Pessoal não é fácil só copiar e colar linhas de comandos de outros esboços e vai dá certo, não, não vai dá certo, eu ainda estou aprendendo mas digo para mudar um esboço tem que saber como fazer está modificação, é para quem tem muito conhecimento no código C++ Arduino, em alguns casos simples como imprimir um nome ou outras simples modificações, são fáceis, mas outras como ás que citei, teremos que modificar muito o esboço para ter o que queremos. Vocês podem ver vários exemplos de muitas modificações feitas por Radioamadores e amantes da eletrônica digital do projeto do DDS VFO 10K 220Mhz até os chineses copiou e estão comercializando este magnífico DDS VFO que é muito bom para nossos transceptores. Ele é amplamente divulgado em vídeos, sites, blogs, eu acho pelas minhas pesquisas que é o projeto do Júlio Cesar DDS VFO e mais modificados no mundo. Parabéns Júlio Cesar. Enquanto muitos acham que só podem modificarem os esboços quem é programador, eu li e ouvir, vários relatos de colegas do mundo inteiro que diz não saber muito sobre Arduino e Código C++, mas mesmo assim fazem modificações e dão certo. Não dá para eu listar aqui os sites e vídeos que tem este projeto do Júlio Cesar como argumento de modificações, pois são inúmeros. Vamos retornar ao nosso simples e eficiente DDS VFO AM, LSB, USB. Eu gostaria se tiver alguém aqui no Brasil ou no mundo que quiser mandar como colocar um S/Meter e memória EEPROM nestes esboços, eu ficaria realmente feliz e divulgo seu nome ou como queira ser divulgado.
Pessoal eu recebi muitos e-mail e comentários perguntando como colocar este DDS VFO em um transceptor AM SSB. Minha resposta: Seja qual a marca e modelo, se o rádio tiver AM, FM, CW, LSB, USB, vocês terão de acrescentar no esboço estes modos e digitar seus pinos e suas frequências de FI. vejam com atenção ás linhas de comando do esboço, e façam o mesmo. Para transceptores que tem a chave de AM, LSB, USB, Cobra 148 GTL a chave é S403-3 com +8 volts. Os pinos D6 USB, D7 LSB, D8 AM, do Arduino no esboço elas tem que ir para LOW, negativo, GND terra, para isso teremos que montar uma chave eletrônica a transistor NPN de uso geral, onde o coletor vai ao pino do Arduino, emissor ao GND negativo, e base entra o sinal S403-3 segue a dois resistores um em série de 22k a 47K outra idêntica e um capacitor de cerâmica ou poliéster de 103, 10nF base para negativo GND. Abaixo está o esquema da chave eletrônica que servirá para demais transceptores que tem chave com alimentação +B outros que tem alimentação a GND negativo não precisa de tais chaves. Não podemos esquecer que para vocês colocarem o DDS VFO em seu transceptor, terão de montar um simples Buffer amplificador de RF com um ou dois transistores, o transistor melhor é BF 199 ou outros de alta frequência para quem vai até 220 Mhz, Vejam na página do Sr. PU2REO manual em PDF DVFO como instalar o DDS VFO em um Cobra 148 GTL. Parabéns muito obrigado ao PU2REO pela contribuição. Abaixo tradução do PU2REO na página do Buffer manual v1.5.
"Vamos voltar ao assunto: depois de remover os componentes de rádio marcados com um quadrado vermelho
nos esquemas de rádio, é hora de colocar o DVFO para funcionar. Se você observar os esquemas de rádio, é fácil identificar que o pino nº 1 do CI2 (UHIC 070) é a saída do VFO analógico. Portanto, é exatamente aí que vamos inserir nosso novo gerador. Após alguns testes, descobri que o Si5351 não é adequado para acoplamento direto com L20, devido à sua baixa corrente e tensão de saída, entre outros 2 ou 3 motivos que estão além do escopo deste manual. É aí que entra um amplificador de sinal pequeno: Esquema do Amplificador de Sinal Pequeno (ou simplesmente "Buffer"). Para construir este buffer, usei o TR20 do meu próprio rádio. Você pode usar um BC547, que também funcionará bem. A versão final deste buffer foi montada na placa de circuito impresso e soldada no mesmo local onde antes estava o UHIC-070."
Assistam ao vídeo publicado 02/01/2026.
Esquema Buffer amplificador simples RF PU2REO.
PCB Buffer PU2REO.
Esquema chave eletrônica para transceptores com chave +B.
Esquema ligações dos periféricos no Arduino DDS VFO CB AM, LSB, USB.
Fotos abaixo é esboço, tem Modo AM, LSB, USB, STEP fixo, TRX. frequência na parte de baixo do display. É o recomendado e foi o primeiro a ser atualizado. Mais estável, mais leve. inicialização rápido da frequência ao ligar, mesmo com tela de inicialização.
Tela de inicialização Cobra 148 GTL. Poderá modificar para outros transceptores.
Tela do DDS VFO atualizado com STEP fixo, TRX, Modo AM, LSB, USB, frequência VFO parte inferior display.
Vai até 110 Mhz com ótima estabilidade. Depois desta frequência fica instável.
Vejam no Frequencímetro a FI é 7.800Khz.
Selecione o programa, copie, depois abra na área de trabalho o Arduino IDE, limpe delete e cole dentro.
// Button press changes the frequency change step for 1 Hz steps
if (get_button())
{
switch (radix)
{
case 1:
radix = 10;
break;
case 10:
radix = 100;
break;
case 100:
radix = 1000;
break;
case 1000:
radix = 10000;
break;
case 10000:
radix = 100000;
break;
case 100000:
radix = 1000000;
break;
case 1000000:
radix = 1;
break;
}
display_frequency();
}
}
void Splash() {
display.setTextSize(2);
display.setCursor(5, 1);
display.print("Cobra 148");
display.setCursor(45, 17);
display.print("GTL");
display.display();
delay(3000);
display.clearDisplay();
}
O esboço e fotos abaixo tem o modo RX e TX falso, não atua nem CLK0 e CLK1, só serve para ter uma referência no display de recepção e transmissão, ao ser acionado pino D9 alto sem ligação RX, em LOW, negativo TX no transceptor Cobra 148 GTL ou outros transceptores.
Tela de inicialização para Cobra 148 GTL, poderá ser modificado para transceptor diferente.
Foto modo RX falso.
Modo TX falso.
Selecione todo programa, copie, depois abra na área de trabalho o Arduino IDE, limpe delete e cole dentro.
// Button press changes the frequency change step for 1 Hz steps
if (get_button())
{
switch (radix)
{
case 1:
radix = 10;
break;
case 10:
radix = 100;
break;
case 100:
radix = 1000;
break;
case 1000:
radix = 10000;
break;
case 10000:
radix = 100000;
break;
case 100000:
radix = 1000000;
break;
case 1000000:
radix = 1;
break;
}
display_frequency();
}
}
void Splash() {
display.setTextSize(2);
display.setCursor(5, 1);
display.print("Cobra 148");
display.setCursor(45, 17);
display.print("GTL");
display.display();
delay(3000);
display.clearDisplay();
}
Copie e cole no Arduino IDE, o esboço que mais interessar, todos tem a mesma função em CLK0 e CLK1
Vamos ás fotos e esboço:
Este abaixo é como está nas fotos tem. Modo: AM, LSB, USB, ST: para STEP, frequência no meio e uma área livre em baixo do display, eu estava tentando adicionar um S/Meter embaixo, não conseguir, ficou para futuras modificações.
Todos tem esta mesma tela inicial.
Esta é a foto do DDS com esboço abaixo para futuro S/Meter.
Vejam quando fui passar de 99Mhz, o último (0) zero ficou na parte de baixo, não dá para ele ir até 100Mhz, ou vai atrapalhar o S/Meter.
Festas de fim de ano, confraternização, afeto, amor, amizade sincera e respeito, com ano 2025 findando, vamos para mais um recomeço. Recomeço de tudo que deixamos no velho ano, e tentar ser muito melhor, aprender a cada dia uma tarefa algo novo, procurar ser persistente no que vai aprender, compartilhar novas experiências que ajude a desenvolver o ser humano. Desejo a todos que neste ano e demais que se aproxima sejamos mais amáveis, solidários, amantes do que é justo e da honestidade, compreensivos, educados, generosos, e bondosos, e que o senhor Deus todo poderoso e seu amado filho Jesus Cristo venha a fazer parte de nossas vidas e esteja em nossos corações por toda a nossa existência. "Darei a vocês um coração novo e porei um espírito novo em vocês; tirarei de vocês o coração de pedra e lhes darei um coração de carne". (Ezequiel 36:26).
Muito obrigado a todos seguidores e quem acessam o nosso blog e canal no YouTube.
Desejo-lhes boas festas, feliz Natal e próspero ano de 2026 cheio de muitas realizações e conquistas.
Olá pessoal, vocês que acompanha nosso blog, muito obrigado pela visita. Publico este mês um esboço ou sketch, em vídeo projeto DDS VFO autor Sr. Júlio Cesar do ano de 2020. O projeto é simples porem muito bom com variação de 10kHz a 120MHz, original STEP de 1Hz, 10Hz, 1kHz, 5kHz, 10kHz e 1MHz, ajuste de FI offset + ou - Super-heteródinos conversão Direta. Display Oled SSD 1306 128x64, e placa ou IC si5351. Fiz simples modificações, algumas que o próprio Júlio Cesar responde em seus comentários em sua página. Porem algumas modificações estão muito difíceis de serem realizadas pelo meu pobre conhecimento em código C++. Tais como adicionar TX RX com FI e frequência display, adicionar AM, LSB, USB. Na verdade eu não tinha programado este sketch para publicar este mês, mas sim um sketch em vídeo, com RIT, memória, s-meter, menu calibração. Tive que copiar o sketch do vídeo, ao gravar tive a surpresa dos caracteres e outros comandos não funcionavam corretamente. Revisei varias vezes o vídeo e sketch que copiei, adicionei e retirei bibliotecas, não tinha nada errado, compilava ok, mas ao gravar fiquei tentando consertar o programa, mas perdi muito tempo e não conseguir. Infelizmente pessoal tem pessoas que brincam com o que publicam. Eu não e jamais vou divulgar o nome do autor vídeo e nem o sketch que copiei. Não estou aqui para denunciar e nem jogar pedras em nenhum colega que fazem isso, só fico triste porque acho que temos que ter uma ética no nosso hobby como em todos os segmentos da sociedade. Mas voltando ao sketch do Sr. Júlio Cesar, quero parabeniza-lo pelos brilhantes projetos que ele fez e faz em seus vídeos e publicações de programas Arduino DDS VFO código livre e que funciona de verdade, alias ele responde e ensina em comentários em suas páginas e vídeos. Parabéns Júlio Cesar fico feliz e sei que todos que tem o hobby de radioamador ou PX nas veias ficam felizes com sua contribuição e colaboração. Bem eu fiz algumas modificações mesmo sem tempo, mas não acertei em alguns que estão desabilitados como comentário no esboço, fiz como muitos colegas já fizeram deste e outros programas esboços, coloquei o STEP para 100Khz saindo o de 5Khz, acrescentei mais os de 1.5 Mhz e 2 Mhz sugeridos pelo autor em comentários, coloquei o nome todo STEP sem pontos, pois com pontos no final do nome STEP quando estivesse selecionado em 1.5 Mhz o M ficava atrapalhando o nome RX e TX, mas vocês poderão deixar original TS ou ST, ou desabilitar este comando de 1.5MHz no STEP, e se for colocar os modos AM, LSB, USB no local onde estão IFKHz será usado para mostrar, por isso deixe só a letra K como original,se for colocar os modos AM, LSB, USB. Habilitei a saída do si5351 CLK1 para FI BFO, o que ficou melhor para alguns transceptores AM, Modifiquei frequência para 220 Mhz, o que funcionou perfeitamente. Os modos AM, LSB, USB, não funcionaram bem, pois eu teria de modificar muito o programa em voidsetup() si5351. Em voidloop() void tunegen(), o TX e RX também não funcionou corretamente, pois em TX deveria ter frequência de VFO + ou - FI, e em RX a frequência do display, mas não deu certo, também não tentei muito nesta função, a que eu perdi mais tempo foi para modos AM, LSB, USB em teclas diferentes, assim ele serviria para o Cobra 148 GTL. Se alguém que é programador ou sabe, e quiser mandar um comentário ou e-mail para mim como fazer esta modificação e onde estou errando, por favor eu agradeço muito e vou divulgar o seu nome e modificação, como fiz na publicação do mês passado onde eu me passei e errei em não observar o número 3 em long last_freq[9]; como tinha nome freq[3], eu achei que fosse os modos AM, LSB, USB, mesmo depois de modificar todas ás 9 bandas e com a EEPROM dando erro e ficando instável, eu desabilitei logo a EEPROM sem procurar o problema. Pois a minha intenção era partir para ter os modos AM, LSB, USB, em teclas diferentes, e não conseguir como apublicaçãodo mês08. Foi o colega Sr. Evaldo quem mandou um comentário informando do meu erro, que logo retifiquei todos os sketches da publicação. Neste programa sketch abaixo publicado, notei uma anormalidade que notei ao girar o Encoder até 220 Mhz, ao retornar novamente para KHz o VFO ficou instável ou desencontrados sem função, tive que resetar ou reset para que ele ficasse bom novamente. Não fiz este teste no original, por isso não sei se é só no que modifiquei. Vejam ás fotos como ficou o projeto modificado parcialmente do Sr. Júlio Cesar. Esta publicação poderá ser alterada atualizada posteriormente. Muito obrigado a todos.
Assistam ao vídeo como ficou o DDS VFO com ás modificações.
Abaixo o programa algoritmo esboço que fiz ás simples modificações para nossos projetos RTX em AM ou FM. Não é aconselhável, mas vocês poderão colocar no Cobra 148 GTL ou outros equipamentos SSB, pois ele tem STEP de 1Hz e 10Hz o que dá para clarificar voz mesmo fora de frequência no display em SSB, Vou ver se dá para colocar um potenciômetro como fine ajuste os Hz, assim ficaria melhor.
Selecione e copie todo programa esboço, abra o seu Arduino IDE na área de trabalho, limpe tudo e cole, vá em Arquivo depois Salvar como, renomeei o esboço e escolha a pasta a ser salvo.
#define IF 7800 //Enter your IF frequency, ex: 455 = 455kHz, 10700 = 10.7MHz, 0 = to direct convert receiver or RF generator, + will add and - will subtract IF offfset.
#define FREQ_INIT 26965000 //Enter your initial frequency at startup, ex: 7000000 = 7MHz, 10000000 = 10MHz, 840000 = 840kHz.
#define XT_CAL_F 18000 //Si5351 calibration factor, adjust to get exatcly 10MHz. Increasing this value will decreases the frequency and vice versa.
#define tunestep A0 //Change the pin used by encoder push button if you want.
//#define am 6 //Change the pin used by mode switch if you want.
//#define usb 7 //Change the pin used by mode switch if you want.
//#define lsb 8 //Change the pin used by mode switch if you want.
#define tx_rx 9 //The pin used by RX / TX selector switch, RX = switch open, TX = switch closed to GND. When in TX