Weather station wilayah jakarta WEMOS D1 MINI

Cara monitoring Weather Station wilayah Jakarta

Tutorial ini menjelaskan bagaimana cara monitoring Weather Station wilayah Jakarta Online menggunakan modul wifi Wemos D1 mini ESP8266.

Sumber data yang diambil untuk pembaruan data cuaca berasal dari web openweathermap.org

Website tersebut yang merupakan stasiun cuaca yang independent dan informasi data, yang dimana dapat diakses menggunakan ESP8266 yang ditampilkan menggunakan display LCD 16×2.

Berikut langkah – langkah untuk tutorial Weather Station menggunakan Wemos D1 mini

1. Cara mendapatkan API Key

  1. Buka web http://openweathermap.org/ dan buatlah akun disana jika belum memilikiWeather station on openweathermap.org
  2. Setelah itu buka gmail untuk verifikasi dan akun siap digunakan
  3. Login akun yang telah dibuat tersebut dan cari API Key di menu Home > Setup tab
  4. Copy paste-kan API Key tersebut ke notepad untuk sementara waktu, dan save dengan nama bebasAPI Key Weather Station

2. Cara mendapatkan kode City ID dari OpenWeather

    1. Cari kota yang akan diimonitoring di search box openweather.orgWeather station wilayah jakarta
    2. Klik pada kota hasil pencarian dan copy paste pada
    3. Kode weather station wilayah jakarta

Kode yang didapat untuk area atau wilayah jakarta city ID-nya yaitu 1642911, sedangkan untuk kota lain dapat dilihat pada tabel dibawah ini

City ID Kode Weather Station
Jakarta 1642911
Bekasi 1649378
Depok 1648473
Tanggerang 1625084
Karawang 1629710
Bandung 1650357
Malang 1636722
Surabaya 1625822
Yogyakarta 1621177
Semarang 1627896
Klaten 1639900

3. Skema Rangkaian sederhana

Bahan yang diperlukan :

  1. Wemos D1 mini
  2. LCD 16×2 dan PCF8574
  3. Kabel Jumper
  4. Regulator LM2596
  5. Catudaya 12 / 5 Vdc minimal 2A
  6. Koneksi Internet

Alasan menggunakan regulator LM2596 untuk mendapatkan tingkat kestabilan tegangan dan arus untuk catudaya rangkaian.

Wemos D1 mini + LCD Weather station


4. Instalasi libraries Arduino IDE

Hal pertama yang harus dilakukan yaitu instalasi libraries ArduinoJson.h pada Arduino IDE, dikarenakan sebagai include header pengakasesannya.

Berikut langkah – langkah instalasinya :

  1. Buka software Arduino IDE
  2. Pastikan komputer atau laptop terhubung dengan internet
  3. Ketikan “ArduinoJson by Benoit Blachon” pada Manage Libraries dan klik install  instalasi librarie arduinojson.h
  4. Selain itu dibutuhkan juga driver kedua yaitu driver LCD PCF8574, dengan metode yang sama seperti diatas. Untuk libraries driver LCD PCF8574 yang dipakai yaitu “LiquidCrystal_PCF8574 by Matthias Hertel“.

Setelah itu, hal yang pertama dilakukan yaitu i2c scanner untuk mencari alamat dari driver lcd tersebut.

Program dapat didapatkan dan langsung bisa diupload, jangan lupa setting di board wemos D1 mini. [ddownload id=”3104″]
Hasil dari program i2c scanner

i2c scanner wemos d1 mini


5. Kode program

Setelah semua cara diatas dilakukan, masuk ke langkah pemrograman

[sociallocker id=”1344″]

//www.nyebarilmu.com
//program sederhana Weather Station area DKI Jakarta
//Wemos D1 mini + LCD 16x2
//2019

#include <ESP8266WiFi.h> //header untuk ESP8266
#include <ArduinoJson.h> //header yang baru saja di instal
#include <Wire.h>
#include <LiquidCrystal_PCF8574.h>


const char* ssid     = "Blok21no12"; //nama wifi kalian
const char* password = "Komponen08"; //Password wifi

String APIKEY = "9e8b102776bad6edd47f804d48121bb8";  //API keys di openweather.org
String CityID = "1642911";                   //kode weather station berdasarkan kota

WiFiClient client;
char servername[]="api.openweathermap.org";
String result;

LiquidCrystal_PCF8574 lcd(0x27); //dapat dicek menggunakan i2c scanner

int  counter = 10;

String kondisicuaca =""; //cuaca
String lokasi = ""; //kota yang akan dimonitoring
String negara; //negara
float T; //suhu
float H; //kelembaban
float P; //tekanan udara

void setup() {
  lcd.begin(16, 2); // 16 baris, 2 kolom
  int titik=00;
  Serial.begin(9600);
  lcd.setBacklight(255); //menyalakan lampu latar

  lcd.setCursor(00,00);
  lcd.print("nyebarilmu.com");
  lcd.setCursor(00,1);
  lcd.print("Weather Station");
  delay(3000);
  lcd.clear();

  Serial.println("Konek Wifi");
  lcd.print("Konek Wifi");
  //konek ke wifi
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED)
  {
  lcd.setCursor(titik,1);
  lcd.print("*");
  titik++;
  delay(300);
  }
  lcd.clear();
  lcd.setCursor(00,00);
  Serial.println("terhubung");
  lcd.print("terhubung!");
  lcd.setCursor(00, 1);
  lcd.print("ip:"); lcd.print(WiFi.localIP());
  delay(5000);
}

void loop() {
  if(WiFi.status() == WL_CONNECTED){
    if(counter == 10)   //mendapatkan data per 1 menit sekali
    {
      counter = 00;
        lcd.clear();
       lcd.print("Dapatkan data");
      delay(1000);
      getWeatherData();
    }else
    {
      tampilkancuaca(lokasi,kondisicuaca);
      delay(3000);
      tampilkankondisi(T,H,P);
      delay(3000);
      counter++;
    }
    }
  else if(WiFi.status() != WL_CONNECTED){
    lcd.clear();
    lcd.setCursor(00, 00);
    lcd.print("Wifi Not Connected");
    lcd.setCursor(00, 1);
    lcd.print("Try to connect");
    lcd.clear();
  }
}

void getWeatherData()   //untuk mendapatkan data dari server
{
  if (client.connect(servername, 80))
          {
           //memulai koneksi permintaan data
          client.println("GET /data/2.5/weather?id="+CityID+"&units=metric&APPID="+APIKEY);
          client.println("Host: api.openweathermap.org");
          client.println("User-Agent: ArduinoWiFi/1.1");
          client.println("Connection: close");
          client.println();
          }
  else {
         Serial.println("koneksi gagal");
          Serial.println();
       }

  while(client.connected() && !client.available())
  delay(1);
  while (client.connected() || client.available())
       {
         char c = client.read();
         result = result+c;
       }

client.stop();

//JSON to arduino converter
result.replace('[', ' ');
result.replace(']', ' ');
Serial.println(result);
char jsonArray [result.length()+1];
result.toCharArray(jsonArray,sizeof(jsonArray));
jsonArray[result.length() + 1] = '\0';
StaticJsonBuffer<1024> json_buf;
JsonObject &root = json_buf.parseObject(jsonArray);

if (!root.success())
  {
    Serial.println("parseObject() failed");
  }

String location = root["name"];
String country = root["sys"]["country"];
float temperature = root["main"]["temp"];
float humidity = root["main"]["humidity"];
String weather = root["weather"]["main"];
String description = root["weather"]["description"];
float pressure = root["main"]["pressure"];
kondisicuaca = description;
lokasi = location;
negara = country;
T = temperature;
H = humidity;
P = pressure;
}

void tampilkancuaca(String lokasi,String kondisicuaca)
{
  lcd.clear();
  lcd.setCursor(00,00);
  lcd.print(lokasi);
  lcd.print(",");
  lcd.print(negara);
  lcd.setCursor(00,1);
  lcd.print(kondisicuaca);
}

void tampilkankondisi(float T,float H, float P)
{
 lcd.clear();

 //tampilkan suhu
 lcd.print("T:"); lcd.print(T,1);
 //karakter derajat
 lcd.print((char)223); lcd.print("C ");

//tampilkan kelembaban
 lcd.print(" H:"); lcd.print(H,00); lcd.print(" %");

//tampilkan tekanan udara
 lcd.setCursor(00,1); lcd.print("P: ");lcd.print(P,1); lcd.print(" hPa");
}

[/sociallocker]

Hasil dari program Weather Station diatas, dapat dilihat di video dibawah ini

Semoga bermanfaat, salam nyebarilmu.com.

terimakasih!

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *