[Arduino] 1 Préambule
-
Topic author - Nouvelle Recrue
- Messages : 28
- Inscription : 13 avril 2012
[Arduino] 1 Préambule
#1Bonjour
Je vais poster une série d'articles concernant l'utilisation de la carte Arduino, principalement pour l'utiliser avec falcon BMS.
Avec le recul, je vous dit très honnêtement que je ne suis pas certain que ce soit la carte la plus adaptée pour construire un pit car il est assez ardu de l'employer. D'un autre côté, elle est très peu chère et si vous voulez vous initier à la programmation et l'électronique, ou simplement représenter quelques instruments, vous pouvez vous laisser tenter.
1. Sortir les données de BMS.
Cela est manifestement possible car il existe plusieurs programmes, comme par exemple MFD extractor. Mais comment ça fonctionne ?
Voilà : notre simulateur de vol préféré, a intégré (depuis la version SP3, à ce que j'ai compris) la diffusion de plusieurs de ses paramètres dans la mémoire partagée.
La mémoire partagée (http://fr.wikipedia.org/wiki/M%C3%A9moi ... ocessus%29) est un espace où les programmes peuvent écrire des données, et ces données peuvent être accessibles à d'autres programmes. Cela veut dire qu'en temps réel, pendant le vol, Falcon BMS écrit plusieurs paramètres de vol dans cette mémoire partagée, et que si nous savons accéder à cette mémoire partagée, nous pouvons récupérer ces paramètres et les afficher. Les afficher soit dans un autre programme, soit (et ce sera le but de ces articles) sur des supports externes.
La première difficulté est d'accéder à la mémoire partagée. Pour cela, Windows dispose de plusieurs API qui permettent d'y accéder :
OpenFileMapping qui permet d'ouvrir une ressource de type "file mapping".
MapViewOfFile pour lire le contenu du fichier.
UnmapViewOfFile pour clôturer la ressource ouverte précédemment.
Le détail de ces API est donné sur le MSDN (http://msdn.microsoft.com)
Les utilisation d'API peuvent s'effectuer avec plusieurs langages : visual basic, delphi pour les langages les plus accessibles, ou visual basic .net, par exemple. Perso, je travaillerai (à priori) en C++. Pour cela, j'ai téléchargé et installé la version "Microsoft Visual C++ Studio 2010 Express" (http://www.visualstudio.com/en-us/downl ... 10-express) qui est gratuite et qui comprend l'IDE (l'environnement de travail) ainsi que le compilateur.
En plus de savoir comment accéder à la mémoire partagée, il faut savoir ce que l'on y cherche. Cela est donnée par le ficher "Flight Data.h" que vous trouverez dans le répertoire C:\Falcon BMS 4.32\Docs\BMS Manuals\Other Documentation. Ce ficher donne le type de données et l'endroit dans la mémoire où il va écrire ses données.
Il s'agit d'un fichier de type .h, qui est un fichier d’entête de C++ et qui va déclarer la classe "FlightData". Certaines données de cette classe seront accessibles directement comme par exemple fuelFlow qui donne le Fuel Flow en direct, ou nozzlePos qui va donner l'ouverture du nozzle. D'autres données sont de type enum, elle désignent un bit qui à lui seul signifiera éteint ou allumé. Comme par exemple CONFIG dans LightBits qui représente l'état du voyant Config Store sur le panneau d'alertes.
Enfin, une dernière chose à connaitre : le nom donnée par falcon BMS pour sa mémoire partagée est "FalconSharedMemoryArea". Il semble y avoir également FalconSharedOsbMemoryArea et FalconSharedMemoryArea2, je n'ai pas encore utilisé.
Voilà, vous savez à présent comment certains programmes récupèrent des données de Falcon BMS, et où trouver les ressources pour extraire les données que vous désirez.
Dans mon prochain post, je vais vous donner le code source en C++ pour récupérer et afficher une donnée de vol en temps réel.
Je vais poster une série d'articles concernant l'utilisation de la carte Arduino, principalement pour l'utiliser avec falcon BMS.
Avec le recul, je vous dit très honnêtement que je ne suis pas certain que ce soit la carte la plus adaptée pour construire un pit car il est assez ardu de l'employer. D'un autre côté, elle est très peu chère et si vous voulez vous initier à la programmation et l'électronique, ou simplement représenter quelques instruments, vous pouvez vous laisser tenter.
1. Sortir les données de BMS.
Cela est manifestement possible car il existe plusieurs programmes, comme par exemple MFD extractor. Mais comment ça fonctionne ?
Voilà : notre simulateur de vol préféré, a intégré (depuis la version SP3, à ce que j'ai compris) la diffusion de plusieurs de ses paramètres dans la mémoire partagée.
La mémoire partagée (http://fr.wikipedia.org/wiki/M%C3%A9moi ... ocessus%29) est un espace où les programmes peuvent écrire des données, et ces données peuvent être accessibles à d'autres programmes. Cela veut dire qu'en temps réel, pendant le vol, Falcon BMS écrit plusieurs paramètres de vol dans cette mémoire partagée, et que si nous savons accéder à cette mémoire partagée, nous pouvons récupérer ces paramètres et les afficher. Les afficher soit dans un autre programme, soit (et ce sera le but de ces articles) sur des supports externes.
La première difficulté est d'accéder à la mémoire partagée. Pour cela, Windows dispose de plusieurs API qui permettent d'y accéder :
OpenFileMapping qui permet d'ouvrir une ressource de type "file mapping".
MapViewOfFile pour lire le contenu du fichier.
UnmapViewOfFile pour clôturer la ressource ouverte précédemment.
Le détail de ces API est donné sur le MSDN (http://msdn.microsoft.com)
Les utilisation d'API peuvent s'effectuer avec plusieurs langages : visual basic, delphi pour les langages les plus accessibles, ou visual basic .net, par exemple. Perso, je travaillerai (à priori) en C++. Pour cela, j'ai téléchargé et installé la version "Microsoft Visual C++ Studio 2010 Express" (http://www.visualstudio.com/en-us/downl ... 10-express) qui est gratuite et qui comprend l'IDE (l'environnement de travail) ainsi que le compilateur.
En plus de savoir comment accéder à la mémoire partagée, il faut savoir ce que l'on y cherche. Cela est donnée par le ficher "Flight Data.h" que vous trouverez dans le répertoire C:\Falcon BMS 4.32\Docs\BMS Manuals\Other Documentation. Ce ficher donne le type de données et l'endroit dans la mémoire où il va écrire ses données.
Il s'agit d'un fichier de type .h, qui est un fichier d’entête de C++ et qui va déclarer la classe "FlightData". Certaines données de cette classe seront accessibles directement comme par exemple fuelFlow qui donne le Fuel Flow en direct, ou nozzlePos qui va donner l'ouverture du nozzle. D'autres données sont de type enum, elle désignent un bit qui à lui seul signifiera éteint ou allumé. Comme par exemple CONFIG dans LightBits qui représente l'état du voyant Config Store sur le panneau d'alertes.
Enfin, une dernière chose à connaitre : le nom donnée par falcon BMS pour sa mémoire partagée est "FalconSharedMemoryArea". Il semble y avoir également FalconSharedOsbMemoryArea et FalconSharedMemoryArea2, je n'ai pas encore utilisé.
Voilà, vous savez à présent comment certains programmes récupèrent des données de Falcon BMS, et où trouver les ressources pour extraire les données que vous désirez.
Dans mon prochain post, je vais vous donner le code source en C++ pour récupérer et afficher une donnée de vol en temps réel.
Re: [Arduino] 1 Préambule
#3Très intéressant ça. Je suis sur que nous pourrons l'exploiter pour d'autres simus.
Merci!!
Merci!!
i7 12700F - Gigabyte Z690 UD - RTX 4070 - 64Go RAM DDR4 - WINWING F16EX - VPC MongoosT-50CM3 - Pro Flight Switch Panel - Pro Flight Radio Panel - Pro Flight Multi Panel - TQ6+ - 4 x FIP - Thrustmaster TPR - TrackIR 5 - 3x MFD avec 3 écrans HDMI 8" - VPC Controle Panel - VPC Rotor TCS Plus Base -VPC Hawk 60 Collective Grip - StreamDeck - Ecran 34" curved"
Re: [Arduino] 1 Préambule
#4Salut Topper,
Bon j'vais essayer de m'y mettre sans tomber dans les vap'
j'ai un peu de temp devant moi là....
je vais acheter les machins et les bidules
mais attends toi à des questions à la con!
@+
edit: t'as essayé avec DCS?
Bon j'vais essayer de m'y mettre sans tomber dans les vap'
j'ai un peu de temp devant moi là....
je vais acheter les machins et les bidules
mais attends toi à des questions à la con!
@+
edit: t'as essayé avec DCS?
-
- WSO Co-pilote
- Messages : 968
- Inscription : 03 août 2014
Re: [Arduino] 1 Préambule
#5Felicitation Topper pour tout ces tutos.
Je ne compte pas utiliser les carte arduino car je suis trop nul en électro alors je compte utiliser quelque chose de plus "friendly user" mais je suis convaincu que tout ce que tu as écrit servira a toute la communauté qqui utilise de plus en plus ces cartes.
Chapeau de maitriser tout ça!
Je ne compte pas utiliser les carte arduino car je suis trop nul en électro alors je compte utiliser quelque chose de plus "friendly user" mais je suis convaincu que tout ce que tu as écrit servira a toute la communauté qqui utilise de plus en plus ces cartes.
Chapeau de maitriser tout ça!
-
Topic author - Nouvelle Recrue
- Messages : 28
- Inscription : 13 avril 2012
Re: [Arduino] 1 Préambule
#6salut Hussard.hussard26 a écrit :Salut Topper,
Bon j'vais essayer de m'y mettre sans tomber dans les vap'
j'ai un peu de temp devant moi là....
je vais acheter les machins et les bidules
mais attends toi à des questions à la con!
@+
edit: t'as essayé avec DCS?
Non, ne t'inquiètes pas : Il n'y pas de questions à la con ! pas de souci.
Si tu veux commander une carte, je te recommande vivement de prendre la carte Leonardo. La arduino uno sera beaucoup plus galère pour ce qu'on veut faire (déjà que c'est pas évident...) ;-)
Concernant DCS, je n'en ai aucune idée car je n'ai pas DCS. Mais je peux te donner une réponse générique :
-Quel que soit le programme, le jeu, le simulateur que tu utilises, l'arduino va te donner la possibilité de gérer des boutons, des potentiomètres, des encodeurs numériques , afin qu'ils simulent une action sur ton clavier , ou une action sur ton joystick. Ca veut dire que tu peux câbler et programmer un interrupteur qui va faire le raccourci Ctrl+V, et tu vas pouvoir utiliser cette fonction dans Word, par exemple. Donc, pour des entrées, tu pourras utiliser l'arduino dans n'importe quel programme, jeu ou simulateur.
-Ensuite, si le programme, le jeu, le simulateur que tu utilises permet de pouvoir lire certain de ses paramètres en temps réel, tu pourras (en plus) utiliser l'arduino pour afficher ces valeurs sur un écran, un cadran, en allumant une led, etc... et je ne sais pas si DCS permet d'exporter ces données comme le fait BMS.
@+
topper
-
Topic author - Nouvelle Recrue
- Messages : 28
- Inscription : 13 avril 2012
Re: [Arduino] 1 Préambule
#7Bravo à toi pour ton pit !wralex a écrit :Felicitation Topper pour tout ces tutos.
Je ne compte pas utiliser les carte arduino car je suis trop nul en électro alors je compte utiliser quelque chose de plus "friendly user" mais je suis convaincu que tout ce que tu as écrit servira a toute la communauté qqui utilise de plus en plus ces cartes.
Chapeau de maitriser tout ça!
Re: [Arduino] 1 Préambule
#8Merci pour ce partage de connaissances et cette pédagogie (même si j'ai vraiment pas tout compris et en plus, c'est particulièrement très copieux !!!)
J'espère qu'un modo scotchera tous tes posts dans une rubrique spéciale afin qu'il ne disparaissent pas dans les bas fonds du forum et ainsi les questions/réponses pourront rester à proximité
Vraiment gros et très beau boulot !!!
J'espère qu'un modo scotchera tous tes posts dans une rubrique spéciale afin qu'il ne disparaissent pas dans les bas fonds du forum et ainsi les questions/réponses pourront rester à proximité
Vraiment gros et très beau boulot !!!
Mon cockpit à moi................................................................. l'Histoire en vraie
Re: [Arduino] 1 Préambule
#9Merci Topper
Superbe série de tutos qui méritent effectivement un post ou un sous forum dédié. Ou alors les rassembler tous dans un seul post scotché.
Superbe série de tutos qui méritent effectivement un post ou un sous forum dédié. Ou alors les rassembler tous dans un seul post scotché.
Pilote indépendant de F16 block 50/52 sur Falcon BMS - HOTAS Cougar modé FCC1 - Saitek Pro Rudder Pedals - ED TRacker - 2x MFD Cougar - ICP "CatPlombe" - 1x Carte Pokeys - un cockpit F16 en chantier - CM MSI B650 Gaming ; AMD Ryzen 7800X3D 4,20GHz ; 32 Go DDR5 Corsair ; AMD Radeon RX7900XTX 24Go DDR6 ; Ecran Hisense 55" 4K
Re: [Arduino] 1 Préambule
#11Je viens juste de tomber sur ta série d'articles. C'est vraiment top.
Un grand merci a toi Topper!!!
Un grand merci a toi Topper!!!