Laravel adalah salah framework php dengan pengguna terbanyak. Dengan banyaknya pengguna otomatis ketika kita menghadapi error akan lebih mudah menemukan solusin...
Kali ini saya akan membuat contoh IoT monitoring menggunakan esp8266 dan arduino uno. Kalo sebelumnya saya menggunakan rest api berbasis codeigniter kali ini saya akan menggunakan thingspeak untuk menampung data hasil monitoring.
Untuk monitoring saya menggunakan aplikasi android buatan saya sendiri yaitu IoThingspeak yang bisa didownload di playstore. Sebelumnya buat akun dulu di thingspeak dulu untuk mendapatkan user api key. Untuk memasukkan user api key bisa dilihat di video di bawah ini
Sekedar info, ESP8266 adalah modul wifi murah meriah dengan harga 50ribuan ynag dapat digunakan untuk mengirim data ke server. Komunikasi ESP8266 dengan arduino menggunakan komunikasi serial (AT+Command).
Di atas adalah skema pin ESP8266. Rangkaian esp8266 dan arduino uno adalah sebagai berikut :
Arduino | ESP8266 |
3.3 V | VCC |
3.3 V | RST |
3.3 V | CH_PD |
RX | TX |
TX | RX |
Algoritma di dalam sketch arduino dibagi menjadi 2 bagian, yaitu pada bagian untuk menyambungkan ke router wifi dieksekusi pada bagian void setup().
void setup(){
Serial.begin(Baud_Rate);
Serial.println("AT");
delay(5000);
//sambungkan ke wifi
Serial.println("AT+CWMODE=1");//mode wifi client
delay(2000);
String cmd = "AT+CWJAP=\"";//at command konek ke wifi router
cmd += SSID;
cmd += "\",\"";
cmd += PASS;
cmd += "\"";//simpelnya ya gini AT+CWJAP="SSID","PASS";
Serial.println(cmd);
delay(5000);
if(Serial.find("OK")){
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
}else{
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
}
//end sambungan ke wifi
}
Selanjutnya adalah bagian untuk mengirim data ke server.
void loop(){
//inisialisasi alamat server
String cmd = "AT+CIPSTART=\"TCP\",\"184.106.153.149\",80";//ip api.thingspeak.com
Serial.println(cmd);
delay(500);
//coba kirim data
String getStr = "GET /update?api_key=";
getStr += APIKEY;
getStr += "&field1=";
getStr += "150";//silahkan ganti nilai sensor
getStr += "\r\n\r\n";
//Serial.print("AT+CIPSEND=");
//Serial.println(cmd.length());
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
Serial.println(cmd);
if(Serial.find(">")){
Serial.print(getStr);
}else{
Serial.println("AT+CIPCLOSE");
}
if(Serial.find("OK")){
for(int a = 0; a < 5; a++){
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
delay(200);
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
delay(200);
}
}else{
for(int a = 0; a < 5; a++){
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(3,LOW);
delay(200);
}
}
//end coba kirim data
delay(5000);
}
Untuk mendapatnya write api key channel bisa dicopy paste dari halaman channel di thingspeak.
Sketch lengkap yang saya gunakan.
#include <stdlib.h>
#define SSID "F4DL" //nama wifinya
#define PASS "isipasswordnya" //password wifi routernya
#define Baud_Rate 115200
#define Delay_Time 5000
#define WRITE_APIKEY "J6HJJVN2XH"//channel read apikey
bool kirimdata; //cek status kirim data
void setup(){
Serial.begin(Baud_Rate);
Serial.println("AT");
delay(5000);
//sambungkan ke wifi
Serial.println("AT+CWMODE=1");//mode wifi client
delay(2000);
String cmd = "AT+CWJAP=\"";//at command konek ke wifi router
cmd += SSID;
cmd += "\",\"";
cmd += PASS;
cmd += "\"";//simpelnya ya gini AT+CWJAP="SSID","PASS";
Serial.println(cmd);
delay(5000);
if(Serial.find("OK")){
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
}else{
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
}
//end sambungan ke wifi
}
void loop(){
//inisialisasi alamat server
String cmd = "AT+CIPSTART=\"TCP\",\"184.106.153.149\",80";//ip api.thingspeak.com
Serial.println(cmd);
delay(500);
//coba kirim data
String getStr = "GET /update?api_key=";
getStr += WRITE_APIKEY;
getStr += "&field1=";
getStr += "150";//silahkan ganti nilai sensor
getStr += "\r\n\r\n";
//Serial.print("AT+CIPSEND=");
//Serial.println(cmd.length());
cmd = "AT+CIPSEND=";
cmd += String(getStr.length());
Serial.println(cmd);
if(Serial.find(">")){
Serial.print(getStr);
}else{
Serial.println("AT+CIPCLOSE");
}
if(Serial.find("OK")){
for(int a = 0; a < 5; a++){
digitalWrite(4,HIGH);
digitalWrite(3,LOW);
delay(200);
digitalWrite(4,LOW);
digitalWrite(3,HIGH);
delay(200);
}
}else{
for(int a = 0; a < 5; a++){
digitalWrite(4,HIGH);
digitalWrite(3,HIGH);
delay(200);
digitalWrite(4,LOW);
digitalWrite(3,LOW);
delay(200);
}
}
//end coba kirim data
delay(5000);
}
Setelah berhasil mengirim data, maka di web thingspeak akan tampil grafik seperti gambar berikut
Dan tampilan pada hasil monitoring di aplikasi androidnya seperti berikut :
Demo hasil jadinya bisa dilihat di video di bawah ini
Selamat mencoba.
Ada manfaatnya silahkan share, ada pertanyaan isi saja di kolom komentar.
Related Post :
31 Dec, 2020 - Fadlur Rohman
Setelah kita membuat database untuk menyimpan data hasil mon...
31 Dec, 2020 - Fadlur Rohman
Belajar arduino di linux bisa dimulai dengan menginstall arduino IDE d...
31 Dec, 2020 - Fadlur Rohman
Menghitung suhu menggunakan sensor LM35 dan arduino. Komponen yang dib...
31 Dec, 2020 - Fadlur Rohman
Kali ini saya akan membuat contoh IoT monitoring menggunakan esp8266 d...
31 Dec, 2020 - Fadlur Rohman
Untuk mengukur jarak dapat dilakukan menggunakan arduino dan sensor ul...
31 Dec, 2020 - Fadlur Rohman
Bagian Pertama Bagian Kedua Pada bagian ini kita akan mensetting konek...