Inhaltsverzeichnis:
2025 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2025-01-13 06:56
In diesem Tutorial werde ich erklären, wie man die Temperatur in der Umgebung misst, indem man den eingebauten Temperatursensor verwendet, der in der ESP32-Entwicklungsplatine vorhanden ist. esp32 hat viele eingebaute Sensoren wie den Hallsensor, der als Näherungssensor, Berührungssensor und Temperatursensor verwendet wird. In diesem Tutorial werden wir über den Temperatursensor diskutieren.
Schritt 1: KOMPONENTEN:
Hardware:
1.esp32-Entwicklungsboard
Software:
1. Arduino-IDE
2. Thingsio.ai
Schritt 2: BLOCKDIAGRAMM-DARSTELLUNG VON Esp32
Schritt 3: CODIERUNG:
#enthalten
#enthalten
#enthalten
#enthalten
#enthalten
#ifdef _cplusplus
extern "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 Ausgabepin = A0; // ds18b20
/////////////////////////////////////// ALLE ERKLÄRUNGEN
für CLOUD //////////////////////////////
const char* host = "api.thingsai.io"; // ODER-Host =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; //
ODER /api/v2/thingscloud2/_table/data_ac
const char* time_server =
"baas.thethingscloud.com"; // dies ist zum Konvertieren des Zeitstempels
const int httpPort = 80;
const int httpsPort = 443;
const char* server =
"api.thingsai.io"; // Server-URL
char-Zeitstempel[10];
WiFiMulti WiFiMulti;
// Verwenden Sie die WiFiClient-Klasse, um TCP-Verbindungen zu erstellen
WiFiClient-Client;
////////////////////////////////////// TIMESTAMP
BERECHNUNGS-Funktion //////////////////////////////////////
int GiveMeTimestamp()
{
lange nicht signiert
Zeitüberschreitung = Millis();
// WiFiClient-Client;
während
(client.verfügbar() == 0)
{
if (millis() -
Zeitüberschreitung > 50000)
{
client.stop();
0 zurückgeben;
}
}
while (client.verfügbar())
{
Schnurlinie =
client.readStringUntil('\r'); //indexOf() ist eine Funktion, um nach smthng zu suchen, es gibt -1 zurück, wenn es nicht gefunden wird
int pos =
line.indexOf("\"Zeitstempel\""); // suche nach "\"timestamp\"" vom Anfang der erhaltenen Antwort und kopiere alle Daten danach, es wird dein Zeitstempel sein
wenn (pos >=
0)
{
intj = 0;für(j=0;j<10;j++)
{Zeitstempel[j] = Zeile[pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
Void-Setup ()
{Serial.begin(115200);
Verzögerung(10);
tzset();
// Wir beginnen mit
Verbindung mit einem WLAN-NetzwerkWiFiMulti.addAP("dlink_DWR-113", "madhukar66");
Serial.println();
Serial.println();Serial.print("Warten Sie auf WLAN…");while(WiFiMulti.run() != WL_CONNECTED) {Serial.print(".");
Verzögerung (500);
}Serial.println("");Serial.println ("WiFi verbunden");Serial.println("IP-Adresse:");Serial.println (WiFi.localIP());
Verzögerung (500);
}
uint8_t temp_farenheit;
float temp_celsius;
char strftime_buf[64];
time_t jetzt = 0;
struct tm timeinfo;
char-buf[256];
Leere Schleife ()
{
// int analogValue =
analogRead (Ausgangspin);
{
////////////////////////////////////// ANFRAGE SENDEN UND
ANTWORT ERHALTEN ///////////////////////
//
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); //brechen;localtime_r(&jetzt, &timeinfo);strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);sprintf(buf, "Scanstart %02d:%02d:%02d ", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);
Seriendruck
(buf);
temp_farenheit=
tempratur_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");
Verzögerung (1000);
jetzt++;
Serial.print( verbinden
zu );Serial.println (Host); // oben definiert: - host = devapi2.thethingscloud.com oder 139.59.26.117
//////////////////////////////////// TIMESTAMP CODE SNIPPET
/////////////////////////
Serial.println("innerhalb Zeitstempel abrufen\n");
wenn
(!client.connect(Zeitserver, {
Rückkehr;
//*-*-*-*-*-*-*-*-*-*
}client.println("GET /api/timestamp HTTP/1.1"); // Was macht dieser Teil, ich habe es nicht verstanden?client.println("Host: baas.thethingscloud.com");client.println("Cache-Steuerung: kein Cache");client.println("Postman-Token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println();
GiveMeTimestamp(); //es ruft die
Funktion, die die Zeitstempelantwort vom Server erhält
Serial.println ("Zeitstempel erhalten");
Serial.println (Zeitstempel);Serial.println ("innerhalb von ThingsCloudPost");
String PostValue =
"{"device_id\": 61121695920, \"slave_id\": 2";
PostValue =
PostValue + ", \"dts\":" +Zeitstempel;
PostValue =
PostValue +", \"data\":{"TEMP\":" + temp_farenheit +"}"+"}";Serial.println (PostValue);
/* eine Instanz von WiFiClientSecure erstellen */
WiFiClientSecure-Client;Serial.println("Verbindung zum Server über Port 443 herstellen");
wenn
(!client.connect(server, 443)){Serial.println ("Verbindung fehlgeschlagen!");
} anders {Serial.println("Mit Server verbunden!");
/* HTTP erstellen
Anfrage */client.println("POST /devices/deviceData HTTP/1.1");client.println("Host: api.thingsai.io");//client.println("Verbindung: schließen");client.println("Inhaltstyp: Anwendung/json");client.println("Cache-Steuerung: kein Cache");client.println("Berechtigung: Inhaber eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTykXs9ajP);client.print("Inhaltslänge: ");client.println(PostValue.length());client.println();client.println (PostWert);
//////////////////////////////////POSTEN die Daten auf die
cloud ist fertig und erhalte jetzt das Antwortformular cloud server //////////////////
Serial.print( Warten
für Antwort );
während
(!client.verfügbar()){
Verzögerung (50);
//Serial.print(".");
}
/* wenn Daten. sind
verfügbar, dann empfangen und an Terminal drucken */
während
(client.verfügbar()) {
Zeichen c =
client.read();Serial.write (c);
}
/* wenn die
Server getrennt, Client stoppen */
wenn
(!client.connected()) {Serial.println();Serial.println("Server getrennt");
client.stop();
}
}
Serial.println( ////////////////////// DAS ENDE
///////////////////// );
Verzögerung (3000);
}
}
Schritt 4: AUSGABE:
Hier ist die Ausgabe der vom Sensor gelesenen Temperaturwerte.
Schritt 5: GRAFIK:
Die grafische Darstellung der vom Onboard-Temperatursensor gelesenen Werte.