IniSat Modèle 1 Version 2 TP 5 : Station Sol Exo 1 : Enregistrement GPS sur carte SD Exo 2 : Mise en place d'un protocole de communication avec la station sol

Dependencies:   mbed

Committer:
Giamarchi
Date:
Tue May 31 13:40:28 2022 +0000
Revision:
0:798c7207505d
MAJ

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Giamarchi 0:798c7207505d 1 /*******************************************************************************
Giamarchi 0:798c7207505d 2 Université de Montpellier
Giamarchi 0:798c7207505d 3 NemoSpace IUT de Nîmes
Giamarchi 0:798c7207505d 4 IniSat Modèle 1 Version 2
Giamarchi 0:798c7207505d 5 *******************************************************************************/
Giamarchi 0:798c7207505d 6 // La lecture du GPS utilise une liaison série software
Giamarchi 0:798c7207505d 7
Giamarchi 0:798c7207505d 8 // TP n°5 : Correction
Giamarchi 0:798c7207505d 9
Giamarchi 0:798c7207505d 10 // Exo 1 : Enregistrement des coordonnées GPS sur carte SD
Giamarchi 0:798c7207505d 11 // Exo 2 : Gestion de messages descendants (Supervision) et montants (Commande)
Giamarchi 0:798c7207505d 12 // Exo 3 : Tracer sur My Maps votre déplacement autour du batiment (Mission)
Giamarchi 0:798c7207505d 13
Giamarchi 0:798c7207505d 14 #include "mbed.h"
Giamarchi 0:798c7207505d 15 //#include "platform/mbed_thread.h"
Giamarchi 0:798c7207505d 16 #include "SDFileSystem.h"
Giamarchi 0:798c7207505d 17
Giamarchi 0:798c7207505d 18 #include "system.h"
Giamarchi 0:798c7207505d 19 #include "user.h"
Giamarchi 0:798c7207505d 20 #include "soft_uart.h"
Giamarchi 0:798c7207505d 21 #include "gps.h"
Giamarchi 0:798c7207505d 22
Giamarchi 0:798c7207505d 23 SDFileSystem sd(PB_5, PB_4, PB_3, PA_11, "sd"); // MOSI, MISO, SCK, CS -> SPI pins on the Inisat
Giamarchi 0:798c7207505d 24
Giamarchi 0:798c7207505d 25 uint8_t etat, etat_mem;
Giamarchi 0:798c7207505d 26 uint16_t compteur;
Giamarchi 0:798c7207505d 27 float mes_accu;
Giamarchi 0:798c7207505d 28
Giamarchi 0:798c7207505d 29 int main()
Giamarchi 0:798c7207505d 30 {
Giamarchi 0:798c7207505d 31 Init_System();
Giamarchi 0:798c7207505d 32 etat = 0;
Giamarchi 0:798c7207505d 33 Init_Soft_UART();
Giamarchi 0:798c7207505d 34 // thread_sleep_for(1000);
Giamarchi 0:798c7207505d 35
Giamarchi 0:798c7207505d 36 // Setup a serial interrupt function to receive data
Giamarchi 0:798c7207505d 37
Giamarchi 0:798c7207505d 38 wait_ms(1000);
Giamarchi 0:798c7207505d 39
Giamarchi 0:798c7207505d 40 while (1) {
Giamarchi 0:798c7207505d 41 // thread_sleep_for(1); // Boucle toutes les 1 milliseconde environ
Giamarchi 0:798c7207505d 42 wait_ms(1);
Giamarchi 0:798c7207505d 43 compteur++;
Giamarchi 0:798c7207505d 44
Giamarchi 0:798c7207505d 45 // Gestion des modes avec une machine d'états
Giamarchi 0:798c7207505d 46 switch (etat) {
Giamarchi 0:798c7207505d 47 /******************************************************************************/
Giamarchi 0:798c7207505d 48 // Mode Init : Mise sous tension
Giamarchi 0:798c7207505d 49 // Initialisation du µC
Giamarchi 0:798c7207505d 50 case 0: {
Giamarchi 0:798c7207505d 51 Init_User_Fonctions();
Giamarchi 0:798c7207505d 52 // thread_sleep_for(1000);
Giamarchi 0:798c7207505d 53 wait_ms(1000);
Giamarchi 0:798c7207505d 54 Stop_Led();
Giamarchi 0:798c7207505d 55 GPS_Init();
Giamarchi 0:798c7207505d 56 Start_Led();
Giamarchi 0:798c7207505d 57 Set_Led(Ve);
Giamarchi 0:798c7207505d 58 // thread_sleep_for(1000);
Giamarchi 0:798c7207505d 59 wait_ms(1000);
Giamarchi 0:798c7207505d 60 etat = 1;
Giamarchi 0:798c7207505d 61 break; }
Giamarchi 0:798c7207505d 62 /******************************************************************************/
Giamarchi 0:798c7207505d 63 // Mode Gestion : Gestion des actions
Giamarchi 0:798c7207505d 64 // Contrôle du système
Giamarchi 0:798c7207505d 65 case 1:
Giamarchi 0:798c7207505d 66 mes_accu = Mes_Bat();
Giamarchi 0:798c7207505d 67 if(mes_accu < BAT_SEUIL_BAS_1) {
Giamarchi 0:798c7207505d 68 etat = 4;
Giamarchi 0:798c7207505d 69 Set_Led(Ro);
Giamarchi 0:798c7207505d 70 } else {
Giamarchi 0:798c7207505d 71 etat = 2;
Giamarchi 0:798c7207505d 72 Set_Led(Ve);
Giamarchi 0:798c7207505d 73 }
Giamarchi 0:798c7207505d 74 // thread_sleep_for(1000);
Giamarchi 0:798c7207505d 75 wait_ms(1000);
Giamarchi 0:798c7207505d 76 break;
Giamarchi 0:798c7207505d 77 /******************************************************************************/
Giamarchi 0:798c7207505d 78 // Mode Mission : Acquisition de données
Giamarchi 0:798c7207505d 79 // Mesure Batterie
Giamarchi 0:798c7207505d 80 // Mesure Courant faces solaires
Giamarchi 0:798c7207505d 81 // Stockage
Giamarchi 0:798c7207505d 82 case 2:
Giamarchi 0:798c7207505d 83 Lect_GPS();
Giamarchi 0:798c7207505d 84 GPS_Decodage();
Giamarchi 0:798c7207505d 85 Mes_SP();
Giamarchi 0:798c7207505d 86 Mes_Temp();
Giamarchi 0:798c7207505d 87 mes_accu = Mes_Bat();
Giamarchi 0:798c7207505d 88 if(mes_accu > BAT_SEUIL_HAUT_1)
Giamarchi 0:798c7207505d 89 {
Giamarchi 0:798c7207505d 90 etat = 3;
Giamarchi 0:798c7207505d 91 Set_Led(Ro_Ve);
Giamarchi 0:798c7207505d 92 }
Giamarchi 0:798c7207505d 93 else
Giamarchi 0:798c7207505d 94 {
Giamarchi 0:798c7207505d 95 etat = 1;
Giamarchi 0:798c7207505d 96 }
Giamarchi 0:798c7207505d 97 // thread_sleep_for(1000);
Giamarchi 0:798c7207505d 98 // wait_ms(1000);
Giamarchi 0:798c7207505d 99 break;
Giamarchi 0:798c7207505d 100 /******************************************************************************/
Giamarchi 0:798c7207505d 101 // Mode Radio : Transmission de données
Giamarchi 0:798c7207505d 102 // Mise en forme pour affichage
Giamarchi 0:798c7207505d 103 case 3:
Giamarchi 0:798c7207505d 104 Envoi_GPS();
Giamarchi 0:798c7207505d 105 Envoi_Mes_Bat();
Giamarchi 0:798c7207505d 106 // Envoi_Mes_SP();
Giamarchi 0:798c7207505d 107 // Envoi_Mes_Temp();
Giamarchi 0:798c7207505d 108
Giamarchi 0:798c7207505d 109 // thread_sleep_for(1000);
Giamarchi 0:798c7207505d 110 // wait_ms(1000);
Giamarchi 0:798c7207505d 111 etat = 1;
Giamarchi 0:798c7207505d 112 break;
Giamarchi 0:798c7207505d 113 /******************************************************************************/
Giamarchi 0:798c7207505d 114 // Mode Survie : Attente recharge de l'accu
Giamarchi 0:798c7207505d 115
Giamarchi 0:798c7207505d 116 case 4:
Giamarchi 0:798c7207505d 117 mes_accu = Mes_Bat();
Giamarchi 0:798c7207505d 118 if(mes_accu < BAT_SEUIL_BAS_2) {
Giamarchi 0:798c7207505d 119 etat = 5;
Giamarchi 0:798c7207505d 120 Stop_User_Fonctions();
Giamarchi 0:798c7207505d 121 }
Giamarchi 0:798c7207505d 122
Giamarchi 0:798c7207505d 123 if(mes_accu > BAT_SEUIL_HAUT_1) {
Giamarchi 0:798c7207505d 124 etat = 1;
Giamarchi 0:798c7207505d 125 Set_Led(Ve);
Giamarchi 0:798c7207505d 126 }
Giamarchi 0:798c7207505d 127 break;
Giamarchi 0:798c7207505d 128 /******************************************************************************/
Giamarchi 0:798c7207505d 129 // Mode Zombie : Coupure des consommateurs
Giamarchi 0:798c7207505d 130 // Passage en mode faible consommation
Giamarchi 0:798c7207505d 131 // Diminution de la fréquence du CPU
Giamarchi 0:798c7207505d 132 // Passage en mode Sleep
Giamarchi 0:798c7207505d 133 case 5:
Giamarchi 0:798c7207505d 134 sleep();
Giamarchi 0:798c7207505d 135 mes_accu = Mes_Bat();
Giamarchi 0:798c7207505d 136 if(mes_accu > BAT_SEUIL_HAUT_1)
Giamarchi 0:798c7207505d 137 etat = 0;
Giamarchi 0:798c7207505d 138 break;
Giamarchi 0:798c7207505d 139 /******************************************************************************/
Giamarchi 0:798c7207505d 140 default:
Giamarchi 0:798c7207505d 141 etat = 0;
Giamarchi 0:798c7207505d 142 break;
Giamarchi 0:798c7207505d 143 /******************************************************************************/
Giamarchi 0:798c7207505d 144 } // end switch
Giamarchi 0:798c7207505d 145 /* if(etat != etat_mem) // Debug des états
Giamarchi 0:798c7207505d 146 {
Giamarchi 0:798c7207505d 147 pc.printf("Etat_%d\r\n",etat);
Giamarchi 0:798c7207505d 148 etat_mem = etat;
Giamarchi 0:798c7207505d 149 }*/
Giamarchi 0:798c7207505d 150 /******************************************************************************/
Giamarchi 0:798c7207505d 151 } // end while
Giamarchi 0:798c7207505d 152 } // end main
Giamarchi 0:798c7207505d 153 /******************************************************************************/