Ein Pflanzenwächter für die Fensterbank Teil 2 - Handy App - AZ-Delivery

Hallo y bienvenido a la segunda parte de nuestra fila de guardián de plantas.

A pesar de que nuestro guardián de plantas funcione ya totalmente bien, encuentro a pesar de todo como Maker un poco detalladamente siempre una vez de nuevo después de Led - mirar "el semáforo" para mirar si mi planta tiene que ser vertida. Mucho más prácticamente lo encontraría si tengo que mirar en todo momento y en todas partes simplemente una vez brevemente en el móvil para saber como está en casa a la planta.

Pero antes de que ahora alguien piense ahora: A pesar de todo esto no va, a pesar de todo está demasiado complicado mucho, a pesar de todo miramos alrededor una vez antes más exactamente en el apartamiento el visillo. ¡Hay, o sea, un APARTAMIENTO ya exactamente concebido ya para nuestros objetivos que tenemos que adaptar solamente aquí a algo, dado que pocos códigos tienen que de causar y acoplan luego lo todo! Después nuestro APARTAMIENTO funciona tan como lo queremos.

¡Así suelto está! Como primer paso nos cargamos el apartamiento „Blynk“ del apartamiento el visillo en nuestro móvil. El APARTAMIENTO mismo es gratuito y puede ser ejercido para el nuestro, aquí en la segunda parte de Blogs, el caso de empleo descrito también sin otros gastos adicionales para el apartamiento.

Unidades de la variante gratuita no bastan más la „energía en 2000“ a un otro desmontaje más tardío el apartamiento dentro de Blogreihe sin embargo bajo circunstancias.

Gastos lo atacan sin embargo independientemente del escalón de desmontaje para la transmisión de datos del guardián de plantas al móvil. ¡Por favor, considera estos gastos en el copia del proyecto!

Después que hemos bajado el apartamiento Blynk del visillo y lanzamos éste por primera vez, tenemos que buscar pelea al principio una vez una cuenta. Con eso tecleamos en „Create New de la cuenta“

Nos registramos con el e-mail propio y otorgamos una contraseña:

Después hacemos clic en el nuevo proyecto:

Aterrizamos en el diálogo a la colocación de un nuevo proyecto. Aquí los datos de base del proyecto deben uno, como por ejemplo los nombres de proyecto, nuestra plataforma de desarrollo ESP32 y la forma de relación deseada. Parámetros de relación diferentes pueden ser dados cómo Z.B Bluetooth o también WLAN. Para poder recibir datos sin embargo también Móvil en el camino, el tipo de relación GSM tiene que ser elegido. En lo sucesivo los ajustes, que he elegido para mi proyecto, están mostrados:

Confirmamos las indicaciones con „Create“ y aterrizamos en un proyecto vacío. Añadimos nuestro primer elemento activo en nuestro apartamiento sobre el "excedente" al símbolo en el listón de título:

Elegimos el elemento „Gauge“, y configuramos el elemento. Al principio otorgamos un NOMBRE para el elemento. Me tengo para el nombre „Humedad de tierra la planta 1“ firmemente.


Después elegimos como input „V1“ variables, como valor mínimo 0 y como valor máximo 100. Completamos el campo "MARCA" con y ponemos como Reading el porcentaje "el Empuja". En el diseño un cualquier color y un cualquier tamaño de letra pueden ser elegidos.

Confirmamos a la izquierda los ajustes con la flecha, y aterrizamos luego de nuevo en la opinión principal el APARTAMIENTO:

Podemos cerrar una vez de nuevo el apartamiento ahora sólo, como ahora tenemos que adaptar nuestro código ESP a nuestro APARTAMIENTO. Con eso instalamos ante todo en Arduino sobre el administrador de biblioteca Blynk a la biblioteca en la versión más actual:

Después incorporamos el código siguiente en IDE:

 

#include <driver/adc.h>
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>


//El Portedefinierung Led's
#define LED_Rot     18    //LED rojos 
#define LED_Gelb    14    //LED amarillos
#define LED_Gruen   15    //LED verdes

//Ajustes LED PWM
#define PWMfreq 5000  //5 Khz la frecuencia de base
#define PWMledChannelA  0
#define PWMledChannelB  1
#define PWMledChannelC  2
#define PWMresolution  8 //8 bites de resolución

#define ADCAttenuation ADC_ATTEN_DB_11  //ADC_ATTEN_DB_11 = 0-3,6V la amortiguación ADC
#define MoisureSens_Poll_Interval 60000  //Intervalo entre dos mediciones de humedad de tierra en Millisekunden
#define MaxSensors 1

#define BLYNK_PRINT Serial
#define BLYNK_NO_BUILTIN 
#define BLYNK_NO_FLOAT
//#define BLYNK_DEBUG

struct MoistureSensorCalibrationData   {     int Data[MaxSensors*2] = {1650,2840};  //El Calibration Data para el sensor de humedad. Tienen en cuenta, por favor, el proyecto Texto y adaptan valores ensprechend    };

struct MoistureSensorData   {     byte Percent[MaxSensors] = {0};       //Datos de sensor de humedad en el por ciento      byte Old_Percent[MaxSensors] = {0};   //Precedente _ datos de sensor de humedad en el por ciento (el objetivo: La cantidad de datos ahorran.)   };
 
//Globalmente lo variable
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //Aquí según instrucciones Auth Token dere Blynk registran el apartamiento (el E-Mail).

//Tus WiFi datos de acceso.
char ssid[] = "WLANSSID";
char conven[] = "XXXXXXXX";  //Juego Word de puerto to "" for open networks.

MoistureSensorCalibrationData MCalib;
MoistureSensorData MMeasure;
byte AttachedMoistureSensors; //Detected Active Moisture del sensor (Count) 
unsigned long Moisure_ServiceCall_Handler = 0;  //Delay variables for Delay between Moisure Readings

void Setup() {   pinMode(LED_Rot,PRODUCCIÓN TOTAL);   pinMode(LED_Gelb,PRODUCCIÓN TOTAL);   pinMode(LED_Gruen,PRODUCCIÓN TOTAL);   Serial.begin(115200);   //initialize serial communication at 115200 bites por second:   ledcSetup(PWMledChannelA, PWMfreq, PWMresolution);   ledcSetup(PWMledChannelB, PWMfreq, PWMresolution);   ledcSetup(PWMledChannelC, PWMfreq, PWMresolution);   ledcAttachPin(LED_Rot, PWMledChannelA);   //attach el canal the to the GPIO to controlled   ledcAttachPin(LED_Gelb, PWMledChannelB);   ledcAttachPin(LED_Gruen, PWMledChannelC);   SetLedConfig(255,255,255);   Serial.println(F("La configuración de sistema:"));   AttachedMoistureSensors = DetectMoistureSensors();   Serial.print(AttachedMoistureSensors);   Serial.println(F("Bodenfeuchtigkeitsensor (en)"));   Serial.print(F("La relación a WLAN"));   delay(500);   Blynk.begin(auth, ssid, conven);  //Initalize el WiFi-Connection over Blync Library   Serial.println(F(" afortunado."));   SetLedConfig(0,0,0);   Run_MoistureSensors(true);
}    byte DetectMoistureSensors ()   {   #define MinSensorValue 100     byte Detected = 0;   for (int i = 0;i < MaxSensors;i++)     {     int MSensorRawValue = ReadMoistureSensor_Raw_Val(i);     if ( MSensorRawValue > MinSensorValue) { Detected++; } else {break;}     }   if (Detected < 1)     {        Serial.println(F("Ningunos Bodenfeuchtigkeitssesoren reconocido. Sistema contenido."));       esp_deep_sleep_start();       while(1) {}     }      return Detected;   }

bool SetLedConfig(byte Red,byte yellow,byte green)
{
ledcWrite(PWMledChannelA, Red); //LED rojos 
ledcWrite(PWMledChannelB, yellow); //LED amarillos
ledcWrite(PWMledChannelC, green); //LED verdes
return true;
}

int ReadMoistureSensor_Raw_Val(byte Sensor)   {    int ReturnValue,i;    long sum = 0;    #define NUM_READS 6       adc1_config_width(ADC_WIDTH_BIT_12);   //Categorías 0-4095    switch (Sensor)     {     case 0:       {       adc1_config_channel_atten(ADC1_CHANNEL_0,ADCAttenuation);       for (i = 0; i < NUM_READS; i++){  //Averaging algorithm        sum += adc1_get_raw( ADC1_CHANNEL_0 ); //Read análogamente        }        ReturnValue = sum / NUM_READS;       break;          }     }      return ReturnValue;     }

bool Get_Moisture_DatainPercent()
 {
 bool ReadisValid = true;
 for (int i = 0;i < AttachedMoistureSensors;i++)   {   if ((MCalib.Data[i] == 0) || (MCalib.Data[i+1] == 0)) //MinADC Value maxADC ADC Value     {      ReadisValid = false;     return ReadisValid;      }   int RawMoistureValue= ReadMoistureSensor_Raw_Val(i);   RawMoistureValue= MCalib.Data[i+1] - RawMoistureValue;   RawMoistureValue=MCalib.Data[i] + RawMoistureValue;   //Serial.println (MCalib. Data [i]);   //Serial.println (MCalib. Data [i 1]);   //Serial.println (RawMoistureValue);   MMeasure.Percent[i] = map(RawMoistureValue,MCalib.Data[i],MCalib.Data[i+1], 0, 100);   if (MMeasure.Percent[i] > 100 ) { ReadisValid = false; }   }
 return ReadisValid;
 }

void Run_MoistureSensors (bool Init)   //Función principal a la empresa de los sensores de humedad de tierra
{
byte MinSensValue = 100;
if ((millis() - Moisure_ServiceCall_Handler >= MoisureSens_Poll_Interval) | (Init))   {    Moisure_ServiceCall_Handler = millis();    if (Get_Moisture_DatainPercent())  //Datos actuales válidos el recibido    {       for (int i = 0;i < AttachedMoistureSensors;i++)         {            if (MMeasure.Percent[i] != MMeasure.Old_Percent[i])             {               MMeasure.Old_Percent[i] = MMeasure.Percent[i];               if (MMeasure.Percent[i] < MinSensValue ) { MinSensValue = MMeasure.Percent[i]; };               Serial.print(F("El valor de humedad Sensor 1 en el por ciento:"));               Serial.print(MMeasure.Percent[0]);                   Serial.println(F(" %"));                if (i == 0)  {Blynk.virtualWrite(V1,MMeasure.Percent[i]);  } //Actualiza valores de móvil             }                    }       if (MMeasure.Percent[0] > 50)         { SetLedConfig(0,0,20); }       else if (MMeasure.Percent[0] > 10)         {            SetLedConfig(0,255,0);            }       else          { SetLedConfig(255,0,0); }     }     else  //Ningunos datos válidos reciben    {      Serial.print(F("El sensor de humedad de tierra no kalibiert. Por favor, a cervezas de potasa. Datos crudos del sensor 1:"));      Serial.println(ReadMoistureSensor_Raw_Val(0));      SetLedConfig(255,255,255);    }    }
}    //Meno Loop
void loop() 
{
 Run_MoistureSensors(false);
 Blynk.run();   //Execute Blync el Basic Functions 
}

 

Ahora tenemos que adaptar todavía nuestro código pocos. A a uno tiene que ser adaptado en el código WLAN Credentials (SSID y contraseña) a WLAN local:

//Tus WiFi datos de acceso.
char ssid [] = "WLANSSID";
char conven [] = "XXXXXXXX";//el juego Word de puerto to "" for open networks.

Por otro lado cambian hemos sentado por la colocación de nuestro proyecto en AP un Authentification Token enviado:

Llevamos este Token en el código en la línea:

//Globalmente lo variable

char auth [] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";//Aquí según instrucciones Auth Token dere Blynk el apartamiento registran (el E-Mail).

 

un y compilan el código. A continuación lo cargamos en lo alto de nuestros ESP. Ahora debíamos recibir un gasto parecido como éste en la interface en serie:

Ahora el apartamiento en el móvil puede ser lanzado Blynk. Después del aviso y salen al empleo de nuevo hecho el apartamiento nos indica el valor de humedad actual del sensor de humedad de tierra en el por ciento.

 

Encuentras la otra información sobre Blynk el APARTAMIENTO y su empleo en controlleres bajo:

Blynk la introducción -> https://www.blynk.cc/getting-started
Documentación -> http://docs.blynk.cc/
Sketch el generador -> https://examples.blynk.cc/
Los Blynk más actuales la biblioteca -> https://github.com/blynkkk/blynk-library/releases/download/v0.6.1/Blynk_Release_v0.6.1.zip
El Blynk más actual el servidor -> https://github.com/blynkkk/blynk-server/releases/download/v0.41.5/server-0.41.5.jar
Blynk el lado de salida -> https://www.blynk.cc


Deseo mucha diversión copiando, y hasta la vez cercana.

 

Projekte für fortgeschritteneSensorenSmart home

1 comentario

Max

Max

Hallo, es wird hier von begrenztem Datenvolumen gesprochen!
Wo liegt hier die Begrenzung?
Am Datenvolumen des Handy´s oder am Serverdienst des Blynk-Token.
Mit welcher Datenmenge muss man rechnen, wenn alle 30 Min. bei voller Bestückung gesendet wird?

Danke schon mal
Gruß Max

Deja un comentario

Todos los comentarios son moderados antes de ser publicados