Kamis, 15 April 2021

INTERNET OF THINGS : MINI WEATHER STATION

INTERNET OF THINGS : MINI WEATHER STATION

Oleh : Kelompok 6-TI 2020B

Anggota Kelompok :

Farid Rosyidi (20051204039)

Rizal Nurdin Imano (20051204062)

Valdo Febrian (20051204010)

Wahenda Uswatun Hasanah (20051204020)


Untuk Video Youtube bisa di klik dibawah ini :

Video Youtube Team 6 

 

BAB I

PENDAHULUAN

 

1.1  Latar Belakang

Internet of Things (IoT) adalah suatu konsep dimana suatu perangkat dapat berinteraksi satu sama lain melalui internet. Internet menjadi penghubung interaksi antara kedua perangkat. Manusia hanya bertugas untuk mengatur dan mengawasi perangkat-perangkat yang bekerja. Dengan adanya ini seseorang dapat menggunakan perangkat dari jarak jauh melalui smartphone atau perangkat genggam yang terhubung dengan internet. Adanya internet of things ini dapat membantu memudahkan kehidupan manusia.

1.2  Rumusan Masalah

1.      Bagaimana cara merancang mini-weather station menggunakan IoT?

2.      Bagaimana cara kerja mini-weather station menggunakan IoT?

3.      Apa saja manfaat yang didapat dari mini-weather station menggunakan IoT?

 

1.3  Tujuan Penyusunan Laporan

Tujuan dari penyusunan laporan kegiatan ini adalah:

1.      Mengetahui contoh alat yang memanfaatkan IoT dan cara merancangnya.

2.      Memahami cara kerja dari alat yang memanfaatkan IoT.

3.      Mengetahui apa saja manfaat penggunaan IoT.



BAB II

PEMBAHASAN

 

2.1  Pengertian

1.      Internet of Things

Internet of Things (IoT) adalah suatu konsep dimana suatu perangkat dapat berinteraksi satu sama lain melalui internet. Internet menjadi penghubung interaksi antara kedua perangkat. Manusia hanya bertugas untuk mengatur dan mengawasi perangkat-perangkat yang bekerja. Dengan adanya ini seseorang dapat menggunakan perangkat dari jarak jauh melalui smartphone atau perangkat genggam yang terhubung dengan internet.

2.      Mini-Weather Station

Weather Station adalah alat untuk mengamati kondisi atmosfer bumi untuk memperkirakan dan mempelajari cuaca dan iklim suatu tempat. Mini-Weather Station merupakan weather station sederhana dengan ukuran yang kecil.

 

2.2  Alat dan Bahan

Tidak diperlukan alat khusus untuk merancang arduino uno mini-weather station. Perancangan ini hanya memerlukan beberapa komponen dan software saja. Berikut komponen-komponen yang dibutuhkan:

1.      Arduino UNO

Gambar 1.Arduino UNO

2.      Espressif ESP8266 ESP-01


Gambar 2. Espressif

3.      Arduino Proto Shield


Gambar 3. Arduino Proto Shield

4.      DHT22 Temperature Sensor

Gambar 4. Temperature Sensor

5.      Seeed Grove - Light Sensor


Gambar 5. Light Sensor

6.      Seeed Grove - UV Sensor

Gambar 6. UV Sensor

7.      Barometer Sensor

Gambar 7. Barometer Sensor

8.      Dust Sensor

Gambar 8. Dust Sensor

9.      Resistor 1K Ohm


Gambar 9. Resistor 1K Ohm

10.  Resistor 10K Ohm

Gambar 10. Resistor 10K Ohm

11.  Resistor 4.75K Ohm

Gambar 11. Resistor 4,75k Ohm

12.  Kabel Jumper

Gambar 12. Kabel Jumper

13.  Breadboard

Gambar 13. Breadboard

Software yang dibutuhkan:

1.      Arduino IDE

2.      ThingSpeak API

3.      ThingsView

 

2.3  Cara Kerja


Gambar 2.3.1

Mini-weather station akan bekerja dengan mengumpulkan data berikut terkait cuaca dan lingkungan menggunakan sensor yang berbeda:

·         Suhu

·         Kelembapan

·         Tekanan atmosfer

·         Intensitas cahaya

·         Indeks UV

·         Konsentrasi debu

Setelah itu data akan terkirim ke software ThingSpeak dan dapat dilihat melalui smartphone dengan aplikasi ThingsView.

Langkah kerja:

1.      Siapkan semua alat dan bahan yang dibutuhkan.

2.      Hubungkan semua komponen menjadi sebuah rangkaian sesuai skema di bawah.


Gambar 2.3.2.1

Gunakan kabel jumper untuk menghubungkan setiap sensor ke breadboard. Colokkan kabel USB ke arduino uno.

3.      Instal arduino IDE terbaru, setelah itu unduh dan instal library berikut:

·         DHT22 library

·         Adafruit BMP085 library

Unduh arduino code (weatherBox.ino) yang disertakan di bagian kode. Ganti XXXXX dengan SSID router WiFi, YYYYY dengan kata sandi router dan ZZZZZ dengan ThingSpeak channel write API key. Hubungkan arduino ke port USB komputer dan unggah kodenya.


Gambar 2.3.3.1

4.      Atur konfigurasi ThingSpeak

·         Buat akun Thingspeak.

·         Buat channel baru.


Gambar 2.3.4.1

Tentukan nama dan deskripsi dari weather station. Tetapkan channel berikut dan simpan channel.

·         channel 1 = light

·         channel 2 = humidity

·         channel 3 = temperature (dari DHT22)

·         channel 4 = UV index

·         channel 5 = dust concentration

·         channel 6 = pressure

·         channel 7 = temperature (dari BMP085)


Gambar 2.3.4.2

Salin API write key.


Gambar 2.3.4.3

Nyalakan weather station, nilai sensor akan diunggah ke channel secara berkala.


Gambar 2.3.4.4

5.      Unduh dan instal aplikasi ThingsView dari Google Playstore pada perangkat android. Buka aplikasi lalu masukkan channel ID dan klik add. Nilai dari setiap variabel akan ditampilkan dalam grafik.

 

2.4  Program

#include <stdlib.h>

#include <SoftwareSerial.h>

#include <DHT.h>

#include <Wire.h>

#include <Adafruit_Sensor.h>

#include <Adafruit_BMP085_U.h>

#define SSID "XXXXX" //replace XXXXX by your router SSID

#define PASS "YYYYY" //replace YYYYY by your router password

#define IP "184.106.153.149" // thingspeak.com IP

#define DHT22_PIN 2

String GET = "GET /update?key=ZZZZZ&field1="; //replace ZZZZZ by your ThingSpeak channel write key

SoftwareSerial monitor(10, 11); //Serial communication to ESP8266 module (RX, TX)

 

dht DHT;

Adafruit_BMP085_Unified bmp = Adafruit_BMP085_Unified(10085);

 

//Variables

int luminancePin = A0;

int uvPin = A1;

int dustPin = 8;

unsigned long duration;

unsigned long starttime;

unsigned long sampletime_ms = 30000;

unsigned long delay_time = 60000;

unsigned long lowpulseoccupancy = 0;

float ratio = 0;

float concentration = 0;

 

//setup

void setup()

{

  //start serial communications

  Serial.begin(9600);

  monitor.begin(9600);

  Serial.println("Initializing...");

 

  //configure Arduino pins

  pinMode(dustPin, INPUT);

 

  //initialize pressure sensor

  Serial.println("Detecting BMP085 pressure sensor...");

  if(!bmp.begin())

  {

    Serial.println("BMP085 sensor wasn't detected. Verify your connections or I2C ADDR!");

    while(1);

   }

   Serial.println("BMP085 detected!");

 

    //communication with wifi module

    monitor.flush();

    monitor.println("AT");

    delay(2000);

   

    if(monitor.find("OK")){

      Serial.println("Communication with ESP8266 module: OK");

    }

    else {

      Serial.println("ESP8266 module ERROR");

    }

 

  //connect wifi router 

  connectWiFi();

    

  Serial.print("Sampling (");

  Serial.print(sampletime_ms/1000);

  Serial.println("s)...");

 

  //initialize timer

  starttime = millis();

 

}

 

void loop(){

 

  //measuring dust particles

  duration = pulseIn(dustPin, LOW);

  lowpulseoccupancy = lowpulseoccupancy + duration;

 

  //30 seconds cicle

  if ((millis() - starttime) >= sampletime_ms)

  {

    ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // percentage (de 0 a 100%)

    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // from datsheet

    lowpulseoccupancy = 0;

   

    //read other sensors

    char buffer[10];

    //light sensor

    float luminance = analogRead(luminancePin);

    //UV sensor

    float uv = analogRead(uvPin);

    uv = uv * 0.0049; //convert values to volts

    uv = uv * 307; //convert to mW/m²

    uv = uv/200; //calculate UV index

    //temperature and humidity

    int chk = DHT.read22(DHT22_PIN);

    float humidity = DHT.humidity;

    float temperature = DHT.temperature;

    //pressure and temperature1

    sensors_event_t event;

    bmp.getEvent(&event);

    float pressure = 0;

    float temperature1 = 0;

    if (event.pressure)

    {

      pressure = event.pressure;

      bmp.getTemperature(&temperature1);

    }

 

    //convert sensor values to strings

    String luminanceStr = dtostrf(luminance, 4, 1, buffer);

    luminanceStr.replace(" ","");

    String uvStr = dtostrf(uv, 4, 1, buffer);

    uvStr.replace(" ","");

    String humidityStr = dtostrf(humidity, 4, 1, buffer);

    humidityStr.replace(" ","");

    String temperatureStr = dtostrf(temperature, 4, 1, buffer);

    temperatureStr.replace(" ","");

    String dustStr = dtostrf(concentration, 4, 1, buffer);

    dustStr.replace(" ","");

    String pressureStr = dtostrf(pressure, 4, 1, buffer);

    pressureStr.replace(" ","");

    String temperature1Str = dtostrf(temperature1, 4, 1, buffer);

    temperature1Str.replace(" ","");

       

    //send data to ThingSpeak

    updateSensors(luminanceStr, humidityStr, temperatureStr, uvStr, dustStr, pressureStr, temperature1Str);

 

    //wait next sampling cycle

    Serial.print("Wait ");

    Serial.print(delay_time/1000);

    Serial.println("s for next sampling");

    Serial.println();

    delay(delay_time);

   

    //initialize new cycle

    Serial.println();

    Serial.print("Sampling (");

    Serial.print(sampletime_ms/1000);

    Serial.println("s)...");

    starttime = millis();

  }

}

 

//Send data to ThingSpeak

void updateSensors(String luminanceStr, String humidityStr, String temperatureStr, String uvStr, String dustStr, String pressureStr, String temperature1Str) {

 

  String cmd = "AT+CIPSTART=\"TCP\",\"";

  cmd += IP;

  cmd += "\",80";

  monitor.println(cmd);

  delay(2000);

 

  cmd = GET;

  cmd += luminanceStr;

  cmd += "&field2=";

  cmd += humidityStr;

  cmd += "&field3=";

  cmd += temperatureStr;

  cmd += "&field4=";

  cmd += uvStr;

  cmd += "&field5=";

  cmd += dustStr;

  cmd += "&field6=";

  cmd += pressureStr;

  cmd += "&field7=";

  cmd += temperature1Str;

  cmd += "\r\n";

  delay(1000);

  int strsize = cmd.length();

  monitor.println("AT+CIPSEND=" + String(strsize));

  delay(2000);

 

  monitor.print(cmd);

  if(monitor.find("OK")){

    Serial.println("Transmission completed with success");

  }else{

    Serial.println("Transmission failed!");

  }

}

 

void sendDebug(String cmd){

  Serial.print("SEND: ");

  Serial.println(cmd);

  monitor.println(cmd);

}

 

boolean connectWiFi(){

  Serial.println("Connecting wi-fi...");

  String cmd ="AT+CWMODE=1";

  monitor.println(cmd);

  delay(2000);

  monitor.flush(); //clear buffer

  cmd="AT+CWJAP=\"";

  cmd+=SSID;

  cmd+="\",\"";

  cmd+=PASS;

  cmd+="\"";

  monitor.println(cmd);

  delay(5000);

 

  if(monitor.find("OK")){

    Serial.println("Connection succeeded!");

    return true;

  }else{

    Serial.println("Connection failed!");

    return false;

  }

  Serial.println();

}


BAB III

PENUTUP

 

3.1  Hasil

 


Gambar 3.1.1

3.2  Kesimpulan

Internet of Things (IoT) adalah suatu konsep yang memungkinkan untuk mengoperasikan sebuah perangkat yang terhubung dengan internet dari jarak jauh. Dengan adanya internet of things semua pekerjaan manusia dapat menjadi lebih mudah.

Arduino UNO Mini-Weather Station merupakan salah satu contoh penerapan internet of things. Alat ini dapat memperkirakan cuaca lingkungan dengan mengumpulkan data suhu, kelembapan, tekanan atmosfer, intensitas cahaya, indeks UV dan konsentrasi debu. Hasil dari pengamatan alat ini dapat dilihat melalui smartphone.

Tidak ada komentar:

Posting Komentar