7 Des 2019

0
Komentar

Pemrograman STM32 di Linux


Bismillahirrahmaanirrahiim.

Saat ini, mungkin hampir semua orang sudah mendengar istilah "ARM". Arsitektur processor 32 bit ini merupakan arsitektur yang saat ini paling banyak digunakan. Mulai dari smartphone, tablet, embedded system seperti RaspberryPi dan semacamnya, dan tentunya mikrokontroler. Selain memiliki banyak sekali fitur, ARM juga sangat rendah daya. Dan yang paling menarik, harganya yang cukup murah.

Saya yang selama ini terbiasa menggunakan AVR sebagai mikrokontroller andalan, perlahan telah mulai memberanikan diri untuk 'hijrah'.

Di sini, saya ingin berbagi catatan mengenai pemrograman salah satu mikrokontroler berbasis ARM. yaitu STM32. Semoga di post-post berikutnya, saya bisa menjelaskan beragam fitur-fiturnya secara bertahap. Tentunya lebih berfokus pada contoh aplikasinya.

Sebagai catatan, disini saya menggunakan OS Ubuntu (Linux). Namun umumnya untuk pengguna OS lain, pada dasarnya langkah-langkah yang digunakan atau apa saja yang perlu di install adalah sama. Perbedaannya hanya pada prosedur instalasinya saja.

Baiklah, kita mulai.

Persiapan Hardware

Pertama, mikrokontroler STM32F103. Atau biasa dikenal dengan istilah "Blue pill".


Kedua ST-Link V2, perangkat ini digunakan untuk melakukan flashing program yang telah kita buat ke flash memory (atau istilah di Arduino : Upload). Fungsinya serupa dengan "downloader" USBASP untuk mikrokontroler AVR. Namun dengan ST-Link, kita juga bisa sekaligus melakukan debugging.


Ketiga, rangkai stm32f103 dengan STLink-v2 dengan konfigurasi seperti berikut ini (klik gambar untuk memperbesar) :




Setup Environment

Di bagian ini kita akan menyiapkan environtment  untuk dapat melakukan pemrograman, kompilasi, hingga flashing.

Pertama, buka terminal dan install make. Make digunakan untuk eksekusi perintah kompilasi.



Setelah instalasi selesai, Coba masukan perintah "make" lalu tekan enter. Seharusnya akan muncul pesan seperti ini :



Untuk dapat melakukan kompilasi program ARM, kita memerlukan compiler gcc-arm-none-eabi, dengan menginstall toolchain ARM dibawah ini :



Selanjutnya, kita akan menginstall program untuk bisa menggunakan ST-Link. Sebelumnya, install dependencies berikut ini :



Lalu kita akan build ST-Link binaries dengan download (cloning) source dari git. Disini saya mendownloadnya ke direktori $HOME, jika ingin direktori lain silahkan sesuaikan dengan kebutuhan.



Jika semua perintah diatas telah dilakukan, coba masukkan perintah "st-flash". Jika ST-Link sudah terinstall dengan benar, maka akan muncul pesan seperti di bawah ini :



Selanjutnya, kita akan membuat USB rule agar ST-Link dapat diakses tanpa perlu menggunakan "sudo". Perintah dibawah akan membuka editor teks Nano.



Copy-paste script berikut ini ke dalam editor Nano :



*) Opsi: jika anda menggunakan selain ST-Link V2, bisa pilih salah satu dari list dibawah ini :



Save dan Exit, lalu restart USB service.



Terakhir, download Standard Peripherals dibawah dan ekstrak di direktori yang diinginkan.
STDPeriphLib


Sampai tahap ini, environment untuk programming STM32 telah siap.


Testing Program


Setelah menyiapkan environment, sekarang saatnya kita mulai memprogram!

Buka editor teks yang biasa kamu gunakan. Kemudian buat program seperti berikut ini dan simpan sebagai "main.c".



Program diatas merupakan testing program atau bisa dibilang sebagai "Hello World"-nya mikrokontroler, yaitu blinking LED. Di module STM32F103 "Blue Pill" kita bisa memanfaatkan LED yang sudah built-in di pin PC13, lalu kita set dan reset dengan jeda 500ms.

Setelah itu, buat file konfigurasi kompilasi dibawah ini. Ubah direktori STD_PERIPH_LIBS dengan path direktori STDPeriphLib yang sudah di download sebelumnya. Simpan dengan nama "makefile", di folder yang sama dengan "main.c".




Setelah itu, lakukan kompilasi dan flash dengan perintah :



Dengan program tersebut, led di pin PC13 akan berkedip setiap 500ms.

Selamat, pemrograman STM32 telah sukses.

Penutup

Dalam library STD Periph diatas, terdapat berbagai program contoh yang dapat kita jadikan referensi. Jadi, jangan ragu untuk mencoba !


Tutorial diatas dibuat bersasarkan informasi dari berbagai sumber dengan penyesuaian saya sendiri. Jika ada yang perlu didiskusikan, silahkan komen dibawah.

28 Agu 2018

0
Komentar

Linux: Unable To Format Device


Bismillaahirrahmaanirrahiim.

Beberapa waktu lalu saat saya mencoba mem-format flashdisk, muncul peringatan error :

The driver descriptor says the physical block size is 2048 bytes but linux says it is 512 bytes.

Hal ini terjadi di 2 flashdisk saya sekaligus, setelah keduanya saya gunakan untuk instalasi linux menggunakan Startup Disk Creator. Setelah saya coba format menggunakan GParted, muncul peringatan seperti ini :

Libparted Error

Setelah saya klik Ignore, kemudian di tampilan partition table menjadi seperti ini :

Partition Error

Kemudian setelah mencoba beberapa saran dari forum, saya menemukan salah satu solusi yang cukup mudah. Langkah Pertama buka terminal dan masukkan perintah berikut ini :

> sudo fdisk -l


Perhatikan nama device yang menjadi target, dalam kasus saya "sdb". Kemudian langkah Kedua, masukkan perintah dibawah ini (untuk sdx, ganti sesuai dengan device target) :

> sudo dd if=/dev/zero of=/dev/sdx obs=2048 count=32 && sync

 Perintah telah dieksekusi

Langkah Ketiga, buka GParted (Atau aplikasi partisi lainnya), kemudian hapus (delete) semua partisi. Selelah itu akan muncul jendela perintah untuk membuat Partition Table. Klik Device > Create Partition Table :

Membuat Partition Table


Lalu klik Partition > New. Beri nama dan atur size sesuai kebutuhan. Jika semua sudah sesuai, klik Add :

Membuat Partisi baru

Agar Flashdisk dapat dibaca oleh semua sysem OS, jangan lupa rubah File System-nya menjadi Fat32.

Parameter Partisi

Setelah semua selesai, maka penting untuk diketahui bahwa semua step diatas belum dijalankan sama sekali. Semua akan disimpan sebagai operation step. Jika semua telah dipastikan dengan benar, untuk melakukan semua operasi tersebut, klik icon Apply.

Apply all operation



Kemudian tunggu hingga semua operasi telah selesai dijalankan.

Operasi Sukses


Semoga bermanfaat.

26 Nov 2017

8
Komentar

Setting Bluetooth HC-05

Bismillaah.

Modul HC-05 adalah modul bluetooth yang memiliki interface UART. Atau yang biasa kita kenal sebagai komunikasi Serial. Maka untuk mengakses modul Bluetooth HC-05, cukup dengan menggunakan 2 pin : RX dan TX.

Aplikasi dengan menggunakan modul bluetooth ini sangat banyak sekali. Dari sekian project yang saya buat menggunakan modul HC-05 ini diantaranya adalah kontrol Dot Matrix Display melalui aplikasi android.

Tapi sebelum sejauh itu, kali ini kita akan membahas terlebih dahulu bagaimana cara menyetting modul bluetooth HC-05 agar dapat kita gunakan dalam project yang kita buat.


Set Environment

Pertama yang perlu kita siapkan tentu saja adalah modul Bluetooth HC-05 [1]. Kemudian modul Serial to USB [2]. Jika tidak memiliki modul Serial to USB, bisa menggunakan Arduino biasa dengan memanfaatkan example sketch Software Serial.


Lalu rangkai sesuai dengan wiring dibawah ini :


Setelah itu, buka aplikasi semacam hyper terminal. Untuk mempermudah, disini yang saya gunakan adalah Serial Monitor milik Arduino IDE.


Langkah-langkah Pengaturan Bluetooth HC-05

  1. Koneksikan modul USB to TTL ke PC bersamaan dengan menekan tombol seperti pada gambar dibawah. Dengan cara ini, kita dapat masuk ke AT-Mode. Jika di modul tidak ada tombol ini, maka bisa dengan men-ground-kan pin 13 (langkah-langkah ini bisa dicari di google).



  2. Jika langkah diatas sudah benar, maka LED pada modul HC-05 akan berkedip kurang lebih setiap 2 detik. Kemudian kita bisa berpindah ke layar PC.
  3. Pada Arduino IDE, buka serial monitor dengan memilih menu Tools > Serial Monitor atau tekan Ctrl + Shift + M.


  4. Pastikan Baudrate pada Serial Monitor menunjukkan angka 38400, dan pilih closing character Both NL & CR.


  5. Ketik AT dan tekan enter. Maka jika langkah sebelumnya telah dilakukan dengan benar, akan munculk pesan balasan OK!


  6. Dengan cara yang sama seperti pada langkah 5, kita dapat menyetting mode Bluetooth sebagai client/slave, dengan mengetik AT+ROLE=0 lalu tekan Enter.
  7. Untuk setting Nama Device, ketik AT+NAME=XXXX (nama devicenya) lalu tekan Enter.
  8. Untuk setting Password, ketik AT+PSWD=XXXX (password devicenya) lalu tekan Enter.
  9. Untuk setting Baudrate, ketik AT+UART=9600,0,0 (bisa 2400, 4800, 9600, 115200, dst) lalu tekan Enter.
  10. Untuk mengetahui setting HC-05 saat ini, maka cukup ketik command dan tambahkan dengan tanda ‘?’. Contoh AT+PSWD? Kemudian tekan Enter.
  11. Setelah melakukan setting, lakukan restart pada modul HC-05 dengan melepas sumber VCC dari modul HC-05, kemudian pasang kembali.
  12. Modul Bluetooth HC-05 sudah bisa digunakan.

Penutup
Kurang lebih begitulah cara menyetting bluetooth HC-05. Di post berikutnya, mungkin saya akan mencoba membahas contoh project yang memanfaatkan modul bluetooth HC-05 ini.

Semoga menjadi ilmu yang bermanfaat.

<z/>

15 Jan 2017

0
Komentar

Membuat Library EAGLE


Bismillaahirrahmaanirrahiim.

Eagle CAD adalah software yang biasa digunakan untuk mendesain PCB (Printed Circuit Board). Diantara sekian banyak komponen yang disertakan dalam library bawaan EAGLE, masih banyak komponen yang tidak tersedia. Kita dapat menambahkannya sendiri dengan file .lib yang tersedia di internet, itu pun kalau kita beruntung menemukannya. Jika tidak, salah satu cara lainnya adalah dengan membuat library komponen sendiri.

Kebetulan saya mendapatkan project yang menggunakan display 7-segment ukuran 1.28", dan kebetulan pula komponen tersebut tidak tersedia di EAGLE. Jadi saya akan mencoba membuatnya sendiri. Berikut ini adalah tutorial step by step saya dalam membuat library di EAGLE.

1. Membuat Symbol

Symbol adalah komponen yang akan kita gunakan saat mendesain schematic atau .sch. Setelah EAGLE di jalankan, pilih File - New - Library :


Kemudian klik icon Symbol.


Berikan nama pada Symbol yang kita buat, disini saya menamakannya 7s. Lalu klik OK.


Setelah itu, masuk ke Symbol Editor. Hampir sama dengan editor saat kita merancang schematic. Hanya saja tool yang tersedia lebih sedikit.

Pertama, saya menggunakan Wire. Kemudian saya menggambar kotak untuk layout dasar 7segment yang akan saya buat.


Lalu saya buat angka 8 dengan tool Text (untuk hiasan saja sih sebenarnya).


Setelah itu kita masuk ke bagian terpentingnya, kita akan menabahkan pinout dari komponen yang sedang kita buat. Pilih icon Pin kemudian pasang kira-kira seperti contoh dibawah ini. 7segment yang saya gunakan memiliki 10 kaki, terdiri dari segment A-G (7 pin), Dot, dan 2 Common.


Langkah berikutnya, kita beri nama tiap pin dengan tool Name seperti pada contoh dibawah ini (Sebagai catatan: pin H adalah Dot). Jika sudah, klik Save.



Perlu diperhatikan, Nilai grid tidak perlu dirubah. Ikuti nilai defaultnya saja, karena jika dirubah, wire tidak bisa tersambung pada saat membuat skematik. Pastikan properties grid bernilai seperti pada gambar berikut ini:


2. Membuat Package

Package adalah komponen yang kita gunakan saat mengedit file Board atau .brd. Setelah symbol sudah kita buat, langkah selanjutnya adalah membuat package. Klik icon Package.


Lalu buat gambar kotak dengan Wire sebagaimana yang dilakukan di langkah sebelumnya. Kemudian tambahkan Pad, yang merupakan hole atau lubang untuk memasukkan kaki komponen.Setiap ukuran dan jarak harus sama dengan komponen sebenarnya, karena file Board inilah yang akan kita gunakan untuk mencetak PCB.


Setelah itu beri nama pada tiap Pad. Sebagaimana yang kita lakukan saat memberi nama pada Pin di schematic. Agar lebih mudah, beri nama tiap pad dengan urutan nomor sesuai dengan urutan kaki komponen. Untuk hiasan, kita dapat memanfaatkan Text tool.

  

3. Menghubungkan Symbol dan Package

Setelah membuat Package dan Symbol, maka langkah berikutnya adalah mengkoneksikan Pin dan Pad. Klik icon Device (disini saya beri nama 7S). Klik OK.


Setelah jendela Device terbuka, klik Add. Lalu pilih Symbol 7S.


Di bagian pojok kanan bawah, buka file Package dengan klik New, lalu pilih 7S.


Kemudian klik Connect. Maka akan muncul jendela Connect yang berisi nama Pin dan Pad. Pilih sesuai urutan nama dan Pin lalu klik Connect.

Disini saya menggunakan gambar 7segment berikut ini sebagai referensi. Jadi Pad 1 terkoneksi dengan pin e, Pad 2 dengan pin d, dan seterusnya.


Setelah semua terkoneksi klik OK. Lalu jangan lupa klik Save.


4. Mencoba Library Baru

Sekarang kita bisa melihat hasilnya di jendela Control Panel. Disini saya menyimpannya dengan nama 7s1inch.lbr.


Agar dapat digunakan di project, maka sebelumnya kita harus telebih dahulu mengaktifkan library-nya dengan klik kanan, kemudian klik Use.



Lalu saat membuat Schematic, klik icon Add, maka kita dapat menemukan dan menambahkan komponen baru yang telah dibuat sebelumnya.


Berikut ini adalah dokumentasi singkat saya saat melakukan proses routing menggunakan komponen 7s. Disini saya menggunakan IC Shift Register 74595 untuk tiap 7segment. Sehingga untuk mengakses (berapapun 7segment-nya) saya hanya membutuhkan 3 buah pin, yaitu untuk clock, latch, dan data. Pada dokumentasi ini saya hanya merouting 1 buah 7segment sebagai contoh.



Dengan jalur Schematic diatas maka jalur routing akan cukup rumit karena kaki dari tiap segment tidak urut, maka untuk menyederhanakan jalur routing, pada Schematic saya merubahnya menjadi seperti berikut:



Nah, dengan begini tidak perlu menambah via atau jumper. Hanya perlu menyesuaikan di programnya saja.


Sekian tutorial kali ini, semoga bermanfaat.

<z/>