Pendahuluan
Dokumentasi ini akan menjelaskan kepada anda bagaimana ESP32 dapat terhubung dengan platform Antares, membaca data dari beberapa sensor, dan mengambil dan mengirim data yang telah dibaca akan pada platform Antares.
Hardware
Untuk mengukur kondisi suhu dan intensitas cahaya, dibutuhkan beberapa perangkat elektronik. Berikut adalah beberapa perangkat yang akan digunakan pada contoh ini:
- ESP32 Perangkat untuk membaca data hasil pengukuran sensor. Board yang akan digunakan adalah WeMos Lolin32 ESP32
- DHT11 Sensor untuk mengukur suhu dan kelembapan
- LDR Sensor untuk mengukur intensitas cahaya
Software
Berikut adalah beberapa software yang dibutuhkan untuk menjalankan contoh-contoh pada dokumentasi ini:
- Arduino IDE Software utama yang akan digunakan untuk memprogram ESP32.
- Arduino ESP32 Arduino IDE tidak mendukung board-board ESP32 secara bawaannya, maka dari itu perlu dilakukan instalasi Arduino ESP32 melalui Board Manager Arduino IDE, Silahkan ikuti Tutorial Instalasi board ESP32.
- Library Antares ESP32 Komunikasi antara ESP32 dengan database Antares dapat menggunakan HTTP.
- Library DHT11 Library DHT11 dapat dipasang pada Arduino IDE melalui Library Manager atau halaman GitHub.
Download Arduino IDE
Download Arduino ESP32
Instalasi library HTTP dapat dilakukan melalui Library Manager Arduino IDE, atau dengan mendownloadnya pada halaman GitHub. Silahkan ikuti Tutorial Instalasi Library Antares.
Download Library Antares ESP32 HTTP Download Library Antares ESP32 MQTT
Download Library DHT Adafruit
Program Dasar Arduino ESP32
Segmen berikut berisi contoh-contoh program yang dapat anda coba untuk menjalankan beberapa fungsi pada ESP32.Blink
Setiap board ESP32 mempunyai LED di dalamnya yang bisa anda kontrol dengan mengakses dan memberi logika HIGH atau LOW pada pin GPIO2 di board ESP32. Perlu diingat bahwa LED di ESP32 adalah Active Low, yang berarti jika diberi logika 1 (HIGH), LED akan mati. Sebaliknya, jika diberi logika 0 (LOW), LED akan menyala.#define led 2 // Buat variabel "led" sebagai pin GPIO2
void setup() {
pinMode(led, OUTPUT); // Atur pin "led" sebagai OUTPUT
}
void loop() {
digitalWrite(led, HIGH); // Matikan LED
delay(1000); // Jeda 1 detik
digitalWrite(led, LOW); // Nyalakan LED
delay(1000); // Jeda 1 detik
}
GPIO
GPIO pada board ESP32 biasanya ditandai dengan angka 0 sampai dengan 39. Setiap pin memiliki fitur yang berbeda-beda sesuai kegunaannya masing-masing. Silahkan ikuti rangkaian sambungan ESP32 dengan LED sesuai gambar berikut: (NB. resistor bernilai sekitar 220 ohm)

#define led1 25 // Buat variabel "led1" sebagai pin 25
#define led2 26 // Buat variabel "led2" sebagai pin 26
void setup() {
pinMode(led1, OUTPUT); // Atur pin "led1" sebagai OUTPUT
pinMode(led2, OUTPUT); // Atur pin "led2" sebagai OUTPUT
}
void loop() {
digitalWrite(led1, HIGH); // Nyalakan LED 1
digitalWrite(led2, LOW); // Matikan LED 2
delay(1000); // Jeda 1 detik
digitalWrite(led1, LOW); // Matikan LED 1
digitalWrite(led2, HIGH); // Nyalakan LED 2
delay(1000); // Jeda 1 detik
}
Serial Monitor
Serial monitor berfungsi untuk mengirim data dari ESP32 ke port serial komputer untuk menampilkan data di komputer.void setup() {
Serial.begin(115200); // Buka komunikasi serial pada baudrate 115200
}
int angka = 0; // Buat variabel angka dengan nilai 0
void loop() {
Serial.print("Angka: "); // Kirim angka ke serial monitor
Serial.println(angka);
angka++; // Tambah variabel angka +1
delay(1000); // Jeda 1 detik
}
Sensor Cahaya
Silahkan gunakan rangkaian dengan LDR seperti berikut:

void setup() {
Serial.begin(115200); // Buka komunikasi serial pada baudrate 115200
}
void loop() {
int sensorCahaya = analogRead(A0); // Baca nilai sensor
Serial.println(sensorCahaya); // Kirim nilai sensor ke serial monitor
delay(1000); // Jeda 1 detik
}
Sensor Temperatur
Pada sensor temperatur DHT11, diperlukan library DHT11. Silahkan gunakan rangkaian seperti berikut:

#include "DHT.h" // Inisiasi library DHT11
#define DHTPIN 15 // Buat variabel DHTPIN, mengarah pada pin 15
#define DHTTYPE DHT11 // Tentukan tipe DHT menjadi DHT11
DHT dht(DHTPIN, DHTTYPE); // Buat objek dht
void setup() {
Serial.begin(9600); // Buka komunikasi serial pada baudrate 9600
dht.begin(); // Inisiasi objek dht
}
void loop() {
float hum = dht.readHumidity(); // Baca kelembapan
float temp = dht.readTemperature(); // Baca temperatur
if (isnan(hum) || isnan(temp)) { // Cek jika sensor error
Serial.println("Gagal Membaca DHT sensor!");
return;
}
Serial.println("Humidity: " + (String)hum + " %"); // Print kelembapan (%)
Serial.println("Temperature: " + (String)temp + " *C"); // Print temperatur (*C)
delay(1000);
}
Antares HTTP
Di bawah ini adalah beberapa contoh-contoh kode untuk mengirim dan menerima data melalui HTTP pada database Antares dengan ESP32.Kirim Data
Contoh kode untuk pengiriman data ada di File > Examples > Antares ESP32 HTTP > AntaresStoreData#include <AntaresESP32HTTP.h>
#define ACCESSKEY "your-access-key" // Ganti dengan access key akun Antares anda
#define WIFISSID "your-wifi-ssid" // Ganti dengan SSID WiFi anda
#define PASSWORD "your-wifi-password" // Ganti dengan password WiFi anda
#define applicationName "your-application-name" // Ganti dengan application name Antares yang telah dibuat
#define deviceName "your-device-name" // Ganti dengan device Antares yang telah dibuat
AntaresESP32HTTP antares(ACCESSKEY); // Buat objek antares
void setup() {
Serial.begin(115200); // Buka komunikasi serial dengan baudrate 115200
antares.setDebug(true); // Nyalakan debug. Set menjadi "false" jika tidak ingin pesan-pesan tampil di serial monitor
antares.wifiConnection(WIFISSID,PASSWORD); // Mencoba untuk menyambungkan ke WiFi
}
void loop() {
// Isi variabel dengan nilai acak, dengan tipe data yang berbeda
int temp = random(25,30) ;
int hum = random(75,90);
float windsp = float(random(20, 30))/3.33;
float rainlv = float(random(0, 20))/6.99;
String lat = "-6.8718189";
String lon = "107.5872477";
// Memasukkan nilai-nilai variabel ke penampungan data sementara
antares.add("temperature", temp);
antares.add("humidity", hum);
antares.add("wind_speed", windsp);
antares.add("rain_level", rainlv);
antares.add("latitude", lat);
antares.add("longitude", lon);
// Kirim dari penampungan data ke Antares
antares.send(applicationName, deviceName);
delay(10000);
}
Ambil Data Terakhir
Kode ini akan mengambil data terakhir yang terekam di device application Antares anda.Contoh kodenya bisa dilihat pada File > Examples > Antares ESP32 HTTP > AntaresGetLatestData
#include <AntaresESP32HTTP.h> // Inisiasi library HTTP Antares ESP32
#define ACCESSKEY "your-access-key" // Ganti dengan access key akun Antares anda
#define WIFISSID "your-wifi-ssid" // Ganti dengan SSID WiFi anda
#define PASSWORD "your-wifi-password" // Ganti dengan password WiFi anda
#define applicationName "your-application-name" // Ganti dengan application name Antares yang te
#define deviceName "your-device-name" // Ganti dengan device Antares yang telah dibuat
AntaresESP32HTTP antares(ACCESSKEY); // Buat objek antares
void setup() {
Serial.begin(115200); // Buka komunikasi serial dengan baudrate 115200
antares.setDebug(true); // Nyalakan debug. Set menjadi "false" jika tidak ingin pesan-pesan tampil di serial monitor
antares.wifiConnection(WIFISSID,PASSWORD); // Mencoba untuk menyambungkan ke WiFi
}
void loop() {
// Mengambil data terakhir ke penampungan data
antares.get(applicationName, deviceName);
// Mendapatkan data individu
int temp = antares.getInt("temperature");
int hum = antares.getInt("humidity");
float windsp = antares.getFloat("wind_speed");
float rainlv = antares.getFloat("rain_level");
String lat = antares.getString("latitude");
String lon = antares.getString("longitude");
// Kirim ke serial monitor
Serial.println("Temperature: " + String(temp));
Serial.println("Humidity: " + String(hum));
Serial.println("Wind speed: " + String(windsp));
Serial.println("Rain level: " + String(rainlv));
Serial.println("Latitude: " + lat);
Serial.println("Longitude: " + lon);
delay(10000);
}
Antares MQTT
Di bawah ini adalah beberapa contoh-contoh kode untuk mengirim dan menerima data melalui MQTT pada database Antares dengan ESP32. Mendengarkan data (subscribe) dapat berupa real-time, yang berarti setiap ada masuk ke database Antares melalui topik MQTT, data tersebut akan dibaca oleh ESP32 secara langsung.Kirim (Publish)
Contoh kode untuk pengiriman data ke topic akun antares anda ada di File > Examples > Antares ESP32 MQTT > AntaresMQTTPublish#include <AntaresESP32MQTT.h> // Inisiasi library MQTT Antares
#define ACCESSKEY "your-access-key" // Ganti dengan access key akun Antares anda
#define WIFISSID "your-wifi-ssid" // Ganti dengan SSID WiFi anda
#define PASSWORD "your-wifi-password" // Ganti dengan password WiFi anda
#define applicationName "your-application-name" // Ganti dengan application name Antares yang telah dibuat
#define deviceName "your-device-name" // Ganti dengan device Antares yang telah dibuat
AntaresESP32MQTT antares(ACCESSKEY); // Buat objek antares
void setup() {
Serial.begin(115200); // Buka komunikasi serial dengan baudrate 115200
antares.setDebug(true); // Nyalakan debug. Set menjadi "false" jika tidak ingin pesan-pesan tampil di serial monitor
antares.wifiConnection(WIFISSID,PASSWORD); // Mencoba untuk menyambungkan ke WiFi
antares.setMqttServer(); // Inisiasi server MQTT Antares
}
void loop() {
/*
Cek koneksi ke broker MQTT Antares. Jika disconnect,
akan dicoba untuk menyambungkan lagi
*/
antares.checkMqttConnection();
// Inisiasi variabel
int temp = random(25,30) ;
int hum = random(75,90);
float windsp = float(random(20, 30))/3.33;
float rainlv = float(random(0, 20))/6.99;
String lat = "-6.8718189";
String lon = "107.5872477";
// Tambahkan variabel ke penampungan data sementara
antares.add("temperature", temp);
antares.add("humidity", hum);
antares.add("wind_speed", windsp);
antares.add("rain_level", rainlv);
antares.add("latitude", lat);
antares.add("longitude", lon);
// Publish data ke database Antares dan juga broker MQTT Antares
antares.publish(applicationName, deviceName);
delay(5000);
}
Mendengarkan (Subscribe)
Contoh kode untuk mendengarkan topic MQTT akun antares anda ada di File > Examples > Antares ESP32 MQTT > AntaresMQTTSubscribe#include <AntaresESP32MQTT.h> // Inisiasi library MQTT Antares
#define ACCESSKEY "your-access-key" // Ganti dengan access key akun Antares anda
#define WIFISSID "your-wifi-ssid" // Ganti dengan SSID WiFi anda
#define PASSWORD "your-wifi-password" // Ganti dengan password WiFi anda
#define applicationName "your-application-name" // Ganti dengan application name Antares yang telah dibuat
#define deviceName "your-device-name" // Ganti dengan device Antares yang telah dibuat
AntaresESP32MQTT antares(ACCESSKEY); // Buat objek antares
/*
Fungsi utama untuk mendapatkan topik dan payload dari setiap
pesan MQTT yang diterima oleh ESP32.
*/
void callback(char topic[], byte payload[], unsigned int length) {
antares.get(topic, payload, length); // Menyimpan topic dan payload ke penampungan data sementara
Serial.println("New Message!");
Serial.println("Topic: " + antares.getTopic()); // Print topic
Serial.println("Payload: " + antares.getPayload()); // Print payload
// Print data-data yang telah didapatkan
Serial.println("Temperature: " + String(antares.getInt("temperature")));
Serial.println("Humidity: " + String(antares.getInt("humidity")));
Serial.println("Wind speed: " + String(antares.getFloat("wind_speed")));
Serial.println("Rain level: " + String(antares.getFloat("rain_level")));
Serial.println("Latitude: " + antares.getString("latitude"));
Serial.println("Longitude: " + antares.getString("longitude"));
}
void setup() {
Serial.begin(115200); // Buka komunikasi serial dengan baudrate 115200
antares.setDebug(true); // Nyalakan debug. Set menjadi "false" jika tidak ingin pesan-pesan tampil di serial monitor
antares.wifiConnection(WIFISSID,PASSWORD); // Mencoba untuk menyambungkan ke WiFi
antares.setMqttServer(); // Inisiasi server MQTT Antares
antares.setCallback(callback); // Set fungsi callback menjadi fungsi callback seperti di atas
}
void loop() {
/*
Cek koneksi ke broker MQTT Antares. Jika disconnect,
akan dicoba untuk menyambungkan lagi
*/
antares.checkMqttConnection();
}