IoT at a glance (Summary)

This was summary from my hard-skill presentation at my office. So starting from February, the Software Engineer team at my office agreed to conduce a weekly sharing. (We’ve had a soft-skill discussion once a week) I volunteer myself as a second presenter (the first turn has taken by the other). At first I was confused to choose the topic that I want to share. Some friends told me to share about PID control system which was being implemented in our system. But I think there are some things that I have not yet understand (about the integral windup parameter and such). So I started to look into another topics. One that comes in mind is IoT. Which couple days before, my friend Marsel, let me brought his Raspberry Pi because he didn’t have a plan about it yet. So I thought it may be fine if I share a little about IoT and Single Board Computer (in this case, Raspberry Pi).

Finally, the day has come, and here’s my presentation:

IoT at a Glance. IoT (Internet of Things) is the inter-networking of physical devices, vehicles (also referred to as “connected devices” and “smart devices”), buildings and other items – embedded with electronics, software, sensors, actuators, and network connectivity – that enable these objects to collect and exchange data. Physical devices could be anything .

For example cars (nowadays, there were already cars which has its own operating system), aquarium (you could make automatic feeder or such), bags, shoes, even door or window, and so many things which only limited by our own ideas.

One of an important component of an IoT system is its embedded smart electronic system which connected the non-connected things into world-wide network so it can be accessed through internet. And I take SBC as an example. A single-board computer (SBC) is a complete computer built on a single circuit board, with microprocessor(s), memory, input/output (I/O) and other features required of a functional computer. (*) There are many SBC which are available to buy. Some of them are Raspberry Pi, BeagleBoard, Odroid, etc. And they have their own dis/advantages.

But I choose Raspberry Pi as an example because it’s the one that I currently brought right now (it’s my friend’s actually). The Raspberry Pi is a series of small single-board computers developed in the United Kingdom by the Raspberry Pi Foundation to promote the teaching of basic computer science in schools and in developing countries. The detailed specifications could be read here. Raspberry also develop its own operating system called Raspbian. Raspbian is a free operating system based on Debian optimized for the Raspberry Pi hardware. Raspbian uses PIXEL, Pi Improved Xwindows Environment, Lightweight as its main desktop environment as of the latest update. It is composed of a modified LXDE desktop environment and the Openbox stacking window manager with a new theme and few other changes.

One thing that makes SBC could be used to create embedded devices is its GPIO. GPIO is general purpose input output. Unlike the other I/O, this port is not specifically designed for specific devices. This is the main feature of SBC and this what differ SBC with PC. We can explore this GPIO as much as we want. Connecting any sensors, or actuators. The GPIO voltage is 3.3v each. It was disabled by default. You can enabled it by runtime. Here’s GPIO port map of Raspberry Pi.

188681-c06f001.jpg

And finally I would like to show how Raspberry run. Default Raspbian user account is pi/raspberry (user/password). And for the latest version (Pi 3 model B) which has included Broadcomm wifi, we could connect to available network via wifi by : edit files in /etc/wpa_supplicant/wpa_supplicant.conf

Add these lines:

network={
ssid=’network-name’
psk=’network-pass’
}

And then restart wifi (sudo ifdown wlan0 , sudo ifup wlan0).

And I also give ideas for sample project using Python and Twitter REST API. With this ideas, you can build a system to automatically switch on/off your water system in your house just by tweets.

And, that’s all.
*sorry for my English

Belajar Memakai Kuda

(x) Dikejar (y) pakai kuda.
(x) Dikejar kuda.

Kalimat pertama berarti subjek (x) dikejar oleh objek lain implisit (y) yang memakai kuda sebagai kendaraan. Hal ini berarti kuda adalah kendaraan untuk mengejar seseorang. Sedang kalimat kedua kuda adalah objek yang mengejar subjek (x).

Beberapa hari terakhir saya menemukan gambar tersebut bertebaran di linimasa, tentu dengan maksud analogi terhadap ucapan Pak Ahok yaitu ‘Dibohongi pake Al Maidah’ yang oleh Buni Yani terdengar dan ter-transkrip menjadi ‘Dibohongi Al Maidah’. Dengan analogi dikejar kuda tersebut mereka bermaksud membela Pak Ahok dengan dasar adanya tambahan kata ‘pakai’ sehingga yang dimaksud berbohong ialah Penyampainya, bukan Al Maidah.

Jadi begini, dengan pernyataan demikian berarti beliau menyebut para ulama yang menyampaikan tafsir surat Al Maidah tersebut sebagai pembohong yang beralatkan ayat Qur’an. Bagaimana bisa seseorang yang tidak memahami Qur’an, mengatakan bahwa ulama, yang tentunya ilmunya mengenai tafsir Qur’an jauh lebih paham, sebagai seseorang yang membohongi umat. Menganggap seorang alim berbohong atas dasar ilmu yang dia miliki, berarti juga menganggap ilmu yang dipelajari seorang alim tersebut adalah kebohongan. Berbeda dengan kuda yang memang seekor hewan, yang tidak ada definisi pasti kegunaannya. Kuda dapat digunakan sebagai alat transportasi, kejar-kejaran, maupun sebagai hewan untuk dikonsumsi. Tentu permaknaan sebuah kalimat tak dapat serta merta dianalogikan dengan kalimat lain yang secara tata bahasa setara. Karena bisa saja secara makna jauh berbeda. (sebenarnya kesalahan analogi ini juga berlaku untuk semua, lebih baik jangan terpancing menggunakan analogi-analogi tak sesuai)

Jangan mudah dibohongi pakai ngasalogi. Ngasal analogi.

NB. Jadilah secerdas cerdas pembaca. Termasuk ketika membaca tulisan ini.

sumber gambar :
https://www.pinterest.com/lapequena01/horses/

Membangun aplikasi menggunakan Android Studio 2.1 (1)

Pada akhir pekan yang panjang ini, saya tertarik kembali mempelajari pembuatan aplikasi android. Terakhir mencoba sudah lama dulu masih memakai Eclipse IDE + Android SDT dan itupun masih menghitung luas segitiga. Dan sejak android meluncurkan IDE sendiri (Android Studio) , saya belum pernah benar-benar mencobanya. Install di laptop sudah pernah, tapi ya itu, dianggurkan saja.

Karena sudah lama sekali, maka saya lupa bagaimana dasar menggunakan android studio, cara debug langsung pada device androidnya. Kalau bahasanya (XML, Java) saya memang belum menguasainya. Bukan lupa. Ehe.

Oleh sebab itulah, kali ini, saya berusaha mendokumentasikan caranya agar kelak ketika lupa dapat membuka tulisan ini. Dan siapatau ada yang membutuhkan, semoga bermanfaat. Okesip.

Sebagai catatan, saya menggunakan Sistem operasi Ubuntu 16.04 LTS 32bit, Android Studio 2.1 (SDK lolipop dan marsmallow), serta device Xiaomi Mi4i untuk debug.

Pertama, pasang adb pada ubuntu dengan menggunakan commandline :

sudo apt-get install adb

Kemudian unduh android studio dari : https://developer.android.com/sdk/index.html

extract , dan letakkan pada /opt/ .

Jalankan dengan perintah

./opt/android-studio/bin/studio.sh

Akan muncul Android Studio Setup Wizard, untuk pengaturan awal aplikasi. Selesaikan proses tersebut.

Start new project

Isi semua field, dan pilih blank activity sebagai percobaan awal

pilih blank activity buat awal
pilih blank activity buat awal

ketika memilih minimum android version, sesuaikan dengan device kita (yang saya gunakan bersistem operasi Lolipop 5.0.2 , dan saya memilih Kitkat 4.4 pada minimum version)

Ketika selesai kita akan menemui tampilan editor android studio dengan default program Hello World.

tampilan IDE android studio
tampilan IDE android studio

Setelah itu coba jalankan pada device anda (ini yang sempat bermasalah) dengan klik Run, dan pilih device anda. Saat itu error message yang muncul adalah :

Unable to create Debug Bridge: Unable to start adb server: Unable to detect adb version, adb output: /Sdk/platform-tools/adb: 1: /Sdk/platform-tools/adb: Syntax error: “)” unexpected

Dari hasil bertanya dengan sesepuh google, saya menemukan jawaban di stackoverflow, bahwa masalah terletak pada platform-tools versi 23.1.0 pada Sistem Operasi Linux 32-bit. Yang perlu dilakukan ialah downgrade ke platform-tools versi 23.0.1 yang dapat diunduh dari https://dl-ssl.google.com/android/repository/platform-tools_r23.0.1-linux.zip

setelah selesai unduh, pindah file ke direktori sdk ( ~/Android/Sdk/ ) lalu rename folder platform-tools yang ada agar tidak conflict, kemudian unzip.

mv platform-tools_r23.0.1-linux.zip ~/Android/Sdk
cd ~/Android/Sdk
mv platform-tools platform-tools-notworking
unzip platform-tools-r23.0.1-linux.zip

Tutup program android studio, lalu jalankan lagi.

Buka project Helloworld yang sudah dibuat, lalu Run

dan voila! maka program akan dipasang pada device android yang terhubung dan dijalankan.

Tutorial: Komunikasi arduino menggunakan RS485

Tutorial kali ini mengenai komunikasi antara dua buah arduino menggunakan modul RS485. Sebenarnya saya juga merujuk dari tutorial lain berbahasa inggris di sini . RS485 merupakan salahsatu modul komunikasi half duplex, secara serial. Half duplex berarti mampu mengirim atau menerima data pada jalur yang sama, namun bergantian (satu arah dalam satu waktu). Modul RS485 memiliki 8 pin yaitu Vcc, GND, A&B, DE, RE, DI, dan RO. Pada tutorial ini saya menggunakan Arduino Uno dan Leonardo, 2 buah modul RS485, serta 16 kabel jumper, dan sebuah breadboard.

Modul RS485

Rangkaiannya seperti berikut :

rangkaian di fritzing
rangkaian di fritzing

– Pin DI (data in) ke pin 11 Arduino sebagai TX software serial (kabel putih)
– Pin RO (receive out) ke pin 10 Arduino sebagai RX software serial (kabel jingga)
– Pin DE (data enable) dan RE (receive enable) dijumper dan dihubungkan ke pin 3 Arduino (kabel hijau)
– Pin A dan B (RS485 pair) dipasangkan kedua modul RS485 (kabel biru & kuning)
– Vcc dan GND dihubungkan (kabel merah dan hitam)

Modul RS485 ini dihubungkan dengan port serial arduino. Jika arduino yang digunakan hanya memiliki satu port serial (yang dihubungkan ke serial monitor PC), makan gunakanlah software serial (salah satu library arduino yang dapat menggunakan pin digital sebagai port serial).

Kemudian programnya ada 2, masing-masing untuk master dan remote. Program arduino dapat membuka 2 sketch dalam waktu yang sama, namun perhatikan PORT communication yang digunakan. Setelah kedua program diupload ke masing-masing perangkat, pilih port komunikasi dengan master lalu buka serial monitor. Ketikkan suatu karakter maka karakter itu akan dikirim melalui RS485 ke device remote untuk kemudian dikembalikan ke master dan ditampilkan di layar serial monitor.

arduino uno dan leo - RS485 (abaikan bunga)
arduino uno dan leo – RS485 (abaikan bunga)

Kode program Arduino Master :

/* YourDuino SoftwareSerialExample1
   - Connect to another Arduino running "YD_SoftwareSerialExampleRS485_1Remote"
   - Connect this unit Pins 10, 11, Gnd
   - Pin 3 used for RS485 direction control
   - To other unit Pins 11,10, Gnd  (Cross over)
   - Open Serial Monitor, type in top window. 
   - Should see same characters echoed back from remote Arduino

   Questions: terry@yourduino.com
 *edited:
 - addded filter
*/

/*-----( Import needed libraries )-----*/
#include <SoftwareSerial.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define SSerialRX 10 //Serial Receive pin
#define SSerialTX 11 //Serial Transmit pin

#define SSerialTxControl 3 //RS485 Direction control

#define RS485Transmit HIGH
#define RS485Receive LOW

#define Pin13LED 13

/*-----( Declare objects )-----*/
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

/*-----( Declare Variables )-----*/
int byteReceived;
int byteReceivedSerial;
int byteSend;

void setup() /****** SETUP: RUNS ONCE ******/
{
 // Start the built-in serial port, probably to Serial Monitor
 Serial.begin(9600);
 Serial.println("YourDuino.com SoftwareSerial remote loop example");
 Serial.println("Use Serial Monitor, type in upper window, ENTER");

 pinMode(Pin13LED, OUTPUT); 
 pinMode(SSerialTxControl, OUTPUT); 

 digitalWrite(SSerialTxControl, RS485Receive); // Init Transceiver 

 // Start the software serial port, to another device
 RS485Serial.begin(4800); // set the data rate 

}//--(end setup )---

void loop() /****** LOOP: RUNS CONSTANTLY ******/
{
 digitalWrite(Pin13LED, HIGH); // Show activity
 if (Serial.available())
 {
 byteReceivedSerial = Serial.read();

 digitalWrite(SSerialTxControl, RS485Transmit); // Enable RS485 Transmit 
 RS485Serial.write(byteReceivedSerial); // Send byte to Remote Arduino

 digitalWrite(Pin13LED, LOW); // Show activity 
 delay(10);
 digitalWrite(SSerialTxControl, RS485Receive); // Disable RS485 Transmit 
 }

 if (RS485Serial.available()) //Look for data from other Arduino
 {
 digitalWrite(Pin13LED, HIGH); // Show activity
 byteReceived = RS485Serial.read(); // Read received byte
 if ((byteReceived == byteReceivedSerial) && (byteReceived != NULL))
 {
 Serial.write(byteReceived); // Show on Serial Monitor
 delay(10);
 digitalWrite(Pin13LED, LOW); // Show activity 
 }
 } 

}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/

//NONE
//*********( THE END )***********

Kode program Arduino Remote

/* YourDuino SoftwareSerialExample1Remote
   - Used with YD_SoftwareSerialExampleRS485_1 on another Arduino
   - Remote: Receive data, loop it back...
   - Connect this unit Pins 10, 11, Gnd
   - To other unit Pins 11,10, Gnd  (Cross over)
   - Pin 3 used for RS485 direction control   
   - Pin 13 LED blinks when data is received  
   
   Questions: terry@yourduino.com 
   *edited:
   - addded delay
*/

/*-----( Import needed libraries )-----*/
#include <SoftwareSerial.h>
/*-----( Declare Constants and Pin Numbers )-----*/
#define SSerialRX        10  //Serial Receive pin
#define SSerialTX        11  //Serial Transmit pin

#define SSerialTxControl 3   //RS485 Direction control
#define RS485Transmit    HIGH
#define RS485Receive     LOW

#define Pin13LED         13

/*-----( Declare objects )-----*/
SoftwareSerial RS485Serial(SSerialRX, SSerialTX); // RX, TX

/*-----( Declare Variables )-----*/
int byteReceived;
int byteSend;

void setup()   /****** SETUP: RUNS ONCE ******/
{
  // Start the built-in serial port, probably to Serial Monitor
  Serial.begin(9600);
  Serial.println("SerialRemote");  // Can be ignored
  
  pinMode(Pin13LED, OUTPUT);   
  pinMode(SSerialTxControl, OUTPUT);  
  
  digitalWrite(SSerialTxControl, RS485Receive);  // Init Transceiver
  
  // Start the software serial port, to another device
  RS485Serial.begin(4800);   // set the data rate 
}//--(end setup )---


void loop()   /****** LOOP: RUNS CONSTANTLY ******/
{
  //Copy input data to output  
  if (RS485Serial.available()) 
  {
    byteSend = RS485Serial.read();   // Read the byte 
    
    digitalWrite(Pin13LED, HIGH);  // Show activity
    delay(10);              
    digitalWrite(Pin13LED, LOW);   

    if(byteSend != NULL)
    {
      digitalWrite(SSerialTxControl, RS485Transmit);  // Enable RS485 Transmit    
      delay(10);
      RS485Serial.write(byteSend); // Send the byte back
      delay(10);   
      digitalWrite(SSerialTxControl, RS485Receive);  // Disable RS485 Transmit      
    } 
//    delay(100);
  }// End If RS485SerialAvailable
  
}//--(end main loop )---

/*-----( Declare User-written Functions )-----*/
//NONE

//*********( THE END )***********

Contoh di atas hanyalah sebagai dasar untuk mengetahui cara kerja komunikasi menggunakan RS485. Untuk penerapannya, komunikasi menggunakan RS485 ini dapat digunakan untuk beberapa buah arduino sebagai remote/client dengan maksimum jarak/panjang kabel 1200 meter dengan kecepatan maksimum 20Mbps. Cocok untuk diaplikasikan dalam sebuah sistem sensor network.

Dalam komunikasi menggunakan RS485, setiap perangkat harus secara bergantian mengirim, dan menerima. Seperti bagaimana manusia berkomunikasi seharusnya. Bahwa agar tercipta suatu komunikasi yang baik, maka harus ada yang berperan sebagai pendengar yang setia dan pembicara yang jelas.

Sekian tutorial mengenai komunikasi arduino menggunakan modul RS485.  Jika ada yang hendak ditanyakan bisa melalui kolom komentar di bawah. Semoga bermanfaat.

*sumber:

https://arduino-info.wikispaces.com/RS485-Modules
http://arduino-info.wikispaces.com/SoftwareSerialRS485Example
https://www.arduino.cc

 

Belajar dari Ketoprak Cirebon

Ketoprak merupakan salah satu warisan kuliner favorit di Indonesia, khususon di Pulau Jawa. Dulu waktu kuliah, langganan saya dan rekan-rekan kampus ialah Ketoprak Lik Min yang terletak persis di sebelah SD di Sendowo. Kemudian sekarang, saat saya sedang menjalani misi di Tangerang, ternyata malah semakin banyak penjual ketoprak yang ada di sekitar tempat kos. Dan langganan saya ialah ketoprak cirebon yang hanya berjarak sekian langkah dari kos. Pernah sih nyobain ketoprak lain yang lebih jauh, namun tetap ketoprak cirebon ini yang paling pas. Selain rasa yang konsisten, bumbu yang mantap, jarak yang dekat pun menjadi alasan saya memilih ketoprak ini. Bahkan mas-mas delivery McD pun memilih berhenti di sini untuk mampir makan.

Beberapa bulan berlangganan ketoprak di sini, ada satu pelajaran moral yang dapat saya ambil. Ialah mengenai ekspektasi. Sejak awal saya selalu pesan ketoprak dengan level “sedang”. Bukannya takut pedas, saya hanya males kalau nanti tengah malam harus setor tunai terlalu dini karena efek kepedesan. Hingga pernah suatu ketika, saat saya pesan ketoprak level sedang dengan berekspektasi rasa pedas yang tak berlebih, ternyata rasanya malah terlalu pedas. Sudah beberapa kali terulang sampai saya harus menegaskan bahwa ‘sedang berarti cabe nya dikit’ kepada mas penjual ketoprak.

Pernah juga pada suatu hari, ketika saya sedang ingin merasakan nikmatnya makan pedas, saya pesan ketoprak dengan level pedas. Namun apadaya, sejak suapan pertama (sampai terakhir) ternyata rasa pedasnya malah sedang-sedang saja. Bahkan masih kalah pedas dengan chat di whatsapp yang hanya centang dua biru tanpa balasan. (Maaf, jangan tersungging, ini berdasar pengalaman teman. Kecuali anda teman saya yang saya maksud, ya maaf.)

Dari sini saya belajar, bahwa jangan terlalu berlebihan dalam ekspektasi. Seperti kata Ika natassaIt’s even said that expectation is the root of all dissapointment. ” , dan ditambah lagu Kunto Aji “mana mungkin hari ini terbuai ekspektasi tinggi jika tak berawal indah sampai akhirnya kau hancurkaan. Saaaakit..” .

Kalau kata saya sih,

“Berhati hatilah dalam berekspektasi, terlebih lagi mengenai hati”.

Magento custom order state

magento

Akhirnya diberi kesempatan untuk menuliskan sesuatu di blog ini. Sebenarnya sudah beberapa waktu lalu ingin menulis namun apadaya laptop error dan kerjaan di kantor tidak dapat disambi ngeblog. Dan tulisan kali ini ialah mengenai Magento. Magento adalah platform eCommerce yang cukup lengkap yang berdasar dari ZendPHP framework. Banyak toko jual beli online yang menggunakan platform ini dikarenakan fitur yang sangat banyak, namun salah satu kekurangan dari magento (yang sepertinya sekarang sudah sedikit teratasi) ialah dokumentasi program yang minim.

Kali ini saya akan membagi (sebenarnya sih menyimpan) cara membuat custom order state di Magento. Order state ialah state pesanan yang dikenali oleh program. Pada dasarnya ada 8 state di Magento yaitu :

new, pending_payment, holded, payment_review, cancelled, closed, processing, complete.

Namun ada kemungkinan suatu sistem jual beli membutuhkan state lain pada prosesnya semisal cicilan_pertama atau lainnya. Nah dikarenakan pengguna tidak dapat membuat order state baru melalui menu di backend, maka perlu dibuat modul/extension untuk custom orderstate.

Berikut beberapa langkah yang saya coba (dan telah diuji keberhasilannya) untuk membuat custom order state pada magento:

pertama buatlah modul dan tentukan namanya (misal. CustomState)

daftarkan modul pada aplikasi anda dengan membuat file pada : app/etc/modules/(nama_toko_anda)_CustomState.xml

format:

<?xml version="1.0"?>
    <config>
        <modules>
            <(nama_toko_anda)_CustomState>
                <active>true</active>
                <codePool>local</codePool>
            </(nama_toko_anda)_CustomState>
         </modules>
    </config>

kemudian buat configuration files dari modul anda pada : app/code/local/<nama_toko_anda>/CustomState/etc/config.xml

berikut contoh file konfigurasinya :

<?xml version="1.0"?>
<config>
<modules>
<(nama_toko_anda)_CustomState>
<version>0.1.0</version>
</(nama_toko_anda)_CustomState>
</modules>
<global>
<resources>
<orderstate_setup>
<setup>
<module>(nama_toko_anda)_CustomState</module>
</setup>
<connection>
<use>core_setup</use>
</connection>
</orderstate_setup>
<orderstate_write>
<connection>
<use>core_write</use>
</connection>
</orderstate_write>
<orderstate_read>
<connection>
<use>core_read</use>
</connection>
</orderstate_read>
</resources>
<sales>
<order>
<statuses>
<payment translate="label">
<label>Angsuran 1</label>
</payment>
</statuses>
<states>
<payment translate="label">
<label>Diangsur</label>
<statuses>
<payment default="1"/>
</statuses>
</payment>
</states>
</order>
</sales>
</global>
</config>

dan tahap berikutnya ialah membuat skrip untuk memasukkan dalam SQL database dengan membuat file pada:

app/code/local/<your_store>/CustomState/sql/customstate_setup/mysql4-install-0.1.0.php

<?php
    $installer = $this;

    // Required tables
    $statusTable = $installer->getTable('sales/order_status');
    $statusStateTable = $installer->getTable('sales/order_status_state');

    // Insert statuses
    $installer->getConnection()->insertArray(
        $statusTable,
        array('status', 'label'),
        array(
            array(
                'status' => 'angsuran_1', 
                'label' => 'Angsuran 1'
            )
        )
    );

    // Insert states and mapping of statuses to states
    $installer->getConnection()->insertArray(
        $statusStateTable,
        array('status', 'state', 'is_default'),
            array(
                array(
                    'status' => 'angsuran_1', 
                    'state' => 'Diangsur', 
                    'is_default' => 1
                )
            )
        );

setelah semua selesai, masuk ke backend, system → cache management → flush magento cache.

flush cache magento
flush cache

Logout kemudian login kembali, dan cek state dan status baru anda di System → order statuses.

Capture
new order state

Sekian, semoga tidak menyesatkan, semoga bermanfaat.

Tutorial membuat efek tiny planet

Akhirnya posting tutorial lagi setelah sekian lama absen dari kategori ini. Kali ini bukan tutorial programming maupun elektronika, apalagi tutorial hijabers. Kali ini saya akan berbagi tutorial cara membuat sebuah tiny planet dari foto panorama yang ada. Mungkin ada yang belum tahu, tinyplanet adalah.. duh bingung menjelaskannya. Ini contohnya :

sanset
spherical-sunset sunset before (atas) dan after (bawah) pembuatan tinyplanet

Kali ini saya akan menuliskan cara membuatnya menggunakan software GIMP. GIMP (GNU Image Manipulation Program) adalah aplikasi pengolah gambar gratis dengan lisensi GNU GPL. Kalau versi berbayar yang paling menyerupainya ialah Adobe Photoshop. Langsung menuju langkah pertama, pilih foto yang akan direkayasa. (akan lebih keren kalau fotonya ialah panorama 360o). Namun foto yang saya gunakan foto pemandangan di Kalimantan. Usahakan fotonya memiliki garis batas horizon yang lurus dan jelas.

1
foto awal

Setelah itu, ubah ukurannya menjadi persegi. (Width = Height) Gambar memang jadi aneh, tapi jangan terlalu dihiraukan.

2
adjust size. square

Setelah itu, putar gambar 180o atau flip vertical.

3
vertically flipped

Kemudian ke bagian yang ditunggu, pilih Filter -> Distort -> Polar Coordinate. Atur offset untuk memutar/merotasi gambar.

4
after polar coordinate effect

Dan untuk memperoleh gambar lebih besar bagian tengah serta menghilangkan sudut sudut putih, crop gambar dengan menahan tombol shift untuk menjaga agar bentuk seleksi crop ialah persegi.

5
setelah cropping dan ‘pembersihan’

Pada setiap perlakuan Polar coordinate pada gambar dengan kedua ujung sisi tidak sama, maka akan terjadi kontras warna dan bentuk objek. Untuk menghaluskan dapat menggunakan healing tools maupun clone stamp sesuai kebutuhan. Dan tambahkan sedikit adjusment pada gambar, hingga hasil akhirnya :

final
and, the final result. tinyplanet of meliau, kalimantan

Demikian hasil akhir, kalau ada yang kurang jelas bisa ditanyakan. Oh iya, semua cara di atas dapat juga dengan mudah dilakukan pada Adobe Photoshop karena menu yang serupa. Sekian, banyak kurangnya mohon maaf dan mohon koreksi jika ada kesalahan.

[update] tiny planet tegal alun, papandayan:

tnplnt
tiny planet tegal alun-papandayan (mi4i camera + adobe photoshop cs2)

Instalasi dan kompilasi TinyOS pada Ubuntu 13.10

downloadSistem operasi dari komputer yang saya gunakan ialah Ubuntu Saucy (13.10). Pada ubuntu, karena merupakan sistem operasi LINUX/UNIX maka hal yang pertama di lakukan untuk melakukan instalasi ialah menambahkan daftar repositori pada direktori /etc/apt/source.list.

 

Kemudian, lakukan instalasi tinyos dengan perintah

$ sudo apt-get install tinyos-source tinyos-tools nescc

Pada awal percobaan, nescc (nested-c compiler) gagal diinstall karena crash dengan paket aplikasi kate-data (dependency dari aplikasi video editor : KDEnlive). Hal ini membuat saya harus menghapus program editor video tersebut demi terpasangnya nescc.. Oleh karena itu saran saya untuk dapat menggunakan nescc anda harus menghapus segala sesuatu yang berhubungan dengan KDE (yang kira-kira memiliki dependency kate-data) terlebih lagi untuk pengguna desktop environment KDE, sebaiknya ganti dan hapus KDE tersebut.

Setelah semuanya berhasil dipasang, kemudian dilakukan pengecekan environment dengan perintah

$ tos-check-env

Setelah itu masuk ke direktori tinyos. Pada mulanya saya tidak tahu lokasinya, namun dengan bantuan perintah ‘locate tinyos’ akhirnya ditemukan bahwa instalasi tinyos disimpan dalam direktori /usr/src/tinyos . Kemudian, masuk ke direktori /tinyos/apps/. Di dalam direktori tersebut terdapat beberapa macam contoh aplikasi tinyOS yang sudah dibuat. Karena ingin mencoba kompilasi, maka saya menggunakan contoh kode dari sini. Program yang saya pilih ialah Radio Sense To leds. Program ini merupakan contoh pada platform sensor node dengan standar 4Hz dan mengirimkan paket data dalam AM packet. Node yang menerima broadcast menampilkan 3 bit nilai paling dasar yang diterima. Aplikasi ini sebagai contoh dasar penggunaan komunikasi AM, timer, dan kerja sensor dalam TinyOS. Untuk melakukan kompilasi diperlukan compiler untuk platform msp430. Maka dari itu saya melakukan instalasi paket msp430-gcc. Setelah itu, saya coba melakukan kompilasi. Daftar platform yang dapat digunakan sebagai target dapat dilihat di direktori /usr/src/tinyos/tos/platforms . Saya mencoba melakukan kompilasi untuk platform EyesIFX yang merupakan sensor node dengan mikrokontroler MSP430, dengan memori eksternal 8Mbit dan support TinyOS (http://en.wikipedia.org/wiki/List_of_wireless_sensor_nodes).

Untuk kompilasi digunakan perintah make <platform> , maka saya ketikkan di terminal :

$ make eyesIFX

Namun ternyata masih ditemukan error dengan pesan :

make: javac: Command not found

download (1)Ternyata diperlukan instalasi JDK (java development kit) untuk melakukan kompilasi aplikasi TinyOS. Maka saya melakukan instalasi lagi paket java jdk :

$ apt-get install openjdk-7-jdk

 

Setelah paket JDK berhasil dipasang, saya coba lagi perintah make, dan alhamdulillah, berhasil.
Berikut bukti screenshoot nya :

build for eyeIFXv2 success
build for eyeIFXv2 success

 

Program yang berhasil dibuat tersimpan dalam direktori:

/usr/src/tinyos/apps/<nama aplikasi>/build/<nama platform>

*contoh kalau punya saya di dalam direktori :

/usr/src/tinyos/apps/RadioSenseToLeds/build/eyesIFXv2

Sekian pengalaman instalasi dan kompilasi aplikasi TinyOS untuk platform msp430 menggunakan notebook Lenovo G460 dengan sistem operasi Linux (Ubuntu 13.10).

KONSEP EMBEDDED SYSTEM PADA NOKIA LUMIA 920

Nokia Lumia 920 adalah salah satu ponsel cerdas terbaru keluaran dari Nokia. Seperti versi pendahulunya, ponsel ini masih setia menggunakan sistem operasi Windows. Hanya, kali ini digunakan seri terbaru yaitu Windows phone 8.

metro ui windows phone
metro ui windows phone

            Seperti yang telah kita sepakati, suatu Embedded System (sistem benam) merupakan sebuah sistem l menyerupai komputer yang melakukan suatu fungsi tertentu. Fungsi tertentu tersebut diantaranya sebagai media penyimpanan data, alat komunikasi, pengambil gambar, dan lain sebagainya. Dikarenakan hanya melakukan fungsi tertentu, maka komponen penyusun embedded system lebih kecil jika dibandingkan dengan personal computer. Dan menurut konsep tersebut, Nokia Lumia 920 dapat kita sebut sebagai embedded system dengan jenis smartphone.

            Telah kita ketahui bahwa trend embedded system dewasa ini ialah penggunaan System on Chip (SoC), yaitu Intregated Circuit yang mengintegrasikan beberapa macam komponen dari sebuah komputer atau sistem elektronik lain dalam sebuah chip tunggal. SoC dapat berisi sinyal digital, analog, maupun campuran, serta kadang juga radio-frequency function dalam sebuah chip tunggal. Pada umumnya Soc tersusun atas mikrokontroler, mikroprosesor atau DSP (Digital Signal Processor) core. Ada yang single core, namun belakangan ini kebanyakan smartphone menggunakan dualcore bahkan quadcore. Lalu ada blok memori (RAM, ROM, EEPROM), oscilator, timer, interface eksternal (USB, USART, SPI, dll), Analog interface, pengatur tegangan dan sirkuit manajemen sumber daya. Untuk Nokia Lumia 920 sendiri menggunakan Soc Snapdragon manufaktur Qualcomm dengan seri MSM8960. Chip dengan fabrikasi 28 nm ini menggunakan CPU ARMv7 dual-core dengan kemampuan clock speed mencapai 1,7 GHz. Sedangkan GPU(Graphical Processing Unit)  yang digunakan ialah Adreno 225 dengan dual channel memori yang sudah mendunkung Direct3D feature level 9_3. Untuk teknologi jaringan nirkabel radio-frequency, SoC ini dibenamkan Bluetooth 4.0, 802.11a/b/g/n (2.4/5 GHz), World Mode (LTE FDD/TDD CAT3, SVLTE-DB, TD-SCDMA, Rel9 DC-HSPA+, GSM/GPRS/EDGE, EGAL, 1× Adv., 1× EV-DO Rev. A/B).

            Selain sistem chip, juga ada sistem tampilan/layar dan pada Lumia 920 ini digunakan LCD berukuran (diagonal) 4.5 inch dengan resolusi 1280×768 WXGA yang memiliki kerapatan piksel 332 ppi. Layar tersebut juga dilengkapi dengan panel IPS (in-plane-switching) yang menghasilkan sudut pandang lebih luas dengan akurasi produksi warna yang tinggi serta dapat mereduksi motion-blur.

Selain itu juga ada kamera, yang menggunakan teknologi PureView dengan resolusi 8,7 MP yang memiliki fitur optical image-stabilization. Sensor yang digunakan ialah Back Side Illumination (BSI), yang mampu meningkatkan performa kamera dalam kondisi cahaya yang kurang (redup), dengan lensa Carl Zeiss yang mampu merekam video HD beresolusi 1080p. Sebagai data masukan, terdapat berbagai sensor yaitu Multitouch capacitive touchscreen, sensor kelembapan, sensor cahaya, gyroscope, magnetometer, dan accelerometer 3 axis.

            Teknologi sumber daya yang dibenamkan dalam Nokia Lumia 920 ini ialah Lithium Polimer BP-4GW dengan kapasitas 2000 mAH. Smartphone ini sudah mendukung teknologi inductive charging yaitu proses pengisian ulang daya baterai nirkabel (sering disebut wireless charging). Memang tanpa kabel, namun menggunakan coil untuk memindah energi dari charger (primary coil) ke device (secondary coil).

            Sistem Operasi yang ditanamkan pada Nokia Lumia 920 ini ialah Windows Phone 8. Sistem Operasi ini dapat digolongkan sebagai Embedded Operating System.Windows Phone merupakan generasi kedua dari Windows Phone mobile operating system.Sistem operasi ini memiliki interface sederhana, kotak-kotak, tersusun dalam grid yang dikenal dengan nama Metro UI / Modern UI, dan merupakan sistem operasi Closed-Source (commercial and also propertiary).Kernel yang digunakan ialah Microsoft NT kernel, sama seperti yang digunakan oleh Windows 8. NT kernel menggunakan teknologi hybrid kernel yaitu kombinasi beberapa aspek dari arsitektur microkernel dan monolithic kernel. Dengan NT Kernel, Windows Phone 8 mendukung multi-core CPU serta NTFS File System. Windows Phone 8 juga mendukung multi-tasking, sehingga pengguna dapat menjalankan suatu aplikasi tanpa harus menutup aplikasi lainnya, serta dapat berganti dari aplikasi yang sedang aktif dengan aplikasi yang sedang berjalan di background. Sistem Operasi ini juga memiliki kemampuan NFC (Near Field Communication) yang memungkinkan dua device bersistem operasi windows 8 bertukar informasi/data melalui fitur Tap and Send.

Cloud Computing: A short brief, history, and technology

Mobilitas manusia sudah dimulai sejak jaman dahulu, dimana kegiatan tersebut dilakukan dengan berbagai tujuan antara lain untuk mencari makan, mencari tempat tinggal yang lebih baik, mengungsi dari serbuan orang lain dan sebagainya. Namun pada zaman sekarang, mobilitas manusia yang tinggi bukan lagi hanya untuk mencari makan atau tempat tinggal, namun juga dengan tujuan lain seperti belajar, berbisnis, berwisata, dan sebagainya. Dan perkembangan teknologi sekarang juga semakin mendukung tingginya mobilitas manusia tersebut. Hal ini dapat dilihat ketika laptop/notebook lebih banyak dibutuhkan daripada komputer desktop. Bahkan netbook, laptop dengan ukuran mini juga semakin merebak peredarannya. Netbook, sesuai namanya, sebenarnya fungsi utamanya ialah sebagai sarana menjelajah internet dan menggunakan aplikasi-aplikasi ringan seperlunya semisal office.

Mobilitas tinggi juga menuntut sebagian orang untuk selalu terhubung dimana saja. Sehingga mereka membutuhkan lebih dari 1 perangkat mobile seperti laptop, smartphone, atau tablet. Keberagaman gadget tersebut menimbulkan permasalahan baru yaitu ketika ada suatu data yang butuh diakses menggunakan semua gadget dimanapun, kapanpun.  Selain itu, banyaknya proyek yang membutuhkan beberapa orang dalam pengerjaannya (collaborative working) juga menjadi permasalahan. Dengan mobilitas yang tinggi, maka kemungkinan untuk dapat bekerja bersama dalam satu tempat lebih kecil.

Melihat permasalahan tersebut, para praktisi Teknologi Informasi mulai memanfaatkan teknologi Cloud Computing. Beberapa aplikasi menerapkan teknologi komputasi awan guna membantu pengguna. Jenis aplikasi yang menerapkan teknologi komputasi awan diantaranya cloud storage (Dropbox, Ms. SkyDrive, Google Drive, Humyo, dan lainnya), collaboration tools (Spicebird, Mikogo, Vyew, dan sebagainya), serta virtual office (Google drive, thinkfree, Miscrosoft office live).

Komputasi awan, adalah sebuah ungkapan untuk menggambarkan beberapa macam konsep komputasi yang melibatkan beberapa komputer dalam jumlah yang besar dan terhubung melalui jaringan komunikasi real-time semisal internet. Dalam beberapa ilmu seperti ilmu pasti, komputasi awan ialah komputasi terdistribusi dalam jaringan, yang berarti kemampuan untuk menjalankan suatu program dalam beberapa komputer dalam satu waktu. Teknologi komputasi awan ini sudah dimulai sejak beberapa tahun silam.

Pada pertengahan tahun 1950an, mulai dicoba untuk membagi akses fisik suatu komputer dari berbagai terminal sebagaimana digunakan untuk membagi CPU. Pada tahun 70an, proses pembagian tersebut semakin marak, dan dikenal dengan nama RJE (Remote Job Entry). Proses RJE ini banyak digunakan pada mainframe IBM dan DEC. Tahun 90an, beberapa perusahaan telekomunikasi mulai menawarkan teknologi server virtual pribadi,VPS (Virtual Private Server). Kemudian pada awal tahun 2000an, beberapa web servis sperti Amazon memegang peranan penting dalam pengembangan dari teknologi cloud computing dengan menggunakannya pada pusat pengolahan data.

Dengan menyadari bahwa arsitektur cloud yang menghasilkan peningkatan efisiensi internal sehingga beberapa fitur dapat ditambahkan dengan mudah dan cepat, Amazon menawarkan komputasi awan ini ke pelanggan dengan merilis Amazon Web Services pada 2006. Contoh lainnya, pada awal 2008, Eucalyptus menjadi platform open-source pertama yang kompatibel dengan AWS API untuk mengembangkan jaringan awan pribadi. Pada awal 2008 juga, OpenNebula menjadi piranti lunak opensource pertama untuk mengembangkan jaringan awan hybrid, dan pribadi. Pada Maret 2011, framework IBM SmartCloud diresmikan, dengan fungsi sebagai pendukung dari Smart Planet. Hingga saat ini, perkembangan teknologi yang mengadopsi Cloud Computing sudah semakin pesat.

Contoh arsitektur cloud computing
Contoh arsitektur cloud computing

Gambar tersebut merupakan salah satu contoh arsitektur Cloud Computing. Pada contoh tersebut terdapat 4 komponen, ada Cloud Infrastructure, Cloud Service, Cloud Platform, dan Cloud Storage. Keempat komponen tersebut saling berkomunikasi melalui mekanisme tertentu. Beberapa karakteristik dari Cloud Computing ialah :

l  – Kecerdasan yang meningkat seiring kemampuan pengguna

l  – API (Application Programming Interface) yang memudahkan aksesibilitas piranti lunak untuk berinteraksi dengan clouds software.

l  – Biaya yang berkurang. Hal ini diklaim oleh para penyedia layanan Cloud Computing

l  – Ketidakbergantungan dengan perangkat maupun lokasi sehingga memudahkan pengguna mengakses menggunakan piranti apapun, dimanapun.

l  – Teknologi virtualisasi yang memungkinkan pengguna untuk mengakses sistem menggunakan web browser native di desktop maupun mobile.

l  –Multitenancy yang memungkinkan perangkat untuk berbagi sumber daya dan biaya, sehingga memungkinkan untuk sentralisasi infrastruktur, peningkatan kapasitas peak-load, serta peningkatan utilisasi dan efisiensi sistem.

l  – Dapat diandalkan untuk keperluan bisnis, profesional, mupun pribadi.

l  – Performa yang selalu dimonitori

l  – Keamanan semakin meningkat dengan adanya \sentralisasi data.

l  – Perawatan/pengelolaan mudah, karena tidak perlu instalasi di tiap komputer, dan dapat diakses dari manapun.

Keuntungan menggunakan teknologi Cloud Computing ini, diantaranya, karena sentralisasi data, maka kemanan lebih terjamin. Kemudian, sumber daya dari cloud computing juga dapat direalokasikan sehingga memaksimalkan penggunaan daya komputasi. Dan para pendukung teknologi komputasi awan ini, menyetujui bahwa dengan Cloud Computing dapat mengurangi biaya infrastruktur. Selain itu mereka juga mengamini bahwa dengan Cloud Computing, aplikasi dapat berjalan lebih cepat dengan maintenance yang lebih sedikit, serta memungkinkan teknologi informasi berkembang menyesuaikan dengan kebutuhan bisnis yang tak dapat diprediksi.

Salah satu contoh layanan yang menggunakan teknologi Cloud, ialah Cloud Storage. Dan penyedia layanan Cloud Storage yang cukup banyak penggunanya, ialah Dropbox dan Google Drive. Dropbox merupakan layanan file hosting milik Dropbox.inc., yang berkantor di San Fransisco, California. Selain Cloud Storage, Dropbox juga menyediakan layanan sinkronisasi berkas dan client software. Dropbox memungkinkan pengguna untuk membuat folder spesial pada komputer masing-masing yang kemudian semua file di dalam folder tersebut disinkronisasi oleh Dropbox sehingga isi, struktur folder tersebut sama/tetap ketika diakses melalui web browser maupun komputer lain dengan akun yang sama. File tersebut juga dapat diakses melalui smartphone yang sudah terintegrasi dengan Dropbox. Platform smartphone yang sudah mendukung integrasi Dropbox ialah Windows Phone, Android, iOS, serta Blackberry OS. Platform lain juga dapat mengakses, melalui browser yang ada. Dropbox server, dan desktop client sebagian besar dikembangkan menggunakan bahasa pemrograman python. Untuk desktop client menggunakan GUI toolkit dari wxWidgets dan Cocoa. Untuk mengunggah file ke Dropbox, dapat menggunakan fitur Drag-Drop dengan desktop client yang kemudian otomatis tersinkronisasi dengan server, atau dengan mengunggahnya langsung melalui web browser. Dropbox juga memungkinkan beberapa pengguna untuk saling berbagi folder yang sama, semisal untuk keperluan collaborative working. Dalam menyimpan data, Dropbox menggunakan enkripsi AES-256. Salah satu teknisi Dropbox mengembangkan teknologi LANSync yang memungkinkan komputer pada local area network untuk mengunduh file dari client lain dengan aman.

Selain Dropbox, juga ada Google Drive. Google Drive ini berawal dari Google Docs, yaitu sebuah layanan dari Google untuk membuat maupun mengubah berkas dokumen secara online. Tampilan antarmuka Google Docs dibuat sedemikian sehingga menyerupai software word-processor pada umumnya seperti Ms.Word, LibreOffice Writer. Selain pengolah dokumen, Google Drive juga memungkinkan pengguna untuk menympan file di cloud storage, berbagi dengan teman, serta collaborative editing. Kapasitas yang ditawarkan Google Drive pada pengguna awal yaitu 5 GB, yang dapat ditingkatkan jika pengguna meningkatkan status akunnya menjadi Pro-user. Untuk mempermudah sinkronisasi file dengan desktop, tersedia Google Drive client untuk platform Windows, Max OSX, Android, dan iOS. Sementara untuk Linux masih dalam tahap pengembangan. Google Drive juga terintegrasi maksimal dengan Chromium OS, platform sistem operasi opensource yang dikembangkan oleh Google. Disamping dokumen office, Google Drive memungkinkan pengguna untuk melakukan pratinjau pada gambar, video, Markup/code, Portable Document(PDF), Postscript, fonts, arsip, XML, Scalable Vector, serta file Adobe (photoshop dan illustrator).

Teknologi Cloud Computing saat ini masih belum selesai berkembang. Masih banyak kemungkinan untuk semakin berkembang demi memenuhi kebutuhan akan komputasi yang cepat, efisien, serta hemat sumber daya.

sumber :

http://en.wikipedia.org/wiki/Google_Drive
http://en.wikipedia.org/wiki/Dropbox(service)
http://en.wikipedia.org/wiki/Cloud_computing