Use um Arduino para dar ainda mais realismo a jogos

20 Comentários

Por Luís Ribeiro do IPGuarda para o Pplware

Saiba, em tempo real, várias informações de um jogo de corrida, como a velocidade, rotações por minuto, aceleração, pressão de turbo, nome do carro, entre outras;

Arduino!!! Por alguns conhecido, por uns uma incógnita, e por outros só conhecido pelo nome.

Numa sociedade, todo o indivíduo necessita de comunicar com os restantes. Para tal, desenvolveu e adquiriu, ao longo na sua vida, formas e protocolos de comunicação. Na electrónica e na informática não é menos verdade essa realidade. Cada vez mais a sociedade exige que haja comunicação entre homem/máquina e máquina/máquina. O Arduino permite tudo isso e muito mais….haja ideias.

arduino_03


Mas o que é o Arduino? Arduino é uma plataforma electrónica desenvolvida em Itália, projectada com micro controladores Atmel AVR de 8 bits ou Atmel ARM de 32 bits, e que tinha como objectivo proporcionar a eletrónica mais acessível à comunidade tanto a nível financeiro, como a nível de desenvolvimento de projectos.

A simplificação a nível de desenvolvimento foi conseguida através de uma ferramenta multi-plataforma escrita em Java, denominada de Arduino IDE, que proporciona ao utilizador um IDE de programação para o Arduino, bastante acessível.

A Arduino Board (ou plataforma Arduino), possui diversos tipos de pinos I/O (input/output), podendo estes ser de digital output/input (pinos digitais de input e output), PWM (Pulse Width Modulation), e de analog input (pinos analógicos de input), fornecendo assim a possibilidade de se poder ligar diverso tipo de material eletrónico, tais como LEDs, sensores, motores, ecrãs, entre outros. Está presente uma interface SERIAL ou USB que permite ao Arduino comunicar com outros dispositivos, tal como um computador normal; e também um pino que fornece 5V de tensão elétrica, e que pode ser usado por exemplo para alimentar pequenos servomotores.

Existem várias Boards que variam no micro controlador usado e no número de pinos I/O que possuem. Sendo assim, o preço será diferente dependo destes factores anteriores. Além das Boards existem também controladores denominados de SHIELDs que são possíveis de acoplar a estas Boards, e que podem oferecer uma ligação à rede através de uma porta de rede, ou de wireless; ou em que é possível sermos nós próprios a criar o nosso circuito.

Arduino Ethernet SHIELD

arduino_00

Arduino Proto SHIELD

arduino_01

Existem vários modelos clone do Arduino oficial, que são outras plataformas compatíveis com o Arduino e com o próprio IDE que possui, e que normalmente também são compatíveis com os SHIELDs oficiais.

 

arduino_02

Em suma, o Arduino é uma excelente ferramenta para quem gosta de aliar a área de programação à área da eletrónica, e por um preço bastante acessível.

Vários projectos básicos:

  • Ligar/desligar uma luz
  • Controlar a intensidade de uma luz (recurso a portas PWM)
  • Controlar rotação de um motor
  • Simular a recepção/envio de dados pela porta SERIAL
  • …etc

Estes são apenas alguns projectos para iniciados que o podem ajudar a compreender melhor como funciona e como trabalhar com o Arduino.

FVM –

Mostro agora um projeto ainda “verdinho” que tenho desenvolvido com recurso a um controlador Arduino Duemilanove, que possui 6 pinos analógicos de input, 14 pinos digitais de input/output, sendo que 6 deles fornecem um output PWM, e que tem um preço de 17,50€ – ver aqui.

Neste projecto faço o uso de um jogo de corridas e de uma biblioteca (DLL), para assim ser possível saber em tempo real, várias informações deste jogo, tais como velocidade, rotações por minuto, aceleração, pressão de turbo, nome do carro, entre outras; neste jogo existe um modo que é necessário activar, e que do qual resulta o envio destas informações (informações em tempo real dos dados de simulação do jogo) num pacote UDP para uma determinada interface de rede e para um determinado porto. Através de programação, controlo estas informações e com a ligação SERIAL envio-as para o Arduino, onde depois é observado um determinado OUTPUT (que pode ser luzes a acender, motores a rodar, etc ), que foi programado.

O vídeo que se segue mostra como é possível controlar um conjunto de LEDs, que representam um conta-rotações de automóvel.

O seguinte vídeo, mostra como um servomotor pode simular um manómetro de pressão de turbo.

Esperamos que tenham gostado. Nos próximos tempos teremos mais surpresas, relativamente a esta plataforma de desenvolvimento. Tal como fizemos com o Raspberry PI, lançamos o desafio aos nossos leitores para partilharem connosco os trabalhos que já desenvolveram com esta plataforma.

Comentários

20

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de Nuno Santos

    Excelente Projecto!

    Seria também interessante se pudesses indicar algumas as informações mais relevantes para que possamos reproduzir ou experimentar projectos semelhantes.

    Uma espécie de tutorial para o que não se sentem muito a vontade com interligação entre uma aplicação e o Arduino!

    Cumprimentos

    1. Avatar de Pedro Pinto

      Vou “chatear” o autor para deixar aqui essa informação 🙂

    2. Avatar de Luís Ribeiro
      Luís Ribeiro

      Obrigado.
      Sim posso partilhar essa informação.
      É bastante simples como faço a comunicação da aplicação com o arduino.
      Na aplicação do PC defino uma variavel do tipo porta de série:
      (usando Visual C#)
      SerialPort porta = new SerialPort(“COM4”, 57600);
      porta.Write(dados);-> enviar pela porta de serie a variável dados

      No arduino:
      Serial.read(); -> lê os dados da porta de série do Arduino

      Só temos é de ter atenção que o Arduino só lê 1 byte de cada vez.
      Por isso a variável dados que envio é sempre char, porque essa só ocupa um byte.

      Mas posso partilhar com mais detalhe como faço isso tudo.
      Cumps e mais uma vez obrigado

      1. Avatar de André
        André

        Fiquei curioso sobre a ligação entre a aplicação e o Arduino.

        E possível modificar qualquer aplicação ou só aquelas que permitem exportar dados(um tipo de API)?
        Como se sabe quais os dados de interesse(p.e. distiguir turbo de rotações)?

        Se possível um guia do projecto era interessante.
        Cumps.

        1. Avatar de Nuno Santos

          Exacto, como é que faz a selecção dos dados relevantes dados pelo output do jogo para o input da aplicação?

          Poderia especificar melhor os processos?

          Cumprimentos

      2. Avatar de Luís Ribeiro
        Luís Ribeiro

        Viva
        Como é dito no artigo, eu uso uma biblioteca que ja possui métodos do tipo GET para saber rotações, velocidade…
        Só basta colocar esta DLL como referência no projecto.

        1. Avatar de MrT
          MrT

          Achei o projecto altamente interessante. Eu durante este verão comecei a mexer nos arduinos, tentar perceber como funcionam etc….
          Se pode-ses disponibilizar um tutorial ou algo do género seria genial…
          Eu por exemplo gostava de fazer o mesmo para o dirt 3 e grid 2, por uns leds a assinalar o nº de rotações e um display numero a dar conta do nº da mudança…. ou até ter só um display lcd com o numero exacto de rpm e mudança….

  2. Avatar de carlos
    carlos

    qual é o jogo? existem vários jogos com esta possibilidade de comunicação?

    1. Avatar de Luís Ribeiro
      Luís Ribeiro

      Pode usar o Live for Speed, mas muitos jogos da Codemasters (DIRT 2,3 e F1 2012) também podem ser configurados para tal.

      1. Avatar de Nuno Santos

        Luis se não for muito incómodo porque não fazer uma espécie de guia com algumas dicas para quem não esta ainda muito dentro destes temas?

        Cumps

  3. Avatar de Francisco
    Francisco

    Muito fixe puto, vê-se mesmo que estudaste no I.P.G.
    Continua com essa disposição, para fazeres projectos deste ou de outros tipos.
    Parabéns!

  4. Avatar de João Guerreiro
    João Guerreiro

    Estes sao bons projectos mas existem apps para android com uma finalidade parcida

    1. Avatar de MrT
      MrT

      podes dar o nome de algumas dessas apps?

  5. Avatar de Bruno
    Bruno

    Ola boa noite. Eu precisava de falar com o autor deste projecto, para lhe mostrar um plano para um projecto o qual era importante uma ajuda!

    Pedia a alguém da administração que tem visibilidade do meu email, que o desse ao autor para ele poder entrar em contacto comigo!

    1. Avatar de Luís Ribeiro
      Luís Ribeiro

      Viva
      Podes usar este site que foi por onde comecei
      http://insimdotnet.codeplex.com/

      Cumps

  6. Avatar de MATHEUS SILVA RANGEL
    MATHEUS SILVA RANGEL

    como faço pra pegar informaçoes do jogo e jogar no C#?

    1. Avatar de Luís Ribeiro
      Luís Ribeiro

      Viva
      Podes usar este site que foi por onde comecei
      http://insimdotnet.codeplex.com/
      Lá tens DLL que falo em cima, e também exemplos de como te iniciares

      Para ires buscar as informações do jogo tens de alterar umas linhas no ficheiro de configuração do Live for speed:
      Neste site estão as instruções:
      http://insimdotnet.codeplex.com/wikipage?title=OutSim%20and%20OutGauge

      Cumps

  7. Avatar de ana caroline
    ana caroline

    fiz um projeto semelhante usei o flightgear um simulador de voo que ultiliza um teclado para ser controlado e substitui por um controle joystick de xbox

    e tambem ultilizei as informações e angulos da aeronave e reproduzi em cilindros hidraulicos tudo ultilizando arduino

    ( o projeto foi para o tcc do senai de automação eu e mais uma amiga e o orientador desenvolvemos)

  8. Avatar de Deivid Roza
    Deivid Roza

    É muito simples, o autor simplesmente copio e colo este post, devido a não querer responder as perguntas de como foi feito para dar um get nas informações e um post no arduino, referente a dll eu já estudei algo e acho que consigo desenvolver algo semelhante, se pesquisarem no youtube por tachometer bmw arduino vocês vão ver um exemplo de um painel da bmw sendo utilizado com os valores do jogo grid2 ficou muito real.

    Agora se o autor tiver um pouquinho de ética, posta a origem do post, ou então prova pra galera que foi ele que desenvolveu postando o code 😉

  9. Avatar de cesar augusto
    cesar augusto

    Parabéns pelo projeto!!

    Eu gostaria de saber se pode me tirar uma duvida.

    É o seguinte tenho interesse de fazer um Conta – Giros para usar nos meus jogos de simulação de carro e tudo mais, como Project Cars, f1 entre outros, mais a minha plataforma é o playstation 4, Queria saber como posso fazer a comunicação do playstation 4 com o Arduino, sem a necessidade de algum cabo ligado a algum computador para emulação ou algo do tipo, apenas o arduino e o ps4!!