Πίνακας περιεχομένων:
2025 Συγγραφέας: John Day | [email protected]. Τελευταία τροποποίηση: 2025-01-13 06:57
Σε αυτό το σεμινάριο θα εξηγήσω σχετικά με τη μέτρηση της θερμοκρασίας στο περιβάλλον χρησιμοποιώντας ενσωματωμένο αισθητήρα θερμοκρασίας που υπάρχει στον πίνακα ανάπτυξης esp32. Το esp32 διαθέτει πολλούς ενσωματωμένους αισθητήρες όπως ο αισθητήρας αίθουσας που χρησιμοποιείται ως αισθητήρας εγγύτητας, αισθητήρας αφής, αισθητήρας θερμοκρασίας. Σε αυτό το σεμινάριο θα συζητήσουμε για τον αισθητήρα θερμοκρασίας.
Βήμα 1: ΣΥΣΤΑΤΙΚΑ:
Σκεύη, εξαρτήματα:
1.esp32 πίνακας ανάπτυξης
Λογισμικό:
1. Arduino IDE
2. Thingsio.ai
Βήμα 2: ΑΠΟΚΛΕΙΣΗ ΔΙΑΓΡΑΜΜΑΤΟΣ ΑΠΟΚΑΛΥΗΣ ΤΟΥ Esp32
Βήμα 3: ΚΩΔΙΚΟΠΟΙΗΣΗ:
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#περιλαμβάνω
#ifdef _cplusplus
εξωτερικό "C" {
#τέλος εαν
uint8_t temprature_sens_read ();
// uint8_t g_phyFuns;
#ifdef _cplusplus
}
#τέλος εαν
int count = 0, i, m, j, k;
int t, t1, t2, t3;
int outputpin = A0; // ds18b20
//////////////////////////////////////// Όλες οι δηλώσεις
για ΝΕΦΩΣ ///////////////////////////////
const char* host = "api.thingsai.io"; // host κεντρικός υπολογιστής =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; //
OR/api/v2/thingscloud2/_table/data_ac
const char* time_server =
"baas.thethingscloud.com"; // αυτό είναι για τη μετατροπή χρονικής σήμανσης
const int httpPort = 80;
const int httpsPort = 443;
const char* διακομιστής =
"api.thingsai.io"; // URL διακομιστή
timestamp char [10]?
WiFiMulti WiFiMulti;
// Χρησιμοποιήστε την κλάση WiFiClient για να δημιουργήσετε συνδέσεις TCP
Πελάτης WiFiClient.
/////////////////////////////////////// TIMESTAMP
Λειτουργία ΥΠΟΛΟΓΙΣΜΟΣ ///////////////////////////////////////
int GiveMeTimestamp ()
{
ανυπόγραφη μακρά
timeout = millis ();
// πελάτης WiFiClient.
ενώ
(client.available () == 0)
{
εάν (millis () -
χρονικό όριο> 50000)
{
client.stop ();
επιστροφή 0?
}
}
while (client.available ())
{
Γραμμή συμβολοσειράς =
client.readStringUntil ('\ r'); // indexOf () είναι μια λειτουργία αναζήτησης για smthng, επιστρέφει -1 αν δεν βρεθεί
int pos =
line.indexOf ("\" χρονική σήμανση / ""); // αναζήτηση για "\" timestamp / "" από την αρχή της απόκρισης και αντιγράψτε όλα τα δεδομένα μετά από αυτό, θα είναι η χρονική σήμανση σας
εάν (pos> =
0)
{
int j = 0;για (j = 0; j <10; j ++)
{χρονική σήμανση [j] = γραμμή [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
void setup ()
{Serial.begin (115200);
καθυστέρηση (10)?
tzset ();
// Ξεκινάμε από
σύνδεση σε δίκτυο WiFiWiFiMulti.addAP ("dlink_DWR-113", "madhukar66");
Serial.println ();
Serial.println ();Serial.print ("Περιμένετε για WiFi …");ενώ (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
καθυστέρηση (500)?
}Serial.println ("");Serial.println ("WiFi συνδεδεμένο");Serial.println ("Διεύθυνση IP:");Serial.println (WiFi.localIP ());
καθυστέρηση (500)?
}
uint8_t temp_farenheit;
float temp_celsius?
char strftime_buf [64];
time_t τώρα = 0;
strukt tm timeinfo?
char buf [256];
κενός βρόχος ()
{
// int analogValue =
analogRead (έξοδος εξόδου);
{
/////////////////////////////////////// ΣΤΕΙΛΤΕ ΤΟ ΕΡΩΤΗΜΑ ΚΑΙ
ΛΑΒΕΤΕ ΤΗΝ ΑΠΑΝΤΗΣΗ ///////////////////////
//
t1 = (analogValue/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); //Διακοπή;localtime_r (& τώρα, & timeinfo);strftime (strftime_buf, sizeof (strftime_buf), "%c", & timeinfo);sprintf (buf, "έναρξη σάρωσης%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");
καθυστέρηση (1000)?
τώρα ++;
Serial.print ( σύνδεση
προς το );Serial.println (οικοδεσπότης); // καθορισμένο ανάποδα:- host = devapi2.thethingscloud.com ή 139.59.26.117
/////////////////////////////////////// TIMESTAMP CODE SNIPPET
/////////////////////////
Serial.println ("εντός λήψης χρονικής σήμανσης / n");
αν
(! client.connect (διακομιστής χρόνου, {
ΕΠΙΣΤΡΟΦΗ;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/timestamp HTTP/1.1"); // Τι κάνει αυτό το μέρος, δεν κατάλαβαclient.println ("Host: baas.thethingscloud.com");client.println ("Cache-Control: no-cache");client.println ("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp (); // θα καλέσει το
λειτουργία που θα λάβει την απόκριση χρονικής σήμανσης από τον διακομιστή
Serial.println ("λήξη χρονικής σήμανσης");
Serial.println (χρονική σήμανση);Serial.println ("μέσα στο ThingsCloudPost");
String PostValue =
"{" device_id / ": 61121695920, \" slave_id / ": 2";
PostValue =
PostValue + ", \" dts / ":" + χρονική σήμανση;
PostValue =
PostValue +", \" data / ": {" TEMP / ":" +temp_farenheit +"}" +"}";Serial.println (PostValue);
/ * δημιουργήστε ένα παράδειγμα WiFiClientSecure */
WiFiClientSecure πελάτης. Serial.println ("Σύνδεση με διακομιστή μέσω θύρας 443");
αν
(! client.connect (διακομιστής, 443)) {Serial.println ("Η σύνδεση απέτυχε!");
} αλλο {Serial.println ("Συνδέθηκε με διακομιστή!");
/* δημιουργία
αίτηση */client.println ("POST/devices/deviceData HTTP/1.1");client.println ("Host: api.thingsai.io");//client.println("Σύνδεση: κλείσιμο ");client.println ("Τύπος περιεχομένου: εφαρμογή/json");client.println ("cache-control: no-cache");client.println ("Άδεια: Ανώνυμες eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKy6_m9tdW5AG7ajfVlY")?client.print ("Περιεχόμενο-Μήκος:");client.println (PostValue.length ());client.println ();client.println (PostValue);
//////////////////////////////////// ΑΝΑΡΤΗΣΗ των δεδομένων στο
το cloud τελείωσε και τώρα λάβετε τη φόρμα απόκρισης cloud server ///////////////////
Serial.print ( Αναμονή
για απάντηση );
ενώ
(! client.available ()) {
καθυστέρηση (50)?
//Serial.print (".");
}
/* εάν τα δεδομένα είναι
διαθέσιμο, στη συνέχεια λάβετε και εκτυπώστε στο τερματικό */
ενώ
(client.available ()) {
char c =
client.read ();Serial.write (c);
}
/* εάν το
διακομιστής αποσυνδεδεμένος, διακόψτε τον πελάτη */
αν
(! client.connected ()) {Serial.println ();Serial.println ("Ο διακομιστής αποσυνδέθηκε");
client.stop ();
}
}
Serial.println ( ////////////////////// ΤΕΛΟΣ
///////////////////// );
καθυστέρηση (3000)?
}
}
Βήμα 4: ΕΞΟΔΟΣ:
Εδώ είναι η έξοδος των τιμών θερμοκρασίας που διαβάζονται από τον αισθητήρα.
Βήμα 5: ΓΡΑΦΑ:
Η γραφική αναπαράσταση των τιμών που διαβάζονται από τον ενσωματωμένο αισθητήρα θερμοκρασίας.