Categories
DSP Mikrokontroler Neurosains

EEG-Based Microsleep Detector using Microcontroller

Tifani Galuh Utami, Agfianto Eko Putra and Catur Atmaji

Drowsiness has symptoms which are itchy eyes, slow eye blink movement, smaller pupils, yawning and even a body. But the driver ignores it when the body send one of those signals often. The impacts which can occur to the driver, such as make a wrong decision while driving, could happen and lead to the most car accident reason. Therefore, the system which can provide an alarm when the driver feels drowsiness, fatigue or even microsleep is required. The way to detect microsleep when it occurs is to use the Electroencephalograph (EEG) brainwave. The system uses the one channel EEG Sensor device developed by Neurosky Mindwave which can provide eight brainwave signal such as Delta, Theta, Low Alpha, High Alpha, Low Beta, High Beta, Low Gamma, and Mid Gamma. On the other hand, attention and relaxation value can be generated as well. This prototype system tested by the car driver achieved its purpose of detecting microsleep event and alerting the driver by the alarm.

(click here)

Categories
buku Mikrokontroler

Belajar Mudah Mikrokontroler ARM Cortex M0

Belajar Mudah Mikrokontroler ARM Cortex M0” merupakan sebuah pelatihan (biasanya inhouse training) juga sebuah buku sederhana. Sebuah pelatihan/buku yang cocok digunakan untuk pelatihan atau belajar solusi berbasis mikrokontroler, khususnya seri ARM Cortex M0.

The ARM® Cortex®-M0 processor is the smallest ARM processor available. The exceptionally small silicon area, low power and minimal code footprint of the processor enables developers to achieve 32-bit performance at an 8-bit price point, bypassing the step to 16-bit devices. The ultra-low gate count of the Cortex-M0 processor also enables its deployment in analog and mixed signal devices. (ARM)

Pelatihan/buku belajar mikrokontroler ini didasarkan pada penggunaan ARM Cortex M0 produksi dari Nuvoton seri NUC140, lebih tepatnya NUC140VE3CN, menggunakan bantuan papan belajar NUC140 Learning Board atau NUC140LB.

NUC140 Learning Board by Nuvoton

Pendahuluan

ARM adalah arsitektur prosesor 32 bit yang dibuat oleh ARM Holding dan dilisensikan untuk diproduksi oleh berbagai vendor di dunia termasuk AMD, Atmel, Freescale, Nuvoton, Nvidia, NXP, Samsung, ST Micro, dan TI. Prosesor ARM digunakan pada perangkat smartphone, tablet, dan embedded system. Kini ARM menjadi arsitektur prosesor yang paling banyak diproduksi di dunia.

Seri arsitektur ARM terbaru terdiri dari 3 lini kelas penggunaan yaitu:

  • ARM CORTEX A untuk aplikasi umum
  • ARM CORTEX R untuk aplikasi real time
  • ARM CORTEX M yang setara dengan mikrokontroler

Categories
Mikrokontroler satelit

Indonesian Cansat Training Program

The CanSat Leader Training Program (CLTP) is a training course, conducted by UNISEC Japan, that was established for participants to experience the entire cycle of CanSat development from the design to launch of model rockets. Through the program, participants will learn the space technology and teaching methods utilized in space engineering. CLTP held in Japan in every year and followed one of them by representatives of Indonesia, Dr. Agfianto Eko Putra, in 2011. The CanSat Model of developing satellite is suitable for education of aerospace technology, especially satellites, due to a more affordable range of funds independently and components that are easier to find.

Universitas Gadjah Mada, especially Electronics and Instrumentation Dept., has adopted to implement the CanSat education among undergraduate students to develop Indonesian CanSat Training Program. In 2012, as the early years, it has been formed several teams for CanSat development. The membership of each team is 3 or 4 undergraduate students. Every team must design the mission, hardware, and software of the satellite independently. Several constrains are given in the form of dimension, mass, and power used by the satellite. The dimension of Cans is limited to 65 mm of diameter and 150 mm of the height. The maximum weight allowed is 350 grams. Maximum power used must be less then 1300 mAh. For the microprocessor unit, every team must use the PIC16F877, the microcontroller that suitable for satellite environment. Sixteen teams was formed, while the stages that has been done are MDR (Mission Design Review), PDR (Preliminary Design Review) and developing the FM (Flight Module).

(download the PDF format for this paper which was poster-presented at the 4th UN/Japan Nano-Satellite Symposium in Nagoya on October 10-13, 2012)

Categories
Mikrokontroler

Mengenal Raspberry Pi

Raspberry Pi (juga dikenal sebagai RasPi) adalah sebuah SBC (Single Board Computer) seukuran kartu kredit yang dikembangkan oleh Yayasan Raspberry Pi di Inggris (UK) dengan maksud untuk memicu pengajaran ilmu komputer dasar di sekolah-sekolah.

Raspberry Pi menggunakan system on a chip (SoC) dari Broadcom BCM2835, juga sudah termasuk prosesor ARM1176JZF-S 700 MHz, GPU VideoCore IV dan RAM sebesar 256 MB (untuk Rev. B). Tidak menggunakan hard disk, namun menggunakan SD Card untuk proses booting dan penyimpanan data jangka-panjang. Pada saat awal tersedia dua versi, yang harganya US$ 25 dan US$ 35. Yayasan tersebut mulai menerima pesanan untuk model yang lebih tinggi harganya mulai 29 Februari 2012.

Yayasan tersebut juga menyediakan distribusi Debian dan Arch Linux ARM untuk siap diunduh. Juga disediakan beberapa tools untuk mendukung pemrograman bahasa utama Python, yang mendukung BBC BASIC (menggunakan tiruan “Brandy Basic”) dan Perl.

Spesifikasi

Model A Model B
Harga: US$ 25 US$ 35
SoC: Broadcom BCM2835 (CPU, GPU, DSP, and SDRAM)
CPU: 700 MHz ARM1176JZF-S core (ARM11 family)
GPU: Broadcom VideoCore IV, OpenGL ES 2.0, MPEG-2 & VC-1 (dengan lisensi), 1080p30 h.264/MPEG-4 AVC high-profile decoder dan encoder
Memori (SDRAM): 256 MB (berbagi-pakai dengan GPU)
USB 2.0 ports: 1 2 (melalui USB hub)
Luaran video: Composite RCA (PAL & NTSC), HDMI (rev 1.3 & 1.4), raw LCD Panels via DSI 14 HDMI resolutions from 640×350 to 1920×1200 plus various PAL and NTSC standards.
Luaran Audio: 3.5 mm jack, HDMI
Media penyimpan: SD / MMC / SDIO card slot
Jaringan: None 10/100 Ethernet (RJ45)
Periferal: 8 × GPIO, UART, I²C bus, SPI bus with two chip selects, +3.3 V, +5 V, ground
Daya: 300 mA (1.5 W) 700 mA (3.5 W)
Catu daya: volt via MicroUSB or GPIO header
Ukuran: 85.60 × 53.98 mm (3.370 × 2.125 in)
Berat: 45 gram
Sistem Operasi: Debian GNU/Linux, Fedora, Arch Linux ARMRISC OS

Link yang terkait

  • Raspberry di Wikipedia (klik)
  • Website resmi Raspberry Pi (klik)
Catatan: artikel ini masih belum sepenuhnya dilengkapi, silahkan datang kembali untuk melihat updatenya, sebagian besar (sementara) diacu dari Wkipedia, terima kasih.

Categories
Mikrokontroler

Pengenalan MSP430 Launchpad (MSP-EXP430G2)

MSP-EXP430G2 adalah modul sistem minimal mikrokontroler MSP430 yang diberi nama Launchpad dan merupakan solusi murah meriah khusus untuk mikrokontroler seri MSP430G2xx dari Texas Instrument. Modul MSP430 Launchpad ini sudah dilengkapi dengan emulator berbasis USB yang mendukung pengembangan aplikasi mikrokontroler seri MSP430G2xx baik secara perangkat keras maupun perangkat lunak, dengan demikian Anda bisa melakukan proses pemrograman, debugging dan evaluasi dengan mudah. Selain itu juga dilengkapi dengan soket DIP maksimum 20 pin, artinya bisa untuk hampir semua seri MSP430.

Satu hal yang membuat MSP430 Launchpad (yang harganya sekitar 70 ribu rupiah di Gerai Cerdas) memiliki nilai tambah adalah kemampuan melakukan pemrograman target eZ430-RF2500T, modul jam eZ430-Chronos maupun papan pengembang eZ430-F2012T/F2013T. Selain itu juga disedikan koneksi atau port serial hingga kecepatan 9600 baud dari piranti MSP430G2xx ke komputer atau piranti lainnya.

The MSP430 Launchpad Rev 1.5 (Launchpad Wiki)

MSP-EXP430G2 bisa menggunakan perangkat lunak IAR Embedded Workbench Integrated Development Environment (IDE) maupun Code Composer Studio (CCS) untuk menuliskan program aplikasi, mengkompailnya, men-download serta men-debug-nya. Debugger membolehkan pengguna menjalankan program aplikasi dengan kecepatan penuh disertai fasilitas hardware breakpoints dan single stepping tanpa harus menambah perangkat keras lainnya – artinya, semua fasilitas sudah tersedia pada modul MSP430 Launchpad beserta dukungan perangkat lunak yang sudah disebutkan sebelumnya.

Fitur-fitur MSP-EXP430G2 LaunchPad

  • USB debugging dan antarmuka pemrograman termasuk fitur instalasi mudah dan aplikasi komunikasi serial hingga kecepatan 9600 baud;
  • Mendukung semua mikrokontroler seri MSP430G2xx dan MSP430F20xx baik dalam kemasan PDIP14 maupun PDIP20;
  • Dua pin umum I/O digital terhubungkan masing-masing ke LED hijau dan merah untuk indikator visual;
  • Dua buah push button untuk umpan balik pengguna dan reset mikrokontroler;
  • Fasilitas untuk memudahkan akses pin untuk debugging atau tambahan rangkaian di luar modul;
  • Soket DIP 20-pin berkualitas untuk memudahkan pemasangan dan pencabutan mikrokontroler yang digunakan.

Categories
Mikrokontroler

EEPROM AT24C1024 dan PIC16F877 (Antarmuka I2C)

Jika pada artikel sebelumnya sudah saya bahas bagaimana mengakses EEPROM internal, dalam beberapa kasus jumlah atau kapasitas 256 byte tidaklah cukup. Jangan kawatir, masih ada EEPROM lain, yang tentunya bukan internal, yang kapasitasnya lebih dari 256 byte.

Pembahasan EEPROM eksternal saya awali dengan memperkenalkan sebuah EEPROM AT24C1024 dari Atmel dengan kapasitas 1024 byte atau 1KByte, lumayan bisa menyimpan data 4 kali lipat dari EEPROM internal-nya PIC16F877. Namun yang lebih penting adalah antarmukanya menggunakan I2C, jadi sekalian belajar bagaimana membuat rangkaian dasar I2C dan membuat programnya sekaligus.

I2C (“i-squared cee” or “i-two cee”; Inter-Integrated Circuit; generically referred to as “two-wire interface”) is a multi-master serial single-ended computer bus invented by Philips that is used to attach low-speed peripherals to a motherboard, embedded system, cellphone, or other electronic device. Since the mid 1990s, several competitors (e.g. Siemens AG (later Infineon Technologies AG), NEC, Texas Instruments, STMicroelectronics (formerly SGS-Thomson), Motorola (later Freescale), Intersil, etc.) brought I2C products on the market, which are fully compatible with the NXP (formerly Philips’s semiconductor division) I2C-system. As of October 10, 2006, no licensing fees are required to implement the I2C protocol. However, fees are still required to obtain I2C slave addresses allocated by NXP. (wikipedia)

Pada Gambar 1 ditunjukkan contoh rangkaian antarmuka I2C dengan sebuah master (mikrokontroler), tiga slave (ADC, DAC dan mikrokontroler lainnya) dan (tidak lupa) dua buah resistor pull-up yang masing-masing ditempatkan pada kaki SCL dan SDA. Pada Gambar 2 ditunjukkan contoh IC AT24C1024.

Gambar 1

Gambar 2

Deskripsi AT24C1024

The AT24C1024 provides 1,048,576 bits of serial electrically erasable and programmable read only memory (EEPROM) organized as 131,072 words of 8 bits each. The device’s cascadable feature allows up to two devices to share a common two-wire bus. The device is optimized for use in many industrial and commercial applications where low-power and low-voltage operation are essential. The devices are available in space-saving 8-lead PDIP, 8-lead EIAJ SOIC, 8-lead Leadless Array (LAP) and 8-lead SAP packages. In addition, the entire family is available in 2.7V (2.7V to 5.5V) versions. (datasheet)

Fitur AT24C1024

  • Low-voltage Operation: 2.7 (VCC = 2.7V to 5.5V)
  • Internally Organized 131,072 x 8
  • Two-wire Serial Interface
  • Bidirectional Data Transfer Protocol
  • Write Protect Pin for Hardware and Software Data Protection
  • 256-byte Page Write Mode (Partial Page Writes Allowed)
  • Random and Sequential Read Modes
  • Self-timed Write Cycle (5 ms Typical)
  • High Reliability
  • Endurance: 100,000 Write Cycles/Page
  • Data Retention: 40 Years

Categories
Mikrokontroler

Memanfaatkan EEPROM internal Mikrokontroler PIC16F877

Jika Anda belum tahu apakah EEPROM itu, silahkan klik disini. Artikel kali ini akan mengulas tentang pemanfaatan EEPROM internal pada mikrokontroler PIC16F877 yang memiliki kapasitas 256 Byte. Cukup besar untuk menyimpan data-data kritis, data-data parameter dan lain sebagainya yang tidak boleh terhapus saat catu daya ke Mikrokontroler tidak ada lagi (bersifat non-volatile).

Bahasa C menggunakan kompilator CCS sudah menyediakan beberapa instruksi yang terkait dengan pemanfaatan EEPROM ini, lantas bagaimana rangkaian yang digunakan? Wah mudah banget, lha wong cuman pake EEPROM internal ya pake saja rangkaian minimum atau yang dibutuhkan saja, contohnya liat gambar berikut.

Categories
Mikrokontroler

Memanfaatkan ADC Internal Mikrokontroler PIC16F877

Sebagaimana diketahui bahwa mikrokontroler PIC16F877 memiliki fasilitas 8 kanal ADC 10bit. Penggunaannya memang tidak bisa serentak untuk semua kanal, harus dilakukan satu persatu. Artikel kali ini akan mengulas tentang penggunaan ADC internal ini.

Rangkaian dasarnya sangat sederhana, cukup Anda hubungkan kanal-0 dan 1 (untuk contoh saja) ke sumber tegangan 5 volt (karena kita juga akan menggunakan tegangan referensi (Vref) yang sama) melalui potensiometer atau sejenisnya. Rangkaian dasar ini mirip dengan Gambar 1 pada artikel yang membahas aplikasi LED dan pushbutton pada PIC16F877 (klik disini untuk lihat gambar).

Instruksi terkait

Beberapa hal yang perlu diketahui dalam penggunaan ADC internal PIC16F877 dalam bahasa C (menggunakan kompilator CCS):

  • #device ADC = jumlah_bit
    • Digunakan untuk memberitahukan berapa resolusi bit yang akan digunakan apakah 8 atau 10bit.
  • setup_adc(mode)
    • Digunakan untuk melakukan kofigurasi awal (inisialisasi) ADC internal. Hanya dapat digunakan pada mikrokontroler dari Microchip yang memiliki fasilitas ADC internal. Paremeter mode memiliki beberapa pilihan, antara lain: ADC_OFF untuk mematikan ADC, ADC_CLOK_DIV_2, ADC_CLOK_DIV_8 dan ADC_CLOK_DIV_32 yang masing-masing digunakan untuk mengatur frekuensi kerja dari ADC-nya apakah detaknya dibagi 2, 8 atau 32, ADC_CLOK_INTERNAL yang digunakan untuk menentukan frekuensi kerja ADC sama dengan frekuensi kerja mikrokontroler.
  • setup_adc_ports(nilai)
    • Digunakan untuk menentukan pin ADC sebagai pin masukan analog, digital atau kombinasi keduanya serta tegangan referensi yang digunakan untuk menghitung nilai ADC. Kombinasi pin-pin analog tergantung pada mikrokontroler yang digunakan, cuman ada dua parameter yang bisa digunakan untuk semua jenis mikrokontroler yang dilengkapi ADC internal, yaitu ALL_ANALOG dan NO_ANALOGS. Pilihan lain untuk parameter nilai adalah RA0_RA1_RA3_ANALOG (RA0, RA1 dan RA3 saja sebagai masukan analog), A_ANALOG_RA3_REF (semua analog, RA3 digunakan sebagai tegangan referensi), RA0_ANALOG dan lain sebagainya.
  • set_adc_channel(kanal)
    • Digunakan untuk menentukan kanal ADC yang akan dibaca selanjutnya, berikan kesempatan mikrokontroler untuk menyiapkan diri, berikan tundaan minimal 10 mikrodetik (tergantung impedansi masukan) sebelum dilakukan pembacaan. Kanal berisikan angka 0, 1, 2 dan seterusnya sesuai dengan kanal ADC yang akan dibaca selanjutnya.
  • variabel = read_adc()
    • Jelas ini digunakan untuk membaca ADC itu sendiri.

Categories
Mikrokontroler

Aplikasi PIC16F877 untuk LED dan tombol

Setelah mengenal mikrokontroler PIC16F877, kini saatnya kita berkreasi menggunakan mikrokontroler ini. Hal sederhana yang bisa kita lakukan adalah membuat aplikasi menggunakan LED dan pushbutton.

Rangkaian yang digunakan ditunjukkan pada Gambar 1. Menggunakan resonator atau rangkaian kristal 20 MHz. Empat buah LED masing-masing dihubungkan dengan konfigurasi Common Anoda (sehingga perlu logika LOW untuk menghidupkan) ke RA0, RA1, RA2 dan RA3. Masing-masing LED dipasangi resistor 470 ohm untuk membatasi arus. Dua pushbutton kita konfigurasi aktif rendah (berlogika LOW saat ditekan) kita pasang masing-masing ke RA4 dan RA5, perhatikan penggunaan pullup resistor sebesar 10kohm. Sambungan ke downloader/programmer PICKit2 juga disediakan.

Gambar 1

Aplikasi yang akan kita buat adalah membaca tombol sedemikian hingga jika RA4 berlogika LOW maka LED yang terpasang pada RA0 akan berkedip-kedip, jika RA4 bernilai HIGH maka gantian RA1 yang akan berkedip-kedip…

Program selengkapnya sebagai berikut (menggunakan kompilator CCS):

// led_push01.c
// created by Agfianto Eko Putra
// this program is LED on/off
#include <16F877.h>
#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz for PCM/PCH) (>10mhz for PCD)
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#use delay(clock=20000000)
void main()
{
 set_tris_a(0xF0);    // PORTA3,2,1,0 set as output and PORTA7,6,5,4 as input
 output_a(0x0F);      // turn OFF all LEDs at port A3,2,1,0

 while(true)
 {
   switch(input(PIN_A4))      // RA0 or RA1
   {
     case 0: output_toggle(pin_a0);   // toggle LED at RA0
             break;
     case 1: output_toggle(pin_a1);   // toggle LED at RA1
             break;
   }
   delay_ms(500);
 }
}

Categories
Mikrokontroler

PIC16F877 Microcontrollers – Introduction

If you know about Microcontoller keep read it, if don’t please read my Introduction to Microcontroller first (click here or click here, all in Indonesian language, sorry).

Do you know that not only Atmel AVR is the microcontroller. The other is PIC16F877 (or PIC16F87X: PIC16F873, PIC16F874, PIC16F876 and PIC16F877), one of the microcontoller made by Microchip Inc.. There are many families for the PIC microcontroller, the PIC16F877 is the PIC16 family. PIC16F877 is one of the most commonly used microcontroller especially in automotive, industrial, appliances and consumer applications. Take a look at the picture below… (and click it if you want more information at Microchip Inc.)

The PIC16F877 is a RISC (Reduced Instruction Set Computer) Microcontoller, which gives two great advantages:

  • The CPU only recognizes 35 simple instructions. Just to mention that in order to program other microcontrollers in assembly language it is necessary to know more than 200 instructions by heart.
  • The execution time is the same for almost all instructions, and lasts for 4 clock cycles. The oscillator frequency is stabilized by a quartz crystal. The execution time of jump and branch instructions is 2 clock cycles. It means that if the microcontroller’s operating speed is 20MHz, the execution time of each instruction will be 200nS, i.e. the program will execute 5 million instructions per second!