Go Down

Topic: Arduino y thingSpeak (Read 2799 times) previous topic - next topic

surbyte

Porque haces esto
Code: [Select]
int lectura = digitalRead(oneWirePin);
  float temp = sensor.getTempCByIndex(0);
Serial.print("Temperatura en sensor 0: ");
  Serial.print(sensor.getTempCByIndex(0));
  Serial.println(" *C ");
  sensor.requestTemperatures();


creas una variable temp y luego vuelves s consultar el DS18B20 y lo presentas por monitor Serie pero no confirmas que temp tenga un valor.
Quiero decir que esto
Code: [Select]
Serial.print(sensor.getTempCByIndex(0));
debería ser esto
Code: [Select]
Serial.print(temp);

Luego prueba en esta linea

Code: [Select]
if(ThingSpeak.writeField(Channel_Number, Channel_Field, temp, Write_API_Key))
con un valor de temp previo fijo

Code: [Select]
tempo = 25.0;

A ver si se registra


juanreinadj

hola de nuevo, ya conseguí subir los datos del ds18b20 a thingspeak, luego al código también le añadido el sensor dht22 para temperatura y humedad, mi idea es en el mismo canal de thingspeak tener estos 3 tres campos ( se puede hasta 8 campos por canal ), pero solo me registra el primer campo, el del sensor ds18b20. Los otros dos si hubo una vez que me registraron 7 u 8 valores pero nada, fue un momento muy corto, me hice una nueva cuenta con otro canal distinto y seguía haciendo lo mismo, por monitor serial si me aparecen los tres valores.... les dejo el código por si me falta algo o se me a pasado algo....muchas gracias de antemano !!



Code: [Select]
#include <DHT.h>
#include <ThingSpeak.h>
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>

#define DHTPIN 3
#define DHTTYPE DHT22
#define oneWireBus
DHT dht(DHTPIN, DHTTYPE);

#define ONE_WIRE_BUS 2
 int oneWirePin = 2;
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensor(&oneWire);


byte W5100_MacAddress[] = {0xFE, 0xB6, 0xDC, 0xD3, 0xDD, 0xC4}; // Mac address, tiene que ser única en la red local
IPAddress ip(192,168,100,7); // Dirección de ip, Al principio vamos a tratar de obtener una dirección por DHCP pero si no funciona usamos esta configuración.
IPAddress gateway(192,168,100,1); // Gateway - Puerta de enlace
IPAddress subnet(255, 255, 255, 0); //  Mascara de red

char thingSpeakAddress[] = "api.thingspeak.com"; // Esta es la dirección del servidor al cual vamos a postear los datos.
const char * Write_API_Key = "8C0VMBM31J81JJVS"; // Una vez creado un canal necesitamos saber la Key de ese canal y copiarla aquí.
int Channel_Field1 = 1;
int Channel_Field2 = 2;
int Channel_Field3 = 3;
unsigned long Channel_Number = 337865;




// Iniciamos el Ethernet Shield
EthernetClient client;




void setup() {
Serial.begin(9600);
 dht.begin();
sensor.begin();
Serial.println("Prueba  ds18b y dht22");


// Connect to local network and internet

// Connect to local network and internet
Ethernet.begin(W5100_MacAddress);
Serial.println();
Serial.print("W5100 IP Address: ");
Serial.println(Ethernet.localIP());
Serial.print("W5100 Subnet Mask: ");
Serial.println(Ethernet.subnetMask());
Serial.print("W5100 Gateway: ");
Serial.println(Ethernet.gatewayIP());
Serial.println();
// Connect to Thingspeak server
if (ThingSpeak.begin(client))
// Connect to Thingspeak server
if (ThingSpeak.begin(client))
{
Serial.println();
Serial.println("Connect to Thingspeak Server...");
Serial.println();
}
else
{
Serial.println();
Serial.println("Failed to connect to Thingspeak Server!!!");
Serial.println();
}


}

void loop() {
 


  // sensor dht22
  float h = dht.readHumidity();
  float t = dht.readTemperature();

    if (isnan(h) || isnan(t)) {
    Serial.println("Error al Leer Sensor DHT¡");
    return;
    }
 // sensor ds18b20
 int lectura = digitalRead(oneWirePin);
  float temp = sensor.getTempCByIndex(0);
  Serial.print("Temperatura en ds18b20: ");
  Serial.print(temp);
  Serial.println(" *C ");
  sensor.requestTemperatures();   
  Serial.print("Humedad en dht22: ");
  Serial.print(h);
  Serial.print(" %\t");
  Serial.print("Temperatura en dht22: ");
  Serial.print(t);
  Serial.println(" *C ");
//Mostramos la información obtenida (temperatura y humedad) en el Monitor Serial
//El \t es equivalente al tabulador (separa los datos)
//El Serial.prinln nos cambia de linea en la siguiente lectura recibida


// Write the temperature to Thingspeak Server
if(ThingSpeak.writeField(Channel_Number, Channel_Field1, temp, Write_API_Key))
if(ThingSpeak.writeField(Channel_Number, Channel_Field2, t, Write_API_Key))
if(ThingSpeak.writeField(Channel_Number, Channel_Field3, h, Write_API_Key))
{
Serial.println();
Serial.println("Uploading data to Thingspeak Server...");
Serial.println();
}
else
{
Serial.println();
Serial.println("Failed to upload data to Thingspeak Server!!!");
Serial.println();
}


delay (30000);

}



Go Up