«ÉTUDE ET REALISATION D'UN DISPOSITIF DE
CONTROLE PAR ORDINATEUR D'UN HELICOPTERE MODELE REDUIT».
INTRODUCTION GENERALE
1. Bref Historique1
Un hélicoptère radiocommandé (RC) est un
modèle réduit d'aéronef dont les caractéristiques
sont différentes d'un avion radiocommandé du fait de
différences de
construction, d'aérodynamique et d'expériences de
vol.
L'hélicoptère radiocommandé est une machine
à mécanique complexe, qui contrairement à d'autres
machines volantes, permet d'effectuer des vols dans toutes
les directions (translations avant, arrière,
latérales) et de rester parfaitement immobile (vol stationnaire)
au-dessus d'un point.
Les premiers modèles réduits
d'hélicoptères à moteur (mécanisme d'horlogerie ou
ressort) ont existé dès le XVIIIe siècle, mais
ils n'étaient évidemment pas radiocommandés. Après
une longue phase de recherche, c'est en 1907 que l'hélicoptère a
été capable de se soulever avec un pilote, pour
véritablement prendre son essor après 1945, éclipsant les
modèles réduits.
Le premier véritable hélicoptère
radiocommandé a été conçu en 1969 par Dieter
Schlüter. Ce modèle a gagné le concours Harsewinkel
(Allemagne) pour lequel l'inventeur toucha 1 000 DM. Il a réussi
à faire voler son hélicoptère sur deux vols de 5 secondes,
à 3 mètres du sol.
Le premier modèle commercialisé a
été le Bell Huet cobra Schlüter, qui a établi un
nouveau record (non officiel) avec un vol de 10 minutes 36 secondes Depuis, de
nombreux prototypes ont été construits et testés jusqu'en
1980, date à partir de laquelle les hélicoptères
radiocommandés Graupner ont fait leur apparition. L'utilisation de ces
engins est devenue accessible à un large public à partir de 2000,
où des marques comme Sylverlit ont conçu des
hélicoptères électriques relativement bon marché et
peu puissants pour le vol en intérieur ou dans un jardin.
2. Problématique
L'ordinateur étant notre plus grand centre
d'intérêt dans le présent siècle, comment peut-on
étudier et réaliser une interface électronique, et
logicielle, pour intégrer le contrôle d'un modèle
réduit assisté par ordinateur ?
3. Object du sujet
Nous nous sommes proposé d'étudier et de
réaliser, une interface assistée par ordinateur pour le
contrôle d'un hélicoptère de modèle
réduit.
4. Méthodologie et Techniques
Utilisé
Dans ce travail, nous nous sommes appuyés sur la
technique documentaire, qui a consisté à recueillir et à
consulter les documents ayant rapport à notre sujet.
Nous avons aussi utilisé la technique de contact, par la
consultation des spécialistes. Nous avons la méthode analytique
et descriptive pour mieux cerner notre réalisation.
5. Division du travail
Notre travail comprend quatre chapitres hormis l'introduction
générale et la conclusion générale :
Le premier chapitre est consacré aux
généralités sur la radiocommande.
Le deuxième chapitre sera consacre aux
généralités sur les langages de programmation.
Le troisième chapitre sera consacré à la
présentation du système et ;
Le quatrième sera consacré au fonctionnement et
réalisation du dispositif et enfin, Une conclusion
générale bouclera ce mémoire.
CHAP. I GENERALITES SUR LA RADIOCOMMANDE
I.1 Introduction
La radiocommande est un produit composé d'au moins un
émetteur radio au moyen duquel, avec la technologie de la
radiofréquence, l'on effectue l'activation à distance d'un
dispositif, qui commande généralement des portails automatiques,
des garages, l'activation de systèmes d'alarme, l'allumage de
lumières une commande anti hold-up, control d'accès etc. Dans ce
Chapitre nous présenterons les généralités sur la
radiocommande2.
I.2 Bref historique3
Les premiers modèles réduits
d'hélicoptères à moteur (mécanisme d'horlogerie ou
ressort) ont existé dès le XVIIIe siècle, mais
ils n'étaient évidemment pas radiocommandés. Après
une longue phase de recherche, c'est en 1907 que l'hélicoptère a
été capable de se soulever avec un pilote, pour
véritablement prendre son essor après 1945, éclipsant les
modèles réduits.
Le premier véritable hélicoptère
radiocommandé a été conçu en 1969 par Dieter
Schlüter4 Ce modèle a gagné le concours
Harsewinkel 5(Allemagne) pour lequel l'inventeur toucha 1 000 DM. Il
a réussi à faire voler son hélicoptère sur deux
vols de 5 secondes, à 3 mètres du sol. Le premier modèle
commercialisé a été le Bell Huet cobra Schlüter, qui
a établi un nouveau record (non officiel) avec un vol de 10 minutes 36
secondes Le record officiel, de juin 1970, avec ce même modèle a
été de 27 minutes 51 secondes de vol sur un circuit de 11,5 km Le
Twin Jet de Graupner équipé d'un moteur thermique de 10
cm3 et du pas collectif a été le premier
hélicoptère radiocommandé à traverser la Manche.
Ensuite, de nombreux modèles ont été commercialisés
avant d'en arriver aux hélicoptères actuellement sur le
marché.
2
www.wikipedia.org
3
www.africacomputing.org
4
http://www.onera.fr/coupdezoom/31-ressac-drone-helicoptere.php
5
http://reelripam.kazeo.com/Archives-Emissions/Objet-Volant-Identifie-Attention-aux-Meprises-Partie-1-
Les-dr-nes,a815906.html
Depuis, de nombreux prototypes ont été
construits et testés jusqu'en 1980, date à partir de laquelle les
hélicoptères radiocommandés Graupner ont fait leur
apparition. L'utilisation de ces engins est devenue accessible à un
large public à partir de 2000, où des marques comme Sylverlit ont
conçu des hélicoptères électriques relativement bon
marché et peu puissants pour le vol en intérieur ou dans un
jardin.
L'évolution de la technologie est telle qu'un
schéma développé pour un montage électronique n'a
guère de chance d'être une référence, entre les
transistors, les circuits intégrés et maintenant les composants
en CMS. Des schémas et des dessins classiques ont été
faits, on a repris des dessins tiré dans le web pour compléter la
théorie. Une formation en physique et mathématique est
indispensable pour la compréhension de la HF. Une bonne connaissance des
composants électroniques avec leurs "datasheets" permet de suivre
l'évolution.
I.3 Les ondes hertziennes6
La transmission des signaux s'effectue par émission
d'onde électromagnétique. Les ondes hertziennes utilisées
pour les transmissions de signaux radios, sont de même nature que la
lumière visible (ou autres: infrarouge, ultraviolet, rayons gamma).
Les ondes électromagnétiques correspondent
à la propagation (dans le vide ou la matière) de la variation
d'un champ électrique et d'un champ magnétique. Une onde
électromagnétique est une onde produite par un courant
électrique variable dans le temps. Comme toutes les ondes, elle
transporte de l'énergie sans transporter de matière.
Une onde électromagnétique est la combinaison du
champ électrique et du champ magnétique. Le champ
électrique est dû au courant circulant dans l'antenne, le champ
magnétique est quant à lui dû au déplacement des
électrons dans l'antenne.
Le vecteur E représente l'onde électrique et le
vecteur H représente l'onde magnétique.
Les 2 ondes sont en phase dans le temps, c'est à dire
qu'elles ont la même fréquence.
6 http // :
model38.pagesperso.ornge.fr/lemetteur.htm
La figure1.1le champ magnétique dans le vide.
Figure11 le champ magnétique dans le vide
I.4 Emission d'une onde
électromagnétique7
Le courant de l'antenne provoque la vibration des
électrons, ils font donc des allers retours très rapides, et cela
crée un champ électromagnétique, qui se propage. Les ondes
sont constituées d'un champ magnétique et d'un champ
électrique se propageant dans un milieu matériel ou dans le vide.
Une onde est caractérisée par Sa fréquence et sa longueur
d'onde, grandeurs liées par l'expression (1.1)
G=C/V (1.1)
Avec G=gamma la célérité de l'onde dans le
milieu considéré. Ainsi, plus la longueur d'onde du rayonnement
est élevée, plus sa fréquence est basse, et
inversement.
I.5 Le spectre électromagnétique
Le tableau1.2 montre la variation de la longueur d'onde de l'onde
électromagnétique dans le vide.
7
http://home.nordet.fr/fhtobois/MRA-1.htm
Tablau1.2: la variation de la longueur d'onde des domaines
spectraux
En fait, le spectre de la lumière visible fait partie
du spectre électromagnétique beaucoup plus vaste
s'étendant du rayonnement gamma, la longueur d'onde pouvant descendre en
dessous 10-13m, jusqu'au rayonnement hertzien (longueur d'onde
pouvant dépasser 10 4 m).
L'oeil humain n'est donc sensible qu'à un tout petit
domaine des ondes électromagnétiques. L'oeil humain est capable
de percevoir uniquement les radiations du spectre solaire comprises entre 700
nm (Rouge) et 400 nm (Violet). L'homme, cependant, utilise de nombreuses
sources de radiation non visibles. Les rayons gamma permettent de traiter
certaines tumeurs. Les rayons X sont utilisés en radiographie (squelette
osseux, dentition, bagages). La radio, le radar et la télévision
émettent des ondes hertziennes. Le soleil nous réchauffe avec les
radiations infrarouges et nous fait bronzer avec le rayonnement ultraviolet.
Les micro-ondes font fonctionner les téléphones cellulaires et
les fours à micro-ondes. Les radiocommandes utilisent les ondes
électromagnétiques.
Le principe de la transmission radio peut (très
schématiquement) se résumer comme suit:
> Un modulateur va modifier cette porteuse en fonction d'un
faible courant envoyé par le signal codé.
I.6 Nature et propagation
D'un point de vue ondulatoire classique, le rayonnement
électromagnétique résulte de la propagation
simultanée d'un champ électrique et d'un champ magnétique
perpendiculaires entre eux et à la direction de propagation. Cette
propagation peut se faire dans le vide, avec une vitesse constante
indépendante de la fréquence, qui vaut c = 299 792 458 m. s-1
(vitesse de la lumière); c'est appelé la
célérité.
Les ondes électromagnétiques se propagent dans le
vide et dans les milieux transparents (air, eau, gaz, verre, etc..).La
célérité d'une onde électromagnétique dans
le vide ne dépend pas de la fréquence de l'onde.
La célérité d'une onde
électromagnétique dans l'air est pratiquement égale
à sa célérité dans le vide:
C air = environ C vide.
L'ensemble des deux champs constitue une onde
caractérisée par sa fréquence n et sa longueur d'onde g,
liées entre elles par la relation (1.1) qui est à la
sixième page.
La propagation peut aussi se faire dans la matière,
mais elle dépend alors de la nature de la matière et de la
fréquence du rayonnement. La vitesse de propagation dans la
matière est toujours inférieure à c. L'onde
électromagnétique transporte de l'énergie et le flux
d'énergie qui lui est associé, c'est-à-dire la
quantité d'énergie par mètre carré et par seconde,
est proportionnel au carré du module du champ électrique de
l'onde.
Les ondes électromagnétiques sont des ondes
sinusoïdales caractérisées par leur période T ou leur
fréquence F et par leur amplitude A.
La fréquence est le nombre de période par seconde
et que ces deux grandeurs dont les symboles sont respectivement T et F sont
reliées par les relations (1.2) et (1.3).
T = 1 / F (1.2)
ou
F = 1 / T (1.3)
La figure1.3 illustre un signal sinusoïdal avec sa longueur
d'onde
Figure1.3 la longueur d'onde T
La longueur d'onde T est la distance parcourue par l'onde pendant
une durée égale à une période.
Nous avons défini la fréquence comme
étant le nombre de périodes par seconde. Il faut maintenant
préciser que le mot période, s'il est didactique, n'est pas
l'unité légale de la fréquence. Nous emploierons donc
maintenant cette unité qui est l'hertz (symbole H), nom du physicien
allemand HERTZ (1857-1894). Les multiples sont le kilohertz (kHz), le
mégahertz (MHz) et le gigahertz (GHz) qui valent respectivement
103 Hz, 106 Hz et 109 Hz.
Nous avons vu que la longueur d'onde est une distance. Plus
précisément, c'est la distance que parcourt l'onde pendant une
période ou un hertz. Son symbole est la lettre ?? de l'alphabet grec qui
se lit lambda. La longueur d'onde ??, la fréquence F et
la vitesse (v) des ondes électromagnétiques sont
liées par les relations (1.4) et (1.5)
??
?? = ?? (1.4)
F=?? ?? (1.5)
Etant donné que la vitesse de propagation
considérée est de 300 000 000 m / s, nous pouvons écrire
en respectant les correspondances des unités :
300 000 000
??(??) = ?? (????) (1.6)
300 000 000
??(??) = ?? (??) (1.7)
La figure1.4 le synoptique de l'émetteur radiocommande.
Figure1.4 L'émetteur de la radiocommande
La figure1.5 le synoptique du récepteur radiocommande.
Figure1.5 le schéma du récepteur radiocommand
I.8 La radiocommande
Un ensemble radio est composé d'un émetteur et
d'un récepteur embarqué. Les servos couplés au
récepteur permettent d'animer le modèle. Il existe une importante
variété de radiocommandes adaptées à chaque
utilisation. En avion, le nombre de voies indispensable est plus important (de
4 à 8 voies). Pour les hélicoptères, un minimum de 5 voies
est nécessaire.
Les figures1.6 et 1.7 nous montre les différentes forme
des radiocommandes
Figure1.6 radiocommande Figure17 radiocommande
Pour la voiture, il existe deux types d'émetteurs
à manches ou à volant. Bien que différentes dans leur
forme, leur fonctionnement est identique. Voici mes deux radiocommande : les
photos ci-dessus de Ma bonne vieille PROMARS FMSS de ROBBE en 41 Mhz, pour le
STAR SIRIUS; plus 2 modules émetteurs pour éviter de changer de
quartz. Elle a 25 ans d'âge et fonctionne toujours aussi bien;
grâce à ses 6 emplacements réservé aux options pour
toutes les disciplines du modélisme; elle a eu un grand succès
auprès des modélistes, les extensions avec des inters permettent
avec son module "nautic" (qui est un multi-switch) de se brancher sur la voie 7
ou 8 du récepteur.
La figure1.8 présente l'intérieur de la
radiocommande
Figure1.8 l'intérieur de la radiocommande
La PROMARS FMSS ouverte montre la technologie de
l'époque; beaucoup de connecteurs et de fils; le module HF ce change
assez facilement en cas de panne ou changer de fréquence de quartz ou
choisir le type de modulation (AM/FM) et la bande de fréquence (27Mhz,
41 Mhz, 72 Mhz). Au moment de sa sortie, c'était ce qui se faisait de
mieux grâce à ses extensions. Les récepteurs sont à
8 sorties de voies (16 fonctions).Les 8 possibilités d'extension
répondent aux modules suivants (six emplacements réservés
aux options).
--' 12 --' La figure1.9 présente le module
multi-Switch à 6 voies radiocommande
Figure19 le module multi-Switch a 6 voies radiocommande. La
figure1.10 présente le module Récepteur FM en 41 Mhz
Figure110 module Récepteur
La figure1.10 le module émetteur FM en 41 Mhz
Figure110 le module émetteu La figure1.11 le module
récepteur FM en 41 Mhz 8 voies
Figure111 le module récepteu
Pour inverser une voie de commande, par exemple pour les
servos, il suffit de retirer la fiche de la plaquette de programmation et de la
pivoter de 180° sur elle même, la trappe d'accès se trouve
à l'arrière de la radiocommande.
La figure1.12 le module Multi-Switch-Décodeur
Figure112 module Multi-Switch-Décodeur
Les figures précédentes montrent la
dernière génération de radiocommande dit "tout
numérique". Le déplacement des trimers se fait avec des boutons
poussoirs, toute la programmation des servos et des trimers peut se faire en
mode "activité" ou "dés activité". Choix du mode
d'émission et surtout plus de quartz à mettre pour changer de
canal, c'est la synthèse de fréquence (circuit PLL, diviseur de
fréquence) qui se charge de tout. Fini d'attendre son tour quand un
modéliste à la même fréquence, cela demande d'avoir
le récepteur qui se programme aussi.
Les figures ci-dessous la 3ième
génération de radiocommande avec un microcontrôleur
Robbe/Futaba, la F14 (modèle N° F 4009) prévu pour la
fréquence en 41 Mhz, équipé du manche Navy-Twin Stick
(double manche). Elle me sert pour la galère romaine. L'utilisation du
manche Navy trouve son utilité pour la galère.
La figure1.13 l'interieur de la Radiocommande (modèle N
F4009)
Figure113 l'interieur de la Radiocommande
La figure1.14 le module décodeur Multi Switch
Figure114 le module décodeur Multi Swi
Dans les notices des constructeurs, on trouve souvent la phrase "
utilisation en Mode 1 (ou Mode 2)", sans autre explication.
Cela veut dire que le manche pour les gaz (la vitesse) est soit
à droite, soit à gauche.
La figure1.15 l'émetteur FF8
Figure1.15 l'émetteur FF8
La figure1.16 l'intérieur de la radiocommande FF8
Figure116 la radiocommande FF8
I.6 Conclusion
Dans ce chapitre nous avons présenté les
généralités sur la radiocommande et ses applications. Nous
avons décrit la propagation des ondes radioélectriques ainsi que
leur répartition en fréquence. Dans le chapitre prochain nous
présenterons la généralité sur les langages de
programmation
CHAP.II GENERALITES SUR LES LANGAGES
DE PROGRAMMATION
II.1 Introduction
Dans ce chapitre nous présenterons quelques
généralités sur les langages de programmation.
II.2 L'informatique classique8
L'informatique est définie par Philippe Dreyfus,
l'inventeur de ce mot, comme une science qui ; l'aide d'algorithmes, traite des
données pour obtenir des informations. Cela sous-entend une certaine
organisation séquentielle prédéfinie des opérations
à effectuer donc l'intelligence classique résout un
problème en utilisant une méthode appropriée traduite sous
forme d'algorithmes pour obtenir la solution des problèmes posées
(approche algorithmique). Cette démarche ressemble à un
théorème ou tout est bien précisé, rien n'est
superflu et tout est à sa place.
II.3 : Les six générations de
l'informatique
On distingue différentes générations de
l'informatique comme dans les domaines techniques.
Le passage d'une génération à l'autre est
marqué par un saut technologique important.
En matière de logiciels, les générations
sont caractérisées par le niveau d'évolution des langues.
Cette évolution est plus au moins chronologique, du moins pour les trois
premières générations. Aujourd'hui coexistent la
troisième, la quatrième, et la cinquième
génération.
La sixième génération est une
génération de l'informatique entamée au japon,
après avoir annoncé dans les années 80 un programme de
cinquième génération associant traitement symbolique et
parallélisme. Il ne s'agit plus dans cette
génération-là de langage, ni de logiciel, mais
plutôt d'associer des informations de type divers (multi media) et
connaissances à des architectures des machines spécifiques
(parallélisme massif, connexionnisme)
La Figure2.1 montre l'évolution de l'ordinateur
Figure2.1 évolution de l'ordinateur
La Figure 2.2 montre l'évolution de l'automate à
l'informatique
--' 19 --'
II.4 L'évolution des langages de
programmation9
On utilise aussi, plus pour des raisons de
disponibilités et de performance que ce commodité, des langages
classiques tels que C ou C++. Lisp a eu pour sa part une série de
successeurs plus ou moins inspirés de lui, dont les langages. La figure
2.3 montre l'évolution des langages de programmation.
Figure2.3 l'évolution des langages
Des programmes de démonstration de
théorèmes géométriques simples ont
existédès les années 1960 ; et des logiciels
aussi triviaux que Maple et Mathematica
effectuent aujourd'hui des travaux d'intégration
symbolique qu'il ya trente ans encore étaient du ressort d'un
d'étudiant de mathématiques supérieures. Mais ces
programmes ne savent pas plus qu'ils effectuent des démonstrations
géométriques ou algébriques que Deep Blue ne savait qu'il
jouait aux échecs (ou un programme de facturation qu'il calcule une
facture). Ces cas représentent dont plus des opérations
intellectuelles assistées par ordinateur faisant appel à la
puissance de calcul que de l'intelligence artificielle à proprement
parler.
9 HAROLD ABELSON ET GERALD JAY SUSSMAN, Structure
and Interpretation of Computer Programs MIT Press, 2001.
II.5 Classification des Langages de Programmation10 La
figure 2.4 montre la classification des langages
Figure.2.4 classification de langag
Dans la classification, nous distinguons plusieurs types de
langages :
> Langages Impératifs: Langages
incluant des moyens pour le programmeur d'attribuer des valeurs à des
locations (Variables) en mémoire.
> Langages Déclaratifs: Langages
pour lesquels le programmeur réfléchit en terme de valeurs des
fonctions et de relations entre entités diverses. Il n'y a pas
d'attribution de valeurs aux variables.
> Programmation Procédurale: Le
programme est divisé en blocs qui peuvent contenir leurs propres
variables ainsi que d'autres blocs.
> Programmation Orientée Objet:
Programmation qui supporte l'interaction d'objets. Un objet contient des
données ainsi que des fonctions qui peuvent s'appliquer a ces
données.
> Programmation Concurrente: Langages de
programmation qui s'appliquent à plusieurs CPU 's qui opèrent en
parallèle. Les données peuvent être partagées ou
non.
> Programmation Fonctionnelle: Un
programme est un appel de fonction avec un certain nombre de paramètres,
qui eux-mêmes peuvent être des appels à d'autres fonctions.
Le programme renvoie donc un seul résultat, qui peut être assez
complexe.
10 J.-L. LAURIERE, Eléments de programmation
dynamique, Collection Programmation, Ed. Gauthier-Villars, Paris, 1979.
--' 21 --' II.6 Langage de programmation C++
II.6.1 Introduction11
Le C++ est un langage de programmation permettant la
programmation sous de multiples paradigmes comme la programmation
procédurale, la programmation orientée objet et la programmation
générique.
C++ est actuellement le 3e langage le plus
utilisé au monde. Le langage C++ n'appartient à personne et par
conséquent n'importe qui peut l'utiliser sans besoin d'une autorisation
ou obligation de payer pour avoir le droit d'utilisation.
II.6.2 Histoire
Bjarne Stroustrup a développé C++ au cours des
années 1980, alors qu'il travaillait dans le laboratoire de recherche
Bell d'AT&T. Il s'agissait en l'occurrence d'améliorer le langage C.
Il l'avait d'ailleurs nommé C with classes (<< C avec des
classes »). Les premières améliorations se
concrétisèrent donc par la prise en charge des classes, ainsi que
par de nombreuses autres fonctionnalités comme les fonctions virtuelles,
la surcharge des opérateurs, l'héritage (simple ou multiple), les
<< templates », la gestion des exceptions, etc.
Le langage C++ est normalisé par l'ISO. Sa
première normalisation date de 1998 (ISO/CEI 14882:1998), sa
dernière de 2003 (ISO/CEI 14882:2003). La normalisation de 1998
standardise la base du langage (Core Language) ainsi que la bibliothèque
standard de C++ (C++ Standard Library).
En langage C, ++ est l'opérateur
d'incrémentation, c'est-à-dire l'augmentation de la valeur d'une
variable de 1. C'est pourquoi C++ porte ce nom : cela signifie que C++ est un
niveau au-dessus du C. Il existe de nombreuses bibliothèques C++ en plus
de celle qui est incluse dans la norme. Par ailleurs, C++ permet l'utilisation
de l'ensemble des bibliothèques C existantes.
11 Bjarne Stroustrup, Le langage C++,
Pearson, 2000 [détail de l'édition]
La figure 2.4 montre Bjarne Stroustrup, l'inventeur de C++
Figure24 Bjarne Stroustrup, linventeur d 2.6.3 Histoire
de C++
Stroustrup a commencé à travailler sur C avec
classes en 1979. L'idée de créer un nouveau langage vient de
l'expérience en programmation de Stroustrup pour sa thèse de
doctorat. Stroustrup trouvait que Simula avait des fonctionnalités
très utiles pour le développement de gros programmes mais qu'il
était trop lent pour être utilisé en pratique (cela
était dû à un problème d'implémentation du
compilateur Simula), tandis que BCPL était rapide mais de trop bas
niveau et non adapté au développement de gros logiciels. Quand
Stroustrup commença à travailler aux laboratoires Bell, on lui
demanda d'analyser le noyau UNIX en vue de faire du calcul distribué. Se
rappelant sa thèse, Stroustrup commença à améliorer
le langage C avec des fonctionnalités similaires à celle de
Simula. C fut choisi parce qu'il est rapide, portable et d'usage
général. En outre, il était une bonne base pour le
principe original et fondateur de C++ : << vous ne payez pas pour ce que
vous n'utilisez pas ». Dès le départ, le langage ajoutait
à C la notion de classe (avec encapsulation des données), de
classe dérivée, de vérification des types renforcés
(typage fort), d'<< inlining », et d'argument par
défaut.12
Comme Stroustrup développait C avec classes, il
écrivit CFront, un compilateur qui générait du code source
C à partir de code source C avec classes. La première
commercialisation se fit en octobre 1985.
En 1983, le nom du langage passa de C avec classes à
celui de << C++ ». Parmi les nouvelles fonctionnalités qui
furent ajoutées au langage, il y avait les fonctions virtuelles, la
surcharge des opérateurs et des fonctions, les références,
les constantes, le contrôle du typage amélioré et les
commentaires en fin de ligne. En 1985 fut publiée la première
édition de The C++ programming Language, apportant ainsi une
référence importante au langage qui n'avait pas encore de
standard officiel. En 1989, c'est la sortie de la version 2.0 de C++. Parmi les
nouvelles fonctionnalités,
il y avait l'héritage multiple, les classes abstraites,
les fonctions membres statiques, les fonctions membres constantes, et les
membres protégés. En 1990, The Annotated C++ Reference
Manual (« ARM ») fut publié apportant les bases du futur
standard. Les ajouts de fonctionnalités tardifs qu'il comportait
couvraient les modèles, les exceptions, les espaces de noms, les
nouvelles conversions et le type booléen.
Comme le langage C++ évoluait, la bibliothèque
standard évoluait de concert. La première addition à la
bibliothèque standard de C++ concernait les flux
d'entrées/sorties qui apportaient les fonctionnalités
nécessaires au remplacement des fonctions C traditionnelles telles que
printf et scanf. Ensuite, parmi les additions les plus importantes, il y avait
la Standard Template Library.
Après des années de travail, un comité
réunissant l'ANSI et l'ISO standardisa C++ en 1998 (ISO/CEI 14882:1998),
l'année où le comité de standardisation se
réunissait à Sophia Antipolis dans le sud de la France. Pendant
quelques années après la sortie officielle du standard, le
comité traita le rapport de problèmes et publia une version
corrigée du standard C++ en 2003.Personne ne possède le langage
C++. Il est libre de droit. Le document de standardisation n'est quant à
lui pas disponible gratuitement.
2.6.4 La bibliothèque standard (C++ standard
library)
La Bibliothèque standard du C++ est en grande partie un
sur-ensemble des fonctions disponibles dans la bibliothèque standard du
C. Elle englobe la Standard Template Library (STL) qui met à la
disposition du programmeur des outils puissants comme les collections
(conteneurs) et les itérateurs.
À l'origine, la STL était une
bibliothèque développée par Alexander Stepanov qui
travaillait pour Hewlett-Packard. Dans la norme, celle-ci n'est pas
appelée STL, car elle est considérée comme faisant partie
de la bibliothèque standard du C++. Toutefois, beaucoup de personnes
l'appellent encore de cette manière pour distinguer d'une part, les
fonctions d'entrées/sorties comprises dans cette bibliothèque et,
d'autre part, celles fournies par la bibliothèque C. Comme en C,
l'utilisation d'une bibliothèque se fait par l'intermédiaire de
la directive #include (suivie du nom du fichier d'en-tête).
2.6.5 Fonctionnalités introduites par C++
On peut considérer que C++ « est du C » avec
un ajout de fonctionnalités. Une remarque importante est à faire
cependant : certains programmes syntaxiquement corrects en C ne le sont pas en
C++.
~ 24 ~
Les fonctionnalités ajoutées sont :
· les déclarations reconnues comme instructions
(repris dans C99) ;
· les opérateurs new et delete pour la gestion
d'allocation mémoire ;
· le type de données bool (booléen) ;
· les références ;
· le mot clé const pour définir des
constantes (repris par C à la fin des années 1980) ;
· les fonctions inline (repris dans C99) ;
· les paramètres par défaut dans les
fonctions ;
· les référentiels lexicaux (Espace de noms)
et l'opérateur de résolution :: ;
· les classes, ainsi que tout ce qui y est lié :
l'héritage, les fonctions membres, les fonctions membres virtuelles, les
constructeurs et le destructeur ;
· la surcharge des opérateurs ;
· les templates ;
· la gestion d'exceptions ;
· l'identification de type pendant l'exécution (RTTI
: run-time type identification) ;
· le commentaire de fin de ligne introduit par « //
» (existant dans BCPL, repris dans C99).
La compilation d'un programme en C++ effectue également
un contrôle plus minutieux sur le typage.
2 .6.6 La programmation orientée objet en
C++13
C++ utilise les concepts de la programmation orientée
objet et permet entre autres :
· La classification,
· L'encapsulation,
· La composition de classes,
· L'association de classes,
· L'héritage, qui permet le polymorphisme,
· L'abstraction,
· La généricité,
· La méta-programmation
13 Aurélien Geron, Fatmé Tawbi,
Pour mieux développer avec C++, Edition DUNOD 1999, (ISBN
978-2-10-007348-1)
L'encapsulation en C++
L'encapsulation permet de faire abstraction du fonctionnement
interne (c'est-à-dire, la mise en oeuvre) d'une classe et ainsi de ne se
préoccuper que des services rendus par celle-ci. C++ met en oeuvre
l'encapsulation en permettant de déclarer
les membres d'une classe avec le mot réservé
public, private ou protected. Ainsi, lorsqu'un membre est déclaré
:
· public, il sera accessible depuis n'importe quelle
fonction.
· private, il sera uniquement accessible d'une part,
depuis les fonctions qui sont membres de la classe et, d'autre part, depuis les
fonctions autorisées explicitement par la classe (par
l'intermédiaire du mot réservé friend).
· protected, il aura les mêmes restrictions que s'il
était déclaré private, mais il sera en revanche accessible
par les classes filles.
C++ n'impose pas l'encapsulation des membres dans leurs
classes. On pourrait donc déclarer tous les membres publics, mais en
perdant une partie des bénéfices apportés par la
programmation orientée objet. Il est de bon usage de déclarer
toutes les données privées, ou au moins protégées,
et de rendre publiques les méthodes agissant sur ces données.
Ceci permet de cacher les détails de la mise en oeuvre de la classe.
Une importante notion de C++ est les espaces de noms (names
paces). Dans un espace de noms sont définis des noms de fonctions et de
variables. Ce mécanisme permet de résoudre les
ambiguïtés lorsque plusieurs variables provenant de
différents composants sont homonymes. Pour recourir à une
fonction d'un espace de nom, l'opérateur de résolution de
portée est utilisé.
La figure 2.5 présente l'interface utilisateur de l'IDE
code bloc Dev-C++
La figure 2.5 l'interface du l'IDE Dev-C++
Dev-C++ est un environnement de développement
intégré (IDE) permettant de programmer en C et en C++. Il semble
être abandonné mais une équipe de développement a
repris le projet sous le nom WxDev-C++. Dev-C++ est disponible uniquement sous
Microsoft Windows.
Il utilise la version MinGW du compilateur GCC (GNU Compiler
Collection) (venu du monde du logiciel libre) et permet d'exporter ses projets
sous fichiers .dev. Dev-C++ peut aussi être utilisé en
combinaison avec Cygwin ou tout autre compilateur basé sur GCC.
Cet IDE complet comprend entre autres un «
répertoire de classes », servant à localiser facilement les
fonctions, classes et membres du code source, un « répertoire de
fonctions incluses », fonctionnant comme le répertoire de classes
mais pour chercher dans les fichiers inclus (header), et un débogueur
qui permet de surveiller l'état des variables pendant l'exécution
du programme. Il souffre en revanche de l'absence d'un éditeur de
ressources, ce qui rend la conception d'applications délicate si on ne
fait pas appel à un outil externe.
Visual C++
Visual C++ est un environnement de développement
intégré pour Windows, conçu par Microsoft pour les
langages de programmation C et C++ et intégrant différents outils
pour développer, compiler, déboguer un programme en C++
s'exécutant sur Windows, ainsi que des bibliothèques comme les
MFC.
Il a par la suite été intégré au
Framework Visual Studio, qui constitue ainsi un cadre unique aux divers
environnements de développements de Microsoft. Le terme de Visual C++
est toutefois toujours employé pour désigner l'ensemble
constitué par Visual Studio configuré pour C et C++.
2.6.7 Visual Basic 1.
Introduction
Cette partie concerne le langage Visual Basic,
commercialisé avec Microsoft Visual Studio 6.0 et antérieur. Pour
la version de Visual Basic commercialisée avec Microsoft Visual Studio.
Nous pourrons éventuellement le doter d'un numéro de série
"intelligent" permettant de créer une protection logicielle assez
sophistiquée pour rebuter la majorité des casseurs de code.
Quoique cette première tâche soit légère, elle va
vous donner l'opportunité d'apprendre les bases de Visual Basic sans
vous inquiéter des questions de conceptions et des concepts de
programmation appliqués dans les réalisations plus complexes.
Visual Basic (VB) est un langage de programmation
événementielle de troisième génération ainsi
qu'un environnement de développement intégré,
créé par Microsoft pour son modèle de programmation COM.
Visual Basic est directement dérivé du BASIC et permet le
développement rapide d'applications, la création d'interfaces
utilisateur graphiques, l'accès aux bases de données en utilisant
les technologies DAO, ADO et RDO, ainsi que la création de
contrôles ou objets ActiveX. Les langages de script tels que Visual Basic
for Applications et VBScript sont syntaxiquement proches de Visual Basic, mais
s'utilisent et se comportent de façon sensiblement différente.
Un programme en VB peut être développé en
utilisant les composants fournis avec Visual Basic lui-même. Les
programmes écrits en Visual Basic peuvent aussi utiliser l'API Windows,
ceci nécessitant la déclaration dans le programme des fonctions
externes.
Visual Basic est un des langages les plus utilisés
pour l'écriture d'applications commerciales, c'est-à-dire
d'applications ne faisant que manipuler des chiffres et des lettres. Ce BASIC
est particulièrement adapté à cet usage, pas
d'accès système, pas de performances critiques,
développement rapide, compétences apparemment faibles. Le
défaut étant justement sa facilité de mise en oeuvre : un
débutant VB pourra rapidement faire un programme opérationnel
mais souvent tellement mal fait (sans analyse, structures ni règles,
sans même la moindre expérience en programmation parfois...) qu'il
sera difficilement maintenable par la suite. Beaucoup
de projets VB sont à refaire entièrement car ils
ont été trop mal faits par des débutants.
Dans une étude conduite en 2005, 62% des
développeurs déclaraient utiliser l'une ou l'autre forme de
Visual Basic. Actuellement, les langages les plus utilisés dans le
domaine commercial sont Visual Basic, C++, C#, Java.
La dernière mise à jour de Visual Basic est la
version 6.0, sortie en 1998. Le support étendu Microsoft a pris fin en
2008. À partir de la version 7, le Visual Basic subit des changements
substantiels le rapprochant de la plate-forme « dot Net », et qui
amènent Microsoft à le commercialiser sous le nom de Visual Basic
.NET.
2.6.8 Fonctionnalités du langage
Visual Basic a été conçu pour être
facile à apprendre et à utiliser. Le langage permet de
créer des applications graphiques de façon simple, mais
également de créer des applications véritablement
complexes. Programmer en VB est un mélange de plusieurs tâches,
comme disposer visuellement les composants et contrôles sur les
formulaires, définir les propriétés et les actions
associées à ces composants, et enfin ajouter du code pour ajouter
des fonctionnalités. Comme les attributs et les actions reçoivent
des valeurs par défaut, il est possible de créer un programme
simple sans que le programmeur ait à écrire de nombreuses lignes
de code. Les premières versions ont souffert de problèmes de
performance, mais avec l'apparition d'ordinateurs plus rapides et grâce
à la compilation en code natif, ce problème de performance s'est
estompé.
Bien que les programmes puissent être compilés
en code natif depuis la version 5, ils requièrent toujours pour
fonctionner la présence du moteur d'exécution ou runtime, pour
une taille d'environ 2 MB. Ce moteur d'exécution est inclus par
défaut dans Windows 2000 et versions supérieures, sous formes de
librairies dynamiques. Pour les versions précédentes de Windows,
le moteur d'exécution doit être distribué avec
l'exécutable lui-même.
Dans l'IDE, les formulaires sont créés en
utilisant la technique de Glisserdéposer, permettant de disposer des
contrôles (boîte de saisie, case à cocher, bouton, etc.) sur
le formulaire. Les contrôles possèdent tous des attributs et des
gestionnaires d'évènements associés. Des valeurs par
défaut sont attribuées, qui peuvent être modifiées
par le programmeur. De nombreux attributs peuvent être modifiés
dynamiquement lors de l'exécution, en réponse à des
actions de l'utilisateur ou à des changements dans l'environnement. Par
exemple, il est possible d'ajouter du code dans le gestionnaire de
l'évènement redimensionnement du formulaire, afin de maintenir
celui-ci en permanence au centre de l'écran ou encore d'agrandir le
formulaire afin qu'il occupe toute la surface de l'écran. En ajoutant du
code dans le gestionnaire de l'évènement « KeyPress »
(touche enfoncée) d'une boîte de saisie, le programme pourrait
automatiquement convertir les minuscules en majuscules ou inversement, ou
encore interdire l'insertion de certains caractères.
Visual Basic permet de créer des exécutables
(fichiers .EXE), des contrôles ActiveX ou des DLL, mais son usage premier
est la réalisation d'applications Windows et l'interfaçage Web
avec des bases de données. On peut utiliser des boites de dialogue
simplifiées (par exemple pas de Maximize/Minimize) pour fournir des
fonctionnalités de type pop-up. Les contrôles fournissent les
fonctionnalités de base de l'application, les programmeurs ajoutant
simplement le fonctionnel supplémentaire en insérant du code dans
les gestionnaires d'évènements appropriés. Par exemple,
une Boîte de sélection déroulante est directement capable
d'afficher sa liste et de permettre à l'utilisateur de choisir l'un de
ses éléments. Un gestionnaire d'évènement est
appelé lorsqu'un élément est sélectionné,
par exemple pour remplir une liste associée.
Un composant Visual Basic peut aussi ne pas avoir d'interface
utilisateur et fournir à la place des objets ActiveX aux autres
programmes, au travers du Component Object Model (COM). Le langage dispose d'un
mécanisme de récupération de mémoire
(Ramasse-miettes), utilisant le mécanisme de << comptage de
référence *. Il dispose également d'une grande
bibliothèque d'utilitaires et offre les bases du support de la
Programmation Orientée Objet. Dans la mesure où les composants
les plus communs sont inclus par défaut dans le modèle de projet
standard, il est rarement nécessaire pour le programmeur d'utiliser des
bibliothèques additionnelles. À la différence de beaucoup
d'autres langages de programmation, Visual Basic n'est en général
pas sensible à la casse (l'usage des majuscules ou des minuscules est
indifférent), bien qu'il transforme automatiquement l'écriture
des mots-clés selon une convention standard et qu'il force
l'écriture des variables dans le code à être identique
à l'écriture employée lors de la déclaration. En
revanche, les comparaisons de chaînes de caractères sont elles
sensibles à la casse par défaut, mais ce comportement est
modifiable à volonté.
Le compilateur employé par Visual Basic est le
même que celui d'autres langages fournis avec Visual Studio 6 (C, C++),
mais des restrictions placées au niveau de l'environnement de
développement intégré empêchent la
génération de code particulier (DLL Windows ou Threads).
2.6.9 Caractéristiques de Visual Basic
Visual Basic possède quelques caractéristiques
inhabituelles :
· La constante booléenne True a la valeur
numérique Ceci est dû au fait que le type booléen est
codé comme un entier de 16 bits signé. Dans cette
représentation, -1 est codé comme une suite de 16 << 1
binaires » (la valeur booléenne True), et que 0 est codé
comme 16 << 0 binaires » (la valeur booléenne False) ;
lorsque on effectue l'opération Non Logique sur un entier signé
de 16 bits valant 0, on obtient -1. En d'autre termes, True = Not False. Cette
caractéristique intrinsèque devient particulièrement utile
lorsque l'on effectue des opérations logiques bit à bit sur un
entier, telles qu'And, Or, Xor et Not. Cette définition est
également globalement cohérente avec les implémentations
de BASIC depuis Microsoft Basic, au début des années 1970.
C'est également en adéquation avec les
caractéristiques des microprocesseurs de cette période.
· Les opérateurs bit à bit et les
opérateurs logiques sont les mêmes. Ce n'est en revanche pas le
cas dans tous les langages dérivés de C (tels que Java et Perl)
qui disposent d'opérateurs différenciés pour les
opérations logiques et les opérations bit à bit. Ceci est
également une caractéristique traditionnelle du langage BASIC.
· Base de tableaux variable. Les tableaux sont
déclarés en spécifiant les bornes inférieures et
supérieures, de la même façon qu'en Pascal ou qu'en
Fortran. Il est également possible d'utiliser l'instruction «
Option Base » pour spécifier l'indice de borne inférieure
par défaut. L'usage de cette instruction peut prêter à
confusion lors de la lecture de code Visual basic et il est
préférable d'éviter son utilisation ; on lui
préférera la déclaration explicite de la borne
inférieure du tableau. Cette borne inférieure n'est pas
limitée aux seules valeurs zéro ou un, elle peut aussi être
spécifiée explicitement lors de la déclaration de la
variable. Ainsi, les bornes inférieures et supérieures sont
toutes deux programmables. Dans d'autres langages, la borne inférieure
des tableaux n'est pas programmable. Cette caractéristique n'existe pas
dans Visual Basic .NET ni dans VBScript. L'instruction Option Base a
été introduite dans la norme ANSI, avec la norme ANSI pour BASIC
minimal, à la fin des années 1970. L'extension permettant
d'utiliser la forme de DIM A (1976 TO 2002) a été introduite pour
la première fois dans le BBC Basic, disponible dans le BBC micro,
lui-même influencé par COMAL.
· Forte intégration avec le système
d'exploitation Windows ainsi qu'avec le modèle COM.
· L'arrondi bancaire est utilisé par défaut
lors de la conversion de nombre réels en entiers.
· Les nombres entiers sont automatiquement convertis en
nombres réels dans les expressions où apparaît
l'opérateur de division normale (/) afin que la division d'un entier
impair par un entier pair produise le résultat intuitivement
espéré. Il existe un opérateur spécifique pour la
division entière (\) qui lui tronque le résultat.
· Par défaut, si une variable n'est pas
déclarée du tout ou si elle est déclarée sans
spécification explicite de type, elle prend le type « Variant
». Cependant, ce comportement peut être modifié par
l'utilisation d'instructions DefType telles que DefInt, DefBool, DefObj,
DefStr, etc. Il existe 12 instructions DefType dans Visual Basic 6.0. Un type
par défaut peut être remplacé dans une déclaration
spécifique en utilisant un suffixe spécial accolé au nom
de la variable (# pour Double, ! pour Single, & pour Long, % pour Integer,
$ pour String and @ pour Currency). Il est aussi possible d'utiliser la forme
As (type). Il est également possible de configurer VB afin qu'il exige
la déclaration explicite de toutes les variables, en utilisant la
commande Option Explicit.
2.6.10 Evolution de Visual Basic
VB 1.0 a vu le jour en 1991. Le principe de connexion d'un
langage de programmation avec une interface utilisateur graphique est
dérivé d'un prototype appelé Tripod,
développé par Alan Cooper. Microsoft avait alors contacté
Cooper et ses associés pour développer un Shell programmable pour
Windows 3.0, sous le nom de code Ruby (aucun lien avec le langage de
programmation Ruby).
· Visual Basic 1.0 (mai 1991) pour Windows est
présenté au Comdex/Windows à Atlanta, Géorgie.
· à Atlanta, Géorgie.
· Le projet `Thunder' est lancé
· Visual Basic 1.0 pour DOS est présenté
en septembre 1992. Le langage n'était pas totalement compatible avec
Visual Basic pour Windows, car il était en fait la nouvelle version des
compilateurs Microsoft BASIC pour DOS, Quick Basic et BASIC Professional
Development System. L'interface était en mode texte et utilisait le jeu
de caractères ASCII étendu pour simuler une interface
graphique.
· Visual Basic 2.0 est présenté en
novembre 1992. L'environnement de développement était plus facile
à utiliser et la vitesse avait été
améliorée. Un fait marquant était que les formulaires
étaient devenus des objets instanciables, posant ainsi le concept de
base de modules de classe, qui devinrent plus tard disponibles dans VB4.
· Visual Basic 3.0 fut présenté pendant
l'été 1993, disponibles en édition Standard ou
Professionnelle. VB3 intégrait la version 1.1 du moteur de base de
données Microsoft Jet, qui pouvait lire et écrire les bases de
données Jet (ou Access) 1.x.
· Visual Basic 4 (août 1995) a été
la première version qui pouvait générer des programmes
Windows 16 et/ou 32 bits. Cette version introduisait également la
possibilité d'écrire des classes sans interface utilisateur. Des
incompatibilités entre les différentes versions de VB4
causèrent des problèmes d'installation et de fonctionnement.
· La version 5.0 de Visual Basic, sortie en 1997 ne
fonctionnait plus qu'avec les versions 32 bits de Windows. Les programmeurs
préférant développer des applications 16-bits pouvaient
importer les programmes de VB4 vers VB514, et inversement. Visual
Basic 5.0 a aussi introduit la possibilité de créer des
contrôles utilisateurs personnalisés ainsi que la
possibilité de générer des exécutables Windows
natifs, ce qui améliorait la vitesse d'exécution des programmes
effectuant beaucoup de calculs.
· Visual Basic 6.0 (mi-1998) a apporté de
nombreuses améliorations dans différents domaines, notamment la
possibilité de créer des applications Web-based. VB6 n'est plus
supporté par Microsoft depuis mars 2008.
14 Alexandre Guidet, Programmation Objet en
langage C++, Ellipses, (ISBN 978-2-7298- 3693-1), 364 pages
· Microsoft a cessé le support grand public pour
Visual Basic 6.0 le 31 mars 2005. Le support étendu a pris fin en mars
2008. En réaction, La communauté des utilisateurs Visual Basic a
fait part de ses préoccupations à ce sujet et a incité les
utilisateurs à signer une pétition afin de permettre de maintenir
le produit en vie. A ce jour, Microsoft a refusé de modifier sa position
à ce sujet. Ironiquement, il fut révélé au
même moment que le nouvel Anti-Spyware de Microsoft, Microsoft
AntiSpyware (racheté à GIANT Software Company) était
écrit en Visual Basic 6.0. Windows Defender Beta 2 a été
réécrit en C++/CLI. Il est difficile de dire quel impact pourrait
avoir cette décision sur les futures offres Microsoft, si la perception
se faisait jour que des applications pérennes ne peuvent être
écrites avec des produits Microsoft pour cause d'obsolescence
programmée.
2.6.11 Langages dérivés
Microsoft a développé des langages
dérivés, pour des usages de langages de Script :
· Visual Basic pour Applications (VBA) est inclus dans
de nombreuses applications Microsoft (Microsoft Office) ainsi que dans de
nombreux produit tiers tels qu'AutoCAD, WordPerfect Office 2002, etc. Il y a de
petites incohérences dans la façon dont VBA est
implémenté dans les différentes applications, mais VBA
reste un langage très proche de VB6 et utilise le même moteur
d'exécution.
· VBScript est le langage par défaut pour Active
Server Pages (ASP) et peut être utilisé pour faire du scripting
Windows ainsi que du scripting web côté client. Bien qu'il
ressemble syntaxiquement à VB, c'est un langage différent et
séparé, qui utilise vbscript.dll pour son exécution au
lieu du moteur d'exécution VB. Ces différences peuvent affecter
les performances d'un site web ASP. ASP et VBScript ne doivent pas être
confondus avec ASP .NET, qui utilise Visual basic .NET ou tout autre langage
destiné au .NET Common Language Runtime (CLR).
· Visual Basic .NET est le successeur
désigné de Microsoft à Visual Basic 6.0, et fait partie de
la plate-forme Microsoft .NET. Celui-ci se compile et s'exécute sur
l'architecture architecture .NET(le framework .NET). Visual Basic .NET n'est
pas rétrocompatible avec VB6. Un outil de conversion existe, mais pour
de nombreux projets, la conversion automatique est impossible.
2.6 .12 Performances et autres
problèmes
Les premières versions de Visual Basic (avant la
version 5.0) généraient uniquement du P-Code ou pseudo code.
Visual Basic 5 et 6 sont capables de compiler en P-code ou en code natif, au
choix de programmeur. Le P-code est interprété par le runtime du
langage, aussi appelé machine virtuelle. L'avantage réside dans
la portabilité et la petitesse du code. Cependant, ceci ralentit
généralement l'exécution des programmes, car cela ajoute
une couche supplémentaire d'interprétation. Il est possible de
construire de petites portions de codes ou certains algorithmes qui
s'exécutent plus rapidement en P-code qu'en code natif.
Les applications Visual Basic requièrent la
présence du Microsoft Visual Basic Runtime MSVBVMxx.DLL, où xx
est le numéro de versions, soit 50 ou 60. MSVBVM60.DLL est fourni en
standard avec toutes les versions de Windows suivant Windows 98, alors que
MSVBVM50.DLL était présents avec toutes les éditions de
Windows postérieures à Windows 95. Ainsi, pour une machine sous
Windows 95, il était obligatoire que les programmes Visual basic soient
distribués avec la Dll appropriée.
Visual Basic est critiqué pour sa gestion
mémoire peu performante et pour la possibilité qu'il offre de
pouvoir construire du code utilisant des constructions peu académiques,
pouvant donner de mauvaises habitudes de programmation et permettant
d'écrire du code peu performant. En Visual basic, il peut parfois
être difficile de dire si une variable est une référence
à un objet ou bien l'objet lui-même.
Dans le même ordre d'idée, il est parfois
difficile de dire si une opération va copier la référence
d'un objet ou bien copier l'entièreté de l'objet. Cette
ambiguïté peut être la cause de comportements non
prévus, ou résulter en un programme aux piètres
performances.
2.6.13 Développement d'interfaces utilisateurs
graphiques en Visual Basic 6.0
Visual Basic permet de développer des interfaces
utilisateurs graphiques très riches. De nombreux types de logiciels
peuvent être créés avec peu d'efforts, tels que (liste non
exhaustive) : Logiciel d'édition d'images, éditeurs de texte et
applications de bases de données.
La figure 2.4 montre comment démarrer la barre des
taches
Figure 24 la barre des tach
La première fenêtre qui s'affiche lorsque vous
lancez Visual Basic vous propose de choisir le type d'application
créé.
Sélectionnez la première icône
marquée Exe standard située dans l'onglet "Nouveau", puis cliquez
sur le bouton "Ouvrir" pour afficher un nouveau projet. L'écran de
création de Visual Basic apparaît.
2.6.14 L'interface de travail de Visual Basic 6.0
édition professionnelle
Comme toutes les feuilles sous plate forme Windows
l'interface de travail se présente avec une barre de titre, suivie d'une
barre de menu et d'une barre d'outils. Diverses fenêtres s'ouvrent
suivant la configuration souhaitée, à savoir les plus
utilisées, la boîte à outils, la feuille de travail
(Form1), la fenêtre de projet, la fenêtre de
propriété.
La figure 2.5 montre la feuille de travail Form1
Figure 25 la feuile de travail Fo
II.17 Conclusion
Au long de ce chapitre nous avons présenté
quelque généralités sur les langages de programmation.
Nous avons présenté les différents langages ainsi que
leurs particularités. Dans le prochain chapitre nous décrirons le
système de contrôle assisté par ordinateur.
CHAP. III PRESENTATION DU SYSTEME
3.1 Introduction
Dans ce chapitre nous allons décrire le système de
contrôle assisté par ordinateur pour le modèle
réduit.
3.2 Schéma Bloc du système
Le schéma bloc du système est celui de la figure
3.1
Figure.3.1 schéma bloc du système 3.3
Description du Système
3.3.1 Présentation du Bloc Port Série.
Ce bloc est le port série de l'ordinateur, c'est via
ses broches que le programme envoie des impulsions. Les broches du port sont
rassemblées sur une fiche nommée DB9.
Le terme série se réfère aux
données qui sont envoyées sur un seul fil, chaque bit
étant aligné en série lors de leur envoi. Ce type de
communication est utilisé sur le système
téléphonique, car il n'utilise qu'un fil pour les données
émises dans chaque direction.
La figure 3.2 montre le connecteur à neuf broches
standard utilisé par les ports série externes les plus modernes
.Les ports série ont été utilisés pour connecter
différents périphériques, qu'il s'agisse de modems, de
traceurs, d'imprimantes, d'assistants électroniques, de stations
d'accueil, d'autres ordinateurs, de lecteurs de codes-barres et des circuits de
contrôle. Bien que la plupart des périphériques qui
utilisaient auparavant les ports série utilisent maintenant les ports
USB, certains périphériques s'en servent encore.
Figure 3.2 connecteur du port série à 9 broch
L'interface série asynchrone a été
conçue comme port de communication de système à
système. Le terme asynchrone signifie qu'aucun signal de synchronisation
(ou horloge) n'est présent, afin quelles caractères puissent
être envoyés à intervalle de temps arbitraire.
Chaque caractère qui est envoyé sur une
connexion série est encadré par un signal standard
redémarrage et d'arrêt. Un seul bit 0, appelé le bit de
démarrage, précède chaque caractère pour indiquer
au système récepteur que les huit bits suivants constituent un
octet de données. Un ou deux bits d'arrêt suivent le
caractère pour signaler que le caractère a été
envoyé. Du côté du récepteur, les caractères
sont reconnus par les signaux de démarrage et d'arrêt et non par
le moment où ils arrivent.
L'interface asynchrone est orientée caractère
et possède une surcharge d'environ 20 % pour les informations
supplémentaires qui sont nécessaires à l'identification de
chaque caractère.
Le terme série se réfère aux
données qui sont envoyées sur un seul fil, chaque bit
étant aligné en série lors de leur envoi. Ce type de
communication est utilisé sur le système
téléphonique, car il n'utilise qu'un fil pour les données
émises dans chaque direction.
Les spécifications officielles RS-232 recommandent une
longueur de câble maximale de 15 mètres. Le facteur limitant est
la capacité de charge totale des câbles et des circuits
d'entrée de l'interface. La capacité maximale est de 2500 pF
(picofarads). Des câbles spéciaux à faible capacité
peuvent effectivement augmenter considérablement la longueur de cable
maximale, jusqu'à 152 mètres, voire plus. L'utilisation
d'amplificateurs et de répéteurs de ligne peut elle aussi
augmenter encore la longueur du câble. Les Tableaux 3.1,
détaillent respectivement le brochage des connecteurs série
à neuf broches, 9 broches-25 broches.
Les anciens ordinateurs Macintosh utilisent une interface
série similaire, baptisée RS-422 (les Macintosh PowerPC
récents et tous les Mac qui utilisent une puce Intel ne disposent plus
de ports RS-422). La plupart des modems externes basés sur le port
série peuvent se connecter avec les ports RS-232 ou RS-422, mais il est
plus sûr de faire en sorte que le modem externe que vous achetez soit
pour un PC et non pour Macintosh. Le tableau 3.1 donne la description des
broches du port série.15
Tableau 3.1 Connecteur de port séie à 9 broc
Broche
|
Signal
|
Description
|
Entrées/sorties
|
1
|
DCD
|
Détection de porteuse
|
Entrée
|
2
|
RD
|
Réception de données
|
Entrée
|
3
|
TXD
|
Transmission de données
|
Sortie
|
4
|
DTR
|
Équipement prêt
|
Sortie
|
5
|
SG
|
Masse du signal
|
---
|
6
|
DSR
|
Prêt à recevoir
|
Entrée
|
7
|
RTS
|
Demande d'autorisation à émettre
|
Sortie
|
8
|
CTS
|
Autorisation d'émettre
|
Entrée
|
9
|
RI
|
Détection de sonnerie
|
Entrée
|
|
15 EINSTEIN AJ, HENZLOVA MJ, RAJAGOPALAN S,
Estimating risk of cancer associated with radiation exposure from 64 -
slice computed tomography coronary angiography, JAMA, 2007.
~ 39 ~ 3.3.2 Présentation du Bloc
Interface.
Ce Bloc se raccorde au port série de l'ordinateur qui
commande le système de contrôle. C'est la partie
électronique du système, il est composé des composants
électroniques dont le schéma est celui de la figure 3.3
Figure.3.3 Schéma de principe de l'interface
électronique.
Les tensions en provenance du port série sont de l'ordre
de 9V l'entrée de l'interface est composée de 3 diodes de Zener,
qui écrêtent ces tensions au niveau de 5V.
Ce sont les Broches DTR, RTS et TXD qui émettent les
signaux de commande de relais magnétiques.
Les armatures de ces relais commutent les résistances
pour modifier leur valeur équivalente.
Ainsi l'interface se comporte comme une resistance variable en
fonction des signaux en provenance du port série de l'ordinateur.
R1
Les valeurs de cette résistance équivalente sont
disponibles sur les broches « curseur » et « entrée
».
~ 40 ~
3.3.3 Présentation du Bloc RF du Modèle
réduit
Ce Bloc est celui qui fait la commande proportionnelle, il
convertit les commandes en provenance du port série et du
potentiomètre électronique en commande radiofréquence.
Il reçoit les arrivées des signaux <<
entrée >> et << curseur >> en provenance du
potentiomètre électronique et le converti en commandes
radiofréquences.
3.3.3 Présentation du Bloc Programme
Ce bloc est le noyau logiciel qui rend commanda blé,
l'interface électronique du potentiomètre.
Il procure des instructions qui rendent accessibles les
ressources du port de communication série de l'ordinateur.
C'est grace au module incluant les librairies dynamiques de
gestion du port que l'on parvient à changer l'état des broches du
port série.
La figure 3.4 montre le contenu du fichier module de gestion du
port série.
Figure.3.4 contenu du module d'accès au port
Il est concu à l'aide de l'environnement VB. La figure 3.5
presente la conception de l'interface utilisateur
Figure.3.5 conception de l'interface utilisateur.
Ce sont les instructions en provenance du module que le
programme principal exploite. Pour mettre une ligne du port serie, il suffit
d'invoquer cette ligne par son nom et d'ndiquer l'etat binaire que devra
prendre la broche. Le corps du programme est donné à la figure
3.6
Figure.3.6 Corps du programme principa
Lors de l'exécution, après compilation, le
programme se présente comme sur la figure 3.7
Figure~3.7 programme lancé à l'initialisation
Sur la figure 3.8 le programme à tenté de se
connecter avec succès sur le port Com1
Figure.3.8 connexion sur port sér
Si le port est injoignable, le programme renvoie l'interface de
la figure 3.9
Figure.3.9 Port injoignabl
La figure 3.10 montre une erreur sur le secod port serie lorsque
le programme a tenté de s'y connecter
Figure.3.10 erreur lors de la connexon sur le pot
série
La figure 3.11 montre le programme en fonctionnement, à
100% de regime.
Figure.3.11 fonctionnement à 100% de régime.
3.4 CONCLUSION
Dans ce Chapitre, nous avons décrit le système de
contrôle assisté par ordinateur pour hélicoptère
à modèle réduit.
Dans le quatrième chapitre, nous donnerons le
fonctionnement et la réalisation de la dite plate forme de
contrôle.
CHAP.IV FONCTIONNEMENT ET REALISATION
DU DISPOSITIF
IV.1 Introduction
Dans ce chapitre nous donnerons le fonctionnement du
système ainsi que sa réalisation.
IV.2 Fonctionnement du système
Pour un avion, la vitesse relative de l'air et de la voilure
génère une action mécanique qui permet à l'engin de
voler. On distingue deux composantes de cette action aérodynamique :
· la traînée qui est la résistance
à l'avancement. De son action sur le rotor de
l'hélicoptère, il résulte un couple tendant à faire
tourner l'appareil autour de son axe, d'où la nécessité
d'un dispositif anti couple.
· la portance qui soulève l'appareil.
Le contrôle d'un appareil repose sur la gestion de cette
portance. Alors que sur les avions, des gouvernes permettent de modifier la
portance des ailes pour virer, monté... ; Sur
l'hélicoptère, on modifie le pas et l'inclinaison des pales.
Sur l'hélicoptère on contrôle la portance
d'une pale suivant sa position par rapport à l'appareil. C'est le
rôle du plateau cyclique, pièce principale du dispositif de
commande de vol.
Pour que l'hélicoptère avance, une force
à composante horizontale est nécessaire. Si on augmente la
portance des pales lorsqu'elles sont 90° avant de passer au-dessus de la
poutre du rotor de queue (décalage angulaire du aux forces
gyroscopiques), leur plan de rotation s'incline vers l'avant, grâce
à une articulation en battement reliant chaque pale à l'axe de
rotation, et l'inclinaison de la portance produit la composante horizontale
nécessaire. Il reste toutefois une composante verticale principale qui
s'oppose au poids permettant le maintien en l'air, et la composante horizontale
motrice engendre le mouvement d'avancement, donc accélération
jusqu'à une vitesse où la traînée globale
(résistance à l'avancement de l'hélicoptère)
s'équilibrera avec la composante motrice.
Nous nous sommes proposés de commander par souci de
simplicité juste le vol stationnaire, car ne nécessitant pas
plusieurs combinaisons de commandes du point de vue manipulation.
C'est au niveau du programme que le tout débute,
l'utilisateur lance le programme et choisi le port de communication,
disponible.
En cliquant sur les boutons radio disponibles sur l'interface
utilisateur et déterminant la puissance de l'envol ; le noyau du
programme modifie les états binaires des broches
désignées.
Les sorties du port série, qui sont reliées aux
entrées de l'interface électronique, modifient les états
des signaux électriques de façon physique en fonction des
instructions du noyau.
Les variations binaires des broches RTS, DTR, et TXD sont des
images de la table de vérité qui modifient la valeur de la
résistance équivalente du réseau des résistances
montées sur la carte interface électronique.
Le tableau 4.1 montre la table de vérité selon les
broches TXD, DTR, et RTS Tableau 4.1 montre la tabe de vér
C
|
B
|
A
|
0
|
0
|
0
|
0
|
0
|
1
|
0
|
1
|
0
|
0
|
1
|
1
|
1
|
0
|
0
|
1
|
0
|
1
|
1
|
1
|
0
|
1
|
1
|
1
|
TXD
|
DTR
|
RTS
|
~ 48 ~
Comme on peut le constater sur la figure 4.1, c'est un ULN2003
qui relève le niveau électrique des signaux à appliquer
sur les bases des Driver qui pilotent les relais.
Figure.4.1 l'électronique du potentiomètre.
Le circuit intégré uln2003 contient des buffers
comme illustré sur la figure 4.2
Figure.4.2 composition interne de l'uln2003.
Ce sont les Broches DTR, RTS et TXD qui émettent les
signaux de commande de relais magnétiques.
Les armatures de ces relais commutent les résistances pour
modifier leur valeur équivalente.
Ainsi l'interface se comporte comme une résistance
variable en fonction des signaux en provenance du port série de
l'ordinateur.
Les valeurs de cette résistance équivalente sont
disponibles sur les broches « curseur » et « entrée
».
IV.3 Réalisation
Nous avons utilisé une plaquette perforée, avec des
pas de 2.4mm pour espacer les broches de composants.
Nous avons soudé les composants avec de l'étain. La
figure 4.3 montre la vue de dessous de la carte d'interface.
La figure 4.3 carte d'interface.
Lorsqu'on alimente le circuit, il faudra placer le
multimètre calibré en ohmmètre, sur les sorties de la
carte, en d'autres termes sur les bornes du potentiomètre, et brancher
le port série, sur un ordinateur, lancer le programme, puis
vérifier la disponibilité du port de communication série,
et enfin cliquer sur le choix de différentes vitesses et voir sur le
multimètre si la résistance change.
La figure 4.4 montre la carte sur laquelle nous avons
réalisé l'interface électronique.
La figure 44 l'interface électroniqu
IV.4 RESULTATS OBTENUS
Nous avons fait nos essais qui se sont avérés
concluant car avons obtenu le vol stationnaire du modèle réduit,
à partir de la commande sur notre PC et nous avons réussi
à faire voler l'hélicoptère modèle réduit
sur un vol, à 10 mètres du sol.
La figure 4.5 montre l'hélicoptère modèle
réduit au sol.
La figure 4.5 l'hélicoptère modèle
réduit au sol. La figure 4.6 montre l'hélicoptère
modèle réduit en l'air.
La figure 4.6 l'hélicoptère modèle
réduit en l'air.
IV.5 CONCLUSION
Dans ce chapitre nous avons donné de façon
concise, le fonctionnement du système de contrôle assisté
pour modèle réduit. Nous avons décrit la
réalisation de la carte interface du potentiomètre et nous avons
présente les résultats.
Conclusion générale
Tout au long de cette étude, nous avons parlé d'un
dispositif pour le contrôle assisté par ordinateur d'un
hélicoptère modèle réduit.
Au premier chapitre nous avons montré comment s'effectue
une émission radiofréquence,
Au deuxième chapitre, il a été question,
de la présentation des langages de programmation, puis nous avons
décrit le système tout entier. Au troisième chapitre et
enfin avons donné le fonctionnement du dit système au
quatrième chapitre.
Nous avons rencontré plusieurs difficultés pendant
la réalisation de notre système.
Causé par le mauvais état de nos composants
électroniques, d'une part et lors du développement, causé
par la difficulté d'obtention d'une librairie dynamique pour la gestion
des broches du port série.
Nous avons fait nos essais qui se sont avérés
concluant car avons obtenu le vol stationnaire du modèle réduit,
à partir de la commande sur notre PC.
Nous espérons que les facettes de vol que nous n'avons pas
exploité peuvent être étudies dans un avenir proche, par
les générations à venir.
Nous restons ouverts à toute proposition, à toute
amélioration.
REFERENCES BIBLIOGRAPHIQUES
[1] Alexandre Guidet, Programmation Objet en langage C++,
Ellipses, (ISBN 978-2- 7298-3693-1), 364 pages
[2] Aurélien Geron, Fatmé Tawbi, Pour mieux
développer avec C++, Édition DUNOD 1999, (ISBN
978-2-10-007348-1)
[3] Bjarne Stroustrup, Le langage C++, Pearson,
2000 [détail de l'édition]
[4] CARDON ALAIN, Modéliser et concevoir une machine
pensante, Approche de la conscience artificielle, Vuibert, 2004.
[5] HAROLD ABELSON ET GERALD JAY SUSSMAN, Structure and
Interpretation of Computer Programs MIT Press, 2001.
[6] MARTIN CAMPBELL-KELLY, Une histoire de l'industrie du
logiciel : des réservations aériennes à Sonic le
Hérisson, Vuibert, 2003.
[7] EINSTEIN AJ, HENZLOVA MJ, RAJAGOPALAN S, Estimating
risk of cancer associated with radiation exposure from 64 - slice computed
tomography coronary angiography, JAMA, 2007.
[8] TURING ALAN, GIRARD JEAN-YVES, La machine de
Turing, Les Ordinateurs et l'Intelligence, 1995.
[9] J.-L. LAURIERE, Eléments de programmation
dynamique, Collection Programmation, Ed. Gauthier-Villars, Paris, 1979.
[10] ALLIOT JEAN-MARC ET SCHIEX THOMAS, Intelligence
artificielle et informatique théorique, CEPADUES, 2002.
[11] EINSTEIN AJ, HENZLOVA MJ, RAJAGOPALAN S, Estimating risk
of cancer associated with radiation exposure from 64 - slice computed
tomography coronary
angiography, JAMA, 2007.
[12] HAROLD ABELSON ET GERALD JAY SUSSMAN, Structure and
Interpretation of Computer Programs MIT Press, 2001.
[13] J.-L. LAURIERE, Eléments de programmation
dynamique, Collection Programmation, Ed. Gauthier-Villars, Paris, 1979.
TABLE DES MATIERES
Epigraphe I
Dédicace II
Remerciements .III
Abréviations IV
Liste des figures et des tableaux V
Introduction général 1
CHAP. I GENERALITES SUR LA RADIOCOMMANDE 4
I.1 Introduction 4
I.2 Bref historique 4
I.3 Les ondes hertziennes 5
I.4 Emission d'une onde électromagnétique
6
I.5 Les spectre électromagnétique
6
I.6 Nature et propagation 8
I.8 La radiocommande 10
CHAP. II GENERALITES SUR LES LANGAGES DE PROGRAMMATION
17
II.2 L'informatique classique 17
II.3 L'évolution des langages 19
II.5 Classification des langages 20
II.6.1 Introduction 21
2.6.3 Histoire de C++ 22
2.6.4 La bibliothèque standard (C++ standard
library) 23
2.6.5 Fonctionnalités introduites par C++
23
2 .6.6 La programmation orientée objet en C++
24
L'encapsulation en C++ 25
Visual C++ 27
2.6.8 Fonctionnalités du langage 28
2.6.9 Caractéristiques de Visual Basic
28
2.6.10 Évolution de Visual Basic 29
2.6.11 Langages dérivés 31
2.6 .12 Performances et autres problèmes
32
2.6.14 L'interface de travail de Visual Basic 6.0
édition professionnelle 34
CHAP. III PRESENTATION DU SYSTEME 36
3.1 Introduction 36
3.3 Description du système 38
3.3.2 Présentation du bloc interface
41
3.3.3 Présentation du bloc RF du modèle
réduit ~~~~~~~~~~~~~~~~~~~~~~~~42 3.3.4
Présentation du bloc Programme ~~~~~~~~~~~~~~~~~~~~~~~ 42
3.4 Conclusion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~42
CHAP.IV FONCTIONNEMENT ET REALISATION DU DISPOSITIF
46
IV.1 Introduction 46
IV.2 Fonctionnement du système 48
IV.3 Réalisation 49
IV.4 Résulta obtenue 50
IV.5 Conclusion
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.52
Conclusion générale~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~53 Références
bibliographiques 54 Table des matières
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~.55
-' 57 -'
|