Page 3 sur 5

Re: projet Quadcity challenger/générique

MessagePosté: Mar 29 Avr 2014 08:33
de A320 hérétique
Bonjour,
je suis très intéressé par tes travaux sur la Teensy, j'avais pour ma part acheté une Arduino pour interfacer des panels à FSX, mais le projet n'a pas évolué, juste quelques tests basiques entre la carte et inter/led, mais je n'avais pas établi la liaison avec FSX.
Je crois que la Teensy est compatible Arduino, quelle chaine logiciel as-tu mis en oeuvre pour aller de la carte à FSX ?
Michel

Re: projet Quadcity challenger/générique

MessagePosté: Mar 29 Avr 2014 16:50
de rockclodbuster
salut Michel
dessoler mais je suis avec x-plane 9, le fabriquant à créer un plugin pour récupérer les donner du simu.

par contre le teensy, peux être programmer pour apparaître comme un joystick de 6 axe, 32 bouton et un hat (ça ressemble a un leo BU0836)http://pjrc.com/teensy/td_joystick.html

j'ai fait une petite recherche pour voir ce qui existe pour FSX, quelque lien (en anglais malheureusement):
https://code.google.com/p/arduino-fs/
http://stavroskcy.blogspot.ca/2011/12/connecting-arduino-to-flight-simulator.html
http://www.jimspage.co.nz/arduino_keys_beta.htm
http://forum.arduino.cc/index.php?topic=40208.0
http://forum.arduino.cc/index.php?topic=97357.0

j'espere que j'ai pu d'aider

Re: projet Quadcity challenger/générique

MessagePosté: Mar 29 Avr 2014 17:58
de A320 hérétique
Merçi pour tes recherches, je n'avais pas regardé depuis quelques temps, et il y a eu manifestement des progrès depuis !
Je vais me replonger là-dedans ...
Michel

Re: projet Quadcity challenger/générique

MessagePosté: Mer 30 Avr 2014 17:47
de rockclodbuster
bonsoir a tous
une petite mise à jour de mon cockpit. j'ai pu tester le montage de mes servos. après quelque tâtonnement principalement lier au protocole de communication du contrôleur de servo, j'ai réussi à les faire bouger en synchronie avec le simu.

ils sont monter sur une plaque de plastique pour les test, présenter dans ce petit video:


le plus dur, c'est de trouver les bon dataref (le nom des "offset" dans x-plane) pour chaque servo.

le code arduino ressemble a ceci:
Code: Tout sélectionner
#include <LiquidCrystal.h>

LiquidCrystal lcd(10,9,6,5,4,3);

// X-Plane objects
FlightSimInteger Avionic_power;
FlightSimInteger ComFrequencyHz;
FlightSimInteger Flap;
FlightSimInteger Engine_RPM1;
FlightSimInteger Engine_RPM2;
FlightSimInteger Oil_Temp;
FlightSimInteger Oil_Pressure1;
FlightSimInteger Oil_Pressure2;
FlightSimInteger Gauge_ASI;
FlightSimInteger Gauge_VSI;
FlightSimInteger Gauge_EGT1;
FlightSimInteger Gauge_EGT2;

// setup runs once, when Teensy boots.
//
void setup()
{
  // initialize all hardware
  Serial1.begin(4800);
  //setup serial servo controller
  for(int i=0;i<8;i++)
  {
    Serial1.print(128,BYTE);  //start
    Serial1.print(1,BYTE);    //device ID
    Serial1.print(0,BYTE);    //command; set parameters
    Serial1.print(i,BYTE);    //servo num: servo i
    Serial1.print(79,BYTE);   // servoi on, fwd, range 90
  }
  lcd.begin(16,2);
  lcd.print("COM1:");
  lcd.setCursor(0, 1);
  lcd.print("Flap:");

  // configure the X-Plane variables
  ComFrequencyHz = XPlaneRef("sim/cockpit2/radios/actuators/com1_frequency_hz");
  ComFrequencyHz.onChange(update_lcd);  // update the LCD when X-Plane changes
  Flap = XPlaneRef("sim/flightmodel2/wing/flap1_deg");
  Flap.onChange(update_lcd2);
  Engine_RPM1 = XPlaneRef("sim/cockpit2/engine/indicators/engine_speed_rpm[0]");
  Engine_RPM1.onChange(update_RPM1);
  Oil_Pressure1 = XPlaneRef("sim/flightmodel/engine/ENGN_oil_press_psi[0]");
  Oil_Pressure1.onChange(update_Pressure1);
  Gauge_EGT1 = XPlaneRef("sim/cockpit2/engine/indicators/EGT_deg_C[0]");
  Gauge_EGT1.onChange(update_EGT1);
  Engine_RPM2 = XPlaneRef("sim/cockpit2/engine/indicators/engine_speed_rpm[1]");
  Engine_RPM2.onChange(update_RPM2);
  Oil_Pressure2 = XPlaneRef("sim/flightmodel/engine/ENGN_oil_press_psi[1]");
  Oil_Pressure2.onChange(update_Pressure2);
  Gauge_EGT2 = XPlaneRef("sim/cockpit2/engine/indicators/EGT_deg_C[1]");
  Gauge_EGT2.onChange(update_EGT2);
  Oil_Temp = XPlaneRef("sim/flightmodel/engine/ENGN_oil_temp_c[0]");
  Oil_Temp.onChange(update_Temp);
  Gauge_ASI = XPlaneRef("sim/cockpit2/gauges/indicators/airspeed_kts_pilot");
  Gauge_ASI.onChange(update_ASI);
  Gauge_VSI = XPlaneRef("sim/cockpit2/gauges/indicators/vvi_fpm_pilot");
  Gauge_VSI.onChange(update_VSI);
  Avionic_power = XPlaneRef("sim/cockpit2/electrical/battery_on");
  Avionic_power.onChange(upgrade_avionic);
}

// loop runs repetitively, as long as Teensy is powered up
//
void loop()
{
  // normally the first step in loop() should update from X-Plane
  FlightSim.update();

  if (FlightSim.isEnabled())
  {
    lcd.display();
  }
  else
  {
    lcd.noDisplay();
  }
}

// write a number onto the LCD, first row, starting at 6th column
void update_lcd(long val)
{
  lcd.setCursor(6, 0);
  lcd.print(val);
  lcd.print("  ");
}

void update_lcd2(long val)
{
  lcd.setCursor(7, 1);
  lcd.print(val);
  lcd.print("  ");
}

void update_RPM1(long val)
{
  int RPM = map(val,0,7000,127,0);
  Serial1.print(128,BYTE);   //start
  Serial1.print(1,BYTE);      //device ID
  Serial1.print(2,BYTE);      //command: set position
  Serial1.print(0,BYTE);    //servo num: servo 0
  Serial1.write(RPM);   // servo0 position
}

void update_Pressure1(long val)
{
  int PSI = map(val,0,100,0,127);
  Serial1.print(128,BYTE);
  Serial1.print(1,BYTE);
  Serial1.print(2,BYTE);
  Serial1.print(3,BYTE);
  Serial1.print(PSI,BYTE);
}

void update_EGT1(long val)
{
  int EGT = map(val,0,1200,0,127);
  Serial1.print(128,BYTE);
  Serial1.print(1,BYTE);
  Serial1.print(2,BYTE);
  Serial1.print(4,BYTE);
  Serial1.print(EGT,BYTE);
}

void update_RPM2(long val)
{
  int RPM = map(val,0,7000,0,127);
  Serial1.print(128,BYTE);   //start
  Serial1.print(1,BYTE);      //device ID
  Serial1.print(2,BYTE);      //command: set position
  Serial1.print(1,BYTE);    //servo num: servo 0
  Serial1.write(RPM);   // servo0 position
}

void update_Pressure2(long val)
{
  int PSI = map(val,0,100,0,127);
  Serial1.print(128,BYTE);
  Serial1.print(1,BYTE);
  Serial1.print(2,BYTE);
  Serial1.print(2,BYTE);
  Serial1.print(PSI,BYTE);
}

void update_EGT2(long val)
{
  int EGT = map(val,0,1200,0,127);
  Serial1.print(128,BYTE);
  Serial1.print(1,BYTE);
  Serial1.print(2,BYTE);
  Serial1.print(5,BYTE);
  Serial1.print(EGT,BYTE);
}

void update_Temp(long val)
{
  int Temp = map(val,20,150,0,127);
  Serial1.write(128);  //start
  Serial1.write(1);    //device ID
  Serial1.write(2);    //command; set position
  Serial1.write(1);    //servo num: servo 1
  Serial1.write(Temp);   // servo0 position
}

void update_ASI(long val)
{
  int ASI = map(val,0,150,0,127);
  Serial1.print(128,BYTE);
  Serial1.print(1,BYTE);
  Serial1.print(2,BYTE);
  Serial1.print(3,BYTE);
  Serial1.print(ASI,BYTE);
}

void update_VSI(long val)
{
  int VSI = map(val,-3000,3000,0,127);
  Serial1.print(128,BYTE);
  Serial1.print(1,BYTE);
  Serial1.print(2,BYTE);
  Serial1.print(4,BYTE);
  Serial1.print(VSI,BYTE);
}

void upgrade_avionic(long val)
{
  if (val = 0)
  {
    lcd.noDisplay();
  }
  else
  {
    lcd.display();
  }
}


certain instrument, en fait presque touts, gagnerait a avoir plus de débattement, a tout le moins pour une prise direct. et pour info, j'ai 4 servo Hitec HS55(9g bonne qualité) et 2 servo chinois (9g les plus cheap possible). les 2 chinois sont ceux des RPM et j'ai remarquer qu'il sont moins précis et ne font même pas 90 degrés. je n'ai pas tester des servo standard puisque j'en ai pas de libre. pour des instrument qui ne bouge pas beaucoup (voltmètre, température huile, etc) ils peuvent faire l'affaire mais pas pour les autres.

maintenant, je doit attendre les engrenages et les axe pour faire les vrai instruments.

Re: projet Quadcity challenger/générique

MessagePosté: Sam 17 Mai 2014 14:29
de rockclodbuster
j'ai reçu du matériel pour fabriquer ma radio, qui ne reproduit rien en particulier, juste une radio une fréquence. je n'ai pas trouver d'encodeur double a prix raisonnable, j'utiliserai donc deux bouton pour les réglage grossier et un encodeur simple pour les réglage fin. j'ai aussi modéliser un habillage pour ma clé de magnéto.

ma nouvelle imprimante 3D va avoir du boulot. j'ai quelque mécanisme et habillage que j'ai l'intention de refaire en imprimer. j'attend encore du filament noir et argent, j’espère avoir d'aussi bon résultat que Fabien avec sont curtiss.

Image
Image

Re: projet Quadcity challenger/générique

MessagePosté: Sam 17 Mai 2014 18:29
de fab
Tu te débrouille pas mal avec l'Arduino et les servos ! ..

Les servos sont connectés sur quoi ?


rockclodbuster a écrit:j’espère avoir d'aussi bon résultat que Fabien avec sont curtiss.


il n'y a pas de raisons que se soit moche, bon je sais Fix dirait : "ça manque de ponçage et d'enduit dans certain cas"

tu as choisi quelle imprimante ?

Fabien

Re: projet Quadcity challenger/générique

MessagePosté: Sam 17 Mai 2014 18:40
de algue14
rockclodbuster a écrit: je n'ai pas trouver d'encodeur double a prix raisonnable

le moins cher que je connaisse est chez Bodnar.
Bon, 18 Euros quand même pleurejaune
http://www.leobodnar.com/shop/index.php?main_page=product_info&cPath=75&products_id=196

Re: projet Quadcity challenger/générique

MessagePosté: Dim 18 Mai 2014 05:34
de rockclodbuster
Fabien,
j'ai une petite PrintrBot simple 2014 en kit. je suis encore en train de la règler pour de bon résultat avec du PLA. je vais devoir le modifier pour pouvoir imprimer ma radio, elle est trop grosse (130mm par 68mm environ) alors que je n'est que 100 par 100mm de surface d'impression tristounet . j'ai trouver un model qui me permettrai d'obtenir 165mm en X, suffisamment pour ma radio chouettedoights.

mes servo sont commandé par un Teensy 2.0 avec un plugin dans X-Plane. le teensy est configuré comme interface de simulateur de vol et programmer avec Arduino un peu a la maniere de SIOC.

Algue14,
merci de confirmer, je me demandais s'il y avais une autre source. de toute façon, je ne reproduit pas un model de radio exacte, je me suis donc permis quelque liberté pour le design.

Re: projet Quadcity challenger/générique

MessagePosté: Dim 18 Mai 2014 07:31
de fab
Ok, 165, c'est une bonne taille ...

Si tu peux faire ta façade en PVC, se serait mieux, la finition est plus facile, je sais, l'impression est plus complexe ...

Mes premières pièces étaient en PLA, pour la restauration du CDU, depuis que j'utilise du PVC, c'est mieux !

Fabien

Re: projet Quadcity challenger/générique

MessagePosté: Dim 18 Mai 2014 07:43
de fab
rockclodbuster a écrit:. avec un plugin dans X-Plane....


Tu peux m'en dire plus ?
Le plugin fourni quoi et par quelle canal de communication : USB, série ?

Fabien