İçindekiler:
- 1. Adım: THINGSIO Platformu Oluşturma ve Oturum Açma
- Adım 2: Yeni Proje Oluşturma
- 3. Adım: Yeni Bir Cihaz Oluşturma
- Adım 4: Cihaz Parametresinin Tanımlanması
- Adım 5: Cihazı Güncelleme
- Adım 6: Kodlama
- Adım 7: Kart ve Com Port Seçimi
- Adım 8: Devre Bağlantıları
- 9. Adım: Derleyin ve Yükleyin
- Adım 10: Seri Monitör
- Adım 11: Okumalar
- Adım 12: Grafik Gösterim
- Adım 13:
2025 Yazar: John Day | [email protected]. Son düzenleme: 2025-01-13 06:58
HEY…..bugün ESP32 kullanarak ışığın yoğunluğunu ölçmeyi ve değerleri THINGSAI IOT bulut platformuna göndermeyi öğreneceğiz.
Bu projeyi yapmak için gerekenler
1. ESP32 Geliştirme Kartı (ESP32 DEVKIT V1 kullandım)
2. LDR sensörü
3. Atlama Telleri
4. THINGSAI IOT PLATFORMUNDA Hesap
1. Adım: THINGSIO Platformu Oluşturma ve Oturum Açma
THINGS AI hesabına giriş yapın. Yeniyseniz, kayıt düğmesine basarak hesaba kaydolun ve tüm kimlik bilgilerini doldurun. Hesabınız oluşturulacak ve o andan itibaren bulut platformunda çalışabilecek ve özel projenizi oluşturabileceksiniz.
Adım 2: Yeni Proje Oluşturma
Hesaba giriş yaptıktan sonra proje oluşturmak için yeni projeye tıklayın ve ardından proje adını verin.
3. Adım: Yeni Bir Cihaz Oluşturma
projeyi oluşturduktan sonra yapmanız gereken yeni bir cihaz oluşturmaktır. Cihaz adını verin ve cihaz kimliğini manuel olarak veya sistem tarafından oluşturulmuş olarak girin.
Adım 4: Cihaz Parametresinin Tanımlanması
Cihaz parametresini verin ve ardından parametre türünü seçin
Adım 5: Cihazı Güncelleme
Parametreyi seçin ve ardından cihazı güncelleyin
Adım 6: Kodlama
Örnek kodlardan esp32 kodunu seçip kopyalayın ve ardından arduino IDE'ye yapıştırın ve ihtiyaca göre gerekli değişiklikleri yapın. Aşağıdaki kodu verdim
#include #include
#Dahil etmek
int sayı=0, i, m, j, k;
int t; int çıktıpin= A0;//ds18b20
int sensör değeri;
//////////////////////////////////// BULUT İÇİN TÜM BİLDİRİMLER ////// /////////////////////
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 char* time_server = "baas.thethingscloud.com"; // bu, zaman damgasını dönüştürmek içindir
const int httpPort = 80;
const int httpsPort = 443;
const char* 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;
/////////////////////////////////// ZAMAN DAMGASI HESAPLAMA fonksiyonu//////// //////////////////////////// int GiveMeTimestamp() { unsigned long timeout = millis(); // WiFiClient istemcisi;
while (client.available() == 0)
{
if (milis() - zaman aşımı > 50000)
{
istemci.durdur(); 0 döndür;
}
}
while (client.available())
{
String 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
eğer (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);
gecikme(10);
// Bir WiFi ağına bağlanarak başlıyoruz
WiFiMulti.addAP("wifi", "pswrd");
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 adresi: "); Serial.println(WiFi.localIP());
gecikme(500);
}
boşluk döngüsü()
{
int analogValue = analogRead(outputpin);
{ /////////////////////////////////// SORUYU GÖNDERİN VE YANIT ALIN/// //////////////////
sensör değeri = analogRead(A0); // analog giriş pini 0'ı oku
sensördeğeri=sensördeğeri/100;
Serial.print(sensör değeri, DEC); // okunan değeri yazdırır
Seri.print(" \n"); // sayılar arasında bir boşluk yazdırır
gecikme(1000); // sonraki okuma için 100ms bekle
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 SINIPPET ////////// //////////////
Serial.println("içeriden zaman damgası alın\n");
if (!client.connect(time_server, { dönüş; //*-*-*-*-*-*-*-*-*-* }
client.println("GET /api/timestamp HTTP/1.1"); //Bu kısım ne yapıyor, client.println("Host: 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\": 61121695844, \"slave_id\": 2";
PostValue = PostValue + ", \"dts\":" +zaman damgası;
PostValue = PostValue +", \"veri\":{"YOĞUNLUK\":" + \sensorvalue +"}"+"}";
Serial.println(PostValue);
/* bir WiFiClientSecure örneği yarat */ WiFiClientSecure istemcisi;
Serial.println("Sunucuya 443 numaralı bağlantı noktasından bağlanın");
if (!client.connect(sunucu, 443))
{
Serial.println("Bağlantı başarısız!");
}
Başka
{ Serial.println("Sunucuya bağlandı!"); /* HTTP isteği oluştur */
client.println( POST /devices/deviceData
client.println("Ana Bilgisayar: api.thingsai.io"); //client.println("Bağlantı: kapat"); cl
ient.println("İçerik Türü: uygulama/json");
client.println("önbellek kontrolü: önbellek yok");
client.println("Yetkilendirme: BearereyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTy6_l9"; client.print("İçerik-Uzunluk: ");
client.println(PostValue.length());
client.println();
client.println(PostValue); ///////////////////////////////Verileri buluta GÖNDERME tamamlandı ve şimdi yanıt formunu bulut alın sunucu////////////////
Serial.print("Yanıt bekleniyor");
while (!client.available()){
gecikme(50); //
Seri.print(".");
} /* veri varsa alın ve Terminal'e yazdırın */
while (client.available())
{
karakter c = client.read();
Seri.write(c);
}
/* sunucunun bağlantısı kesilirse, istemciyi durdurun */
if (!client.connected())
{
Seri.println();
Serial.println("Sunucu bağlantısı kesildi");
istemci.durdur();
}
} Serial.println("//////////////////// SON ////////////////// /");
gecikme(3000); } }
Adım 7: Kart ve Com Port Seçimi
Araçlardan kartı seçin ve ardından com portunu seçin
Adım 8: Devre Bağlantıları
Kodlama yapıldıktan sonra aşağıda belirtildiği gibi aşağıdaki bağlantıları yapın.
BAĞLANTILAR:
esp32'nin GND'si ile LDR sensörünün GND'si
LDR'nin Vcc'sine 3V3 0f esp32
LDR'nin A0'ına esp32'nin VP'si
9. Adım: Derleyin ve Yükleyin
kodu derleyin ve esp32'ye yükleyin ve ardından seri monitörden okumaları okuyun. Bu, bunun gibi bir sonuç gösterirdi
Adım 10: Seri Monitör
Değerler seri monitörde elde edilir ve ardından THINGSAI IOT Cloud platformuna gönderilir.
Adım 11: Okumalar
Bu, esp32 kartından elde edilen değerleri gösterir.
Adım 12: Grafik Gösterim
Bu, elde edilen değerlerin grafiksel gösterimidir. Bu eğitimin sonu. Umarım anlamışsındır. Teşekkürler