Spisu treści:

Pomiar temperatury za pomocą platformy Esp32 i Thingsio.ai: 6 kroków
Pomiar temperatury za pomocą platformy Esp32 i Thingsio.ai: 6 kroków

Wideo: Pomiar temperatury za pomocą platformy Esp32 i Thingsio.ai: 6 kroków

Wideo: Pomiar temperatury za pomocą platformy Esp32 i Thingsio.ai: 6 kroków
Wideo: Multisensor na ESP8266 #1, czyli pomiar temperatury dla Domoticza (i nie tylko) 2024, Lipiec
Anonim
Pomiar temperatury za pomocą platformy Esp32 i Thingsio.ai
Pomiar temperatury za pomocą platformy Esp32 i Thingsio.ai

W tym tutorialu wyjaśnię jak mierzyć temperaturę w otoczeniu za pomocą wbudowanego w płytkę rozwojową esp32 czujnika temperatury. esp32 ma wiele wbudowanych czujników, takich jak czujnik halla używany jako czujnik zbliżeniowy, czujnik dotykowy, czujnik temperatury. W tym samouczku omówimy czujnik temperatury.

Krok 1: KOMPONENTY:

SKŁADNIKI
SKŁADNIKI

Sprzęt:

1. płyta rozwojowa esp32

Oprogramowanie:

1. Arduino IDE

2. Thingsio.ai

Krok 2: SCHEMAT BLOKOWY REPREZENTACJI Esp32

SCHEMAT BLOKOWY REPREZENTACJI Esp32
SCHEMAT BLOKOWY REPREZENTACJI Esp32

Krok 3: KODOWANIE:

#włączać

#włączać

#włączać

#włączać

#włączać

#ifdef _cplusplus

zewnętrzne „C” {

#endif

uint8_t temprature_sens_read();

//uint8_t g_phyFuns;

#ifdef _cplusplus

}

#endif

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

int t, t1, t2, t3;

int outputpin= A0;//ds18b20

/////////////////////////////////////// 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* serwer =

"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;

/////////////////////////////////////// ZNAK CZASU

funkcja OBLICZENIA//////////////////////////////////////

int PodajMeTimestamp()

{

długi bez znaku

limit czasu = mili();

// Klient WiFiClient;

podczas

(klient.dostępny() == 0)

{

jeśli (millis() -

limit czasu > 50000)

{

klient.stop();

zwróć 0;

}

}

while (klient.dostępny())

{

Linia ciągu =

klient.odczytajStringUntil('\r'); //indexOf() to funkcja do wyszukiwania smthng, zwraca -1 jeśli nie znaleziono

wew poz =

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);

tzset();

// Zaczynamy od

łączenie z siecią Wi-FiWiFiMulti.addAP("dlink_DWR-113", "madhukar66");

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);

}

uint8_t temp_farenheit;

pływak temp_celsius;

char strftime_buf[64];

czas_t teraz = 0;

struct tm informacje o czasie;

bufor znaków [256];

pusta pętla()

{

// int analogValue =

odczyt analogowy (wyjście);

{

////////////////////////////////////// WYŚLIJ ZAPYTANIE I

ODBIERZ ODPOWIEDŹ///////////////////////

//

t1=(Wartość Analogowa/1024,0) *5000;

//

Serial.print("temp: ");

// Serial.println(t1);

/

/ t2=(t1/10);

//

Serial.print("celc: ");

//

Serial.println(t2);

/

/ t3=((t2 *

9)/5 + 32);

//

Serial.print("fhrn: ");

//

Serial.println(t3); //przerwa;localtime_r(&now, &timeinfo);strftime(strftime_buf, sizeof(strftime_buf), "%c", &timeinfo);sprintf(buf, "rozpoczęcie skanowania %02d:%02d:%02d", timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);

Serial.print

(buf);

temp_farenheit=

temprature_sens_read();

temp_celsjusza = (temp_farenheita - 32) / 1,8;Serial.print("Temp na płycie");Serial.print(temp_farenheit);Serial.print("°F");Serial.print(temp_celsius);Serial.println("°C");

opóźnienie (1000);

teraz++;

Serial.print( łączenie

do );Serial.println(host); //zdefiniowany plus:- host = devapi2.thethingscloud.com lub 139.59.26.117

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

/////////////////////////

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

Jeśli

(!client.connect(serwer_czasu, port

{

powrót;

//*-*-*-*-*-*-*-*-*-*

}client.println("POBIERZ /api/znacznik czasu HTTP/1.1"); //Co robi ta część, nie dostałemclient.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(); // zadzwoni do

funkcja, która otrzyma odpowiedź ze znacznika czasu z serwera

Serial.println("otrzymany znacznik czasu");

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

Wartość początkowa ciągu znaków =

"{"device_id\": 61121695920, \"slave_id\": 2";

PostValue =

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

PostValue =

PostValue +", \"data\":{"TEMP\":" + temp_farenheit +"}"+"}";Serial.println(PostValue);

/* utwórz instancję WiFiClientSecure */

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

Jeśli

(!client.connect(serwer, 443)){Serial.println("Połączenie nie powiodło się!");

} w przeciwnym razie {Serial.println("Połączono z serwerem!");

/* tworzenie

wniosek */client.println("POST /devices/deviceData HTTP/1.1");client.println("Host: api.thingsai.io");//client.println("Połączenie: zamknij");client.println("Typ treści: aplikacja/json");client.println("kontrola pamięci podręcznej: brak pamięci podręcznej");client.println("Upoważnienie: okaziciel eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlW6YlWNQ9tP");client.print("Długość-treści: ");klient.println(WartośćPoczta.długość());klient.println();klient.println(PostValue);

//////////////////////////////////PRZESYŁANIE danych na

chmura jest gotowa i teraz otrzymaj odpowiedź z serwera w chmurze//////////////////

Serial.print( Oczekiwanie

do odpowiedzi”);

podczas

(!klient.dostępny()){

opóźnienie(50);

//Serial.print(".");

}

/* jeśli dane to

dostępne, a następnie odbierz i wydrukuj do Terminala */

podczas

(klient.dostępny()) {

znak c =

klient.odczyt();Serial.zapis(c);

}

/* jeśli

serwer odłączony, zatrzymaj klienta */

Jeśli

(!klient.podłączony()) {Serial.println();Serial.println("Serwer odłączony");

klient.stop();

}

}

Serial.println( ////////////////////// KONIEC

///////////////////// );

opóźnienie(3000);

}

}

Krok 4: WYJŚCIE:

WYJŚCIE
WYJŚCIE

Oto wyjście wartości temperatury odczytanej z czujnika.

Krok 5: WYKRESY:

WYKRESY
WYKRESY
WYKRESY
WYKRESY

Graficzna reprezentacja wartości odczytanych z wbudowanego czujnika temperatury.

Zalecana: