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
user.h@0:278eba15d90b, 2021-07-07 (annotated)
- Committer:
- Giamarchi
- Date:
- Wed Jul 07 11:39:10 2021 +0000
- Revision:
- 0:278eba15d90b
- Child:
- 1:5fcc88ae8ad4
upadte
Who changed what in which revision?
User | Revision | Line number | New 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 |