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 :
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