Kali ini kita akan membuat akuarium cerdas berbasisi IoT, Seperti yang kita ketahui bersama bahwa dalam akuarium banyak yang harus kita perhatikan, Terutama air, pemebrian pakan.
Tutorial kali ini kita akan membuat alat yang dapat memantau kadar TDS serta suhu air melalui aplikasi Blynk.
[membership level=”0,1,2,4″]
Langsung saja kita buat projernya, akan tetapi persiaplan dulu alat dan bahan di bawah ini..
1. Alat / Bahan
- Arduino IDE Download disini
- Library: Blynk Download disini
- Library: ESP8266 Download disini
- Library: DS18B20 Download disini
- Project Board 1 Buah
- Kabel Jumper Secukupnya
- TDS Sensor 1 Buah
- Buzzer 1 Buah
- Smartphone 1 Buah
- NodeMCU 1 Buah
- DS18B20 Waterproof 1 Buah
- Resistor 4k7 1 Buah
Untuk mendapatkan komponen elektronik di atas silahkan temukan disini.
2. Skema Rangkaian
3. Layout Blynk
4. Buat Layout Blink Seperti gambar di atas
5. Sketch Program
6. Kemudia Salin Kode di bawah ini, masukan ke Arduino IDE dan upload, Namun juka terjadi error maka perhatikan library kodenya sudah terupload apa belum
/* Program Membuat Aquarium Cerdas berbasis IoT dibuat oleh Indobot */
#include <ESP8266WiFi.h> //Library ESP8266
#include <BlynkSimpleEsp8266.h> //Library Blynk
char auth[] = "HoP9z23_PbWp-iEyMBYFGnnALYBvvcXS"; //Token
char ssid[] = "Wifi.id"; //Nama wifi
char pass[] = "alam oye"; //Password wifi
BlynkTimer timer;
#include <OneWire.h> //Library komunikasi one wire
#include <DallasTemperature.h> //Library sensor
#define ONE_WIRE_BUS 0 //Deklarasi pin komunikasi one wire
#define sensor 0 //Sensor pada pin D3
OneWire oneWire(ONE_WIRE_BUS); //Kenalkan pin komunikasi one wire
DallasTemperature Suhu(&oneWire); //Masukkan pada library
int tAir; //Variabel penampung nilai suhu
#include <Wire.h>
float teg[10];
double tds, konduktifitas;
float rata_rata_teg;
#define Buzzer 2
void setup() {
Blynk.begin(auth, ssid, pass); //Inisialisasi token, wifi dan password
timer.setInterval(1000L, sendSensor); //Kirim data sensor
Suhu.begin(); //Mulai sensor suhu
pinMode(Buzzer, OUTPUT);
}
void loop() {
Blynk.run(); //Jalankan pembacaan Blynk
timer.run();
Suhu.requestTemperatures(); //Baca suhu
tAir = Suhu.getTempCByIndex(0); //Masukkan pada variabel
for ( int i=0; i<10; i++){
int val = analogRead(A0);
teg[i] = val * (3.3/1023);
}
rata_rata_teg = (teg[0] + teg[1] + teg[2] + teg[3] + teg[4] + teg[5] + teg[6] + teg[7] + teg[8] + teg[9])/10 ;
delay(1000);
tds = (211.2254 * rata_rata_teg) - 144.1466;
if(tds < 0){
tds = 0;
}
if(tAir > 35){
Blynk.notify("Suhu Air Terlalu Tinggi!");
for(int i = 0; i < 5; i++){ //Ulang prosedur alarm(); sebanyak 5 kali
alarm();
}
}
if(tds > 300){
Blynk.notify("Air Kolam Keruh!");
for(int i = 0; i < 5; i++){ //Ulang prosedur alarm(); sebanyak 5 kali
alarm();
}
}
}
void sendSensor(){ //Kirim data sensor
Blynk.virtualWrite(V0,tAir);
Blynk.virtualWrite(V1,tds);
}
void alarm(){ //Prosedur alarm
digitalWrite(Buzzer, HIGH); //Nyalakan buzzer
delay(500); //Selama 500 ms
digitalWrite(Buzzer, LOW); //Matikan buzzer
delay(500); //Selama 500 ms
}
إرسال تعليق