Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Construire un quadrant des gaz et une roue de trim personnalisés pour MS Flight Simulator avec Arduino Leonardo et impression 3D

Composants et fournitures

Composant Quantité Notes
Arduino Leonardo 1 Un Leonardo ou Micro convient, jusqu'à 6 contrôles par Arduino
Fil de raccordement 3 3 fils par module
Potentiomètre rotatif 50kΩ 1 1 par module, détails dans la section histoire

Outils et machines nécessaires

Applications et services en ligne

À propos du projet

Introduction

Après avoir mis à niveau mon PC pour faire tourner Microsoft Flight Simulator 2020, j'ai voulu améliorer mes commandes. Un clavier n'offre pas le bon ressenti pour piloter, et je ne pouvais ni dédier l'espace ni le budget pour un cockpit complet ou des commandes achetées.

Construire un quadrant des gaz et une roue de trim personnalisés pour MS Flight Simulator avec Arduino Leonardo et impression 3D

Conception

J'ai conçu une série de commandes en CAO, réalisables avec mes outils, pour approcher le ressenti d'un vrai avion (je n'ai jamais touché aux commandes d'un avion, c'est donc basé sur mon imagination).

J'ai opté pour des leviers simples : gaz, volets, train d'atterrissage, et une roue de trim d'altitude. Je vole principalement sur de petits monomoteurs, donc c'était mon objectif.

La roue de trim a été le plus délicat à concevoir : plusieurs esquisses sur plusieurs jours avant d'obtenir le look et le ressenti souhaités.

Construire un quadrant des gaz et une roue de trim personnalisés pour MS Flight Simulator avec Arduino Leonardo et impression 3D
Construire un quadrant des gaz et une roue de trim personnalisés pour MS Flight Simulator avec Arduino Leonardo et impression 3D
Construire un quadrant des gaz et une roue de trim personnalisés pour MS Flight Simulator avec Arduino Leonardo et impression 3D

Fabrication

Toutes les pièces ont été imprimées en ABS sur mon imprimante UP!, puis peintes et câblées sur un Arduino Leonardo, remplacé ensuite par un Micro. L'objectif : un ensemble plug-and-play, facile à ranger.

Pièces imprimées en 3D

Chaque module levier nécessite :

Chaque module roue nécessite :

Des pièces de boîtier arrière peuvent loger l'Arduino et le câblage.

Conclusion

Une construction très agréable, simple côté code ; le vrai défi était la conception, surtout la roue de trim et l'obtention du bon ressenti.

Code

Quadrant.ino

#include <Joystick.h>
Joystick_ Joystick;

// Valeurs min/max brutes lues sur chaque potentiomètre (à calibrer via le moniteur série)
int axisLimits0[] = {686, 338};
int axisLimits1[] = {345, 695};
int axisLimits2[] = {327, 678};
int axisLimits3[] = {342, 692};
int axisLimits4[] = {0, 1023};
int axisLimits5[] = {0, 1023};

// Activation de chaque axe
bool a0Used = true;
bool a1Used = true;
bool a2Used = true;
bool a3Used = true;
bool a4Used = false;
bool a5Used = false;

// Mode réglage : -1 = normal, 0-5 = affiche la valeur brute et convertie sur le port série
int setting = -1;

void setup() {
  if(a0Used) pinMode(A0, INPUT);
  if(a1Used) pinMode(A1, INPUT);
  if(a2Used) pinMode(A2, INPUT);
  if(a3Used) pinMode(A3, INPUT);
  if(a4Used) pinMode(A4, INPUT);
  if(a5Used) pinMode(A5, INPUT);
  Joystick.begin();
  if(setting >= 0) Serial.begin(9600);
}

void loop() {
  int value = 0, pos = 0;
  if(a0Used){
    value = analogRead(A0);
    pos = translateValue(value, axisLimits0[0], axisLimits0[1]);
    Joystick.setThrottle(pos);
    if(setting == 0) settingPrint(value, pos);
  }
  if(a1Used){
    value = analogRead(A1);
    pos = translateValue(value, axisLimits1[0], axisLimits1[1]);
    Joystick.setRxAxis(pos);
    if(setting == 1) settingPrint(value, pos);
  }
  if(a2Used){
    value = analogRead(A2);
    pos = translateValue(value, axisLimits2[0], axisLimits2[1]);
    Joystick.setRyAxis(pos);
    if(setting == 2) settingPrint(value, pos);
  }
  if(a3Used){
    value = analogRead(A3);
    pos = translateValue(value, axisLimits3[0], axisLimits3[1]);
    Joystick.setRzAxis(pos);
    if(setting == 3) settingPrint(value, pos);
  }
  if(a4Used){
    value = analogRead(A4);
    pos = translateValue(value, axisLimits4[0], axisLimits4[1]);
    Joystick.setXAxis(pos);
    if(setting == 4) settingPrint(value, pos);
  }
  if(a5Used){
    value = analogRead(A5);
    pos = translateValue(value, axisLimits5[0], axisLimits5[1]);
    Joystick.setYAxis(pos);
    if(setting == 5) settingPrint(value, pos);
  }
  delay(5);
}

// Convertit une valeur brute en plage 0-1023
int translateValue(int v, int f1, int f2){
  int result = 0, start = 0;
  float range = 0;
  if(f1 < f2){ start = f1; range = f2 - f1; }
  else{ start = f2; range = f1 - f2; }
  result = (v - start) * (1023 / range);
  if(result < 0) result = 0;
  if(result > 1023) result = 1023;
  return result;
}

void settingPrint(int value, int pos){
  Serial.print(value);
  Serial.print(" ");
  Serial.println(pos);
}

Pièces personnalisées et boîtiers

Fichier STEP contenant toutes les pièces : released_u3k8QjPXzJ.stp

Schémas

Pour ajouter plus de commandes, connectez 5V et GND et utilisez les broches A1 à A5.

Construire un quadrant des gaz et une roue de trim personnalisés pour MS Flight Simulator avec Arduino Leonardo et impression 3D

Processus de fabrication

  1. Créer des animations et jeux sur LCD avec Arduino UNO
  2. Construire un Voltmètre Intelligent avec Arduino et Smartphone – Projet DIY Facile
  3. Enregistreur de Température et Humidité Arduino avec DHT11 et Shield Ethernet
  4. Construisez une molette de trim d'élévateur compacte pour FlightGear avec Arduino Nano
  5. Contrôle Arduino UNO depuis Python 3 – Communication Série et Démo LED
  6. Automates Cellulaires Temps Réel sur Arduino avec Écran OLED 128x64
  7. Construire une Radio FM Compacte avec Arduino Nano et RDA5807M
  8. Système de pointage RFID temps réel avec Arduino et Google Sheets
  9. Équilibrage vs géométrie des roues : ce qu'il faut savoir