İçindekiler:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
Bu derste, esp32 kullanarak topraktaki nem içeriğinin okunmasını ve ardından değerlerithingio.ai IoT bulut platformuna göndermeyi anlatacağım.
1. Adım: BİLEŞENLER
Donanım bileşenleri:
1. esp32 geliştirme kurulu
2. Toprak sensörü
3. Jumper Telleri
Yazılım:
1. Arduino IDE'si
2. Thingsio.ai
2. Adım: BAĞLANTILAR
Toprak Nemi Sensörü-------------------------------- esp32 Kartı
VCC------------------------------------------3V3
GND--------------------------------------GND
A0------------------------------------------- VP
Adım 3: KODLAMA:
#Dahil etmek
#Dahil etmek
#Dahil etmek
int sayı=0, i, m, j, k;
int t;
int sensor_pin = A0;
int değeri;
/////////////////////////////////// TÜM BEYANNAMELER
BULUT için ///////////////////////////
const char* ana bilgisayar = "api.thingsai.io"; // VEYA ana bilgisayar =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // VEYA
/api/v2/thingscloud2/_table/data_ac
const karakter* zaman_sunucusu =
"baas.thethingscloud.com"; // bu, zaman damgasını dönüştürmek içindir
const int httpPort = 80;
const int httpsPort = 443;
const karakter* sunucu =
"api.thingsai.io"; // Sunucu URL'si
karakter zaman damgası[10];
WiFiÇoklu WiFiÇoklu;
// TCP bağlantıları oluşturmak için WiFiClient sınıfını kullanın
WiFiClient istemcisi;
//////////////////////////////////
HESAPLAMA işlevi////////////////////////////////////
int GiveMeTimestamp()
{
imzasız uzun
zaman aşımı = millis();
// WiFiClient istemcisi;
süre
(client.available() == 0)
{
if (milis() -
zaman aşımı > 50000)
{
istemci.durdur();
0 döndür;
}
}
while (client.available())
{
dize satırı =
client.readStringUntil('\r'); //indexOf() smthng aramak için bir işlevdir, bulunamazsa -1 döndürür
int konum =
line.indexOf("\"zaman damgası\""); // yanıtın başlangıcından itibaren "\"timestamp\"" ifadesini arayın ve bundan sonra tüm verileri kopyalayın, bu sizin zaman damganız olacak
if (konum >=
0)
{
int j = 0;for(j=0;j<10;j++)
{zaman damgası[j] = satır[konum + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
geçersiz kurulum()
{Seri.başla(115200);Serial.println("Sensörden Okuma…");
gecikme(2000);
// ile başlıyoruz
bir WiFi ağına bağlanma
WiFiMulti.addAP("Wifi_name", "Kablosuz ağ parolası");
Seri.println();
Seri.println();Serial.print("WiFi için bekleyin… ");while(WiFiMulti.run() != WL_CONNECTED) {Seri.print(".");
gecikme(500);
}Seri.println("");Serial.println("WiFi bağlandı");
Serial.println( IP
adres: );Serial.println(WiFi.localIP());
gecikme(500);
}
boşluk döngüsü()
{
{
/////////////////////////////////// SORUYU GÖNDERİN VE
YANIT ALIN/////////////////////
değer=
analogRead(sensor_pin);
// değer =
harita(değer, 550, 0, 0, 100);Serial.print("Mositure: ");Serial.print(değer);Serial.println("%");gecikme(1000);Serial.print("bağlanıyor");Serial.println(ana bilgisayar); //yukarı tanımlı:- ana bilgisayar = devapi2.thethingscloud.com veya 139.59.26.117
///////////////////////////////// ZAMAN DAYANIMI KODU SİPETİ
/////////////////////////
Serial.println("içeriden zaman damgası alın\n");
Eğer
(!client.connect(time_server, {
dönüş;
//*-*-*-*-*-*-*-*-*-*
}client.println("GET /api/timestamp HTTP/1.1"); //Bu kısım ne yapıyor, anlamadımclient.println("Ana Bilgisayar: baas.thethingscloud.com");client.println("Önbellek Kontrolü: önbellek yok");client.println("Postacı Simgesi: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
client.println();
GiveMeTimestamp();
// sunucudan zaman damgası yanıtını alacak işlevi çağıracak
Serial.println("zaman damgası alındı");
Serial.println(zaman damgası);Serial.println("ThinsCloudPost'un içinde");
String PostValue =
"{"device_id\": 61121695918, \"slave_id\": 2";
PostValue =
PostValue + ", \"dts\":" +zaman damgası;
PostValue =
PostValue +", \"data\":{"MOIST\":" + değer +"}"+"}";Serial.println(PostValue);
/* bir WiFiClientSecure örneği yarat */
WiFiClientSecure istemcisi;Serial.println("Sunucuya 443 numaralı bağlantı noktasından bağlanın");
Eğer
(!client.connect(sunucu, 443)){Serial.println("Bağlantı başarısız!");
} Başka {Serial.println("Sunucuya bağlanıldı!");
/* HTTP oluştur
rica etmek */client.println("POST /devices/deviceData HTTP/1.1");client.println("Ana Bilgisayar: api.thingsai.io");//client.println("Bağlantı: kapat");client.println("İçerik Türü: uygulama/json");
client.println( önbellek kontrolü:
önbellek yok");client.println("Yetkilendirme: Taşıyıcı eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PyXs);client.print("İçerik-Uzunluk: ");
client.println(PostValue.length());client.println();client.println(PostValue);
///////////////////////////////verileri
bulut tamamlandı ve şimdi yanıt formunu alın bulut sunucusu////////////////
Serial.print( Yanıt bekleniyor
);
süre
(!client.available()){
gecikme(50);
//Seri.print(".");
}
/* veri ise
kullanılabilir, sonra alın ve Terminal'e yazdırın */
süre
(client.available()) {
karakter c = client.read();Seri.write(c);
}
/* Eğer
sunucu bağlantısı kesildi, istemciyi durdurun */
Eğer
(!client.connected()) {Seri.println();Serial.println("Sunucu bağlantısı kesildi");
istemci.durdur();
}
}
Serial.println( //////////////////// SON
///////////////////// );
gecikme(3000);
}
}
Adım 4: ÇIKTI:
Kodun çıktısı gösterilir.
Adım 5: GRAFİK
Sensörden okunan değerlerin grafiksel gösterimidir.
6. Adım:
İşte projenin tam videosu. Teşekkürler.