Turinys:
2025 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2025-01-13 06:57
Šioje pamokoje aš paaiškinsiu, kaip matuoti temperatūrą aplinkoje, naudojant integruotą temperatūros jutiklį, esantį esp32 kūrimo plokštėje. „esp32“turi daug įmontuotų jutiklių, tokių kaip salės jutiklis, naudojamas kaip artumo jutiklis, jutiklinis jutiklis, temperatūros jutiklis. Šioje pamokoje aptarsime temperatūros jutiklį.
1 žingsnis: KOMPONENTAI:
Techninė įranga:
1. esp32 kūrimo lenta
Programinė įranga:
1. „Arduino IDE“
2. Thingsio.ai
2 žingsnis: BLOKUOTI DIAGRAMOS ATSTOVAVIMAS Esp32
3 žingsnis: KODAVIMAS:
#įtraukti
#įtraukti
#įtraukti
#įtraukti
#įtraukti
#ifdef _cplusplus
išorinis „C“{
#endif
uint8_t temprature_sens_read ();
// uint8_t g_phyFuns;
#ifdef _cplusplus
}
#endif
int skaičius = 0, i, m, j, k;
int t, t1, t2, t3;
int outputpin = A0; // ds18b20
//////////////////////////////////////////////////////// VISI DEKLARACIJOS
CLOUD //////////////////////////////
const char* host = "api.thingsai.io"; // ARBA šeimininkas =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; //
ARBA/api/v2/thingscloud2/_table/data_ac
const char* laiko_serveris =
„baas.thethingscloud.com“; // tai yra laiko žymos konvertavimas
const int httpPort = 80;
const int httpsPort = 443;
const char* serveris =
"api.thingsai.io"; // Serverio URL
char laiko žyma [10];
WiFiMulti WiFiMulti;
// Naudokite „WiFiClient“klasę, kad sukurtumėte TCP ryšius
„WiFiClient“klientas;
////////////////////////////////////////////////////// TIMESTAMP
APSKAIČIAVIMO funkcija ///////////////////////////////////////
int GiveMeTimestamp ()
{
nepasirašytas ilgai
skirtasis laikas = milis ();
// „WiFiClient“klientas;
tuo tarpu
(client.available () == 0)
{
jei (milis () -
skirtasis laikas> 50000)
{
client.stop ();
grįžti 0;
}
}
o (client.available ())
{
Eilutės eilutė =
client.readStringUntil ('\ r'); // indexOf () yra funkcija ieškoti smthng, ji grąžina -1, jei nerasta
int pos =
line.indexOf ("\" laiko žyma / ""); // ieškokite "\" laiko žymos / "" nuo atsakymo pradžios ir nukopijuokite visus duomenis po to, tai bus jūsų laiko žyma
jei (poz> =
0)
{
int j = 0;(j = 0; j <10; j ++)
{laiko žyma [j] = eilutė [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
negaliojanti sąranka ()
{Serial.begin (115200);
vėlavimas (10);
tzset ();
// Pradedame nuo
prisijungimas prie „WiFi“tinklo„WiFiMulti.addAP“(„dlink_DWR-113“, „madhukar66“);
Serial.println ();
Serial.println ();Serial.print („Palaukite„ WiFi “…“);while (WiFiMulti.run ()! = WL_CONNECTED) {Serijinis atspaudas (".");
vėlavimas (500);
}Serial.println ("");Serial.println („WiFi prijungtas“);Serial.println ("IP adresas:");Serial.println (WiFi.localIP ());
vėlavimas (500);
}
uint8_t temp_farenheit;
plūdė temp_celsius;
char strftime_buf [64];
laikas_t dabar = 0;
struktura tm laiko informacija;
char buf [256];
tuštumos kilpa ()
{
// int analogValue =
analogRead (išvesties kaištis);
{
////////////////////////
GAUTI ATSAKYMĄ ///////////////////////
//
t1 = (analogValue/1024,0) *5000;
//
Serial.print ("temp:");
// Serial.println (t1);
/
/ t2 = (t1/ 10);
//
Serial.print ("celc:");
//
Serijinis.println (t2);
/
/ t3 = (((t2 *
9)/5 + 32);
//
Serial.print ("fhrn:");
//
Serijinis.println (t3); //pertrauka;localtime_r (& dabar, & timeinfo);strftime (strftime_buf, sizeof (strftime_buf), "%c", & timeinfo);sprintf (buf, "nuskaitymo pradžia%02d:%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
Serijinis.spaudas
(buf);
temp_farenheit =
temprature_sens_read ();
temp_celsius = (temp_farenheitas - 32) / 1,8;Serial.print („Temp onBoard“);Serial.print (temp_farenheit);Serial.print ("° F");Serial.print (temp_celsius);Serial.println ("° C");
vėlavimas (1000);
dabar ++;
Serial.print ( jungiamas
į );Serial.println (priegloba); // apibrėžta aukštyn kojomis:- šeimininkas = devapi2.thethingscloud.com arba 139.59.26.117
////////////////////////
/////////////////////////
Serial.println ("viduje gauti laiko žymę / n");
jei
(! client.connect (time_server, {
grįžti;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/laiko žymė HTTP/1.1"); // Ką daro ši dalis, aš nesupratauclient.println ("Priimančioji: baas.thethingscloud.com");client.println („Cache-Control: no-cache“);client.println („Paštininkas-žetonas: ea3c18c6-09ba-d049-ccf3-369a22a284b8“);
klientas.println ();
GiveMeTimestamp (); // tai vadins
funkcija, kuri gaus atsakymą iš laiko žymos iš serverio
Serial.println ("gauta laiko žyma");
Serial.println (laiko žyma);Serial.println ("viduje ThingsCloudPost");
Eilutė PostValue =
"{" device_id / ": 61121695920, \" slave_id / ": 2";
PostValue =
PostValue + ", \" dts / ":" + laiko žyma;
PostValue =
PostValue +", \" data / ": {" TEMP / ":" +temp_farenheit +"}" +"}";Serial.println (PostValue);
/ * sukurti „WiFiClientSecure“egzempliorių */
„WiFiClientSecure“klientas;Serial.println („Prisijunkite prie serverio per 443 prievadą“);
jei
(! client.connect (serveris, 443)) {Serial.println ("Nepavyko prisijungti!");
} Kitas {Serial.println ("Prisijungta prie serverio!");
/* sukurti
prašymas */client.println ("POST/devices/deviceData HTTP/1.1");client.println ("Priegloba: api.thingsai.io");//client.println("Connection: close ");client.println ("Turinio tipas: programa/json");client.println ("cache-control: no-cache");client.println ("Autorizacija: nešėjas eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqs22k2kvkclient.print ("Turinio ilgis:");client.println (PostValue.length ());klientas.println ();client.println („PostValue“);
//////////////////////////////////////////////// Skelbdami duomenis į
debesis baigtas ir dabar gaukite atsakymo formą iš debesies serverio //////////////////
Serial.print ( Laukiama
už atsakymą “);
tuo tarpu
(! client.available ()) {
vėlavimas (50);
//Serijinis atspaudas (".");
}
/* jei duomenys yra
galima gauti ir spausdinti į terminalą */
tuo tarpu
(client.available ()) {
char c =
client.read ();Serial.write (c);
}
/* jei
serveris atjungtas, sustabdykite klientą */
jei
(! client.connected ()) {Serial.println ();Serial.println („Serveris atjungtas“);
client.stop ();
}
}
Serial.println ( ////////////////////// PABAIGA
///////////////////// );
vėlavimas (3000);
}
}
4 žingsnis: IŠVADA:
Štai iš jutiklio nuskaitytos temperatūros verčių išvestis.
5 žingsnis: GRAFIKOS:
Grafinis verčių, nuskaitytų iš borto temperatūros jutiklio, atvaizdavimas.