Nom - Free



Projet : Sensibilisation a la maîtrise de l’énergie

1- Problématique 5

2- Expression du besoin 5

2.1 Diagramme des cas d’utilisations 5

2.2 Description des cas d’utilisations 6

Description du cas d’utilisation Afficher énergie en temps réel 6

Description du cas d’utilisation Afficher le podium challenge vélo/question 7

Description du cas d’utilisation Configurer du challenge 8

Description du cas d’utilisation Lancer/ gérer un challenge de questions 9

Description du cas d’utilisation Saisir les réponses 9

Description du cas d’utilisation Consulter les résultats 10

Description du cas d’utilisation Démarrer / Arrêter un challenge vélo 10

Description du cas d’utilisation Mesurer la puissance électrique. 11

Description du cas d’utilisation Choisir le nombre d’ampoules 11

Description du cas d’utilisation Afficher les totaux du challenge question. 12

2.3 Diagramme de séquence global 12

Challenge vélo : 12

Challenge question : 13

3- Sous système Vélo 14

3-1 Diagramme de cas d’utilisation 14

3-2 Description des cas d’utilisation 14

Description du cas d’utilisation Démarrer/arrêter challenge vélo 14

Description du cas d’utilisation Pédaler 15

Description du cas d’utilisation Sélectionner lampes 15

Description du cas d’utilisation Allumer lampe 16

Description du cas d’utilisation Mesurer et calculer 16

Diagramme de séquence mesure énergie 17

Diagramme d’activité du sous-système vélo 18

4- Sous système Supervision 19

4-1 Diagramme de cas d’utilisation 19

4-2 Description des cas d’utilisation 20

Description du cas d’utilisation Affichage énergie en temps réel 20

Description du cas d’utilisation Saisir les réponses 22

Description du cas d’utilisation Afficher les totaux du challenge question. 23

4-2 Diagramme d’activité 26

Diagramme d’activité challenge vélo : 26

Diagramme d’activité challenge question : 27

Introduction NETMASTER 28

Introduction 29

Affichage sur l’écran géant 30

Site internet : 37

Configuration du double écran sur linux 43

Conclusion : 45

1) Introduction 46

2) Analyse détaillée 47

2.1 Analyse de la base de données 47

2.2 Analyse des pages de configurations 47

3) Conception détaillée 48

3.1 Diagrammes d’activités 48

3.1.1 Diagramme d’activité déroulement challenge questions coté supervision. 48

3.1.1 Diagramme d’activité déroulement challenge vélo coté supervision. 49

3.2 Choix et installation des logiciels 50

3.2 Base de données 51

3.3.1 Modèle physique 51

3.3.2 Création d’utilisateur avec privilèges. 53

3.3.3 Exportation de la base de données : création du script d’exportation SQL 56

3.3 Classes PHP 57

3.4 Pages de configuration 58

4) Elément de codage 60

4) Phase de test unitaires 64

5) Conclusion personnelle 64

Introduction 65

Analyse détaillée 65

Principes des services web 65

Principes de xml-rpc 65

Carte TINI 66

Conception détaillée 67

Diagrammes de séquences 67

Diagramme de classes 68

Itérations 69

Client Web Embarqué 69

Programmation sur carte tini 70

1) Création fichier source 70

2) Compilation fichier source 71

3)Conversion du ficher class 71

4) Chargement de l’image convertie 71

5) Exécution de l’image convertie 72

Pseudo Code 72

Côté serveur 72

Côté service 73

Côté Client 75

Conclusion 76

Introduction 77

Analyse détaillée 78

Cas d’utilisation 78

Principe de mesure et de commutation des lampes 79

Analyse générale 79

Analyse sur la carte Netmaster 80

Principe de fonctionnement de la Mesure 81

Principe du fonctionnement de la commutation 81

Conception détaillée 82

Diagramme de séquence 82

Diagramme de séquence de calcul de l’énergie 82

Diagramme de séquence commutation lampe 83

Classes Java 84

Diagramme de classe pour le calcul d’énergie 84

Description des classes et méthodes pour le calcul d’énergie 84

Diagramme de classe pour la commutation 88

Explication des classes pour la commutation 88

Compilation des .java 89

Phases de test 90

Conclusion : 91

Conclusion général : 92

Manuel d’installation : 93

Installation complète de la carte TINI 93

Manuel d’installation des pages de configuration sous linux Débian 98

Installation du plugin SVG sous linux 100

Annexe 101

1- Problématique

Ce projet a été mis en œuvre afin de sensibiliser les élèves à un ensemble de règles écologiques au cours d’une journée où différentes activités seront organisées. Celle-ci leur permettra d’acquérir certains gestes simples leur permettant d’éviter le gaspillage de l’énergie et par conséquent, réduire leurs factures d’électricité et celle du lycée. Pour cela aura lieu la distribution d’une charte de maitrise de l’énergie, la projection de slogans encourageant l’économie d’énergie ainsi qu’une animation constituée :

o D’une épreuve sportive sur vélo

o D’un quizz « énergie »

L’épreuve sportive vélo consiste à éclairer à la force des mollets l’équivalent de l’éclairage d’une maison individuelle. Pour cela des compétiteurs seront choisi pour représenter leur classe, et pendant une période limitée dans le temps, le système devra mesurer et afficher en temps réel sur écran géant, la production d’énergie électrique des vélos en compétitions. A noté que le compétiteur peut à tout moment sélectionner la puissance électrique fournie en choisissant mécaniquement d’une à quatre ampoules 20 watts. Bien sur plus il y a d'ampoule, plus l’effort à fournir est important.

Concernant le quizz énergie il oppose également les représentants d’une classe, qui devront répondre à une série de questions propres à la maitrise de l’énergie. Le système permet à un opérateur de saisir les réponses, de les enregistrer et de les afficher en temps réels sur un écran géant. Il doit également gérer l’ensemble des challenges, classer toutes les équipes e afficher les trois meilleurs équipes de chaque animations de la journée.

2- Expression du besoin

2.1 Diagramme des cas d’utilisations

[pic]

2.2 Description des cas d’utilisations

Description du cas d’utilisation Afficher énergie en temps réel

|Nom |Afficher énergie en temps réel |

|Objectif |Afficher en temps réel la puissance des vélos sur l’écran géant |

|Pré conditions |Base de donne accessible |

| |2) Challenge vélo sélectionné |

|Acteurs |Opérateur |

|Interactions |Le système récupère en temps réel la puissance des vélos dans la base de donné. |

| |Le système affiche les données sur l’écran géant. |

|Variantes | |

Scénario principal :

▪ Le système interroge la base de données et récupère les données en temps réel

▪ Le système affiche les données en temps réel (énergie par vélo)

Description du cas d’utilisation Afficher le podium challenge vélo/question

|Nom |Afficher le podium challenge vélo/question |

|Objectif |Afficher le podium des challenges de la journée. |

|Pré conditions |Base de donne accessible |

|Acteurs |Animateur |

|Interactions |L’animateur demande l’affichage du podium |

| |Le système interroge la base de données pour connaître les meilleures équipes de chaque challenge devant occupé|

| |le podium. |

| |Le système affiche les meilleures équipes de chaque challenge sous forme de podium sur l’écran géant dans les |

| |positions 1, 2,3. |

|Variantes | 3.a) si 2 équipes on le même nombre de points il y a deux même position sur une même place du podium. |

| |3.b) si n équipes on le même nombre de points il y a n positions sur une même place du podium. |

Scénario principal :

▪ L’animateur demande l’affichage du podium

▪ Le système interroge la base de données pour connaître les meilleures équipes de chaque challenge devant occupé le podium.

▪ Le système affiche les meilleures équipes de chaque challenge sous forme de podium sur l’écran géant dans les positions 1, 2,3.

Scénario pour l’Egalité entre deux équipes

▪ L’animateur demande l’affichage du podium

▪ Le système interroge la base de données pour connaître les meilleures équipes de chaque challenge devant occupé le podium.

▪ si 2 équipes sont à égalité, ces deux équipes occuperont la même place sur le podium.

Scénario pour l’Egalité entre trois équipes

▪ L’animateur demande l’affichage du podium

▪ Le système interroge la base de données pour connaître les meilleures équipes de chaque challenge devant occupé le podium.

▪ si n équipes sont à égalité, ces n équipes occuperont la même place sur le podium.

Description du cas d’utilisation Configurer du challenge

|Nom |Configurer du challenge |

|Objectif |Configurer les paramètres du prochain challenge |

|Pré conditions | |

|Acteurs |Operateur |

|Interactions |L’operateur sélectionne configure challenge question |

| |L’operateur saisit le nom de l’équipe |

| |L’operateur saisit les identités des challengers |

| |L’operateur sauvegarde ces réglages dans la base de données. |

| |Le challenge est opérationnel. |

|Variantes |1a) L’operateur sélectionne configure challenge vélo |

Scénario Principal :

▪ L’operateur sélectionne configure challenge question

▪ L’operateur saisit le nom de l’équipe.

▪ L’operateur saisit les identités des challengers

▪ L’operateur sauvegarde ces réglages dans la base de données.

▪ Le challenge est opérationnel.

Scenario config vélo :

▪ L’operateur sélectionne configure challenge vélo

▪ L’operateur saisit le nom de l’équipe

▪ L’operateur saisit les identités des challengers

▪ L’operateur sauvegarde ces réglages dans la base de données.

▪ Le challenge est opérationnel.

Description du cas d’utilisation Lancer/ gérer un challenge de questions

|Nom |Lancer/gérer un challenge de questions |

|Objectif |Lancer/gérer un challenge de questions en gérant son déroulement. |

|Pré conditions | 1) Paramètres du challenge question configuré. |

|Acteurs |Animateur, opérateur |

|Interactions |L’animateur demande à l’opérateur de lancer un challenge questions |

| |L’opérateur sélectionne le challenge question. |

| |L’animateur pose les questions |

|Variantes | |

Scénario Principal :

▪ L’animateur demande à l’opérateur de lancer un challenge questions

▪ L’operateur sélectionne configure challenge question

▪ L’operateur saisit le nom de l’équipe.

Description du cas d’utilisation Saisir les réponses

|Nom |Saisir les réponses |

|Objectif |Saisir les réponses aux questions posées par l’animateur |

|Pré conditions |Challenge question démarré |

|Acteurs |Opérateur, animateur |

|Interactions | |

| |L’operateur vérifie la réponse du (ou des) challenger(s) |

| |La réponse est correcte, l’operateur donne les points à l’équipe ayant répondu. |

| |Le total est mis a jour dans la base de données a chaque point |

|Variantes | 2a) La réponse est incorrecte, le système met à jour le total des points de l’équipe adverse. |

Scénario Principal :

▪ L’operateur vérifie la réponse du (ou des) challenger(s).

▪ La réponse est correcte, l’operateur donne les points à l’équipe ayant répondu.

▪ Le total est mis a jour dans la base de données a chaque point.

Scénario pour Réponse incorrecte

▪ L’operateur vérifie la réponse du (ou des) challenger(s).

▪ La réponse est incorrecte, l’operateur donne les points à l’équipe n’ayant pas répondu.

▪ Le total est mis a jour dans la base de données a chaque point

Description du cas d’utilisation Consulter les résultats

|Nom |Consulter les résultats |

|Objectif |Consulter les résultats sur un navigateur web |

|Pré conditions | 1) Pages web du projet disponibles |

|Acteurs |internaute |

|Interactions |L’internaute se connecte au site web. |

| |Le système affiche la page d’accueil. |

| |L’internaute choisie ce qu’il veut afficher. |

| |4) Le système affiche les données. |

|Variantes | |

Scénario principal :

▪ L’internaute se connecte au site web.

▪ Le système affiche la page d’accueil.

▪ L’internaute choisie ce qu’il veut afficher.

▪ Le système affiche les données.

Description du cas d’utilisation Démarrer / Arrêter un challenge vélo

|Nom |Démarrer / Arrêter un challenge vélo |

|Objectif |Permettre de démarrer ou arrêter un challenge vélo à partir d’une interface contrôlée par l’opérateur |

|Pré conditions | 1) Pas de challenge vélo en cours |

| |2) Choix de la puissance sur le vélo par le challenger |

| |3) Paramètre vélo configuré |

|Acteurs |Animateur, Opérateur, Challenger, |

|Interactions |L’animateur demande de lancer la partie |

| |L’opérateur démarre la partie |

Scénario principal :

▪ L’animateur demande de lancer la partie

▪ L’opérateur démarre la partie (partie logicielle)

Description du cas d’utilisation Mesurer la puissance électrique.

|Nom |Mesurer la puissance électrique |

|Objectif |Mesurer la puissance électrique fournie par le vélo pendant le challenge |

|Pré conditions | 1) Challenge vélo en cours |

| |2) Nombre d’ampoules choisies |

|Acteurs |Challenger, écran géant, système vélo |

|Interactions | 1) Challenger produit de la puissance électrique en pédalant |

| |2) Le système vélo mesure la puissance électrique produite par le challenger |

| |3) Les données sont affichées sur écran géant. |

|Variantes | |

Scénario principal :

▪ Le challenger produit de la puissance électrique en pédalant.

▪ Le système vélo mesure la puissance électrique produite par le challenger.

▪ Les données sont affichées sur écran géant.

Description du cas d’utilisation Choisir le nombre d’ampoules

|Nom |Choisir le nombre d’ampoules |

|Objectif |Choisir le nombre d’ampoules mécaniquement en préparation pour le challenge vélo |

|Pré conditions | 1) Une équipe au minimum participe au challenge |

|Acteurs |Challenger, |

|Interactions | 1) Le challenger choisi le nombre d’ampoules mécaniquement |

| |2) La partie est lancée |

|Variantes | 4.b) La partie se termine |

Scénario principal :

▪ Présence d’un challenger au moins

▪ Le challenger choisi le nombre d’ampoules

▪ La partie démarre

Scénario pour : Le joueur change le nombre d’ampoules au cours d’une partie:

▪ Présence d’un challenger au moins

▪ Le challenger choisi le nombre d’ampoules mécaniquement

▪ La partie démarre

▪ Au moment du challenge le joueur décide de modifier la puissance électrique, il change le nombre d’ampoules

Description du cas d’utilisation Afficher les totaux du challenge question.

|Nom |Afficher les totaux du challenge question |

|Objectif |Afficher en temps réel les totaux du challenge question |

|Pré conditions | 1) Challenge question en cours |

|Acteurs |Opérateur, Animateur |

|Interactions | 1) Le total est mis à jour dès qu’un point est remporté par une équipe. |

Scénario principal :

▪ Le total est mis à jour dès qu’un point est remporté par une équipe.

2.3 Diagramme de séquence global

Challenge vélo :

[pic]

Challenge question :

[pic]

3- Sous système Vélo

3-1 Diagramme de cas d’utilisation

[pic]

3-2 Description des cas d’utilisation

Description du cas d’utilisation Démarrer/arrêter challenge vélo

|Nom |Démarrer/arrêter challenge vélo |

|Objectif |Permettre de démarrer ou arrêter un challenge vélo à partir d’une interface contrôlée par l’opérateur |

|Pré conditions |1) Challenge vélo configurer |

|Acteurs |Animateur, Opérateur |

|Interactions |L’animateur demande à l’opérateur de démarrer la partie |

| |La mesure de courant et de tension débute. |

| |La partie dure le temps configuré |

| |L’animateur demande a l’opérateur d’arrêter la partie |

| |L’énergie totale produite est sauvegardé |

|Variantes | |

Scénario principal :

▪ L’animateur demande a l’opérateur de démarrer la partie

▪ La mesure de courant et de tension débute.

▪ La partie dure le temps configuré

▪ L’animateur demande a l’opérateur d’arrêter la partie

▪ L’énergie totale produite est sauvegardé

Description du cas d’utilisation Pédaler

|Nom |Pédaler |

|Objectif |Fournir de la puissance à l’alternateur |

|Pré conditions |1) Challenge vélo démarrer, nombres de lampes sélectionner |

|Acteurs |compétiteur |

|Interactions |Le compétiteur pédale |

| |L’alternateur produit l’énergie suivant la dureté demandé |

|Variantes | |

Scénario principal :

▪ Le compétiteur pédale

▪ L’alternateur produit l’énergie suivant la dureté demandé

Description du cas d’utilisation Sélectionner lampes

|Nom |Sélectionner lampes. |

|Objectif |Le compétiteur sélectionne le nombre d’ampoule souhaitée. |

|Pré conditions |1) Challenge vélo démarré. |

|Acteurs |Compétiteur |

|Interactions |Le compétiteur sélectionne le nombre de lampe qu’il veut en appuyant sur le commutateur, suivant la difficulté |

| |qu’ il désire. |

| |Suivant le nombres demandées on commute le nombres désirées a l’aide du commutateur |

Scénario principal :

▪ Le compétiteur sélectionne le nombre de lampe qu’il veut en appuyant sur le commutateur, suivant la difficulté qu’il désire

▪ Suivant le nombres demandées on commute le nombres désirées a l’aide du commutateur

Description du cas d’utilisation Allumer lampe

|Nom |Allumer lampe |

|Objectif |Commuter les lampes suivant l’énergie fournie et le nombre de lampes |

|Pré conditions |Challenge vélo démarré. |

| |Nombre de lampe sélectionné par le compétiteur |

|Acteurs |Compétiteur |

|Interactions |Les lampes reçoivent la bonne quantité d’énergie |

| |Les lampes s’allument |

|Variantes |1.a) les lampes ne reçoivent pas suffisamment d’énergie |

| |2.a) Les lampes ne s’allument pas |

Scénario principal :

▪ Les lampes reçoivent la bonne quantité d’énergie

▪ Les lampes s’allument

Scénario en cas de sous énergie :

▪ les lampes ne reçoivent pas suffisamment d’énergie

▪ Les lampes ne s’allument pas

Description du cas d’utilisation Mesurer et calculer

|Nom |Mesurer / calculer énergie |

|Objectif |Mesurer tension et courant et calculer l’énergie |

|Pré conditions |Challenge vélo démarré. |

|Acteurs |Carte tini |

|Interactions |La carte tini lit les mesures de tension et de courant sur ces entrées analogiques |

| |Elle calcule la puissance produite. |

| |Elle calcule l énergie suivant l’équation E=(1*p) |

| |Elle convertit en w/heures |

| |Elle transmet cette donnée au serveur xml-rpc |

Diagramme de séquence mesure énergie

[pic]

Le serveur xml-rpc va lancer mon programme toute les secondes, ensuite le programme va mesurer le courant et la tension, puis calculer la puissance, et enfin calculer l’énergie. Puis il va transmettre l énergie au serveur xml-rpc pour ainsi la mettre a disposition de la base de donnée.

Diagramme d’activité du sous-système vélo

[pic]

4- Sous système Supervision

4-1 Diagramme de cas d’utilisation

[pic]

4-2 Description des cas d’utilisation

Description du cas d’utilisation Affichage énergie en temps réel

|Nom |Afficher énergie en temps réel |

|Objectif |Afficher en temps réel la puissance des vélos sur l’écran géant |

|Pré conditions |1) Base de donnée accessible |

| |2) Challenge vélo sélectionné et configuré |

|Acteurs |Opérateur, superviseur |

|Interactions |Le superviseur récupère en temps réel dans une table de la base de donné, l’énergie produite par les vélos, |

| |Le superviseur récupère également le nom de l’équipe des challengers. |

| |L’énergie produite associé au nom de l’équipe ainsi que le numéro du challenge sont passée sur l’écran du |

| |superviseur et l’écran géant par un signal vidéo. |

| |L’énergie produite ainsi que le nom de l’équipe du compétiteur sont affichés en « temps réel » sur l’écran |

| |géant. |

|Variantes | |

Scénario principal :

▪ Le superviseur récupère en temps réel dans la table t_energie de la base de donné, l’énergie produite par les vélos,

▪ Le superviseur récupère également le nom de l’équipe des challengers.

▪ L’énergie produite associé au nom de l’équipe ainsi que le numéro du challenge sont passée sur l’écran du superviseur et l’écran géant par un signal vidéo.

▪ L’énergie produite est affiché en « temps réel » sur l’écran géant.

Description du cas d’utilisation Rechercher et afficher le podium des challenges vélo/questions

|Nom |Rechercher et afficher le podium des challenges vélo/questions |

|Objectif |Afficher le podium des challenges de la journée. |

|Pré conditions |Base de donne accessible |

| |Aucun challenge en cours |

| |Affichage des trois meilleures équipes sélectionné. |

|Acteurs |Opérateur, superviseur |

|Interactions |Le superviseur va rechercher dans la table t_résultat_velo de la base de données les trois meilleures équipes |

| |du challenge vélo. |

| |Le superviseur va rechercher dans la table t_résultat_question de la base de données les trois meilleures |

| |équipes du challenge question. |

| |Le podium est transmis par un signal vidéo sur l’écran géant ainsi que l’écran de supervision. |

| |Le podium est affiché sur l’écran géant. |

|Variantes | 3.a) si 2 équipes on le même nombre de points il y a deux même position sur une même place sur le |

| |podium. |

| |3.b) si 3 équipes on le même nombre de points il y a trois positions sur une même place sur le podium. |

Scénario principal :

▪ Le superviseur va rechercher dans la table t_résultat_velo de la base de données les trois meilleures équipes du challenge vélo.

▪ Le superviseur va rechercher dans la table t_résultat_question de la base de données les trois meilleures équipes du challenge question.

▪ Le podium est transmis par un signal vidéo sur l’écran géant ainsi que l’écran de supervision.

▪ Le podium est affiché sur l’écran géant.

Scénario pour l’Egalité entre deux équipes

▪ Le superviseur va rechercher dans la table t_résultat_velo de la base de données les trois meilleures équipes du challenge vélo.

▪ Le superviseur va rechercher dans la table t_résultat_question de la base de données les trois meilleures équipes du challenge question.

▪ si 2 équipes sont à égalité, ces deux équipes occuperont la même place sur le podium.

▪ Le podium est transmis par un signal vidéo sur l’écran géant ainsi que l’écran de supervision.

▪ Le podium est affiché sur l’écran géant.

Scénario pour l’Egalité entre trois équipes

▪ Le superviseur va rechercher dans la table t_résultat_velo de la base de données les trois meilleures équipes du challenge vélo.

▪ Le superviseur va rechercher dans la table t_résultat_question de la base de données les trois meilleures équipes du challenge question.

▪ si n équipes sont à égalité, ces n équipes occuperont la même place sur le podium.

▪ Le podium est transmis par un signal vidéo sur l’écran géant ainsi que l’écran de supervision.

▪ Le podium est affiché sur l’écran géant.

Description du cas d’utilisation Saisir les réponses

|Nom |Saisir les réponses |

|Objectif |Saisir les réponses aux questions posées par l’animateur |

|Pré conditions |Challenge question démarré |

|Acteurs |Opérateur, superviseur |

|Interactions | |

| |L’operateur vérifie la réponse du (ou des) challenger(s) |

| |La réponse est correcte, l’opérateur coche sur le superviseur, un bouton type radio, propre à l’équipe ayant |

| |répondu. |

| |Le superviseur sauvegarde le résultat des équipes dans la table t_résultat_question de la base de données une |

| |fois les onze questions posées. |

|Variantes | 1a) Aucune réponse n’est fournie par les challengers, la question est ignoré et l’opérateur passe a la |

| |suivante. |

| |2a) La réponse est incorrecte, l’opérateur coche sur le superviseur, un bouton type radio, propre à l’équipe |

| |n’ayant pas répondu. |

Scénario Principal :

▪ L’operateur vérifie la réponse du (ou des) challenger(s).

▪ La réponse est correcte, l’opérateur coche sur le superviseur, un bouton type radio, propre à l’équipe ayant répondu.

▪ Le superviseur sauvegarde le résultat des équipes dans la table t_résultat_question de la base de données une fois les onze questions posées.

Scénario pour Aucune réponse fournie :

▪ Aucune réponse n’est fournie par les challengers, la question est ignorée et l’opérateur passe à la suivante.

Scénario pour Réponse incorrecte

▪ L’operateur vérifie la réponse du (ou des) challenger(s).

▪ La réponse est incorrecte, l’opérateur coche sur le superviseur, un bouton type radio, propre à l’équipe n’ayant pas répondu.

▪ Le superviseur sauvegarde le résultat des équipes dans la table t_résultat_question de la base de données une fois les onze questions posées.

Description du cas d’utilisation Afficher les totaux du challenge question.

|Nom |Afficher les totaux du challenge question |

|Objectif |Afficher en temps réel les totaux du challenge question |

|Pré conditions | 1) Challenge question en cours |

|Acteurs |Opérateur, superviseur |

|Interactions |Afficher le nom de l’équipe. |

| |A chaque bouton radio coché, le superviseur incrémente par un rafraichissement le total de point d’une équipe |

| |sur l’écran de supervision et sur l’écran géant. |

Scénario principal :

▪ A chaque bouton radio coché, le superviseur incrémente par un rafraichissement le total de point d’une équipe sur l’écran de supervision et sur l’écran géant.

Description du cas d’utilisation Configuration du challenge

|Nom |Configuration du challenge |

|Objectif |Configurer les paramètres d’un challenge vélo ou questions. |

|Pré conditions | |

|Acteurs |Operateur, superviseur |

|Interactions |L’operateur sélectionne configuration challenge question. |

| |L’operateur saisit les noms des équipes. |

| |Ces noms sont stockés dans la table t_nom_équipe de la base de données et sont associés au numéro de l’épreuve qui|

| |va avoir lieu. |

| |L’operateur choisit une série de onze questions, stockées dans la table t_questions de la base de données. |

| |Le challenge est opérationnel. |

|Variantes |1a) L’operateur sélectionne configure challenge vélo. |

| |4a) L’operateur sélectionne une durée de temps pour le challenge vélo. |

Scénario Principal (configuration challenge question) :

▪ L’operateur sélectionne configuration challenge question

▪ L’operateur saisit les noms des équipes.

▪ Ces noms sont stockés dans la table t_nom_équipe de la base de données et sont associés au type et numéro de l’épreuve qui va avoir lieu.

▪ L’operateur choisit une série de onze questions, stockées dans la table t_questions de la base de données.

▪ Le challenge est opérationnel.

Scenario configuration challenge vélo :

▪ L’operateur sélectionne configuration challenge vélo.

▪ L’operateur saisit les noms des équipes.

▪ Ces noms sont stockés dans la table t_nom_équipe de la base de données et sont associés au type et numéro de l’épreuve qui va avoir lieu.

▪ L’operateur sélectionne une durée de temps pour le challenge vélo..

▪ Le challenge est opérationnel.

4-2 Diagramme d’activité

Diagramme d’activité challenge vélo :

[pic]

Diagramme d’activité challenge question :

[pic]

Introduction NETMASTER

Netmaster est un sous-système programmable basé sur un module de Dallas TINI. Sa connectivité dans le réseau lui permet une intégration avec d'autres systèmes.

Ainsi l'interface Ethernet permet d’installer Netmaster dans le réseau, cela garantie une interaction avec toutes les ressources du réseau. L'appui du protocole Tcp-IP et la disponibilité d’un serveur internet permettent à Netmaster le raccordement avec des réseaux Internet ou Intranet. De cette façon, il est possible de n'importe quel PC relié au réseau ou ayant un accés au Web, de recevoir des informations ou d’envoyer des commandes à Netmaster depuis un navigateur sans employer des programmes spécifiques.

Grâce à la ligne RS232 ou par le moyen d’un raccordement via ftp, il est possible de programmer NETMASTER en langage Java ainsi qu’en langage C.

Caractéristiques:

- 12 entrées logiques opto-isolées, visualisées par Leds,

- 8 sorties logiques avec relais (dynamiques ou statiques), visualisées par Leds,

- 4 entrées analogiques (0-10 Vdc), 12 bits,

- 2 sorties analogiques (0-2,5 Vdc), 12 bits,

- bus CAN ou RS485,

- interface Ethernet 10-baseT,

- interface 1-Wire

- clavier 6 touches + afficheur alphanumérique LCD,

- disponibilité du protocole PPP.

Introduction

Ma partie personnelle gère toute la partie affichage du projet .Elle se présente d'une part avec l’affichage en temps réel sur un écran géant en local et d'autre part avec un site internet pour visualiser les résultats à distance.

Sommaire :

• Affichage sur l’écran géant

• Site internet

• Configuration double écran

• Conclusion

Affichage sur l’écran géant

C’est l’affichage du projet en temps réels sur un écran géant en local.

Cas d’utilisation :

[pic]

Les trois choix d’affichage possible sur l’écran géant géré par l’acteur Animateur qui comme son nom l’indique va animer le projet.

Diagramme de séquence :

[pic]

L’animateur demande à l’opérateur de lancer mon application, une fois mon application lancée elle interroge la base de données et affiche sur l’écran géant suivant les indications récupérées dans la base de données .

Le but étant de créer une application en php qui se gère toute seule une fois lancée. L’application va afficher les données suivant ce qu’on va inscrire dans la base de données.

Il y a trois grands choix qui vont être gérés par une entête actualisée toute les secondes et,qui va afficher la page voulue.

1) La structure

L’application PHP va être gérée en la coupant en deux .D'une part une entête qui va nous permettre de gérer les pages des challenges et d'autre part le corps qui va les afficher.

J’ai divisé mon site grâce aux pseudo-frames qui m’ont permis de diviser mon site en plusieurs pages avec l’entête qui ne change pas . Le principe des pseudo-frames est de pouvoir donner l'impression que l'ensemble du site tient en une seule page. En fait, on utilise une page qui nous sert de support pour la charte graphique, et on inclut les autres pages selon une variable. Une variable qui dans ce cas , va être récupérée dans une base de données , l’application va changer de page suivant la valeur de la variable récupérée dans la base de données .

| |

| |

| |

|Projet velo BETA 1 // le titre de mon application |

| |

| |

| // un style css pour la mise en page |

|font-family:Verdana, Arial, Helvetica, sans-serif; // les polices |

|font-size: 0.8em; |

|margin: 0; // la marge |

|padding: 0; // la marge interne qui permet de definir la distance avec 2 objets dans la page |

|} |

|#header { |

|height: 100px; // la taille de l‘entête |

|background-color: #FF9900; // la couleur de fond de l ‘entête |

|} |

|#centre { |

|background-color:#FFFFFF; // la couleur de fond du corps |

|} |

|p {margin: 0;} |

| |

| |

| |

| |

| |

| |

| // sélectionne la partie entête du css |

| |

| |

| |

| |

| // selectionne la partie centre du css |

| |

| |

| |

| |

| |

| |

| |

| |

|// Fin de la page qui va me servir de structure pour gérer mon application |

2) Diagramme en SVG

Dans le cahier des charges il m'a été demandé d’inclure à mon application des dessins en SVG .

SVG :Scalable Vector Graphics. Mis au point par Adobe (utilisé par ses produits) et approuvé par le W3C, ce format permet de créer des graphiques vectoriels visualisables sur le Web. Ce format introduit le graphisme interactif en temps réel, en agissant directement sur les autres éléments d'un document HTML.

La plus grosse difficulté que j'ai rencontrée a été que les coordonnées soient inversées , x et y représentent le coin en haut à gauche au lieu du coin en bas à gauche .La solution que j’ai utilisée est un matrice inverse afin d’inverser mon plan .

| |

| |

| |

| |

| |

|172.XX.XX.XXX |

|  operateur |

| XXX |

|  projetVelo |

| |

| |

4) Phase de test unitaires

Mes principales phases de test consistaient à vérifier que mes requêtes MySql incorporée dans les programmes PHP mettaient bien à jour les informations désirées dans la base de données. Pour cela, j’ai tout d’abord utilisé la console MySql, et tapé à la main les requêtes de sélection ou autres afin de me familiariser avec celle-ci. Ainsi, je vérifiais si tel tables avait été bien mis a jour a la validation du formulaire. Une fois ces requêtes bien acquises, j’ai tout de même opté pour une autre méthode de vérification, car cela restait une tache assez longue. J’ai donc utilisé Phpmyadmin, qui en deux clics m’affiche le contenu de mes tables, de façon plus agréable, et m’offre la possibilité de réaliser toutes les opérations existante sur mes tables.

5) Conclusion personnelle

Ce projet m’a tout d’abord appris à travailler en quasi-total autonomie, contrairement au TP effectué pendant ma formation, où le professeur intervenait de temps en temps, ou encore au projet réalisé lors de mon stage, où mon tuteur débloquer parfois la situation. Cette fois, l’aide des professeurs était minime, au point que j’étais livré à moi-même, et la solution aux éventuels problèmes était de trouver la réponse soi-même.

De plus, j’ai découvert l’importance de l’analyse UML, que je négligé très souvent, mais qui en fait, permet de cerner le fonctionnement du projet, de façon à accélérer le travail à venir.

L’aspect du travail en équipe fut une chose très intéressante a découvrir, car les esprits ne sont pas toujours d’accord, et les diverses confrontations d’idées concernant un choix important du projet apprennent à communiquer d’une façon « diplomatique » et a posé une demi-mesure avant d’affirmer la justesse de ses idées. La prise de connaissance de l’avancement des autres membres du projet à également « poussé » a communiquer et a comprendre la tâche de son collègue, ce qui ne peut être que bénéfique.

Enfin, le travail personnel a approfondit mes connaissance des bases de données et du langage PHP. Ayant choisie le PHP5, j’ai pu tout de même entrevoir un peu « d’objet ».

Au final, je pense sincèrement que cette expérience est dors et déjà bénéfique pour moi, même si le projet n’est pas encore finaliser. Celle-ci a appuyé mon envie de continuer dans cette voie d’avenir qu’est l’informatique.

Introduction

Le rôle de la partie que j’ai à traitée est de transmettre les valeurs d’énergies instantanées produites ainsi que leurs moyennes lors du challenge vélo au PC superviseur qui se chargera de les afficher sur le grand écran. Ces valeurs d’énergies m’auront été préalablement fournies. Sur le plan matériel, mon interaction se limitera au Netmaster, où est embarqué la carte Tini et le PC superviseur. C’est à cet endroit que s’effectuera le dialogue client/serveur.

Analyse détaillée

Pour mon projet et la mise en place d’un dialogue client/serveur je dois utiliser un protocole web de type xml-rpc. Xml-rpc est ce qu’on appelle un service web.

Principes des services web

Ils permettent de faire communiquer des programmes tournant sur des machines différentes et écrits dans des langages de programmation différents.

Ils autorisent l'appel d'une méthode, d'un objet distant en utilisant un protocole web pour transporter des données au format XML pour formater les échanges. Les services web fonctionnent sur le principe du client serveur :

Un client appelle les services web.

Le serveur traite la demande et renvoie le résultat au client.

Le client utilise le résultat.

Principes de xml-rpc

1. Un message en xml est construit, il contient un nom de méthode et des paramètres.

2. Ce message est envoyé vers une adresse URL.

3. Cette url correspond à un serveur, qui va analyser le message reçu. il exécute alors la méthode indiquée en lui donnant les paramètres reçus.

4. Une réponse est ensuite renvoyée : elle indique un message d'erreur ou des valeurs résultats, toujours sous forme XML.

Cependant les programmeurs n’ont pas besoin d’acquérir des connaissances particulières sur le langage xml. En effet des composants réalisé en Javascript se chargent de formater les messages, de faire les appels et de recevoir les réponses. Tout reste donc transparent.

Carte TINI

TINI (Tiny InterNet Interface) est une carte qui permet de développer des applications Java Embarqué.

L'unité centrale de traitement de TINI est le DS80C390 de Dallas Semiconductor. La carte TINI possède une gestion de réseau, des interfaces intégrées Ethernet pour relier différents types de matériel, une interface RS232, une horloge en temps réel, une unique adresse MAC d'Ethernet, et une protection de batterie pour la RAM.

La ROM Flash contient les bibliothèques, la machine virtuelle de Java et les librairies des classes Java de TINI.

Rom Flash (Java Runtime Environment) Microcontrôleur

[pic]

Contrôleur Ethernet SRAM RS232

Horloge temps réel

[pic]

SRAM non volatile Pile au lithium

Conception détaillée

Diagrammes de séquences

Sur le diagramme de séquence, on peut lire que la classe xmlrpc_client a créée un objet représentant le serveur, ceci afin d’exécuter les méthodes distantes présentes dans la classe xmlrpc_transfert. Cette classe est un gestionnaire crée au lancement du serveur. Elle se situe du même coté que le serveur.

[pic]

Diagramme de classes

D’après le diagramme de classes, xmlrpc_client hérite d’XmlRpcClient ceci afin de pouvoir utiliser toutes les méthodes de la classe mère. Même chose pour xmlrpc_serveur qui hérite de WebServeur. Il en résulte une plus grande facilité de programmation. A noter qu’il peut y avoir plusieurs classes xmlrpc_client pour une classe xmlrpc_serveur, et que la classe xmlrpc_transfert a une même durée de vie que la classe xmlrpc_serveur.

[pic]

Itérations

Client Web Embarqué

La première étape dans la réalisation de ce projet a été de maitriser développer un client

WEB pour le module TINI. Ce travail a reposé sur l’API xmlrpc2.0 qui est un projet Apache. Celle-ci contient le paquetage org.apache.xmlrpc pour la manipulation du protocole XML-RPC, conformément aux demandes du cahier des charges.

Le principe de fonctionnement réside dans le fait qu’il y est une carte tini par vélo. Le client se trouve sur la carte. Dès qu’il se connecte au serveur basé sur un pc superviseur, le serveur lui renvoie un numéro d’identification qui lui sera propre. Ce numéro permettra de différencier les sources des énergies récupérées par les différents vélos.

Pour créer le serveur, je me suis servi du paquetage org.apache.WebServer. Le serveur à pour rôle de permettre la connexion du client et de mettre en place un gestionnaire où seront stockés toutes les méthodes dont a besoin le client.

Programmation sur carte tini

La phase de programmation sur carte tini se décompose en 5 étapes :

1) Création du fichier source

2) Compilation du fichier source

3) Conversion du fichier class

4) Chargement de l’image converti

5) Exécution de l’image convertie

1) Création fichier source

Pour la création du fichier source il est nécessaire d’utiliser un environnement de développement intégré. Pour le projet, nous avons utilisé eclipse 3.1.2. Il est très important d’utilisé une version 1.4.2 du J2SE ou plus récent, une version ultérieure n’étant pas compatible avec eclipse.

2) Compilation fichier source

Pour compiler le fichier, il faut le déplacer dans le répertoire où est installé le kit de développement JAVA.

Javac –target 1.1 MonProgramme.java

Il est obligatoire d’utiliser la commande –target si on utilise une version plus récente que JAVA 1.1. Cela s’explique du fait que le slush application de type Java, a été développer avec la version 1.1 du JDK.

Si la compilation est réussie, on obtient MonProgramme.class

3)Conversion du ficher class

Pour que TINI puisse exécuter le fichier, il est nécessaire qu’elle puisse le comprendre. Le TINI Firmware contient un programme nommé TINICONVERTOR capable de convertir un fichier .class en une image binaire exécutable sur TINI.

Tapez la commande suivante :

java -classpath \bin\tini.jar TINIConvertor -f MonProgramme.class -d \bin\tini.db -o MonProgramme.tini Cette commande lit le fichier source

MonProgramme.class, recherche les librairies nécessaires dans le répertoire tini.jar indiqué par l'option -classpath (un fichier d'archive .jar étant considéré comme un répertoire). Le fichier après conversion sera nommé  MonProgramme .tini. Il doit contenir la méthode main.

4) Chargement de l’image convertie

Pour exporter le fichier MonProgramme.tini sur la carte TINI, il suffit d’établir une connexion via ftp entre l’ordinateur et la carte :

ftp> put MonProgramme.tini

5) Exécution de l’image convertie

Une fois le programme chargé sur la carte TINI, on l’exécute ainsi :

TINI /> java MonProgramme.tini

Pseudo Code

Côté serveur

public class xmlrpc_serveur extends WebServer

La classe xmlrpc_serveur hérite des méthodes de la classe WebServer.

public xmlrpc_serveur(int port)

super(port);

On appelle ici, le constructeur de la classe mère.

public static void main (String[]args) {

try {

System.out.println("Tentative du lancement du serveur XML-RPC...");

xmlrpc_serveur serveur = new xmlrpc_serveur(2003);

serveur.setParanoid(true);

serveur.acceptClient("127.0.0.1");

System.out.println("Lancement du serveur réussi");

Création un objet de type xmlrpc_serveur qqui va représenter notre serveur.

setParanoid permet d’activer un filtre d’IP. Ici en l’occurrence seule la machine hôte pourra se connecter au serveur.

serveur.addHandler("service", new xmlrpc_transfert());

serveur.start();

Ajout d’un service de procédure distante nommé service. Ainsi toutes les méthodes publiques de cette instance pourront se voir invoquées.

Côté service

public class xmlrpc_transfert

protected Vector buffersEnergie = new Vector();

Un vecteur contenant des buffers pour les énergies provenant des différents vélos.

Un vecteur est un tableau d’objet ce qui nécessitera des transtypages.

public int déclareNouveauVélo()

nombreVélosDéclarés++;

buffersEnergie.addElement(new double[TAILLE_BUFFER]);

curseursBuffers.addElement(new Integer[0]);

return nombreVélosDéclarés;

Méthode appelée par chaque carte TINI pour déclarer son vélo et obtenir un identifiant unique pour ce vélo (un int). Cet identifiant sera ensuite utilisé pour identifié le vélo pour transmettre des valeurs d'énergie. Retourne l'identifiant attribué par le serveur pour le nouveau vélo.

curseursBuffers et buffersEnergie sont des objets de type vecteur.

public boolean addNouvelleEnergie(Integer idVélo, Double énergie)

Méthode qui va rajouter une nouvelle énergie dans un buffer.

int positionCurseur = ((Integer)curseursBuffers.elementAt(idVélo.intValue())).intValue();

System.out.println(+positionCurseur);

On récupère la position actuelle du curseur dans le buffer pour ce vélo.

La méthode elementAt() donne l'objet stocké dans le vecteur à la position idVélo.

La méthode elementAt() donne un objet générique. Il faut donc convertir l'objet pour l'utiliser.

double[] buffer = (double[])buffersEnergie.elementAt(idVélo.intValue());

On récupère le buffer correspondant au numéro du vélo.

buffer[positionCurseur] = énergie.doubleValue();

System.out.println(buffer[positionCurseur]);

Puis on ajoute la nouvelle valeur à la position du curseur dans le buffer.

if (positionCurseur == TAILLE_BUFFER) {

// BD...

// passer le buffer à une méthode pour sauvegarde dans BD

// ex: sauvegardeBuffer(idVélo, buffer);

positionCurseur = 0;

Si le buffer est plein alors, la personne qui est en charge de la base de donnée, appellera une méthode avec comme argument l’identifiant du vélo, ainsi que le buffer.

curseursBuffers.setElementAt(new Integer(positionCurseur), idVélo.intValue());

On revient à l’indice 0 dans le buffer si l’opération c’est bien passée.

public double CalculMoyenneEnergie(Integer id Vélo, Double énergie){

nb_envois++;

somme_energie=somme_energie+énergie;

System.out.println("Transaction moyenne énergie effectuée");

return somme_energie/nb_envois;

Méthode qui permet de calculer la moyenne de l’énergie.

Côté Client

public class xmlrpc_client extends XmlRpcClient

La classe xmlrpc_client hérite des methodes d’XmlRpcClient

public xmlrpc_client(String urlServeur) throws .MalformedURLException

super(urlServeur);

Constructeur pour la classe xmlrpc_client.

private boolean init() {



try {

idVélo = ((Integer)this.execute("service.déclareNouveauVélo", paramètres)).intValue();

Etablit la connexion avec le serveur XMLRPC et obtient du serveur un identificateur unique pour identifier le vélo attaché à la carte TINI sur laquelle tourne ce client.

public void envoyerValeurEnergie(double valeurEnergie)



paramètres.addElement(new Integer(idVélo));

paramètres.addElement(new Double(valeurEnergie));

Méthode utilisée par le capteur d'énergie pour communiquer des valeurs au serveur XML_RPC ; Les 2 paramètres correspondent aux paramètres de la méthode distante addNouvelleEnergie.

résultat = ((Boolean)this.execute("service.addNouvelleEnergie",paramètres)).booleanValue();

Exécution de la méthode distante avec passage des 2 paramètres. Les 2 paramètres doivent être impérativement de type vecteur.

Conclusion

J’éprouve des difficultés dans la phase de conversion des mes fichiers classes en fichiers tini, bien que le programme fonctionne sur un ordinateur. En effet malgré les outils mis à dispositions avec le firmware, TINIConververtor et BuildDependency , 2 programmes qui permettent de faire la conversion, celle-ci échoue à chaque tentative. La question qui se pose est, est-ce-que la bibliothèque d’Apache est compatible avec la carte Tini. Je suis actuellement en train d’utiliser une API qui est développé dans le cadre d’un projet

Introduction

Tâches à effectuer :

▪ Calcul d’énergie

▪ Commutation des lampes

Ma partie personnelle s’est essentiellement située sur la carte netmaster, je devais effectuer un calcul d’énergie produite par le compétiteur lors de l’épreuve. Puis j’ai dû gérer le système qui allait soit augmenter ou diminuer le nombre de lampes que le compétiteur souhaite allumer. Pour cela le compétiteur a à sa disposition un interrupteur qui peut commuter d’un côté ou de l autre, suivant cette position les lampes s’éteignent ou s’allument.

Les opérations de mesure et de commutation des lampes se font en temps réel.

Donc ma partie intervient uniquement dans ce que nous avons appelé sous système vélo.

Analyse détaillée

1 Cas d’utilisation

[pic]

Apres l’analyse UML en commun que nous avons eu en charge, il s’est divisé deux cas d’utilisation qui allaient représenter ma partie personnelle.

Ces 2 cas sont ceux qui sont encadrées en rouge, ils représente les 2 cas d’utilisation majeur du sous système vélo.

Dans la suite de cette analyse je vais vous présentez, mon analyse qui allait me permettre de réaliser mes programmes.

Pour cela j avais un cahier des charges précis :

• 1 Carte netmaster

• Le site constructeur (pour l aide)

• Programmation en JAVA

• Le logiciel éclipse

2 Principe de mesure et de commutation des lampes

Une de mes tâche consiste à calculer l’énergie instantanément produit par le compétiteur , mais pour calculer l’énergie il me faut au préalable la puissance, et pour avoir une puissance il me faut un courant et une tension, donc je dois réaliser une mesure de ces 2 grandeurs.

La seconde de mes tâches est la commutation des lampes

1 Analyse générale

[pic][pic][pic][pic]

[pic]

Ce schéma nous présente une vue d’ensemble de ce que doivent gérer mes différents programmes.

Ceux-ci vont être embarqués sur la carte netmaster

Le programme mesure d’énergie va être lancé par le serveur XML-RPC, et ceci chaque seconde, donc l’ énergie instantanée va être calculé pour une durée de 1 seconde.

Une fois que le programme aura calculé l’ énergie il la transférera au serveur XML-RPC qui fait l’interface entre mon programme de mesure et la base de donnée.

2 Analyse sur la carte Netmaster

[pic]

On a vu dans la partie générale une présentation de la carte netmaster, maintenant, on va s’intéresser aux entrées sorties que je vais utiliser par la suite .On peut voir quelles entrées et sorties sont utilisées par les différents éléments matériels qui vont intéragir avec la carte tini.

3 Principe de fonctionnement de la Mesure

Pour obtenir la mesure de courant, j’utilise une loi de physique: la loi d’ohm, car on ne peut pas mesurer le courant directement. Il faut noter que ce n ‘est pas une seule résistance mais plusieurs qui sont placées en parallèles et ceux dans un souci de ne pas perturber le montage.

Je me sers de 2 entrées analogiques pour effectuer mes 2 mesures, je place sur chacune d’elle l’image de la valeur du courant, et de la tension.

4 Principe du fonctionnement de la commutation

Le principe de la commutation est de scanner en permanence 2 ports logique de netmaster qui sont reliés à un bouton poussoir qui est contrôlé par le compétiteur.

Je me sers donc de 2 entrées logiques en entrées, sur lesquels il y aura soit un 1 ou 0 suivant le choix du compétiteur.

Ensuite pour commuter je me sers de toutes les sorties logique disponibles, sur lesquels je mets la valeur de la lampe que je souhaite commuter, cela actionnera le commutateur mécanique et ajoutera ou enlèvera une lame suivant l’appui.

Conception détaillée

1 Diagramme de séquence

1 Diagramme de séquence de calcul de l’énergie

[pic]

2 Diagramme de séquence commutation lampe

[pic]

Le compétiteur intervient sur le système grâce à un bouton, cela va lui permettre de diminuer ou augmenter le nombre d’ampoules comme il le souhaite.

2 Classes Java

J’ai eu le choix entre 2 langages de programmation, le langage c ainsi que le langage Java, ces langages étaient les seuls compréhensible par la carte netmaster. Ensuite pour programmer j’ai choisi le logiciel éclipse pour réaliser mes programmes.

Pour chacune de mes tâches j ai dû créer des programmes que j ‘ai divisé en plusieurs classes, ces classes ont été crées suite à mon analyse de mes différentes tâches. Ainsi j’ai crée mes diagrammes de séquences et mes diagrammes de classes.

Par la suite je vais vous présenter mes diagrammes de classes et les expliquer, et également présenter les méthodes qui composent les classes.

1 Diagramme de classe pour le calcul d’énergie

[pic]

2 Description des classes et méthodes pour le calcul d’énergie

Classe Mesure_calcul :

La classe mesure_calcul comporte la fonction principale, c'est donc cette classe qui sera lancée par le serveur XML-RPC a une fréquence de 1s. Cette classe possède une seule méthode.

Méthode mesure_calcul_puissance :

Cette méthode doit lancer les étapes de la mesure et du calcul de l’énergie :

La première étape est d’appeler la fonction initialisée, ensuite de récupérer la puissance en appelant la méthode calcul_puissance. L’ étape 3 consiste à appeler la méthode qui va calculer l’énergie, on lui passe en paramètre la puissance précédemment calculée.

voici le corps de la fonction. :

me.initialise();

puissance=cal.calcul_puissance();

cal.calcul_energie(puissance);

Il faut noter que pour se servir d’une méthode d’une autre classe, il faut d’abord créer un objet du type de la classe qui possède la méthode souhaitée.

calcul cal = new calcul();

Classe Mesure

La classe Mesure est la classe qui va essentiellement se charger de l’acquisition du courant ainsi que de la tension.

Dans cette classe j’ai utilisé des fonctions qui ont été créées par les fabricants de netmaster, ces fonctions nécessitaient donc un .jar spéciale que j’ai trouvé sur le site du constructeur.

Cette classe comporte en tout 3 méthodes :

Méthode initialise :

public void initialise()

{

NSystIO.Init();

}

Cette méthode sert a initialiser les entrées sorties de la carte netmatser, si on se sert des entrées sorties de la carte on est obligé d’invoquer cette méthode sinon cela ne fonctionne pas.

Méthode mesure_tension :

Cette méthode a pour charge de mesurer la tension pour cela on mesure on fait l’acquisition de l’entrée analogique ou est présente l’image de la tension.

Cette méthode retourne comme une valeur qui est la valeur finale de la tension.

Je me suis servi de cette fonction pour réaliser cela :

tension = NSystIO.GetAnalogInput(module,port);

Cette fonction demande le numéro du module netmaster en l’occurrence ici 0,puis le numéro du port ou la lecture doit être effectuée. Cette fonction va me retourner une valeur en hexadécimal correspondant à la valeur sur l’entrée. Je suis obligé de ranger cette valeur dans un Int puis de la convertir car sinon je ne peux avoir de chiffres après la virgule. Mais je vais donc devoir transformer cette valeur car je n’ai qu’une image sur une échelle fixée par le fabricant.

Voici l’ échelle de la fonction :

0V=0x0000; 10V=0x0FFF

Dans ma variable qui récupère la valeur j’ai donc un chiffre compris entre 0x0000 et 0x0FFF.

C’est pour cela que j’appelle la fonction convertisseur_decimal en lui passant comme paramètre la tension à convertir.

Méthode mesure_courant :

Cette méthode est similaire à la méthode qui mesure la tension, puisque je mesure également une tension, mais je dois effectuer une opération pour avoir la valeur du courant.

courant=im_courant1/ Résistance; la résistance est de 0.8 ohm

Classe Calcul :

Cette classe va essentiellement effectuer les différents calculs que l’on peut avoir besoin pour calculer l’énergie.

Cette classe comporte en tout 3 méthodes :

Methode calcul_puissance :

Cette méthode fait appel aux 2 fonctions de mesure qui ont été vues précédemment, elle doit retourner la puissance.

puissance = M1.mesure_courant() * M1.mesure_tension();

On obtient ainsi d’abord la valeur du courant que l’on multiplie à la tension, afin d’obtenir la puissance.

Methode calcul_energie :

Cette fonction se charge de calculer l’énergie pendant une certaine durée, on se sert de la puissance précédemment calculé. Elle doit retourner cette valeur.

Méthode convertisseur_decimal :

Cette méthode a pour rôle de convertir les tensions que je mesure dans la bonne échelle.

Principe de conversion :

Si 0x0fff=10V 0x0fff=4095 en base 10(décimal) 

Donc pour avoir une unité je divise 10 par 4095, j’obtient ainsi ma nouvelle unité .

Cette méthode retourne un float qui représente la tension ou la tension image du courant dans la bonne échelle.

3 Diagramme de classe pour la commutation

[pic]

4 Explication des classes pour la commutation

Classe Commutation_lampe :

Cette classe possède la fonction principale, elle possède également une seule méthode qui va mettre mon thread en route. Il suffira donc de lancer cette classe pour mettre en route mon programme de commutation.

Classe Scan_entree_logic :

Cette classe possède une seule méthode qui est un thread, ce thread va lancer une méthode d’une autre classe qui a pour but de scanner en permanence les entrées logique

de la carte netmaster, suivant la valeur qu’ il va lire, et suivant le nombre de lampes allumées il va soit augmente, soit diminuer le nombre de lampes souhaitées par le compétiteur.

Une fois qu’il a déterminé quelle lampe est à commuter, il va inscrire sur les sorties logiques la valeur correspondante à la valeur de la lampe qu’il va commuter

Classe Scan :

Cette classe va essentiellement servir a l’écriture et la lecture sur les ports logiques. Elle possède 3 méthodes dont l’une est l’initialisation des ports de la carte netmaster.

Méthode scan_logic :

Cette méthode a pour but de scanner les entrées logique afin de vérifier s‘il y a un action sur le bouton poussoir.

Voici la fonction que j ai utilisé pour ce faire :

valeur=NSystIO.GetLogicInput(module);

cette fonction attend comme paramètre le numéro du module de netmatser, 0 en l’occurrence.

Methode set_sortie

Cette méthode doit écrire sur les sorties logiques de la netmaster et ce dans le but d’actionner le commutateur pour allumer ou éteindre une lampe.

J’ai utilisé la fonction suivante :

NSystIO.LogicInputOutput(slaveadress,valeur);

Cette fonction attend l’adresse de départ du commencement de l’écriture, et la valeur que l’on souhaite écrire sur les sorties logiques.

5 Compilation des .java

Pour pouvoir placer un programme sur la carte tini, il faut le convertir préalablement en .tini. Pour convertir en .tini il faut déjà que l’on est des programmes en .class

.java

.class

.tini

o Transformation en .class

Lorsque l’on compile avec le logiciel éclipse on obtient des fichiers avec l’extension. java, pour avoir des fichiers avec l’extension .class il faut utiliser le java kit de sun.

o Transformation en .TINI

Pour transformer un fichier .class en un fichier .tini il faut faire appel à TINIConvertor qui transformera nos fichier, seulement dans le cas d’un fichier a convertir. Sinon il faudra utiliser Builddependecy0

Phases de test

Au départ j’ai suivi le planning et donc programmée la mesure d’énergie.

Lorsque j’ai commencé a programmer je n’avais pas la carte tini, car elle n’était pas encore installer, j ai donc programmé sans tester mon programme. Apres des qu’elle fut installée j’ai donc testée chacune de mes fonctions indépendamment pour vérifier si elle fonctionner selon l’usage que je souhaité.

Mais j ‘ai rencontré des problèmes lorsque j’ai commencé a les intégrées dans les classes que je souhaitais crées, car je n’arrivai plus à convertir en .tini.

Sachant que je n’y arrivai pas j’ai décidé d’y garder pour la fin est de continuer la programmation car sinon je n’aurai pu réaliser le programme de commutation

La compilation en .class fonctionne1le

La conversion en .tini pour mes classes n’est pas encore fonctionnelle

Conclusion :

Ma partie personnelle a été difficile mais intéressante, elle m’a posée beaucoup de problèmes tant au niveau de la réalisation que de la compréhension. J’ai été souvent bloqué sur des problèmes avec la carte netmaster, notamment pour la conversion en point tini (la difficulté réside dans le fait qu’il n‘est pas simple de trouver une aide détaillé sur ce problème).Ce problème me bloque encore a l’heure ou j’écris ces lignes.

Un des grands problèmes que j’ai rencontré est le manque d’organisation du travail, ou du moins je n’ai suivi que partiellement le plan de travail prévu à l’origine.

Grâce à la programmation en java je me suis amélioré quant à son utilisation, ma partie m’a permis d’apprendre à travailler en autonomie. Et également en groupe du fait qu’il fallait de la communication, surtout avec mon homologue qui travaillait sur la carte tini.

Bien que difficile cette partie du projet a été instructive sur bien des points.

Conclusion général :

Nous sommes pour le moment, incapables d’intégrer nos différentes parties, c’est pour cela que nous n’avons pas entrepris de phases d’intégration, plusieurs de nos projets n’étant pas encore abouties. Cependant malgré ces soucis, chacun d’entre nous prend du plaisir dans son travail. L’intérêt de travailler sur un projet industriel en groupe est certes motivant car cela nous place directement dans des conditions de travail réelles, mais aussi, apporte une nécessaire touche d’expérience sur un aspect très important dans le monde des entreprises, la communication. Le travail de groupe nous oblige à faire du « reporting » sur notre travaille réalisé, à se tenir au courant de l’état d’avancement des autres élèves, la nature de leur travail, leur approche, ceci implique une confrontation d’idées et parfois des divergences d’opinion sur la ligne de conduite à prendre. Une fois la partie technique achevé reste à promouvoir et à rendre compréhensible notre travail, tel est l’un des enjeux du projet.

Manuel d’installation :

Installation complète de la carte TINI

[pic]

I. Point de vue matériel

A. Matériel nécessaire pour installer la carte 

La liste du matériel indispensable pour installer et utiliser la carte TINI est la suivante:

o La carte TINI

o Une alimentation stabilisée de tension 30 V

o Un câble série RS232

o Un câble RJ45 croisé

o Un ordinateur avec un système d'exploitation MS-Windows XP ou Linux

B. Réglages à effectuer

En premier lieu il faut connecter le Netmaster au PC en utilisant une interface série au moyen d’un câble RS232, pour pouvoir configurer l’interface Ethernet (adresse ip, masque sous-réseau, passerelle…) de la carte TINI et installer le firmware (qui contient un ensemble de logiciels assurant le fonctionnement de la carte). J’ai commencé par fabriquer un câble RS232/RJ45. Je me suis aidé pour cela d’un schéma électrique fournie par Elsist, le constructeur du Netmaster.

[pic]

Une fois le firmware installé et l’interface Ethernet correctement configuré on utilisera l’interface Ethernet via un câble RJ/45 pour communiquer avec le kit TINI.

II. Point de vue logiciel

A. Fichiers nécessaires pour charger le firmware dans la flash ROM de la carte

• Le TINI Firmware 1.02 : tini1_02.tgz.

Qui contient le programme pour communiquer avec la carte via le port série, les pilotes pour la carte, le  slush  une sorte de mini shell type UNIX et l'outil pour compiler les programmes précompilé java en programme exécutable par la carte TINI. A noter que le slush est une application JAVA.

• Le Java Development Kit de Sun v1.5

Pour pouvoir compiler et lancer les programmes java

• L'API m 3.0

Qui contient les pilotes indispensables pour gérer les ports séries et parallèles de l’ordinateur (spécifique à l’OS Windows)

B. Opérations a suivre pour installer le firmware.

 

o Installez le JDK

 

o Installez m :

• Décompressez le fichier dans le dossier du JDK

• Placez le fichier comm.jar dans /jre/lib/ext/,

• le fichier m.properties dans /jre/lib/

• et le fichier win32com.dll dans /jre/bin/

o Décompressez le fichier tini1_02.tgz. dans le dossier du JDK

 

o Pour lancer le JavaKit qui permet de charger le :

• Le cable série est bien branché et la TINI est sous tension.

• Sous MS-DOS effectuer les commandes:

java -classpath \bin\tini.jar ; JavaKit

(ne pas oublier les majuscules)

o Une fois le JavaKit lancé, pour charger le firmware opérez comme ceci:

• Choisissez le port série sur lequel vous avez branché le câble.

• Choisissez la vitesse de transmission (part défaut utilisez 115200 bauds)

• Cliquez sur le bouton "open port"

• Cliquez sur le bouton "Reset".

Ceci permet d’arrêter tout les programmes qui sont lancés sur la carte et d'afficher le menu de chargement de la carte.

• Un affichage doit s'imprimer sur l'écran du type:

[pic]

• Allez dans le menu File et sélectionnez "Load File".

Choisissez le fichier \bin\tini.tbin.

JavaKit doit afficher l'évolution du chargement.

Tbin est l’abréviation de "TINI binaire", ce type de fichier est ciblé pour être chargé dans la flash ROM. Les dossiers TBIN distribués avec le TINI SDK contiennent les implémentations TINI Java Runtime ainsi que l’application du slush. Il faut maintenant réinitialiser la carte.

Attention cette manœuvre entraînera la destruction de tous les fichiers présents sur la carte.

N'oubliez pas de sauvegarder toutes vos données par le FTP.

Pour réinitialiser la carte tapez dans le JavaKit:

• B 18 // permet de se placer sur la bank 18

• F 0 // remplie bank 18 avec des 0 donc l'efface.

La carte est donc maintenant opérationnelle.

A. Installation et utilisation du slush.

Le slush est un petit shell avec des commandes UNIX et des commandes spécifiques.

Il permet de gérer les dossiers et les fichiers, de créer des utilisateurs, mais il permet aussi de configurer la carte pour les liaisons FTP et Telnet et de lancer les programmes java.

1. Dans le JavaKit allez dans le menu "File" et sélectionnez "Load File".

Choisissez le fichier \bin\slush.tbin.

2. Appuyer sur Entrée pour avoir ">" qui s'affiche puis pour se connecter au slush à partir de la liaison série tapez:

e

Pendant la connexion on peut voir s’afficher au bout d'un moment:

[-=        slush Version 1.02        =-]

[           System coming up.          ]

[      Beginning initialization...     ]  

[        Not generating log file.      ]  [Info]

[     Initializing shell commands...   ]  [Done]

[        Checking system files...      ]  [Done]

[ Initializing and parsing .startup... ]

[        Initializing network...       ]

[    Network configurations not set.   ]  [Skip]

[        Network configuration         ]  [Done]

[        System init routines          ]  [Done]

[    Slush initialization complete.    ]

[       Bring up Serial Server...      ]

Hit any key to login.

Welcome to slush.  (Version 1.02)

TINI login: root

TINI password:

TINI/>

Il est a noté qu'il y a par défaut 2 comptes créés: "guest" avec le mot

de passe "guest" et le super utilisateur "root" avec le mot de passe

"tini". Il est également possible de créer un autre utilisateur avec la commande useradd.

Pour qu'elle soit pleinement utilisable, il a fallu l’interface Ethernet de la carte TINI. La procédure est similaire à Linux.

Il suffit, pour cela, d'utiliser la commande ipconfig. Voici la configuration pour le lycée du LGM :

 ipconfig -a 192.16.104.94 -m 255.255.0.0 -g 192.16.104.1

TINI /> help ipconfig ipconfig [options]

Configure or display the network settings.

[-a IP -m mask] Set IPv4 address and subnet mask.

[-n domainname] Set domain name

[-g IP] Set gateway address

[-p IP] Set primary DNS address

Le slush gère les protocoles telnet et ftp pour télécharger les applications Java via la liaison Ethernet.

Manuel d’installation des pages de configuration sous linux Débian

Nous allons installer les logiciels suivant, nécessaire au fonctionnement de l’application :

|Apache |[pic] |

|serveur hhtp | |

|MySQL |[pic] |

|sgbd | |

|Php |[pic] |

|script interprété par le serveur | |

|PhpMyAdmin |[pic] |

|gestion des bases MySQL en ligne | |

I- Installation du serveur apache :

-Ouvrez un terminal et tapez « aptitude install apache2 »

L’installation va se faire de manière automatique

-Vous pourrai ensuite vérifier la réussite de l'installation et le bon fonctionnement d'Apache en ouvrant votre navigateur et en saisissant l’adresse

Vous devriez obtenir une page qui vous dit qu’apache a été installer avec succès (il est possible qu’il faille redémarrer la machine).

II- Installation de mysql serveur

-Ouvrez un terminal et tapez « aptitude install mysql -serveur »

III- Installation de php

-Ouvrez un terminal et tapez « aptitude install php5 »

III- Installation de PhpMyAdmin

-Ouvrez un terminal et tapez « aptitude install phpmyadmin »

IV- Installation de l’application

On va tout d’abord créer un lien symbolique, pour pouvoir placer les pages dans le répertoire

Ouvrez un terminal et tapez « ln –n /home/invite/cfgChalenge /var/www/configChallenge »

Ensuite il faut monter le cdrom en tapant « /mount/dev/cdrom /mnt »

Puis copier les fichiers nécessaires : « cp –r /mnt/configchallenge /home/invite/cfgChallenge »

Installation du plugin SVG sous linux

Si votre version de Mozilla est récente (version supérieur a 1.5 pour Firefox ) le plugin SVG est déjà intégré vous n’avez pas besoin de l’installer.

• Récupérer le plugin sur le site Adobe :

• Se connecter en "root"

• Copier l'archive dans /usr/local

Note :Logiquement, on peut installer le plugin où on veut, mais la documentation Adobe indique clairement qu'aucun test intensif n'a été mené pour en garantir le fonctionnement.

• Décompacter l'archive : tar xzvf adobesvg-3.01-linux-i386.tar.gz

• Lancer la commande d'installation : ./install.sh

Cela crée un répertoire /usr/local/adobesvg-3.01 et un lien symbolique /user/local/adobesvg/ qui pointe vers ce dossier.

Cela copie ensuite le fichier libNPSVG3.so vers /usr/lib/mozilla/plugins, autrement dit le répertoire d'installation des plugins Mozilla par défaut.

Si vous possédez une installation Linux/Mozilla par défaut, il ne devrait pas y avoir de problème.

Annexe

1. Affichage ecran geant

Ecrangeant.php :

Sensibilisation �la ma�rise de l�ergie - BETA 1

/* un style css pour la mise en page */

font-family:Verdana, Arial, Helvetica, sans-serif;/*les polices*/

font-size: 0.8em;

margin: 0;/*la marge */

padding: 0;/*-la marge interne qui permet de definir la distance avec 2 objets dans la page -*/

}

#header {

height: 100px; /* la taille de l'entéte */

background-color: #FFFFFF;/* couleur de fond de l'entéte */

}

#centre {

background-color:#FFFFFF;/*la vouleur de fond du corps */

}

p {margin: 0;}

Podium.php :

PODIUM

les meilleur challengeurs sont :

PodiumQ.php :

image/svg+xml

2

................
................

In order to avoid copyright disputes, this page is only a partial summary.

Google Online Preview   Download