Een plant keeper voor de vensterbank deel 2 - mobiele app

Hallo en welkom bij het tweede deel van onze bewaker rij plant is.

Hoewel onze fabriek functies goed bewaken, vind ik, maar als een Maker een beetje onhandig weer op na de leidde - om nog eens goed te kijken "stoplicht" om te zien of mijn bedrijf moeten worden verbrand. Veel concreter, vind ik dat als ik moet altijd en overal net te kort in de mobiele telefoon om te weten hoe het gaat de fabriek voor thuis.

Maar voordat iemand nu denkt dat, wanneer dit alles niet zo, maar het is nu al veel te ingewikkeld, maar wij kijken soms meer precies voor in de App Store. Er is een aanvraag al omdat precies dat was opgezet voor de doeleinden die wij moeten aanpassen alleen omdat hier iets moeten doen om ook wat code en vervolgens toe te treden tot het één geheel. Onze aanvraag dan alleen functioneren als wij willen.

Dus daar komt ie! Als de eerste stap die we onszelf belasten de aanvraag "Blynk" uit de App Store met onze mobiele telefoon. Het programma zelf is vrij en kan worden gevoerd voor het onze, hier in het tweede deel van de blog, toepassing beschreven geval ook andere zonder extra kosten voor de toepassing.

Hoe dan ook, voor een andere later verwijdering van de aanvraag binnen de rij blog eenheden van de variatie vrij ontoereikend zijn, de "energy in 2000" in omstandigheden meer.

De kosten echter aanvallen ongeacht het stadium van ontwikkeling het voor de gegevensoverdracht bewaker van de fabriek naar mobiele telefoons. Alsjeblieft, van oordeel is dat deze kosten met een kopie van het project!

We hebben gedownload na de toepassing van de winkel Blynk en beginnen aan het voor het eerst in de knoop raken, moeten we eerst een account. Bovendien is het aftappen "het creëren van nieuwe des Oordeels."

Registreren we onszelf met eigen e-mailadres en een wachtwoord award:

Toen we klikken op nieuw project:

We landen in de dialoog voor de opstelling van een nieuw project. Hier de basisgegevens van het project te maken hebben, zoals met name het project namen, onze platform ontwikkelen ESP32 verbinden en de gewenste vorm. Het verbinden van verschillende parameters kunnen worden gegeven, hoe B Z. Bluetooth of WLAN ook. Te kunnen gegevens te ontvangen, echter ook mobiel onderweg de GSM verbindt type moeten gekozen worden. In de volgende de instellingen die ik heb gekozen voor mijn project weergegeven:

De informatie bevestigen we met "creëren" en in een leeg land project. Voegen we onze eerste actief deelneemt aan onze aanvraag over de "plus" te titel symbool in de strip:

We kiezen het element "Gauge" instellen, en het element. Eerst geven we een naam voor het element. Ik heb besloten voor de naam "grond fabriek 1 vocht".


We kiezen dan als een inputvariabele "V1" ten minste 0 als waarde en een maximale waarde 100. We vormen een aanvulling op de "LABEL" gebied met @% en zet koers als een lezing "dwingen". Met het ontwerp en de kleur een type grootte gekozen kunnen worden.

Wij bevestigen dat de omstandigheden met de pijl op de links en dan weer land in het hoofdvenster van het verzoek:

Sluiten we de aanvraag op dit moment weer, want nu moeten we ons aanpassen aan onze code ESP van het lidmaatschap. Bovendien delen we eerst in de Arduino om de bibliotheek gouverneur Blynk in de bibliotheek de meest actuele versie:

Dan plaatsen we de volgende code in de IDE:

 

# include <Bestuurder/adc.H>
# include <WiFi.H>
# include <WiFiClient.H>
# include <BlynkSimpleEsp32.H>


//Portedefinierung Led's
# define LED_Rot     18    //Red leidde 
# define LED_Gelb    14    //Yellow leidde
# define LED_Gruen   15    //Green leidde

//Settings leidde PWM
# define PWMfreq 5000  Base //5 kHz frequentie
# define PWMledChannelA  0
# define PWMledChannelB  1
# define PWMledChannelC  2
# define PWMresolution  8 Resolutie //8 stukjes

# define ADCAttenuation ADC_ATTEN_DB_11  //ADC_ATTEN_DB_11 = demping 0-3.6V ADC
# define MoisureSens_Poll_Interval 60000  //Interval tussen twee metingen tijdens vochtige grond milliseconden
# define MaxSensors 1

# define BLYNK_PRINT Serie
# define BLYNK_NO_BUILTIN 
# define BLYNK_NO_FLOAT
# define BLYNK_DEBUG //

struct MoistureSensorCalibrationData   {     int Gegevens[MaxSensors*2] = {1650,2840};  Gegevens voor //calibration vochtigheidsmeter. Volg tekst aanpassen project en waarden ensprechend    };

struct MoistureSensorData   {     byte Procent[MaxSensors] = {0};       //Humidity sensordata in procent      byte Old_Percent[MaxSensors] = {0};   _ //Previous vochtigheidsmeter gegevens in procenten (doel: gegevens redden bedrag.)   };
 
//Worldwide variabele
char autoriteiten[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //Here in overeenstemming met de instructies dere authenticatietoken Blynk neerleggen toepassing (e-mail)

//Your WiFi toegang tot gegevens.
char ssid[] = "WLANSSID";
char passen[] = "5 jaar in de toekomst.";  Paspoort //set woord boven "" voor open netwerken.

MoistureSensorCalibrationData MCalib;
MoistureSensorData MMeasure;
byte AttachedMoistureSensors; Actieve //detected vocht van de sensor (graaf) 
Niet getekend lang Moisure_ServiceCall_Handler = 0;  //Delay variabelen voor vertraging tussen lezingen Moisure

Leegte Valstrik() {   pinMode(LED_Rot,OUTPUT);   pinMode(LED_Gelb,OUTPUT);   pinMode(LED_Gruen,OUTPUT);   Serie.beginnen(115200);   //initialize seriële communicatie op de tweede 1 15.200 stukjes:   ledcSetup(PWMledChannelA, PWMfreq, PWMresolution);   ledcSetup(PWMledChannelB, PWMfreq, PWMresolution);   ledcSetup(PWMledChannelC, PWMfreq, PWMresolution);   ledcAttachPin(LED_Rot, PWMledChannelA);   //attach het kanaal naar het GPIO te controleren   ledcAttachPin(LED_Gelb, PWMledChannelB);   ledcAttachPin(LED_Gruen, PWMledChannelC);   SetLedConfig(255,255,255);   Serie.println(En de volgende("Systeemconfiguratie:"));   AttachedMoistureSensors = DetectMoistureSensors();   Serie.Afdrukken(AttachedMoistureSensors);   Serie.println(En de volgende("Bodenfeuchtigkeitsensor (en)"));   Serie.Afdrukken(En de volgende("Verbinding met WLAN"));   Vertraging(500);   Blynk.beginnen(autoriteiten, ssid, passen);  //Initalize wifi verbinding over Blync bibliotheek   Serie.println(En de volgende("Met succes."));   SetLedConfig(0,0,0);   Run_MoistureSensors(Waar);
}    byte DetectMoistureSensors ()   {   # define MinSensorValue 100     byte Ontdekt = 0;   Voor (int Ik = 0;Ik < MaxSensors;Ik++)     {     int MSensorRawValue = ReadMoistureSensor_Raw_Val(Ik);     Als ( MSensorRawValue > MinSensorValue) { Ontdekt++; } Anders {breken;}     }   Als (Ontdekt < 1)     {        Serie.println(En de volgende("Nee Bodenfeuchtigkeitssesoren erkend. Systeem gestopt. "));       esp_deep_sleep_start();       Terwijl(1) {}     }      Terugkeer Ontdekt;   }

bool SetLedConfig(byte Rode,byte Geel,byte Groen)
{
ledcWrite(PWMledChannelA, Rode); //Red leidde 
ledcWrite(PWMledChannelB, Geel); //Yellow leidde
ledcWrite(PWMledChannelC, Groen); //Green leidde
Terugkeer Waar;
}

int ReadMoistureSensor_Raw_Val(byte Sensor)   {    int ReturnValue,Ik;    lang Som = 0;    # define NUM_READS 6       adc1_config_width(ADC_WIDTH_BIT_12);   Rang //to 4095 0    Schakelaar (Sensor)     {     Zaak 0:       {       adc1_config_channel_atten(ADC1_CHANNEL_0,ADCAttenuation);       Voor (Ik = 0; Ik < NUM_READS; Ik++){  //Averaging algoritme        Som += adc1_get_raw( ADC1_CHANNEL_0 ); //Read analoog        }        ReturnValue = Som / NUM_READS;       breken;          }     }      Terugkeer ReturnValue;     }

bool Get_Moisture_DatainPercent()
 {
 bool ReadisValid = Waar;
 Voor (int Ik = 0;Ik < AttachedMoistureSensors;Ik++)   {   Als ((MCalib.Gegevens[Ik] == 0) || (MCalib.Gegevens[Ik+1] == 0)) //MinADC waarde ADC maxADC waarde     {      ReadisValid = Valse;     Terugkeer ReadisValid;      }   int RawMoistureValue= ReadMoistureSensor_Raw_Val(Ik);   RawMoistureValue= MCalib.Gegevens[Ik+1] - RawMoistureValue;   RawMoistureValue=MCalib.Gegevens[Ik] + RawMoistureValue;   //Serial.println (MCalib. Gegevens [i]);   //Serial.println (MCalib. Gegevens [1 Ik]);   //Serial.println (RawMoistureValue);   MMeasure.Procent[Ik] = Kaart(RawMoistureValue,MCalib.Gegevens[Ik],MCalib.Gegevens[Ik+1], 0, 100);   Als (MMeasure.Procent[Ik] > 100 ) { ReadisValid = Valse; }   }
 Terugkeer ReadisValid;
 }

Leegte Run_MoistureSensors (bool Init)   //Main functie aan de maatschappij van de grond vochtig sensoren
{
byte MinSensValue = 100;
Als ((millis() - Moisure_ServiceCall_Handler >= MoisureSens_Poll_Interval) | (Init))   {    Moisure_ServiceCall_Handler = millis();    Als (Get_Moisture_DatainPercent())  //Valid actuele gegevens ontvangen    {       Voor (int Ik = 0;Ik < AttachedMoistureSensors;Ik++)         {            Als (MMeasure.Procent[Ik] != MMeasure.Old_Percent[Ik])             {               MMeasure.Old_Percent[Ik] = MMeasure.Procent[Ik];               Als (MMeasure.Procent[Ik] < MinSensValue ) { MinSensValue = MMeasure.Procent[Ik]; };               Serie.Afdrukken(En de volgende("Vochtigheid waarde sensor 1 in procenten:"));               Serie.Afdrukken(MMeasure.Procent[0]);                   Serie.println(En de volgende(" %"));                Als (Ik == 0)  {Blynk.virtualWrite(V1,MMeasure.Procent[Ik]);  } Mobiele telefoon //update waarden             }                    }       Als (MMeasure.Procent[0] > 50)         { SetLedConfig(0,0,20); }       Anders Als (MMeasure.Procent[0] > 10)         {            SetLedConfig(0,255,0);            }       Anders          { SetLedConfig(255,0,0); }     }     Anders  //No geldige gegevens bevatten    {      Serie.Afdrukken(En de volgende("Bodemvocht niet kalibiert sensor. Alsjeblieft, bier van potas. Ruwe gegevens van de sensor 1: "));      Serie.println(ReadMoistureSensor_Raw_Val(0));      SetLedConfig(255,255,255);    }    }
}    Belangrijkste //the lus
Leegte Lus() 
{
 Run_MoistureSensors(Valse);
 Blynk.lopen();   //Execute Blync basisfuncties 
}

 

Nu moeten we passen onze code nog een beetje. Om te beginnen te worden aangepast met de codering van de geloofsbrieven WLAN (en wachtwoord SSID) bij de WLAN thuis:

//Your WiFi toegang tot gegevens.
SSID Char [] = "WLANSSID";
char [] = passen "XXXXXXXX"; / / paspoort te zetten woord "" voor open netwerken.

Aan de andere kant hebben we door de opstelling van ons project in een Token AP authentificatie verzonden:

Wij dragen in dit teken de code in de regel:

//Worldwide variabele

De Char [] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; / / hier in overeenstemming met de instructies authenticatietoken Blynk dere toepassing neerleggen (e-mail)

 

en de samenstelling van een code. Daarna krijgt hij onze hoge van ESP. Nu moeten we een soortgelijke vraag als deze op de seriële interface:

Nu toepassen op de mobiele telefoon kan worden begonnen met de Blynk. Na de inschrijving en start van het opnieuw de toepassing op voorwaarde dat de geeft aan ons actuele waarde de vochtigheid van de grond sensor vocht in procent.

 

Vind je meer informatie over het Blynk aanvraag en hun gebruik in controllers in het kader van:

Blynk > inleiding -; https://www.blynk.cc/getting-started
&Gt documentatie -; http://docs.blynk.cc/
Schets > generator; https://examples.blynk.cc/
De meest actuele bibliotheek > Blynk -; https://github.com/blynkkk/blynk-library/releases/download/v0.6.1/Blynk_Release_v0.6.1.zip
De meest actuele Blynk > server -; https://github.com/blynkkk/blynk-server/releases/download/v0.41.5/server-0.41.5.jar
Blynk website - > https://www.blynk.cc


Ik wil een hoop plezier tijdens het kopiëren en naar de volgende plek.

 

Projekte für fortgeschritteneSensorenSmart home

1 Kommentar

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

Einen Kommentar hinterlassen

Alle Kommentare werden vor der Veröffentlichung moderiert