Capteurs enfouis : Différence entre versions
(→Mercredi 18 Avril 2012 :) |
|||
(12 révisions intermédiaires par 3 utilisateurs non affichées) | |||
Ligne 18 : | Ligne 18 : | ||
== Avancement du projet == | == Avancement du projet == | ||
− | === 8 | + | === Séance 1 (8/02/12) : === |
<ul> | <ul> | ||
<li>Lecture des documentations relatives au MSP340F2274, horloge temps réel DS1391 et au module de communication CC2200.</li> | <li>Lecture des documentations relatives au MSP340F2274, horloge temps réel DS1391 et au module de communication CC2200.</li> | ||
Ligne 26 : | Ligne 26 : | ||
</ul> | </ul> | ||
− | === 9 | + | === Séance 2 (9/02/12) : === |
<ul> | <ul> | ||
<li>Lecture plus approfondie de la datasheet des horloges temps réel:</li> | <li>Lecture plus approfondie de la datasheet des horloges temps réel:</li> | ||
Ligne 39 : | Ligne 39 : | ||
</ul> | </ul> | ||
− | === | + | === Séance 3 (13/02/12) : === |
<ul> | <ul> | ||
Ligne 48 : | Ligne 48 : | ||
− | === | + | === Séance 4 (15/02/12) : === |
<ul> | <ul> | ||
Ligne 55 : | Ligne 55 : | ||
</ul> | </ul> | ||
− | === | + | === Séance 5 (16/02/12) : === |
<ul> | <ul> | ||
Ligne 68 : | Ligne 68 : | ||
</ul> | </ul> | ||
− | === | + | === Séance 6 (6/03/12) : === |
<ul> | <ul> | ||
Ligne 75 : | Ligne 75 : | ||
</ul> | </ul> | ||
− | === | + | === Séance 7 (7/03/12) : === |
<ul> | <ul> | ||
<li> ''' Acquisition de la température''' </li> | <li> ''' Acquisition de la température''' </li> | ||
Ligne 102 : | Ligne 102 : | ||
</ul> | </ul> | ||
− | === | + | === Séance 8 (12/03/12) : === |
<ul> | <ul> | ||
Ligne 126 : | Ligne 126 : | ||
[[Fichier:Photo1.jpg]] | [[Fichier:Photo1.jpg]] | ||
</ul> | </ul> | ||
− | === | + | === Séance 9 (14/03/12) : === |
<ul> | <ul> | ||
<li>'''Description des algorithmes'''</li> | <li>'''Description des algorithmes'''</li> | ||
Ligne 142 : | Ligne 142 : | ||
[[Fichier:algo_ED.png]] | [[Fichier:algo_ED.png]] | ||
</ul> | </ul> | ||
− | === | + | === Séance 10 (4/04/12) : === |
<ul> | <ul> | ||
Ligne 155 : | Ligne 155 : | ||
− | === | + | === Séance 11 (17/04/12) : === |
<ul> | <ul> | ||
Ligne 165 : | Ligne 165 : | ||
</ul> | </ul> | ||
− | === | + | === Séance 12 (18/04/12) : === |
<ul> | <ul> | ||
<li> '''Configuration de l'horloge temps réel :''' </li> | <li> '''Configuration de l'horloge temps réel :''' </li> | ||
− | <li> | + | <li> Le rôle de l'horloge temps réel est de génerer des interruptions et de fournir la date pour chaque mesure.</li> |
<li> La communication avec l'horloge temps réel s'effectue par liaison SPI. Avant de réaliser les fonctions de lecture et d'écriture on s'est documenté sur les différents registres à initialiser. </li> | <li> La communication avec l'horloge temps réel s'effectue par liaison SPI. Avant de réaliser les fonctions de lecture et d'écriture on s'est documenté sur les différents registres à initialiser. </li> | ||
<li> une fois que les entrées/sorties du MSP430 sont correctement configurées et cablées à l'horloge temps réel on a testé nos deux fonction read_SPI() et write_SPI() pour la configuration de l'horloge et de l'alarme. </li> | <li> une fois que les entrées/sorties du MSP430 sont correctement configurées et cablées à l'horloge temps réel on a testé nos deux fonction read_SPI() et write_SPI() pour la configuration de l'horloge et de l'alarme. </li> | ||
− | <li> la configuration de l'horloge s'effectue correctement. On obtient bien une interruption | + | <li> la configuration de l'horloge s'effectue correctement. On obtient bien une interruption à l'heure demandée.</li> |
+ | <li> Chronogramme de l'écriture d'un registre suivi de la lecture de ce même registre (ici les minutes) </li> | ||
+ | [[Fichier:scope_1_modif.jpg]] | ||
+ | </ul> | ||
+ | |||
+ | |||
+ | === Maquette complète === | ||
− | + | [[Fichier:maquette.jpg]] | |
+ | |||
+ | |||
+ | == Programmes == | ||
+ | |||
+ | [[media:Interruption_bouton_poussoir.zip]] |
Version actuelle datée du 7 août 2013 à 09:46
Sommaire
- 1 Liste du matériel
- 1.1 Présent
- 1.2 A acheter
- 1.3 Avancement du projet
- 1.3.1 Séance 1 (8/02/12) :
- 1.3.2 Séance 2 (9/02/12) :
- 1.3.3 Séance 3 (13/02/12) :
- 1.3.4 Séance 4 (15/02/12) :
- 1.3.5 Séance 5 (16/02/12) :
- 1.3.6 Entre temps :
- 1.3.7 Séance 6 (6/03/12) :
- 1.3.8 Séance 7 (7/03/12) :
- 1.3.9 Séance 8 (12/03/12) :
- 1.3.10 Séance 9 (14/03/12) :
- 1.3.11 Séance 10 (4/04/12) :
- 1.3.12 Séance 11 (17/04/12) :
- 1.3.13 Séance 12 (18/04/12) :
- 1.3.14 Maquette complète
- 1.4 Programmes
Liste du matériel
Présent
- Carte Arduino Uno
- Capteur température Dallas
- Capteur Vibration TI
- RTC Maxim
- Carte de développement TI eZ430-RF2500-SEH
- Divers composant pour le réveil passif
A acheter
- à remplir
Avancement du projet
Séance 1 (8/02/12) :
- Lecture des documentations relatives au MSP340F2274, horloge temps réel DS1391 et au module de communication CC2200.
- Installation des drivers et logiciels des composants utilisés
- Lecture de quelques programmes d'exemples avec compréhension des différents algorithmes
- Bug au niveau du chargement du programme sur la carte ( erreur d'initialisation de l'interface )
Séance 2 (9/02/12) :
- Lecture plus approfondie de la datasheet des horloges temps réel:
- Choix des broches utilisés sur la carte eZ430... et analyse du mode de communication SPI(synchronous peripheral interface):
- Résolution du Bug du logiciel de programmation
- Choix du mode de communication entre les différents capteurs et le microP. D'après les Datasheet des différents capteurs, on peut utiliser directement une liaison série de type SPI supportée par le microP.
- Compréhension du fonctionnement du mode SPI ainsi que le rôle des différents registres à initialiser
- Réalisation d'un premier algo permettant de lire les données retournées par deux capteurs
- Codage de ce cet algo (initialisation des différents registres + configuration de la liaison série etc ...)
Le fonctionnement de l'horloge temps réel et de son type de communication est à peu près compris. Mais je me suis rendu compte que le composant à notre disposition (DS1391) ne possède pas de broche d'interruption. En effet sur les autres composants du même type (DS1390,DS1394,DS1392 et DS1393) il y a cette broche et il sera alors plus simple par la suite de configurer une date précise qui activera la broche d'interruption. [Alex]En effet, il pourrait être intéressant d'obtenir des échantillons auprès de Maxim (http://www.maxim-ic.com). En attendant, on laisse *provisoirement* de coté le réveil par RTC[/Alex]
L'horloge temps réel fonctionne avec le mode de communication SPI. Il a fallu donc choisir sur quels broches spécifiques de la carte eZ430 il faut relier celles de l'horloge.
Séance 3 (13/02/12) :
- compréhension du mode de communication RF ainsi que le fonctionnement du Timer A
- modification du précédent algo en y rajoutant la partie qui géra la transmission des données via la com RF
- début du codage de l'algo
Séance 4 (15/02/12) :
- câblage d'un capteur de température afin de tester le programme permettant la com en mode SPI
- modification du programme et vérification des différents registres d'initialisation
Séance 5 (16/02/12) :
- n'ayant pas réussi à lire la température la séance précédente, on a continué nos testes (révision du programme, visualisation des sorties sur l'analyseur de signaux)
- on a remarqué que le module MSP délivrait bien la bonne horloge et que les autres signaux de sortie sont correcte. le capteur quant à lui nous délivre des signaux incorrecte. je crains fort qu'il soit endommagé (peut être lors du câblage ?)
Entre temps :
- Commande d'un nouveau composant RTC muni d'une interruption chez Maxim.
Séance 6 (6/03/12) :
- Réalisation de la carte RTC sur papier avec réflexion sur les signaux et sur la tension d'alimentation.
- Recherches sur l'utilisation de Altium pour la création de typon.
Séance 7 (7/03/12) :
- Acquisition de la température
-
Le microcontrôleur MSP430 est équipé d’un capteur de température intégré.
On choisira ce capteur pour effectuer nos premiers tests.
Lors de cette scéance on a pu faire l'acquisition de la température à travers le CAN du MSP430.
En effet la température ressentie est convertie en tension en utilisant l’équation :
Vtemp= 0,00355*(Tempc) +0,986
La tension de sortie du capteur est numérisée à travers le CAN du MSP430 - ADC10 – et stockée dans le registre ADC10MEM du CAN. En lisant ce dernier, on peut récupérer la tension.
La conversion de la tension lue dans le registre en température s’effectue à l’aide de l’équation : Temp_en_degC = ((tension - 673) * 4230) / 1024;
Séance 8 (12/03/12) :
- Architecure du réseau
- Pendant cette scéance nous avons établi une architecture pour le réseau de capteur
On aura deux algorithmes bien distincts celui de l’Access Point et celui de l’End Device.
- Soudage de la carte RTC avec l'aide de Thierry Flamen
- Test des alimentations
- TOP (coté composants)
- BOTTOM (coté soudure et composants CMS)
Séance 9 (14/03/12) :
- Description des algorithmes
- Dans ce projet on aura deux algorithmes :
- L’algorithme de l’Access Point
- L’algorithme du End Device
Le rôle d’un Access Point et de récupérer les données transmises par les différents End Device (capteurs) et de les envoyer par liaison série a un PC qui s’occupera de la collecte des informations.
A la première mise sous tension l’End Device s’occupera de la configuration du réseau sans fil et de son horloge temps réel, ensuite l’MSP430 va s’endormir en attendant une interruption qui sera générée par l’alarme. En effet une fois l’interruption détectée la routine d’interruption va mesurer la température à travers le convertisseur analogique numérique, lire la date via une liaison SPI, mettre en forme la donnée, la stocker dans la mémoire flash et ensuite tester s’il a atteint le nombre de mesures maximum. Si le teste est vrai la mémoire flash sera scruter et son contenu sera envoyé à l’Access Point. Sinon le microcontrôleur se remettra en mode basse consommation et attendra un nouveau réveil.
Séance 10 (4/04/12) :
- Liaison Sans fil
- Lors de cette séance on a récupéré un programme de test fourni pas Texas Instrument permettant d'établir une communication entre un End Device et un Access Point. On a modifié ce programme afin d'envoyer les températures mesurées sur l'End device vers l'Access Point.
- Une fois la communication établie, il a fallu stocker les données au niveau de l'access point. Pour cela on s'est documenté sur le mode de fonctionnement de la mémoire Flash du MSP430 et sur les différents registres à initialiser.
- Création de deux fonctions write_flash() et read_flash permettants de lire et d'écrire dans un segment de la mémoire flash
Séance 11 (17/04/12) :
- Test des interruptions et des modes basse consommation :
- Avant de tester les interruptions on s'est documenté sur le fonctionnement des interruptions et sur les différents modes basse consommation (LPM). Il exsite cinq modes basse consommation LPM0-4.
- Pour tester l'interruption on a configuré le bouton poussoir comme entrée d'interruption. à chaque appui sur le bouton poussoir, le MSP430 sort du mode LPM (basse consommation) pour executer la routine d'interruption. En effet la routine d'interruption consiste à effectuer une mesure de la stocker dans la mémoire flash et de l'envoyer à l'Access Point.
Séance 12 (18/04/12) :
- Configuration de l'horloge temps réel :
- Le rôle de l'horloge temps réel est de génerer des interruptions et de fournir la date pour chaque mesure.
- La communication avec l'horloge temps réel s'effectue par liaison SPI. Avant de réaliser les fonctions de lecture et d'écriture on s'est documenté sur les différents registres à initialiser.
- une fois que les entrées/sorties du MSP430 sont correctement configurées et cablées à l'horloge temps réel on a testé nos deux fonction read_SPI() et write_SPI() pour la configuration de l'horloge et de l'alarme.
- la configuration de l'horloge s'effectue correctement. On obtient bien une interruption à l'heure demandée.
- Chronogramme de l'écriture d'un registre suivi de la lecture de ce même registre (ici les minutes)
Maquette complète