[[{"fid":"162","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Memantau Suhu dan Kelembaban Rumah Melalui Smartphone Android.png","field_file_image_title_text[und][0][value]":"Memantau Suhu dan Kelembaban Rumah Melalui Smartphone Android.png"},"type":"media","link_text":null,"attributes":{"alt":"Memantau Suhu dan Kelembaban Rumah Melalui Smartphone Android.png","title":"Memantau Suhu dan Kelembaban Rumah Melalui Smartphone Android.png","height":"627","width":"1200","class":"media-element file-wysiwyg"}}]]
Kenyamaan rumah menjadi hal yang penting didalam sebuah keluarga. Salah satu penyebab yang membuat kenyaman sebuah rumah yaitu Suhu dan Kelembaban sendiri. Mungkin banyak yang akan merasa "Galau" jika suhu udara sudah mulai tidak bersahabat. Karena sebagai makluk hidup pada hakikatnya membutuhkan suhu udara yang tepat untuk memenuhi kebutuhan hidupnya. Agar lebih efisien maka perlu dilakukan proses pengukuran. Proses dan alat pengukuran suhu dan kelemababan yang banyak saat ini beredar kadang-kadang membuat kita menjadi lebih Ribet dan Prustasi dalam pemakaian. Disamping itu juga, dalam pemakaian alat kadang-kadang banyak membuang-buang waktu hanya sekedar untuk mengetahui seberapa tinggi suhu udara dan kelembaban didalam rumah. Padahal dijaman yang modern ini waktu itu merupakan hal yang sangat berharga sekali. Maka dari itu, kenapa kita tidak memanfaatkan kecanggihan dari Smarphone Android yang ada digengaman tangan saja untuk melihat Hal-Hal seperti ini.
Terus bagaimana caranya untuk melihat Suhu dan Kelembaban Udara melalui Smartphone Android kita?? Ayoo kita lakukan eksperiman untuk mendapatkan jawabanya. Pertama persiapkan bahan-bahanya seperti :
- Mikrokontroler Arduino
- Modul Bluetooth
- Sensor Suhu dan Kelembaban
- Tentunya Smartphone Android
Ini merupakan bahan-bahan inti dari eksperimen yang akan kita lakukan. Bahan-bahan ini sangatlah mudah untuk didapatkan karena sudah beredar luas dipasaran dan harganya sangat murah. Dengan jadinya alat ini nanti maka, untuk mengukur Suhu dan Kelembaban Rumah akan menjadi lebih Cepat, Tidak Ribet dan Canggih hanya cukup Memonitoring dari Smartphone Android anda.
Ayo cukup basa-basinya kita lanjut ke pengerjaanya rangkaian perangkat keras seperti gambar 1 dibawah ini, Pada Gambar 1 juga memperlihatkan Sistem Kerja dari alat :
[[{"fid":"163","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"Kenyamaan rumah menjadi hal yang penting didalam sebuah keluarga. Salah satu penyebab yang membuat kenyaman sebuah rumah yaitu Suhu dan Kelembaban sendiri. Mungkin banyak yang akan merasa \"Galau\" jika suhu udara sudah mulai tidak bersahabat. Karena sebaga","field_file_image_title_text[und][0][value]":"Kenyamaan rumah menjadi hal yang penting didalam sebuah keluarga. Salah satu penyebab yang membuat kenyaman sebuah rumah yaitu Suhu dan Kelembaban sendiri. Mungkin banyak yang akan merasa \"Galau\" jika suhu udara sudah mulai tidak bersahabat. Karena sebaga"},"type":"media","attributes":{"alt":"Kenyamaan rumah menjadi hal yang penting didalam sebuah keluarga. Salah satu penyebab yang membuat kenyaman sebuah rumah yaitu Suhu dan Kelembaban sendiri. Mungkin banyak yang akan merasa \\\"Galau" jika suhu udara sudah mulai tidak bersahabat. Karena sebaga","title":"Kenyamaan rumah menjadi hal yang penting didalam sebuah keluarga. Salah satu penyebab yang membuat kenyaman sebuah rumah yaitu Suhu dan Kelembaban sendiri. Mungkin banyak yang akan merasa \\\"Galau" jika suhu udara sudah mulai tidak bersahabat. Karena sebaga","height":"209","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
Jika rangkain sudah diRancang mari kita lanjutkan ke pemrogramannya, dimulai dari pembuat program untuk mikrokontroler seperti dibawah ini :
#include <MeetAndroid.h> #include <dht11.h> dht11 DHT11; #define DHT11PIN 7 int data = 0; int ld2; int celsius = 0; int kelembaban = 0; MeetAndroid meetAndroid; void setup(){ Serial.begin(38400); meetAndroid.registerFunction(leda,'A'); } void loop() { meetAndroid.receive(); DHT11.read(DHT11PIN); celsius = (DHT11.temperature); kelembaban = (DHT11.humidity) + 500; meetAndroid.send(kelembaban); delay(2000); meetAndroid.send(celsius); } void leda(byte flag, byte numOfValues) { ld2=meetAndroid.getInt(); }
Kemudian pembuat program untuk Androidnya :
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/tema" > <!-- android:background="#ffffff" warna putih--> <EditText android:id="@+id/deviceIDField" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp"> </EditText> <Button android:id="@+id/okButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Set ID" /> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@drawable/tema" > <!-- android:background="#ffffff" warna putih--> <EditText android:id="@+id/deviceIDField" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="100dp"> </EditText> <Button android:id="@+id/okButton" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="20dp" android:text="Set ID" /> </LinearLayout>
<RelativeLayout xmlns:android="<a href="http://schemas.android.com/apk/res/android">http://schemas.android.com/apk/res/android</a>" xmlns:tools="<a href="http://schemas.android.com/tools">http://schemas.android.com/tools</a>" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.Miarana.suhuamarino.MainActivity" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_marginTop="5dp" android:text="@string/celsius_" android:textSize="20dp"/> <TextView android:id="@+id/textKelembaban" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView2" android:layout_alignBottom="@+id/textView2" android:layout_marginLeft="26dp" android:layout_toRightOf="@+id/textView2" android:text="%" android:layout_marginTop="50dp" android:textSize="20dp"/> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/progressBar1" android:layout_below="@+id/progressBar1" android:layout_marginTop="96dp" android:text="Kelembaban :" android:textSize="20dp"/> <ProgressBar android:id="@+id/progressBarKelembaban" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" android:layout_marginTop="23dp" android:max="100" /> <ProgressBar android:id="@+id/progressBarCelsius" style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:layout_marginTop="26dp" android:max="50" /> <TextView android:id="@+id/textCelsius" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/textView1" android:layout_alignBottom="@+id/textView1" android:layout_toRightOf="@+id/textView2" android:text="degC" android:textSize="20dp"/> </RelativeLayout>
package com.Miarana.suhuamarino; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import at.abraxas.amarino.Amarino; public class InputUser extends Activity implements OnClickListener { private static final String TAG = "Suhu dan Kelembaban"; public static String DEVICE_ADDRESS; EditText idField; Button button; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.input); Log.d(TAG, "Main onStart"); // get references to views defined in our main.xml layout file idField = (EditText) findViewById(R.id.deviceIDField); button = (Button) findViewById(R.id.okButton); // register listeners button.setOnClickListener(this); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); DEVICE_ADDRESS = prefs.getString("device", "20:13:10:16:01:21"); idField.setText(DEVICE_ADDRESS); } public void onClick(View v) { DEVICE_ADDRESS = idField.getText().toString(); PreferenceManager.getDefaultSharedPreferences(this) .edit() .putString("device", DEVICE_ADDRESS) .commit(); Amarino.connect(this, DEVICE_ADDRESS); Intent i = new Intent(this, MainActivity.class); startActivity(i); } }
package com.Miarana.suhuamarino; import android.R.integer; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.SharedPreferences; import android.os.Bundle; import android.preference.PreferenceManager; import android.support.v7.app.ActionBarActivity; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.widget.ProgressBar; import android.widget.TextView; import at.abraxas.amarino.Amarino; import at.abraxas.amarino.AmarinoIntent; public class MainActivity extends ActionBarActivity { //private static final String DEVICE_ADDRESS = "20:13:10:16:01:21"; public TextView celsius, kelembaban; private ProgressBar mProgressCelsius, mProgressKelembaban; private ArduinoReceiver arduinoReceiver = new ArduinoReceiver(); private static final String TAG = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Amarino.connect(this, DEVICE_ADDRESS); celsius = (TextView) findViewById(R.id.textCelsius); kelembaban = (TextView) findViewById(R.id.textKelembaban); mProgressCelsius = (ProgressBar) findViewById(R.id.progressBarCelsius); mProgressKelembaban = (ProgressBar) findViewById(R.id.progressBarKelembaban); mProgressCelsius.setProgress(0); mProgressKelembaban.setProgress(0); } @Override protected void onStart() { super.onStart(); registerReceiver(arduinoReceiver, new IntentFilter(AmarinoIntent.ACTION_RECEIVED)); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); new Thread(){ public void run(){ try { Thread.sleep(6000); } catch (InterruptedException e) {} Log.d(TAG, "Hello");//logs debug messages } }.start(); } @Override protected void onStop() { super.onStop(); // stop Amarino's background service, we don't need it any more Amarino.disconnect(this, InputUser.DEVICE_ADDRESS); } public class ArduinoReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String data = null; String dataKelembaban = null; String dataCelsius = null; int dataCelsiusProgress = 0; int dataKelembabanProgres = 0; // the device address from which the data was sent, we don't need it here but to demonstrate how you retrieve it final String address = intent.getStringExtra(AmarinoIntent.EXTRA_DEVICE_ADDRESS); // the type of data which is added to the intent final int dataType = intent.getIntExtra(AmarinoIntent.EXTRA_DATA_TYPE, -1); // we only expect String data though, but it is better to check if really string was sent // later Amarino will support differnt data types, so far data comes always as string and // you have to parse the data to the type you have sent from Arduino, like it is shown below if (dataType == AmarinoIntent.STRING_EXTRA){ data = intent.getStringExtra(AmarinoIntent.EXTRA_DATA); final int sensorReading = Integer.parseInt(data); if (data != null ){ try { if(sensorReading > 100) { dataKelembaban = String.valueOf(sensorReading - 500); if(Integer.parseInt(dataKelembaban) > 100) { dataKelembaban = String.valueOf(100); kelembaban.setText(dataKelembaban + " %"); dataKelembabanProgres = Integer.parseInt(dataKelembaban); mProgressKelembaban.setProgress(dataKelembabanProgres); } else { kelembaban.setText(dataKelembaban + " %"); dataKelembabanProgres = Integer.parseInt(dataKelembaban); mProgressKelembaban.setProgress(dataKelembabanProgres); } } else { // since we know that our string value is an int number we can parse it to an integer if(sensorReading > 50) { dataCelsius = String.valueOf(50); dataCelsiusProgress = Integer.parseInt(dataCelsius); celsius.setText(dataCelsius + " degC"); mProgressCelsius.setProgress(dataCelsiusProgress); } else { dataCelsius = String.valueOf(sensorReading); dataCelsiusProgress = Integer.parseInt(dataCelsius); celsius.setText(dataCelsius + " degC"); mProgressCelsius.setProgress(dataCelsiusProgress); } } } catch (NumberFormatException e) { /* oh data was not an integer */ } } } } } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
[[{"fid":"164","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"1._suhu.jpg","field_file_image_title_text[und][0][value]":"1._suhu.jpg"},"type":"media","attributes":{"alt":"1._suhu.jpg","title":"1._suhu.jpg","height":"300","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
[[{"fid":"165","view_mode":"wysiwyg","fields":{"format":"wysiwyg","field_file_image_alt_text[und][0][value]":"5._suhu.jpg","field_file_image_title_text[und][0][value]":"5._suhu.jpg"},"type":"media","attributes":{"alt":"5._suhu.jpg","title":"5._suhu.jpg","height":"300","width":"400","class":"media-element file-wysiwyg"},"link_text":null}]]
Sekian eksperimennya kali ini, berikutnya akan kita kembangakan alat ini dengan ditambah sebuah pendingin sehingga kita dapat mengatur keadaan Suhu dan Kelembaban dalam rumah, tentunya masih menggunakan sebuah Android. Semoga bermanfaat dan Terima kasih.. bye..
Komentar Terbaru