Tabla de contenido:
2025 Autor: John Day | [email protected]. Última modificación: 2025-01-13 06:57
En este tutorial, voy a explicar cómo medir la temperatura en los alrededores mediante el uso de un sensor de temperatura incorporado presente en la placa de desarrollo esp32. esp32 tiene muchos sensores incorporados como el sensor de pasillo utilizado como sensor de proximidad, sensor táctil, sensor de temperatura. En este tutorial vamos a discutir sobre el sensor de temperatura.
Paso 1: COMPONENTES:
Hardware:
Placa de desarrollo 1.esp32
Software:
1. IDE de Arduino
2. Thingsio.ai
Paso 2: REPRESENTACIÓN DEL DIAGRAMA DE BLOQUES DE Esp32
Paso 3: CODIFICACIÓN:
#incluir
#incluir
#incluir
#incluir
#incluir
#ifdef _cplusplus
extern "C" {
#terminara si
uint8_t temprature_sens_read ();
// uint8_t g_phyFuns;
#ifdef _cplusplus
}
#terminara si
int cuenta = 0, i, m, j, k;
int t, t1, t2, t3;
int outputpin = A0; // ds18b20
//////////////////////////////////////// TODAS LAS DECLARACIONES
para NUBE ////////////////////////////////
const char * host = "api.thingsai.io"; // O host =
devapi2.thethingscloud.com
const char * post_url = "/ devices / deviceData"; //
O / api / v2 / thingscloud2 / _table / data_ac
const char * time_server =
"baas.thethingscloud.com"; // esto es para convertir la marca de tiempo
const int httpPort = 80;
const int httpsPort = 443;
const char * servidor =
"api.thingsai.io"; // URL del servidor
marca de tiempo char [10];
WiFiMulti WiFiMulti;
// Usa la clase WiFiClient para crear conexiones TCP
Cliente WiFiClient;
/////////////////////////////////////// TIMESTAMP
Función de CÁLCULO /////////////////////////////////////////
int GiveMeTimestamp ()
{
largo sin firmar
tiempo de espera = milis ();
// Cliente WiFiClient;
tiempo
(cliente disponible () == 0)
{
si (milis () -
tiempo de espera> 50000)
{
client.stop ();
return 0;
}
}
while (cliente disponible ())
{
Línea de cuerda =
client.readStringUntil ('\ r'); // indexOf () es una función para buscar smthng, devuelve -1 si no se encuentra
int pos =
line.indexOf ("\" marca de tiempo / ""); // busca "\" marca de tiempo / "" desde el principio de la respuesta obtenida y copia todos los datos después de eso, será tu marca de tiempo
si (pos> =
0)
{
int j = 0;para (j = 0; j <10; j ++)
{marca de tiempo [j] = línea [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
configuración vacía ()
{Serial.begin (115200);
retraso (10);
tzset ();
// Empezamos por
conectarse a una red WiFiWiFiMulti.addAP ("dlink_DWR-113", "madhukar66");
Serial.println ();
Serial.println ();Serial.print ("Esperar WiFi …");while (WiFiMulti.run ()! = WL_CONNECTED) {Serial.print (".");
retraso (500);
}Serial.println ("");Serial.println ("WiFi conectado");Serial.println ("dirección IP:");Serial.println (WiFi.localIP ());
retraso (500);
}
uint8_t temp_farenheit;
float temp_celsius;
char strftime_buf [64];
time_t ahora = 0;
struct tm timeinfo;
char buf [256];
bucle vacío ()
{
// int analogValue =
analogRead (salida);
{
/////////////////////////////////////// ENVIAR LA CONSULTA Y
RECIBA LA RESPUESTA ///////////////////////
//
t1 = (valoranálogo / 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); //rotura;localtime_r (y ahora, & timeinfo);strftime (strftime_buf, sizeof (strftime_buf), "% c", & timeinfo);sprintf (buf, "inicio de escaneo% 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");
retraso (1000);
ahora ++;
Serial.print ( conectando
para );Serial.println (host); // definido al alza: - host = devapi2.thethingscloud.com o 139.59.26.117
///////////////////////////////////// SNIPPET DE CÓDIGO DE HORA DE HORA
/////////////////////////
Serial.println ("dentro de obtener marca de tiempo / n");
si
(! client.connect (time_server, {
regreso;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET / api / timestamp HTTP / 1.1"); // ¿Qué hace esta parte? No entendíclient.println ("Anfitrión: baas.thethingscloud.com");client.println ("Cache-Control: no-cache");client.println ("Ficha del cartero: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
cliente.println ();
GiveMeTimestamp (); // llamará al
función que obtendrá la respuesta de la marca de tiempo del servidor
Serial.println ("marca de tiempo recibida");
Serial.println (marca de tiempo);Serial.println ("dentro de ThingsCloudPost");
String PostValue =
"{" id_dispositivo / ": 61121695920, \" id_esclavo / ": 2";
PostValue =
PostValue + ", \" dts / ":" + marca de tiempo;
PostValue =
PostValue + ", \" datos / ": {" TEMP / ":" + temp_farenheit + "}" + "}";Serial.println (PostValue);
/ * crea una instancia de WiFiClientSecure * /
Cliente WiFiClientSecure;Serial.println ("Conectarse al servidor a través del puerto 443");
si
(! client.connect (servidor, 443)) {Serial.println ("¡Conexión fallida!");
} demás {Serial.println ("¡Conectado al servidor!");
/ * crear
solicitud */client.println ("POST / dispositivos / deviceData HTTP / 1.1");client.println ("Host: api.thingsai.io");//client.println("Connection: close ");client.println ("Tipo de contenido: aplicación / json");client.println ("control de caché: sin caché");client.println ("Autorización: Portador eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNAG7a2jWTk6")client.print ("Content-Length:");client.println (PostValue.length ());cliente.println ();client.println (PostValue);
//////////////////////////////////// PUBLICAR los datos en el
la nube está lista y ahora obtenga el formulario de respuesta del servidor en la nube ////////////////////
Serial.print ( Esperando
para la respuesta );
tiempo
(! client.available ()) {
retraso (50);
//Serial.print (".");
}
/ * si los datos son
disponible, luego reciba e imprima en la Terminal * /
tiempo
(cliente disponible ()) {
char c =
cliente.read ();Serial.write (c);
}
/* Si el
servidor desconectado, detenga el cliente * /
si
(! client.connected ()) {Serial.println ();Serial.println ("Servidor desconectado");
client.stop ();
}
}
Serial.println ( ////////////////////// EL FIN
///////////////////// );
retraso (3000);
}
}
Paso 4: SALIDA:
Aquí está la salida de los valores de temperatura leídos por el sensor.
Paso 5: GRÁFICOS:
La representación gráfica de los valores leídos del sensor de temperatura integrado.