Page 1 sur 1

[Arduino] 1 Préambule

Publié : dim. août 09, 2015 9:43 am
par Topper Harley.
Bonjour

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.

Image

Re: [Arduino] 1 Préambule

Publié : dim. août 09, 2015 12:03 pm
par Ikky
Merci pour ces explications

Re: [Arduino] 1 Préambule

Publié : dim. août 09, 2015 7:25 pm
par usul
Très intéressant ça. Je suis sur que nous pourrons l'exploiter pour d'autres simus.
Merci!!

Re: [Arduino] 1 Préambule

Publié : dim. août 09, 2015 8:51 pm
par hussard26
Salut Topper,

Bon j'vais essayer de m'y mettre sans tomber dans les vap' :emlaugh:
j'ai un peu de temp devant moi là....
je vais acheter les machins et les bidules :emlaugh:

mais attends toi à des questions à la con! :yes:

@+

edit: t'as essayé avec DCS?

Re: [Arduino] 1 Préambule

Publié : lun. août 10, 2015 12:46 am
par Lightning101
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

Publié : lun. août 10, 2015 7:50 pm
par Topper Harley.
hussard26 a écrit :Salut Topper,

Bon j'vais essayer de m'y mettre sans tomber dans les vap' :emlaugh:
j'ai un peu de temp devant moi là....
je vais acheter les machins et les bidules :emlaugh:

mais attends toi à des questions à la con! :yes:

@+

edit: t'as essayé avec DCS?
salut Hussard.

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

Re: [Arduino] 1 Préambule

Publié : lun. août 10, 2015 7:59 pm
par Topper Harley.
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!
Bravo à toi pour ton pit !

Re: [Arduino] 1 Préambule

Publié : lun. août 10, 2015 11:19 pm
par Goupil
Merci pour ce partage de connaissances et cette pédagogie (même si j'ai vraiment pas tout compris :crying: 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 !!! :notworthy :notworthy :notworthy

:fox:

Re: [Arduino] 1 Préambule

Publié : mar. août 11, 2015 6:51 pm
par Vico
Merci 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é.
:notworthy

Re: [Arduino] 1 Préambule

Publié : mer. août 12, 2015 11:57 am
par Cat
LE sujet tant attendu..... Merci Topper

Re: [Arduino] 1 Préambule

Publié : jeu. sept. 03, 2015 9:38 pm
par matbog
Je viens juste de tomber sur ta série d'articles. C'est vraiment top.
Un grand merci a toi Topper!!!