segunda-feira, 31 de julho de 2017

Central DCC++ com Arduino

Neste artigo vamos apresentar como montar um Central DCC utilizando o Arduino UNO e a Shield Motor R3 para controlar pelo Computador ou Celular suas locomotivas DCC





Como funciona:


a) No computador temos o software JMRI instalado, nele teremos os Throttles (Controles) para comandar nossas locomotivas DCC;
b) O computador enviar os comandos do JMRI para o Arduino com DCC++ pelo cabo USB;
c) O Arduino com DCC++ codifica os comandos e gera o sinal elétrico DCC com o Driver de Potencia (Shield Motor R3) conectado aos trilhos;





Material Necessário:
a) 1x Placa Arduino UNO;
b) 1x Modulo Shield Motor R3;
c) 2x Pedaços de fio para jumper, um com 2cm e outro com 5 cm;
d) 1x Fonte de Alimentação 12V a 15V x 2A (Recomendado 15V) ;





Softwares Necessários:
a) Sketch DCC++ (Código para o Arduino);
b) IDE Arduino (Necessário programar a placa Arduino com o sketch DCC++);
c) Software JMRI (Programa que iremos usar no computador para controlar as Locomotivas);



1. Preparando o Arduino UNO com a Shield Motor R3

1.1. A primeira coisa que precisa ser feita é desligar (cortar para ser mais exato) na parte inferior da Shield Motor R3 o jumper Vin Conect. Você pode fazer isso usando um estilete ou bisturi, se tiver um multímetro confirme que o jumper foi aberto.




Por padrão a Shield Motor R3 alimenta o Arduino pelo pino "Vin", porém isso não é recomendado quando utilizamos fontes acima de 12V pois existe o risco de danificar a placa do Arduino. Como vamos utilizar ele conectado a porta USB do computador sua alimentação será feita por esse cabo sem a necessidade de uma segunda fonte para o Arduino.


1.2. Agora pode "espetar" a Shield sobre o Arduino. Para isso alinhe seus pinos aos conectores do Arduino e pressione para encaixar:






1.3. Depois vamos conectar os jumpers na Shield:
- Pino 12 com Pino 10
- Pino 13 com Pino 5







Para gerar os sinal DCC o programa DCC++ utiliza alguns recursos de tempo do microcontrolador que obrigatoriamente controlam os pinos 10 e 5 do Arduino, já a Shield Motor R3 tem fixo os pinos 12 e 13 para Sinal de Direção. Estes jumpers interligam esses pinos. 

Agora seu Arduino está "fisicamente" pronto!



2. Instalando o Sketch DCC++ no Arduino

Para transferir o Sketch do DCC++ para a placa Arduino você precisa ter instalado no seu computador a IDE do Arduino. Se você ainda não ele instalado, siga o passo-a-passo deste Artigo: Instalação da IDE do Arduino.

2.1. Download do código do DCC: 


2.1.2. Na página clique no botão "Clone or Download" e em seguida no botão "Download ZIP":



2.1.3. Quando o download estiver concluído abra o arquivo. No programa ZIP clique na opção "Extrair Para" ou "Extract To". 

Na janela que vai abrir, selecione a pasta "Sketch Arduino" (Ver Artigo Instalação da IDE do Arduino) e clique em "OK":


2.1.4. Acesse a pasta "Sketch Arduino"  em Documentos no seu computador. Você vai encontrar lá a pasta "BaseStation-master" onde foi salvo o código do DCC++:

Com os arquivos em seu computador, vamos transferir o Sketch para o Arduino.


2.2. Gravando o Sketch do DCC++ no Arduino

2.2.1.Abra o IDE do Arduino;

2.2.2. Vá no menu "Arquivo" / "Abrir":




2.2.3. Localize a pasta "Sketch Arduino", dentro dela de um clique duplo sobre a pasta "BaseStation-master".

Nos arquivos exibidos, selecione a pasta "DCCpp_Uno" e de um clique duplo sobre ela para exibir os arquivos:



2.2.4. Na lista de arquivos da pasta "DCCpp_Uno" localize o arquivo "DCCpp_Uno.ino". Dependendo da versão do seu IDE ele irá aparecer com o ícone do Arduino.

Clique uma vez sobre esse arquivo e clique no botão "Abrir":


2.2.5. Será aberto no IDE o código do DCC++, observe que ele tem várias "abas" com diferentes partes do código. Não se preocupe com o código, não vamos alterar nada nele:


2.2.6. Clique no ícone "Carregar" para transferir o Sketch para sua placa do Arduíno.


2.2.7. Quando a transferência estiver concluída ira aparecer na parte de baixo do IDE a mensagem "Carregado":



2.2.8. Abra o Monitor Serial da IDE e verifique se o Arduino está respondendo:


Agora o Arduino está pronto com o DCC++


3. Instalando o JMRI

3.1. Como o nome já diz, o JMRI é desenvolvido em Java e para poder executa-lo, vamos precisar ter instalado o Runtime do Java. 

Acesse a página oficial https://www.java.com/pt_BR/ e faça o download do Java compatível com seu sistema operacional:


Download Java

Depois de concluir o download execute o instalador seguindo as orientações do aplicativo. 

Preste atenção nas mensagens que algumas vezes trazem “propaganda” embutida no instalador, sugerindo de alteração da pagina inicial do navegador para o Yahoo e coisas assim, se não quiser essas modificações é só desmarcar estas opções.


3.2. Como o Java instalado vai baixar o JMRI do seu site oficial para instalação. 

Acesso o site: http://jmri.org/

Na página principal tem a ultima versão disponível do JMRI para Download. Procure pela versão de Produção “Production Release”:
Página do JMRI


3.3. Escolha a versão compatível com seu sistema operacional e clique no link para fazer o download:


Downloads Disponíveis

3.4. Com o Download concluído execute a instalação. Ela é bem simples e basta seguir as telas clicando em “Next” até a instalação começar:



3.5. Com a instalação concluída você terá os atalhos no seu desktop para executar o JMRI:


3.6. Com seu Arduino conectado ao computador, execute o PanelPro, será apresentada uma tela para configurar a conexão entre o computador e a sua ferrovia:

3.6.1. Na caixa System Manufacturer selecione “DCC++”:

3.6.2. Na opção System Connection selecione “DCC++ Serial Port”

3.6.3. Na opção Settings selecione a porta serial em que o Arduino está conectado (No meu caso COM3) e clique no botão “Salvar”  na parte de baixo a esquerda da tela.



Pronto, agora o JMRI está configurado e sua central DCC++ está pronta para ser utilizada.


4.  Controlando Seus Trens com JMRI

4.1. Conecte a fonte de alimentação de 12V/15V na Shield Motor R3 FONTE  15V:  Negativo no pino GND e o positivo no pino VIN.  Ligue os trilhos da maquete aos pinos A+ e A-. Nos pinos B+ e B- você pode conectar o trilho que será utilizado para programação de decoders.
Conexões da Fonte e dos Trilhos

4.2. Execute o aplicativo PanelPro do JMRI e abra a opção Tools => Throttles => New Throttles

4.3. Na parte superior da tela tem um botão para ligar e desligar o DCC++. Clique nele para acionar o DCC++

Neste momento os quatro Leds da Shield Motor próximo as saídas A+/A-/B+/B- devem ficar acessos indicando que o energia está sendo enviada aos trilhos.

4.4. Com o DCC++ ativo (Botão Verde), informe na parte de baixo em  “Panel Address” o endereço da sua locomotiva e clique em “Set”.

4.5. Agora é só usar os controles! Para trocar de locomotiva clique em “Release” no “Panel Address”


5. Controlando Seus Trens com Celular

Atenção: Para utilizar esse recurso do JMRI seu computador e seu Celular estejam conectados a mesma rede WIFI

5.1. Baixe no seu celular o aplicativo Engine Driver (Android) ou WiThrottle Lite (iOS):

Engine Driver (Android)


WiThrottle Lite (iOS)


5.2. No PanelPro inicie o serviço WiThrottle na opção Tools => Throttles => Start WiThrottle Server

5.3. Se o DCC++ não estiver ativo (Ícone Vermelho) inicie o DCC++

4.4. Abra no seu celular o app instalado (Exemplo Android Engine Driver):

4.5. Na primeira tela do aplicativo serão exibidas os servidores localizados na sua rede WiFI, clique na servidor localizado em “Discovered Servers”:


Observe que quando conectar o celular, no microcomputador que será exibida a conexão do seu celular no WiThrottle Server:

5.6. No celular clique no botão “Press to select” para informar o endereço da locomotiva:

4.7. Informe o endereço da locomotiva e clique em “Acquire”:

4.8. Pronto.. agora você pode controlar suas locomotivas pelo Celular:




Para conhecer mais:

Seguem algumas sugestões de vídeos para conhecer mais sobre o JMRI:

JMRI - Controlando locomotivas pelo celular
Fernando Franco

JMRI - Utilizando o DecoderPRO para programar a locomotiva
Fernando Franco


Bom amigo ferromodelista, se tiverem dúvidas entre em contato que será um prazer ajuda-los!!!

13 comentários:

  1. how to conect with MONSTER MOTOR SHIELD VNH2SP30 ?

    ResponderExcluir
  2. Hi, Shield VNH2SP30 is same Red Shield L298 with circuit to invert signal of Input B (one transistor / two resistor) :

    https://4.bp.blogspot.com/-FMl0pUx0CAI/WX4Oln8eAWI/AAAAAAAAEik/sk9ZdP3uM_YpCpMnnBG1YLRmQH_gHOYLACLcBGAs/s1600/CIrAuxiliarL298.png

    ResponderExcluir
  3. OK that's great...
    is there any track/line to cut or solder ?
    (like pict https://3.bp.blogspot.com/-AclhlDshoSo/WX_dU8FJ6YI/AAAAAAAAEsk/SGaV12GJP9UrzzfltHNse5OwJZwt5rhYQCEwYBhgL/s1600/L298_v1_CorteBaixo1.jpg)

    ResponderExcluir
    Respostas
    1. Cut , isolation L298N pins 1 and 15.
      On modules L298N this pins is conect on GND. Its necessary cut this conection.
      In next step pins 1 e 15 are conect in sensor current circuit (LM358 + Resistor 0.15R + Resistor 10K+Resistor 1K ).

      Excluir
  4. Boa tarde, uma duvida, é possivel usar uma fonte de computador com mais de 9 Amperes para a Shield, isso não causa dano ? Vlw Abraço.

    ResponderExcluir
    Respostas
    1. Boa noite Quinho,

      Pode usar sem problemas, a shield só vai fornecer corrente até o seu limite (+/-1.2A).
      Quando o consumo passa desse limite o código do DCC++ desliga a alimentação.

      Abraços,

      Clederson

      Excluir
  5. Este comentário foi removido pelo autor.

    ResponderExcluir
  6. Boa noite meu amigo, tudo bem?
    Antes de mais nada, gostaria de parabenizar e agradecer pelo trabalho de compartilhar essas informações conosco, são de grande valia. Obrigado.
    Eu segui todos os passos porém eu comprei um Motor Shield da Robocore

    https://www.robocore.net/shields-arduino/arduino-shield-motor-driver-2x2a/

    Só que estou achando que é incomparável, apesar de ser muito bem feito.
    Já passou ou conhece alguém que passou por esse problema?
    A Arduino provavelmente não é pois tenho 2 Uno e 2 Mega e em todos apresenta o mesmo problema.

    Obrigado, abraços

    Giuliano
    giuliano.luz@gmail.com

    ResponderExcluir
  7. Boa noite amigo, parabéns pelo seu Blog, muito bom , tem ajudado muita gente inclusive eu que consegui graças a vc montar meu DCC++ que estava funcionando bem até a semana passada, porém quando liguei na segunda feira percebi que não estava acendendo os 4 leds do motor shield, só está acendendo os leds do Prog. O que vai para a linha "A" não acende mais e não alimenta os trilhos, já fiz de tudo, inclusive comprei outro Arduino e o motor shield novos e montei outro , mas o problema continua o mesmo , mesmo com as placas novas, se puder ficaria muito grato pela ajuda para solucionar esse caso, aguardo seu retorno obrigado pela atenção.

    ResponderExcluir
  8. Apenas hoje 18/01/2022 após 5 anos do seu Blog 2017 tive conhecimento desta possibilidade de fazer usar DCC++ com motor shild R3. Alias no blog é sensacional muito bem explicativo, porem faço a seguinte pergunta: como a tecnologia corre a passos largos, posso seguir hoje o passo a passo usando os mesmo elementos ou ja tem novas versões. Fico deste já grato aguardando a sus resposta

    ResponderExcluir
  9. OLA. Muito informativo o blog. Parabéns.Gostaria de saber se posso usar uma placa de potência L298N no lugar da motor shield e como ficaria as ligações? Se sim como ficariam as linhas de código do arduino, alteraria alguma coisa?

    ResponderExcluir
  10. Bom dia amigo tudo bem fiz todo processo passo a passo mais , minha MOTOR SHIELD dos 4 leds um não esta acendendo sabe me dizer o que devo fazer ? é o segundo led que fica próximo a saída dos fios da configuração dos trilhos .

    ResponderExcluir
  11. Boa tarde amigo. Eu segui seu projeto, mas usando outra shield, a L298P. Não consegui encontrar a shield que vc usou a venda no brasil, mas pretendo importá-lá. O problema é que a medição da anergia está em torno de 6 V. A locomotiva só faz uns pequenos barulhos mas não responde. acredito que deveria passar 12 V nos trilhos, certo? vc consegue me ajudar a descobrir o que pode ser? no canal de programação, está passando em torno de 2 V. estou usando uma fonte de 12 V, 2 A.

    Muito obrigado pela ajuda. Graças a você, estou podendo ter controlador DCC sem vender um rim..kkk

    Valeu.

    ResponderExcluir