Inhoudsopgave:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
In deze tutorial ga ik uitleggen over het meten van de nabijheid van een apparaat en het publiceren van de waarden in het Thingsai, io cloudplatform met behulp van hall-sensor en esp32-ontwikkelbord.
Een Hall-effectsensor is een apparaat dat wordt gebruikt om de grootte van een magnetisch veld te meten. De uitgangsspanning is recht evenredig met de magnetische veldsterkte erdoorheen. Hall-effectsensoren worden gebruikt voor naderingsdetectie, positionering, snelheidsdetectie en stroomdetectietoepassingen.
Stap 1: COMPONENTEN
Hardware onderdelen:
1. Zaalsensor
2. esp32-ontwikkelbord
3. Doorverbindingsdraden
Softwarecomponenten:
1. Arduino-IDE
2. DingenIO. AI
Stap 2: AANSLUITINGEN:
Hall-sensor ----------------------esp32
Uit------------------------------vp
Gnd-----------------------------Gnd
Vcc------------------------------3V3
Stap 3: CODEREN:
#erbij betrekken
#erbij betrekken
#erbij betrekken
int telling=0, i, m, j, k;
int meting;
int outputpin = A0;//ds18b20
///////////////////////////////////////// ALLE VERKLARINGEN
voor CLOUD //////////////////////////////
const char* host = "api.thingsai.io"; // OF host =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // OF
/api/v2/thingscloud2/_table/data_ac
const char* time_server =
"baas.thethingscloud.com"; //dit is om de tijdstempel te converteren
const int httpPort = 80;
const int httpsPort = 443;
const char* server =
"api.thingsai.io"; // Server-URL
char tijdstempel [10];
WiFiMulti WiFiMulti;
// Gebruik de WiFiClient-klasse om TCP-verbindingen te maken
WiFiClient-client;
//////////////////////////////////////// TIJDSSTEMPEL
BEREKENING functie///////////////////////////////////////
int GiveMeTimestamp()
{
niet ondertekend lang
time-out = millis();
// WiFiClient-client;
terwijl
(klant.beschikbaar() == 0)
{
als (millis() -
time-out > 50000)
{
klant.stop();
retourneer 0;
}
}
terwijl (client.available())
{
String lijn =
client.readStringUntil('\r'); //indexOf() is een functie om te zoeken naar smthng, het retourneert -1 indien niet gevonden
int pos =
line.indexOf("\"tijdstempel\""); // zoek naar "\"timestamp\"" vanaf het begin van het antwoord kreeg en kopieer daarna alle gegevens, dit is uw tijdstempel
als (pos >=
0)
{
intj = 0;voor(j=0;j<10;j++)
{tijdstempel [j] = regel [pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
ongeldige setup()
{Serieel.begin(115200);
vertraging(10);
// We beginnen met
verbinding maken met een wifi-netwerk
WiFiMulti.addAP("wifi_name", "wifi wachtwoord");
Serieel.println();
Serieel.println();Serial.print("Wacht op wifi… ");while(WiFiMulti.run() != WL_CONNECTED) {Serieel.print(".");
vertraging (500);
}Serieel.println("");Serial.println("WiFi verbonden");Serial.println("IP-adres: ");
Serial.println(WiFi.localIP());
vertraging (500);
}
lege lus()
{
int analoge waarde =
analoog lezen (uitvoerpin);
{
/////////////////////////////////////// VERZENDEN DE QUERY EN
ONTVANG HET ANTWOORD///////////////////////
int meting
= 0;
meting =
hallRead();Serial.print("Zaalsensormeting: ");Serial.println (meting);
vertraging (1000);Serial.print("verbinden met ");Serieel.println(host); // gedefinieerde bovenkant: - host = devapi2.thethingscloud.com of 139.59.26.117
///////////////////////////////////// TIJDSTEMPEL CODESNIPPET
/////////////////////////
Serial.println("inside get timestamp\n");
indien
(!client.connect(time_server, {
opbrengst;
//*-*-*-*-*-*-*-*-*-*
}client.println ("GET /api/timestamp HTTP/1.1"); // Wat doet dit deel, ik heb het niet begrepenclient.println("Host: baas.thethingscloud.com");client.println("Cache-Control: no-cache");client.println ("Postbode-token: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
klant.println();
GeefMeTijdstempel(); // het zal de functie aanroepen
die de tijdstempelreactie van de server krijgt
Serial.println("tijdstempel ontvangen");
Serial.println (tijdstempel);Serial.println ("inside ThingsCloudPost");
Tekenreeks PostWaarde =
"{"device_id\": 61121696007, \"slave_id\": 2";
Postwaarde =
PostValue + ", \"dts\":" +tijdstempel;
Postwaarde =
PostValue +", \"data\":{"proximity\":" + meting +"}"+"}";Serial.println(PostValue);
/* maak een instantie van WiFiClientSecure */
WiFiClientSecure-client;Serial.println("Verbind met server via poort 443");
indien
(!client.connect(server, 443)){Serial.println("Verbinding mislukt!");
} anders {Serial.println("Verbonden met server!");
/* maak
verzoek */
client.println( POST
/devices/deviceData HTTP/1.1");client.println("Host: api.thingsai.io");//client.println ("Verbinding: sluiten");client.println ("Inhoudstype: applicatie/json");client.println("cache-control: no-cache");
client.println( Autorisatie:
Drager eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKy6Y7jfdl");client.print ("Inhoudslengte: ");client.println(PostValue.length());
klant.println();cliënt.println(PostValue);
//////////////////////////////////POST de gegevens op de
cloud is klaar en ontvang nu het antwoordformulier cloud server//////////////////
Serial.print( Wachten op antwoord
);
terwijl
(!client.beschikbaar()){
vertraging (50);
//Serieel.print(".");
}
/* als gegevens zijn
beschikbaar, ontvang en print naar Terminal */
terwijl
(klant.beschikbaar()) {
char c =
klant.lezen();Serieel.schrijven(c);
}
/* als de server de verbinding heeft verbroken, stop de client */
indien
(!client.verbonden()) {Serieel.println();Serial.println ("Server verbroken");klant.stop();
}
}
Serial.println( ////////////////////// HET EINDE
///////////////////// );
vertraging (3000);
}}
Stap 4: RESULTAAT:
De waarden die van de sensor worden gelezen, worden met succes naar de IOT-cloud verzonden en de grafiek wordt gemaakt als nabijheid versus tijd. Hiermee wordt de werking van de sensor geanalyseerd en gebruikt volgens de vereiste toepassingsgebieden.
Stap 5: Voltooi zelfstudie:
Dit is het complete project voor het meten van de nabijheid van een apparaat met behulp van hall-sensor esp32 en thingsai.io cloudplatform. Bedankt