477
Nombre total de vues
477
Voir sur TechyLib
0
Vues depuis Embeds
0
Favoris
13
Téléchargements
Après avoir fait votre sélection, copiez/collez le code ci-dessous.
Gendre Laurent
Polytech' Nice Sophia-Antipolis
1645 route des lucioles – Parc de Sophia Antipolis
06410 BIOT
Rapport de stage technicien – été 2007
Wireless Care
Mr. Laurent Barnier
NXP
505 Route des Lucioles 06560 VALBONNE
Polytech' Nice Sophia Antipolis
Remerciements
Avant toutes choses, je tiens à remercier les personnes sans qui mon stage n’aurait pas
pu avoir lieu :
–
Mme Icart, Responsable des stages.
–
M. Henri Braquet, responsable des projets à l'EPU.
–
M. Laurent Barnier (notre Maître de Stage et directeur de l'innovation chez NXP)
–
M. Eric Pascual (notre responsable au CSTB)
Je remercie également les professeurs à l'EPU, les employés de NXP et les employés du
CSTB qui nous ont donné de leur temps pour nous aider.
Wireless Care
2
Rapport de stage
Polytech' Nice Sophia Antipolis
Table des matières
1 Introduction
.........................................................................................................................
5
2 Les entreprises et le contexte
.............................................................................................
6
2.1 Le challenge Jeunes Pousses
.....................................................................................
6
2.2 NXP
..............................................................................................................................
7
2.3 CSTB
.........................................................................................................................
10
3 Le Projet Wireless Care
....................................................................................................
14
3.1 Sujet
...........................................................................................................................
14
3.2 Etude du matériel
.......................................................................................................
15
4 Gestion du projet
...............................................................................................................
19
4.1 Méthodologie et planning
..........................................................................................
19
4.2 Ressources
................................................................................................................
21
5 Conception et réalisation
..................................................................................................
22
5.1 Conception de la carte électronique et de la liaison bluetooth
..................................
22
5.1.1 La carte électronique (Bracelet)
.........................................................................
22
5.1.2 La transmission Bluetooth
..................................................................................
25
5.2 Conception d'une base de données
..........................................................................
26
5.3 Conception de la plate forme de maintien à domicile
...............................................
30
5.3.1 Réalisation de la gestion des données Bluetooth/IP
..........................................
30
5.3.2 La liaison IP
........................................................................................................
33
5.3.3 Réalisation de la gestion des données IP/SQL
..................................................
33
5.4 Conception de la plate forme de maintien à l'extérieur
.............................................
35
5.4.1 Réalisation du programme J2ME
.......................................................................
35
5.4.2 Transmission Bluetooth vers le téléphone
.........................................................
38
5.4.3 Transmission par le WAP sur une bdd
...............................................................
39
6 Evolutions
..........................................................................................................................
40
7 Conclusion
........................................................................................................................
43
Wireless Care
3
Rapport de stage
Polytech' Nice Sophia Antipolis
Index des illustrations
Illustration 1: L'équipe Wireless Care
...................................................................................
6
Illustration 2: Répartition des employés dans le monde
.......................................................
9
Illustration 3: Répartition des ventes dans le monde
............................................................
9
Illustration 4: Départements du CSTB
................................................................................
12
Illustration 5: Carte de mesure
............................................................................................
16
Illustration 6: Mobile
............................................................................................................
16
Illustration 7: Dongle Bluetooth BL830
...............................................................................
17
Illustration 8: Dongle Bluetooth Belkin
................................................................................
17
Illustration 9: Module Bluetooth F2M03C2
..........................................................................
17
Illustration 10: Lecteur de glycémie
....................................................................................
18
Illustration 11: Vue interne du lecteur de glycémie
.............................................................
18
Illustration 12: Diagramme de Gantt
...................................................................................
20
Illustration 13: Architecture Générale
.................................................................................
22
Illustration 14: Schéma interne du bracelet
........................................................................
23
Illustration 15: PCB face composants
.................................................................................
23
Illustration 16: PCB face pistes
...........................................................................................
23
Illustration 17: Elevateur de tension
...................................................................................
25
Illustration 18: Base de données
.........................................................................................
26
Illustration 19: Enregistrements dans la base de données
.................................................
29
Illustration 20: Interface bluetooth/IP
..................................................................................
32
Illustration 21: Console Netbeans
.......................................................................................
34
Illustration 22: Simulateur d'interface
..................................................................................
36
Illustration 23: Structure d'un MIDLET
................................................................................
36
Illustration 24: Diagramme de conception
..........................................................................
37
Illustration 25: Exemple de configuration du F2M
..............................................................
40
Illustration 26: Brochage du module F2M
...........................................................................
41
Illustration 27: Commandes du lecteur de glycémie
...........................................................
42
Wireless Care
4
Rapport de stage
Polytech' Nice Sophia Antipolis
1
Introduction
Dans le cadre de nos études à l'école polytechnique de Nice Sophia-Antipolis, nous
avons
été amené à effectuer un
stage technicien
. C'est ainsi que dans la continuité de
notre
projet d'étude
Elec4, notre stage s'est déroulé en collaboration avec l'entreprise
NX P
. Notre projet est en fait un projet innovant qui est réalisé dans le cadre du
Challenge Jeunes Pousses
, un challenge qui a la
particularité d'être un concours de
création d'entreprise innovante. Dans un soucis d'organisation, la
majeure partie de notre
stage s'est déroulé du 05 Juillet au 10 Août 2007 dans les locaux du
CSTB
(Centre
Scientifique et Technique du Bâtiment) situé en face de NXP à Sophia-Antipolis. Il faut tout
de même savoir que NXP et le CSTB collaborent ensemble sur un projet de grande
envergure appelé projet
Gerhome
qui permet notamment le maintien à domicile de
personnes âgées, handicapées, etc ...
Not re projet réal isé pendant l'année scolai re et pendant le stage s'i nt i t ule
Wi reless Care
.
Le but du stage était de réaliser une chaîne de mesure pour le patient à domicile et une
chaîne de mesure pour le patient en déplacement. Différentes technologies rentrent en
compte dans la conception des deux systèmes (Liaison série, Bluetooth, Liaison IP,
Requête URL) et ainsi différents langages de programmation seront utilisés (C, JAVA,
J2ME, PHP, SQL).
Ce document présente l’évolution du travail durant le
stage
.
Une version numérique de ce document se trouve sur internet à :
http://www.esinsa.free.fr/Rapport/ELEC4/Stage/Rapport.pdf
Ces fichiers ont été générés avec OpenOffice. Les sources sont disponibles à :
h ttp ://www.esinsa.free.fr/Rapport/ELEC4/Stage/Rapport.odt
Wireless Care
5
Rapport de stage
Polytech' Nice Sophia Antipolis
2
Les entreprises et le contexte
2.1
Le challenge Jeunes Pousses
Notre projet a vu le jour dans le cadre du challenge Jeunes Pousses au cours de l'année.
Ce challenge organisé par Telecom Valley consiste à créer un projet innovant. Il est très
intéressant dans la mesure où il a
permis à
l'équipe Wireless Care d'acquérir des
compétences sur la création d'entreprise. L'équipe du projet était constitué de 3 élèves
ingénieurs de Polytech' Nice Elec et de 3 élèves commerciaux de l'Edhec.
De gauche a droite :
Hainzelin Jean Baptiste (
Polytech'Nice Sophia Antipolis
)
Setboun Anthony (
E DHEC
)
L'Hilali Adnan (
Polytech'Nice Sophia Antipolis
)
Ingham Gilles (
E DHEC
)
Gicquel Mathieu (
E DHEC
)
Gendre Laurent (
Polytech'Nice Sophia Antipolis
)
Wireless Care
6
Rapport de stage
Illustration
1
: L'équipe Wireless Care
Polytech' Nice Sophia Antipolis
2.2
NXP
Le stage s'est effectué en collaboration avec NXP :
NX P Semiconductors France
505 rte Lucioles 06560 VALBONNE
04 92 96 11 00
http://www.nxp.com/
NXP est une société créée le 1er septembre 2006 à partir de la scission de la division
semi-conducteurs de
Philips
.
Pour l'historique de la société, on peut dire que tout à commencé suite à une décision de
séparation de la branche Philips Semi-Conducteurs en Décembre 2005 par Frans van
Houten, le PDG de Philips Semiconductors. Dès lors, en Août 2006, 80.1% de Philips
Semiconductors est vendu à un groupe d'investisseurs privés américain (Kohlberg Kravis
Roberts & Co. (KKR), Silver Lake Partners et AlpInvest Partners NV) .
La nouvelle société créée s'appelle
NXP
. Le nom
NX P
fait référence au slogan
Wireless Care
7
Rapport de stage
Polytech' Nice Sophia Antipolis
Consumer Next Experience
ainsi qu'à la plateforme multimedia
Nexperia
de Philips
Semiconductors.
En 2006, NXP pointe tout de même à la 10e place parmi les vingt plus grands fabricants
de semi-conducteurs avec 2,3% de parts de marché.
Produits
Mobile :
L'industrie NXP est la précurseuse des solutions multimédias sur téléphone
comme la TV sur téléphone, la connectivité (Bluetooth, WLAN, UMA, NFC), les jeux,
l'audio MP3, la vidéo MP4, l'imagerie digitale et les services GPS.
Maison :
Les solutions basées sur Nexperia de NXP sont des composants audio/video
qui permettent à des fabricants de concevoir des systèmes multimédias de dernière
génération.
I dentification :
Les nouvelles technologies NXP sont conçues pour améliorer la vie et
la sécurité des personnes. La technologie RFID (Radio Frequency Identification) est utilisé
pour la médecine et les sytèmes de tickets. Par contre, la technologie NFC (Near Field
Communication) est conçue pour des accès immédiats complètement sécurisés aux
différents systèmes et services. Certains téléphones sont déjà équippés de NFC.
Véhicules :
La gamme Nexperia comprend des processeurs pour véhicules qui offrent
une qualité sonore exceptionnelle. De plus , les technologies réseaux embarquées comme
FlexRay augmentent la sécurité des véhicules avec une solution RF.
Semi-conducteurs :
NXP a une gamme impressionante de semi-conducteurs depuis
des blocs basiques comme des horloges ou des amplificateurs jusqu'à des blocs plus
sophistiqués qui améliorent le traitement multimédia, les connections sans fils et les
communications réseaux. Les puces produitent permettent entre autre des économies
d'espace, de gains sur les batteries et d'une implémentation plus rapide.
Logiciels :
NXP est un leader en ce qui concerne les logiciels qui améliorent la qualité
du son, de la voix et de la vidéo sur les téléphones.
Wireless Care
8
Rapport de stage
Polytech' Nice Sophia Antipolis
E mployés
(
Environ 37000 personnes dans plus de 20 pays)
Ventes
Wireless Care
9
Rapport de stage
Illustration
2
: Répartition des employés
dans le monde
Europe
Asie
Chine
Amerique
Illustration
3
: Répartition des ventes dans
le monde
Chine
Pays-Bas
Singapour
USA
Taiwan
Corée du sud
Allemagne
Autres
Polytech' Nice Sophia Antipolis
2.3
CSTB
Dans un soucis de locaux, notre stage s'est déroulé au CSTB à Sophia-Antipolis.
Le CSTB travaille en collaboration avec NXP sur le projet Gerhome.
Centre scientifique te technique du bâtiment (CSTB)
290 rte Lucioles 06560 VALBONNE
04 93 95 67 00
http://www.cstb.fr/
Avec, pour finalité, l’amélioration du bien-être et de la sécurité dans les bâtiments et leur
environnement, le CSTB exerce quatre métiers complémentaires : recherche, ingénierie
innovante, évaluation de la qualité et diffusion du savoir. Associés à ses domaines
d’expertise, ils lui permettent une approche globale du bâtiment, élargie à son
environnement urbain, aux services et aux nouvelles technologies de l’information et de la
communication.
Créé en 1947, le CSTB est un établissement public à caractère industriel et commercial
(EPIC), placé sous la tutelle conjointe du ministre du Logement et de la Ville et du ministre
de l'Ecologie, du Développement et de l'Aménagement Durables, Direction Générale de
l’Urbanisme, de l’Habitat et de la Construction.
Avec ses filiales :
•
ACOUSTB
(pour les études d’environnement acoustique),
•
CEQUAMI
(
www.constructeurs-nf.fr
) (pour la certification NF Maison Individuelle)
•
Aérodynamique Eiffel
(
www.aerodynamiqueeiffel.fr
) (pour l'aérodynamique
appliquée et l'aéraulique industrielle),
•
Certivéa
(certification des acteurs et des ouvrages de construction)
,
Wireless Care
10
Rapport de stage
Polytech' Nice Sophia Antipolis
Le CSTB est un établissement à la pointe de l’innovation dans le domaine de la
construction. Son fonctionnement est soumis à plusieurs autorités et instances de décision
et de contrôle : le Commissaire du gouvernement est le directeur général de l’Urbanisme,
de l’Habitat et de la Construction, le Conseil d’Administration, composé de six membres
représentants de l’État, six personnalités qualifiées et six représentants des salariés, est
présidé par Alain Maugard ; le contrôle financier et économique est assuré par Jean
Brunel, chef de mission de contrôle économique et financier.
Par ailleurs, en tant qu’organisme de recherche, le CSTB est doté d’un comité consultatif,
chargé d’orienter ses programmes de recherche. Composé de personnalités issues des
milieux professionnels du bâtiment, il est présidé par Yves Farge ; d’un conseil
scientifique, chargé d’évaluer ses compétences scientifiques et d’élargir ses relations avec
les laboratoires extérieurs, et dont la présidence est assurée par Jacques Varet, directeur
de la prospective du BRGM (Bureau de Recherche Géologique et Minière).
Wireless Care
11
Rapport de stage
Polytech' Nice Sophia Antipolis
Départements
Le CSTB comprend huit départements organisés autour de quatre thèmes
majeurs
implantés sur 5 sites : Marne la vallée, Paris, Nantes, Grenoble et Sophia
Antipolis.
Wireless Care
12
Rapport de stage
Illustration
4
: Départements du CSTB
Polytech' Nice Sophia Antipolis
Département technologie de l'information et diffusion du savoir
Très fortement impliqué dans de nombreux programmes de recherche nationaux et
européens, le CSTB au travers du département TIDS occupe une position de leader dans
le développement des applications et usages des technologies de l'information et de la
communication appliquées dans le secteur de la construction.
Les projets de recherche, renouvelés et menés en partenariat avec les organisations
professionnelles, des organismes de recherche spécialisés et des équipes universitaires,
ont pour but d'appliquer aux métiers du bâtiment les technologies informatiques et de
communication.
Les activités de ce service recouvrent entre autre des travaux de recherche, réalisés
dans le cadre de projets nationaux ou européens (programme " Information Society
Technologies " de la CEE), portant principalement sur :
●
l'exploration des technologies innovantes pour les bâtiments intelligents :
étude
de services d'aide au maintien à domicile des personnes dépendantes,
travaux sur la communication entre objets du bâtiment et ses applications. Cet axe
de recherche assume la place de coordinateur scientifique du projet GERHOME.
●
la modélisation des phénomènes physiques, la simulation numérique dans les
domaines thermo-hydro-mécanique, interaction fluide-structure et endommagement
●
l'utilisation des maquettes numériques 3D et du couplage simulations / Réalité
Virtuelle pour la conception et la communication de projets architecturaux,
d'aménagement urbain ou du territoire.
●
l'ingénierie documentaire, les technologies Internet appliquées à la publication
d'informations, la consultation de bases de données, au travail collaboratif, à la
mobilité.
Pour conclure sur le lieu de travail (CSTB), nous n'avions pas d'horaires fixes mais il fallait
effectuer un minimum de 35h/semaine.
Wireless Care
13
Rapport de stage
Polytech' Nice Sophia Antipolis
3
Le Projet Wireless Care
3.1
Sujet
Not re projet durant l'année consistai t à réal iser des mesures de températ ures
et de t ransmett re les données en série à un dongle bl uetooth qui l ui même
t ransmettai t les données à un téléphone.
Nous avions réal isé les premières étapes du projet global, c'est à di re :
●
Réal isat i on de mesures de températ ure sur pl aquette élect roni que.
●
Réal isat i on de l a t ransmission série + bl uetoot h.
●
Pr ogrammat i on du microcont rôleur en C.
●
Pr ogrammat i on par t iel le des menus du téléphone en J2ME.
Le stage technicien nous a permis de continuer ce projet.
Le but du stage était de réaliser
différentes
chaînes de mesures
(une chaîne pour le patient à
domicile et une autre
chaîne pour le patient en déplacement).
En ce qui concerne la partie « en déplacement » :
Bluetooth
Requête URL
En ce qui concerne la partie « à domicile » :
Bluetooth Liaison IP
Le principe étant d'effectuer des mesures via une carte de mesure (bracelet) et d'envoyer
les mesures sur un ordinateur lorsque le patient est chez lui ou vers un téléphone lorsqu'il
se déplace. Ensuite, à partir du téléphone ou de l'ordinateur on envoi les données sur une
Wireless Care
14
Rapport de stage
Carte de mesure
Téléphone
Serveur (Base de données)
Carte de mesure
Ordinateur (BOX)
Serveur (Base de données)
Polytech' Nice Sophia Antipolis
base de données stockée sur un serveur.
Le but final était de faire une démo à la fin du stage et d'utiliser les briques existantes au
mieux.
Le stage s'est décomposé en 8 lots :
Lot1 : Bluetooth Bracelet (carte de mesures)
Lot2 : Bluetooth Gerbox (ordinateur à domicile)
Lot3 : Liaison Bluetooth Bracelet/Gerbox
Lot4 : Gerbox : message Bluetooth vers transmission IP
Lot5 : Bluetooth téléphone mobile et menus
Lot6 : Mobile : message Bluetooth vers transmission choisie
Lot7 : Réception message sur base de données (serveur) et affichage
Lot8 : Travail sur d'autres capteurs
En parallèle, il fallait bien sûre réaliser la carte de mesures.
3.2
Etude du matériel
Le matériel que nous avons utilisé durant notre stage :
●
La carte de mesures
●
Ordinateurs portable Dell
●
Téléphone portable Sony Ericsson W830i
●
un dongle Bluetooth BL830 (port Série)
●
un dongle Bluetooth Belkin (port USB)
●
Un module Bluetooth F2M03C2 avec son kit de développement
●
Un lecteur de glycémie
La description de chaque composant ainsi que son utilité va donc être effectuée.
Wireless Care
15
Rapport de stage
Polytech' Nice Sophia Antipolis
La carte de mesures :
Ceci est la carte que nous avons conçue.
Elle est alimentée par deux piles 9V et possède un interrupteur On/Off et un interrupteur
de mesure. La donnée est convertie et envoyée par liaison série vers le dongle Bluetooth
BL 830.
Les ordinateurs portables :
Les ordinateurs portables ont été utiles afin de programmer en JAVA sous NetBeans et de
réaliser le circuit éléctronique sous Eagle. Un des ordinateurs portable a servi a simuler la
Gerbox et un autre ordinateur portable a servi à simuler le serveur de base de données.
Le téléphone portable :
Ce téléphone a permis de communiquer en Bluetooth grâce au profil
SPP (Serial Port Profil) et sur internet avec le WAP.
Nous avons chargé notre programme J2ME sur le téléphone puisque
celui ci est compatible MIDP 2.0 et CDLC 1.1 pour les développeurs.
Wireless Care
16
Rapport de stage
Illustration
5
: Carte de mesure
Illustration
6
:
Mobile
Polytech' Nice Sophia Antipolis
Dongle Bluetooth BL-830 :
Ce dongle est un module qui permet de communiquer
avec la technologie sans fils Bluetooth à partir d'une
connection RS232 9 broches (portée : 20 m). Il permet
entre autre de communiquer depuis la carte de mesures
vers le téléphone via le profil SPP.
Dongle Bluetooth Belkin :
Ce dongle est un module qui permet de communiquer
avec la technologie sans fils Bluetooth (en étant connecté
au port USB d'une machine ; portée : 100 m). Il est utilisé
sur la Gerbox (un ordinateur) pour communiquer avec
l'autre dongle Bluetooth.
Module Bluetooth F2M03C2 :
kit de developpement
module miniature
Bluetooth détachable
Ce module sera utilisé pour l'extension du projet afin de limiter l'encombrement du
dispositif Bluetooth.
Wireless Care
17
Rapport de stage
Illustration
7
: Dongle
Bluetooth BL830
Illustration
8
: Dongle
Bluetooth Belkin
Illustration
9
: Module Bluetooth
F2M03C2
Polytech' Nice Sophia Antipolis
Lecteur de glycémie :
Ce lecteur permet d’obtenir le taux de glucose dans le sang.
Pour ce faire, il suffit de se piquer le doigt puis d'appliquer une goutte de sang sur la
languette de mesure, ainsi un taux s’affiche sur l’écran LCD du lecteur (mise en mémoire).
On peut communiquer entre le lecteur via son jack que l'on peut relier au câble de liaison
série.
Wireless Care
18
Rapport de stage
Illustration
10
: Lecteur de glycémie
Illustration
11
: Vue interne du lecteur de
glycémie
Polytech' Nice Sophia Antipolis
4
Gestion du projet
4.1
Méthodologie et planning
La phase de recherche préalable avait déjà été effectuée avant le stage, donc au
commencement du stage, il nous fallait vérifier la viabilité de la solution de transmission.
Ainsi, durant une période que nous avions fixée à une semaine, nous avions décidé de
faire des tests sur les transmissions.
Au terme de ces tests précurseurs, nous savions que la solution était viable grâce à la
réception des caractères par Bluetooth. Dès lors, une phase de conception plus
appropriée était possible. Puis nous avons procédé à la phase de réalisation qui nous a
amené à produire la première version du produit. Enfin, des phases de débugage/tests
finaux se sont succédées pour chaque sortie des
nouvelles versions.
Nous faisions souvent le point sur l’avancement du projet au sein du groupe de travail
composé de trois individus. Nous travaillions en collaboration de manière a ce que tout
problème de programmation soit vite résolu. Chaque membre du groupe de travail a donc
pu toucher a chaque partie du projet. Nous n'avons toutefois pas travaillé à plusieurs sur
un point unique du projet.
La figure Page suivante présente le planning du projet pendant la durée du stage.
Les sources de ce fichier générées à l'aide de GanttProject sont disponibles :
h ttp ://www.esinsa.free.fr/Rapport/ELEC4/Stage/Gantt.gan
(voir le sujet pour les différents lots)
Wireless Care
19
Rapport de stage
Polytech' Nice Sophia Antipolis
Wireless Care
20
Rapport de stage
Illustration
12
: Diagramme de Gantt
Polytech' Nice Sophia Antipolis
4.2
Ressources
Pour mener à bien la mission, l’équipe était composé d'un tuteur de stage de NXP, d'un
responsable au CSTB et des stagiaires. Nous bénéficions des locaux climatisés du CSTB
ainsi que du personnel du CSTB et de NXP.
Ressources matérielles
Nous avions à notre disposition le matériel déjà décrit.
Un des Pcs portables simulait en fait à la Gerbox (ordinateur de réception des mesures)
et un autre servait de serveur SQL (base de données) pour stocker les données.
Financièrement, il n'avait pas été prévu de gros investissement mais la Télécom Valley
(partenaire du Challenge Jeunes Pousses) subvenait à nos besoins. Ainsi, la solution que
nous avons réalisée ne nous à pas coûté beaucoup, si ce n’est le temps passé à la
développer.
Ressources humai nes
Une grosse partie de l’étude préliminaire n’aurait pu être menée sans l’assistance de Mr
Braquet, Mr Barnier et Mr Pascual pour :
– leur contribution à éclaircir la solution.
– les questions se rapportant à la réalisation en générale.
– leurs conseils sur la conception.
Wireless Care
21
Rapport de stage
Polytech' Nice Sophia Antipolis
5
Conception et réalisation
5.1
Conception de la carte électronique et de la liaison bluetooth
5.1.1
La carte électronique (Bracelet)
Schéma de principe :
Le montage électronique se voit constitué de différentes parties telles que celle sur le
capteur de température avec son module d'adaptation ou celle sur le microcontrôleur et
son driver RS232.
Wireless Care
22
Rapport de stage
Illustration
13
: Architecture Générale
Polytech' Nice Sophia Antipolis
Le PC B :
Le PCB (Printed Circuit Board) a été réalisé à l’aide du logiciel Eagle Layout. On l'a
optimisé au maximum pour que la carte soit simple couche. Notre routage n'étant pas
parfait et l'autoroutage n'ayant pas trouvé de solution satisfaisante, il a fallut mettre deux
fils coté composants. Voici les schémas de la carte :
Wireless Care
23
Rapport de stage
Illustration
14
: Schéma interne du bracelet
Capteur de
Température
Interrupteur
Module de mise
en forme du signal
Signaux de
contrôle
Driver RS232
Données 8 bits
Microcontrôleur
8 bits
CAN
Signaux
à émettre
Batterie
(Alimentation
de l’ensemble)
Illustration
16
: PCB face
pistes
Illustration
15
: PCB face
composants
Polytech' Nice Sophia Antipolis
Fabrication :
Le CSTB possèdait un atelier afin de réaliser les cartes électroniques, ainsi nous avons pu
réaliser la notre suivant un processus de fabrication précis :
●
Insolation de la plaque de bakélite avec le typon
●
Polymérisation par les ultraviolets
●
Trempage dans le liquide révélateur
●
Attaque du cuivre avec le perchlorure de fer
●
Frottement du circuit avec de l'acétone afin d'enlever la résine
●
Perçage des trous pour les composants
●
Soudage des composants (traversants)
A la fin de la fabrication, il a fallut réaliser les premiers tests avec l'Ohmmètre pour vérifier
la continuité des pistes, tout fonctionnait. La liaison Bluetooth a ensuite été testée mais il y
avait un problème de correspondance entre le RX/TX du port série de la carte et celui du
dongle bluetooth, le port a donc été resoudé suivant les nouvelles spécifications.
Amélioration batterie :
On peut améliorer le circuit niveau surface et consommation si l'on remplace nos deux
piles 9V (100mA) par une pile bouton 3V. Il faut donc modifier le montage pour qu’il
fonctionne en mono tension, c'est à dire que l'on doit alimenter le microcontroleur en 5V à
partir de 3V. On devra donc remplacer le driver RS232 MAXDS276 par un MAX3321E qui
fonctionne pour 4 à 5V.
Un montage élevateur de tension est nécessaire pour passer du 3V au 5V.
Nous n'avons pas pu avoir de circuit ADP1111 car ce circuit est un échantillon chez
Analog Device et le temps de livraison est très long.
Wireless Care
24
Rapport de stage
Polytech' Nice Sophia Antipolis
5.1.2
La transmission Bluetooth
Pour établir une liaison Bluetooth, il suffit de connecter le dongle BL830 au circuit de
mesure par le port RS232. La carte de mesure envoie lors de l'appui sur l'interrupteur les
données capteurs au port RS232. Le dongle peut alors communiquer en utilisant le profil
SPP. On peut ensuite recevoir cette transmission via le dongle belkin relié au port USB
d'un ordinateur (Gerbox) ou via le téléphone qui possède bien le profile SPP.
Il faut savoir que Bluetooth utilise une fréquence de 2,4 Ghz et une puissance de 2,5mW
dans le cas comme nous d'une transmission jusqu'à 20m.
Pour valider cette transmission dans chaque cas, il suffit de vérifier les caractères transmis
par l'hyperterminal.
Il ne reste plus qu'à développer le code JAVA de réception de la transmission dans les
systèmes.
Wireless Care
25
Rapport de stage
Illustration
17
: Elevateur de tension
Polytech' Nice Sophia Antipolis
5.2
Conception d'une base de données
Le projet nécessite une
base de données
pour stocker les enregistrements sur les
PATIENT ainsi que les différentes mesures affiliées.
Une base de données peut être locale, c'est-à-dire utilisable sur une machine par un
utilisateur, ou bien répartie, c'est-à-dire que les informations sont stockées sur des
machines distantes et accessibles par réseau. L'avantage majeur de l'utilisation de bases
de données est la possibilité de pouvoir être accessibles à plusieurs utilisateurs
simultanément.
La technologie choisie est une base de données SQL puisque SQL est libre et facile
d'utilisation.
Wireless Care
26
Rapport de stage
Illustration
18
: Base de données
Polytech' Nice Sophia Antipolis
Il s'en suit une modélisation de la base :
Cas d'usages :
Ajouter, modifier, supprimer des patients
Ajouter, modifier, supprimer des menus
Ajouter, modifier, supprimer des mesures
Visualiser tout les patients et leurs caractéristiques
Di agramme des dépendances fonctionnelles :
Mesure
Patient
Date
Donnée
Nom
Prénom Sexe
Pathologie
Image
Menu
Date
texte
On applique donc ce modèle avec les
relations
allant de n Mesure vers un Patient
(avec n
désignant un nombre infini).
Pour chaque tables, on a un identifiant unique qui par la suite représentera la clé primaire
de la table qui est utile pour effectuer des relations. Finalement, nous obtenons donc les
tables Mesure, Patient et Menu qui décrivent chacune un certain nombre d’occurences.
Ensuite, il est évident qu’il faut mettre en forme ce modèle conceptuel sous forme de
tableau pour finir de concevoir la base de données.
Wireless Care
27
Rapport de stage
Polytech' Nice Sophia Antipolis
Modèle conceptuel des données :
Les tables Patient et mesure de la base de données sont donc liées entre elles par des
clés primaires et des
clés secondaires. La base de données pour Patients est ainsi
detaillée.
Base de données SQL :
SQL signifie Structured query language, ou langage structuré de requêtes. C'est un
langage informatique standard conçu pour interroger et manipuler une base de données
relationnelle.
On installe le serveur MySQL 5.0.45 sur la machine dédiée ainsi que le connecteur Java
MySQL 5.07. L
e connecteur sert entre autre à relier l'application Java à la base de
données.
Wireless Care
28
Rapport de stage
Mesure
IdMesure
IdPatient
Date
Donnée
Patient
IdPatient
Nom
Prénom
Sexe
Pathologie
Image
Menu
IdMenu
Date
Texte
Polytech' Nice Sophia Antipolis
Nous utilisons ici le programme heidiSQL (gratuit) pour effectuer les opérations courantes
sur une base de données.
Wireless Care
29
Rapport de stage
Illustration
19
: Enregistrements dans la base de données
Polytech' Nice Sophia Antipolis
5.3
Conception de la plate forme de maintien à domicile
Bluetooth
Liaison IP
Le dongle BL830 communique ici avec le ongle Belkin sur la Box et la donnée est ensuite
envoyée via liaison IP depuis l'interface de la Box jusqu'à l'ordinateur qui héberge la base
de données.
5.3.1
Réalisation de la gestion des données Bluetooth/IP
Cas d'usages :
Paramètrer la réception et l'envoi
Démarrer une réception + envoi
Visualiser les données
Pour répondre aux différents besoins, il est nécessaire de réaliser un interface graphique
en JAVA via le logiciel NetBeans par exemple.
L'architecture du programme n'étant pas trop compliqué, un simple diagramme
représentant les différents états du système suffira pour modeliser le programme JAVA
qui s'appelle «
EnvoiMessage
». Il est sûre qu'une modélisation UML aurait apportée un
rigueur de codage supplémentaire pour la qualité du programme.
(voir codage dans l'annexe des codes).
Wireless Care
30
Rapport de stage
Carte de mesure
Ordinateur (BOX)
Serveur (Base de données)
Polytech' Nice Sophia Antipolis
Diagramme des fonctions :
Jframe.java
ok
ThreadRecept.java
donnee != null
L’API utilisé pour lire sur un port série est Javax.comm cette API n'est pas installé par
défaut sur l'ordinateur, il faut donc aller chercher cette API sur le site Internet Java Sun
puis l'installer.
Après avoir configuré le port de l'ordinateur, l'adresse IP, le numéro du patient et le port
COM, on peut lancer une mesure. Cette mesure est débuté par la fonction
ComIPinterface() afin de faire l'initialisation via InitPort() et le listage des ports COM
disponibles via listePortsDispo(). InitPort démarre ensuite le thread (tâche) qui va scruter
la valeur reçue sur le dongle Bluetooth Belkin. Dès que l'on reçoit une donnée, elle est
envoyée par la fonction SendIP().
Wireless Care
31
Rapport de stage
Main
ComIPinterface
InitPort
listePortsDispo
Thread
SendIP
Polytech' Nice Sophia Antipolis
Voici l'interface générale réalisée en JAVA, on remarque que l'on peux activer /desactiver
la réception Bluetooth et la transmission IP en plus de pouvoir configurer les paramètres
de la liaison.
Wireless Care
32
Rapport de stage
Illustration
20
: Interface bluetooth/IP
Polytech' Nice Sophia Antipolis
5.3.2
La liaison IP
Nous avons décidé d'utiliser cette liaison afin de communiquer entre les ordinateurs. Un
ordinateur envoie la donnée pendant que l'autre attend la réception de cette même
donnée. Le protocole UDP (User Datagram Protocol) est utilisé afin d'envoyer des paquets
sur le réseau. Chacune des machines est définie par son port et son IP.
Pour envoyer via IP par JAVA, on crée tout d'abord un objet de DatagramSocket pour
avoir l'accès aux méthodes et aux variables de la classe puis on utilise DatagramPacket
pour initialiser la liaison avec les paramètres spécifiés. Pour finir, la méthode Envoi de
DatagramSocket permet l'envoi de la donnée.
On utilise un système d'accusé de réception pour bien s'assurer de la réception de la
donnée.
5.3.3
Réalisation de la gestion des données IP/SQL
Cas d'usages :
visualiser la réception d'une donnée
Visualiser la requête d'enregistrement dans la base
On remarque que l'utilisateur ne doit pas réaliser de commandes, il est donc inutile de
faire une interface graphique, le mode console sera amplement suffisant pour avertir
l'utilisateur.
(voir codage dans l'annexe des codes)
Wireless Care
33
Rapport de stage
Polytech' Nice Sophia Antipolis
Le projet JAVA s'appelle «
ReceptionMessageIPSQL
».
Di agramme des fonctions :
Donnee != 0
Le programme est très simple, on a la fonction principale qui tourne en permanence et dès
qu'une donnée arrive la fonction AddMeasure() est appelée pour faire un enregistrement
dans la base de données SQL.
Wireless Care
34
Rapport de stage
Main
AddMeasure
Illustration
21
: Console Netbeans
Polytech' Nice Sophia Antipolis
5.4
Conception de la plate forme de maintien à l'extérieur
Bluetooth
WAP
Le dongle BL830 communique en Bluetooth avec le profil SPP avec le téléphone portable
et le téléphone utilise une méthode URL pour communiquer a la base de données grâce
au WAP.
5.4.1
Réalisation du programme J2ME
Cas d'usages :
Effectuer une mesure et l'enregistrer
Visualiser le menu du jour (option)
Appeler le support (option)
Naviguer sur les forums d'aides (option)
Un programme JAVA embarqué est la meilleure solution pour développer une application
sur téléphone portable. Pour ce faire, nous utilisons le logiciels Netbeans 5.5.1, le pack
mobilité 5.5.1 et le jdk6 de JAVA.
L'interface a donc été conçue en 4 étapes :
●
énumération des menus qui composent l'interface.
●
réalisation d'un diagramme d'états.
●
implémentation du diagramme pour générer des bouts de codes.
●
programmer les transitions et le comportement de l'interface.
Wireless Care
35
Rapport de stage
Carte de mesure
Téléphone
Serveur (Base de données)
Polytech' Nice Sophia Antipolis
A chaque étape de programmation, nous simulions l'interface avant de la charger dans le
téléphone.
On utilise une programmation sous forme de MIDLET (interface graphique).
Wireless Care
36
Rapport de stage
Illustration
22
:
Simulateur d'interface
Illustration
23
: Structure d'un MIDLET
Polytech' Nice Sophia Antipolis
Wireless Care
37
Rapport de stage
Illustration
24
: Diagramme de
conception
Polytech' Nice Sophia Antipolis
5.4.2
Transmission Bluetooth vers le téléphone
L'appareil client est celui qui lance la communication avec l'appareil serveur.
Dans notre cas, le téléphone est configuré en mode client profil SPP.
Principes de la liaison :
●
Les deux appareils sont couplés ensemble via un code.
●
Seul l'appareil couplé peut decrypter les données de la communication Bluetooth.
●
Les appareils doivent être visibles l'un de l'autre
Etapes d'une acquisition Bluetooth :
●
Création d'objets (de connection, de flux d'entrée/sortie, de paramètres)
●
Ouverture de la connection
●
Ouverture des flux de données E/S
●
Fin de mesure
●
Lecture de la valeur transmise
Voilà le tableau sur les différents modules que nous disposions :
Wireless Care
38
Rapport de stage
Polytech' Nice Sophia Antipolis
5.4.3
Transmission par le WAP sur une bdd
Pour pouvoir communiquer avec une base de données externe depuis le téléphone, il
nous était impossible d'utiliser une communiquation IP puisque les sockets ne sont pas
actives sur les téléphones.
Ainsi, la solution évidente qui s'imposait à nous était de réaliser un connection WAP et de
transférer les informations à la base de données par l'utilisation d'une requête URL.
c'est a dire que l'on va encoder une URL de manière à ce qu'il qu'il y est un passage de
paramètre par la méthode GET. On effectue ensuite un traitement de la donnée reçue
grâce à un fichier PHP situé sur le serveur (Voir code en annexe).
Méthode GET : cette méthode est une méthode d'envoi des données lorsque l'on utilise
des scripts PHP. Cette méthode possède le même principe que la méthode POST, c'est-
à-dire qu’elle effectue un passage de paramètre. La différence réside dans le fait que l’on
peut envoyer un paramètre lors d’un lien vers une page sans avoir besoin d’un formulaire
(balises form).
Codage de l’URL en JAVA (on utlise la fonction
(HttpConnection) Connector.open(url)
) :
url=index.php?Login=''+Login+''Mesure=''+SPP_Client.strRecept+'' '';
On envoie les paramètres Login et Mesure (chacun vaut une certaine valeur) vers la page
index.php du site
www.esinsa.free.fr
, là ou l'on a hebergé notre base de données.
Codage de la réception en php :
$Login = $_GET[‘Login’]; $Mesure = $_GET[‘Mesure’];
Stockage du paramètre dans une variable. Avec les variables récupérées par le script
PHP, il y a lancement de nouveaux enregistrements dynamiques sur la base de données.
Wireless Care
39
Rapport de stage
Polytech' Nice Sophia Antipolis
6
Evolutions
En ce qui concerne les évolutions, on peut en noter 3 majeures :
●
Remplacement du module BL830 par le F2M
●
Remplacement du capteur de température par un lecteur de glycémie
●
Mise en place d'une interface de gestion et de supervision des patients
Remplacement du module B L830 par le F2 M
Ce module se configure pour l'instant sur le logiciel de configuration fourni. L'ordinateur et
le module sont reliés ensemble par une liaison RS232. Le module peut aussi être
configuré par liaison RS232. On entend par configuration : type serveur ou client, vitesse
de communication, parité, bits, bit de stop, etc...
Il faut savoir que le module F2M possède un module Bluetooth détachable afin d'avoir un
encombrement minimum dans notre circuit.
Wireless Care
40
Rapport de stage
Illustration
25
: Exemple de configuration
du F2M
Polytech' Nice Sophia Antipolis
Mise en place d'une interface de gestion et de supervision des patients
Une ébauche de cette interface a été réalisé pendant le stage. Elle est essentiellement
programmé en langage html et php mais il est néanmoins nécessaire de la continuer pour
que le rendu soit impeccable. Cette interface permettra l'ajout, modification et suppression
des données relatives aux patients sans pour autant gêner une quelconque mesure en
cours.
Wireless Care
41
Rapport de stage
Illustration
26
: Brochage du module F2M
Polytech' Nice Sophia Antipolis
Remplacement du capteur de température par un lecteur de glycémie
On peut communiquer avec le lecteur de glycémie via une liaison RS232.
Pour cela , on utilise l'hyperterminal et la fonction envoyer fichier texte.
Voici la liste des commandes de dialogue avec l'appareil :
Wireless Care
42
Rapport de stage
Illustration
27
: Commandes du lecteur de glycémie
Polytech' Nice Sophia Antipolis
7
Conclusion
Ce stage nous a permis de mettre en avant nos compétences (car nous étions une équipe
de trois étudiants ingénieurs) :
En électronique analogique, en électronique numérique, en
programmation Java et Java embarqué (J2ME), en programmation C pour
microcontrôleur, en transmission sans fil bluetooth, en transmission filaire IP, en
programmation SQL pour base de données et en programmation PHP.
Avec les diverses réunions exercées lors du challenge Jeunes Pousses et du stage, nous
avons acquis des compétences non négligeables en terme de présentation, expliquation
et résumé.
Pour conclure, l
e travail réalisé est conforme aux attentes mais nous notons toutefois que
les manipulations avec le Bluetooth doivent être rigoureuses pour que les systèmes soient
fiables.
La contrainte majeure du stage était de démontrer la faisabilité de tels systèmes de part
leurs réalisation, On peut donc dire que les systèmes sont faisables mais il faut faire
attention toutefois au méthodes de programmation pour garantir la fiabilité des données.
Le mot de la fin : «
les sytèmes d'aides à la personne sont en proie à augmenter et à
évoluer au fil du temps, on peut déjà remarquer un regroupement de sociétés sur ce
même thème
http://www.continuaalliance.org/
On peut même corréler les services associés à ces systèmes de contrôle avec les débuts
des services internet il y a longtemps
».
Wireless Care
43
Rapport de stage
Polytech' Nice Sophia Antipolis
Glossaire
●
NX P
:
NXP
(pour
Next
eXPerience
)
Semiconducteurs
est le nom de la nouvelle
compagnie fondé par
Philips
●
CSTB
: Centre scientifique et technique du batiment
●
Jeunes Pousses :
Challenge organisé par l'INRIA et Telecom Valley
●
Glycemie
: Concentration de glucose dans le sang
●
Java
: Le langage libre le plus populaire du monde
●
J2 ME
: Java Platform Micro Edition
●
RS-232
: En télécommunication, RS-232 (Recommended Standard 232) est un
standard pour les signaux connectés entre le
DTE
(
Data terminal equipment
) et le
DCE
(
Data Circuit-terminating Equipment
)
●
Bl uetooth
: Spécification industrielle pour les réseaux PAN (
personal area
networks
)
●
P H P
: Langage de programmation orienté page web dynamique
●
SQL
: Langage de programmation pour les bases de données relationnelles
●
M I D P
: Spécification pour l'utilisation du JAVA embarqué dans les téléphones
Wireless Care
44
Rapport de stage
Polytech' Nice Sophia Antipolis
Annexe 1 : Projets du CSTB
La
Salle immersive Le Corbusier
® est une infrastructure matérielle et logicielle
unique dans le secteur de la construction, dotée des ressources informatiques et des
technologies de la réalité virtuelle les plus avancées : modélisation et simulation
scientifiquement valides des phénomènes physiques, représentation 3D et navigation
interactive.
Utilisée pour un
projet de construction neuve ou de
réhabilitation
, d’aménagement urbain (à l’échelle du
quartier), d’aménagement du territoire (routes,
infrastructures de transports, ouvrages d’art…) ou
industriel (produits de construction…), la Salle immersive
Le Corbusier permet une
représentation anticipée du
projet
, à la fois réelle et précise, dans laquelle il est
possible de naviguer pour analyser et évaluer l’impact du
projet dans son
futur environnement.
La Base FEU :
Cette plate-forme expérimentale d'une surface de 400 mètres
carrés permet de reproduire des incendies réels. Les essais visent à
vérifier que les solutions constructives satisfont aux exigences
réglementaires de sécurité incendie applicables aux logements,
établissements recevant du public et à certains locaux de travail.
Cette base d'essais a été mise à contribution pour concevoir le
protocole de l'essai européen de réaction au feu SBI.
La Soufflerie Jules Verne :
Neige, pluie verglas, brouillard, vent de sable, cyclone ou canicule
d'une extrême sécheresse, la soufflerie climatique Jules Verne sait
tout imaginer. Elle a été spécialement conçue pour étudier, en
grandeur nature, non seulement le comportement des bâtiments et des
éléments de construction, mais aussi celui des véhicules et des
matériels de transport. Ce vaste équipement de plus de 5 000 mètres
carrés est capable de recréer n'importe quelles conditions climatiques,
y compris celles qui heureusement sont rares sur la terre.
Wireless Care
45
Rapport de stage
Polytech' Nice Sophia Antipolis
Le LABE :
Accrédité COFRAC, ce grand équipement de mesures
acoustiques ultramoderne comporte plus de douze postes
d'essais sur 2 500 mètres carrés pour tester les produits les plus
performants dans les plus brefs délais et selon les normes
européennes. Un point essentiel pour les industriels qui pourront
faire valoir leurs rapports d'essais dans toute l'Union
européenne.
ARIA : Prévenir la pollution dans la maison, le bureau ou l'école :
Imaginez une cuisine, un garage, un bureau, une salle de classe et demain une chambre
d'hôpital. ARIA, grand équipement de recherche a pour objectif d'étudier les problèmes de
pollution à l'intérieur des bâtiments.
Sur son site de recherche de Marne la Vallée, le CSTB réunit sur 2 000 mètres carrés un
ensemble de laboratoires et de moyens expérimentaux pour étudier la qualité sanitaire des
produits, équipements et ouvrages de bâtiment.
Cet équipement est à la hauteur des enjeux que représentent l'évaluation et la gestion des
risques sanitaires dans les domaines de l'air et de l'eau.
Wireless Care
46
Rapport de stage
Polytech' Nice Sophia Antipolis
Annexe 2 : Di agramme d'états
Wireless Care
47
Rapport de stage
S1
Data acquisition
Data acquisition
S2
Signal adaptation
Signal adaptation
S4
Conversion
Conversion
S5
RS-232 transmission
RS-232 transmission
S6
Bluetooth transmission
Bluetooth transmission
Dongle connected
S8
Phone interf ace
Phone interf ace
S3
Interruption event
Cable connected
Measure request
S7
Measure
Measure
Bluetooth reception
Bluetooth reception
S9
GSM transmission
GSM transmission
Transmission request
S10
GSM reception
GSM reception
S11
Inf ormation storage
Inf ormation storage
Sensor data
Polytech' Nice Sophia Antipolis
Annexe 3 : Di agramme d'états de l'interface
Wireless Care
48
Rapport de stage
Check with serv er
Check with serv er
S2
Start application
Login
Login
S1
S4
Report
Report
Valid
Menu
Menu
S3
Report
Report
Not (Valid)
OK
Report
Report
End of measure
Measure menu
Measure menu
Measure request
S6
Lunch advises
Lunch advises
Menu = Measure
S5
Back
Menu = Lunch
Report
Report
End of transmission
Report
Report
Error
GSM transmission
S7
Report
Report
Error
Polytech' Nice Sophia Antipolis
Annexe 4 : Schéma electronique
Wireless Care
49
Rapport de stage
Polytech' Nice Sophia Antipolis
Annexe 5 : Couts
articles
quantite
prix unitaire
dongle usb bluetooth
1
33,49
piles
3
3,35
ram
1
32,96
module bluetooth lextronic
1
230,23
frais port livraison
1
9
lecteur de glycemie
1
79,44
cable liaison
1
26
commande de composants
1
20,69
total general
435,16
Wireless Care
50
Rapport de stage
Polytech' Nice Sophia Antipolis
Annexe 6 : Code JAVA
Envoi Message :
/*
* JFrame.java
*
* Created on July 27, 2007, 10:19 AM
*/
package
EnvoiMessage;
import
java.io.BufferedReader;
import
java.io.IOException;
import
java.io.InputStreamReader;
import
java.net.DatagramPacket;
import
java.net.DatagramSocket;
import
java.net.InetAddress;
import
java.net.SocketException;
import
java.net.UnknownHostException;
import
java.util.Enumeration;
import
javax.comm.CommPortIdentifier;
import
javax.comm.NoSuchPortException;
import
javax.comm.PortInUseException;
import
javax.comm.SerialPort;
import
javax.comm.UnsupportedCommOperationException;
import
javax.swing.JOptionPane;
/**
*
* @author gendre
*/
public
class
JFrame
extends
javax.swing.JFrame {
/** Creates new form JFrame */
public
JFrame() {
initComponents();
setTitle("Wireless Care Home Box");
}
/** This method is called from within the constructor to
* initialize the form.
Wireless Care
51
Rapport de stage
Polytech' Nice Sophia Antipolis
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
private
void
initComponents() {
jPanel1 =
new
javax.swing.JPanel();
jButtonOk =
new
javax.swing.JButton();
jLabelLogin =
new
javax.swing.JLabel();
jTextFieldLogin =
new
javax.swing.JTextField();
jLabelPort =
new
javax.swing.JLabel();
jTextFieldPort =
new
javax.swing.JTextField();
jLabelIp =
new
javax.swing.JLabel();
jTextFieldIp =
new
javax.swing.JTextField();
jLabelCom =
new
javax.swing.JLabel();
jTextFieldCom =
new
javax.swing.JTextField();
jPanel2 =
new
javax.swing.JPanel();
jScrollPane1 =
new
javax.swing.JScrollPane();
jTextAreaReception =
new
javax.swing.JTextArea();
jLabelReception =
new
javax.swing.JLabel();
jLabelTransmission =
new
javax.swing.JLabel();
jScrollPane2 =
new
javax.swing.JScrollPane();
jTextAreaTransmission =
new
javax.swing.JTextArea();
jCheckBoxTx =
new
javax.swing.JCheckBox();
jCheckBoxRx =
new
javax.swing.JCheckBox();
jButtonExit =
new
javax.swing.JButton();
jButtonReset =
new
javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createTitledBorder("Value"), "",
javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION,
new
java.awt.Font("Tahoma", 0, 12)));
jPanel1.setToolTipText("");
jPanel1.setName("");
jButtonOk.setText("OK");
jButtonOk.addActionListener(
new
java.awt.event.ActionListener() {
public
void
actionPerformed(java.awt.event.ActionEvent evt) {
jButtonOkActionPerformed(evt);
}
});
jLabelLogin.setText("Login :");
jLabelPort.setText("Port :");
Wireless Care
52
Rapport de stage
Polytech' Nice Sophia Antipolis
jLabelIp.setText("Ip :");
jLabelCom.setText("Com :");
javax.swing.GroupLayout jPanel1Layout =
new
javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabelLogin, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addGap(13, 13, 13))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabelIp)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jTextFieldIp, javax.swing.GroupLayout.PREFERRED_SIZE, 157,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 165, Short.MAX_VALUE)
.addComponent(jButtonOk))
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jTextFieldLogin, javax.swing.GroupLayout.DEFAULT_SIZE, 68, Short.MAX_VALUE)
.addGap(16, 16, 16)
.addComponent(jLabelPort, javax.swing.GroupLayout.DEFAULT_SIZE, 27, Short.MAX_VALUE)
.addGap(12, 12, 12)
.addComponent(jTextFieldPort, javax.swing.GroupLayout.PREFERRED_SIZE, 65,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(12, 12, 12)
.addComponent(jLabelCom, javax.swing.GroupLayout.DEFAULT_SIZE, 28, Short.MAX_VALUE)
.addGap(13, 13, 13)
.addComponent(jTextFieldCom, javax.swing.GroupLayout.PREFERRED_SIZE, 69,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(59, 59, 59))))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap(37, Short.MAX_VALUE)
Wireless Care
53
Rapport de stage
Polytech' Nice Sophia Antipolis
.addComponent(jButtonOk))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelLogin)
.addComponent(jTextFieldLogin, javax.swing.GroupLayout.PREFERRED_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelPort)
.addComponent(jTextFieldPort, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelCom)
.addComponent(jTextFieldCom, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 9, Short.MAX_VALUE)
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jTextFieldIp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabelIp))
.addContainerGap())
);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Transmission"));
jTextAreaReception.setColumns(20);
jTextAreaReception.setRows(5);
jScrollPane1.setViewportView(jTextAreaReception);
jLabelReception.setText("Reception Bluetooth :");
jLabelTransmission.setText("Transmission IP :");
jTextAreaTransmission.setColumns(20);
jTextAreaTransmission.setRows(5);
jScrollPane2.setViewportView(jTextAreaTransmission);
jCheckBoxTx.setText("Enable");
jCheckBoxTx.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jCheckBoxTx.setMargin(
new
java.awt.Insets(0, 0, 0, 0));
jCheckBoxRx.setText("Enable");
jCheckBoxRx.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
jCheckBoxRx.setMargin(
new
java.awt.Insets(0, 0, 0, 0));
javax.swing.GroupLayout jPanel2Layout =
new
javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
Wireless Care
54
Rapport de stage
Polytech' Nice Sophia Antipolis
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 412, Short.MAX_VALUE)
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabelReception)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckBoxRx))
.addGroup(jPanel2Layout.createSequentialGroup()
.addComponent(jLabelTransmission)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jCheckBoxTx))
.addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 412, Short.MAX_VALUE))
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelReception)
.addComponent(jCheckBoxRx))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabelTransmission)
.addComponent(jCheckBoxTx))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE))
);
jButtonExit.setText("EXIT");
jButtonExit.addActionListener(
new
java.awt.event.ActionListener() {
public
void
actionPerformed(java.awt.event.ActionEvent evt) {
jButtonExitActionPerformed(evt);
}
});
Wireless Care
55
Rapport de stage
Polytech' Nice Sophia Antipolis
jButtonReset.setText("RESET");
jButtonReset.addActionListener(
new
java.awt.event.ActionListener() {
public
void
actionPerformed(java.awt.event.ActionEvent evt) {
jButtonResetActionPerformed(evt);
}
});
javax.swing.GroupLayout layout =
new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel2, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel1, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jButtonReset)
.addGap(14, 14, 14)
.addComponent(jButtonExit)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jButtonExit)
.addComponent(jButtonReset))
.addContainerGap())
);
pack();
}
// </editor-fold>//GEN-END:initComponents
Wireless Care
56
Rapport de stage
Polytech' Nice Sophia Antipolis
/** This function reset all the interface */
private
void
jButtonResetActionPerformed(java.awt.event.ActionEvent evt) {
//GEN-FIRST:event_jButtonResetActionPerformed
jTextFieldCom.setEditable(
true
);
jTextFieldIp.setEditable(
true
);
jTextFieldLogin.setEditable(
true
);
jTextFieldPort.setEditable(
true
);
jTextAreaReception.setText("");
jTextAreaTransmission.setText("");
jTextFieldCom.setText("COM4");
jTextFieldIp.setText("10.3.5.90");
jTextFieldLogin.setText("1");
jTextFieldPort.setText("10302");
if
(jButtonOk.isEnabled()==
false
){
jButtonOk.setEnabled(
true
);
serialPort.close();
ThreadRecept.running =
false
;
}
}
//GEN-LAST:event_jButtonResetActionPerformed
/** This function allow user to quit the interface */
private
void
jButtonExitActionPerformed(java.awt.event.ActionEvent evt) {
//GEN-FIRST:event_jButtonExitActionPerformed
int
r= JOptionPane.showConfirmDialog (
null
,"Are you sure you want to quit?", "Boutons par
defaut",JOptionPane.YES_NO_OPTION);
if
(r==JOptionPane.YES_OPTION){
if
(ThreadRecept.running==
true
){
ThreadRecept.running=
false
;
}
serialPort.close();
System.exit(0);
}
else
if
(r == JOptionPane.NO_OPTION){
}
}
//GEN-LAST:event_jButtonExitActionPerformed
/** This function represent Ok button action */
private
void
jButtonOkActionPerformed(java.awt.event.ActionEvent evt) {
//GEN-FIRST:event_jButtonOkActionPerformed
jTextFieldCom.setEditable(
false
);
jTextFieldIp.setEditable(
false
);
jTextFieldLogin.setEditable(
false
);
jTextFieldPort.setEditable(
false
);
com=jTextFieldCom.getText();
if
(jButtonOk.isEnabled()==
true
){
jButtonOk.setEnabled(
false
);
Wireless Care
57
Rapport de stage
Polytech' Nice Sophia Antipolis
}
else
{
jButtonOk.setEnabled(
true
);
}
ComIPinterface();
}
//GEN-LAST:event_jButtonOkActionPerformed
/**
* @param args the command line arguments
*/
public
static
void
main(String args[]) {
java.awt.EventQueue.invokeLater(
new
Runnable() {
public
void
run() {
new
JFrame().setVisible(
true
);
}
});
}
/**
* Reception de la mesure sur le port serie virtuel
*/
public
static
void
ComIPinterface(){
System.out.println("listage des ports série disponibles:");
listePortsDispo();
try
{
// Fonction Initialisation Port Com
InitCom();
}
catch
(Exception e){
e.printStackTrace();
}
}
/**
* Liste les ports disponibles
*/
public
static
void
listePortsDispo()
{
System.err.println("recherche...");
Enumeration portList=CommPortIdentifier.getPortIdentifiers();
if
(portList==
null
)
Wireless Care
58
Rapport de stage
Polytech' Nice Sophia Antipolis
{
System.err.println("Aucun port de communication détecté");
return
;
}
while
(portList.hasMoreElements())
{
portId=(CommPortIdentifier)portList.nextElement();
System.out.println("* "+portId.getName());
}
}
/**
* Initialise le port choisi
*/
public
static
void
InitCom()
throws
PortInUseException, UnsupportedCommOperationException {
try
{
//ouverture du port série:
portId=CommPortIdentifier.getPortIdentifier(com);
serialPort=(SerialPort)portId.open("Envoi",2000);
//on sélectionne tous les paramètres de la connexion série:
serialPort.setSerialPortParams(19200,SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,SerialPort.PARITY_NONE);
System.out.println("Ouverture du port "+com);
//Buffer contenant la donnee sur le port
in=
new
BufferedReader(
new
InputStreamReader(serialPort.getInputStream()));
//New Thread
if
(ThreadRecept.running==
false
){
ThreadRecept.running=
true
;
}
if
(AlreadyStarted==
false
){
t.start();
}
AlreadyStarted=
true
;
}
catch
(NoSuchPortException ex) {
JOptionPane.showMessageDialog(
null
,"Port Com non utilise !");
ex.printStackTrace();
}
catch
(IOException ex) {
ex.printStackTrace();
}
Wireless Care
59
Rapport de stage
Polytech' Nice Sophia Antipolis
}
/**
* Envoi de la mesure par IP
*/
public
static
void
SendIp(String ll){
//declaration des variables relatives a lenvoi IP
int
portDestinataire;
InetAddress adresseIP;
int
longueur;
byte
[] tampon;
BufferedReader commande;
try
{
if
(jCheckBoxTx.isSelected()){
//creation des socket
socketUDP=
new
DatagramSocket();
System.out.println("le port local de la box est : "+socketUDP.getLocalPort());
//entree de ladresse IP et du port du Destinataire
adresseIP=InetAddress.getByName(jTextFieldIp.getText());
portDestinataire=Integer.parseInt(jTextFieldPort.getText());
tampon=ll.getBytes();
longueur=tampon.length;
message=
new
DatagramPacket(tampon,longueur,adresseIP,portDestinataire);
socketUDP.send(message);
//attente de l'accuse de reception
tampon=
new
byte
[256];
message=
new
DatagramPacket(tampon,tampon.length);
socketUDP.receive(message);
ll=
new
String(tampon);
ll=ll.substring(0,message.getLength());
System.out.println("Du port " + message.getPort()+" de la machine " + message.getAddress().getHostName() +" : "+ ll);
jTextAreaTransmission.append("Du port " + message.getPort()+" de la machine " + message.getAddress().getHostName() +" :
"+ ll +" \n");
}
}
catch
(ArrayIndexOutOfBoundsException exc){
System.out.println("avez vous donner le nom de la machine destinatrice et le numero de port du client?");
}
catch
(UnknownHostException exc){
System.out.println("Destinataire inconnu");
}
catch
(SocketException exc){
Wireless Care
60
Rapport de stage
Polytech' Nice Sophia Antipolis
System.out.println("Probleme douverture de la socket");
}
catch
(IOException exc){
System.out.println("Probleme sur la reception");
}
catch
(NumberFormatException exc){
System.out.println("Le second argument doit etre un entier");
}
}
// Variables declaration
private
javax.swing.JButton jButtonExit;
private
javax.swing.JButton jButtonOk;
private
javax.swing.JButton jButtonReset;
public
static
javax.swing.JCheckBox jCheckBoxRx;
public
static
javax.swing.JCheckBox jCheckBoxTx;
private
javax.swing.JLabel jLabelCom;
private
javax.swing.JLabel jLabelIp;
private
javax.swing.JLabel jLabelLogin;
private
javax.swing.JLabel jLabelPort;
private
javax.swing.JLabel jLabelReception;
private
javax.swing.JLabel jLabelTransmission;
private
javax.swing.JPanel jPanel1;
private
javax.swing.JPanel jPanel2;
private
javax.swing.JScrollPane jScrollPane1;
private
javax.swing.JScrollPane jScrollPane2;
public
static
javax.swing.JTextArea jTextAreaReception;
public
static
javax.swing.JTextArea jTextAreaTransmission;
private
static
javax.swing.JTextField jTextFieldCom;
private
static
javax.swing.JTextField jTextFieldIp;
private
static
javax.swing.JTextField jTextFieldLogin;
private
static
javax.swing.JTextField jTextFieldPort;
// End of variables declaration
//Variable pour la lecture serie
static
CommPortIdentifier portId;
static
BufferedReader in;
static
SerialPort serialPort;
static
DatagramSocket socketUDP;
static
DatagramPacket message;
static
String com;
static
Runnable r =
new
ThreadRecept();
static
Thread t =
new
Thread(r);
static
boolean
AlreadyStarted=
false
; }
Wireless Care
61
Rapport de stage
Polytech' Nice Sophia Antipolis
/*
* ThreadRecept.java
*
* Created on August 3, 2007, 5:12 AM
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package
EnvoiMessage;
import
java.io.IOException;
import
javax.comm.PortInUseException;
import
javax.comm.SerialPort;
import
javax.comm.UnsupportedCommOperationException;
/**
*
* @author administrateur
*/
public
class
ThreadRecept
extends
Thread {
private
String ligne =
null
;
public
static
boolean
running =
false
;
public
void
run(){
while
(running){
if
(JFrame.jCheckBoxRx.isSelected()){
try
{
ligne = JFrame.in.readLine();
}
catch
(IOException e){
}
//on affiche ce qui arrive dans le port serie
System.out.println(ligne);
JFrame.jTextAreaReception.append(ligne + "\n");
if
(ligne!=
null
){
// Fonction d'envoi par IP
JFrame.SendIp(ligne);
}
}
}
}
}
Wireless Care
62
Rapport de stage
Polytech' Nice Sophia Antipolis
ReceptionMessage :
/*
* ReceptionMessage.java
*
* Created on 10 juillet 2007, 15:00
*
*/
package
receptionmessage;
import
java.net.*;
import
java.io.*;
import
java.sql.ResultSet;
import
java.sql.DriverManager;
import
java.sql.Driver;
import
java.sql.SQLException;
import
java.sql.Connection;
import
java.sql.Statement;
import
java.text.DateFormat;
import
java.util.Calendar;
import
java.util.Date;
import
java.util.GregorianCalendar;
import
java.util.Locale;
/**
* <p>Title: Reception d'un message IP et stockage dans une bdd SQL</p>
* <p>Description: Cette reception IP utilise des sockets
* pour recevoir un message via IP en specifiant le port souhaite dans
* le commande prompt. On stock ensuite le message recuperer dans une
* base de donnees pour la portabilite</p>
*
* @author Laurent Gendre
*/
public
class
ReceptionMessage {
/**
* Creates a new instance of ReceptionMessage
*/
public
ReceptionMessage() {
}
/**
Wireless Care
63
Rapport de stage
Polytech' Nice Sophia Antipolis
* Obtient une connexion a partir des proprietes specifiees
* dans le fichier database.properties
* @return la connexion a la base de donnees
*/
public
static
Connection getConnection()
throws
SQLException, IOException {
String url = "jdbc:mysql://localhost/PATIENT";
String username = "root";
String password = "Philips01";
return
DriverManager.getConnection(url, username, password);
}
/**
* Execute les requetes adequates afin de rajouter une nouvelle mesure
* dans la base de donnees
*/
public
static
void
AddMeasure(String Date, String Donnee)
throws
SQLException, IOException, ClassNotFoundException,
InstantiationException, IllegalAccessException {
Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = getConnection();
try
{
Statement stat = conn.createStatement();
// Init
int
Cpt = 0;
int
Nb = 0;
int
Valeur = 0;
int
IdPatient = 1;
// Identifiant du patient
int
IdMesure;
int
[] Id_Mesure =
new
int
[10000];
// Selection de la table MESURE
ResultSet result = stat.executeQuery("SELECT DISTINCT * FROM MESURE WHERE 1 ORDER BY ID_MESURE ASC");
// Recuperation des donnees MESURE
while
(result.next() !=
false
){
Id_Mesure[Nb]=result.getInt("Id_Mesure");
Nb++;
Wireless Care
64
Rapport de stage
Polytech' Nice Sophia Antipolis
}
// Maj Cle Primaire de MESURE
int
Nombre=Nb-1;
IdMesure=Id_Mesure[Nombre] + 1;
// Raz compteur
Nb = 0;
while
(Id_Mesure[Nb] != 0){
//Verifie les doublons
if
(Id_Mesure[Nb]==IdMesure){
Valeur=1;
}
Nb++;
}
System.out.println("Query : Num mesure : " + IdMesure + " // Num patient : " + IdPatient + " // Date : " + Date + " // Donnee : " +
Donnee);
if
(Valeur == 0){
// Insertion dans la table MESURE
stat.executeUpdate("INSERT INTO MESURE (ID_MESURE,ID_PATIENT,DATE,DONNEE) VALUES ('"+IdMesure+"',
'"+IdPatient+"', '"+Date+"', '"+Donnee+"') ");
}
else
{
System.out.println("Erreur Id Mesure");
}
}
finally
{
conn.close();
}
}
/**
* @param args the command line arguments
*/
public
static
void
main(String args[]) {
DatagramSocket socketUDP;
DatagramPacket message;
byte
[] tampon;
int
portLocal;
byte
[] tamponAccuse = "accuse de reception ".getBytes();
int
longueurAccuse = tamponAccuse.length;
String texte;
Wireless Care
65
Rapport de stage
Polytech' Nice Sophia Antipolis
try
{
portLocal = 10302;
//Integer.parseInt (args[0]);
socketUDP =
new
DatagramSocket (portLocal);
do
{
//on se prépare à recevoir un datagramme
tampon =
new
byte
[256];
message =
new
DatagramPacket (tampon, tampon.length);
socketUDP.receive(message);
InetAddress adresseIP = message.getAddress();
int
portDistant = message.getPort();
texte =
new
String(tampon);
texte = texte.substring(0, message.getLength());
System.out.println("Reception sur le port " + portDistant + " de la machine " + adresseIP.getHostName() + " : " + texte);
/* Partie SQL */
// Date
Calendar calendar =
new
GregorianCalendar();
Date trialTime =
new
Date();
calendar.setTime(trialTime);
DateFormat df = DateFormat.getDateInstance( DateFormat.LONG , Locale.FRANCE );
String strdf =
new
String(df.format( calendar.getTime()) );
DateFormat df2 = DateFormat.getTimeInstance( DateFormat.SHORT , Locale.FRANCE );
String strdf2 =
new
String(df2.format( calendar.getTime()) );
String strDate = strdf + " " + strdf2;
// Gestion des exceptions
try
{
// Ajout de la mesure dans la bdd mysql
AddMeasure(strDate,texte);
}
catch
(ClassNotFoundException ex) {
ex.printStackTrace();
}
catch
(IOException ex) {
ex.printStackTrace();
}
catch
(IllegalAccessException ex) {
ex.printStackTrace();
}
catch
(InstantiationException ex) {
ex.printStackTrace();
}
catch
(SQLException ex) {
while
(ex!=
null
){
ex.printStackTrace();
ex = ex.getNextException();
}
}
Wireless Care
66
Rapport de stage
Polytech' Nice Sophia Antipolis
//On envoie un accuse de reception
message =
new
DatagramPacket (tamponAccuse,longueurAccuse, adresseIP, portDistant);
socketUDP.send(message);
}
while
(texte!=
null
);
}
catch
(ArrayIndexOutOfBoundsException exc){
System.out.println("Avez vous donnez le numero" + " de port sur lequel vous attendez le message ?");
}
catch
(SocketException exc){
System.out.println("Probleme d'ouverture du socket");
}
catch
(IOException exc){
System.out.println("Probleme sur la reception" + "ou sur l'envoi du message");
}
}
}
Wireless Care
67
Rapport de stage
Polytech' Nice Sophia Antipolis
Annexe 7 : Code J2 ME
Le code de l'interface HelloMidlet.java du téléphone se trouve sur
http://www.esinsa.free.fr/Rapport/ELEC4/Stage/fichiers_stage%2007092007/J2ME_JAVA/
Wireless_Care_v2/src/hello/
Code de communication Bluetooth :
On utilise un composant bluelet pour communiquer (ce composant est dérivé de la librairie
JSR82)
package
hello.spp;
import
java.io.*;
import
javax.bluetooth.*;
import
javax.microedition.io.*;
import
hello.*;
public
class
SPP_Client
{
public
static
String strRecept;
//public final static UUID uuid = new UUID("102030405060708090A0B0C0D0E0F010", false);
public
SPP_Client()
{
}
public
void
send_SPP_message(ServiceRecord r, String msg)
{
String connString = "btspp://000A4F004D98:1";
//master=true;authenticate=true;encrypt=true";
DataInputStream input=
null
;
DataOutputStream output=
null
;
int
ent=0;
String str=
null
;
String str2=
null
;
int
[] s =
new
int
[10];
//log(connString);
StreamConnection conn =
null
;
Wireless Care
68
Rapport de stage
Polytech' Nice Sophia Antipolis
//log("creating: StreamConnection conn...");
try
{
conn = (StreamConnection) Connector.open(connString);
//log("opening: StreamConnection conn...");
//log("opening outputStream...");
output = conn.openDataOutputStream();
//log("opening inputStream...");
input = conn.openDataInputStream();
//log("end of initialisation...");
for
(
int
i=0;i<9;i++){
s[i]=input.read()-48;
str=String.valueOf(s[i]);
str2=String.valueOf(s[i]+48);
//log("indice: "+i+" valeur: "+str+" ou ascii: "+str2);
}
switch
(s[7]){
case
19:
//log("valeur:"+s[0]+s[1]+','+s[3]+s[4]+s[5]+" C");
strRecept=""+s[0]+s[1]+','+s[3]+s[4]+s[5]+"";
break
;
case
-16:
//log("valeur:"+s[1]+s[2]+','+s[4]+s[5]+s[6]+" C");
strRecept=""+s[1]+s[2]+','+s[4]+s[5]+s[6]+"";
break
;
default
:
//log("erreur");
}
// Close connection
output.flush();
conn.close();
input.close();
output.close();
}
catch
(IOException ex) {
ex.printStackTrace();
}
}
Wireless Care
69
Rapport de stage
Polytech' Nice Sophia Antipolis
Annexe 7 : Code C du P I C
#include
<p18f2520.h>
//processeur P I C 18F2520
#include
<usart.h>
#include
<delays.h>
#pragma
config OSC = INTIO67
#pragma
config PBADEN = OFF
#pragma
config LVP = OFF
#define
Tambiante 32
void
transmit2(
int
);
void
InitA_D(
void
);
int
ConvertAD(
void
);
void
InitA_D(
void
)
{
/* Configuration des registres du CAN */
ADCON0= 0x07;
// selection de l'entrée analogique: AN0 et activation du CAN : 00 0001 11
ADCON1= 0b00001101;
// Vref+ = VDD, Vref- = VSS, selection des entrées analogiques et des entrées numériques: 0000
1110 1101
ADCON2= 0x92;
// justification droite,temp de conversion de 4*TAD,horloge=fosc/32: 1001 0010
}
int
ConvertAD(
void
)
{
unsigned
char
ucValH=0;
// poid fort résultat
unsigned
char
ucValL=0;
// poid faible résultat
int
delta;
ADCON0bits.ADON=1;
// activation du convertisseur
Delay10TCYx( 5 );
// Delay for 50TCY
PIE1bits.ADIE
=
0;
/* Masquer les interruptions */
PIR1bits.ADIF
= 0;
/* Reset ADC interrupt bit */
Wireless Care
70
Rapport de stage
Polytech' Nice Sophia Antipolis
ADRESL
=
0;
/* Reset ADRES */
ADRESH
=
0;
ADCON0bits.GO=1;
// démarrage conversion
while
(ADCON0bits.GO);
// si ADGO passe à 0 fin de conversion
ucValL = ADRESL;
ucValH = ADRESH;
delta=ucValL;
delta+=ucValH*256;
// delta a partir des conversion
ADCON0bits.ADON=0;
// convertisseur arrêté
return
delta;
}
void
main(
void
)
{
int
iresultat;
//Setup Ports
TRISA = 0b00000010;
//0 = Output, 1 = Input
TRISBbits.TRISB0=1;
/* Configuration de l'oscillateur */
OSCCON= 0b01110111;
// f=8MHz avec un oscillateur interne
InitA_D();
iresultat=ConvertAD();
Delay10KTCYx(500);
transmit2(iresultat);
}
void
transmit2(
int
delta2){
int
j;
// calcul et affiche delta2
char
res2[4];
// char *c1="votre temperature est de: ";
float
Tempout=0;
char
res[8];
Wireless Care
71
Rapport de stage
Polytech' Nice Sophia Antipolis
int
i=0;
// calcul temp
int
t;
char
car;
Tempout=(
float
)Tambiante+(
float
)(delta2*10)/1024;
for
(i=0;i<5;i++){
res[i]= Tempout/10;
Tempout=10*(Tempout-10*res[i]);
es[i]=res[i]+48;
}
Delay10KTCYx(10);
res[5]=res[4];
res[4]=res[3];
res[3]=res[2];
res[2]=',';
res[6]=' ';
res[7]='C';
res[8]=' ';
OpenUSART( USART_TX_INT_OFF &
//desactivation interruption transmission
USART_RX_INT_OFF &
// desactivation interruption emission
USART_ASYNCH_MODE &
// mode asynchrone
USART_EIGHT_BIT &
// donnée sur 8 bits
USART_CONT_RX &
// reception continue
USART_BRGH_HIGH,
// haut débit de transmission
25 );
Delay10KTCYx(10);
if
(PORTBbits.RB0==1){
//while(BusyUSART()=='0'); envoi de la chaine "votre temperature est de:"
//putrsUSART(c1);
//Delay10KTCYx(100);
for
(t=0;t<5;t++){
Delay10KTCYx(10);
while
(BusyUSART()=='0');
WriteUSART(res[t]);
}
Wireless Care
72
Rapport de stage
Polytech' Nice Sophia Antipolis
Delay10KTCYx(10);
while
(BusyUSART()=='0');
putrsUSART(" C");
Delay10KTCYx(10);
while
(BusyUSART()=='0');
putrsUSART("\n \r");
Delay10KTCYx(10);
while
(BusyUSART()=='0');
putrsUSART("\n \r");
}
CloseUSART();
}
Wireless Care
73
Rapport de stage
Polytech' Nice Sophia Antipolis
Annexe 8 : Code P HP
<?php
/*
* Created on Aug 2, 2007
*
* To change the template for this generated file go to
* Window - Preferences - PHPeclipse - PHP - Code Templates
* @Copiright Laurent Gendre
*/
if (isset($_GET['login']) AND isset($_GET['measure'])) {
// Affichage de la variable
echo 'Le numero de patient est le : ' . $_GET['login'] . "\n";
echo "<br>";
echo 'La mesure de temperature est de : ' . $_GET['measure'] . "\n";
echo "<br>";
// Passage de la variable dans une fonction SQL
Register(($_GET['login']),($_GET['measure']));
} else {
echo "La mesure de temperature est inexistante";
echo "<br>";
}
function Register($login,$measure){
// Configuration
$Host="sql.free.fr";
$Login1="www.esinsa";
$Pass1="Philips01";
$Base="PATIENT";
// Initialisation des variables
$error=0;
// Suppression des erreurs de saisie
if ($measure == ""){
$error=1;
}
// Suppression de certains caracteres speciaux
$measure = str_replace("@", "", $measure);
$measure = str_replace("'", "", $measure);
Wireless Care
74
Rapport de stage
Polytech' Nice Sophia Antipolis
$measure = stripslashes($measure);
// Test de la variable
//if(is_double($measure)==FALSE){
//$error=1;
//echo "erreur2";
//}
if($error==0){
// Init
$Cpt=0;
$Nb=0;
$Doublon=false;
// Connexion à la base de donnée
$Bd = mysql_connect($Host,$Login1,$Pass1);
//connexion à la base de donnée
$Sel = mysql_select_db($Base,$Bd);
// Requete
$Result=mysql_query("SELECT DISTINCT * FROM MESURE WHERE 1 ORDER BY ID_MESURE ASC", $Bd);
if (!$Result) {
die('Requête invalide : ' . mysql_error());
}
// Recuperation des donnees MESURE
while(mysql_fetch_row($Result)){
$IdMesure[]=mysql_result($Result, $Cpt, "ID_MESURE");
$Cpt++;
}
// Maj Cle MESURE
$Nombre=$Cpt-1;
$Id_Mesure=$IdMesure[$Nombre] + 1;
$Cpt=0;
while(!$IdMesure[$Cpt]){
// Verifie les doublons
if($IdMesure[$Cpt]==$Id_Mesure){
$Doublon=true;
}
$Cpt++;
Wireless Care
75
Rapport de stage
Polytech' Nice Sophia Antipolis
}
// Maj Date
$Date=date("F j, Y, g:i a");
// Enregistrement conditionnel
if($Doublon==false){
// Requete d'insertion
mysql_query("INSERT INTO MESURE (ID_MESURE,ID_PATIENT,DATE,DONNEE) VALUES
('$Id_Mesure', '$login', '$Date', '$measure') " , $Bd);
if (!$Result) {
die('Requête invalide : ' . mysql_error());
}else{
echo "Numero de mesure : ";
echo "$Id_Mesure";
echo "<br>";
echo "Enregistrement Reussi";
echo "<br>";
}
}else{
echo "Erreur de doublon";
echo "<br>";
}
// Fermeture de la base
mysql_close($Bd);
}else{
echo "La mesure de temperature nest pas valide";
echo "<br>";
}
}
?>
Wireless Care
76
Rapport de stage
1 345 vue(s)
1 494 diapositives
Commentaires 0
Connectez-vous pour poster un commentaire