תוכן עניינים:
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" {
#endif
uint8_t temprature_sens_read ();
// uint8_t g_phyFuns;
#ifdef _cplusplus
}
#endif
int count = 0, i, m, j, k;
int t, t1, t2, t3;
int outputpin = A0; // ds18b20
/////////////////////////////////
עבור CLOUD //////////////////////////////////
const char* host = "api.thingsai.io"; // או מארח =
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* server =
"api.thingsai.io"; // כתובת URL של השרת
חותמת זמן של צ'ארה [10];
WiFiMulti WiFiMulti;
// השתמש בכיתה WiFiClient ליצירת חיבורי TCP
לקוח WiFiClient;
//////////////////////////////////////////
פונקציית חישוב ////////////////////////////
int GiveMeTimestamp ()
{
ארוך ללא סימן
פסק זמן = מיליס ();
// לקוח WiFiClient;
בזמן
(client.available () == 0)
{
אם (מיליס () -
פסק זמן> 50000)
{
client.stop ();
החזר 0;
}
}
בעוד (client.available ())
{
קו מחרוזת =
client.readStringUntil ('\ r'); // indexOf () הוא פונקציה לחיפוש smthng, הוא מחזיר -1 אם לא נמצא
int pos =
line.indexOf ("\" חותמת זמן / ""); // חפש "\" חותמת זמן / "" מתחילת התגובה שקיבלת והעתק את כל הנתונים לאחר מכן, זה יהיה חותמת הזמן שלך
אם (pos> =
0)
{
int j = 0;עבור (j = 0; j <10; j ++)
{חותמת זמן [j] = שורה [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
הגדרת חלל ()
{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;
צף temp_celsius;
char strftime_buf [64];
time_t עכשיו = 0;
struct tm timeinfo;
צ'אר בוף [256];
לולאת חלל ()
{
// int analogValue =
analogRead (outputpin);
{
/////////////////////////////////
קבל את התגובה /////////////////////
//
t1 = (analogValue/1024.0) *5000;
//
Serial.print ("טמפ ':");
// 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);
הדפסה סידורי
(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
////////////////////////////////////////// SNIPPET
/////////////////////////
Serial.println ("בפנים חותמת זמן / n");
אם
(! client.connect (שרת הזמן, {
לַחֲזוֹר;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET/api/timestamp HTTP/1.1"); // מה החלק הזה עושה, לא הבנתיclient.println ("מארח: baas.thethingscloud.com");client.println ("Cache-Control: no-cache");client.println ("אגרת דוור: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println ();
GiveMeTimestamp (); // זה יקרא ל
פונקציה שתקבל את תגובת חותמת הזמן מהשרת
Serial.println ("חותמת זמן התקבלה");
Serial.println (חותמת זמן);Serial.println ("בתוך ThingsCloudPost");
מחרוזת 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 ("מארח: api.thingsai.io");//client.println("חיבור: קרוב ");client.println ("סוג תוכן: יישום/json");client.println ("cache-control: no-cache");client.println ("הרשאה: נושאת eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNYs9k9y7y9y9s9y9k9y9c9y9c9y9c9y9c9p6y9c9y9c9y9c9y9c9p6y9c5j9J9JyJ9JyN9C9pK9y9YYYYYYN9CYPWzQy9J9yYyYNJC9pJ6y9JyJJJJJJJJ9JyJJ9JyJJJjJJJJJJJgclient.print ("אורך התוכן:");client.println (PostValue.length ());client.println ();client.println (PostValue);
////////////////////////////////////// לפרסם את הנתונים ב
ענן נעשה ועכשיו קבל את טופס התגובה שרת ענן ////////////////////
Serial.print ( מחכה
לתגובה );
בזמן
(! client.available ()) {
עיכוב (50);
//Serial.print (".");
}
/* אם הנתונים
זמין ואז קבל והדפס לטרמינל */
בזמן
(client.available ()) {
char c =
client.read ();Serial.write (ג);
}
/* אם
השרת נותק, עצור את הלקוח */
אם
(! client.connected ()) {Serial.println ();Serial.println ("השרת נותק");
client.stop ();
}
}
Serial.println ( //////////////////////// END
///////////////////// );
עיכוב (3000);
}
}
שלב 4: פלט:
להלן הפלט של ערכי הטמפרטורה הנקראים מהחיישן.
שלב 5: גרפים:
הייצוג הגרפי של הערכים הנקראים מחיישן הטמפרטורה המשולב.