Ethernet +HC-SR04

#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
#include<Wire.h>

LiquidCrystal_I2C lcd(0x27,20,4);
//#include <LiquidCrystal.h>
#include <Relay.h>
//LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
#define Relay = 11;
#define Relay = 12;

double dis;
long tiem;
float pi=3.1416;
double radio=267;
int altura=245;
double resultado;
double alturaReal;

int variable1=364;




void setup() {
 Wire.begin();
 lcd.begin(20, 4);
 lcd.init();
 lcd.backlight();
 lcd.clear();
 lcd.setCursor(0, 0);
 Serial.begin(9600);
  pinMode(2, OUTPUT); 
  pinMode(3, INPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
}

void loop() {

   digitalWrite(2,LOW);
  delayMicroseconds(5);
  digitalWrite(2, HIGH);
  delayMicroseconds(10);
  tiem=pulseIn(3, HIGH);
  dis= double(0.017*tiem);
  delay(2000);
  
  alturaReal=altura-dis;
  resultado= pi*(radio*radio)*alturaReal/1000;
  lcd.setCursor(0, 0);
   lcd.print(F("D Marmo servicio"));
   
  lcd.setCursor(0, 1);
  lcd.print(F("datos cisterna")); 
    
    
  lcd.setCursor(0, 2);
  lcd.print(F("litros ")); 
  lcd.print(resultado);
    Serial.print("litros");
    Serial.println();
    Serial.print(resultado);
    Serial.println();
   
  lcd.setCursor(0, 3);
   lcd.print(F("alarmas low high"));
  
  //lcd.setCursor(0, 4);
  //lcd.print(F("  Alarmas   "));
  
    if (resultado < 3000) {
   digitalWrite (11, LOW);
    } else {

     digitalWrite (11, HIGH);
    }
      if (resultado > 49500) {

     digitalWrite (12, LOW);
    } else {
      
     digitalWrite (12, HIGH);
  }



}

spaces`deseo integrar este codigo a cayenne con trigger que avise que falta agua por intermedio de ethernet w5100 hace tiempo implemente uno con max7566 lo queria usar como gia pero ya no lo encuentro en la plataforma cayenne donde lo subi ya lo hice ayer pero en centimetros pero deseo que sea por litros si crees amigo Shramik salgaonkar si crees que es factible yo encantado de poner manos a la obra saludos

you can use this code to send data to cayenne https://github.com/myDevicesIoT/Cayenne-MQTT-Arduino/blob/master/examples/CommunitySubmitted/HC-SR04/HC-SR04.ino

mil gracias amigo me pongo a trabajar en ello

1 Like

el codigo que me recomendaste funciona muy bien con un alcance maximo de 396 cm yo estuve modificando mi codigo que nuestra litros de agua en lugar de centimetro, al final del codigo hay un renglon que no puedo modificar si lo comento // copila y lo subo al arduino y se conecta a cayenne por un par de minutos y despues se desconecta estos son algunos de mis intentos

//  Cayenne.celsiusWrite(1, thermocouple.readCelsius());
     // Cayenne.distanciaWrite( ECHO_readalturaReal());
    //  Cayenne.alturaRealWrite( ECHO_readECHO());
    //  Cayenne.virtualWrite( altura.readalturaReal());
     // Cayenne.ECHO_PIN 3Write( resultado.readalturaReal());
    //  Cayenne.resultadoWrite( ECHO_PIN 3.readalturaReal());
este es el codigo completo modificado  si se carga en arduino espero y me puedas ayudar amigo 
saludos



    
    indent preformatted text by 4 spaces 
#define CAYENNE_DEBUG       
#define CAYENNE_PRINT Serial
#include <CayenneMQTTEthernet.h>
#include <SoftwareSerial.h>
#include <LiquidCrystal_I2C.h>
#include<Wire.h>

LiquidCrystal_I2C lcd(0x27,20,4);

#include <Relay.h>

#define Relay = 11;
#define Relay = 12;

double distancia;
long tiem;
float pi=3.1416;
double radio=267;
int altura=245;
double resultado;
double alturaReal;
int variable1=364;

char username[] = "fffffffffffffffffffffffff";
char password[] = "fffffffffffffffffffffffffffffff";
char clientID[] = "ffffffffffffffffffffffffff";

#define resultado_alturaReal_CHANNEL 1
#define TRIGGER_PIN  2
#define ECHO_PIN 3

void setup() {

   Wire.begin();
 lcd.begin(20, 4);
 lcd.init();
 lcd.backlight();
 lcd.clear();
 lcd.setCursor(0, 0);
 Serial.begin(9600);
  pinMode(2, OUTPUT); 
  pinMode(3, INPUT);
  pinMode(11, OUTPUT);
  pinMode(12, OUTPUT);
  Cayenne.begin(username, password, clientID); 
}
void loop(){

  
digitalWrite(2,LOW);
  delayMicroseconds(5);
  digitalWrite(2, HIGH);
  delayMicroseconds(10);
  tiem=pulseIn(3, HIGH);
  distancia= double(0.017*tiem); 
  alturaReal=altura-distancia;
  resultado= pi*(radio*radio)*alturaReal/1000;
  delay(2000);

  
  lcd.setCursor(0, 0);
   lcd.print(F("D Marmo servicio"));
   
  lcd.setCursor(0, 1);
  lcd.print(F("datos cisterna")); 
    
    
  lcd.setCursor(0, 2);
  lcd.print(F("litros ")); 
  lcd.print(resultado);

  lcd.setCursor(0, 3);
  lcd.print(F("alarmas low high"));
  
    Serial.print("litros");
    Serial.println();
    Serial.print(resultado);
    Serial.println();
     
    if (resultado < 3000) {
   digitalWrite (11, LOW);
    } else {

     digitalWrite (11, HIGH);
    }
      if (resultado > 49500) {

     digitalWrite (12, LOW);
    } else {
      
     digitalWrite (12, HIGH);
    }
     Cayenne.loop();
}
     CAYENNE_OUT_DEFAULT()
     {
      Cayenne.virtualWrite(0, millis());


    //  Cayenne.celsiusWrite(1, thermocouple.readCelsius());
     // Cayenne.distanciaWrite( ECHO_readalturaReal());
    //  Cayenne.alturaRealWrite( ECHO_readECHO());
    //  Cayenne.virtualWrite( altura.readalturaReal());
     // Cayenne.ECHO_PIN 3Write( resultado.readalturaReal());
    //  Cayenne.resultadoWrite( ECHO_PIN 3.readalturaReal());
     }
     CAYENNE_IN_DEFAULT()
     {
      CAYENNE_LOG("Channel %u, value %s", request.channel, getValue.asString()); 
     }

Are you using arduino uno?

arduino uno shields ethernet 5100 y sensor de distancia hc-rs04

Arduino uses digital pins 10, 11, 12, and 13 (SPI) to communicate with the W5100 on the ethernet shield. So do not use this pins for any other thing.

ok deja reviso mi codigo

si ya me di cuenta de fatal error espero tener tiempo para re iniciar el proyecto
saludos

i did not understand what you mean by it. Are you getting any error or is it working now?