Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
W tym samouczku wyjaśnię, jak mierzyć bliskość urządzenia i publikować wartości na platformie chmurowej Thingsai, io za pomocą czujnika Halla i płytki rozwojowej esp32.
Czujnik Halla to urządzenie, które służy do pomiaru wielkości pola magnetycznego. Jego napięcie wyjściowe jest wprost proporcjonalne do natężenia pola magnetycznego przez niego. Czujniki z efektem Halla są używane do wykrywania zbliżeniowego, pozycjonowania, wykrywania prędkości i wykrywania prądu.
Krok 1: KOMPONENTY
Komponenty sprzętowe:
1. Czujnik Halla
2. Płytka rozwojowa esp32
3. Przewody połączeniowe
Składniki oprogramowania:
1. Środowisko Arduino
2. RzeczyIO. AI
Krok 2: POŁĄCZENIA:
Czujnik Halla ----------------------- esp32
Aout------------------------------- vp
Gnd ------------------------------ Gnd
Vcc -------------------------------3V3
Krok 3: KODOWANIE:
#włączać
#włączać
#włączać
liczba int=0, i, m, j, k;
pomiar wewnętrzny;
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);
// Zaczynamy od
łączenie z siecią Wi-Fi
WiFiMulti.addAP("nazwa_wifi", "hasło do wifi");
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()
{
intWartośćanalogowa =
odczyt analogowy (wyjście);
{
////////////////////////////////////// WYŚLIJ ZAPYTANIE I
ODBIERZ ODPOWIEDŹ///////////////////////
pomiar wewnętrzny
= 0;
pomiar =
hallRead();Serial.print("Pomiar czujnika Halla: ");Serial.println(pomiar);
opóźnienie (1000);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");
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(); //wywoła funkcję
który 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\": 61121696007, \"slave_id\": 2";
PostValue =
PostValue +”, \"dts\":" +znacznik czasu;
PostValue =
PostValue +", \"data\":{"proximity\":" + pomiar +"}"+"}";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( Autoryzacja:
Nośnik eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKyVl5_m7");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 na odpowiedź
);
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 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 4: WYNIK:
Odczytane z czujnika wartości są pomyślnie przesyłane do chmury IOT i tworzony jest wykres jako bliskość w funkcji czasu. Dzięki temu działanie czujnika jest analizowane i wykorzystywane zgodnie z wymaganymi obszarami zastosowania.
Krok 5: Ukończ samouczek:
Jest to kompletny projekt pomiaru bliskości urządzenia za pomocą czujnika Halla esp32 i platformy chmurowej thingsai.io. Dziękuję Ci