
Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-23 15:01

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


Hardware onderdelen:
1. esp32-ontwikkelbord
2. Bodemsensor:
3. Jumper-draden:
Software:
1. Arduino-IDE
2. Thingsio.ai
Stap 2: VERBINDINGEN

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:

De uitvoer van de code wordt weergegeven.
Stap 5: 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:
Meting van versnelling met behulp van ADXL345 en Particle Photon: 4 stappen

Meting van versnelling met behulp van ADXL345 en deeltjesfoton: De ADXL345 is een kleine, dunne, ultralaagvermogen, 3-assige versnellingsmeter met hoge resolutie (13-bits) meting tot ±16 g. Digitale uitvoergegevens zijn geformatteerd als 16-bits tweetallen en zijn toegankelijk via de digitale I2 C-interface. Het meet de
DHT-temperatuur- en vochtigheidsbewaking met behulp van de ESP8266 en het AskSensors IoT-platform: 8 stappen

DHT-temperatuur- en vochtigheidsbewaking met behulp van de ESP8266 en het AskSensors IoT-platform: in een vorige instructable presenteerde ik een stapsgewijze handleiding om aan de slag te gaan met de ESP8266-nodeMCU en het AskSensors IoT-platform. In deze tutorial sluit ik een DHT11-sensor aan naar het knooppunt MCU. De DHT11 is een veelgebruikte Temperatuur- en luchtbevochtiger
Digitale klok met netwerktijd met behulp van de ESP8266: 4 stappen (met afbeeldingen)

Digitale netwerkklok met de ESP8266: we leren hoe we een schattige kleine digitale klok kunnen bouwen die communiceert met NTP-servers en de netwerk- of internettijd weergeeft. We gebruiken de WeMos D1 mini om verbinding te maken met een wifi-netwerk, de NTP-tijd te verkrijgen en deze weer te geven op een OLED-module. De video hierboven
IoT Power Module: een functie voor het meten van IoT-vermogen toevoegen aan My Solar Charge Controller: 19 stappen (met afbeeldingen)

IoT Power Module: een functie voor het meten van IoT-vermogen toevoegen aan My Solar Charge Controller: Hallo allemaal, ik hoop dat jullie allemaal geweldig zijn! In deze instructable ga ik je laten zien hoe ik een IoT Power Measurement-module heb gemaakt die de hoeveelheid stroom berekent die wordt gegenereerd door mijn zonnepanelen, die wordt gebruikt door mijn zonnelaadcontroller t
Hoe u gebruikersniveaus van NUMA toevoegt aan uw exemplaar van N met behulp van NumADD Firefox AddOn: 4 stappen

Gebruikersniveaus van NUMA toevoegen aan uw exemplaar van N NumADD Firefox-add-on gebruiken: Elke gebruiker van Metanet's N-database op gebruikersniveau NUMA weet hoe onhandig de interface is voor het kopiëren van door gebruikers gemaakte niveaus naar uw exemplaar van het spel. NumADD, elimineert de noodzaak van kopiëren en plakken en maakt het overzetten van niveaus het werk van één muisklik