Selamat datang di sonoku.com

Menerapkan HMVC pada CodeIgniter 3

HMVC adalah singkatan dari Hierarchical Model-View-Controller, merupakan pola arsitektur pemrograman pengembangan dari pola MVC dengan menambahkan hirarki pada komponen-komponennya. Pada HMVC komponen disusun secara modular, setiap modul dalam HMVC terdiri dari Model-View-Controller masing-masing. Dengan demikian aplikasi akan mudah dikembangkan dan dirawat.

Instalasi HMVC

Untuk instalasi HMVC silahkan ikuti langkah-langkah berikut:
1. Download extension HMVC halaman github berikut.
Download Codeigniter-Modular-Extensions-HMVC Wiredesignz
2. Setelah itu extract, isinya akan seperti gambar berikut.


3. Kemudian copy isi dari folder core dan third_party ke dalam project CodeIgniter kita ke dalam folder application, sehingga foldernya akan menjadi seperti berikut:

4. Selanjutnya buat folder bernama modules di dalam application, folder ini yang nantinya menjadi tempat untuk menyimpan semua modul yang akan kita buat.

Dalam contoh kali ini, dibuat dua modul bernama admin dan customer, di mana di dalamnya terdapat Model, View dan Controller masing-masing. Anda bisa menambahkan dengan dengan nama lain, begitu selanjutnya jika ditambahkan modul lagi.


5. Untuk mencoba hasil instalasi, silahkan akses modul admin dengan url: http://localhost/nama_project_anda/index.php/admin

Jika terjadi Error Setelah Instalasi HMVC

Jika terjadi error setelah Modular Extension di CodeIgniter sudah diinstal, muncul pesan error seperti ini:

Untuk memperbaiki Error di atas maka:
1. Buka application/third_party/MX/Loader.php
2. Cari function public function view($view, $vars = array(), $return = FALSE)
Cari… (Line 300)

return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));

3. Ganti kode tersebut dengan:

if (method_exists($this, '_ci_object_to_array'))
{
    return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_object_to_array($vars), '_ci_return' => $return));
} else {
    return $this->_ci_load(array('_ci_view' => $view, '_ci_vars' => $this->_ci_prepare_view_vars($vars), '_ci_return' => $return));
}

Jalankan lagi programnya.

Mengatasi Error strpos() pada HMVC Codeigniter 3

Jika terdapat error dengan pesan:
Message: strpos(): Non-string needles will be interpreted as strings in the future. Use an explicit chr() call to preserve the current behavior

Lakukan hal berikut:

  1. Buka file Application/third_party/MX/Router.php
  2. Kemudian di baris 239 terdapat blok kode seperti di bawah ini :
public function set_class($class)
	{
		$suffix = $this->config->item('controller_suffix');
		if( strpos($class, $suffix) === FALSE ) //sebelum
		{
			$class .= $suffix;
		}
		parent::set_class($class);
	}

3. Kemudian ubah baris kode diatas menjadi seperti dibawah ini :

public function set_class($class)
	{
		$suffix = $this->config->item('controller_suffix');
		if( $suffix && strpos($class, $suffix) === FALSE) //sesudah
		{
			$class .= $suffix;
		}
		parent::set_class($class);
	}

Membaca Kartu RFID Mifare 13.56MHz dengan CR-013F, ATMega128 dan Bascom (bag.2)

Setelah mengetahui bagaimana reader RFID dan Mikrokontroler berkomunikasi pada artikel sebelumnya, selanjutnya adalah membuat program mengakses RFID reader menggunakan BASCOM. Rutin yang dibuat pertama kali adalah rutin untuk mengirim perintah (request) dari mikro ke reader mengikuti protokol pada Gambar 1 berikut.

Gambar 1. Protokol Request Function

Pertama deklarasikan sebuah variabel  berupa array dengan tipe data byte yang isinya adalah kode hex “Function” sesuai Tabel Daftar Fungsi Perintah. Misal kita akan mengirim fungsi untuk Card Type Request maka deklarasi variabelnya seperti berikut: Read More

Kontrol Lampu Akuarium

Anda punya akuarium dirumah? Dulu barang pajangan ini hanya terdapat dirumah orang yang gemar dengan bentuk kehidupan di dalam air, yang dengan kasih sayang memelihara ikan hias, mengontrol suhu airnya, memberinya makan dua kali sehari, membersihkan, mengatur kadar pH dan seterusnya. Seiring dengan popularitasnya, alat-alat yang meringankan pekerjaan ini mulai bermunculan di pasaran. Nah tidak ada salahnya jika mencoba untuk mengontrol lampu yang meneranginya, sehingga tidak terkesan boros listrik.

Gambar 1. Aquarium (from: http://imyfish.wordpress.com/2009/02/18/hello-world/)

Sebagai tambahan disediakan tiga fungsi kontrol. Yang pertama adalah tombol reset yang digunakan untuk mengawali kembali periode penentu waktunya. Bila tamu datang, atau bila akuarium perlu diberi penerangan terus, dari keadaan sedang menyala atau padam, menekan sebuah tombol memulai lagi periode delay mejelang dipadamkannya. Yang kedua, memungkinkan dipilihnya dua periode setelah matahari terbenam sebelum lampu dipadamkan. Dan yang ketiga, ada kalanya perlu menghentikan perngoperasian sama sekali seperti pada waktu airnya dikuras.

Berikut adalah sebuah skema rangkaian elektronik digunakan untuk mengontrol nyala padamnya lampu akuarium. Alat ini cukup sederhana, akan menyalakan lampu pada waktu matahari terbenam dan memadamkannya ketika matahari mulai terbit.

Cara kerja:

Pada saat cahaya mengenai sensor (LDR) melampaui suatu level preset, katakanlah pada saat fajar, lampu dinyalakan. Ketika level cahaya mulai turun lagi dibawah level ini, dimulai periode delay,lampu dipadamkan. waktu delay dapat dipilih untuk dua kondisi, misalnya, musim kemarau atau musim hujan.

Pada awalnya, angap saja LDR menerima cahaya yang cukup terang. Pada saat ini resistansinya rendah sekali, hanya sekitar 1-2k. IC 741 dikonfigurasikan sebgai Schmitt Trigger dengan beberapa persen histeresis. Dalam kondisi diberikan cahaya, outputnya menahan isi pencacah 4024 pada nol melalui rangkaian resetnya. IC NE555 dihubungkan sebagai multivibrator astabil dengan osilasi sebesar 255 second dan 85 second dalam 2 kondisi yang diberikan. Kecepatannya dapat kita atur dengan mengubah nilai kapasitor C2 dan C3. Jika cahaya mengenai sensor LDR turun mengakibatkan output dari 741 menjadi rendah, 555 mulai meng-“clock” counter (pencacah 4024). Counter 4024 merupakan suatu ripple counter tujuh keluaran, dengan demikian oleh pulsa ke-64 keluaran ke-7 akan berlogika “1”. Bila ini terjadi, relay akan menutup dan lampu akan padam. Secara simultan saluran reset 555 berlogika “0” dan 555 akan berhenti berosilasi. KOndisi ini stabil, dan alat tetap tidak aktif sampai pencacah direset kembali dan putaran akan dimulai lagi. Saklar reset untuk sesaat mereset pencacah, sehingga alat dapat berkerja kembali. Saklar Cancel berfungsi untuk “memaksa” alat untuk tidak aktif (lampu padam), jadi jika posisi saklar ini terbuka maka alat akan bekerja kembali seperti semula.

Bermain Mikrokontroler dengan mikroPASCAL

Jika anda biasa dengan bahasa BASIC untuk pemrograman komputer, dan anda hobby untuk membuat aplikasi mikrokontroler, anda bisa gunakan BASCOM karena saya yakin anda tidak mau tidak susah-susah bermigrasi ke bahasa assembler yang agak ribet. BASCOM sendiri sebenarnya adalah compiler bahasa BASIC untuk mikrokontroler. Tapi jangan khawatir bagi anda yang terlanjur cinta dengan Delphi ataupun Pascal seperti saya, sekarang sudah tersedia compiler bahasa Pascal untuk mikrokontroler yaitu mikroPascal dari mikroElektronika. Sebenarnya mikroElektronika juga menyediakan compiler bahasa BASIC dan C untuk mikrokontroler, tapi kali ini saya coba fokuskan ke mikroPascal..oke?!! Read More

LCD Demo using ADB40

How to connect my LCD module to the board?

It’s a simple way to connect your 16X2 LCD to ADB40 Board. You do not need cable to connect it to the board, because it’s 16×2 LCD socket already mounted on the board. You need a 1×16 header to solder to the LCD module, or you can see the picture below.

Then install the LCD module to the board, and now you can start to write your code.

pinLCDconfig

The Code???

The code is written in BASIC using BASCOM as compiler. And as you know, BASCOM have some functions to permit you to operate the LCD module easily.

Read More

USB Led Demo using ADB20 V1.0

Introduction

This project is based on AVR309: USB to UART Protocol Converter, the ATMEL application note written by Ing. Igor Cesco from Slovakia. This document implement the functions of Direct I/O control, USB to RS232 Converter and EEPROM scratch register, and it can be develop by user to implement other function like USB A/D Converter in other way we can build a Small USB Thermometer (I’ll build soon…). Read More