Inhoudsopgave:

Bodemvochtgehalte meten met behulp van Esp32 en Thingsio.ai Platform - Ajarnpa
Bodemvochtgehalte meten met behulp van Esp32 en Thingsio.ai Platform - Ajarnpa

Video: Bodemvochtgehalte meten met behulp van Esp32 en Thingsio.ai Platform - Ajarnpa

Video: Bodemvochtgehalte meten met behulp van Esp32 en Thingsio.ai Platform - Ajarnpa
Video: Modkam - Zigbee bodemvochtsensor voor planten 2024, November
Anonim
Bodemvochtgehalte meten met behulp van Esp32 en Thingsio.ai Platform
Bodemvochtgehalte meten met behulp van Esp32 en Thingsio.ai Platform

In deze tutorial ga ik uitleggen hoe het vochtgehalte in de bodem kan worden gelezen door esp32 te gebruiken en de waarden vervolgens naar het thingsio.ai IoT-cloudplatform te sturen.

Stap 1: COMPONENTEN

COMPONENTEN
COMPONENTEN
COMPONENTEN
COMPONENTEN

Hardware onderdelen:

1. esp32-ontwikkelbord

2. Bodemsensor:

3. Jumper-draden:

Software:

1. Arduino-IDE

2. Thingsio.ai

Stap 2: VERBINDINGEN

AANSLUITINGEN
AANSLUITINGEN

Bodemvochtsensor ----------------------esp32 Board

VCC---------------------------------------3V3

GND--------------------------------------GND

A0----------------------------------------VP

Stap 3: CODEREN:

#erbij betrekken

#erbij betrekken

#erbij betrekken

int telling=0, i, m, j, k;

int t;

int sensor_pin = A0;

int-waarde;

///////////////////////////////////////// ALLE VERKLARINGEN

voor CLOUD //////////////////////////////

const char* host = "api.thingsai.io"; // OF host =

devapi2.thethingscloud.com

const char* post_url = "/devices/deviceData"; // OF

/api/v2/thingscloud2/_table/data_ac

const char* time_server =

"baas.thethingscloud.com"; //dit is om de tijdstempel te converteren

const int httpPort = 80;

const int httpsPort = 443;

const char* server =

"api.thingsai.io"; // Server-URL

char tijdstempel [10];

WiFiMulti WiFiMulti;

// Gebruik de WiFiClient-klasse om TCP-verbindingen te maken

WiFiClient-client;

//////////////////////////////////////// TIJDSSTEMPEL

BEREKENING functie///////////////////////////////////////

int GiveMeTimestamp()

{

niet ondertekend lang

time-out = millis();

// WiFiClient-client;

terwijl

(klant.beschikbaar() == 0)

{

als (millis() -

time-out > 50000)

{

klant.stop();

retourneer 0;

}

}

terwijl (client.available())

{

String lijn =

client.readStringUntil('\r'); //indexOf() is een functie om te zoeken naar smthng, het retourneert -1 indien niet gevonden

int pos =

line.indexOf("\"tijdstempel\""); // zoek naar "\"timestamp\"" vanaf het begin van het antwoord kreeg en kopieer daarna alle gegevens, dit is uw tijdstempel

als (pos >=

0)

{

intj = 0;voor(j=0;j<10;j++)

{tijdstempel [j] = regel [pos + 12 + j];

}

}

}

}

////////////////////////////////////////////////////////////////////////////////////////////////////////

ongeldige setup()

{Serieel.begin(115200);Serial.println ("Lezen van de sensor …");

vertraging (2000);

// We beginnen met

verbinding maken met een wifi-netwerk

WiFiMulti.addAP("Wifi_naam", "Wifi wachtwoord");

Serieel.println();

Serieel.println();Serial.print("Wacht op wifi… ");while(WiFiMulti.run() != WL_CONNECTED) {Serieel.print(".");

vertraging (500);

}Serieel.println("");Serial.println("WiFi verbonden");

Serial.println( IP

adres: );Serial.println(WiFi.localIP());

vertraging (500);

}

lege lus()

{

{

/////////////////////////////////////// VERZENDEN DE QUERY EN

ONTVANG HET ANTWOORD///////////////////////

waarde=

analoog lezen (sensor_pin);

// waarde =

kaart (waarde, 550, 0, 0, 100);Serial.print("Mositure: ");Serial.print(waarde);Serieel.println("%");vertraging (1000);Serial.print("verbinden met ");Serieel.println(host); // gedefinieerde bovenkant: - host = devapi2.thethingscloud.com of 139.59.26.117

///////////////////////////////////// TIJDSTEMPEL CODESNIPPET

/////////////////////////

Serial.println("inside get timestamp\n");

indien

(!client.connect(time_server, {

opbrengst;

//*-*-*-*-*-*-*-*-*-*

}client.println ("GET /api/timestamp HTTP/1.1"); // Wat doet dit deel, ik heb het niet begrepenclient.println("Host: baas.thethingscloud.com");client.println("Cache-Control: no-cache");client.println ("Postbode-token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

klant.println();

GeefMeTijdstempel();

// het zal de functie aanroepen die de tijdstempelreactie van de server zal krijgen

Serial.println("tijdstempel ontvangen");

Serial.println (tijdstempel);Serial.println ("inside ThingsCloudPost");

Tekenreeks PostWaarde =

"{"device_id\": 61121695918, \"slave_id\": 2";

Postwaarde =

PostValue + ", \"dts\":" +tijdstempel;

Postwaarde =

PostValue +", \"data\":{"MOIST\":" + value +"}"+"}";Serial.println(PostValue);

/* maak een instantie van WiFiClientSecure */

WiFiClientSecure-client;Serial.println("Verbind met server via poort 443");

indien

(!client.connect(server, 443)){Serial.println("Verbinding mislukt!");

} anders {Serial.println("Verbonden met server!");

/* maak

verzoek */client.println("POST /devices/deviceData HTTP/1.1");client.println("Host: api.thingsai.io");//client.println ("Verbinding: sluiten");client.println ("Inhoudstype: applicatie/json");

client.println( cache-controle:

geen cache");client.println("Autorisatie: Drager eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTk6");client.print ("Inhoudslengte: ");

client.println(PostValue.length());klant.println();cliënt.println(PostValue);

//////////////////////////////////POST de gegevens op de

cloud is klaar en ontvang nu het antwoordformulier cloud server//////////////////

Serial.print( Wachten op antwoord

);

terwijl

(!client.beschikbaar()){

vertraging (50);

//Serieel.print(".");

}

/* als gegevens zijn

beschikbaar, ontvang en print naar Terminal */

terwijl

(klant.beschikbaar()) {

char c = cliënt.lezen();Serieel.schrijven(c);

}

/* als de

server verbroken, stop de client */

indien

(!client.verbonden()) {Serieel.println();Serial.println ("Server verbroken");

klant.stop();

}

}

Serial.println( ////////////////////// HET EINDE

///////////////////// );

vertraging (3000);

}

}

Stap 4: UITGANG:

UITGANG
UITGANG

De uitvoer van de code wordt weergegeven.

Stap 5: GRAFIEK

GRAFIEK
GRAFIEK

Dit is de grafische weergave van de waarden die uit de sensor worden gelezen.

Stap 6:

Hier is de volledige video van het project. Bedankt.

Aanbevolen: