sexta-feira, 10 de agosto de 2018

Módulo Multiprotocolo DIY


Olá, nesse post irei mostrar como montar um módulo transmissor multiprotocolo semelhante aos existentes no mercado, utilizando um Arduino e o módulo NRF24L01. Com esse módulo, podemos controlar diversos drones existentes no mercado com protocolos compatíveis por meio da saída PPM de um transmissor mais profissional qualquer, como o  FrSky X9D / X9D Plus / X12S, FLYSKY TH9X, or Turnigy 9XR / 9XR PRO, etc.




O módulo Multiprotocolo foi desenvolvido para que possamos controlar diversos modelos de drones utilizando sempre o mesmo rádio que estamos acostumados, tendo em vista que alguns rádios que acompanham estes drones e mini drones não são muito sensíveis ou não agradam muito aos usuários.

Existem alguns modelos pronto para compra no mercado, caso você não tenha habilidades com fabricação de placas, abaixo estão alguns exemplos :


                   

Para fabricarmos o nosso módulo Multiprotocolo DIY, segue  a lista de componentes:
  • 1x Arduino Promini;
  • 1x Módulo NRF24L01;
  • 1x Regulador de tensão de 3,3V, ex: (LD1117 ou Ams1117);
  • 1x Placa para circuito impresso de face única (55mm x 42mm);
  • 2x Resistores de 10k ohm;
  • 1x Barra de terminal fêmea de 5 sockets.
Ferramentas e outros materiais necessários para fabricação da placa:
  • Ferro de solda;
  • Estanho;
  • Caneta de retroprojetor ou marcador de DVDs ou marcador permanente;
  • Percloreto de ferro para corrosão;
  • Recipiente plástico ou de vidro para realizar a corrosão da placa.
  • Perfurador de placas ou mini drill ou micro retífica com broca de 1mm.
  • Programador USB FTDI para gravar o programa o arduino promini.

Os componentes principais para este projeto são o Arduino e o Módulo NRF24L01.
O Arduino escolhido para este projeto é o Arduino promini (ATMega328p) 16Mhz, devido ao seu tamanho compacto. Caso não tenha o promini, pode ser utilizado o Arduino nano  ou até mesmo o Uno, o fator principal é o tamanho para que possa caber dentro do slot do módulo do rádio controle. 
Iremos utilizar 2 entradas analógicas e 4 digitais do Arduino.


O módulo NRF24L01 Wireless Transceiver é responsável pela comunicação wifi entre dispositivos como Arduino, PIC, Raspberry, BeagleBone e dentre outros microcontroladores. Seu alcance pode chegar a 10 metros em ambientes internos e 50 metros em campo aberto. Ele possui uma antena projetada na própria PCB que opera na frequência de 2,4GHz com velocidade de operação de 2Mbps, modulação GFSK, habilidade de anti-interferência, verificação de erros por CRC, comunicação multi-ponto de 125 canais e controle de fluxo e opera na faixa de tensão de 1,9 a 3,6v. 
Devido a tensão de saída de alguns rádios ser superior a 3,6V, vamos utilizar um regulador de tensão de 3,3V para alimentar o Arduino e o NRF24L01. O regulador escolhido foi um regulador de tensão SMD devido ao seu tamanho .

O nosso rádio controle escolhido para teste é o Radio Turnigy 9x. Ele possui um conector no padrão JR para conexão de módulos. Segue abaixo a pinagem do módulo que iremos nos basear para conexão com nosso módulo multiprotocolo DIY:



Iremos utilizar somente 3 pinos: PPM, +BAT e GND.
O pino principal é o PPM, de onde sai o sinal codificado de todos os canais. Os demais pinos são para a alimentação de nossa placa, +BAT e GND.
Se estiver utilizando outro rádio, procure por esses mesmos pinos em outros modelos de conector ou mesmo na placa do rádio  .

Abaixo está o circuito onde juntamos esses componentes:


Para o layout da placa PCB, deixei somente os pinos que realmente importam para soldar na placa e mais alguns para estruturar os módulos. Segue os arquivos para auxiliar a fazer a placa, feito no Ares (Proteus):

PCB Layout (Ares Proteus/ PDF)

Começaremos pela fabricação da placa, existem diversos métodos para fabricação de PCB, vou mostrar um bem simples que estará ao alcance de qualquer pessoa. Primeiramente vamos imprimir em escala real o layout da placa, recortar e colar com cola branca sobre a PCB.
*Cuidado para não colar na face de cobre ou com o desenho espelhado, colei na face sem cobre.
Depois utilizando uma serra, corte nas extremidades do retângulo limitador da placa, cortando com as medidas de 42x55mm:




Após cortar, fica fácil fazer os furos com uma broca de 1mm, seguindo as marcações da impressão :


Após realizar todos os furos, podemos lavar a placa para remover o papel e a cola para que possamos fazer o desenho das trilhas. É bom passar uma palha de aço levemente sobre a parte cobreada da placa para garantir que não fique nenhum resíduo de cola. Agora com uma outra impressão, vamos posicionar ao lado da nossa placa para facilitar a identificar as ligações e então podemos desenhar as trilhas ligando os pontos utilizando uma caneta marcadora permanente.


 Eu costumo preencher as áreas não utilizadas com tinta para que desgaste menos percloreto de ferro na hora de corroer:


Certifique-se de que não há nenhuma trilha incorreta ou em contato com outra, caso esteja, utilize um arame ou agulha para raspar a tinta, faça a correção e então podemos mergulhar no Percloreto de ferro e realizar a corrosão. Não vou entrar muito em detalhe sobre esse processo, mas não tem mistério, com a mistura correta de percloreto de ferro, é só mergulhar e movimentar cuidadosamente a placa até que toda a parte que não está coberta pela tinta seja corroída. Temos o resultado a seguir:


Antes de soldar os componentes, faça um teste de continuidade simples para verificar possíveis curto circuitos indesejados. Podemos iniciar a solda dos componentes:


Após soldar, faça novamente o teste de continuidade para garantir que não há curto circuito, principalmente no regulador de tensão SMD.
Reparem que possui jumpers na parte de cima da placa debaixo do NRF24L01 e no conector SIL fêmea que é soldado virado para baixo. Fiz o reforço com cola quente para evitar que o conector sofra algum esforço que afete a solda.
Agora que tudo está soldado, é hora de trabalhar na gravação do programa.
O Arduino promini não possui porta USB, por isso é necessário o uso de um gravador FTDI. A imagem abaixo do site www.arduinoecia.com.br mostra como deve ser as conexões para passar o programa para o microcontrolador:


Vamos abrir a IDE do arduino, abrir o programa (nRF24_multipro.ino), selecionar o Arduino correto e a porta COM, compilar e gravar. A única alteração que fiz no código para que funcione no rádio Turnigy 9x com firmware original, foi na ordem dos canais nas linhas de código abaixo:

No link abaixo se encontra o programa já modificado para ser utilizado no Turnigy 9x, lembrando que funcionará em qualquer outro radio que seguir o padrão AETR.

Multipro (Dropbox)

Após gravar o código já podemos testar o módulo. Vamos conectá-lo no slot do módulo.
Se desejarem podemos fazer um case para proteger o nosso módulo, mas isso vai ficar para uma próxima atualização:



Após conectar, ainda não ligue o rádio, a escolha do modelo de seu drone é feita por meio de uma combinação dos sticks no momento da inicialização do rádio. Então para que o seu rádio e seu modelo consigam se comunicar, é preciso se atentar na combinação correta:

Procedimento para fazer o bind:
  1. Desligue o Radio;
  2. Ligue o Drone;
  3. Enquanto segura os sticks na posição correspondente ao modelo de seu drone, ligue o Radio e aguarde o bind reparando nos LEDs do drone e do módulo;
  4. Divirta-se.
A seleção do Protocolo do modelo depende da combinação dos sticks conforme abaixo:
Rudder left + Aileron left = Bayang protocol with Silverware telemetry for OpenTX
Rudder right + Aileron right + Elevator down = EAchine E010, NiHui NH-010, JJRC H36 mini
Rudder right + Aileron right + Elevator up = FQ-777-124 Pocket Drone
Rudder right + Aileron left + Elevator up = CX-10 older red PCB/CX11/CX205/CX30, JXD389/391/393, SH6057/6043/6044/6046/6047, FY326Q7, WLToys v252 Pro/v343, XinXun X28/X30/X33/X39/X40
Rudder right + Aileron left + Elevator down = WLToys V930/931/939/966/977/988
Rudder right + Elevator down = HiSky RXs, HFP80, HCP80/100, FBL70/80/90/100, FF120, HMX120, WLToys v933/944/955
Rudder right + Elevator up = Syma X5C (older model), X2 ...
Rudder right + Aileron right = MJX X600
Rudder right + Aileron left = EAchine H8 mini 3D, JJRC H20/H22
Elevator down + Aileron left = Syma X5C-1/X11/X11C/X12
Elevator down + Aileron right = Attop YD-822/YD-829/YD-829C ...
Elevator up + Aileron right = EAchine H8(C) mini, BayangToys X6/X7/X9, JJRC JJ850, Floureon H101 ...
Elevator up + Aileron left = EAchine H7
Elevator up = WLToys V202/252/272, JXD 385/388, JJRC H6C, Yizhan Tarantula X6 ...
Elevator down = EAchine CG023/CG031/3D X4
Aileron left = Cheerson CX-10 green pcb (Meu modelo de teste neste post)
Aileron right = Cheerson CX-10 blue pcb & some newer red pcb, CX-10A, CX-10C, CX11, CX12, Floureon FX10, JJRC DHD D1

Recursos extras, se o seu modelo suportar:
Channel 5: led light, 3 pos. rate on CX-10 and FQ777-124, H7, inverted flight on H101
Channel 6: flip control
Channel 7: still camera
Channel 8: video camera, pitch trim (FQ777-124)
Channel 9: headless
Channel 10: calibrate Y (V2x2), pitch trim (H7), RTH (H8 mini/H20, FQ777-124), 360deg flip mode (H8 mini 3D/H22)
Channel 11: calibrate X (V2x2), roll trim (H7,FQ777-124)
Channel 12: Reset / Rebind

No meu caso o modelo é um Cherson CX-10 green PCB, então devo ligar o drone, em seguida ligar o rádio segurando o stick do aileron para esquerda.

Segue o vídeo de teste:



Se não estiver funcionando, vamos verificar alguns itens:

  • Canais do rádio invertidos?
  • Ordem dos canais no rádio, AETR?
  • Ordem dos canais no programa, AETR?
  • Limite dos endpoints com 120%  no rádio?
  • Combinação correta de posição do stick ao ligar o rádio?
Assista o Vídeo e se inscreva no meu canal do youtube: 
https://youtu.be/4SUtfplV4wU

Obrigado e até a próxima.

3 comentários:

  1. Tenho um droner teng mini kf609, da para usar com ele???

    ResponderExcluir
  2. Mais uma dúvida, abre tudo no Arduino, ou celeciona um arquivo só? Fui compilar tudo deu erro?

    ResponderExcluir
  3. Muy interesante. Espero poder hacerlo algún día

    ResponderExcluir