ESTE PROGRAMA VA A CONTROLAR LAS VARIABLES DE HUMEDAD Y TEMPERATURA SET POINT POR EL USUARIO A TRAVES DE UNA INTERFAZ

Dependencies:   mbed TextLCD Keypad DS1307 DHT11

Committer:
geogarcia
Date:
Mon Feb 17 13:38:12 2020 +0000
Revision:
3:65184d2ffad8
Parent:
2:0edb81388d5f
El proyecto trata de un datalogger de humedad y temperatura  con registro en tiempo real, empleando el sensor DHT11, el modulo RTC DS1307, placa STM32M4 Discovery

Who changed what in which revision?

UserRevisionLine numberNew contents of line
geogarcia 3:65184d2ffad8 1 ////////////////////////////////// LIBRERIAS DEL PROYECTO///////////////////////////////////////////////////////
geogarcia 1:2377110920ce 2 #include "mbed.h"// libreria principal mbed
geogarcia 1:2377110920ce 3 #include "TextLCD.h"// libreria lcd
geogarcia 1:2377110920ce 4 #include "Keypad.h"// libreria Keypad
geogarcia 1:2377110920ce 5 #include "DHT11.h"// libreria sensor de humedad y temperatura
geogarcia 3:65184d2ffad8 6 #include "math.h"// libreria matematicas
geogarcia 3:65184d2ffad8 7 #include "ds1307.h"// libreria rtc ds1307
geogarcia 3:65184d2ffad8 8 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 3:65184d2ffad8 9 ///////////////////////////////// CONFIGURACION DE GPIO ///////////////////////////////////////////////////////
geogarcia 3:65184d2ffad8 10 Serial pc(PA_2,PA_3);// configuracion de pines de Tx,Rx de comunicacion serial
geogarcia 1:2377110920ce 11 DigitalOut myled(PD_13);// configura salida digital y asigna a myled al pin d13
geogarcia 1:2377110920ce 12 TextLCD lcd(PB_7,PB_8,PB_15,PB_14,PB_13,PB_12,TextLCD:: LCD16x2);// configuracion de conexion de lcd
geogarcia 3:65184d2ffad8 13 Keypad teclado(PC_8,PC_11,PC_7,PC_6,PB_0,PD_6,PD_7,PB_3);//configuraciones de pines de teclado
geogarcia 3:65184d2ffad8 14 DHT11 dato(PC_5);// configuracion de pin de data sensor
geogarcia 3:65184d2ffad8 15 DS1307 my1307(PB_7,PB_8);// configuracion de pines de comunicacion I2C(sda,scl)
geogarcia 3:65184d2ffad8 16 Ticker flipper1;// configuracion de funcion ticker(interrupcion)
geogarcia 3:65184d2ffad8 17 Ticker flipper2;// configuracion de funcion ticker(interrupcion)
geogarcia 3:65184d2ffad8 18 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 3:65184d2ffad8 19 ////////////////////////// DECLARACION DE VARIABLES GLOBALES ////////////////////////////////////////////////
geogarcia 2:0edb81388d5f 20 int rtc=0;
geogarcia 2:0edb81388d5f 21 int sec=0;
geogarcia 2:0edb81388d5f 22 int mins=0;
geogarcia 2:0edb81388d5f 23 int hours=0;
geogarcia 2:0edb81388d5f 24 int day=0;
geogarcia 2:0edb81388d5f 25 int date=0;
geogarcia 2:0edb81388d5f 26 int month=0;
geogarcia 2:0edb81388d5f 27 int year=0;
geogarcia 2:0edb81388d5f 28 int muestreo;
geogarcia 1:2377110920ce 29 int z;
geogarcia 3:65184d2ffad8 30 char key;// variable usada en el teclado
geogarcia 3:65184d2ffad8 31 int released;// variable usada en el teclado
geogarcia 1:2377110920ce 32 int s; // variable usada en rutina sensor
geogarcia 3:65184d2ffad8 33 int temp;//
geogarcia 3:65184d2ffad8 34 int temp1;//
geogarcia 3:65184d2ffad8 35 int hum;//
geogarcia 3:65184d2ffad8 36 int avrtemp;//
geogarcia 3:65184d2ffad8 37 int avrhum;//
geogarcia 3:65184d2ffad8 38 int conteo;//
geogarcia 2:0edb81388d5f 39 //////////////////////////////Declaracion de funciones///////////////////////////////////////////////////////////
geogarcia 2:0edb81388d5f 40 void test_rw(int test);
geogarcia 3:65184d2ffad8 41 void lecturads1307();
geogarcia 2:0edb81388d5f 42
geogarcia 2:0edb81388d5f 43 /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 2:0edb81388d5f 44 ////////////////////////////////////////// SUB-RUTina lectura DS1307/////////////////////////////////////////////
geogarcia 2:0edb81388d5f 45 void lecturads1307(){
geogarcia 2:0edb81388d5f 46 my1307.gettime(&sec,&mins,&hours,&day,&date,&month,&year);
geogarcia 2:0edb81388d5f 47 pc.printf("DATE:\r");
geogarcia 2:0edb81388d5f 48 pc.printf("%.2D",day);
geogarcia 2:0edb81388d5f 49 pc.printf(":%.2D",month);
geogarcia 2:0edb81388d5f 50 pc.printf(":%.2D\r",year);
geogarcia 2:0edb81388d5f 51 pc.printf(" %.2D",hours);
geogarcia 2:0edb81388d5f 52 pc.printf(":%.2D",mins);
geogarcia 2:0edb81388d5f 53 pc.printf(":%.2D\n\r",sec);
geogarcia 2:0edb81388d5f 54 }
geogarcia 3:65184d2ffad8 55 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 2:0edb81388d5f 56 ////////////////////////////////////////// SUB-RUTina INTERRUPCION2/////////////////////////////////////////////
geogarcia 2:0edb81388d5f 57 void flip2(){
geogarcia 2:0edb81388d5f 58 conteo=conteo + 1;
geogarcia 2:0edb81388d5f 59 temp1=dato.readTemperature();
geogarcia 2:0edb81388d5f 60 muestreo=muestreo+temp1;
geogarcia 2:0edb81388d5f 61 if (conteo==1000){
geogarcia 2:0edb81388d5f 62 avrtemp=(muestreo/conteo) ;
geogarcia 2:0edb81388d5f 63 pc.printf("*PROMEDIO DE TEMPERATURA: \r");
geogarcia 2:0edb81388d5f 64 pc.printf("%2d C \r ",avrtemp);
geogarcia 2:0edb81388d5f 65 conteo=0;
geogarcia 2:0edb81388d5f 66 }
geogarcia 2:0edb81388d5f 67 }
geogarcia 2:0edb81388d5f 68
geogarcia 3:65184d2ffad8 69 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 2:0edb81388d5f 70 ////////////////////////////////////////// SUB-RUTina INTERRUPCION1/////////////////////////////////////////////
geogarcia 2:0edb81388d5f 71 void flip1(){
geogarcia 2:0edb81388d5f 72
geogarcia 2:0edb81388d5f 73 pc.printf("**********SE REALIZO REGISTRO DE DATOS********** \n\r");
geogarcia 2:0edb81388d5f 74 pc.printf("Temperatura:%d C \r ",dato.readTemperature());
geogarcia 2:0edb81388d5f 75 pc.printf("Humedad:%d Hr \r ",dato.readHumidity());
geogarcia 2:0edb81388d5f 76 pc.printf("DATE:\r");
geogarcia 2:0edb81388d5f 77 pc.printf("%.2D",day);
geogarcia 2:0edb81388d5f 78 pc.printf(":%.2D",month);
geogarcia 2:0edb81388d5f 79 pc.printf(":%.2D\r",year);
geogarcia 2:0edb81388d5f 80 pc.printf(" %.2D",hours);
geogarcia 2:0edb81388d5f 81 pc.printf(":%.2D",mins);
geogarcia 2:0edb81388d5f 82 pc.printf(":%.2D\n\r",sec);
geogarcia 2:0edb81388d5f 83 pc.printf("**********FIN DE REGISTRO DE DATOS**********\n\r");
geogarcia 3:65184d2ffad8 84
geogarcia 2:0edb81388d5f 85 }
geogarcia 3:65184d2ffad8 86 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 2:0edb81388d5f 87 ////////////////////////////////////////// SUB-RUTina test DS1307/////////////////////////////////////////////
geogarcia 2:0edb81388d5f 88 void test_rw(int test){
geogarcia 2:0edb81388d5f 89 if(test==0) pc.printf("Last R/W operation passed\n\r");
geogarcia 2:0edb81388d5f 90 else pc.printf("Last R/W operation failed\n\r");
geogarcia 2:0edb81388d5f 91 }
geogarcia 3:65184d2ffad8 92 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 2:0edb81388d5f 93 ///////////////////////// SUB-RUTina DS1307 calibracion de tiempo/////////////////////////////////////////////
geogarcia 2:0edb81388d5f 94 void DS1307RTC(){
geogarcia 2:0edb81388d5f 95 int junk=0;
geogarcia 2:0edb81388d5f 96 sec= 40;
geogarcia 2:0edb81388d5f 97 mins= 40;
geogarcia 2:0edb81388d5f 98 hours=10;
geogarcia 2:0edb81388d5f 99 day=6;
geogarcia 2:0edb81388d5f 100 date=15;
geogarcia 2:0edb81388d5f 101 month=2;
geogarcia 2:0edb81388d5f 102 year=20;
geogarcia 2:0edb81388d5f 103 test_rw(my1307.settime(sec,mins,hours,day,date,month,year));
geogarcia 2:0edb81388d5f 104 pc.printf("seconds set are %.2D\n\r",sec);
geogarcia 2:0edb81388d5f 105 pc.printf("minutes set are %.2D\n\r",mins);
geogarcia 2:0edb81388d5f 106 pc.printf("hours set are %.2D\n\r",hours);
geogarcia 2:0edb81388d5f 107 pc.printf("day set are %.2D\n\r",day);
geogarcia 2:0edb81388d5f 108 pc.printf("date set are %.2D\n\r",date);
geogarcia 2:0edb81388d5f 109 pc.printf("month set are %.2D\n\r",month);
geogarcia 2:0edb81388d5f 110 pc.printf("year set are %.2D\n\r",year);
geogarcia 2:0edb81388d5f 111 wait(3);
geogarcia 2:0edb81388d5f 112
geogarcia 2:0edb81388d5f 113 //while(1){
geogarcia 2:0edb81388d5f 114 test_rw(my1307.gettime(&sec,&mins,&hours,&day,&date,&month,&year));
geogarcia 2:0edb81388d5f 115 pc.printf("seconds set are %.2D \n\r",sec);
geogarcia 2:0edb81388d5f 116 pc.printf("minutes set are %.2D\n\r",mins);
geogarcia 2:0edb81388d5f 117 pc.printf("hours set are %.2D\n\r",hours);
geogarcia 2:0edb81388d5f 118 pc.printf("day set are %.2D\n\r",day);
geogarcia 2:0edb81388d5f 119 pc.printf("date set are %.2D\n\r",date);
geogarcia 2:0edb81388d5f 120 pc.printf("month set are %.2D\n\r",month);
geogarcia 2:0edb81388d5f 121 pc.printf("year set are %.2D\n\r",year);
geogarcia 2:0edb81388d5f 122
geogarcia 2:0edb81388d5f 123 junk= 0x39;
geogarcia 2:0edb81388d5f 124 test_rw(my1307.write(0x20,junk));
geogarcia 2:0edb81388d5f 125 pc.printf("Value written to register 0x20 %.2x \n\r",junk);
geogarcia 2:0edb81388d5f 126 junk=0;
geogarcia 2:0edb81388d5f 127 test_rw(my1307.read(0x20,&junk));
geogarcia 2:0edb81388d5f 128 pc.printf("Value read from register 0x20 %.2x \n\r",junk);
geogarcia 2:0edb81388d5f 129 wait(1);
geogarcia 2:0edb81388d5f 130 rtc=1;
geogarcia 2:0edb81388d5f 131 //}
geogarcia 2:0edb81388d5f 132 //}
geogarcia 2:0edb81388d5f 133 }
geogarcia 2:0edb81388d5f 134
geogarcia 3:65184d2ffad8 135 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 3:65184d2ffad8 136 ////////////////////////////////////////// SUB-RUTina keypad////////////////////////////////////////////////////
geogarcia 1:2377110920ce 137 void keypad1(){
geogarcia 2:0edb81388d5f 138 // while(1){
geogarcia 1:2377110920ce 139 key=teclado.ReadKey();
geogarcia 1:2377110920ce 140 if(key== '\0')
geogarcia 1:2377110920ce 141 released=1;
geogarcia 1:2377110920ce 142 if((key!= '\0')&& (released==1)){
geogarcia 2:0edb81388d5f 143 lcd.printf("%c\n",key);
geogarcia 1:2377110920ce 144 released=0;
geogarcia 2:0edb81388d5f 145 }
geogarcia 2:0edb81388d5f 146 //}
geogarcia 1:2377110920ce 147 }
geogarcia 1:2377110920ce 148
geogarcia 3:65184d2ffad8 149 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 1:2377110920ce 150 ////////////////////////////////////////// SUB-RUTina SENSORE DHT11/////////////////////////////////////////////
geogarcia 1:2377110920ce 151 void sensor(){
geogarcia 1:2377110920ce 152 s=dato.readData();
geogarcia 1:2377110920ce 153 if (s != DHT11::OK){
geogarcia 1:2377110920ce 154 lcd.printf("ERROR SENSOR\r\n");
geogarcia 1:2377110920ce 155 }
geogarcia 1:2377110920ce 156 else{
geogarcia 1:2377110920ce 157 lcd.cls();
geogarcia 1:2377110920ce 158 return;
geogarcia 1:2377110920ce 159 }
geogarcia 2:0edb81388d5f 160 pc.printf("Temperatura:%d C \r ",dato.readTemperature());
geogarcia 2:0edb81388d5f 161 //lcd.locate(0,1);
geogarcia 2:0edb81388d5f 162 //lcd.printf( "Hr:%d hr SP: 75 ",dato.readHumidity());
geogarcia 2:0edb81388d5f 163 pc.printf("Humedad:%d Hr \r ",dato.readHumidity());
geogarcia 1:2377110920ce 164 }
geogarcia 1:2377110920ce 165
geogarcia 3:65184d2ffad8 166 //////////////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 3:65184d2ffad8 167 ////////////////////////////////////////// SUB-RUTINA MENU///////////////////////////////////////////////////
geogarcia 1:2377110920ce 168 void menu(){
geogarcia 2:0edb81388d5f 169 //char tr;
geogarcia 1:2377110920ce 170 while(1){
geogarcia 2:0edb81388d5f 171 key=teclado.ReadKey();
geogarcia 1:2377110920ce 172 keypad1();
geogarcia 1:2377110920ce 173 if(key=='D' ){
geogarcia 1:2377110920ce 174 lcd.cls();
geogarcia 1:2377110920ce 175 return;
geogarcia 1:2377110920ce 176 }
geogarcia 2:0edb81388d5f 177 //tr=key;
geogarcia 3:65184d2ffad8 178 //void inicial();
geogarcia 1:2377110920ce 179 lcd.locate(0,0);// LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS
geogarcia 1:2377110920ce 180 lcd.printf( " Menu " );
geogarcia 1:2377110920ce 181 lcd.locate(0,1);
geogarcia 2:0edb81388d5f 182 // lcd.printf( " Configuracion " );
geogarcia 2:0edb81388d5f 183 //lcd.printf("%c\n", tr );
geogarcia 1:2377110920ce 184 //wait(3);
geogarcia 1:2377110920ce 185 //lcd.cls();//borra caracters
geogarcia 2:0edb81388d5f 186 if((key!= '\0')&& (released==1)){
geogarcia 2:0edb81388d5f 187 lcd.printf("%c\n",key);
geogarcia 2:0edb81388d5f 188 released=0;
geogarcia 2:0edb81388d5f 189 }
geogarcia 1:2377110920ce 190 }
geogarcia 1:2377110920ce 191
geogarcia 1:2377110920ce 192 }
geogarcia 1:2377110920ce 193
geogarcia 1:2377110920ce 194 ///////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 1:2377110920ce 195 //////////////////////////////////// SUB-RUTINA INICIAL ///////////////////////////////////////////////
geogarcia 1:2377110920ce 196 void inicial(){
geogarcia 1:2377110920ce 197 while(1){
geogarcia 1:2377110920ce 198 //lcd.cls();
geogarcia 2:0edb81388d5f 199 //keypad1();
geogarcia 1:2377110920ce 200
geogarcia 2:0edb81388d5f 201 //if ( key=='A'){
geogarcia 2:0edb81388d5f 202 //lcd.cls(); //borra caracters
geogarcia 2:0edb81388d5f 203 //menu();
geogarcia 2:0edb81388d5f 204 //}
geogarcia 1:2377110920ce 205
geogarcia 1:2377110920ce 206 sensor();
geogarcia 3:65184d2ffad8 207 lecturads1307();
geogarcia 1:2377110920ce 208 //temp:dato.readTemperature();
geogarcia 1:2377110920ce 209 //hum: dato.readHumidity();
geogarcia 2:0edb81388d5f 210 //lcd.locate(0,0); // LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS
geogarcia 2:0edb81388d5f 211 //lcd.printf( "T :%d C SP: 40",dato.readTemperature());
geogarcia 2:0edb81388d5f 212 //pc.printf("Temperatura:%d C \r ",dato.readTemperature());
geogarcia 2:0edb81388d5f 213 //lcd.locate(0,1);
geogarcia 2:0edb81388d5f 214 //lcd.printf( "Hr:%d hr SP: 75 ",dato.readHumidity());
geogarcia 2:0edb81388d5f 215 //pc.printf("Humedad:%d Hr \r ",dato.readHumidity());
geogarcia 2:0edb81388d5f 216 wait(1);
geogarcia 1:2377110920ce 217
geogarcia 1:2377110920ce 218 } // cierra while
geogarcia 1:2377110920ce 219 } // cierra rutina
geogarcia 0:fff27b50ca98 220
geogarcia 1:2377110920ce 221 /////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 1:2377110920ce 222 //////////////////////////////////// RUTINA PRINCIPAL //////////////////////////////////////////////
geogarcia 0:fff27b50ca98 223 int main() {
geogarcia 1:2377110920ce 224 z=0;
geogarcia 2:0edb81388d5f 225 conteo=0;
geogarcia 2:0edb81388d5f 226 muestreo=0;
geogarcia 2:0edb81388d5f 227 avrtemp=0;
geogarcia 2:0edb81388d5f 228 avrhum=0;
geogarcia 1:2377110920ce 229 released=1;
geogarcia 1:2377110920ce 230 //lcd.printf("helllooo people");// escribe caracteres en el lcd
geogarcia 2:0edb81388d5f 231 flipper1.attach(&flip1,20.0);
geogarcia 2:0edb81388d5f 232 flipper2.attach(&flip2,0.001);
geogarcia 0:fff27b50ca98 233 while(1) {
geogarcia 2:0edb81388d5f 234
geogarcia 2:0edb81388d5f 235 //if (rtc==0) DS1307RTC();
geogarcia 1:2377110920ce 236 // lcd.cls();//borra caracters
geogarcia 2:0edb81388d5f 237 //lcd.locate(0,0);// LOCALIZA INICIO DE TEXTO EN COLUMNAS Y FILAS
geogarcia 2:0edb81388d5f 238 //lcd.printf( " Proyecto " );
geogarcia 2:0edb81388d5f 239 pc.printf("PROYECTO TUTORIA\n\r " );
geogarcia 2:0edb81388d5f 240 //lcd.locate(0,1);
geogarcia 2:0edb81388d5f 241 //lcd.printf( " Tutoria " );
geogarcia 2:0edb81388d5f 242 //pc.printf("Tutoria \n\r ");
geogarcia 1:2377110920ce 243 wait(3);
geogarcia 2:0edb81388d5f 244 //lcd.cls();//borra caracters
geogarcia 2:0edb81388d5f 245 //lcd.locate(0,0);
geogarcia 2:0edb81388d5f 246 //lcd.printf( " Sistemas " );
geogarcia 2:0edb81388d5f 247 pc.printf("SISTEMAS MICROPROCESADOS \n\r ");
geogarcia 2:0edb81388d5f 248 pc.printf("GEOVANNY GARCIA \n\r ");
geogarcia 2:0edb81388d5f 249
geogarcia 1:2377110920ce 250 lcd.locate(0,1);
geogarcia 1:2377110920ce 251 lcd.printf( "Microprocesados " );
geogarcia 2:0edb81388d5f 252 //pc.printf("MICROPORCESADOS \n\r ");
geogarcia 2:0edb81388d5f 253 wait(2);
geogarcia 2:0edb81388d5f 254 //lcd.cls();//borra caracters
geogarcia 1:2377110920ce 255 inicial();
geogarcia 1:2377110920ce 256
geogarcia 1:2377110920ce 257 }
geogarcia 1:2377110920ce 258
geogarcia 0:fff27b50ca98 259 }
geogarcia 1:2377110920ce 260
geogarcia 1:2377110920ce 261 ///////////////////////////////////////////////////////////////////////////////////////////////////////
geogarcia 1:2377110920ce 262
geogarcia 1:2377110920ce 263
geogarcia 1:2377110920ce 264