Tabla de contenido:
- Paso 1: COMPONENTES
- Paso 2: CONEXIONES
- Paso 3: CODIFICACIÓN:
- Paso 4: SALIDA:
- Paso 5: GRÁFICO
- Paso 6:
Video: Medición del contenido de humedad del suelo con Esp32 y la plataforma Thingsio.ai: 6 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:43
En este tutorial voy a explicar sobre la lectura del contenido de humedad en el suelo usando esp32 y luego enviando los valores a la plataforma en la nube thingsio.ai IoT.
Paso 1: COMPONENTES
Componentes de hardware:
1. placa de desarrollo esp32
2.sensor de suelo
3 cables de puente
Software:
1. IDE de Arduino
2. Thingsio.ai
Paso 2: CONEXIONES
Sensor de humedad del suelo ---------------------- Tablero esp32
VCC --------------------------------------- 3V3
TIERRA -------------------------------------- TIERRA
A0 ---------------------------------------- VP
Paso 3: CODIFICACIÓN:
#incluir
#incluir
#incluir
int cuenta = 0, i, m, j, k;
int t;
int sensor_pin = A0;
valor int;
//////////////////////////////////////// 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);Serial.println ("Lectura del sensor …");
retraso (2000);
// Empezamos por
conectarse a una red WiFi
WiFiMulti.addAP ("Wifi_name", "Contraseña de wifi");
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 ( IP
Dirección: );Serial.println (WiFi.localIP ());
retraso (500);
}
bucle vacío ()
{
{
/////////////////////////////////////// ENVIAR LA CONSULTA Y
RECIBA LA RESPUESTA ///////////////////////
valor =
analogRead (sensor_pin);
// valor =
mapa (valor, 550, 0, 0, 100);Serial.print ("Mositure:");Serial.print (valor);Serial.println ("%");retraso (1000);Serial.print ("conectando a");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á a la 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 / ": 61121695918, \" id_esclavo / ": 2";
PostValue =
PostValue + ", \" dts / ":" + marca de tiempo;
PostValue =
PostValue + ", \" datos / ": {" MOIST / ":" + valor + "}" + "}";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 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:
Se muestra la salida del código.
Paso 5: GRÁFICO
Esta es la representación gráfica de los valores que se leen del sensor.
Paso 6:
Aquí está el video completo del proyecto. Gracias.
Recomendado:
Medición de la humedad del suelo con Raspberry Pi 4: 4 pasos
Medición de la humedad del suelo con Raspberry Pi 4: ¿Sabe con qué frecuencia regar las plantas? O derramar plantas y perderlas. Para solucionar esto pensé que sería más circunstancial si pudiéramos obtener el valor del contenido de agua dentro del suelo para poder tomar una decisión de riego apropiado de las plantas
¡Automatizando un invernadero con LoRa! (Parte 1) -- Sensores (temperatura, humedad, humedad del suelo): 5 pasos
¡Automatizando un invernadero con LoRa! (Parte 1) || Sensores (temperatura, humedad, humedad del suelo): en este proyecto les mostraré cómo automaticé un invernadero. Eso significa que les mostraré cómo construí el invernadero y cómo conecté la electrónica de potencia y automatización. También te mostraré cómo programar una placa Arduino que usa L
Medición de la humedad del suelo con Arduino: 6 pasos
Medición de la humedad del suelo con Arduino: En este tutorial rápido, le mostraré cómo leer un sensor de humedad del suelo usando arduino e imprimir el nivel de humedad del suelo en el monitor serial Arduino. Puede encontrar la publicación original escrita por mí en cingalés en este enlace
Medición de temperatura con la plataforma Esp32 y Thingsio.ai: 6 pasos
Medición de temperatura usando la plataforma Esp32 y Thingsio.ai: En este tutorial voy a explicar cómo medir la temperatura en los alrededores mediante el uso del 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, táctil
Plan de prueba del sensor de humedad del suelo: 6 pasos (con imágenes)
Plan de prueba del sensor de humedad del suelo: Desafío: Diseñe y ejecute un plan que encienda un LED ROJO cuando el suelo esté húmedo y un LED VERDE cuando el suelo esté seco. Esto implicará el uso de un sensor de humedad del suelo. Objetivo: El objetivo de este instructivo es ver si ha llovido y si la planta