Spisu treści:

LDR przy użyciu Thingsai Cloud: 13 kroków
LDR przy użyciu Thingsai Cloud: 13 kroków

Wideo: LDR przy użyciu Thingsai Cloud: 13 kroków

Wideo: LDR przy użyciu Thingsai Cloud: 13 kroków
Wideo: STRANGER THINGS 4 [CAŁY SEZON] w 61 minut | Szyderczy Skrót 2024, Listopad
Anonim
LDR przy użyciu Thingsai Cloud
LDR przy użyciu Thingsai Cloud

HEJ…..dzisiaj dowiemy się, jak mierzyć natężenie światła i przesyłać wartości do platformy chmurowej THINGSAI IOT za pomocą ESP32.

Wymagania do wykonania tego projektu to

1. Płytka rozwojowa ESP32 (użyłem ESP32 DEVKIT V1)

2. Czujnik LDR

3. Przewody połączeniowe

4. Konto w THINGSAI IOT PLATFORM

Krok 1: Tworzenie i logowanie do platformy THINGSIO

Tworzenie i logowanie do platformy THINGSIO
Tworzenie i logowanie do platformy THINGSIO

Zaloguj się na konto THINGS AI. Jeśli jesteś nowy, zarejestruj się na konto, naciskając przycisk rejestracji i wypełnij wszystkie dane uwierzytelniające. Twoje konto zostanie utworzone i od tego momentu będziesz mógł pracować na platformie w chmurze i tworzyć własny projekt

Krok 2: Tworzenie nowego projektu

Tworzenie nowego projektu
Tworzenie nowego projektu

Po zalogowaniu się na konto, aby stworzyć projekt wystarczy kliknąć na nowy projekt a następnie podać nazwę projektu.

Krok 3: Tworzenie nowego urządzenia

Tworzenie nowego urządzenia
Tworzenie nowego urządzenia

po utworzeniu projektu następną rzeczą, którą musisz zrobić, to utworzyć nowe urządzenie. Podaj nazwę urządzenia i wprowadź identyfikator urządzenia ręcznie lub wygenerowany przez system.

Krok 4: Definiowanie parametrów urządzenia

Definiowanie parametrów urządzenia
Definiowanie parametrów urządzenia

Podaj parametr urządzenia, a następnie wybierz typ parametru

Krok 5: Aktualizacja urządzenia

Aktualizacja urządzenia
Aktualizacja urządzenia

Wybierz parametr, a następnie zaktualizuj urządzenie

Krok 6: Kodowanie

Kodowanie
Kodowanie

Z przykładowych kodów wybierz kod esp32 skopiuj go, a następnie wklej do arduino IDE i wprowadź niezbędne zmiany zgodnie z wymaganiami. Kod podałem poniżej

#włącz #włącz

#włączać

liczba int=0, i, m, j, k;

int t; int outputpin= A0;//ds18b20

int sensorvalue;

/////////////////////////////////////// WSZYSTKIE OŚWIADCZENIA dla CHMURY ////// ////////////////////////

const char* host = "api.thingsai.io"; // LUB

host = devapi2.thethingscloud.com

const char* post_url = "/devices/deviceData"; // LUB /api/v2/thingscloud2/_table/data_ac

const char* serwer_czasu = "baas.thethingscloud.com"; //to jest konwersja znacznika czasu

const int httpPort = 80;

const int httpsPort = 443;

const char* server = "api.thingsai.io"; // Serwer URL

znacznik czasu znaków[10];

Wi-FiWiele Wi-FiWiele;

// Użyj klasy WiFiClient do tworzenia połączeń TCP

Klient WiFiClient;

/////////////////////////////////////// funkcja OBLICZANIA ZNACZNIKA CZASU//////// /////////////////////////////// int GiveMeTimestamp() { unsigned long timeout = millis(); // Klient WiFiClient;

while (client.available() == 0)

{

if (millis() - limit czasu > 50000)

{

klient.stop(); zwróć 0;

}

}

while (klient.dostępny())

{

Linia ciągu = client.readStringUntil('\r'); //indexOf() to funkcja do wyszukiwania smthng, zwraca -1 jeśli nie znaleziono

int pos = line.indexOf("\"znacznik czasu\""); //wyszukaj "\"timestamp\"" od początku otrzymanej odpowiedzi i skopiuj wszystkie dane po tym, będzie to Twoja sygnatura czasowa

jeśli (poz >= 0)

{

intj = 0;

dla(j=0;j<10;j++)

{

znacznik czasu[j] = linia[poz + 12 + j];

}

}

}

} ////////////////////////////////////////////////////////////////////////////////////////////////////////

pusta konfiguracja()

{

Serial.początek(115200);

opóźnienie(10);

// Zaczynamy od połączenia z siecią Wi-Fi

WiFiMulti.addAP("wifi", "pswrd");

Serial.println();

Serial.println();

Serial.print("Czekaj na Wi-Fi… ");

while(WiFiMulti.run() != WL_CONNECTED)

{

Serial.print(".");

opóźnienie (500);

}

Serial.println("");

Serial.println("Połączenie WiFi");

Serial.println("adres IP: "); Serial.println(WiFi.localIP());

opóźnienie (500);

}

pusta pętla()

{

int analogValue = analogRead(outputpin);

{ ////////////////////////////////////// WYŚLIJ ZAPYTANIE I ODBIERZ ODPOWIEDŹ/// ////////////////////

wartość czujnika = odczyt analogowy (A0); // odczytaj pin wejścia analogowego 0

wartośćczujnika=wartośćczujnika/100;

Serial.print(wartość czujnika, DEC); // wyświetla odczytaną wartość

Serial.print(" \n"); // wyświetla spację między liczbami

opóźnienie (1000); // czekaj 100ms na następny odczyt

Serial.print("łączenie z"); Serial.println(host); //zdefiniowany plus:- host = devapi2.thethingscloud.com lub 139.59.26.117

//////////////////////////////////// ZNACZNIK KODU ////////// ///////////////

Serial.println("wewnątrz pobierz znacznik czasu\n");

if (!client.connect(serwer_czasu, port

{ powrót; //*-*-*-*-*-*-*-*-*-* }

client.println("POBIERZ /api/znacznik czasu HTTP/1.1"); //Co robi ta część, nie dostałem client.println("Host: baas.thethingscloud.com");

client.println("Kontrola pamięci podręcznej: brak pamięci podręcznej");

client.println("Token listonosza: ea3c18c6-09ba-d049-ccf3-369a22a284b8");

klient.println();

GiveMeTimestamp(); // wywoła funkcję, która otrzyma odpowiedź ze znacznikiem czasu z serwera Serial.println("otrzymano znacznik czasu");

Serial.println(sygnatura czasowa);

Serial.println("wewnątrz ThingsCloudPost");

String PostValue = "{"device_id\": 61121695844, \"slave_id\": 2";

PostValue = PostValue +”, \"dts\":" + znacznik czasu;

PostValue = PostValue +", \"data\":{"INTENSITY\":" + \sensorvalue +"}"+"}";

Serial.println(PostValue);

/* utwórz instancję WiFiClientSecure */ WiFiClientSecure klient;

Serial.println("Połącz z serwerem przez port 443");

if (!client.connect(serwer, 443))

{

Serial.println("Połączenie nie powiodło się!");

}

w przeciwnym razie

{ Serial.println("Połączono z serwerem!"); /* utwórz żądanie HTTP */

client.println( POST /devices/deviceData

client.println("Host: api.thingsai.io"); //client.println("Połączenie: zamknij"); cl

ient.println("Typ treści: aplikacja/json");

client.println("kontrola pamięci podręcznej: brak pamięci podręcznej");

client.println("Upoważnienie: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWk6_Ag9tvfVpKylWkNQs9tV"); client.print("Długość-treści: ");

klient.println(WartośćPoczta.długość());

klient.println();

klient.println(PostValue); //////////////////////////////////PRZESYŁANIE danych w chmurze jest zakończone i teraz otrzymaj chmurę formularza odpowiedzi serwer//////////////////

Serial.print("Oczekiwanie na odpowiedź");

while (!client.available()){

opóźnienie(50); //

Serial.print(".");

} /* jeśli dane są dostępne, odbierz i wydrukuj do terminala */

while (klient.dostępny())

{

char c = klient.odczyt();

Serial.zapis(c);

}

/* jeśli serwer się rozłączył, zatrzymaj klienta */

jeśli (!klient.podłączony())

{

Serial.println();

Serial.println("Serwer odłączony");

klient.stop();

}

} Serial.println("////////////////////// KONIEC /////////////////// /");

opóźnienie(3000); } }

Krok 7: Wybór płyty i portu Com

Wybór zarządu i portu komunikacyjnego
Wybór zarządu i portu komunikacyjnego

Z narzędzi wybierz płytę, a następnie wybierz port com

Krok 8: Połączenia obwodu

Połączenia obwodu
Połączenia obwodu
Połączenia obwodu
Połączenia obwodu
Połączenia obwodu
Połączenia obwodu

Kodowanie odbywa się, a następnie wykonaj następujące połączenia, jak wspomniano poniżej

ZNAJOMOŚCI:

GND esp32 do GND czujnika LDR

3V3 0f esp32 do Vcc LDR

wiceprezes esp32 do A0 LDR

Krok 9: Skompiluj i prześlij

Skompiluj i prześlij
Skompiluj i prześlij

skompilować i wgrać kod do esp32 a następnie odczytać odczyty z monitora szeregowego. To pokazałoby wynik podobny do tego

Krok 10: Monitor szeregowy

Monitor szeregowy
Monitor szeregowy

Wartości są pozyskiwane na monitorze szeregowym, a następnie wysyłane do platformy THINGSAI IOT Cloud.

Krok 11: Odczyty

Odczyty
Odczyty

To pokazuje wartości uzyskane z płyty esp32.

Krok 12: Reprezentacja graficzna

Reprezentacja graficzna
Reprezentacja graficzna

Jest to graficzna reprezentacja uzyskanych wartości. To koniec samouczka. Mam nadzieję, że zrozumiałeś. Dziękuję

Zalecana: