Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Dalam tutorial ini saya akan menjelaskan tentang pembacaan kadar air dalam tanah dengan menggunakan esp32 dan kemudian mengirimkan nilainya ke platform cloud thingsio.ai IoT.
Langkah 1: KOMPONEN
Komponen Perangkat Keras:
1. papan pengembangan esp32
2. Sensor tanah
3. Kabel Jumper
Perangkat lunak:
1. Arduino IDE
2. Thingsio.ai
Langkah 2: KONEKSI
Sensor Kelembaban Tanah ----------- Papan esp32
VCC----------------------------------------3V3
GND-------------------------------------- GND
A0----------------------------------------- VP
Langkah 3: KODE:
#termasuk
#termasuk
#termasuk
int hitung=0, i, m, j, k;
int t;
int sensor_pin = A0;
nilai int;
////////////////////////////////////// SEMUA DEKLARASI
untuk CLOUD /////////////////////////////
const char* host = "api.thingsai.io"; // ATAU tuan rumah =
devapi2.thethingscloud.com
const char* post_url = "/devices/deviceData"; // ATAU
/api/v2/thingscloud2/_table/data_ac
const char* time_server =
"baas.thethingscloud.com"; //ini untuk mengonversi stempel waktu
const int httpPort = 80;
const int httpsPort = 443;
const char* server =
"api.thingsai.io"; // URL server
stempel waktu karakter[10];
WiFiMulti WiFiMulti;
// Gunakan kelas WiFiClient untuk membuat koneksi TCP
Klien WiFiClient;
///////////////////////////////////// TIMESTAMP
Fungsi PERHITUNGAN //////////////////////////////////////////////////
int BeriSayaTimestamp()
{
panjang tanpa tanda
batas waktu = mili();
// klien WiFiClient;
ketika
(klien.tersedia() == 0)
{
jika (milis() -
batas waktu > 50000)
{
klien.berhenti();
kembali 0;
}
}
sementara (client.available())
{
Garis senar =
client.readStringUntil('\r'); //indexOf() adalah fungsi untuk mencari smthng, ia mengembalikan -1 jika tidak ditemukan
int pos =
line.indexOf("\"timestamp\""); //cari "\"timestamp\"" dari awal respons yang didapat dan salin semua data setelah itu, itu akan menjadi stempel waktu Anda
jika (pos >=
0)
{
int j = 0;untuk(j=0;j<10;j++)
{timestamp[j] = baris[pos + 12 + j];
}
}
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////
batalkan pengaturan()
{Serial.begin(115200);Serial.println("Membaca Dari Sensor …");
penundaan(2000);
// Kita mulai dengan
menghubungkan ke jaringan WiFi
WiFiMulti.addAP("Nama_Wifi", "Pasword Wifi");
Serial.println();
Serial.println();Serial.print("Tunggu WiFi… ");while(WiFiMulti.run() != WL_CONNECTED) {Serial.print(".");
penundaan (500);
}Serial.println("");Serial.println("WiFi terhubung");
Serial.println( IP
alamat: );Serial.println(WiFi.localIP());
penundaan (500);
}
lingkaran kosong()
{
{
////////////////////////////////////// KIRIM QUERY DAN
MENERIMA TANGGAPAN ///////////////////////
nilai =
analogRead(sensor_pin);
// nilai =
peta(nilai, 550, 0, 0, 100);Serial.print("Suhu: ");Serial.print(nilai);Serial.println("%");penundaan (1000);Serial.print("menghubungkan ke ");Serial.println(host); //didefinisikan terbalik:- host = devapi2.thethingscloud.com atau 139.59.26.117
//////////////////////////////////// SNIPPET KODE TIMESTAMP
/////////////////////////
Serial.println("di dalam dapatkan stempel waktu\n");
jika
(!client.connect(time_server, {
kembali;
//*-*-*-*-*-*-*-*-*-*
}client.println("DAPATKAN /api/timestamp HTTP/1.1"); // Apa yang dilakukan bagian ini, aku tidak mengerticlient.println("Host: baas.thethingscloud.com");client.println("Kontrol Cache: tanpa cache");client.println("Token Tukang Pos: ea3c18c6-09ba-d049-ccf3-369a22a284b8");
klien.println();
BeriSayaTimestamp();
// itu akan memanggil fungsi yang akan mendapatkan respons stempel waktu dari server
Serial.println("stempel waktu diterima");
Serial.println(stempel waktu);Serial.println("di dalam ThingsCloudPost");
String Nilai Pos =
"{"device_id\": 61121695918, \"slave_id\": 2";
Nilai Pasca =
PostValue + ", \"dts\":" +timestamp;
Nilai Pasca =
PostValue +", \"data\":{"MOIST\":" + nilai +"}"+"}";Serial.println(Nilai Pos);
/* membuat instance WiFiClientSecure */
Klien WiFiClientSecure;Serial.println("Hubungkan ke server melalui port 443");
jika
(!klien.koneksi(server, 443)){Serial.println("Koneksi gagal!");
} lain {Serial.println("Tersambung ke server!");
/* buat
meminta */client.println("POST /devices/deviceData HTTP/1.1");client.println("Host: api.thingsai.io");//client.println("Koneksi: tutup");client.println("Tipe Konten: aplikasi/json");
client.println( kontrol cache:
tanpa cache");client.println("Otorisasi: Pembawa eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. IjVhMzBkZDFkN2QwYjNhNGQzODkwYzQ4OSI.kaY6OMj5cYlWNqC2PNTkXs9PKylYlWNqC2PNTkXs9PKylclient.print("Panjang Konten: ");
client.println(PostValue.length());klien.println();klien.println(Nilai Pos);
/////////////////////////////////POSTING data ke
cloud selesai dan sekarang dapatkan respons dari server cloud //////////////////
Serial.print( Menunggu jawaban
);
ketika
(!klien.tersedia()){
penundaan (50);
//Serial.print(".");
}
/* jika datanya
tersedia kemudian terima dan cetak ke Terminal */
ketika
(klien.tersedia()) {
char c = klien.baca();Serial.tulis(c);
}
/* jika
server terputus, hentikan klien */
jika
(!klien.terhubung()) {Serial.println();Serial.println("Server terputus");
klien.berhenti();
}
}
Serial.println( ////////////////////// AKHIRNYA
///////////////////// );
penundaan(3000);
}
}
Langkah 4: KELUARAN:
Output dari kode ditampilkan.
Langkah 5: GRAFIK
Ini adalah representasi grafis dari nilai yang dibaca dari sensor.
Langkah 6:
Berikut adalah video lengkap dari proyek tersebut. Terima kasih.