Sommario:
- Fase 1: COMPONENTI
- Fase 2: CONNESSIONI
- Fase 3: CODIFICA:
- Fase 4: USCITA:
- Passaggio 5: GRAFICO
- Passaggio 6:
Video: Misurazione del contenuto di umidità del suolo utilizzando la piattaforma Esp32 e Thingsio.ai: 6 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:03
In questo tutorial spiegherò la lettura del contenuto di umidità nel suolo utilizzando esp32 e quindi l'invio dei valori alla piattaforma cloud IoT thingsio.ai.
Fase 1: COMPONENTI
Componenti hardware:
1. scheda di sviluppo esp32
2. Sensore del suolo
3. Cavi del ponticello
Software:
1. Arduino IDE
2. Thingsio.ai
Fase 2: CONNESSIONI
Sensore di umidità del suolo -----------------------Scheda esp32
VCC --------------------------3V3
GND --------------------------------------- GND
A0 --------------------------VP
Fase 3: CODIFICA:
#includere
#includere
#includere
int conteggio=0, i, m, j, k;
int t;
int pin_sensore = A0;
int valore;
//////////////////////////////////////// TUTTE LE DICHIARAZIONI
per CLOUD //////////////////////////////
const char* host = "api.thingsai.io"; // OPPURE host =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // O
/api/v2/thingscloud2/_table/data_ac
const char* time_server =
"baas.thethingscloud.com"; //questo serve per convertire il timestamp
const int httpPort = 80;
const int httpsPort = 443;
const char* server =
"api.thingsai.io"; // URL del server
char timestamp[10];
WiFi Multi WiFi Multi;
// Usa la classe WiFiClient per creare connessioni TCP
client WiFi Client;
////////////////////////////////////// ORARIO
Funzione CALCOLO//////////////////////////////////////
int GiveMeTimestamp()
{
unsigned lungo
timeout = millis();
//client WiFiClient;
mentre
(cliente.disponibile() == 0)
{
if (milli() -
timeout > 50000)
{
cliente.stop();
restituisce 0;
}
}
mentre (client.disponibile())
{
Linea di stringa =
client.readStringUntil('\r'); //indexOf() è una funzione per cercare smthng, restituisce -1 se non trovata
int pos =
line.indexOf("\"timestamp\""); //cerca "\"timestamp\"" dall'inizio della risposta ottenuta e copia tutti i dati dopo, sarà il tuo timestamp
if (pos >=
0)
{
intj = 0;for(j=0;j<10;j++)
{timestamp[j] = riga[pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
configurazione nulla()
{Serial.begin(115200);Serial.println("Lettura dal sensore…");
ritardo (2000);
// Iniziamo da
connessione a una rete WiFi
WiFiMulti.addAP("Nome_Wifi", "Wifi_Password");
Serial.println();
Serial.println();Serial.print("Attendi WiFi… ");while(WiFiMulti.run() != WL_CONNECTED) {Serial.print(".");
ritardo (500);
}Serial.println("");Serial.println("WiFi connesso");
Serial.println( IP
indirizzo: );Serial.println(WiFi.localIP());
ritardo (500);
}
ciclo vuoto()
{
{
/////////////////////////////////////// INVIA LA DOMANDA E
RICEVERE LA RISPOSTA///////////////////////
valore=
analogRead(sensor_pin);
// valore =
mappa(valore, 550, 0, 0, 100);Serial.print("Mostra: ");Serial.print(valore);Serial.println("%");ritardo(1000);Serial.print("connessione a ");Serial.println(host); // rialzo definito: - host = devapi2.thethingscloud.com o 139.59.26.117
//////////////////////////////////// SNIPPET DI CODICE TIMESTAMP
/////////////////////////
Serial.println("inside ottieni timestamp\n");
Se
(!client.connect(time_server, {
Restituzione;
//*-*-*-*-*-*-*-*-*-*
}client.println("OTTIENI /api/timestamp HTTP/1.1"); //Cosa sta facendo questa parte, non l'ho capitoclient.println("Host: baas.thethingscloud.com");client.println("Cache-Control: no-cache");client.println("Token postino: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println();
GiveMeTimestamp();
// chiamerà la funzione che otterrà la risposta del timestamp dal server
Serial.println("timestamp ricevuto");
Serial.println(timestamp);Serial.println("dentro ThingsCloudPost");
Stringa PostValue =
"{"id_dispositivo\": 61121695918, \"id_slave\": 2";
PostValue =
PostValue + ", \"dts\":" + timestamp;
PostValue =
PostValue +", \"data\":{"MOIST\":" + value +"}"+"}";Serial.println(PostValue);
/* crea un'istanza di WiFiClientSecure */
client WiFiClientSecure;Serial.println("Connetti al server tramite la porta 443");
Se
(!client.connect(server, 443)){Serial.println("Connessione fallita!");
} altro {Serial.println("Connesso al server!");
/* crea
richiesta */client.println("POST /devices/deviceData HTTP/1.1");client.println("Host: api.thingsai.io");//client.println("Connessione: chiudi");client.println("Tipo di contenuto: application/json");
client.println( controllo cache:
senza cache");client.println("Autorizzazione: Portatore eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlkXNqC2PNTy);client.print("Lunghezza contenuto: ");
client.println(PostValue.length());client.println();client.println(PostValue);
/////////////////////////////////INSERIRE i dati sul
cloud è fatto e ora ottieni il modulo di risposta server cloud//////////////////
Serial.print( In attesa di risposta
);
mentre
(!client.disponibile()){
ritardo(50);
//Serial.print(".");
}
/* se i dati sono
disponibile quindi ricevi e stampa su Terminale */
mentre
(cliente.disponibile()) {
char c = client.read();Serial.write(c);
}
/* se la
server disconnesso, arresta il client */
Se
(!client.connected()) {Serial.println();Serial.println("Server disconnesso");
cliente.stop();
}
}
Serial.println( ////////////////////// FINE
///////////////////// );
ritardo (3000);
}
}
Fase 4: USCITA:
Viene visualizzato l'output del codice.
Passaggio 5: GRAFICO
Questa è la rappresentazione grafica dei valori che vengono letti dal sensore.
Passaggio 6:
Ecco il video completo del progetto. Grazie.
Consigliato:
Misurazione dell'umidità del suolo con Raspberry Pi 4: 4 passaggi
Misurazione dell'umidità del suolo con Raspberry Pi 4: Sai quanto spesso annaffiare le piante? O piante effuse e le perse. Per risolvere questo problema ho pensato che sarebbe stato più circostanziato se potessimo ottenere il valore del contenuto di acqua all'interno del terreno in modo da prendere una decisione per l'irrigazione delle piante appropriata
Monitoraggio della temperatura e dell'umidità DHT utilizzando ESP8266 e la piattaforma IoT AskSensors: 8 passaggi
Monitoraggio della temperatura e dell'umidità DHT utilizzando ESP8266 e la piattaforma IoT AskSensors: in una precedente istruzione, ho presentato una guida passo passo per iniziare con il nodeMCU ESP8266 e la piattaforma IoT AskSensors. In questo tutorial, sto collegando un sensore DHT11 al nodo MCU. Il DHT11 è un sensore di temperatura e umidità comunemente usato
Automatizzare una serra con LoRa! (Parte 1) -- Sensori (temperatura, umidità, umidità del suolo): 5 passaggi
Automatizzare una serra con LoRa! (Parte 1) || Sensori (temperatura, umidità, umidità del suolo): in questo progetto ti mostrerò come ho automatizzato una serra. Ciò significa che ti mostrerò come ho costruito la serra e come ho collegato l'elettronica di alimentazione e automazione. Inoltre ti mostrerò come programmare una scheda Arduino che utilizza L
Sistema di monitoraggio e controllo dell'umidità del suolo basato su IoT utilizzando NodeMCU: 6 passaggi
Sistema di monitoraggio e controllo dell'umidità del suolo basato su IoT utilizzando NodeMCU: In questo tutorial implementeremo un sistema di monitoraggio e controllo dell'umidità del suolo basato su IoT utilizzando il modulo WiFi ESP8266, ovvero NodeMCU. Componenti necessari per questo progetto: Modulo WiFi ESP8266 - Amazon (334/- INR)Modulo relè – Amazon (130/- INR
Misurazione della temperatura utilizzando la piattaforma Esp32 e Thingsio.ai: 6 passaggi
Misurazione della temperatura utilizzando la piattaforma Esp32 e Thingsio.ai: in questo tutorial spiegherò come misurare la temperatura nell'ambiente circostante utilizzando il sensore di temperatura integrato presente nella scheda di sviluppo esp32. esp32 ha molti sensori integrati come il sensore di hall utilizzato come sensore di prossimità, touch