INHOUDSOPGAWE:
Video: Meting van grondvoginhoud met behulp van Esp32- en Thingsio.ai -platform: 6 stappe
2024 Outeur: John Day | [email protected]. Laas verander: 2024-01-30 07:26
In hierdie handleiding gaan ek verduidelik oor die lees van die voginhoud in die grond deur esp32 te gebruik en dan die waardes na die thingsio.ai IoT -wolkplatform te stuur.
Stap 1: KOMPONENTE
Hardeware komponente:
1. esp32 ontwikkelingsbord
2. Grondsensor
3. Jumper drade
Sagteware:
1. Arduino IDE
2. Thingsio.ai
Stap 2: VERBINDINGS
Grondvogsensor ---------------------- esp32-bord
VCC --------------------------------------- 3V3
GND -------------------------------------- GND
A0 ---------------------------------------- VP
Stap 3: KODERING:
#insluit
#insluit
#insluit
int telling = 0, i, m, j, k;
int t;
int sensor_pin = A0;
int waarde;
/////////////////////////////////////////////////////
vir CLOUD ////////////////////////////////////
const char* host = "api.thingsai.io"; // OF gasheer =
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 die tydstempel om te skakel
const int httpPort = 80;
const int httpsPort = 443;
const char* bediener =
"api.thingsai.io"; // Bediener -URL
char tydstempel [10];
WiFiMulti WiFiMulti;
// Gebruik WiFiClient -klas om TCP -verbindings te skep
WiFiClient -kliënt;
/////////////////////////////////////// TYDSTEMPEL
BEREKENING funksie ///////////////////////////////////////////
int GiveMeTimestamp ()
{
ongeteken lank
time -out = millis ();
// WiFiClient -kliënt;
terwyl
(client.available () == 0)
{
as (millis () -
time -out> 50000)
{
client.stop ();
terugkeer 0;
}
}
terwyl (client.available ())
{
String line =
client.readStringUntil ('\ r'); // indexOf () is 'n funksie om na smthng te soek, dit gee -1 as dit nie gevind word nie
int pos =
line.indexOf ("\" tydstempel / ""); // soek na "\" tydstempel / "" vanaf die begin van die antwoord, en kopieer daarna alle data, dit is u tydstempel
as (pos> =
0)
{
int j = 0;vir (j = 0; j <10; j ++)
{tydstempel [j] = reël [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
leemte opstelling ()
{Serial.begin (115200);Serial.println ("Lees uit die sensor …");
vertraging (2000);
// Ons begin by
verbinding met 'n WiFi -netwerk
WiFiMulti.addAP ("Wifi_name", "Wifi_Password");
Serial.println ();
Serial.println ();Serial.print ("Wag vir WiFi …");terwyl (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
vertraging (500);
}Serial.println ("");Serial.println ("WiFi gekoppel");
Serial.println ( IP
adres: );Serial.println (WiFi.localIP ());
vertraging (500);
}
leemte lus ()
{
{
////////////////////////////////////////// Stuur die navraag EN
ONTVANG DIE ANTWOORD /////////////////////////
waarde =
analogRead (sensor_pen);
// waarde =
kaart (waarde, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (waarde);Serial.println ("%");vertraging (1000);Serial.print ("verbind met");Serial.println (gasheer); // gedefinieerde onderstebo:- gasheer = devapi2.thethingscloud.com of 139.59.26.117
/////////////////////////////////////
/////////////////////////
Serial.println ("binne kry tydstempel / n");
as
(! client.connect (time_server, {
terugkeer;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/tydstempel HTTP/1.1"); // Wat hierdie deel doen, het ek nie gekry nieclient.println ("Gasheer: baas.thethingscloud.com");client.println ("Cache-beheer: geen cache");client.println ("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp ();
// dit bel die funksie wat die tydstempelreaksie van die bediener af kry
Serial.println ("tydstempel ontvang");
Serial.println (tydstempel);Serial.println ("binne ThingsCloudPost");
String PostValue =
"{" device_id / ": 61121695918, \" slave_id / ": 2";
Postwaarde =
PostValue + ", \" dts / ":" + tydstempel;
Postwaarde =
PostValue +", \" data / ": {" MOIST / ":" +waarde +"}" +"}";Serial.println (PostValue);
/ * skep 'n instansie van WiFiClientSecure */
WiFiClientSecure -kliënt;Serial.println ("Koppel aan bediener via poort 443");
as
(! client.connect (bediener, 443)) {Serial.println ("Verbinding misluk!");
} anders {Serial.println ("gekoppel aan bediener!");
/* skep
versoek */client.println ("POST/toestelle/deviceData HTTP/1.1");client.println ("Gasheer: api.thingsai.io");//client.println("Connection: close ");client.println ("Inhoudstipe: toepassing/json");
client.println ( cache-beheer:
no-cache ");client.println ("Magtiging: draer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC9PN5"client.print ("Inhoudlengte:");
client.println (PostValue.length ());client.println ();client.println (PostValue);
//////////////////////////////////////////////////////////////////////////////////'//
wolk is klaar en kry nou die antwoordvorm wolkbediener ////////////////////
Serial.print ( Wag vir reaksie
);
terwyl
(! client.available ()) {
vertraging (50);
//Serial.print (".");
}
/* as data is
beskikbaar, ontvang dan en druk dit na Terminal */
terwyl
(client.available ()) {
char c = client.read ();Reeks.skryf (c);
}
/* as die
bediener ontkoppel, stop die kliënt */
as
(! client.connected ()) {Serial.println ();Serial.println ("Server ontkoppel");
client.stop ();
}
}
Serial.println ( //////////////////////// END
///////////////////// );
vertraging (3000);
}
}
Stap 4: UITGANG:
Die uitvoer van die kode word getoon.
Stap 5: GRAFIEK
Dit is die grafiese voorstelling van die waardes wat van die sensor gelees word.
Stap 6:
Hier is die volledige video van die projek. Dankie.
Aanbeveel:
Meting van versnelling met behulp van ADXL345 en Particle Photon: 4 stappe
Meting van versnelling met behulp van ADXL345 en Particle Photon: Die ADXL345 is 'n klein, dun, ultra-lae, 3-as versnellingsmeter met 'n hoë resolusie (13-bis) meting tot ± 16 g. Digitale uitsetdata word geformateer as 'n 16-bis tweeling-aanvulling en is toeganklik via die I2 C digitale koppelvlak. Dit meet die
Meting van temperatuur met behulp van AD7416ARZ en Framboos Pi: 4 stappe
Meting van temperatuur met behulp van AD7416ARZ en Framboos Pi: AD7416ARZ is 'n 10-bis temperatuur sensor met vier enkanaals analoog na digitale omsetters en 'n ingeboude temperatuursensor daarin. Toegang tot die temperatuursensor op die dele is via multiplexerkanale. Hierdie hoë akkuraatheidstemperatuur
Meting van ligintensiteit met behulp van BH1715 en Framboos Pi: 5 stappe
Meting van ligintensiteit deur gebruik te maak van BH1715 en Raspberry Pi: Gister was ons besig met LCD -skerms, en terwyl ons daaroor werk, besef ons die belangrikheid van ligintensiteitsberekening. Ligintensiteit is nie net belangrik in die fisiese domein van hierdie wêreld nie, maar dit speel ook 'n welbekende rol in die biologie
Meting van versnelling met behulp van H3LIS331DL en Arduino Nano: 4 stappe
Meting van versnelling met behulp van H3LIS331DL en Arduino Nano: H3LIS331DL, is 'n lae-krag hoëprestasie 3-as lineêre versnellingsmeter wat tot die "nano" -familie behoort, met 'n digitale I²C-seriële koppelvlak. H3LIS331DL het 'n gebruiker -kiesbare volle weegskaal van ± 100g/± 200g/± 400g en kan versnellings meet met
Meting van humiditeit met behulp van HYT939 en Particle Photon: 4 stappe
Meting van humiditeit met behulp van HYT939 en Particle Photon: HYT939 is 'n digitale humiditeitsensor wat werk op I2C -kommunikasieprotokol. Humiditeit is 'n belangrike parameter vir mediese stelsels en laboratoriums. Om hierdie doelwitte te bereik, het ons probeer om HYT939 met framboospi te koppel. Ek