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