Projeto: X-Plane Arduino


Neste tópico vou apresentar um projeto para demonstrar como utilizamos o Arduino para incrementarmos o nosso cockpit.
No Arduino utilizaremos a comunicação serial via USB e no PC, onde está rodando o X-Plane, utilizaremos a PythonInterface, um plugin que permite a utilização de scripts em Python.
Este será um projeto simples, basicamente utilizaremos um servo motor para mostrar a posição do Flap da aeronave. Mas poderíamos controlar qualquer componente, como telas de LCDs, Display de segmentos, LEDs, Motores de passo, etc. Para não estender muito neste tópico explicando o que faz cada linha do programa, adicionei bastante comentários no próprio código. Com isso, serei mais prático e farei um passo a passo resumido de como colocar o projeto para funcionar.

Para isso precisaremos dos seguintes componentes:

  • 01 Placa Arduino

Arduino

 

  • 01 Micro-Servo motor

Servo

 

  • 01 cabo USB

E precisaremos dos seguintes softwares:
Python 2.7
PySerial
Python Interface
Arduino

É claro, precisaremos do código do projeto:

PI_XP_Flap

O passo a passo é o seguinte:

  1. Instale o software do Arduino, carregue este código “XP_Flap.ino”, conecte o placa placa do Arduino via USB, faça o upload do código para a placa. Desconecte o cabo USB. Faça a conexão do Servo Motor, conforme esquema abaixo:

Conexão_XPFlap

 

  • Estejam atentos, o servo motor consome uma certa corrente, algo em torno de 500mA, e alguns computadores como Notebooks, por terem corrente limitada, nem sempre podem fornecer a energia necessária para o funcionamento adequado deste componente. Caso necessário, utilize uma fonte externa no Arduino. Não se preocupem, podem utilizar a fonte e o cabo USB ao mesmo tempo. O Arduino automaticamente seleciona a fonte externa como fonte primária de energia.

 

  1. Instale o Python 2.7, dependendo da versão do X-Plane que utiliza, 32 ou 64 bits, escolha a versão adequada do Python.
  2. Baixe e instale a biblioteca serial para o Python.
  3. Baixe a PythonInterface e descompacte dentro da pasta “../X-Plane/Resources/Plugins/”
  4. dentro de “../X-Plane/Resources/Plugins/”, crie uma pasta chamada de PythonScrips.
  5. Baixe o código “PI_XP_Flap.py” e jogue dentro da pasta “../X-Plane/Resources/Plugins/PythonScripts”
  • Caso o Arduino esteja configurado para uma porta diferente da “COM3” Abra o arquivo com algum editor de texto (WordPad, NotePad, etc). Procure a linha “self.ser = serial.Serial(‘COM3’, 115200, timeout = 12)” e modifique a informação de “COM3” para a porta configurada para o Arduino. Estejam atentos com a identação, aquele espaços em branco no início de algumas linhas. Qualquer modificação afeta a estrutura do código.

Pronto, agora conecte o cabo USB, inicie o simulador e teste o Flap.

  • Segue vídeo com a demonstração:

Mesmo com os comentários no código, creio que existirão muitas dúvidas. Até mesmo com as coisas mais simples, não hesitem em comentar, pois assim abordarei mais detalhadamente alguns pontos do projetos.

Bons voos.


Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

21 pensamentos em “Projeto: X-Plane Arduino

  • Rafael Atencio

    Hola! Soy de venezuela y estoy haciendo un proyecto como el tuyo solo que en vez de mover los flaps, mueva el roll y el pitch con el servo motor, no se como hacerlo me ayudarias con el codigo en python y en el arduino? Gracias.

      • Rafael Atencio

        No puedo hacer conexion entre el xplane y el arduino a traves del puerto serial, hice los pasos que haces, pero no me da conexion, sera que me puedes enviar al correo paso por paso de como hacer la conexion, sera que me puedes ayudar con el codigo de arduino para obtener los parametros de roll y pitch desde xplane y enviar a esos datos a dos servo-motor?

        Agradecido totalmente.

      • Rafael Atencio

        Hola de nuevo, ya hice la conexion, puedes ayudarme con el codigo de arduino y de python para poder leer los datos en xplane de “Roll” y “Pitch” y enviarlos al arduino?, para que el arduino pueda mover con estos dos valores dos servomotores? Te agradeceria mucho la ayuda. Feliz Dia.

    • Rafael Atencio

      Perdon amigo necesito el codigo arduino y el codigo python para mover dos motores paso a paso para simular los valores de “roll” y “picth”.

  • Soran

    Hello,

    Well done for your project, I am very interested in this pythoninterface application for build a control module with Arduino, but I would like to know if it works in INPUT and OUTPUT ? is the application use the UDP protocol ?

    thank you and congratulations for your work!

    Best regards and happy new year (from France) 🙂

    S.

    • Joz Autor do post

      Happy New Year too :-D. The application uses the serial communication via USB. And it can be used both INPUT / OUTPUT, but in my projects use only for OUTPUT. From the X-Plane 10.3, a serial interface was created (Config -> data input / output -> Date ref out), eliminating the use of PythonInterface.

      • Soran

        Hi,

        I made the test with the arduino and a servo motor , that’s work very well !!

        You tell about a serial interface since xplane 10.3 , i have the last version but i don’t found it . Is it in the xplane folder ?

        Regards

      • Soran

        Hello Joz,

        I have a problem with my post, it’s gone .. 🙁

        I wanted to know where we can find this “serial interface”

        (Config -> data input / output -> Date ref out) ???

        Thanks for help.

        Regards

          • Soran

            Hello,

            Thank you for the answer.

            My son mastered a little bit python and help me with my project.

            With your example we managed to write code to display data on a map arduino, LED and I2C LCD display. This works, but he does not know how to write code for INPUT functions (python with arduino). Can you give me an example or are you able to write a code for a simple push button?

            If this interests you, I can give you a feed back about my project.

            I think it is simpler to use my email address

            Again thank you for your help.

            Best regards.

            S.

            PS : For now I prefer to use the pythoninterface.

  • Joao Victor

    show, tenho uma cadeira tipo racing para meu cockipt de aviao, estou pretendo colocá-la em cima de 4 macacos eletricos, voce acha q daria para fazer uma configuração atraves deste conceito dos servos para acionar os atuadores quando eu fizesse curvas no x plane ou FS. A ideia eh fazer motion caseiro… obrigado

    • Joz Autor do post

      A ideia do macaco elétrico é boa e dá sim para adaptar o projeto. Os problemas dos macacos elétricos são a baixa velocidade e o fato de esquentarem muito ao utilizar continuamente.

      • Joao Victor

        Que bacana que alguém compartiha da minha ideia.. Eles não são caros, cerca de R$270,00 reais cada, precisaria de uns 04. Existem tbm uns atuadores um pouco mais profissionais…Vou atrás disso.

  • adrian

    Thanks a lot friend, thank you for your work I managed to operate the flaps. I’m really happy !!! Thanks so much. Explain to me please how to make lapels of the movement? to me it works in reverse. Thanks so much.

  • Oswaldo

    Olá. Estou com um projeto pronto de um simulador de vôo usando o xplane… Porém a interface do arduino é feita através de um software Ardsimx… Que funciona bem, porém não é código aberto… Quais as possibilidades com relação a todos os comandos da aeronave? É possível editar um a um?

    • Joz Autor do post

      O x-plane tem bastante flexibilidade em relação a isso. Além de ter uma grande quantidade de comandos, você pode controlar outros comandos através dos datarefs. E mesmo que você desenvolva uma função específica para sua aeronave, você pode atribuir um novo dataref a ela.

  • Kalel Santana

    Olá Joz, tudo tranquilo?
    Então, eu sou aluno de PP e agora vou montar um cockpit do C182 e minha dúvida é a seguinte.

    Dessa forma que você está apresentando, eu consigo enviar comandos básicos pro avião como por exemplo: Luzes, Flap, potencia, passo, mistura, controle do giro direcional, altímetro, controles primários e secundários (aileron, leme e pronfundor e compensador).
    e também enviar dados e receber em uma tela como por exemplo os avionicos.

    Eu iria fazer no FSX pois foi uma forma de como eu havia encontrado para fazer isso e hoje eu encontrei seu site e achei ótimo pq minha intenção mesmo era usar o X-Plane.
    Se puder me enviar por e-mail eu agradeço.

    Bom, grato desde já.
    Att
    Kalel Santana

    • Joz Autor do post

      Enviar para o simulador você pode usar os comandos do joystick.
      Sim, você receber (e enviar também) dados dos aviônicos. No post tem os programas necessários e o código, precisando de mais é só falar.

      Bons voos.

  • Emerson

    Olá Joz. Parabéns pelo projeto e por compartilhar.
    Eu uso o FSX e FSX Steam Edition. Poderia me informar o que devo fazer/modificar o código para que funcione também no “vovô” FSX?
    Acredito que preciso do simconnect e/ou FSUIPC.

    Agradeço se puder ajudar.

    Abraço.