Kazalo:
2025 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2025-01-13 06:58
V tej vadnici bom razložil o merjenju temperature v okolici z uporabo vgrajenega temperaturnega senzorja, ki je prisoten na razvojni plošči esp32. esp32 ima veliko vgrajenih senzorjev, kot je Hallov senzor, ki se uporablja kot senzor bližine, senzor na dotik, temperaturni senzor. V tem vodiču bomo razpravljali o temperaturnem senzorju.
1. korak: SESTAVINE:
Strojna oprema:
1. razvojna plošča esp32
Programska oprema:
1. Arduino IDE
2. Thingio.ai
2. korak: ZASTOPANJE DIAGRAMSKEGA DIAGRAMA Esp32
3. korak: KODIRANJE:
#vključi
#vključi
#vključi
#vključi
#vključi
#ifdef _cplusplus
zunanji "C" {
#endif
uint8_t temprature_sens_read ();
// uint8_t g_phyFuns;
#ifdef _cplusplus
}
#endif
int štetje = 0, i, m, j, k;
int t, t1, t2, t3;
int outputpin = A0; // ds18b20
////////////////////////////////////////// VSE IZJAVE
za OBLAK ////////////////////////////////
const char* host = "api.thingsai.io"; // ALI gostitelj =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; //
ALI/api/v2/thingscloud2/_table/data_ac
const char* časovni strežnik =
"baas.thethingscloud.com"; // to je za pretvorbo časovnega žiga
const int httpPort = 80;
const int httpsPort = 443;
const char* strežnik =
"api.thingsai.io"; // URL strežnika
časovni žig char [10];
WiFiMulti WiFiMulti;
// Uporabite razred WiFiClient za ustvarjanje povezav TCP
Odjemalec WiFiClient;
////////////////////////////////////////// TIMESTAMP
Funkcija IZRAČUN /////////////////////////////////////////
int GiveMeTimestamp ()
{
brez podpisa dolgo
časovna omejitev = milis ();
// odjemalec WiFiClient;
medtem
(client.available () == 0)
{
če (millis () -
časovna omejitev> 50000)
{
client.stop ();
vrnitev 0;
}
}
medtem ko (client.available ())
{
Vrstni niz =
client.readStringUntil ('\ r'); // indexOf () je funkcija za iskanje smthng, vrne -1, če ni najdena
int pos =
line.indexOf ("\" časovni žig / ""); // poiščite "\" časovni žig / "" od začetka odgovora in kopirajte vse podatke po tem, to bo vaš časovni žig
če (pos> =
0)
{
int j = 0;za (j = 0; j <10; j ++)
{časovni žig [j] = vrstica [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup ()
{Serial.begin (115200);
zamuda (10);
tzset ();
// Začnemo z
povezovanje z omrežjem WiFiWiFiMulti.addAP ("dlink_DWR-113", "madhukar66");
Serial.println ();
Serial.println ();Serial.print ("Počakaj na WiFi …");medtem ko (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
zamuda (500);
}Serial.println ("");Serial.println ("WiFi povezan");Serial.println ("naslov IP:");Serial.println (WiFi.localIP ());
zamuda (500);
}
uint8_t temp_farenheit;
float temp_celsius;
char strftime_buf [64];
time_t zdaj = 0;
struct tm timeinfo;
char buf [256];
void loop ()
{
// int analogValue =
analogRead (izhod);
{
///////////////////////////////////////// POŠLJI VPRAŠANJE IN
PREJMITE ODGOVOR /////////////////////////
//
t1 = (analogna vrednost/1024,0) *5000;
//
Serial.print ("temp:");
// Serial.println (t1);
/
/ t2 = (t1/ 10);
//
Serial.print ("celc:");
//
Serial.println (t2);
/
/ t3 = ((t2 *
9)/5 + 32);
//
Serial.print ("fhrn:");
//
Serial.println (t3); // prelom;localtime_r (& zdaj, & timeinfo);strftime (strftime_buf, sizeof (strftime_buf), "%c" & timeinfo);sprintf (buf, "začetek skeniranja%02d:%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
Serial.print
(buf);
temp_farenheit =
temprature_sens_read ();
temp_celsius = (temp_farenheit - 32) / 1,8;Serial.print ("Temp onBoard");Serial.print (temp_farenheit);Serial.print ("° F");Serial.print (temp_celsius);Serial.println ("° C");
zamuda (1000);
zdaj ++;
Serial.print ( povezovanje
do );Serial.println (gostitelj); // definirano navzgor:- host = devapi2.thethingscloud.com ali 139.59.26.117
/////////////////////////////////////// TIMESTAMP CODE SNIPPET
/////////////////////////
Serial.println ("not get timestamp / n");
če
(! client.connect (časovni strežnik, {
vrnitev;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/časovni žig HTTP/1.1"); // Kaj počne ta del, nisem dojelclient.println ("Gostitelj: baas.thethingscloud.com");client.println ("Nadzor predpomnilnika: brez predpomnilnika");client.println ("Žeton poštarja: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp (); // poklical bo
funkcijo, ki bo od strežnika prejela odziv časovnega žiga
Serial.println ("prejet časovni žig");
Serial.println (časovni žig);Serial.println ("znotraj ThingsCloudPost");
Niz PostValue =
"{" device_id / ": 61121695920, \" slave_id / ": 2";
PostValue =
PostValue + ", \" dts / ":" + časovni žig;
PostValue =
PostValue +", \" data / ": {" TEMP / ":" +temp_farenheit +"}" +"}";Serial.println (PostValue);
/ * ustvarite primerek WiFiClientSecure */
Odjemalec WiFiClientSecure;Serial.println ("Poveži se s strežnikom prek vrat 443");
če
(! client.connect (strežnik, 443)) {Serial.println ("Povezava ni uspela!");
} drugo {Serial.println ("Povezano s strežnikom!");
/* ustvarite
prošnja */client.println ("POST/devices/deviceData HTTP/1.1");client.println ("Gostitelj: api.thingsai.io");//client.println("Connection: close ");client.println ("Vrsta vsebine: aplikacija/json");client.println ("nadzor predpomnilnika: brez predpomnilnika");client.println ("Pooblastilo: prinašalec eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC22x2x7x2c7x2c7x2c7x2x7x7x7x7x7x7x7x7x7xxxxxxxxxx)client.print ("Content-Length:");client.println (PostValue.length ());client.println ();client.println (PostValue);
//////////////////////////////////// OBJAVLJANJE podatkov v
oblak je končan in zdaj dobite odgovorni obrazec v oblaku //////////////////
Serial.print ( Čakanje
za odgovor );
medtem
(! client.available ()) {
zamuda (50);
//Serial.print (".");
}
/* če so podatki
na voljo, nato sprejmite in natisnite na terminal */
medtem
(client.available ()) {
char c =
client.read ();Serial.write (c);
}
/* če je
strežnik odklopljen, ustavite odjemalca */
če
(! client.connected ()) {Serial.println ();Serial.println ("Strežnik odklopljen");
client.stop ();
}
}
Serial.println ( //////////////////////// KONEC
///////////////////// );
zamuda (3000);
}
}
4. korak: IZHOD:
Tukaj je izpis vrednosti temperature, odčitanih s senzorja.
5. korak: GRAFI:
Grafični prikaz vrednosti, odčitanih s senzorja temperature na vozilu.