completely free international dating sites

Membaca 24 Sensor Suhu LM35 dengan 3 Multiplekser Berbasis Atmega 16

Hallo teman-teman semuanya, kali ini saya akan mem-posting sebuah tutorial untuk membaca banyak sensor suhu LM-35 menggunakan mikrokontroler Atmega 16. Wah, pastinya penasaran banget ya, gimana cara membaca banyak sensor, tetapi dengan menggunakan pin input/output sedikit saja.

Keterbatasan jumlah pin pada sebuah mikrokontroler, membuat kita harus berpikir bagaimana cara agar dapat membaca banyak sensor tetapi dengan jumlah penggunaan pin yang sedikit. Misalnya kita ingin membaca sensor suhu dengan jumlah yang mencapai puluhan sensor. Dan, jika kita mengacu pada datasheet mikrokontroler Atmega 16 jumlah pin ADC (Analog Digital Converter) hanya berjumlah 8 pin. Jumlah pin ADC yang sedikit ini hanya bisa dipakai maksimum 8 sensor suhu LM 35 saja, sedangkan jumlah pin lainnya tidak dapat digunakan, kecuali jika menggunakan sensor suhu digital.

Sekilas Tentang Atmega 16

ATmega16 adalah mikrokontroler CMOS 8-bit mengkonsumsi daya rendah yang menggunakan arsitektur RISC keluarga AVR buatan Atmel. AVR mempunyai 32 register general-purpose, timer/counter dengan metode compare, interrupt eksternal dan internal, serial UART, progammable Watchdog Timer, ADC (Analog Digital Converter atau konversi dari sinyal analog ke digital) dan PWM (Pulse Width Modulation atau Modulasi Lebar Pulsa) internal. Dengan menjalankan instruksi satu siklus clock tunggal, ATmega16 dapat mencapai throughput mendekati 1 MIPS per MHz yang memungkinkan perancang sistem untuk mengoptimalkan konsumsi daya dibandingkan kecepatan pemrosesan. Atmega 16 memiliki batas maksimum throughput yaitu 16 MIPS pada 16 MHz[1][2]. Kecepatan clock tersebut sudah mencukupi untuk menjalankan aplikasi skala kecil yang tidak membutuhkan perhitungan yang cepat.

Ada banyak sekali jenis-jenis mikrokontroler AVR keluaran Atmel, seperti: Atmega 8, Atmega 16, Atmega 32, Atmega 128, dll. Mikrokontroler seri AVR juga dipakai oleh Arduino, misalnya pada Arduino UNO menggunakan Atmega328. Berikut diagram pin Atmega 16 seri DIP (Dual Inline Package) dan TQFP/QFN/MLF,

Gambar 1. Diagram pin mikrokontroler Atmega 16 DIP[1].
Gambar 2. Diagram pin mikrokontroler Atmega 16 TQFP (SMD)[1].
 

Teman-teman bisa men-download datasheet mikrokontroler Atmega 16 disini (klik tulisan biru, disini). Dan, berikut fitur-fitur yang dimiliki oleh Atmega 16,

Gambar 3. Fitur-fitur yang dimiliki oleh Atmega 16[1].

Cukup untuk sekilas tentang Atmega 16, selebuhnya bisa dibaca-baca pada datasheet yang link download-nya sudah saya sediakan.

Sekilas Tentang Sensor Suhu Analog LM 35

Selanjutnya kita akan membahas sekilas tenang sensor suhu analog LM 35. Sensor suhu LM 35 banyak digunakan dalam perancangan instrumentasi pengukur suhu. Penggunaan sensor LM 35 pun tidak begitu sulit dan harganya pun cukup murah, mulai dari Rp 8.000 sampai Rp 26.000 di toko online, dan untuk mendapatkannya pun tidak begitu sulit.

Sensor suhu seri LM35 adalah sebuah sensor suhu dengan sirkuit terpadu yang sangat presisi, tegangan outputnya berbanding lurus dengan suhu Celcius (Celcius). Sensor suhu LM35 tidak memerlukan kalibrasi tambahan untuk mendapatkan akurasi pembacaan suhu khas ±¼° C pada suhu kamar dan ±3⁄4° C lebih pada kisaran −55 hingga +150° C. Dan, teman-teman juga dapat men-download datasheet sensor LM 35 disini.

Berikut adalah fitur lengkap yang dimiliki oleh sensor LM 35;

Gambar 4. Fitur lengkap yang dimiliki oleh sensor analog LM 35

Sekian untuk sekilas tentang sensor Lm35.

Memprogram 24 Sensor Suhu LM 35

Oke, kita langsung saja membahas poin inti dari artikel ini yaitu memprogram 24 sensor suhu menggunakan 3 multiplekser pada Atmega 16. Pembahasan multiplekser dapat dibaca pada artikel saya yang berjudul “Membaca 40 Sensor ADC Menggunakan Arduino Uno dengan IC Multiplekser“. Pada artikel ini saya tidak membahas lagi cara kerja multiplekser, jadi kita bisa langsung membahas pada rangkaian elektronikanya saja. Berikut rangkaian elektronika yang saya buat menggunakan software proteus 8.

Gambar 5. Gambar rangkaian membaca 24 sensor suhu LM 35.

Dan, berikut program yang saya buat menggunakan software CodeVision AVR 3.12, dan saya sertakan juga pengaturan CV AVR nya agar memudahkan dalam memprogram proyek kita ini.

  • Settingan Chip

Atur Chip menjadi ATmega16 dengan clock yang saya gunakan adalah 11,059200 MHz. Untuk memudahkan dapat dilihat pada gambar 6 berikut ini:

Gambar 6. Settingan Chip apda CV AVR
  • Settingan ADC

Atur ADC menjadi enabled dan jangan mencentang Use 8 bits agar kita mendapatkan nilai bacaan dengan tingkat presisi sebesar 10 bit yaitu dari 210 atau 0-1023.

Gambar 7. Pengaturan pada ADC
  • Settingan pin I/O

Atur PORT B pada pin 1-3 atau bit 0-2 menjadi out, karena pin ini akan kita gunakan sebagai pengontrol (selektor) pin input IC multiplekser.

Gambar 8. Pengaturan pada pin I/O
  • Settingan pin LCD

Atur pin LCD menjadi Enabled dan line menjadi 20, karena disini kita akan menggunakan LCD 20×4 dan atur PORT pada PORT C semuanya.

Gambar 9. Pengaturan pada pin untuk LCD.

Terakhir, berikut program lengkapnya, dan saya buat sangat sederhana saja karena disini kita berfokus pada dasar kerja program pada IC multiplekser, kedepannya teman-teman dapat memodifikasinya sesuai dengan kebutuhan masing-masing.

/*****************************************************
This program was produced by the
CodeWizardAVR V2.05.3 Standard
Automatic Program Generator
© Copyright 1998-2011 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.comProject :
Version :
Date : 08/01/2016
Author : Wayan Dadang
Company : Sains Lab
Comments:
Chip type : ATmega16A
Program type : Application
AVR Core Clock frequency: 11.059200 MHz
Memory model : Small
External RAM size : 0
Data Stack size : 256
*****************************************************/#include <mega16a.h>
#include <stdio.h>
#include <stdlib.h>
#include <delay.h>
unsigned char buff[21],buff1[21],buff2[21],buff3[21],buff4[21],buff5[21],buff6[21],buff7[21];
unsigned char buff8[21],buff9[21],buff10[21],buff11[21],buff12[21],buff13[21],buff14[21],buff15[21];
unsigned char buff16[21],buff17[21],buff18[21],buff19[21],buff20[21],buff21[21],buff22[21],buff23[21];
unsigned char looper;
unsigned char temp;
unsigned int sensor_data[8],sensor_data1[8],sensor_data2[8];
float suhu_celcius[8],suhu_celcius1[8],suhu_celcius2[8];

// Alphanumeric LCD functions
#include <alcd.h>
#define ADC_VREF_TYPE 0x00

// Read the AD conversion result
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

// Declare your global variables here

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=Out
// State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=0
PORTB=0x00;
DDRB=0x07;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=0xFF
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer1 Stopped
// Mode: Normal top=0xFFFF
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer2 Stopped
// Mode: Normal top=0xFF
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// USART initialization
// USART disabled
UCSRB=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// ADC initialization
// ADC Clock frequency: 691.200 kHz
// ADC Voltage Reference: AREF pin
// ADC Auto Trigger Source: ADC Stopped
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x84;

// SPI initialization
// SPI disabled
SPCR=0x00;

// TWI initialization
// TWI disabled
TWCR=0x00;

// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS – PORTC Bit 0
// RD – PORTC Bit 1
// EN – PORTC Bit 2
// D4 – PORTC Bit 4
// D5 – PORTC Bit 5
// D6 – PORTC Bit 6
// D7 – PORTC Bit 7
// Characters/line: 20
lcd_init(20);

while (1)
{
// Place your code here

for (looper = 0; looper < 8; looper++)
{

temp = PORTB;
temp &= ~0x07;
temp |= looper;
PORTB = temp; // set low 3 bits of PORTB to multiplexor selector

sensor_data[looper] = read_adc(0);
sensor_data1[looper] = read_adc(1);
sensor_data2[looper] = read_adc(2);

suhu_celcius[looper] = (float)sensor_data[looper]*500/1023; //rumus untuk mengubah kedalam derajat celcius
suhu_celcius1[looper] = (float)sensor_data1[looper]*500/1023; //rumus untuk mengubah kedalam derajat celcius
suhu_celcius2[looper] = (float)sensor_data2[looper]*500/1023; //rumus untuk mengubah kedalam derajat celcius

}

ftoa(suhu_celcius[0],0,buff);
ftoa(suhu_celcius[1],0,buff1);
ftoa(suhu_celcius[2],0,buff2);
ftoa(suhu_celcius[3],0,buff3);
ftoa(suhu_celcius[4],0,buff4);
ftoa(suhu_celcius[5],0,buff5);
ftoa(suhu_celcius[6],0,buff6);
ftoa(suhu_celcius[7],0,buff7);

ftoa(suhu_celcius1[0],0,buff8);
ftoa(suhu_celcius1[1],0,buff9);
ftoa(suhu_celcius1[2],0,buff10);
ftoa(suhu_celcius1[3],0,buff11);
ftoa(suhu_celcius1[4],0,buff12);
ftoa(suhu_celcius1[5],0,buff13);
ftoa(suhu_celcius1[6],0,buff14);
ftoa(suhu_celcius1[7],0,buff15);

ftoa(suhu_celcius2[0],0,buff16);
ftoa(suhu_celcius2[1],0,buff17);
ftoa(suhu_celcius2[2],0,buff18);
ftoa(suhu_celcius2[3],0,buff19);
ftoa(suhu_celcius2[4],0,buff20);
ftoa(suhu_celcius2[5],0,buff21);
ftoa(suhu_celcius2[6],0,buff22);
ftoa(suhu_celcius2[7],0,buff23);
lcd_clear();
lcd_gotoxy(0,0);
lcd_puts(buff);
lcd_gotoxy(3,0);
lcd_puts(buff1);
lcd_gotoxy(6,0);
lcd_puts(buff2);
lcd_gotoxy(9,0);
lcd_puts(buff3);
lcd_gotoxy(12,0);
lcd_puts(buff4);
lcd_gotoxy(15,0);
lcd_puts(buff5);
lcd_gotoxy(18,0);
lcd_puts(buff6);
lcd_gotoxy(0,1);
lcd_puts(buff7);

lcd_gotoxy(3,1);
lcd_puts(buff8);
lcd_gotoxy(6,1);
lcd_puts(buff9);
lcd_gotoxy(9,1);
lcd_puts(buff10);
lcd_gotoxy(12,1);
lcd_puts(buff11);
lcd_gotoxy(15,1);
lcd_puts(buff12);
lcd_gotoxy(18,1);
lcd_puts(buff13);
lcd_gotoxy(0,2);
lcd_puts(buff14);
lcd_gotoxy(3,2);
lcd_puts(buff15);

lcd_gotoxy(6,2);
lcd_puts(buff16);
lcd_gotoxy(9,2);
lcd_puts(buff17);
lcd_gotoxy(12,2);
lcd_puts(buff18);
lcd_gotoxy(15,2);
lcd_puts(buff19);
lcd_gotoxy(18,2);
lcd_puts(buff20);
lcd_gotoxy(0,3);
lcd_puts(buff21);
lcd_gotoxy(3,3);
lcd_puts(buff22);
lcd_gotoxy(6,3);
lcd_puts(buff23);

lcd_gotoxy(11,3);
lcd_puts(“Wayan phD”);
delay_ms(100);

}
}

Nah selesai sudah artikel ini, jika ada pertanyaan dapat disampaikan pada kolom koemntar dan semoga bermanfaat.

Dan berikut video demonya;

Tulisan ini di modifikasi dari blog lama saya yaitu https://wayandadangunsri.wordpress.com/2017/03/31/membaca-24-sensor-suhu-lm35-dengan-3-multiplekser-berbasis-atmega-16/

Refrensi:

  1. Atmel, atmega16 datasheet PDF
  2. Wikipedia Indonesia, Atmega 16 (https://id.wikipedia.org/wiki/ATMega16) diakses pada tanggal 31 Oktober 2016
  3. Texas Instruments (National Semiconductor), LM35 Precision Centigrade Temperature Sensors

Membaca 40 Sensor ADC Menggunakan Arduino Uno dengan IC Multiplekser

Membaca 40 Sensor ADC Menggunakan Arduino Uno dengan IC Multiplekser

Kali ini saya akan menulis sebuah tutorial tentang cara membaca banyak sensor menggunakan Arduino. Pada topik ini saya menggunakan Arduino Uno sebagai board mikrokontrolernya. Keterbatasan jumlah pin pada Arduino Uno mengharuskan kita mencari cara agar bisa membaca banyak sensor, tetapi hanya dengan menggunakan sedikit pin.  Berdasarkan dataset Arduino Uno  memiliki jumlah pin Analog (I/O) sebanyak 6 pin yaitu A0 – A5 dengan tingkat resolusi 10 bit. Sedangkan pin input Analog yang paling banyak tersedia pada Arduino Mega sebanyak 15 pin yaitu A0-A14 dengan tingkat resolusi sama.

Baca juga: Membaca 24 Sensor Suhu LM35 dengan 3 Multiplekser Berbasis Atmega 16

Pembacaan sensor dalam jumlah banyak seperti ini sangat mendukung dalam bidang aplikasi IoT (Internet of Things) yang sedang trend saat ini. Dimana dengan menggunakan Arduino sebagai aplikasi dari pembacaan sensor akan jauh lebih murah dan ekonomis serta memiliki standard perusahaan.

Gambar 1. Jumlah pin I/O masing-masing jenis Arduino

Arduino

Secara definisi Arduino adalah pengendali mikro single-board yang bersifat sumber terbuka (open source), diturunkan dari Wiring platform, dirancang untuk memudahkan penggunaan elektronik dalam berbagai bidang. Perangkat kerasnya memiliki prosesor Atmel AVR dan softwarenya memiliki bahasa pemrograman sendiri[2]. Berikut adalah gambar dari board arduino Uno yang menjadi bahasan dalam tulisan ini.

Gambar 2. Papan Arduino Uno R3

Di pasaran ada banyak jenis Arduino yang dapat kita pilih untuk proyek yang akan kita kerjakan baik untuk tujuan hobi ataupun mengerjakan tugas kuliah bahkan untuk tugas akhir. Kelebihan Arduino dibandingkan dengan mikrokontroller lainnya misalnya jenis AVR ATMega 8/16/32/128 adalah sudah siap pakai dan memiliki standar perusahaan. Sedangkan pada AVR ATMega 8/16/32/128 kita harus membuat board dan menambahkan komponen-komponen lainnya agar dapat diprogram sesuai kebutuhan. Pemakaian Arduino pun lebih mudah dibandingkan dengan jenis AVR lainnya. Kemudian software (perangkat lunak) Arduino IDE yang digunakan untuk memprogramnya pun tersedia gratis. Hingga sejauh ini Arduino IDE yang siap di download sudah mencapai versi 1.8.10[3] dan gratis.

Multiplexer

Multiplexer adalah rangkaian logika kombinasional yang dirancang untuk mengalihkan salah satu dari beberapa jalur input ke satu jalur keluaran output[3]. Secara mudahnya adalah dengan input yang banyak kemudian dapat keluar dari satu output keluaran, yang mana jalur input dipilih satu persatu untuk bisa melalui jalur keluaran tanpa mengalami percampuran informasi atau data yang dibawa. Analoginya kira-kira seperti ini agar dapat memahami kinerja dari multiplekser secara mudahnya kita ambil kasus keran air, yang mana pada sebuah keran air ada 10 pipa berbeda yang menjadi input dan pada pipa keluaran hanya ada satu pipa. Lalu secara teknis pipa keluaran tadi akan diinput dari 10 pipa input secara bergantian tanpa bercampur satu sama lain. Jadi, jika pipa input 1 open, maka 9 pipa lainnya akan dimatikan, jika pipa 2 open, maka semua pipa selain pipa 2 akan ditutup, begitu seterusnya secara bergantian.

Biasanya, multiplexer atau disebut juga dengan data selector memiliki jumlah 2n input data dan sejumlah input “kontrol” yang sesuai dengan jumlah input data. Misalnya ada 2n dengan n=3, dan dinotasikan menjadi 23 yaitu 8. Jumlah n adalah sebagai input kontrol dan 8 sebagai input data. Secara lebih jelasnya dapat dilihat pada gamabr 3 dibawah ini:

Gambar 3. Rangkaian Multiplekser 4-to-1 (4 input) mengguanakan gerbang NAND beserta dengan tabel kebenarannya[3].

Jenis IC (Intergrated Circuits, sirkuit terpadu) yang tersedia dipasaran ada banyak untuk multiplekser misalnya IC CD4051 dengan 23 atau 8-to-1, dan IC CD74HC4067 dengan 24 atau 16-to-1. Dan, ada banyak jenis IC lain yang dapat digunakan sebagai IC multiplekser. Kita pun dapat dengan mudah menemukannya dipasar toko elektronika.

Penerapan pada Arduino dengan Menggunakan Simulasi Proteus

Oke, langsung saja kita menuju aplikasi pemrogramannya. Pembuatan skema rangkaian menggunakan software Proteus dan pemrograman menggunakan software Arduino IDE. Berikut skema rangkaian yang saya buat:

Gambar 4. Skema rangkaian MUX 40 input sensor menggunakan Arduino UNO.

Dan, berikut ada sourcode program yang saya buat, programnya sangat sederhana karena memang untuk menjelaskan kinerja dari MUX jadi tidak menggunakan program yang lebih rumit.

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 10, 9, 8, 7);

//Mux control pins
int s0 = 2;
int s1 = 3;
int s2 = 4;

int sensor[40];
int data[40];

void setup(){
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);

lcd.begin(20,4);

//Serial.begin(9600);
}
void loop(){

data_adc();

}

void data_adc()
{

lcd.clear();
lcd.setCursor(3,0);lcd.print(“40 ADC use MUX”);
digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[0] = analogRead(A0);if(sensor[0]>512){ data[0]=1; }else{ data[0]=0; }lcd.setCursor(0,1);lcd.print(data[0]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[1] = analogRead(A0);if(sensor[1]>512){ data[1]=1; }else{ data[1]=0; }lcd.setCursor(1,1);lcd.print(data[1]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[2] = analogRead(A0);if(sensor[2]>512){ data[2]=1; }else{ data[2]=0; }lcd.setCursor(2,1);lcd.print(data[2]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[3] = analogRead(A0);if(sensor[3]>512){ data[3]=1; }else{ data[3]=0; }lcd.setCursor(3,1);lcd.print(data[3]);
digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[4] = analogRead(A0);if(sensor[4]>512){ data[4]=1; }else{ data[4]=0; }lcd.setCursor(4,1);lcd.print(data[4]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[5] = analogRead(A0);if(sensor[5]>512){ data[5]=1; }else{ data[5]=0; }lcd.setCursor(5,1);lcd.print(data[5]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[6] = analogRead(A0);if(sensor[6]>512){ data[6]=1; }else{ data[6]=0; }lcd.setCursor(6,1);lcd.print(data[6]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[7] = analogRead(A0);if(sensor[7]>512){ data[7]=1; }else{ data[7]=0; }lcd.setCursor(7,1);lcd.print(data[7]);

digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[8] = analogRead(A1);if(sensor[8]>512){ data[8]=1; }else{ data[8]=0; }lcd.setCursor(8,1);lcd.print(data[8]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[9] = analogRead(A1);if(sensor[9]>512){ data[9]=1; }else{ data[9]=0; }lcd.setCursor(9,1);lcd.print(data[9]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[10] = analogRead(A1);if(sensor[10]>512){ data[10]=1; }else{ data[10]=0; }lcd.setCursor(10,1);lcd.print(data[10]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[11] = analogRead(A1);if(sensor[11]>512){ data[11]=1; }else{ data[11]=0; }lcd.setCursor(11,1);lcd.print(data[11]);
digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[12] = analogRead(A1);if(sensor[12]>512){ data[12]=1; }else{ data[12]=0; }lcd.setCursor(12,1);lcd.print(data[12]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[13] = analogRead(A1);if(sensor[13]>512){ data[13]=1; }else{ data[13]=0; }lcd.setCursor(13,1);lcd.print(data[13]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[14] = analogRead(A1);if(sensor[14]>512){ data[14]=1; }else{ data[14]=0; }lcd.setCursor(14,1);lcd.print(data[14]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[15] = analogRead(A1);if(sensor[15]>512){ data[15]=1; }else{ data[15]=0; }lcd.setCursor(15,1);lcd.print(data[15]);

digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[16] = analogRead(A2);if(sensor[16]>512){ data[16]=1; }else{ data[16]=0; }lcd.setCursor(16,1);lcd.print(data[16]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[17] = analogRead(A2);if(sensor[17]>512){ data[17]=1; }else{ data[17]=0; }lcd.setCursor(17,1);lcd.print(data[17]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[18] = analogRead(A2);if(sensor[18]>512){ data[18]=1; }else{ data[18]=0; }lcd.setCursor(18,1);lcd.print(data[18]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[19] = analogRead(A2);if(sensor[19]>512){ data[19]=1; }else{ data[19]=0; }lcd.setCursor(19,1);lcd.print(data[19]);
digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[20] = analogRead(A2);if(sensor[20]>512){ data[20]=1; }else{ data[20]=0; }lcd.setCursor(0,2);lcd.print(data[20]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[21] = analogRead(A2);if(sensor[21]>512){ data[21]=1; }else{ data[21]=0; }lcd.setCursor(1,2);lcd.print(data[21]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[22] = analogRead(A2);if(sensor[22]>512){ data[22]=1; }else{ data[22]=0; }lcd.setCursor(2,2);lcd.print(data[22]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[23] = analogRead(A2);if(sensor[23]>512){ data[23]=1; }else{ data[23]=0; }lcd.setCursor(3,2);lcd.print(data[23]);

digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[24] = analogRead(A3);if(sensor[24]>512){ data[24]=1; }else{ data[24]=0; }lcd.setCursor(4,2);lcd.print(data[24]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[25] = analogRead(A3);if(sensor[25]>512){ data[25]=1; }else{ data[25]=0; }lcd.setCursor(5,2);lcd.print(data[25]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[26] = analogRead(A3);if(sensor[26]>512){ data[26]=1; }else{ data[26]=0; }lcd.setCursor(6,2);lcd.print(data[26]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[27] = analogRead(A3);if(sensor[27]>512){ data[27]=1; }else{ data[27]=0; }lcd.setCursor(7,2);lcd.print(data[27]);
digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[28] = analogRead(A3);if(sensor[28]>512){ data[28]=1; }else{ data[28]=0; }lcd.setCursor(8,2);lcd.print(data[28]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[29] = analogRead(A3);if(sensor[29]>512){ data[29]=1; }else{ data[29]=0; }lcd.setCursor(9,2);lcd.print(data[29]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[30] = analogRead(A3);if(sensor[30]>512){ data[30]=1; }else{ data[30]=0; }lcd.setCursor(10,2);lcd.print(data[30]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[31] = analogRead(A3);if(sensor[31]>512){ data[31]=1; }else{ data[31]=0; }lcd.setCursor(11,2);lcd.print(data[31]);

digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[32] = analogRead(A4);if(sensor[32]>512){ data[32]=1; }else{ data[32]=0; }lcd.setCursor(12,2);lcd.print(data[32]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, LOW);sensor[33] = analogRead(A4);if(sensor[33]>512){ data[33]=1; }else{ data[33]=0; }lcd.setCursor(13,2);lcd.print(data[33]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[34] = analogRead(A4);if(sensor[34]>512){ data[34]=1; }else{ data[34]=0; }lcd.setCursor(14,2);lcd.print(data[34]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, LOW);sensor[35] = analogRead(A4);if(sensor[35]>512){ data[35]=1; }else{ data[35]=0; }lcd.setCursor(15,2);lcd.print(data[35]);
digitalWrite(s0, LOW);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[36] = analogRead(A4);if(sensor[36]>512){ data[36]=1; }else{ data[36]=0; }lcd.setCursor(16,2);lcd.print(data[36]);
digitalWrite(s0, HIGH);digitalWrite(s1, LOW);digitalWrite(s2, HIGH);sensor[37] = analogRead(A4);if(sensor[37]>512){ data[37]=1; }else{ data[37]=0; }lcd.setCursor(17,2);lcd.print(data[37]);
digitalWrite(s0, LOW);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[38] = analogRead(A4);if(sensor[38]>512){ data[38]=1; }else{ data[38]=0; }lcd.setCursor(18,2);lcd.print(data[38]);
digitalWrite(s0, HIGH);digitalWrite(s1, HIGH);digitalWrite(s2, HIGH);sensor[39] = analogRead(A4);if(sensor[39]>512){ data[39]=1; }else{ data[39]=0; }lcd.setCursor(19,2);lcd.print(data[39]);
lcd.setCursor(0,3);lcd.print(“By: Wayan Dadang”);
delay(200);

}

Selesai program, lalu compile untuk melihat apakah ada error atau tidaknya dan kemudian jika tidak ada tinggal upload ke Arduino teman-teman dan jika menggunakan software simulasi proteus tinggal upload ke proteus. Dan, berikut video demonya.

Selesai, dan semoga bermanfaat, jika ada pertanyaan silakan sampaikan di kolom komentar.

Refrensi:

  1. Arduino, analogRead (https://www.arduino.cc/reference/en/language/functions/analog-io/analogread/) diakses pada 16 September 2019
  2. Wikipedia, Arduino (https://id.wikipedia.org/wiki/Arduino) diakses pada 16 September 2019
  3. Electonics Tutorials, The Multiplexer (https://www.electronics-tutorials.ws/combination/comb_2.html) diakses pada 26 Oktober 2019

Tutorial Pengaturan untuk Grup Live Streaming Youtube dengan Banyak Peserta (Kamera/Laptop) dari Google Hangouts Menggunakan Encoder OBS Studio

Tutorial Pengaturan untuk Grup Live Streaming Youtube dengan Banyak Peserta (Kamera/Laptop) dari Google Hangouts Menggunakan Encoder OBS Studio

Pada Agustus 2019 kami dari tim IT I-4 (Ikatan Ilmuwan Indonesia Internasional) kesulitan untuk melakukan live streaming  “Diaspora Talk” menggunakan aplikasi Hangouts Air ke Youtube. Dikarenakan fasilitas Hangouts On Air telah dimatikan selamanya pada 1 Agustus 2019 oleh pihak Google[1]. Kebetulan pada waktu itu I-4 dan Dikti sedang mengadakan acara besar tahunan yaitu SCKD (Simposium Cendekia Kelas Dunia) yang diadakan di Jakarta.

Baca juga: Tutorial Mem-Plot Grafik dari Arduino ke Visual Mikro pada  Visual Studio 2015 dan 2017

Fasilitas ini sangat penting pada kegiatan obrolan grup secara live streaming ke youtube, misalnya kami sering menggunakannya untuk kegiatan I-4 Talk dan I-4 Lecture dan menyiarkannya ke channel Youtube Media I-4 agar bisa di tonton oleh banyak orang secara daring (online). Kemudian penggunaannya pun cukup mudah dan tidak memerlukan encoder sebagai media pihak ketiga  untuk melakukan streaming online ke Youtube.

Gambar 1. Hangouts On Streaming sudah tidak ada lagi dan dignatikan dengan Youtube.com/Webcam.

Pada saat ini fasilitas yang tersedia hanya untuk streaming pribadi melalui Youtube Wabcam dan tidak bisa digunakan untuk streaming grup. Penggunaannya pun sangat mudah tinggal klik saja link http://youtube.com/webcam dan kita pun akan diarahkan ke Youtube Studio untuk membuat sebuah event streaming online. Sedangkan untuk melakukan streaming grup harus menggunakan software pihak ketiga sebagai alat bantu.

Berdasarkan dari hal tersebut pada tulisan kali ini dibuat lebih ke sebuah tutorial menggunakan software (perangkat lunak) OBS (Open Broadcaster Software) Studio. OBS Studio merupakan sebuah software open source dan gratis yang banyak digunakan untuk kegiatan live streaming dan video recording[2]. Selain gratis software ini juga dapat diinstall pada Windows, Linux, dan MacOS. Oleh karena itu OBS Studio sangat membantu dalam kegiatan yang berkaitan dengan live streaming grup melalui Youtube melalui Hangouts. Artikel panduan inipun tidak difokuskan pada sebuah grup diskusi tapi bisa digunakan untuk kegiatan grup streaming lainnya seperti game grup, diskusi grup, forum ilmiah, dll.

Gambar 1. Laman website OBS Studio[1]
Gambar 2. Laman website OBS Studio[1]

Oke, langsung saja kita menuju bagaimana cara untuk dapat melakukan Grup Streaming Youtube melalui Google Hangouts menggunakan OBS Studio tanpa Hangouts on Air.

Step 1 Install OBS:

  1. Unduh terlebih dahulu master software OBS dari link berikut: https://obsproject.com/
  2. Pilih bit sesuai dengan spesifikasi OS windows yang terinstall 32/64 bit
  3. Install OBS seperti pada software pada umumnya
  4. Tunggu hingga proses instalasi selesai

Step 2 Menampilkan Windows Capture pada OBS Video:

            Step 2 adalah cara untuk bagaimana kita bisa menampikan laman Google Hangouts ke software OBS Studio dan dari laman inilah kita bisa mengirim rekaman ke channel youtube. Selain bisa menampilkan sebuah laman dari tab google, kita juga bisa menampikan laman lainnya seperti software yang sedang kita gunakan (misalnya word, excel, winamp, folder, game, bahkan kita bisa men-streaming-kan film yang sedang kita tonton di laptop/pc ke youtube) dan banyak lagi, tetapi untuk bahasan selain menampilkan Google Hangouts, tidak dibahas pada artikel panduan ini. Adapun cara untuk menampilkan laman google hangouts ke OBS Studio adalah sebagai berikut ini:

  1. Buka software OBS
  2. Lalu kita setting dari sources dan klik tanda plus (+), seperti pada gambar dilingkari merah dibawah ini,

    Gambar 3. Menambahkan Windows Capture ke Sources pada OBS Studio
  3. Lalu pilih Window Capture seperti pada gambar dibawah ini (yang dilingkari merah),

    Gambar 3. Memilih Windows Capture ke Sources pada OBS Studio
  4. Lalu klik OK
  5. Setelah klik OK, kita dibawa ke Properties for ‘Window Capture’ disini kita akan men-setting agar laman tab Google Hangouts yang sedang kita buka pada Google dapat ditampikan ke OBS Studio.
  6. Buka Google Chrome dan arahkan tab ke Google Hangouts yang sedang video call, seperti pada gambar dibawah ini (yang dilingkari warna merah):Note: OBS akan menampilkan tab yang sedang kita buka, jadi jika bukan Google Hangouts maka akan menampilkan yang lainnya.

    Gambar 4. Mengarahkan ke tab Hangouts pada Google Chrome
  7. Lalu pada , Properties for ‘Window Capture’ klik Window dan pilih [chrome.exe]: Google Hangouts – Google Chrome (Seperti pada gambar yang dilingkari merah dibawah ini) dan jangan lupa centang Capture Cursor.
    Gambar 5. Memilih [chrome.exe]: Google Hangouts – Google Chrome pada Window OBS
  8. Dan, jika tidak ada masalah akan muncul seperti pada gambar dibawah ini:

    Gambar 6. Tampilan ketika Capture Google Hangouts berhasil dilakukan oleh software OBS Studio
  9. Klik OK, dan akan tampil seperti berikut ini pada OBS:

    Gambar 7. Tampilan Capture Google Hangouts yang siap streaming

Jika tampilannya tetap Blank Hitam maka kita harus Disable Hardware Acceleration di Chrome dengan langkah-langkah berikut ini:

  1. Buka Google Chrome
  2. Klik Customize and Control Google Chrome > Settings.
  3. Klik pada Show advanced settings and scroll to the System section.
  4. Geser menjadi warna abu-abu pada Use hardware acceleration when available, seperti pada gambar dibawah ini:

    Gambar 8. Men-disable hardware acceleration
  5. Lalu restart Google Chrome.
  6. Lakukan kembali langkah-langkah pada Step 2 hingga selesai.
  7. Jika berhasil akan tampil seperti pada gambar dibawah ini:

    Gambar 8. Campture Hangouts muncul setelah men-disable hardware acceleration
  8. Klik Ok, dan akan tampil seperti pada gambar dibawah ini:

    Gambar 9. Tampilan Capture Google Hangouts yang siap streaming

Step 3 Menyiapkan Setting untuk Streaming via Youtube:

  1. Pada menu Controls klik Settings, Seperti yang dilingkari merah pada gambar dibawah ini,

    Gambar 10. Masuk ke menu Settings pada papan Controls OBS Studio
  2. Dari menu settings klik Stream seperti pada gambar yang dilingkari merah,

    Gambar 11. Memasukkan Stream Key dari Channel Event Youtube Studio
  3. Ubah service menjadi YouTube/Youtube Gaming
  4. Ubah Server menjadi Primary Youtube Ingest Server
  5. Buat event baru di Youtube untuk mendapatkan Stream Key.
  6. Buka Channel Youtube yang akan digunakan untuk streaming.
  7. Klik ikon video plus pada pojok atas channel youtube seperti pada gambar yang dilingkari merah dibawah ini:

    Gambar 12. Memulai pembuatan event streaming youtube
  8. Pilih dan klik Go Live
  9. Pilih Stream BETA dan New Stream, seperti pada gambar dibawah ini:

    Gambar 13. Membuat New Streaming pada Youtube Studio
  10. Atur nama judul acara sesuai keinginan dan yang lainnya seperti pada gambar dibawah ini:

    Gambar 14. Pengaturan nama event dan kebutuhan lainnya sesuai dengan tema acara.
  11. Thumbnail bisa pilih dari poster yang telah kita desain
  12. Lalu klik Create Stream
  13. Copy stream name/key ke encoder OBS Studio seperti pada gambar dibawah ini:

    Gambar 15. Copy Stream Key lalu klik Apply dan OK
  14. Lalu klik Apply dan OK

Step 4 (Trakhir) Menyiapkan untuk Streaming secara Daring (Online) ke Channel Youtube kita:

  1. Sediakan jaringan yang cepat (missal Wifi atau jaringan 4G)
  2. Pada software OBS Studio klik Start Streaming pada menu Controls, seperti pada gambar dibawah ini,

    Gambar 16. Memulai Streaming dengan meng-klik tombol start streaming pada papan control.
  3. Kita dapat merekam Video Call pada Google Hangouts dengan klik Start Recording pada Control dibawah Start Streaming.
  4. Bukti bahwa kita telah streaming dari OBS dapat dilihat pada gambar dibawah ini yang dilingkari merah, dan kita dapat mengetahui kualitas streaming kita dengan melihat warna hijau (good), kuning (warning), dan merah (jelek).

    Gambar 17. Pengecekan kualitas streaming.
  5. Sekarang menuju Studio Youtube event yang kita buat tadi jika jaringan bagus maka akan muncul video hangouts di tab video seperti pada gambar dibawah ini:
    Gambar 18. Memulai GO LIVE

    Note: Pada saya tidak muncul karena saya pakai kuota internet jadi jaringan lelet.

  6. Klik GO LIVE
  7. Jika kita sudah Live maka akan muncul seperti pada gambar dibawah ini yang dilingkari merah:

    Gambar 19. Tampilan bahwa kita sudah mulai LIVE
  8. Untuk men-share link Live kita dapat dilakukan dengan klik Share pada anah panah melengkung pada Studio Yotube kita seperti pada gambar dibawah ini (yang dilingkari):

    Gambar 20. Cara share link streaming.
  9. Copy link yang disedakan seperti pada gambar dibawah ini yang dilingkari merah dibawah ini:

    Gambar 21. Men-copy share link streaming
  10. Orang dapat menonton channel kita yang sedang live streaming.
  11. Note: Jangan membuka channel youtube tersebut pada laptop yang sedang kita gunakan sebagai operator, karena dapat mengubah laman pada OBS seperti penjelasan STEP 2
  12. Orang-orang dapat menonton streaming kita seperti pada gambar dibawah ini:

    Gambar 22. Sekarang kita sudah live di channel youtube kita.
  13. Tanda yang dilingkari merah berarti kita sudah Live di Youtube
  14. Jika ingin memberhentikan streaming tinggal klik END STREAM, seperti pada gambar dibawah ini:

    Gambar 23. Klik tombol END STREAM buat stop streaming.
  15. SELESAI
  16. SEMOGA BERMANFAAT

Refrensi:

  1. StreamYard, “Hangouts on Air going away August 1, 2019”, (https://streamyard.com/resources/hangouts-on-air-going-away/) diakses pada 15 September 2019
  2. OBS (Open Broadcaster Software), (https://obsproject.com/) diakses pada 15 September 2019

Tim Ilmuwan dari Universitas Memphis Menerapkan Kecerdasan Buatan untuk Memantau Kepadatan Lalu Lintas Berbasis Wi-Fi

Tim Ilmuwan dari Universitas Memphis Menerapkan Kecerdasan Buatan untuk Memantau Kepadatan Lalu Lintas Berbasis Wi-Fi

Kemacetan Lalu Lintas Kota

Kemacetan lalu lintas merupakan masalah utama pada kota-kota metropolitan seperti Jakarta dan kota-kota besar di Indonesia lainnya. Kemacetan harus segera kita pecahkan bersama, mengingat betapa besarnya kerugian yang disebabkan oleh kemacetan lalu lintas dari tahun ke tahun. Diketahui kerugian yang disebabkan oleh kemacetan pada kota Jakarta saja mencapai 67 Triliun per tahun[1].

Baca juga: Apakah Ada yang Belum Kamu Ketahui Tentang Google Maps?

Kemacetan sering terjadi pada saat jam berangkat kerja yaitu pada jam 07.00 – 08.30 pada pagi hari dan jam pulang kerja yaitu jam 16.00 – 17.00 pada sore hari. Pada jam ini jumlah kendaraan yang menggunakan jalan raya benar-benar padat, sehingga menyumbat lalu lintas dari kedua arah[2][3]. Selain jam tersebut lalu lintas jalan lebih longgar dan mudah untuk dilewati tanpa harus berdesak-desakkan dengan kendaraan lainnya. Kemudian kemacetan juga dapat terjadi pada peringatan-peringatan hari besar, misalnya hari raya idul fitri, seringkali arus puncak terjadi pada saat pulang kampung dan arus balik.

Gambar1. Kemacetan Kendaraan (sumber: www.google.com)

Kemacetan bisa terjadi karena disebabkan oleh jumlah kendaraan yang semakin meningkat jumlahnya dari tahun ke tahun. Hal ini dapat kita lihat berdasarkan data yang disediakan secara online oleh BPS (Badan Pusat Statistik) dari tahun 1949-2016. Dari data yang disediakan oleh BPS secara online tersebut dapat kita lihat bahwa jumlah total kendaraan bermotor menurut jenis (mobil penumpang, mobil bis, mobil barang, dan sepeda motor) pada 2016 berjumlah 129.281.079 buah[4]. Jumlah tersebut belum terhitung pada tahun 2017 dan 2018. Diperkirakan jumlah kendaraan akan terus meningkat dari tahun ke tahun, sehingga membutuhkan infrastruktur yang memadai agar dapat menampung seluruh lalu lintas pengguna jalan.

Kemacetan yang terjadi di kota-kota besar di Indonesia akan terus meningkat seiring dengan semakin bertumbuhnya perekonomian dan pemekaran kota. Semakin membaiknya pertumbuhan perekonomian suatu negara akan menyebabkan semakin meningkatkan pendapatan setiap keluarga, hal ini akan menyebabkan orang-orang untuk membeli kendaraan sendiri sebagai alat transportasi pribadi. Meningkatnya jumlah kendaraan pribadi yang tidak diringi dengan perkembangan infrastruktur jalan yang memadai akan semakin menimbulkan berbagai masalah kemacetan yang tidak ada habis-habisnya di selesaikan.

Dalam upaya mememecahkan permasalahan kemacetan yang semakin meningkat dari tahun ke tahun tidak dapat diselesaikan dengan hanya mengatasi masalah dipermukaan saja seperti membangun infrastruktur jalan layang, membangun terowongan, atau yang lainnya. Pembanguan infrastruktur jalan yang baru akan memangkas dana pembangunan yang sangat besar. Hal seperti ini jika kita hanya berfokus pada penyelesain pada satu titik yang terpusat pada kota-kota saja dapat menghambat penyebaran pembagunan secara merata ke seluruh wilayah Indonesia lainnya seperti wilayah bagian timur.

Penerapan Smart City

Pemecahan lebih lanjut dengan semakin meningkatnya jumlah kendaraan dalam jumlah besar dari tahun ke tahun harus dicari sampai ke titik akar masalahnya. Salah satu upaya yang dapat diandalkan dimasa depan adalah dengan menerapkan teknologi kota pintar (smart city). Sistem kota pintar dapat menjadi solusi karena mampu menjawab 3 (tiga) hal, yaitu, pertama adalah mengetahui (sensing) keadaan kota, kedua memahami (understanding) keadaan kota lebih jauh, dan yang ketiga dapat melakukan aksi (acting) terhadap permasalahan[5].

Gambar 2. Konsep Smart City (Sumber: www.google.com)

Pada poin pertama adalah mengetahui (sensing) yang sangat penting dalam kasus kita ini untuk mengetahui jumlah kendaraan yang melewati suatu jalan hingga akhirnya berpeluang menyebabkan kemacetan. Pada artikel ini hanya memberi solusi pada poin pertama saja, karena berfokus pada pemantauan jumlah kendaraan yang melewati suatu jalan umum pada sebuah kota besar. Pada sebuah kota pintar dapat mengetahui jumlah kendaraan yang melewati suatu jalan dengan menggunakan beberapa sensor yang terpasang pada badan jalan. Teknologi sensor yang sangat membantu dalam mengetahui hingga jenis kendaraan apa saja yang melewati suatu jalan raya adalah menggunakan kamera.

Teknologi untuk memonitor jumlah pengguna jalan seperti ini disebut sebagai sistem pemantau lalu lintas atau traffic monitoring system (TMS). Hanya saja jika kita menggunakan teknologi kamera sebagai sensor, disini kita harus memperhatikan beberapa hal yaitu berupa tingkat resolusi kamera dan berapa lebar jalan yang harus dihitung jumlah kendaraan yang melewatinya. Semakin tinggi resolusi kamera harganya pun akan semakin tinggi pula, begitu juga dengan semakin lebarnya jalan akan menyebabkan semakin banyak pula jumlah kamera yang dibutuhkan. Hal ini menimbulkan suatu masalah yang dianggap kurang ekonomis karena mahalnya sistem alat monitoring yang digunakan.

Ide yang paling penting dari memonitor jumlah kendaraan ini adalah untuk membatasi jumlah kendaraan yang melewati suatu ruas jalan yang pada akhirnya jika tidak terkendali jumlah akan menyebabkan waktu banyak terbuang dijalan karena masalah kemacetan.

 

Referensi:

  1. Aziza, Kurnia Sari. 2017. “Bappenas: Kerugian akibat Macet Jakarta Rp 67 Triliun Per Tahun“. Kompas Ekonomi, 6 Oktober 2017 (https://ekonomi.kompas.com/read/2017/10/06/054007626/bappenas-kerugian-akibat-macet-jakarta-rp-67-triliun-per-tahun.) diakses pada 6 Januari 2019
  2. Mirlanda, Ayu Mirna. 2011. “Kerugian Ekonomi Akibat Kemacetan Lalu Lintas di Ibukota“. Tugas Karya Akhir diterbitkan, Depok: Fakultas Ilmu Sosial dan Ilmu Politik Program Studi Ilmu Komunikasi Kekhususan Komunikasi Massa Universitas Indonesia
  3. Mangatur, et al. 2018. “Analisis Dampak Kemacetan Lalu Lintas Terhadap Pendapatan Masyarakat dan Aksesibilitas Di Kota Jambi“. JURNAL PEMBANGUNAN BERKELANJUTAN eISSN: 2622-2310 (p); 2622-2302 (e), Volume 1. no (1) 2018
  4. Badan Pusat Statistik, Perkembangan Jumlah Kendaraan Bermotor Menurut Jenis, 1949-2016 (https://www.bps.go.id/linkTableDinamis/view/id/1133) diakses pada 21 Januari 2019
  5. Prasetyono, Agus Puji. 2016. “IPTEK : Solusi Komprehensif Atasi Kemacetan Lalu-Lintas“. Kementerian Riset, Teknologi, Dan Pendidikan Tinggi Republik Indonesia, 23 Juli 2016 (https://ristekdikti.go.id/kolom-opini/iptek-solusi-komprehensif-atasi-kemacetan-lalu-lintas/) diakses pada tanggal 23 Januari 2019
  6. https://techxplore.com/news/2019-01-deepwitraffic-wi-fi-based-traffic-deep.html
  7. https://arxiv.org/pdf/1812.08208.pdf

BrambleBee: Sebuah Robot Otonom yang Bertugas untuk Membantu Penyerbukan pada Tanaman

BrambleBee: Sebuah Robot Otonom yang Bertugas untuk Membantu Penyerbukan pada Tanaman

Teknologi sampai hari ini sudah semakin maju. Dimana-mana kita sering melihat berbagai media informasi bahwa teknologi telah menjadi sebuah kebutuhan hidup bagi manusia. Teknologi-teknologi tersebut diterapkan diberbagai bidang kehidupan masyarakat. Konsumen terbesar yang menggunakan teknologi maju adalah bidang industri. Penciptaan teknologi tinggi bukan tidak memiliki tujuan, tetapi bagaimana sebuah teknologi dapat mempermudah pekerjaan manusia yang sulit untuk dikerjakan.

Pada tulisan kali ini, penulis akan membahas sebuah robot canggih bernama “brambleBee” yang mempunyai tugas untuk membantu dalam proses penyerbukan bunga. Kita sudah sama-sama tahu bahwa kebutuhan manusia semakin meningkat dari hari kehari seiring dengan semakin bertambahnya jumlah penduduk Bumi. Hingga Agustus 2018 jumlah penduduk Bumi menurut 2018 World Population telah mencapai 7,63 miliar jiwa[1]. Indonesia sendiri memiliki populasi total mencapai 267 juta jiwa dan menduduki urutan ke 4 sebagai negara yang mempunyai penduduk terbanyak di Dunia[1].

Gambar 1. Robot brambleBee[3]

Banyaknya jumlah penduduk Dunia menjadi persoalan baru dalam upaya memenuhi setiap kebutuhan hidupnya. Ditambah dengan masalah ekosistem yang semakin terganggu oleh banyak faktor seperti perubahan iklim, populasi manusia itu sendiri, hingga berkurangnya hutan, dll. Kita sudah sama-sama tahu bahwa tanaman tidak bisa melakukan penyerbukan sendiri, oleh karena itu biasanya proses tersebut membutuhkan bantuan secara alami dengan sismbiosis mutualisme antara tanaman dengan lebah. Namun, belakangan ini populasi penyerbuk alami di Amerika kususnya lebah, menurun pada tingkat yang belum pernah terjadi  dari sebelumnya. Hal ini membuat kita cukup waspada terhadap dampak yang akan ditimbulkannya, terutama kusus wilayah pertanian di Amerika Serikat, dan bisa saja terjadi untuk wilayah Indonesia[2][3][4].

Berdasarkan dari masalah tersebutlah Nicholas Ohi et al, dari West Virginia University (WVUmenulis paper dengan judul “Design of an Autonomous Precision Pollination Robot“. Paper tersebut membahas mengenai sebuah robot yang dibuat terinspirasi dari lebah yang memiliki tugas melakukan penyerbukan pada tanaman dalam sebuah rumah kaca. Paper mereka tersebut kemudian diterbitkan di jurnal arxiv. Dana penelitian robot mereka tersebut didanai oleh  Institut Nasional Pangan dan Pertanian (NIFA), sebuah agensi dari Departemen Pertanian AS (USDA), di bawah National Robotics Initiative.

Selama proses persiapan hingga penyerbukan, robot melakukan beberapa proses penting guna menentukan langkah awal agar bisa menjangkau seluruh lokasi tanaman secara cepat dan efisien. Tahap pertama pada proses sebelum penyerbukan adalah melakukan lokalisasi kelompok bunga dan persiapan penyerbukan. Pada proses lokalisasi ini, robot akan berkeliling ke seluruh tanaman secara satu per satu untuk merekam kelompok bunga dengan menggunakan kamera pada robot. Dari hasil rekaman kelompok bunga ini akan dibuatkan sebuah peta baris bunga untuk memudahkan pada saat proses penyerbukan.

Setelah proses pemetaan setiap bunga pada masing-masing tanaman yang akan dilakukan proses penyerbukan selesai, tahap selanjutnya adalah menentukan lintasan terpendek dengan meminimalkan lintasan robot. Pada tahap ini robot harus mampu menghitung lintasan terpendek tanpa harus mengulangi lintasan yang sama lebih dari sekali dan juga harus mempu menghindari rintangan selama dalam perjalanan. Langkah ini dilakukan agar robot bisa lebih hemat waktu dengan lebih cepat serta dapat bekerja lebih efisien tanpa harus melakukan proses yang berulang kali pada lintasan yang sama.

Nah, setelah proses lokalisasi dan pemetaan lintasan paling efisien selesai, barulah robot akan melakukan proses penyerbukan bunga pada semua tanaman. Pada proses penyerbukan robot menggunakan lengannya untuk menjangkau setiap posisi bunga pada tanaman. Lengan robot ini dalam dunia robotika disebut sebagai manipulator, semakin panjang manipulator yang dimiliki oleh  sebuah robot, semakin jauh dan tinggi posisi bunga yang bisa dijangkau oleh robot.

Robot penyerbukan “BrambleBee” ini adalah jenis pertama yang pernah dibuat. Robot ini memiliki kemampuan penyerbukan yang terinspirasi dari cara lebah dalam melakukan penyerbukan. Manipulator robot terpasang alat penyerbukan dengan cara yang mirip dengan lebah, sehigga robot dapat melakukan gerakan penyerbukan dalam mendistribusikan serbuk sari ke putik tanpa merusak bunganya. Menurut pengembangnya robot ini akan dikembangkan lagi ke lingkungan yang lebih kompleks dan kedepaannya akan ditambahi beberapa kemampuan lain seperti mampu memanen, membersihkan buah, dll[4].

 

Berikut adalah video demo dari robotnya.

 

Referensi:

  1. 2018 World Population by Country (Live) (http://worldpopulationreview.com/) diakses pada 8 September 2018
  2. Ohi, Nicholas et al. 2018. “Design of an Autonomous Precision Pollination Robot“. Arxiv, Accepted to be published in: Proceedings of the 2018 IEEE/RSJ International Conference on Intelligent Robots and System (IROS 2018), October 1-5, 2018, Madrid, Spain
  3. Fadelli, Ingrid. 2018. “BrambleBee: An autonomous robot to pollinate bramble plants“. Tech Xplore, 7 September 2018 (https://techxplore.com/news/2018-09-bramblebee-autonomous-robot-pollinate-bramble.html) diakses pada 8 September 2018
  4. The White House Barack Obama, Fact Sheet: The Economic Challenge Posed by Declining Pollinator Populations (https://obamawhitehouse.archives.gov/the-press-office/2014/06/20/fact-sheet-economic-challenge-posed-declining-pollinator-populations) diakses pada 8 September 2018