quinta-feira, 12 de outubro de 2017

Resolvido Link2fs com PMDG ou Wilco ou qualquer outra aeronave fs2004 com Arduino

Olá pessoal

Se você tentou usar o Link2fs com o PMDG deve ter ficado frustado pois o link2fs na sua configuração padrão só funciona com a aeronaves Padrão do simulador. Mas é possível usar o Link2fs com o PMDG ou outra aeronave que você instalou.

Enfim eu consegui e gostaria de compartilhar com vocês como usar o link2fs com o PMDG ou qualquer outra aeronave com o arduino.

Leia tudo com muita atenção que é muito importante para você fazer o seu Home cockpit.

Meu primeiro MCP funcional.





Primeiro Passo - lembre-se que existe uma tecla para cada comando que você quiser fazer no simulador. e se não tiver você pode fazer uma macro.

https://www.youtube.com/watch?v=__of5EEZzvc

Seguindo desse principio utilizaremos o Link2fs na parte de Key. conforme imagem abaixo.


Vejamos o exemplo do PMDG a tecla de atalho para Increase Curso é CTRL+SHIFT+D

Agora vamos usar essa informação para acionarmos qualquer comando do simulador.
ATENÇÃO AGORA!!
Não esqueça que dependendo da Versão do windows que vocês está usando talvez seja necessário executar o Link2fs como administrador e com modo de compatibilidade do Windows Vista.
1 - clicar em ENTER PROGRAMER MODE
2 -  indicar qual o pino do arduino que você quer usar por exemplo o pino 7 do arduino será escrito como 07.
3 - Inserir as teclas referentes para executar o comando


veja que a imagem acima CTRL+SHIFT+D é igual a D070 que é o pino 7 do arduino, então quando eu pressionar o botão ligado no pino 7 eu imprimo D070. Veja no código Abaixo.



agora o código do arduino para encoder e botões que.

Depois é só fazer os ajustes necessários.


// encoder 1
unsigned long currentTime;
unsigned long lastTime;

//encoder 2
unsigned long currentTime1;
unsigned long lastTime1;

//encoder 3
unsigned long currentTime2;
unsigned long lastTime2;


// encoder
const int pinA = 3; // número do pino
const int pinB = 4;


const int pinC = 8;
const int pinD = 9;


const int pinE = 11;
const int pinF = 12;

// Storing the readings

boolean encA;
boolean encB;
boolean lastA = false;

boolean encC;
boolean encD;
boolean lastC = false;

boolean encE;
boolean encF;
boolean lastE = false;

// BOTÃO SPEED
int botao = 2;
int estado_do_botao = 0;
int valor_atual = 1;

// BOTÃO VER SPEED
int botao1 = 10;
int estado_do_botao1 = 0;
int valor_atual1 = 1;

// BOTÃO APP
int botao2 = 7;
int estado_do_botao2 = 0;
int valor_atual2 = 1;

// BOTÃO VNAV
int botao3 = 5;
int estado_do_botao3 = 0;
int valor_atual3 = 1;

// BOTÃO LNAV
int botao4 = 6;
int estado_do_botao4 = 0;
int valor_atual4 = 1;

// BOTÃO CMD A
int botao5 = 13;
int estado_do_botao5 = 0;
int valor_atual5 = 1;


void setup()
       {
             pinMode(pinA, INPUT_PULLUP);
             pinMode(pinB, INPUT_PULLUP);
             pinMode(pinC, INPUT_PULLUP);
             pinMode(pinD, INPUT_PULLUP);
             pinMode(pinE, INPUT_PULLUP);
             pinMode(pinF, INPUT_PULLUP);
             pinMode(botao, INPUT_PULLUP);
             pinMode(botao1, INPUT_PULLUP);
             pinMode(botao2, INPUT_PULLUP);
             pinMode(botao3, INPUT_PULLUP);
             pinMode(botao4, INPUT_PULLUP);
             pinMode(botao5, INPUT_PULLUP);
              currentTime = millis();
              lastTime = currentTime;

              currentTime1 = millis();
              lastTime1 = currentTime1;

              currentTime2 = millis();
              lastTime2 = currentTime2;
             Serial.begin(115200);
       }
      
void loop()
      {
            // BLOCO DO BOTÃO SPEED
            estado_do_botao = digitalRead(botao); //Armazena o Estado do botão.
            if ((estado_do_botao == LOW) && (valor_atual == 1))
                {
                    Serial.println("D020");  //d020 se refere ao pino 2 do arduino usado no link2fs
                    delay(200);
                    valor_atual = 0;
                    estado_do_botao = 1;
                }

            if ((estado_do_botao == LOW) && (valor_atual == 0))
                {
                    Serial.println("D020");
                    delay(200);
                    valor_atual = 1;
                    estado_do_botao = 0;
                }


                
           // BLOCO DO BOTÃO VERTICAL SPEED
            estado_do_botao1 = digitalRead(botao1); //Armazena o Estado do botão.
            if ((estado_do_botao1 == LOW) && (valor_atual1 == 1))
                {
                    Serial.println("D100");
                    delay(200);
                    valor_atual1 = 0;
                    estado_do_botao1 = 1;
                }

            if ((estado_do_botao1 == LOW) && (valor_atual1 == 0))
                {
                    Serial.println("D100");
                    delay(200);
                    valor_atual1 = 1;
                    estado_do_botao1 = 0;
                }

                 // BLOCO DO BOTÃO APP
            estado_do_botao2 = digitalRead(botao2); //Armazena o Estado do botão.
            if ((estado_do_botao2 == LOW) && (valor_atual2 == 1))
                {
                    Serial.println("D070");
                    delay(200);
                    valor_atual2 = 0;
                    estado_do_botao2 = 1;
                }

            if ((estado_do_botao2 == LOW) && (valor_atual2 == 0))
                {
                    Serial.println("D070");
                    delay(200);
                    valor_atual2 = 1;
                    estado_do_botao2 = 0;
                }
  // BLOCO DO BOTÃO VNAV
            estado_do_botao3 = digitalRead(botao3); //Armazena o Estado do botão.
            if ((estado_do_botao3 == LOW) && (valor_atual3 == 1))
                {
                    Serial.println("D060");
                    delay(200);
                    valor_atual3 = 0;
                    estado_do_botao3 = 1;
                }

            if ((estado_do_botao3 == LOW) && (valor_atual3 == 0))
                {
                    Serial.println("D060");
                    delay(200);
                    valor_atual3 = 1;
                    estado_do_botao3 = 0;
                }
                
  // BLOCO DO BOTÃO LNAV
            estado_do_botao4 = digitalRead(botao4); //Armazena o Estado do botão.
            if ((estado_do_botao4 == LOW) && (valor_atual4 == 1))
                {
                    Serial.println("D060");
                    delay(200);
                    valor_atual4 = 0;
                    estado_do_botao4 = 1;
                }

            if ((estado_do_botao4 == LOW) && (valor_atual4 == 0))
                {
                    Serial.println("D060");
                    delay(200);
                    valor_atual4 = 1;
                    estado_do_botao4 = 0;
                }
// BLOCO DO BOTÃO CMD A
            estado_do_botao5 = digitalRead(botao5); //Armazena o Estado do botão.
            if ((estado_do_botao5 == LOW) && (valor_atual5 == 1))
                {
                    Serial.println("D130");
                    delay(200);
                    valor_atual5 = 0;
                    estado_do_botao5 = 1;
                }

            if ((estado_do_botao5 == LOW) && (valor_atual5 == 0))
                {
                    Serial.println("D130");
                    delay(200);
                    valor_atual5 = 1;
                    estado_do_botao5 = 0;
                }

                

// PRIMEIRO BLOCO IAS 3/4 ENCODER
  currentTime = millis();
  if (currentTime >= (lastTime + 5))  {
    encA = digitalRead(pinA);
    encB = digitalRead(pinB);
       if ((!encA) && (lastA)) {
          if (encB){ Serial.println("D030");}else{Serial.println("D040");}
        }
   
    lastA = encA;
    lastTime = currentTime;
  } 


// SEGUNDO BLOCO ALT 8/9 ENCODER
  currentTime1 = millis();
 if (currentTime1 >= (lastTime1 + 5))
  {
    
    encC = digitalRead(pinC);
    encD = digitalRead(pinD);
   
    if ((!encC) && (lastC)){
        if (encD){Serial.println("D080");}else{Serial.println("D090");}
    }
    
    lastC = encC;
    lastTime1 = currentTime1;
  }
  // TERCEIRO BLOCO VS 11/12
  currentTime2 = millis();
 if (currentTime2 >= (lastTime2 + 5))
  {
    
    encE = digitalRead(pinE);
    encF = digitalRead(pinF);
   
    if ((!encE) && (lastE)){
        if (encF){Serial.println("D110");}else{Serial.println("D120");}
    }
    
    lastE = encE;
    lastTime2 = currentTime2;
  }              
}



https://www.youtube.com/watch?v=9_B5ija21-o


sexta-feira, 20 de março de 2015

Criptografia

É de um conjunto de regras que visa codificar a informação de forma que só o emissor e o receptor consiga decifrá-la. Uma explicação sobre o que é criptografia. O termo Criptografia surgiu da fusão das palavras gregas Kryptós e gráphein. O envio e o recebimento de informações sigilosas é uma necessidade antiga, que existe há centenas de anos. E daí a criptografia tornou-se uma ferramenta essencial para que apenas o emissor e o receptor tenham acesso livre às informações. Este artigo tem por objetivo dar uma abordagem introdutória à criptografia, mostrando os aspectos e conceitos mais importantes.

O termo Criptografia surgiu da fusão das palavras gregas "Kryptós" e "gráphein", que significam "oculto" e "escrever", respectivamente. Trata-se de um conjunto de regras que visa codificar a informação de forma que só o emissor e o receptor consiga decifrá-la. Para isso varias técnicas são usadas, e ao passar do tempo modificada, aperfeiçoada e o surgimento de novas outras de maneira que fiquem mais seguras.

Na computação, a técnica usada são a de chaves, as chamadas “CHAVES CRIPTOGRÁFICAS”, Trata-se de um conjunto de bit’s baseado em um algoritmo capaz de codificar e de decodificar informações. Se o receptor da mensagem usar uma chave diferente e incompatível com a do emissor ela não conseguira ter a informação.
    A primeira técnica de criptografia usava apenas um algoritmo de decodificação, assim bastava o receptor de o algoritmo para decifrá-la, porem se um intruso conhecesse esse algoritmo poderia decifrar a informações caso capturá asse os dados criptografados. Ainda existe outro problema imagine:
    Se a pessoa A tivesse que enviar uma informação para a pessoa B, e a pessoa C tivesse que receber uma informação da pessoa A, mas a pessoa C não pode saber a informação passada a pessoa B,mas para a pessoa B e a pessoa C obterem a informação precisaria ter o algoritmo, assim teríamos que ter mais que um algoritmo.
      Com o uso de chaves, um emissor pode usar o mesmo algoritmo (o mesmo método) para vários receptores. Basta que cada um receba uma chave diferente. Além disso, caso um receptor perca ou exponha determinada chave, é possível trocá-la, mantendo-se o mesmo algoritmo.
      Por meio do uso da criptografia você pode:
      • proteger os dados sigilosos armazenados em seu computador, como o seu arquivo de senhas e a sua declaração de Imposto de Renda;
      • criar uma área (partição) específica no seu computador, na qual todas as informações que forem lá gravadas serão automaticamente criptografadas;
      • proteger seus backups contra acesso indevido, principalmente aqueles enviados para áreas de armazenamento externo de mídias;
      • proteger as comunicações realizadas pela Internet, como os e-mails enviados/recebidos e as transações bancárias e comerciais realizadas.

      terça-feira, 17 de março de 2015

      Redes Wireless

      Hoje com a grande demanda de aparelhos portateis como tablets e smarphone. ficou inimaginavel o mundo hoje com redes sem fio. como todos esses equipamento demandam de acesso a internet. a necessidade de se concectar a todo o tempo e em todo lugar é essencial as redes sem fio Wi-Fi.

      Existem alguns padrões:

      802.11b: Frequência entre 2,4 e 2,485 GHZ e Velocidades de 11 Mbps.

      802.11g: Frequência entre 2,4 e 2,485 GHZ e Velocidades de 54 Mbps.

      802.11a: Frequência entre 5,1 e 5,8 GHZ e Velocidades de 54 Mbps.

      802.11n: Frequência entre 2,4 e 5 GHZ e Velocidades de 150 Mbps.

      segunda-feira, 9 de março de 2015

      Redes de computadores é a comunicação entre dois ou mais terminais de computadores, impressoras, repetidores, pontes, roteadores. Seria praticamente difícil de imaginar como seria nossos dias hoje sem a rede de computadores. Agora imagine os benefícios e as vantagens: Compras pela internet, Pagamento de contas, Redes Sociais, WhatsApp.

      Topologia e tamanho das redes

      as redes podem ser divididas das seguintes formas

      Rede Barramento
      A desvantagem desse tipo de rede é que se o cabo se romper várias máquinas ficarão sem comunicação.
      E também a comunicação é de uma máquina de cada vez, enquanto estiver se comunicando na redes as demais devem esperar terminar a comunicação para então iniciar outra comunicação.

      Topologia de Anel

      O próprio nome sugere uma formação em círculo dando origem a um anel físico.

      Topologia de Estrela

      É a topologia mais utilizada hoje, nesse tipo de rede utiliza-se um Switch. A grande vantagem nesse tipo de rede é que se um cabo der problema, apenas aquele computador ficará sem funcionar na rede. E também é uma rede de fácil gerenciamento e Barata.

      Topologia de Mesh

      Muito pouco utilizada por ser bastante cara e dispendioso, todos o computadores estão conectados entre si.



      Agora as Redes quanto ao tamanho:

      As redes podem ser classificadas como LAN. MAN, WAN.

      LAN - Local Area Network - Rede Local tipo um Escritório.

      MAN - Metropolitan Area Network - São redes maiores capazes de chegar a outras cidades, tipo um fábrica com algumas filiais.

      WAN - Wide Area Network - A internet em si é um exemplo são grandes redes capazes de chegar em outros países e até mesmos continentes.

      Serviços de uma Rede

      Existem dois tipos de serviços que podem ser compartilhado em um a rede:

      Pear-to-Pear (Ponto a ponto)
      Cliente servidor (Multiponto)

      Modelo OSI (Open System Interconection)

      Funciona da seguinte forma:


      Camada Aplicação: Funções especializadas (transferência de arquivos, terminal virtual, e-mail).
      Camada Apresentação: Formatação de dados e conversão de caracteres e códigos.
      Camada Sessão: Negociação e estabelecimento de conexão com outro nó.
      Camada Transporte: Meios e métodos para a entrega de dados ponta-a-ponta.
      Camada Rede: Roteamento de pacotes através de uma ou várias redes.
      Camada Enlace ou Link: Detecção e correção de erros introduzidos pelo meio de transmissão.
      Camada Física: Transmissão dos bits através do meio de transmissão.

      TCP/IP

      O TCP/IP (Transmission Control Protocol / Internet Protocol ) é o protocolo de rede mais utilizado atualmente, na verdade o TCP é um conjunto de protocolos que contem uma coleção de serviços e especificações que fornecem e fazem o gerenciamento do acesso ao hardware. Diferente do Modelo OSI que tem sete camadas o Protocolo TCP/IP tem 4 camadas conforme podemos ver abaixo: 
      O protocolo é uma regra para que os hosts possam se comunicar.
      Esse grupo é dividido em quatro camadas: aplicação, transporte, rede e interface. Cada ma delas é responsável pela execução de tarefas distintas. Essa divisão em camadas é uma forma de garantir a integridade dos dados que trafegam pela rede.
      Aplicação
      Essa camada é utilizada pelos programas para enviar e receber informações de outros programas através da rede. Nela, você encontra protocolos como SMTP (para email), FTP (transferência de arquivos) e o famoso HTTP (para navegar na internet). Uma vez que os dados tenham sido processados pela camada de aplicação, eles são enviados para a divisão abaixo.
      Transporte e Rede
      A camada de transporte é responsável por receber os dados enviados pelo grupo acima, verificar a integridade deles e dividi-los em pacotes. Feito isso, as informações são encaminhadas para a camada internet, logo abaixo dela. Na Rede, os dados empacotados são recebidos e anexados ao endereço virtual (IP) do computador remetente e do destinatário. Agora é a vez dos pacotes serem, enfim, enviados pela internet. Para isso, são passados para a camada Interface.

      Como a internet começou?

      A rede mundial de computadores, ou Internet, surgiu em plena Guerra Fria. Criada com objetivos militares, seria uma das formas das forças armadas norte-americanas de manter as comunicações em caso de ataques inimigos que destruíssem os meios convencionais de telecomunicações. Nas décadas de 1970 e 1980, além de ser utilizada para fins militares, a Internet também foi um importante meio de comunicação acadêmico. Estudantes e professores universitários, principalmente dos EUA, trocavam idéias, mensagens e descobertas pelas linhas da rede mundial.


      Em 57 foi criado o conceito de terminais de acesso conectados remotamente ao computador principal e podemos considerar o início do desenvolvimento das redes de computadores, também conhecido como Switch.