Tuesday, February 3, 2015

Review Satu Tahun

Salam,


Sudah seteahun ternyata blog ini berusaha terus di update, ternyata semangat untuk menulis blog, seperti kata teman saya, hanya akan bertahan samapi kira kira 3 bulan awal. ada benarnya juga karena setelah beberapa saat menulis blog. di tiga bulan berjalan mulai merasa jenuh untuk menulis blog.

Begitulah kelukesahnya. ternyata memang seperti itu. tapi karana sudah dimulai dan menjadi wadah. yah mari kita lanjutkan . Pagi yang cera, dengan lagu yang asik membawa hari ini menjadi asik juga.

slamat pagi dan selamat memulai rutinitas di hari ini.

Friday, December 19, 2014

Keterbatas dan keterkejutan

Hp lama yang digunakan kembali, masalah yang pertama adalah apps yang ada sekarang terus berkembang, tidak luput juga dengan ukuran nya. menjadikan hp lama tidak berdaya untuk di instal dengan apps yang ada saat ini. oh yah. kita bicara tentang android yah. bukan yang lain

apps Hengout buatan google jadi program messangger andalan saya. tapi ketika di instal pada hp yang lama dalam hal ini Samsung ACE. ternyata tidak memungkinkan karena storege nya yang sangat terbatas, apa lagi ketika masuk apps yang namanya google play service. yang ampun otomatis apps yang lain tidak bisa instal.

HP lama yang dipenuhi dengan aplikasi messangger saja... begitulah, di samsung ACE ini udah ada WA dan BBM. ingin tambah dengan Hengout. hem.... jadi tanda tanya nich.

saat akan menginstal Hengout, memori full karena dimakan habis oleh google play sevice, kemudian apps tersebut saya uninstal... ambil Hengout yang ternyata ukurannya tidak kecil juga yaitu 30Mb, langsung cengar cengir karena berhasil nginstal...

ternyata eh ternyata. Hengout perlu google play service untuk bisa jalan... wah apa apaan inich....akhirnya dengan berat hati mengunistal Hengoutnya... dan apa yang terjadi... eh ternyata setingan apps talk bawaan google yang lama bisa jalan kembali... yah udah dech....

google play sevice saya lepas. hengout saya lepas... dan sekarang hengout bisa jalan dengan lancar.... xixixixi... Proses yang aneh


Install Hengout di HP lama.

  1. uninstal google play service.
  2. instal google hengout
  3. uninstal google hengout.


hasilnya kita akan mendapatkan apps Gtalk yang lama dan berjalan selayaknya apps messangger Hengout... sip dech. peringatan low storage juga mati.... yah sudah lah...


Tuesday, October 7, 2014

Kaitan dengan sesuatu yang harus terus bertumbuh

Pada Sistem yang lebih kompleks dari yang ada saat ini, diperlukan abstraksi yang lebih tinggi untuk menangani proses pada hardware yang sama.

ilustrasi pada modul sim900.

Thursday, October 2, 2014

Masalah cost dalam pengembangan embedded system




Mengapa sekarang cost yang mahal ada pada software engineer. 


jawab


karena untuk menggunakan semua kemampuan dari hardware yang semakin kompleks maka diperlukan sebuah software yang canggih, dengan itu diperlukan waktu yang lama untuk mengembangkan software oleh software engineer.

referensi
  • http://electronicdesign.com/products/verification-and-software-dominate-eda-s-future

Tuesday, September 30, 2014

LCD 4x20, Modul klasik yang masih asik


Ceritanya dimulai dari saat pengembangan perangkat yang membutuhkan modul LCD karakter 4x20. Modul ini adalah sebuah modul LCD karakter yang terdiri dari 4 barus dan 20 kolom.

Sebenarnya Perkenalan dengan modul ini sudah terjadi sejak lama, kurang lebih 8 tahun yang lalu, waktu itu menggunakan LCD 2x16. Menurut datasheet yang diperoleh, karakteristik dari LCD 4x20 mirip dengan LCD 2x16. Sehingga dalam pikiran saya hal ini tidak sulit untuk di jalani kembali. yang menjadi tantangannya adalah uC yang digunakan, berbeda dengan waktu lalu.

Seperti biasa, percobaan dimulai dengan mencari apakah sudah perna ada orang yang membuat kode atau librari modul ini sebelum nya dengan target uC yang digunakan saat ini. dan kemungkinan besar pasti sudah ada, lebih mengejutkan lagi saya menemukan dua library gihub yang mempublikasikan librari dari modul ini yang telah mereka buat.

Langkah selanjutnya adalah mencoba program tersebut. dan hasilnya adalah negatif. kedua library tersebut tidak dapat berjalan dengan baik, atau bahkan dapat dikatakan harus diberi sentuhan agar dapat digunakan sesuai dengan yang diinginkan. Sementara itu ada masalah lain yang mengnatui di pikiran, yaitu perbedaan tegangan kerja antar uC dengan modul.

Tegangan kerja modul LCD adalah 5v DC sementara tengangan kerja uC yang digunakan adalah 3.3 v DC. Ada kekawatiran dalam pikiran yaitu, perbedaan tengangan kerja ini dapat mempengaruhi proses antarmuka antara modul dan uC. Penarasan berlanjut, dengan mencari video di internet yang menampilkan percobaan yang berhasil antarmuka modul dengan uC, dan ternyata videonya juga sudah ada di internet. dari semua video yang ada, semuanya menunjukkan percobaan yang berhasil dengan cara hubungkan langsung, yaitu langsung menghubungkan kaki uC ke kaki control dan data pada modul.

Percaya diri pun bertambah, namun masi tetap pusing karena pikiran ini selalu berasumsi bahwa, apa yang telah di posting di internet sudah pasti benar dan akan selalu berhasil. Namun untuk kasus yang satu ini. asusmi itu salah. Di suatu ketika, saya bertekat untuk keluar dari kebiasaan atau dari pendirian selama ini dan rasa malas.

Saat itu saya coba untuk mengambil devboard dari uC yang digunakan dan menyolderkan kaki idc pada modul LCD. yang percobaan sebelumnya saya lakukan pada uC yang sudah terpasang pada board yang telah di kastem sesuai dengan kebutuhan. Berdasarkan tekat tersebut, dilakukan percobaan program diatas devboard dan LCD.

Hasilnya masi sama. kode yang didapat dari internet ternyata masi tetap tidak bisa jalan, meskipun pin dan portnya sudah disesuaikan dengan library yang diperoleh. untuk diketahui dua library yang saya peroleh tersebut, memiliki perbedaan cara mengakses modul yaitu, menggunakan cara komunikasi 8-bit dan komunikas 4-bit.

Dampak yang signifikan dapat dilihat dari beberapa sudut pandang. misalnya dari jumlah kabel yang nantinya akan menghubungkan modul dengan uC. Jika dalam desain perangkatnya mengharuskan modul terpasang pada kesing sehingga diperlukan kabel penghubung untuk menghubungkan board dengan modul. selain itu, jalur pada PCB Lebih sedikit sehingga area board dapat digunakan oleh rangkaian yang lain.

Saya rasa cukup basa basinya. berikut ini adalah contoh program yang sangat sederhana dan langsung pada penampakan satu karakter. oh ya... projek ini di kembangkan diatas keil uVision. namun sangat mungkin untuk menjalankannya diatas Coocox atau IDE yang lain sesuai dengan keterikatan kita dengan IDE/ Text editor yang kita gunakan.




Kode dari program ini adalah :
1:  /*  
2:   * main.c  
3:   *  
4:   * Created on: Sep 30, 2014  
5:   *   Author: Ricky  
6:   */  
7:    
8:  #include "stm32f4xx.h"  
9:  #include "stm32f4xx_gpio.h"  
10:  #include "stm32f4xx_rcc.h"  
11:  #include "stm32f4_discovery.h"  
12:    
13:  // Port yang digunakan  
14:  #define LCD_GPIO_D GPIOE  
15:  #define LCD_GPIO_C GPIOB  
16:    
17:  // Pin data yang digunakan  
18:  #define LCD_D4 GPIO_Pin_12  
19:  #define LCD_D5 GPIO_Pin_13  
20:  #define LCD_D6 GPIO_Pin_14  
21:  #define LCD_D7 GPIO_Pin_15  
22:    
23:  // pin control yang digunakan  
24:  #define LCD_RS GPIO_Pin_12  
25:  #define LCD_EN GPIO_Pin_13  
26:    
27:    
28:  // resume control pada LCD  
29:  #define HD44780_CLEAR                                0x01  
30:    
31:  #define HD44780_HOME                              0x02  
32:    
33:  #define HD44780_ENTRY_MODE                           0x04  
34:       #define HD44780_EM_SHIFT_CURSOR            0  
35:       #define HD44780_EM_SHIFT_DISPLAY       1  
36:       #define HD44780_EM_DECREMENT            0  
37:       #define HD44780_EM_INCREMENT            2  
38:    
39:  #define HD44780_DISPLAY_ONOFF                      0x08  
40:       #define HD44780_DISPLAY_OFF                   0  
41:       #define HD44780_DISPLAY_ON                 4  
42:       #define HD44780_CURSOR_OFF                 0  
43:       #define HD44780_CURSOR_ON                 2  
44:       #define HD44780_CURSOR_NOBLINK             0  
45:       #define HD44780_CURSOR_BLINK            1  
46:    
47:  #define HD44780_DISPLAY_CURSOR_SHIFT          0x10  
48:       #define HD44780_SHIFT_CURSOR            0  
49:       #define HD44780_SHIFT_DISPLAY            8  
50:       #define HD44780_SHIFT_LEFT                 0  
51:       #define HD44780_SHIFT_RIGHT              4  
52:    
53:  #define HD44780_FUNCTION_SET                 0x20  
54:       #define HD44780_FONT5x7                     0  
55:       #define HD44780_FONT5x10                4  
56:       #define HD44780_ONE_LINE                0  
57:       #define HD44780_TWO_LINE                8  
58:       #define HD44780_4_BIT                     0  
59:       #define HD44780_8_BIT                     16  
60:    
61:  #define HD44780_CGRAM_SET                      0x40  
62:    
63:  #define HD44780_DDRAM_SET                      0x80  
64:    
65:    
66:  void LCD_Initialize(void);  
67:  void LCD_GoTo(unsigned char, unsigned char);  
68:  void LCD_WriteText(char *);  
69:  void LCD_WriteData(u8 dataToWrite);  
70:  void LCD_WriteNibble(u8 nibbleToWrite);  
71:  void CharLCD_Delay(int Count);  
72:  void LCD_WriteCommand(u8 commandToWrite);  
73:    
74:    
75:  int main(void)  
76:  {  
77:   LCD_Initialize();  
78:   LCD_GoTo(1,1);  
79:   LCD_WriteText("LCD 4x20");  
80:   LCD_GoTo(1,2);  
81:   LCD_WriteText("Modul    KLASIK!!");  
82:   LCD_GoTo(1,3);  
83:   LCD_WriteText("yang masih");  
84:   LCD_GoTo(13,4);  
85:   LCD_WriteText("ASIK!!");  
86:    
87:   while(1)  
88:   {  
89:   }  
90:    
91:  }  
92:    
93:  void LCD_Initialize(void)  
94:  {  
95:       GPIO_InitTypeDef GPIO_InitStructure;  
96:       vu8 i = 0;  
97:       vu32 delayCnt = 0;  
98:    
99:       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);  
100:       RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);  
101:    
102:    
103:       GPIO_InitStructure.GPIO_Pin  = LCD_D4|LCD_D5|LCD_D6|LCD_D7;  
104:       GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  
105:       GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  
106:       GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  
107:    
108:       GPIO_Init(LCD_GPIO_D, &GPIO_InitStructure);  
109:    
110:       GPIO_InitStructure.GPIO_Pin  = LCD_RS|LCD_EN;  
111:       GPIO_Init(LCD_GPIO_C, &GPIO_InitStructure);  
112:    
113:       GPIO_ResetBits(LCD_GPIO_C, LCD_RS | LCD_EN );  
114:    
115:       for(delayCnt = 0; delayCnt < 300000; delayCnt++);  
116:    
117:       for(i = 0; i < 3; i++)  
118:       {  
119:            LCD_WriteNibble(0x03);  
120:            for(delayCnt = 0;delayCnt < 30000; delayCnt++);  
121:       }  
122:    
123:       LCD_WriteNibble(HD44780_HOME);  
124:    
125:       for(delayCnt = 0;delayCnt < 6000; delayCnt++);  
126:    
127:       LCD_WriteCommand(HD44780_FUNCTION_SET |  
128:                            HD44780_FONT5x7 |  
129:                            HD44780_TWO_LINE |  
130:                            HD44780_4_BIT);  
131:    
132:       LCD_WriteCommand(HD44780_DISPLAY_ONOFF |  
133:                            HD44780_DISPLAY_OFF);  
134:    
135:       LCD_WriteCommand(HD44780_CLEAR);  
136:    
137:       LCD_WriteCommand(HD44780_ENTRY_MODE |  
138:                            HD44780_EM_SHIFT_CURSOR |  
139:                            HD44780_EM_INCREMENT);  
140:    
141:       LCD_WriteCommand(HD44780_DISPLAY_ONOFF |  
142:                            HD44780_DISPLAY_ON |  
143:                            HD44780_CURSOR_ON |  
144:                            HD44780_CURSOR_BLINK);  
145:    
146:       LCD_WriteCommand(HD44780_CLEAR);  
147:  }  
148:    
149:  void LCD_GoTo(unsigned char x, unsigned char y)  
150:  {  
151:       u8 position;  
152:    
153:       switch(y) {  
154:            case 1:  
155:                 position = x - 0x01;  
156:                 break;  
157:            case 2:  
158:                 position = x + 0x3F;  
159:                 break;  
160:            case 3:  
161:                 position = x + 0x13;  
162:                 break;  
163:            case 4:  
164:                 position = x + 0x53;  
165:                 break;  
166:            default:  
167:                 break;  
168:       }  
169:       LCD_WriteCommand(position | 0x80);  
170:    
171:  }  
172:    
173:  void LCD_WriteTextXY(char * text, u8 x, u8 y)  
174:  {  
175:       LCD_GoTo(x,y);  
176:       LCD_WriteText(text);  
177:  }  
178:    
179:  void LCD_WriteText(char * text)  
180:  {  
181:       while((*text !=0) && (*text != 13))  
182:             LCD_WriteData(*text++);  
183:  }  
184:    
185:  void LCD_WriteData(u8 dataToWrite)  
186:  {  
187:       GPIO_WriteBit(LCD_GPIO_C, LCD_RS, Bit_SET);  
188:    
189:       LCD_WriteNibble(dataToWrite >> 4);  
190:       LCD_WriteNibble(dataToWrite & 0x0F);  
191:    
192:  }  
193:    
194:  void LCD_WriteCommand(u8 commandToWrite)  
195:  {  
196:       GPIO_WriteBit(LCD_GPIO_C, LCD_RS, Bit_RESET);  
197:       LCD_WriteNibble(commandToWrite >> 4);  
198:       LCD_WriteNibble(commandToWrite & 0x0F);  
199:    
200:  }  
201:    
202:  void LCD_WriteNibble(u8 nibbleToWrite)  
203:  {  
204:       GPIO_WriteBit(LCD_GPIO_C, LCD_EN, Bit_SET);  
205:       GPIO_WriteBit(LCD_GPIO_D, LCD_D4, (nibbleToWrite & 0x01));  
206:       GPIO_WriteBit(LCD_GPIO_D, LCD_D5, (nibbleToWrite & 0x02));  
207:       GPIO_WriteBit(LCD_GPIO_D, LCD_D6, (nibbleToWrite & 0x04));  
208:       GPIO_WriteBit(LCD_GPIO_D, LCD_D7, (nibbleToWrite & 0x08));  
209:       CharLCD_Delay(0x1F000); // tundaan yang paling cepat yang masi dapat berjalan  
210:       GPIO_WriteBit(LCD_GPIO_C, LCD_EN, Bit_RESET);  
211:    
212:  }  
213:    
214:  void CharLCD_Delay(int Count)  
215:  {  
216:       while(Count--)  
217:       {  
218:       }  
219:  }  
220:    

Kode ini sebenarnya saya gabungkan dari beberapa sumber di internet yaitu:
Namun, kode tersebut tidak dapat langsung digunakan, sehingga saya berikan beberapa sentuhan asik. sampai bisa berjalan dengan baik (setidaknya menurut saya).

Friday, April 11, 2014

Cerita tentang seorang pemula (John)

Pada suatu ketika, ada seorang anak muda yang mendapat tantangan dari seorang yang mengerti banyak hal lebih dari seorang anak muda ini. misalkan saja anak muda ini bernama John, sementara seorang yang banyak pengetahuannyanya bernama Tobias. Karena John adalah seorang yang memiliki tingkat penasaran yang tinggi, serta motivasi untuk terus meningkatkan peradaban manusia, akhirnya dia menerima tantangan dari Tobias yaitu, buatlah suatu bangunan yang monumental, saya tidak akan membatasi detail dari bangunan tersebut, dan dimana bangunan itu harus dibangun, yang harus kamu perhatikan adalah saya pasti akan menanyakan apa alasan kamu membangun bangunan tersebut, sampai ke pertanyaan yang sedetail mungkin, yang bahkan orang orang sebelum kita belum perna menanyakan pertanyaan tersebut. Jaminan untuk John adalah, dia dapat menggunakan apa saja dan semuanya itu akan di tanggung oleh Tobias.

Petualangan John dimulai dari sini...

Thursday, April 3, 2014

Studi mengubah pikiran

Berdasar diskusi dengan advisor pada munggu ini. beliau berkata, proses menempu studi ini tidak lain adalah proses merubah pikiran. apakah yang dimaksud dengan statement ini adalah mencuci otak.

Penjelasan pun berlanjut. Mengapa disebut mengubah pikiran.
Pikiran tempat dimana kesimpulan kesimpulan tentang kebenara di olah...dan diputuskan bahwa kesimpulan tertentulah yang benar pada saat itu.

Misalnya kita akan keluar rumah. Diluar sedang panas terik, sementara kita memiliki pilihan apakah akan menggunakan topi atau menggunakan payung. Kedua pilihan ini baik, tetapi kita pasti memilih salah satu untuk menggunakannya. Kesimpulan pemilihan ini berdasarkan pikiran.

Jika ditanyakan kepada saya, apa yang saya pilih, maka jawabannya adalah payung. Mengapa, Karena pikiran saya tertuju pada barang tersebut. mengapa bisa demikian, karena bersarkan pada pengalaman atau masalalu, saya lebih sukah menggunakan payung daripada topi.

Kembali pada topik "Mengubah Pikiran". bagaimana caranya kita dapat mengubah pikiran sehingga saat ditawarkan menggunakan topi atau payung, kita dapat memilih topi. Proses pengubahan ini yang dilakukan dalam studi yang saya tempu sekarang.

Proses ini berlangsung dengan cara, pada awalnya adalah paksaan, menagapa paksaan karena kita akan mengubah  proses pengambilan keputusan, yang awalnya adalah payaung penjadi topi... paksaan ini akan berlanjut menjadi kebiasaan. Sehingga paksaan hilang, menjadi kebiasaan dan pikiran berubah.

Sesuatu yang benar dibangun dari perilaku yang diakui secara luas. Sehingga ketika kita mulai merasa ada paksaan, jangan jangan ada pikiran yang berubah....