Inhoudsopgave:
- Stap 1: Aanmaken en inloggen op het THINGSIO-platform
- Stap 2: Nieuw project maken
- Stap 3: Een nieuw apparaat maken
- Stap 4: Apparaatparameter definiëren
- Stap 5: Het apparaat bijwerken
- Stap 6: Coderen
- Stap 7: Selectie van bord en Com-poort
- Stap 8: Circuitverbindingen
- Stap 9: compileren en uploaden
- Stap 10: Seriële monitor
- Stap 11: Lezingen
- Stap 12: Grafische weergave
- Stap 13:
2025 Auteur: John Day | [email protected]. Laatst gewijzigd: 2025-01-13 06:57
HEY … vandaag gaan we leren over het meten van de intensiteit van licht en het plaatsen van de waarden in het THINGSAI IOT-cloudplatform met behulp van ESP32.
De vereisten om dit project te doen zijn:
1. ESP32 Development Board (ik heb ESP32 DEVKIT V1) gebruikt
2. LDR-sensor
3. Doorverbindingsdraden
4. Account in THINGSAI IOT-PLATFORM
Stap 1: Aanmaken en inloggen op het THINGSIO-platform
Log in op het THINGS AI-account. Als u nieuw bent, registreer u dan op het account door op de registerknop te drukken en vul alle inloggegevens in. Uw account wordt aangemaakt en vanaf dat moment kunt u op het cloudplatform werken en uw aangepaste project maken
Stap 2: Nieuw project maken
Nadat u bent ingelogd op het account, klikt u op het nieuwe project en geeft u de projectnaam op om een project aan te maken.
Stap 3: Een nieuw apparaat maken
na het maken van het project is het volgende dat u hoeft te doen een nieuw apparaat maken. Geef de apparaatnaam op en voer de apparaat-ID handmatig of door het systeem gegenereerd in.
Stap 4: Apparaatparameter definiëren
Geef de apparaatparameter op en selecteer vervolgens het type parameter
Stap 5: Het apparaat bijwerken
Selecteer de parameter en update vervolgens het apparaat
Stap 6: Coderen
Selecteer uit de voorbeeldcodes de code van esp32, kopieer deze en plak deze in de arduino IDE en breng de nodige wijzigingen aan volgens de vereisten. Ik heb onderstaande code gegeven
#include #include
#erbij betrekken
int telling=0, i, m, j, k;
int t; int outputpin = A0;//ds18b20
int sensorwaarde;
//////////////////////////////////////// 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;
/////////////////////////////////////// TIMESTAMP BEREKENING functie//////// /////////////////////////////// int GiveMeTimestamp() { unsigned long timeout = millis(); // WiFiClient-client;
while (client.available() == 0)
{
if (millis() - time-out > 50000)
{
klant.stop(); retourneer 0;
}
}
terwijl (client.available())
{
String line = 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 door verbinding te maken met een wifi-netwerk
WiFiMulti.addAP("wifi", "pswrd");
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 analogValue = analogRead (outputpin);
{ /////////////////////////////////////// STUUR DE QUERY EN ONTVANG DE ANTWOORD/// ////////////////////
sensorwaarde = analoog lezen (A0); // lees analoge ingangspin 0
sensorwaarde=sensorwaarde/100;
Serial.print (sensorwaarde, DEC); // drukt de gelezen waarde af
Serieel.print(" \n"); // drukt een spatie af tussen de cijfers
vertraging (1000); // wacht 100 ms op de volgende meting
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");
if (!client.connect(time_server, { opbrengst; //*-*-*-*-*-*-*-*-*-* }
client.println ("GET /api/timestamp HTTP/1.1"); //Wat doet dit deel, ik heb client.println niet gekregen ("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 het tijdstempelantwoord van de server krijgt Serial.println("timestamp receieved");
Serial.println (tijdstempel);
Serial.println ("inside ThingsCloudPost");
String PostValue = "{"device_id\": 61121695844, \"slave_id\": 2";
PostValue = PostValue + ", \"dts\":" +tijdstempel;
PostValue = PostValue +", \"data\":{"INTENSITY\":" + \sensorvalue +"}"+"}";
Serial.println(PostValue);
/* maak een instantie van WiFiClientSecure */ WiFiClientSecure-client;
Serial.println("Verbind met server via poort 443");
if (!client.connect(server, 443))
{
Serial.println("Verbinding mislukt!");
}
anders
{ Serial.println("Verbonden met server!"); /* HTTP-verzoek maken */
client.println( POST /devices/deviceData
client.println("Host: api.thingsai.io"); //client.println ("Verbinding: sluiten"); cl
ient.println ("Inhoudstype: applicatie/json");
client.println("cache-control: no-cache");
client.println("Autorisatie: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTk5"); client.print ("Inhoudslengte: ");
client.println(PostValue.length());
klant.println();
cliënt.println(PostValue); //////////////////////////////////Het plaatsen van de gegevens in de cloud is voltooid en ontvang nu het reactieformulier cloud server//////////////////
Serial.print("Wachten op antwoord ");
while (!client.available()){
vertraging (50); //
Serieel.print(".");
} /* als er gegevens beschikbaar zijn, ontvangen en afdrukken naar Terminal */
terwijl (client.available())
{
char c = cliënt.lezen();
Serieel.schrijven(c);
}
/* als de server de verbinding heeft verbroken, stop de client */
if (!client.connected())
{
Serieel.println();
Serial.println ("Server verbroken");
klant.stop();
}
} Serial.println("////////////////////// HET EINDE //////////////////// /");
vertraging (3000); } }
Stap 7: Selectie van bord en Com-poort
Selecteer in tools het bord en selecteer vervolgens de com-poort
Stap 8: Circuitverbindingen
De codering is voltooid en maak vervolgens de volgende verbindingen zoals hieronder vermeld:
AANSLUITINGEN:
GND van esp32 naar GND van de LDR-sensor
3V3 0f esp32 naar de Vcc van de LDR
VP van esp32 naar de A0 van de LDR
Stap 9: compileren en uploaden
compileer en upload de code naar de esp32 en lees vervolgens de metingen van de seriële monitor. Dat zou een resultaat als dit laten zien
Stap 10: Seriële monitor
De waarden worden verkregen op de seriële monitor en vervolgens verzonden naar het THINGSAI IOT Cloud-platform.
Stap 11: Lezingen
Dit toont de waarden die zijn verkregen van het esp32-bord.
Stap 12: Grafische weergave
Dit is de grafische weergave van de verkregen waarden. Dat is het einde van de tutorial. Ik hoop dat je het hebt begrepen. Bedankt