#include #include SoftwareSerial BT1(3, 2); // RX | TX //patilla 2 y 3 para el wifi OneWire ds(5); // patilla en digital 5 para la sonda. float ahora, antes,cinco_minutos ; void setup(void) { cinco_minutos = 50000; // 50 segundos en milis BT1.begin(9600); Serial.begin(115200); antes = millis(); String GET = "GET /arduino/PutLastIP.php"; Serial.print("Iniciando...."); envio_internet( GET); Serial.print("Iniciado"); } void loop() { // de wifi a serial String B= "." ; while (BT1.available()) { char c = BT1.read() ; Serial.print(c); } // de serial a wifi /* if (Serial.available()) { char c = Serial.read(); BT1.print(c); } */ ahora = millis(); String ftemp = temp(); if (ahora - antes > cinco_minutos ) { Serial.println("loop"); Serial.println(ahora - antes ); // reconecta el wifi espera 3 segundos y envia la peticion..... String GET = "GET /arduino/PutLastIP.php"; envio_internet(GET); delay(3000); GET = "GET /arduino/InsertSensorValue.php"; GET +="?Sensor=Congelador"; GET +="&Valor="+ftemp; GET +="&Valor_Char=''"; envio_internet(GET); antes = millis(); } } void envio_internet(String GET) { GET += " HTTP/1.1\nHOST:marixus.es\n\n"; for (int f=0;f<3;f++) { BT1.println("AT+RST"); esp (500); BT1.println("AT+CWMODE=3"); esp (200); BT1.println("AT+CWQAP"); esp (200); BT1.println("AT+CWJAP=\"MOVISTAR_4A60\",\"Bx6VhZzrLLU4b6WNKFUT\""); Serial.println("AT+CWJAP=\"MOVISTAR_4A60\",\"Bx6VhZzrLLU4b6WNKFUT\""); esp (6000); BT1.println("AT+CIPMUX=1"); esp (3000); BT1.println("AT+CIPSTART=4,\"TCP\",\"67.228.88.28\",80"); esp (500); BT1.print("AT+CIPSEND=4,"); BT1.println(GET.length()); esp (500); BT1.println (GET); delay(3000); } } void esp( int pausa ) { // Envia a Serial lo que dice el wifi y espera while (BT1.available()) { char c = BT1.read() ; Serial.print(c); } delay (pausa); } String temp(void) { byte i; byte present = 0; byte type_s; byte data[12]; byte addr[8]; float celsius; if ( !ds.search(addr)) { ds.reset_search(); delay(250); // return -999; } switch (addr[0]) { case 0x10: type_s = 1; break; case 0x28: type_s = 0; break; case 0x22: type_s = 0; break; /* default: return -998; */ } ds.reset(); ds.select(addr); ds.write(0x44); delay(1000); present = ds.reset(); ds.select(addr); ds.write(0xBE); for ( i = 0; i < 9; i++) { data[i] = ds.read(); } int16_t raw = (data[1] << 8) | data[0]; if (type_s) { raw = raw << 3; if (data[7] == 0x10) { raw = (raw & 0xFFF0) + 12 - data[6]; } } else { byte cfg = (data[4] & 0x60); if (cfg == 0x00) raw = raw & ~7; else if (cfg == 0x20) raw = raw & ~3; else if (cfg == 0x40) raw = raw & ~1; } celsius = (float)raw / 16.0; return String(celsius); }