Projet Trakeur GPS - GSM PDF
Projet Trakeur GPS - GSM PDF
Projet Trakeur GPS - GSM PDF
d'Angers
Rapport de stage
GSM/GPS
http ://www.tecknisolar.com/
02 99 82 32 33
Acronymes
AOB Application On Board, déclinaison du module fourni par Erco & Gener, ne possèdant pas de
boîtier ou d'interface, mais seulement un logiciel embarqué.
API Application Programming Interface, interface normalisée par l'intermédiaire de laquelle le pro-
grammeur a directement accès aux fonctions d'un système d'exploitation ou d'autres programmes.
AT Jeu de commandes développé pour les modems par le fabricant HAYES. Il est devenu par la suite
un standard dans le monde des modems.
CMS Composant Monté en Surface, composant électronique soudé en surface de la carte, non tra-
versant.
Li-Ion Technologie de batterie utilisée, dont la réaction est fournie par un composé à base de lithium.
OEM Original Equipment Manufacturer, dans notre cas le produit est fourni sans boîtier ni interface
(connectique).
PCB Printed Circuit Board, circuit imprimé sur lequel sont soudés les composants.
SMS Short Message Service, mini message utilisé principalement sur les téléphones mobiles. Dans
la majorité des cas, le SMS est limité à 160 caractères.
2
Remerciements
J'aimerais remercier l'ensemble du personnel de la société TeckniSolar, pour leur accueil et leur
sympathie et plus particulièrement M. Pascal Barguidjian, responsable de l'entreprise, pour m'avoir
accepté en qualité de stagiaire, mais aussi M. MichelHaigron, mon maître de stage et ingénieur du
bureau d'études.
Merci aussi à Jérôme et Samuel, pour toute l'aide si précieuse qu'ils m'ont apportés tout au long de
la période de stage.
Enn, merci aussi à M. Laurent Hardouin, enseignant à l'ISTIA et référent pour cette période de
stage.
3
Introduction
Pour ce stage de quatrième année, j'ai décidé de faire une activité proche de mon projet profes-
sionnel : développeur orienté système embarqué. J'ai donc décidé de le réaliser au sein de l'entreprise
TeckniSolar, à Saint-Malo.
L'entreprise TeckniSolar
L'entreprise qui m'accueille pour ces trois mois se nomme TeckniSolar. Le bureau se situe à
Saint-Malo. Son eectif est de six personnes :
Le chef de l'entreprise M. Barguidjian
Deux ingénieurs du bureau d'études (dont M. Haigron, mon maître de stage)
Un technicien
Une secrétaire
Un étudiant en alternance
Son c÷ur d'activité est le développement et la réalisation de panneaux de signalisation lumineux au-
tonomes. L'éclairage de ces panneaux est réalisé avec des diodes électroluminescentes (LEDs ou DELs)
et l'apport d'énergie se fait avec des panneaux solaires ainsi qu'une batterie pour assurer l'alimentation
lors des périodes avec moins de soleil.
Aujourd'hui, la société a diversié son champ d'action. Sa principale activité reste la production de
panneaux pour la sécurité routière, mais elle travaille aussi sur diérents projets concernant aussi bien
le civil que le militaire.
On retrouvera ainsi des projets concernant une veste de pompier intelligente (possédant diérents
capteurs) mais aussi des drones dédiés à la surveillance ou la reconnaissance de territoires.
Le projet qu'il m'a été proposé de faire se situe au carrefour de diérentes idées. En eet, je travaille
sur l'étude et la conception d'un traqueur GPS. Le produit à concevoir possède une puce GPS et une
carte SIM. Ce module peut ainsi savoir à tout moment sa position et la transmettre par SMS à un
téléphone ou n'importe quel modem pouvant recevoir des messages.
Je ne suis pas parti de rien. En eet, à mon arrivé un logiciel avait déjà été développé (en Pascal)
à partir d'un ancien traqueur Tout-intégré (produit acheté directement dans le commerce). La prin-
cipale limite de cette application est quelle ne permet pas l'utilisation de plusieurs modules à la fois
et ne peut pas évoluer, contrainte par ce caractère tout-intégré. Ma tâche consiste donc à faire un
nouveau logiciel pouvant utiliser et acher à l'utilisateur plusieurs modules à la fois. Par exemple, si
vous possédez une otte de véhicules, vous pouvez à tout moment savoir quel véhicule se situe à quel
endroit et ce partout dans le monde. Le module embarquant la puce GPS et la carte SIM possède
déjà un logiciel embarqué. Cependant, le fabricant met à disposition tous les outils nécessaires pour
eacer et réécrire un nouveau programme pour ce dernier. Ainsi, si la solution pré-intégré ne nous
4
convient pas (manque de fonction par exemple), il devient facile de modier le code à l'intérieur du
micro-contrôleur.
Réalisation
Le plan de ce rapport va donc suivre la progression logique du travail eectué tout en suivant les
diérentes spécialités rencontrés.
En arrivant dans l'entreprise, j'ai commencé par prendre connaissance du logiciel qui avait été fait
précédemment. Ensuite, en attendant que le module sur lequel j'ai travaillé arrive, j'ai commencé à
développer une interface en C++ avec le framework Qt. Ce développement fera l'objet de la première
partie du rapport.
Une fois le module arrivé, j'ai commencé à faire quelques tests pour prouver le fonctionnement de
quelques fonctions de base (telles que la requête de positions). J'ai aussi agrémenté le logiciel mentionné
ci-dessus avec de nouvelles fonctions. Enn, j'ai pu réaliser des prototypes de cartes électroniques pour
pouvoir tester de manière embarqué les diérentes fonctions réalisées. La deuxième partie du rapport
sera consacré à ce développement électronique.
Suite à tout cela, une conclusion fera un bilan sur le vécu de stage, ainsi que sur les travaux réalisés
tout au long de celui-ci.
5
Sommaire
Acronymes 2
Remerciements 3
Introduction 4
I Interface utilisateur 8
0.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
0.2 Outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1 L'interface graphique 10
1.1 Achage des traqueurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2 Commandes des traqueurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3 Menu et sous-menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2 Le c÷ur du système 13
2.1 La voie série et les SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2 Les coordonnées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.3 Les cartes et l'API Google Maps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
II Électronique 21
4 Électronique générale 24
4.1 Alimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2 Antennes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Prototypages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5 Capteur de vibration 28
5.1 Composant utilisé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2 Circuit de ltrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
6
SOMMAIRE SOMMAIRE
8 Cycles de fonctionnement 37
8.1 Principe et organigramme du fonctionnement . . . . . . . . . . . . . . . . . . . . . . . 37
8.2 Cycle court . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
8.3 Cycle long . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Bilan 41
8.4 Travail eectué . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
8.5 Méthodes de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.6 Expression personnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
IV Annexes 43
A Carte électronique de support du module 44
A.1 Vue schématique de la carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
A.2 Vue du typon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
A.3 Réalisation nale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
B Outils utilisés 46
B.1 Réalisation de l'interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
B.2 Électronique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
B.3 Informatique embarqué . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Bibliographie 47
Table des gures 48
7
Première partie
Interface utilisateur
8
0.1. CONTEXTE
An de pouvoir surveiller les déplacements des diérents traqueurs, une interface sur PC est réalisée.
Cette interface permet de visualiser plusieurs traqueurs à la fois et aussi d'autres fonctions qui vont
être présentées dans cette partie.
An de ne pas alourdir cette partie, seul les parties pertinentes en rapport avec le projet seront
présentées. La création d'une interface ainsi que l'utilisation d'objet en C++ ne sera donc pas évoqué.
0.1 Contexte
Comme expliqué dans l'introduction, un logiciel avait déjà été réalisé précédemment. Ce dernier
avait été fait en Pascal, un langage similaire au C++ mais dont je ne connais pas les subtilités. Son
principal inconvénient est qu'il ne peut gérer qu'un seul traqueur à la fois. Sur cette partie du projet,
la mission était donc de rendre le logiciel de supervision multi-traqueur (ayant la possibilité d'acher
le suivi de plusieurs modules en même temps).
Après avoir étudié le logiciel pendant les premiers jours du stage et suite à une discussion avec le
dirigeant de la société, j'ai décidé de repartir sur un projet vierge, dans un langage que je maîtrise et
avec des outils que je connais.
0.2 Outils
Nokia et distribué sous plusieurs types de licences. Dans notre cas, nous utilisons une licence de type
LGPL
2 :
Ce framework a été choisi car il permet de réaliser très facilement des interfaces graphiques en
fournissant de nombreux composants standards. De plus, sa documentation est très claire et complète,
il bénécie d'une très grande communauté d'utilisateurs permettant la résolution de problème très
rapidement. Enn, il est personnalisable simplement. Si un composant graphique ou une bibliothèque
est nécessaire mais n'existe pas de base, il est facile de trouver des librairies tiers partagés par d'autres
personnes.
L'environnement de développement Qt Creator a aussi été utilisé an d'améliorer la productivité.
En eet, tous les composants sont ainsi intégrés dans un seul logiciel (développeur d'interface, documen-
tation interactive, compilateur, débuggueur, gestionnaire de version...) et augmente donc l'intégration
et l'amélioration de l'utilisation de l'ensemble.
9
Chapitre 1
L'interface graphique
L'interface graphique a pour but de présenter à l'utilisateur les diérents traqueurs qu'il utilise
mais, aussi, de les paramètrer. Elle est divisé en trois parties visibles sur la gure 1.1 :
La zone d'achage des traqueurs (vert)
La zone de réglage du traqueur sélectionné (rouge)
Une barre de menu permettant diérents règlages (bleu)
Ce chapitre va maintenant présenter chacune de ces diérentes parties, leurs rôles ainsi que quelques
détails fonctionnels.
10
1.1. AFFICHAGE DES TRAQUEURS CHAPITRE 1. L'INTERFACE GRAPHIQUE
La partie occupant le plus d'espace est naturellement celle achant les cartes des trajets des
diérents traqueurs. En eet, c'est cette section qui représente le rôle principal du projet, il est donc
normal qu'elle occupe un espace majeur.
Elle possède plusieurs rôles :
Acher la position courante et le trajet eectué par le traqueur
Filtrer l'historique des points pour n'acher qu'une portion du trajet
Donner des informations sur la nature du terrain (nom de rue, relief. . .) gràce aux diérentes
couches proposés par Google Maps
Le composant qui héberge cette zone est un QMdiArea. Ce composant particulier est en fait une
zone d'accueil permettant de recevoir plusieurs occurences d'un composant enfant. Ici, le composant
enfant sera représenté par la carte avec ses outils de réglages.
L'avantage de ce composant est qu'il permet très facilement d'arranger les fenêtres comme l'utilisateur
le souhaite. Elles peuvent se chevaucher ou être disposées en onglet (comme le font les navigateurs
web). Si l'utilisateur préfère, il peut aussi les acher en plein écran et réduire les autres en arrière
plan.
An de limiter les erreurs de manipulation, des messages d'avertissements apparaissent si l'utilisa-
teur essaie de fermer le logiciel alors que des traqueurs sont actifs. Enn, si l'utilisateur quitte tout de
même, les fenêtres sont ré-ouvertes au démarrage suivant de l'application, dans l'état et à la position
où elles étaient restées.
Certaines actions du menu deviennent aussi inaccessible. Cela évite que quel-
qu'un ne fasse des erreurs en venant toucher au logiciel.
Pour revenir avec une interface complète, la personne doit de nouveau rentrer le mot de passe initial.
Si jamais le logiciel est quitté, le mot de passe est sauvegardé (crypté avec un codage MD5) dans un
chier .ini. Ainsi, lorsque le logiciel est ouvert de nouveau, il retourne à son état limité.
La dernière zone visible sur l'interface est la barre de menu, comme vu sur la gure 1.3. Cette barre
est divisée en plusieurs sous-menus.
1.3.1 Modem
Ce sous-menu permet de gérer le modem. L'utilisateur peut ainsi le connecter ou le déconnecter.
Lorsqu'il clique sur connecter, une première fenêtre permettant de paramétrer la voie série s'ache.
Ensuite, si la voie série s'ouvre correctement, la procédure de conguration du modem se déroule (pour
plus de détails, voir la section 2.1 La voie série et les SMS).
1.3.2 Tracker
Ce sous-menu est le plus important. En eet, il gère le coeur de métier de l'application : les
traqueurs. Á partir de ce menu, on peut ajouter des traqueurs à suivre dans la zone d'achage, mais
aussi juste charger l'historique d'un traqueur déjà utilisé. Une action permet aussi de régler certains
paramètres avancés du traqueur courant (celui sélectionné sur l'achage) :
Régler les ltres logiciels du bouton SOS et du capteur de vibration
Paramètrer la durée d'un cycle du traqueur
Ajuster le comportement du ré-armement du capteur de vibration
Pour plus de détail concernant ces diérents paramètres, se référer au chapitre 8 sur la programmation
embarquée et les cycles de fonctionnement.
1.3.3 Achage
Cette option ne propose que peu d'option.
En premier, on aura un bouton à bascule permettant de mettre l'achage en mode onglet ou en-
semble de sous-fenêtres. Ensuite, une deuxième action permet de passer en mode de supervision
uniquement (mode enfant) évoqué plus haut.
12
Chapitre 2
Le c÷ur du système
Cette partie va être consacrée au c÷ur du système. Il y sera présenté les classes qui se passent de
l'interface graphique - ou qui n'en ont pas fondamentalement besoin - telles que celles interagissant avec
le modem ou encore celles gérant la conversion et l'export des coordonnées. Enn, il y sera expliqué le
fonctionnement de l'interaction C++ ↔ JavaScript utilisé pour faire de l'achage dynamique grâce à
l'API Google Maps.
2.1.1 Le modem
An de pouvoir communiquer avec le traqueur et pouvoir échanger des
SMS de conguration ou de positions, on utilise un modem USB. La com-
munication avec cet appareil se fait via une voie série émulée par le driver
du modem. Comme le framework Qt ne possède pas de composant natif
pour gérer les communications séries, on utilise une librairie tiers nommée
QextSerialPort.
An d'utiliser le modem, certaines précautions sont à prendre. Pour pou- Figure 2.1 Exemple
voir communiquer, la voie série doit être correctement paramétrée (vitesse, de Modem USB
bit de start/stop. . .etc). Ensuite, pour obtenir des informations, récupérer
des SMS, il faut utiliser des commandes AT. Ces commandes normalisées ([4][9][10]) permettent le
paramétrage du matériel mais aussi l'envoi de SMS, la lecture de SMS et d'autres fonctions.
2.1.2 Héritage
Comme expliqué précédemment, la programmation est faite en C++. Ce langage possède de nom-
breux avantages et l'on retiendra notamment celui de l'héritage. C'est dans ce cadre que l'utilisation
d'une classe particulière prend tout son sens. En eet, pour pouvoir manipuler aisément le modem, sa
classe est obtenue à partir d'héritage successif. Á la base, on part d'un objet de type QIODevice. Cet
objet est un méta-objet encadrant tout ce qui est relatif aux entrées/sorties matériels (gestion des
ux de chiers. . .etc). De cet objet dérive l'objet QextSerialPort, provenant d'une librairie tiers et
servant à communiquer avec une voie série. Enn, la classe modem créée va dériver de QextSerialPort
pour aboutir à la classe Modem.
On utilise une classe dérivée pour pouvoir lui ajouter des membres (variables) ou des méthodes
(fonctions) que la classe parente ne possède pas. Dans notre cas, voici certains membres rajoutés
notables :
db : La base de données archives gérant les messages reçus mais non traités par les traqueurs
etat : Variable indiquant si le modem est connecté et bien conguré
13
2.2. LES COORDONNÉES CHAPITRE 2. LE C×UR DU SYSTÈME
2.1.3 Fonctionnement
On hérite de la classe QextSerialPort an de pouvoir rajouter des fonctions comme vu ci-dessus.
Ce point est important car il permet de manière puissante d'améliorer le comportement de la classe de
base pour s'adapter au cas particulier qu'est celui du modem. En eet, la classe parente toute seule ne
permet pas de faire de l'enregistrement de SMS dans une base de données, ou encore ne permet pas de
faire un envoi de SMS de manière simple. Ensuite, l'utilisation du modem se fera en plusieurs étapes.
Une fois le modem réglé, on peut commencer à l'utiliser. Le modem sera utilisé pour deux actions
principales, l'envoi de SMS et leurs réceptions.
Envoi de message
L'envoi de message consiste à écrire sur la voie série d'une manière ordonnée. Tout d'abord, on
envoie la commande AT+CMGS= puis une chaîne de caractère contenant le numéro de téléphone du
destinataire (le traqueur à paramétrer). Ensuite, il faut écrire le caractère Entrée (code ASCII 13).
Enn, on peut écrire le corps du message. Pour valider l'envoi, il faut écrire le caractère ctrl+z (code
ASCII 26).
Lorsque le GPS envoie ses coordonnées au sein d'un SMS, elles sont dans un format degrés/minu-
tes. Cependant, pour qu'elles puissent être utilisée par l'API Google Maps, elles doivent être dans un
format contenant uniquement des degrés. Une fois la conversion eectuée, la position peut être achée
voire exportée pour être exploitée par un autre support.
Cette partie va présenter ces diérentes étapes.
14
2.2. LES COORDONNÉES CHAPITRE 2. LE C×UR DU SYSTÈME
2.2.1 Conversion
Comme expliqué ci-dessus, les coordonnées sont exprimées au format degrés/minutes. Notre but
est donc d'obtenir des degrés. La méthode est similaire pour la latitude et la longitude, la seule diérence
étant les valeurs maximales :
La latitude va de -90 à +90 degrés
La longitude va de -180 à +180 degrés
Pour la suite, nous utiliserons l'extrait de trame suivant :
Latitude
Dans la trame contenant les coordonnées, la latitude est représentée par le premier couple nom-
bre/lettre. La valeur contenant la coordonnée sera de la forme ddmm.mmm (dd représentant les
degrés et mm.mmm étant les minutes). Il faut donc parser la chaine pour isoler les degrés des minutes.
Dans l'exemple, on a donc 48 degrés et 7,038 minutes.
Une fois les nombres isolés, de simples opérations permettent de passer les minutes (et secondes) en
degrés.
4. Pour nir, on additionne ces résultats aux degrés initiaux et on obtient 48 + 0.1173 = 48.1173
degrés.
La lettre suivante le nombre indique si l'on se trouve au nord (N) ou au sud (S). Dans ce dernier cas,
le nombre nal est négatif, sinon il est positif.
Ici, le nombre nal sera −48.1173 degrés.
Longitude
La conversion de la longitude fonctionne de la même manière à l'exception que la forme est
dddmm.mmm (ddd représentant les degrés et mm.mmm étant les minutes). Comme on peut le
voir, la seule diérence est que les degrés initiaux de la trame possède un chire de plus.
En faisant le calcul précédent on a :
Degrés initiaux : 11
Minutes : 31
Secondes : 0.324 ∗ 60 = 19.44secondes
La longitude obtenue au nal sera donc : 11.522 degrés. La encore, la lettre indique la direction (Est
(E) ou Ouest (W)). Si la direction est d'ouest, le nombre doit être négatif.
2.2.2 Export
Une des fonctions qui a été demandée suite à une rencontre avec un client est l'export d'une
coordonnée an de l'utiliser avec un autre support. Par exemple, on peut utiliser le chier dans le GPS
d'une voiture pour ensuite être guidé vers le traqueur ou la position choisie. En exportant plusieurs
coordonnées, on peut aussi refaire le tracé sur un autre logiciel tel que Google Earth.
Format GPX
Ce premier format signie GPS eXchange [11]. C'est un format de chier normalisé et ouvert,
1
basé sur une structure XML . Il est utilisé par certains constructeurs de GPS du commerce.
1. eXtensible Markup Language (langage de balisage évolué), langage d'expression des données représenté sous forme
de balises en arbre
15
2.2. LES COORDONNÉES CHAPITRE 2. LE C×UR DU SYSTÈME
Structure
La structure de ce type de chier est faite à partir d'un format XML, où les données sont organisées
dans un système d'arbres à balises. La balise centrale, décrivant une position est la balise Waypoint :
<wpt>.
Elle possède deux propriétés importantes, lon et lat, représentant respectivement la longitude et la
latitude exprimées en degrés. D'autres propriétés peuvent servir pour donner plus de détails sur le
Waypoint tels que la vitesse, l'altitude ou la date.
Exemple
Voici un exemple de chier que l'on peut obtenir avec l'exemple de la partie précédente :
Format KML
Le format KML (Keyhole Markup Language) est lui aussi basé sur le formalisme XML [12]. Il
est utilisé principalement au sein des applications google Maps et Google Earth, mais aussi par de
nombreuses autres applications qui l'ont rendu populaires.
Structure
Son fonctionnement est similaire à celui du format GPX. La diérence se situe au niveau de la
balise utilisée. Ici, elle se nomme <Placemark>. Le Placemark contient lui-même une balise <Point>
qui contiendra la balise <coordinates> qui va renfermer les données géographiques. Dans cette balise
<coordinates>, on place la longitude, puis la latitude puis, si disponible, l'altitude. Les coordonnées
sont là encore exprimées en degrés.
Exemple
Voici un exemple de chier que l'on peut obtenir avec l'exemple de la partie précédente :
Là encore, pour décrire un trajet, il sut de mettre plusieurs balises <Placemark> <Point> <coordi-
nates> à la suite au sein de l'entité <Document>.
16
2.3. LES CARTES ET L'API GOOGLE MAPS CHAPITRE 2. LE C×UR DU SYSTÈME
An de pouvoir faire un achage interactif avec l'utilisateur, le rendu des cartes se fait à partir
de l'API Google Maps fourni par Google. Cette API permet d'acher des cartes de types diérents
types (géographiques, géopolitiques. . .etc) et à diérents niveaux de détails et de zoom. De plus, il
est possible de dessiner diérentes informations supplémentaires telles que des marqueurs référencés
géographiquement, des polygones. . ..
Son rôle est de préciser au moteur web, lorsqu'il charge la page, qu'il doit aussi charger l'api google
maps à l'adresse précisée. Ce chargement permet ensuite d'utiliser toutes les fonctions fournies par
Google.
Ensuite, une fonction nommée load() sera exécutée lors du chargement de la page. Voici son
contenu :
function load () {
var f r a n c e = new g o o g l e . maps . LatLng ( 4 6 . 7 5 9 8 4 , 1.738281);
var myOptions = {
zoom : 6,
center : france ,
mapTypeId : g o o g l e . maps . MapTypeId .ROADMAP
};
map=new g o o g l e . maps . Map( document . g e t E l e m e n t B y I d ( " map_canvas " ) , myOptions ) ;
}
Cette fonction a pour but de créer un objet de type Map de l'API Google maps. Des options précisent
le niveau de zoom ainsi que le type de fond de carte et la région sur laquelle la carte doit-être centrée.
Le résultat de ce travail peut-être vu sur la capture d'écran (2.2) suivante :
17
2.3. LES CARTES ET L'API GOOGLE MAPS CHAPITRE 2. LE C×UR DU SYSTÈME
Par exemple, si l'on voulait acher une boîte de dialogue d'alerte on pourrait faire :
La classe qui gère la carte possède une variable membre qui représente l'ensemble des positions
faites par le traqueur. Cette liste est parcourue et achée à chaque fois qu'une position est ajoutée
ou supprimée. Lorsqu'on modie un marqueur, on appelle une fonction JavaScript contenue dans le
chier carte.html. Cette fonction ajoute alors le point sur la carte par rapport aux coordonnées passées
en paramètre.
18
2.3. LES CARTES ET L'API GOOGLE MAPS CHAPITRE 2. LE C×UR DU SYSTÈME
Toutes ces fonctions peuvent être retrouvées sur la capture d'écran (2.3) suivante :
19
Chapitre 3
3.1 SMS
Comme son nom l'indique, cette classe sert à représenter ce qu'est un SMS. Son principal objectif
est de regrouper au sein de diérentes variables les diérents champs d'un SMS :
Sa date et son heure de réception
Le numéro de téléphone de l'émetteur
Le message contenu dans le message
Elle se révèle très utile lorsqu'il s'agit de faire la transition entre le modem qui reçoit les SMS et la
classe représentant le traqueur concerné. En eet, plutôt que de devoir passer plusieurs variables et
d'avoir des fonctions avec de nombreux paramètres, on se contente juste d'un seul paramètre qu'est
l'objet SMS.
3.2 Coordonnées
Pour optimiser les traitements, un objet Coordonnées a été créé. Cette objet se sert de l'héritage.
En eet, il hérite d'un objet de type QPointF qui représente un couple de deux oats, servant à
représenter une coordonnée planaire. Par rapport à une coordonnée planaire, cet objet possède d'autres
attributs an de représenter au mieux une position issue d'un GPS :
La date et l'heure du x du GPS
La qualité du x ('A' ou 'V' pour respectivement bon ou mauvais)
L'altitude et la vitesse
Le nombre de satellites utilisé au moment de l'acquisition
Le but est bien entendu encore une fois d'optimiser la logique, la lisibilité et les échanges au sein du
programme.
3.3 Tracker
Cette dernière classe représente le traqueur d'une manière virtuelle. Il est identié par un numéro
de téléphone et possède un numéro de modem avec lequel communiqué. Il sert aussi à dénir de
manière unique la base de données servant à sauvegarder toutes les coordonnées qu'il a pu émettre en
fonctionnant. Enn, il possède diérents parseurs de trame, an d'extraire les données reçues des SMS
du modem.
20
Deuxième partie
Électronique
21
Le module qui contient le récepteur GPS et le modem GSM a été acheté à la société Erco & Gener.
Ce composant se nomme GenLoc OEM AOB (Application On Board) comme vu sur la gure 3.1.
Ce module se présente donc dans sa forme la plus simple, permettant d'interfacer les signaux du
microcontrôleur comme bon nous semble. Cependant, pour que l'ensemble fonctionne correctement,
plusieurs contraintes doivent être prises en compte :
L'alimentation doit être comprise entre 3.3V et 4.5V.
Pour répondre aux cahier des charges, une détection de vibration/mouvement doit être possible.
Une alimentation externe doit pouvoir être branchée sans perturber le système.
L'ajout d'un chargeur de batterie par USB serait un plus.
Cette partie va présenter chaque sous-ensemble du montage nal comme montré sur la gure 3.2.
On commencera par les détails concernant l'alimentation du module. Ensuite, on traitera des ajouts
supplémentaires que sont le capteur de vibration et le chargeur de batterie par USB.
22
Batterie parrallèle
alimente
émission GSM
alimente
Batterie Module traqueur
réception GPS
23
recharge
réveil
inhibe
Chargeur USB
Capteur de vibration
Électronique générale
An que le module utilisé puisse fonctionner correctement, plusieurs contraintes doivent être res-
pectées. Parmi elles, se trouvent l'alimentation et les connections aux antennes (GSM et GPS) ainsi
que la possibilité de réaliser le prototype avec les moyens présents.
4.1 Alimentation
Après quelques recherches dans les documentations fournies par le constructeur [3], une information
concernant une alimentation entre 3,3 V et 4,5 V est en option. Plusieurs échanges d'email avec le
service technique du constructeur ont ainsi pu conrmer que le module pouvait être alimenté dans
cette plage, et la modication à faire a été mise en place. La seule condition est que la batterie doit
pouvoir fournir un courant pic de 1,8 A. Pour alléger la tâche de la batterie concernant ce paramètre, un
condensateur (C2) est placé au plus près des bornes de l'alimentation du traqueur. Ce condensateur est
de technologie au tantale, permettant ainsi une très grosse capacité (1000 uF) dans un encombrement
réduit (composant CMS).
Pour permettre à l'utilisateur nal de savoir si le traqueur est toujours en état de fonctionnement ou
à besoin d'être rechargé, la tension de la batterie est mesurée. Le convertisseur analogique-numérique
intégré au traqueur possède une limite à 3,3 V. La batterie pouvant délivrer une tension allant jusqu'à
4,2 V, un diviseur de tension a été placé pour diminuer la tension en entrée du convertisseur. Ce
diviseur est fait à partir des résistances R1 et R3. La valeur de la division est la suivante :
24
4.2. ANTENNES CHAPITRE 4. ÉLECTRONIQUE GÉNÉRALE
R2 33
Ratio = = = 0, 77
R1 + R2 10 + 33
Lorsque la batterie sera pleinement chargée, on lira alors une tension de 3,22V (au lieu de 4,2 V). Le
ratio inverse est ensuite paramétré dans le traqueur an de corriger la valeur lue.
Tous ces détails peuvent-êtres retrouvés sur le schéma de la gure 4.2 suivante.
4.2 Antennes
Le traqueur possède deux antennes distinctes. Une sert à la communication GSM (pour échanger
les SMS) et l'autre sert à la réception GPS (gure 4.3). Toujours dans l'optique de faire un produit
le plus compact possible, ces antennes doivent être les plus petites possibles. Le module de base est
fourni avec les deux antennes, d'une taille assez conséquente (et avec 3 mètres de câble chacune). Aucun
connecteur n'est utilisé, les câbles coaxiaux respectifs sont soudés directement sur le PCB.
GSM
Comme énoncé précédemment, cette antenne sert à la communication GSM. Elle est utilisée par
le modem intégré pour échanger les SMS de conguration ainsi que l'envoi des positions. La commu-
nication de type SMS ne nécessite pas une trop bonne qualité de réception pour pouvoir fonctionner
(contrairement aux échanges de type DATA). Il a donc été décidé de faire l'antenne directement sur
le PCB, à titre d'essai. Sur le PCB nal, on peut donc voir un l plat dessiné sur le côté de la carte.
Ce l est en fait l'antenne.
À la base, il était juste réalisé à partir du cuivre de la plaque. Après quelques tests, le cuivre a été
recouvert d'étain pour éventuellement améliorer la réception. Cette modication s'est avérée concluante
1
puisqu'on a pu observer une amélioration de 2 points (sur 31 ) de la réception.
25
4.2. ANTENNES CHAPITRE 4. ÉLECTRONIQUE GÉNÉRALE
Enn, l'antenne a été reliée au support de l'ancienne antenne avec un court câble coaxial. Ce l à
la très bonne caractéristique d'être bien isolé par rapport au bruit. En eet, il possède trois composants
principaux :
Le coeur, qui est un l conducteur transportant le signal
Une enveloppe plastique autour du coeur
Puis un conducteur, tressé autour de l'enveloppe plastique et relié à la masse pour isoler le signal.
Pour l'immédiat, cette antenne est fonctionnelle et remplie son rôle. Cependant, si l'application
évolue dans le futur et utilise un échange de données en DATA, il sera bon de retravailler sur cette
dernière, car son ecacité ne sera probablement pas susante.
GPS
Comme son nom l'indique, cette antenne est destinée à la réception des signaux émis par les GPS.
Ici, il n'est pas question de réaliser un dessin directement sur le PCB. En eet, les antennes GPS sont en
fait un ensemble intégré de récepteurs et de ltres pour décoder les signaux. La qualité de ces antennes
(comme toute antenne) est déterminée par leurs sensibilités. Comme elles sont actives (intégrant un
ltre), un autre paramètre à prendre en compte est le gain (l'ensemble permettant d'isoler le signal
utile par rapport au bruit).
Dans un premier temps, une antenne venant d'un ancien modèle de traqueur a été utilisée. Cepen-
dant, après plusieurs tests, les résultats n'étaient pas au rendez-vous. En eet, avec l'ancienne antenne,
la réception était assurée en extérieur après peu de temps et en intérieur en laissant du temps au
capteur. Avec cet autre modèle, la réception en intérieur était impossible, et en extérieur, les signaux
obtenus demandaient un temps d'allumage trop long (incompatible avec les modes de veille établi) ou
alors était peu précis. Une décision a alors été prise de réutiliser l'antenne fournie initialement. Son
câble a été revu au minimum an de ne pas encombrer. Cependant, l'antenne est enfermée dans un
boîtier, empêchant de l'extraire et de l'intégrer au mieux sur la carte réalisée.
Une dernière solution entreprise a été de commander un autre modèle d'antenne sur un site internet
spécialisé. L'antenne n'a pas pu être livré avant la n du stage, je n'ai donc pas pu faire de tests avec.
Ceci est dommage puisque ses caractéristiques étaient supérieures au modèle courant (gain maximum
de 40 dB contre 29 dB).
26
4.3. PROTOTYPAGES CHAPITRE 4. ÉLECTRONIQUE GÉNÉRALE
4.3 Prototypages
Le premier a été réalisé assez tôt et avait pour but de prouver le côté alimentation, en validant
l'alimentation depuis une source de tension entre 3,3V et 4,5V au lieu des 5V par défaut. Il a aussi
permis de vérier que le condensateur de 1000 uF était ecace et que l'empreinte du module était
exact. Enn, le convertisseur analogique numérique a pu être mis en place de manière plus ne (en
mettant en place la correction du diviseur de tension de manière logicielle par exemple).
Le second prototype devait embarquer toutes les fonctions restantes (capteur de vibration, chargeur
USB, seconde alimentation...). Il a permis de corriger plusieurs erreurs :
Certaines empreintes étaient fausses et ont dû être refaites.
Des composants étaient manquants (transistor pour bloquer le module pendant la charge USB
et résistance de tirage à l'état haut.
Le dernier prototype représente une version nale du produit. Chaque composant est soudé avec
l'empreinte qui convient, ce qui permet de vérier que tous les connecteurs sont accessibles facilement
et qu'aucun composant ne se chevauche. Le design de l'antenne GSM a aussi été rajouté (et vérié)
ainsi que de la place pour venir poser l'antenne GPS.
Des photographies du dernier PCB réalisé, ainsi que des schémas électroniques complets peuvent être
retrouvés sur l'annexe A de ce rapport.
27
Chapitre 5
Capteur de vibration
Une des caractéristiques du produit développé est sa capacité à détecter des vibrations ou un
mouvement. Cet ajout permet de gérer des cycles de veille de manière intelligente. Par exemple, tant
qu'il n'y a pas de vibration, le module reste en veille. Cette fonction est rendue possible grâçe à
l'utilisation d'un capteur passif, que je vais maintenant présenter.
Le composant utilisé est fabriqué par Sensolute sous la référence MVS0608.02. Ce composant est
passif, il n'a pas besoin d'être alimenté pour fonctionner. En réalité, c'est un simple interrupteur. En
eet, à l'intérieur se trouve une bille en métal et quatre plots métalliques aussi (constituant les bornes
du dipôles) (gure 5.1). Lorsque le composant est secoué, la bille se déplace et fait contact avec les
plots. Ainsi, le signal passe. Pour des raisons évidentes, un circuit de ltrage du bruit doit-être ajouté.
Ce circuit permet ainsi de ltrer les vibrations parasites. Par exemple, si le traqueur est posé sur une
voiture, stationnée près d'une voie de tramway, il ne doit pas se déclencher à cause de la vibration
générée par le passage d'une rame. Le constructeur met à disposition une note d'application dans une
documentation à cet eet [8].
Ce circuit possède plusieurs composants importants (gure 5.2). Tout d'abord, les résistances pla-
cées le plus à gauche (R2 et R5). Elles servent à limiter le courant qui passe dans le capteur de vibration.
Un courant trop important pourrait le détruire. L'objectif est bien entendu d'avoir un courant susam-
ment important pour le reste du circuit de ltrage, mais aussi susamment faible pour des contraintes
d'économies d'énergie.
28
5.2. CIRCUIT DE FILTRAGE CHAPITRE 5. CAPTEUR DE VIBRATION
Suite à ce petit ensemble, on trouve un condensateur de liaison avec la partie de ltrage. Cette partie
est articulée autour d'un condensateur (C3), d'une résistance qui lui est associée (R7), d'un transistor
(Q2) et sa résistance de polarisation (R6). Lorsque le capteur va être passant (un contact a lieu, dû
à une vibration), le condensateur va se charger au travers de la résistance. La tension aux bornes du
condensateur va rendre le transistor plus ou moins passant. Plus il est chargé, plus le transistor sera
passant et plus le signal observé sur la broche Vibration sera proche de 0. Si le capteur arrête de
bouger, le condensateur va alors commencer à se décharger et donc le transistor sera moins passant.
29
Chapitre 6
6.1 Principe
An de rendre l'utilisation plus facile à l'utilisateur, il a été proposé d'intégrer un chargeur de
batterie par USB. Comme dit plus tôt, nous utilisons une batterie de type li-ion. Ces batteries ont un
cycle de charge particulier à respecter pour ne pas les endommager (gure 6.1).
Il faut d'abord les charger avec un courant constant, jusqu'à atteindre la tension limite de l'élément,
soit 4,2 V. Ensuite, une deuxième étape prend place et charge la batterie sous une tension constante,
de 4.2 V, avec un courant qui diminuera progressivement. Lorsque le courant est descendu en dessous
de 3% du courant nominal de décharge, on considère la batterie chargée.
Pour la première étape de charge, un chargeur standard sans limite de courant chargera la batterie
à 1C (équivalent à une fois la capacité de la batterie, dans notre cas 1,230 A). Le chargeur que
nous souhaitons réaliser utilisera un port USB. Les caractéristiques électriques de ce dernier sont les
suivantes :
Tension de 5 V (± 5%)
Courant maximum de 500 mA (dans la norme USB 2)
An de ne pas endommager le port ou de le placer en sécurité, la charge sera limitée à 400 mA. La
charge sera donc moins rapide que celle avec un chargeur conventionnel branché sur une prise secteur.
30
6.2. COMPOSANT UTILISÉ ET CONTRAINTES
CHAPITRE 6. CHARGEUR DE BATTERIE USB
Contrainte thermique
L'alimentation du chargeur se fait à partir d'une tension de 5 V (USB). La batterie peut-être
chargée sous une tension allant de 3,3 V à 4,2 V et avec un maximum de 400 mA. Comme précisé dans
la documentation technique du composant [6], ce dernier est linéaire.
Cela signie que dans le pire des cas que le composant doit dissiper 680 mW.
Or ce composant n'est vendu que dans un boîtier de type QFP. Ce boîtier carrée mesure 3 mm de côté.
La dissipation thermique ne peut donc pas se faire entièrement par ce dernier. An de l'améliorer,
on a laissé un peu de cuivre du plan de masse sous le composant, puis, à côté de ce dernier, placé
plusieurs vias connectés au plan de masse sur la couche inférieure. Ainsi, la chaleur se diuse mieux
et le composant peut fonctionner de manière optimale. Si la chaleur n'était pas évacuée, le composant
nirait par se mettre en sécurité et le chargement de la batterie serait fait à une intensité moindre
(mode de sécurité) voire même complètement stoppée.
31
Troisième partie
Informatique embarquée
32
La dernière partie du projet est représentée par le module qui sera embarqué sur le matériel à
surveiller ou sur la personne à suivre. Ce module est programmé en C et embarque un programme
de base fourni par le fournisseur. Pour faciliter le développement, une platine de développement à été
utilisée, interfaçant ainsi toutes les entrées/sorties (gure 6.3). Comme expliqué ci-dessus, un ensemble
de fonctions de base est proposé. Nous aurions donc pu l'utiliser ainsi mais, d'origine il n'existe aucune
gestion intelligente de l'alimentation, ce qui rend son fonctionnement quelque peu inecace lors de
l'utilisation avec une batterie. Mon rôle ici a donc été d'implémenter des modes de fonctionnements
permettant de garder l'ensemble de base, qui est très ecace et fonctionnel, mais aussi des modes de
veille, permettant de fonctionner avec une batterie le plus longtemps possible.
An de gagner du temps sur l'exécution et de faire des économies en terme de nombre de SMS, j'ai
dû aussi modier la conguration par défaut du traqueur. La conguration des entrées/sorties est ainsi
faite automatiquement ainsi que tous les paramètres relatifs à la gestion du convertisseur analogique.
Le développement sur le module se fait à l'aide de l'API fournit par le constructeur [5]. Cette banque
de fonctions permet d'accéder facilement à de nombreux éléments tels que la mémoire ash, le GPS, la
voie série ou d'autres matériels. Sans cet ensemble de fonctions, il serait très dicile de développer de
nouvelles choses. En eet, le distributeur du module utilise un système d'exploitation embarqué sur ce
dernier (système ECOS). S'il ne fournissait pas d'API, il m'aurait fallu apprendre à utiliser ce système
avant de pouvoir produire des fonctions simples (et donc perdre énormément de temps).
Enn, an de garantir une exécution optimale et un gain de temps en terme de développement, j'ai
réussi à obtenir près du constructeur le code-source de base utilisé. Ainsi, je peux toujours utiliser
l'ensemble des commandes AT réalisées en amont. Cependant, n'ayant pas fait la formation proposée
par leur service, je n'ais aucun accès à leur service technique en cas de problème lié au développement.
Note : Dans les extraits de codes suivants, on retrouve la variable TabIdent. Cette variable est
issue d'une structure est une variable globale dénie par le constructeur. Elle regroupe de nombreuses
informations, allant des congurations des entrées/sorties jusqu'aux paramètres d'acquisitions régulièrs.
33
Chapitre 7
Chargement de la conguration
Pour gagner du temps au démarrage de l'application et éviter des envois de SMS inutiles, les
paramètres sont chargés depuis un espace mémoire non volatile du module (mémoire ash). Á chaque
fois qu'un paramètre utile à l'application est modié, son état est enregistré dans cette mémoire. Si
l'application démarre pour la première fois (la mémoire ash n'a pas été paramétrée), des valeurs par
défaut sont chargées :
Filtre logiciel du bouton de SOS : 3 secondes
Filtre logiciel du capteur de vibration : 100 millisecondes
Durée d'un cycle : 5 minutes
Réveil sur détection de mouvement désactivé
Voici le code permettant cette mise par défaut :
Si le module a déjà été mis sous tension auparavant, l'application utilise la mémoire ash et les
valeurs stockées dedans. La partie suivante présente donc les méthodes d'accès à la mémoire ash en
lecture et en écriture.
34
7.1. LECTURE/ÉCRITURE EN MÉMOIRE
CHAPITRE
FLASH
7. CHARGEMENT DE LA CONFIGURATION
La seconde fonction a été rajoutée ensuite, an de stocker les variables rajoutées pour l'application
modiée. Son comportement est le même que la première, mais l'adresse mémoire en ash qui sera
utilisé est diérente. Voici les grandes commandes permettant le paramétrage de la ash (dans le chier
source ash.c) :
void flash_start_myflash ()
{
s16 f l a s h S u b s R e s p o n s e = −1;
// Verifie l ' existence du Handle " MyFlash "
i f ( egm_flhGetIDCount ( " MYFLASH_handle " ) == EGM_RET_ERR_UNKNOWN_HDL)
{
// On c r e e r le Handle
while ( flashSubsResponse != OK)
{
f l a s h S u b s R e s p o n s e = e g m _ f l h S u b s c r i b e ( " MYFLASH_handle " , 4);
if ( flashSubsResponse != OK) // p r o b l e m e de creation
{
ascii bufDebug [ 1 0 0 ] ;
s p r i n t f ( bufDebug , " E r r e u r Myflash : %d \ r \ n " , f l a s h S u b s R e s p o n s e ) ;
}
}
35
7.2. INITIALISATION CHAPITRE 7. CHARGEMENT DE LA CONFIGURATION
7.2 Initialisation
Comme expliqué précédemment, lorsque le microcontrolleur démarre, il charge les valeurs par défaut
puis ensuite depuis la mémoire ash. Ceci constitue l'initialisation des valeurs de base. Cependant, elle
n'est pas susante. Une initialisation complète se passera en deux temps. Tout d'abord, les valeurs
de base sont chargées, puis les entrées/sorties sont réglées de manière physique. Ensuite, le module
se place dans le bon mode de fonctionnement (acquisition régulière ou non). Ces diérentes étapes
constituent l'initialisation automatique. Ensuite, pour que le module soit utile, il a besoin de connaitre
un numéro de téléphone auquel envoyer les SMS de position. Cette deuxième étape est l'initialisation
par SMS.
Pour régler ce paramètre et optimiser le nombre d'envoi de SMS, une commande AT a donc été ra-
jouté. Cette commande s'appelant AT+INIT reçoit en paramètre une chaîne de caractère représentant
le numéro de téléphone avec lequel communiquer. En réponse, le module renvoie un SMS avec tous les
paramètres courant de l'application (détails des ltres, durée d'un cycle. . .). Ainsi, lorsque l'interface
reçoit la réponse avec tous les détails, elle peut ajuster les diérents composants de l'objet Tracker
concerné.
Une fois le chargement des variables eectué et le message d'initialisation traité, on peut considérer
que le module est pleinement opérationnel. On peut donc faire l'utilisation d'un fonctionnement par
cycle, an de gérer au mieux l'énergie de la batterie. Ces modes de gestion sont présentés au chapitre
suivant.
36
Chapitre 8
Cycles de fonctionnement
Dans un but d'économie d'énergie, le fonctionnement non-stop initial de l'application a été rem-
placé par un fonctionnement cyclique. Cette partie va maintenant illustrer cette méthode et montrer
pourquoi elle s'avère plus ecace pour gérer la batterie dans notre cas.
Le principe du fonctionnement par cycle est de fonctionner un temps minimum sur un cycle d'une
durée connue. Pour un cycle dénit de x minutes, le traqueur mettra par exemple y minutes à eectuer
toutes les opérations demandées. Ensuite, une fois les opérations terminées, il se mettra en veille pour
compléter le temps z = x − y. Plus ce temps z sera élevé et plus long sera la durée en veille donc
meilleur sera la consommation d'énergie.
Un cycle commence toujours par les mêmes opérations. Le module démarre, s'initialise (charge les
1
variables sauvegardées) puis vérie la présence de message au bout de 45 secondes . Suite à cela, si
aucune acquisition de position n'est nécessaire, le cycle dit court se termine et le module part en
veille. Si une acquisition de position est nécessaire (acquisition ponctuelle ou régulière) un cycle dit
long commence. Le module vérie la validité du x GPS toutes les 10 secondes et envoie la position
si elle est correcte. Si au bout de trois minutes aucun x correct n'est recupéré, le module envoie une
trame vide, permettant d'assurer à l'utilisateur que le module fonctionne toujours mais que le GPS n'a
pas réussi à capter.
1. Cette durée a été choisie empiriquement. Elle garantie que la puce GSM est bien relié au réseau et donc que les
messages ont bien été reçues
37
8.1. PRINCIPE ET ORGANIGRAMME DU FONCTIONNEMENT
CHAPITRE 8. CYCLES DE FONCTIONNEMENT
38
8.2. CYCLE COURT CHAPITRE 8. CYCLES DE FONCTIONNEMENT
Comme vu ci-dessus, le but de cette partie de cycle sert à déterminer si des messages ont été reçus
et surtout s'il faut envoyer une position. Après le démarrage du traqueur, le circuit GSM va chercher à
obtenir une connexion au réseau. Ensuite, au bout de 45 secondes plusieurs cas peuvent se produire :
La carte sim a besoin d'un code pin et ce dernier n'est pas valide ⇒ mise en veille
La connexion au réseau à échouée ⇒ mise en veille
Des messages sont reçus (SANS demande de position) ⇒ Exécution des commandes contenues
puis réponse puis mise en veille
Des messages sont reçus (AVEC demande de position) ⇒ Exécution des commandes contenues
puis réponse puis départ de cycle long
La recherche de message se fait de manière similaire (même commande AT) à celle utilisée par
le modem sur l'interface de supervision. Cependant, le support étant diérent, l'implémentation est
quelque peu diérente. Ainsi, chaque commande AT exécutée sur la voie série du module GSM recevra
une réponse qui sera interpretée par une fonction dite de callback. Cette fonction sera appelée sitôt que
la le circuit GSM répond sur la voie série. On eectue ainsi quatre niveaux d'appels :
2. On parse le résultat de cette commande puis lit les messages un par un s'il y en a
Suite à la lecture des messages (si nécessaire), le traqueur se mettra en veille s'il n'a pas besoin d'envoyer
de position, sinon il passera en cycle long.
Lorsque le traqueur doit faire un envoi de positions, il passe dans un cycle long. La durée de ce cycle
n'est pas prévisible puisqu'elle dépend de l'ecacité du GPS à recevoir une position. Cette position
est consultée toutes les 10 secondes et ce dans une limite de trois minutes suite au démarrage du
module. Si aucune position n'est trouvée au bout de trois minutes, le traqueur se mettra en veille après
l'envoi d'un message avec une trame vide (sécurité permettant d'assurer à l'utilisateur que le traqueur
fonctionne toujours). Nous allons passer en revue les diérentes situations du cycle long.
Selon le temps
Ce mode permet d'obtenir une position selon un intervalle de temps prédéni. Comme le module
fonctionne selon un système de cycle régulier et à la durée connue, l'intervalle de temps entre deux
acquisitions dans ce mode ne peut-être qu'un multiple de la durée totale d'un cycle. Pour cette fonction
on utilise donc une variable représentant le nombre de cycle à eectuer avant la prochaine mesure. Cette
variable est stockée dans la mémoire ash et est décrémentée à chaque démarrage de l'application. Si la
variable vaut zéro, cela signie que l'on est dans un cycle ou la position doit être envoyée. La variable
sera donc recalculée an de redénir le nombre de cycle à faire sans envoyer de position.
39
8.3. CYCLE LONG CHAPITRE 8. CYCLES DE FONCTIONNEMENT
Exemple :
Durée d'un cycle : 10 minutes
Faire une acquisition toutes les heures (60 minutes)
On aura donc un nombre de cycle entre deux mesures qui sera de :
Interval
NCycles =
Duree
60
NCycles =
10
NCycles = 60 minutes
Ici, le nombre de cycles entre deux acquisitions automatique sera donc de 6 cycles.
En eet, an de pouvoir mesurer une distance, le traqueur doit se souvenir de la position d'origine
par rapport à laquelle il fait la comparaison. Dûs à certaines limitations (certaines fonctions déjà
intégrées par le constructeur sont compilées en librairie dont le code source n'est pas accessible), cette
fonction du traqueur est devenu problématique suite aux diverses modications eectuées sur le code
pour rendre possible l'utilisation de cycle.
Après de nombreuses recherches cette fonction n'a pas pu être remise en service pour l'instant.
Une communication avec le constructeur serait peut-être nécessaire pour se renseigner sur la méthode
de fonctionnement de cette fonction et pouvoir intégrer cette dernière au fonctionnement par cycle
développé.
40
Bilan
Ces trois mois de stage sont maintenant achevés. Ils ont été riches sur de nombreux plans, que je
vais maintenant exposer. J'exprimerais aussi en parrallèle mon ressenti vis-à-vis de tous ces aspects.
Par rapport au travail eectué et à la mission proposée, je pense avoir eu une rare chance.
En eet, pour mon projet professionnel je cherchais un stage dans le domaine des systèmes embarqués.
Durant ce projet, j'ai pu être confronté à tous les aspects de ce type de développement, allant de la
conception visible par le client pour ce qui concerne l'interface graphique jusqu'à celle invisible
en rapport à la programmation du microcontrolleur du traqueur. De plus, j'ai aussi eu l'occasion de
retravailler sur de l'électronique, ce qui m'a permis de reprendre un domaine que j'avais quelque peu
mis de côté depuis ma formation d'IUT. J'ai ainsi pu constater que toute expérience peut toujours
servir un jour !
Au-delà d'un travail uniquement technique, j'ai aussi pu mettre en oeuvre d'autres aspects de la
formation qui ne paraissent pas si déterminant lorsque l'on est à l'école. En eet, travaillant dans une
petite entreprise (5 employés), le travail d'un ingénieur est réellement pluridisciplinaire. Par exemple,
il m'a été demandé de faire une étude de coût par rapport à la production du produit, partant du prix
des composants (la matière première) jusqu'au coût de production des PCBs et de l'assemblage (main
d'oeuvre). Bien entendu, mon maître de stage m'a aidé pour me fournir des estimations par rapport
à des projets précédemment réalisés. En eet, en tant qu'étudiant ce sont des contraintes auxquelles
nous ne sommes pas souvent confronté et il n'est pas évident d'avoir une idée des frais qui sont très
spéciques.
Un autre aspect très intéressant et inattendu a été celui de la présentation à des clients. En eet,
il n'était pas rare que des clients de l'entreprise (actuels ou futurs) rendent visite au directeur. Il s'en
suivait souvent une présentation des diérents projets en cours. J'avais donc un rôle de vulgarisation
de mon travail, ce qui est très intéressant.
De plus, il arrive que certains membres de la société participent à des salons. Durant ces derniers, les
projets sont présentés au travers d'un diaporama powerpoint. J'ai donc préparer une présentation pour
mon projet, en suivant les demandes du directeur. C'est un travail intéressant, nouveau, permettant
de se rendre compte d'une autre réalité du projet : c'est un futur produit commercial.
41
8.5. MÉTHODES DE TRAVAIL CHAPITRE 8. CYCLES DE FONCTIONNEMENT
Durant ce stage, un maitre mot était autonomie. En eet, il était attendu que je sois capable
de réaliser mon travail d'ingénieur bureau d'étude en réelle autonomie. L'entreprise ayant un eectif
réduit, il n'était pas possible d'avoir quelqu'un pour m'assister en permanence.
J'ai vraiment apprécié que cela se passe ainsi, car j'ai ainsi pu mettre en oeuvre les méthodes de travail
comme il me semblait, permettant ainsi de me tester sans let.
De plus, une grande liberté m'a été laissée sur le choix des outils et de la chronologie des actions. Le
fait de pouvoir travailler dans l'ordre souhaité a vraiment des avantages. Par exemple, pouvoir faire de
l'électronique lorsque le développement de l'interface devient long est appréciable. Cela permet de se
changer les idées mais aussi de prendre du recul, qui permet ainsi de se poser des questions sous un
regard plus neuf et critique. Cependant, des choix d'ordres logiques apparaissent naturellement aussi
et doivent-être pris en compte. Par exemple, avant de nir le développement embarqué il est bon de
réaliser des prototypes électroniques pour pouvoir valider certaines fonctions. Cela évite d'aller trop
loin d'un côté et de risquer de faire du travail pour rien car une partie n'est pas physiquement possible.
Pour ce qui est des techniques de travail et d'organisation, le travail en petite entreprise a un côté très
agréable. Tout va vite. En eet, la prise de décision est plutôt rapide puisque les intermédiaires sont
limités au minimum, tout le monde se connait et se parle. Sur un autre aspect tel que la réalisation
de prototype électronique, là encore les choses se font rapidement. La machine à réaliser les cartes
étant sur place, je pouvais réaliser moi-même mes prototypes. C'est un gros avantage d'un point de
vue intégration car en faisant soi-même les choses on se rend mieux compte de l'ensemble. Toujours à
propos de la vitesse d'action, on réalise aussi plus vite ses erreurs. En eet, au moment de souder les
composants du second PCB je me suis rendu compte qu'une partie de mes empreintes de composants
étaient fausses. Ayant fait le typon quelques heures avant, j'ai facilement pu revenir dessus pour le
modier et l'adapter au fur et à mesure.
Durant l'année scolaire, j'ai eu l'occasion de réaliser plusieurs projets d'équipes (projet d'année et
concours informatique). Durant ce stage, j'étais plus en solitaire. Ainsi, j'ai pu comparer les avantages
et les inconvénients. L'un m'a appris qu'il était important de connaitre ses collaborateurs et savoir se
repartir un travail correctement pour être ecace. L'autre m'a montré que travailler sans contrainte
humaine n'a pas que des avantages. En eet, pouvoir déléguer une tâche pour pouvoir prendre du
recul est un avantage dans certaines situations. Cependant, sans facteur humain il y a aussi un gain
de temps pour toutes les prises de décisions puisqu'aucun membre d'équipe n'est là pour les nuancer.
Dans mon cas, les objectifs ont été établis au début du stage comme des grandes lignes directrices,
accompagnées de l'ancien projet comme exemple initial. L'autonomie a ensuite été mise en jeu, ponctuée
par des échanges durant le stage an de s'assurer que je n'étais pas trop en retard ou sur une mauvaise
voie.
Ce fut donc une expérience vraiment enrichissante. De plus, pouvoir travailler dans un domaine qui
m'intéresse, sur un projet moderne et innovant est quelque chose de vraiment captivant.
42
Quatrième partie
Annexes
43
Annexe A
44
A.2. VUE DU TYPON ANNEXE A. CARTE ÉLECTRONIQUE DE SUPPORT DU MODULE
A.2.1 Top
A.2.2 Bottom
A.3.1 Top
A.3.2 Bottom
45
Annexe B
Outils utilisés
B.2 Électronique
46
Bibliographie
[1] Libqxt. http ://dev.libqxt.org/libqxt/wiki/Home.
[3] Erco & Gener. User Guide - GenLoc OEM AOB. Erco & Gener, 2010.
EG_GenLocOEM_AOB_1008_UG_001_FR.pdf.
[4] Erco & Gener. Command List - EaseLoc V2. Erco & Gener, 2011.
EG_EaseLoc_V2_CL_007_UK.pdf.
[5] Erco & Gener. EGM Library User Guide (for AOB products). Erco & Gener, 2011.
EG_EGM_UG_225_UK.pdf.
[8] Sensolute. APPLICATION NOTE, Micro Vibration Sensor. Sensolute, 2011. page 10.
47
Table des gures
1 Logo de l'entreprise TeckniSolar SENI . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Le logo du framework Qt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
48
Résumé
Ce rapport présente l'activité de stage eectué au sein de l'entreprise TeckniSolar situé à Saint-
Malo, en Bretagne, entre le 2 mai et le 29 juillet 2011.
La première est le développement d'une interface utilisateur pour la supervision des traqueurs. Elle
est faite en C++ et avec le framework Qt.
La seconde est la réalisation d'une carte électronique servant de support au module utilisé. Elle
permet d'assurer l'alimentation et sert d'interface avec les capteurs à rajouter.
Une étude sur la pluridisciplinarité du travail du développeur de système embarqué sera la base de
la réexion de ce rapport. Ensuite, un bilan sera fait par rapport à cette question, puis d'un point de
vue personnel par rapport à l'expérience de stage.