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:
Wed Jul 07 11:39:10 2021 +0000
Revision:
0:278eba15d90b
Child:
1:5fcc88ae8ad4
upadte

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Giamarchi 0:278eba15d90b 1 /*******************************************************************************
Giamarchi 0:278eba15d90b 2 user.h -> fichier de fonctions
Giamarchi 0:278eba15d90b 3
Giamarchi 0:278eba15d90b 4 Gestion des 2 DELs de la carte CPU
Giamarchi 0:278eba15d90b 5 Mesure tension batterie
Giamarchi 0:278eba15d90b 6 Mesure courant panneaux solaires
Giamarchi 0:278eba15d90b 7 Mesure température
Giamarchi 0:278eba15d90b 8 *******************************************************************************/
Giamarchi 0:278eba15d90b 9 // Initialistion du µC, Tests divers
Giamarchi 0:278eba15d90b 10 /**
Giamarchi 0:278eba15d90b 11 * @param null
Giamarchi 0:278eba15d90b 12 */
Giamarchi 0:278eba15d90b 13 void Init_System(void) {
Giamarchi 0:278eba15d90b 14 // Hello World
Giamarchi 0:278eba15d90b 15 pc.printf("\r\nIniSat V2 : TP5\r\n\n");
Giamarchi 0:278eba15d90b 16
Giamarchi 0:278eba15d90b 17 // Test de l'horloge Systeme
Giamarchi 0:278eba15d90b 18 // pc.printf("Horloge CPU a %d Hz\r\n", SystemCoreClock);
Giamarchi 0:278eba15d90b 19
Giamarchi 0:278eba15d90b 20 xbee.baud(38400);
Giamarchi 0:278eba15d90b 21 }
Giamarchi 0:278eba15d90b 22 /******************************************************************************/
Giamarchi 0:278eba15d90b 23 // Gestion des 2 Dels de la carte CPU
Giamarchi 0:278eba15d90b 24 Ticker Compteur_Led;
Giamarchi 0:278eba15d90b 25 uint16_t cmpt_led;
Giamarchi 0:278eba15d90b 26 uint8_t etat_led;
Giamarchi 0:278eba15d90b 27 enum {Off, Ro, Ve, Ro_Ve} couleur;
Giamarchi 0:278eba15d90b 28
Giamarchi 0:278eba15d90b 29 void Tache_Cmpt_Led(void) {
Giamarchi 0:278eba15d90b 30 cmpt_led++;
Giamarchi 0:278eba15d90b 31 if(cmpt_led >= 100) { // Période : 1 sec
Giamarchi 0:278eba15d90b 32 cmpt_led = 0;
Giamarchi 0:278eba15d90b 33 DEL_R = etat_led & 1;
Giamarchi 0:278eba15d90b 34 }
Giamarchi 0:278eba15d90b 35 else if(cmpt_led == 5) {
Giamarchi 0:278eba15d90b 36 DEL_R = 0;
Giamarchi 0:278eba15d90b 37 }
Giamarchi 0:278eba15d90b 38 else if(cmpt_led == 50) {
Giamarchi 0:278eba15d90b 39 DEL_V = etat_led & 2;
Giamarchi 0:278eba15d90b 40 }
Giamarchi 0:278eba15d90b 41 else if(cmpt_led == 60) {
Giamarchi 0:278eba15d90b 42 DEL_V = 0;
Giamarchi 0:278eba15d90b 43 }
Giamarchi 0:278eba15d90b 44 }
Giamarchi 0:278eba15d90b 45
Giamarchi 0:278eba15d90b 46 void Init_Led(void) {
Giamarchi 0:278eba15d90b 47 cmpt_led = 0;
Giamarchi 0:278eba15d90b 48 etat_led = 0;
Giamarchi 0:278eba15d90b 49 Compteur_Led.attach(&Tache_Cmpt_Led,0.01); // 10ms
Giamarchi 0:278eba15d90b 50 }
Giamarchi 0:278eba15d90b 51
Giamarchi 0:278eba15d90b 52 void Start_Led(void) {
Giamarchi 0:278eba15d90b 53 Compteur_Led.attach(&Tache_Cmpt_Led,0.01); // 10ms
Giamarchi 0:278eba15d90b 54 }
Giamarchi 0:278eba15d90b 55
Giamarchi 0:278eba15d90b 56 void Stop_Led(void) {
Giamarchi 0:278eba15d90b 57 Compteur_Led.detach();
Giamarchi 0:278eba15d90b 58 }
Giamarchi 0:278eba15d90b 59
Giamarchi 0:278eba15d90b 60 void Set_Led(uint8_t couleur) {
Giamarchi 0:278eba15d90b 61 etat_led = couleur;
Giamarchi 0:278eba15d90b 62 }
Giamarchi 0:278eba15d90b 63 /******************************************************************************/
Giamarchi 0:278eba15d90b 64 // Mesure de la tension de la batterie
Giamarchi 0:278eba15d90b 65 float mes_bat;
Giamarchi 0:278eba15d90b 66
Giamarchi 0:278eba15d90b 67 float Mes_Bat(void) {
Giamarchi 0:278eba15d90b 68
Giamarchi 0:278eba15d90b 69 mes_bat = batin.read()*4.59f + 0.31f; // 3.3 x 13.9/10 + 310mV(D2 carte EPS)
Giamarchi 0:278eba15d90b 70 return mes_bat;
Giamarchi 0:278eba15d90b 71 }
Giamarchi 0:278eba15d90b 72
Giamarchi 0:278eba15d90b 73 void Envoi_Mes_Bat(void) {
Giamarchi 0:278eba15d90b 74
Giamarchi 0:278eba15d90b 75 pc.printf("BAT: %.2f V\n",mes_bat); // Format pour Terminal (Putty)
Giamarchi 0:278eba15d90b 76 // pc.printf("B%.2f\n",mes_bat); // Format pour Serial Data Plotter
Giamarchi 0:278eba15d90b 77 }
Giamarchi 0:278eba15d90b 78 /******************************************************************************/
Giamarchi 0:278eba15d90b 79 // Mesure des courants des 2 panneaux solaires
Giamarchi 0:278eba15d90b 80 float mes_sp1, mes_sp2;
Giamarchi 0:278eba15d90b 81
Giamarchi 0:278eba15d90b 82 void Mes_SP(void) {
Giamarchi 0:278eba15d90b 83
Giamarchi 0:278eba15d90b 84 mes_sp1 = sp_1in.read()*165.0f; // 3.3 x 50
Giamarchi 0:278eba15d90b 85 mes_sp2 = sp_2in.read()*165.0f; // 3.3 x 50
Giamarchi 0:278eba15d90b 86 }
Giamarchi 0:278eba15d90b 87
Giamarchi 0:278eba15d90b 88 void Envoi_Mes_SP(void) {
Giamarchi 0:278eba15d90b 89
Giamarchi 0:278eba15d90b 90 pc.printf("SP1: %.1f mA\tSP2: %.1f mA\n",mes_sp1,mes_sp2);
Giamarchi 0:278eba15d90b 91 }
Giamarchi 0:278eba15d90b 92 /******************************************************************************/
Giamarchi 0:278eba15d90b 93 // Fonction pour initialiser les fonctions précédentes
Giamarchi 0:278eba15d90b 94
Giamarchi 0:278eba15d90b 95 void Init_User_Fonctions(void) {
Giamarchi 0:278eba15d90b 96
Giamarchi 0:278eba15d90b 97 ctrl_reg = 1; // Pour mettre sous tension le moniteur de courant des Solar Panels
Giamarchi 0:278eba15d90b 98 Init_Led();
Giamarchi 0:278eba15d90b 99 }
Giamarchi 0:278eba15d90b 100 // Fonction pour stopper les fonctions précédentes
Giamarchi 0:278eba15d90b 101
Giamarchi 0:278eba15d90b 102 void Stop_User_Fonctions(void) {
Giamarchi 0:278eba15d90b 103
Giamarchi 0:278eba15d90b 104 ctrl_reg = 0;
Giamarchi 0:278eba15d90b 105 Stop_Led();
Giamarchi 0:278eba15d90b 106 }
Giamarchi 0:278eba15d90b 107 /******************************************************************************/
Giamarchi 0:278eba15d90b 108 // Mesure de la température
Giamarchi 0:278eba15d90b 109 float mes_temp;
Giamarchi 0:278eba15d90b 110
Giamarchi 0:278eba15d90b 111 void Mes_Temp(void) {
Giamarchi 0:278eba15d90b 112
Giamarchi 0:278eba15d90b 113 mes_temp = (tempin.read()*3.3f-0.5f)/0.01f; // 3.3 x -500mV
Giamarchi 0:278eba15d90b 114 }
Giamarchi 0:278eba15d90b 115
Giamarchi 0:278eba15d90b 116 void Envoi_Mes_Temp(void) {
Giamarchi 0:278eba15d90b 117
Giamarchi 0:278eba15d90b 118 pc.printf("Temp: %.1f degC\r\n",mes_temp); // Mesure directe
Giamarchi 0:278eba15d90b 119 // pc.printf("%.1f\n",mes_temp); // Supervision -> Format pour Serial Data Plotter
Giamarchi 0:278eba15d90b 120 }
Giamarchi 0:278eba15d90b 121 /******************************************************************************/
Giamarchi 0:278eba15d90b 122
Giamarchi 0:278eba15d90b 123