Sommario:
2025 Autore: John Day | [email protected]. Ultima modifica: 2025-01-13 06:57
In questo tutorial spiegherò come misurare la vicinanza di un dispositivo e pubblicare i valori nella piattaforma cloud Thingsai, io utilizzando il sensore di hall e la scheda di sviluppo esp32.
Un sensore ad effetto Hall è un dispositivo utilizzato per misurare l'ampiezza di un campo magnetico. La sua tensione di uscita è direttamente proporzionale all'intensità del campo magnetico che lo attraversa. I sensori ad effetto Hall vengono utilizzati per applicazioni di rilevamento di prossimità, posizionamento, rilevamento della velocità e rilevamento della corrente.
Fase 1: COMPONENTI
Componenti hardware:
1. Sensore Hall
2. scheda di sviluppo esp32
3. Ponticelli
Componenti software:
1. Arduino IDE
2. CoseIO. AI
Fase 2: CONNESSIONI:
Sensore di Hall --------esp32
Aout ----------------vp
Gnd ---------------Gnd
Vcc ----------------3V3
Fase 3: CODIFICA:
#includere
#includere
#includere
int conteggio=0, i, m, j, k;
misura int;
int outputpin= A0;//ds18b20
//////////////////////////////////////// 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);
ritardo(10);
// 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("Indirizzo IP: ");
Serial.println(WiFi.localIP());
ritardo (500);
}
ciclo vuoto()
{
int AnalogValue =
analogRead(pin di uscita);
{
/////////////////////////////////////// INVIA LA DOMANDA E
RICEVERE LA RISPOSTA///////////////////////
misura int
= 0;
misura =
hallRead();Serial.print("Misura sensore Hall: ");Serial.println(misura);
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\": 61121696007, \"id_slave\": 2";
PostValue =
PostValue + ", \"dts\":" + timestamp;
PostValue =
PostValue +", \"data\":{"prossimità\":" + misura +"}"+"}";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("cache-control: no-cache");
client.println( Autorizzazione:
Portatore eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PdW6AG7;jt9;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()) {
carattere c =
client.read();Serial.write(c);
}
/* se il server si è disconnesso, ferma il client */
Se
(!client.connected()) {Serial.println();Serial.println("Server disconnesso");cliente.stop();
}
}
Serial.println( ////////////////////// FINE
///////////////////// );
ritardo (3000);
}}
Fase 4: RISULTATO:
I valori letti dal sensore vengono inviati correttamente al cloud IOT e il grafico viene creato come prossimità rispetto al tempo. Con questo il funzionamento del sensore viene analizzato e utilizzato secondo le aree di applicazione richieste.
Passaggio 5: tutorial completo:
Questo è il progetto completo per misurare la prossimità di un dispositivo utilizzando il sensore di hall esp32 e la piattaforma cloud thingsai.io. Grazie