Kategori
Uncategorized

Raspberry Pi Zero Headless Setup (English)

Do you want to try playing around with Raspberry Pi? Maybe you have encountered several problems such as no monitor to configure Raspberry Pi, no keyboard to write the commands, or no LAN cable. Maybe you have the same problem as mine, owning Raspberry Pi Zero W which can only be accessed through Wireless, USB using micro USB, or mini HDMI. If you have Raspberry Pi Zero and want to start playing around with Raspberry, please read this guide to start installing your Raspberry Pi!

IMG_20180401_222102.jpg
Picture 1. Raspberry Pi Zero Wireless

Instalasi Operating System Raspbian Stretch Lite

Several things you need to start are as followed:

  1. Raspberry Pi Zero Wireless (make sure it’s not a Raspberry Pi without WiFi)
  2. Micro SD Card (Class 10 is better so the Read/Write Disk operations are better)
  3. 2A Handphone Charger
  4. Laptop with SD Card Reader (Micro-SD Adapter, if necessary)
  5. Wireless Router or Mobile WiFi Hotspot

The first thing you need to do is to put in your SD Card into your computer, then format it if you have installed Raspbian on that SD Card. You can format it using SD Card Formatter (sdcard.org).

For a comparison, Picture 2 shows the formatting using quick format Windows dan SD Card Formatter. Windows Formatter can only format the F:\ partition in SD Card, while SD Card Formatter can format all of SD Card.

Screenshot 2018-04-01 22.40.45
Picture 2. Formatting Comparison between Windows Formatter and SD Card Formatter

After doing Quick Format using SD Card Formatter, you can add Raspbian OS in SD Card. First thing you need to do is to download ZIP File from Raspbian OS Stretch Lite. Download from the Raspberry Pi official website for Raspbian Stretch Lite, with kernel Linux 4.9. There are two variants of Raspbian Stretch, which are the Desktop and Lite variants. Lite is the version without GUI, while the Desktop one had GUI so it can be connected to a monitor and keyboard and used like a normal computer.

After you have Raspbian Stretch Lite and a formatted SD Card, the next process is to flash Raspbian Stretch Lite on SD Card Formatter. My most favorable method is by using the Etcher program. This program can be downloaded from Etcher.io and it’s easy to use

Screenshot 2018-04-01 23.00.17

Picture 3. Choosing Raspbian Stretch Lite to flash on SD Card using Etcher program

SSH Server dan WiFi Setup

To access Raspberry Pi without monitor or keyboard, you need an SSH Server and a WiFi connection. On the computer you’re using to configure Raspberry Pi, make sure you have an SSH client so you can use PuTTY.

To turn on SSH, you need to create an “ssh” file on the boot partition in SD Card that you flashed using Raspbian OS. Make sure you made the ssh file without any extension (not even .txt). It didn’t need to contain anything, just ensure that there is a file named “ssh”

Screenshot 2018-04-01 23.16.44

Picture 4. Installing SSH Server using SSH file without any extension in the SD Card for Raspbian

After adding the SSH server, the second thing you need to do is to create a “wpa_supplicant.conf” file on the boot partition. The content of this file is as follows:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="NAMA_WIFI_ANDA"
    psk="PASSWORD_ANDA"
    priority=1
}

Use Notepad to write those, and make sure you saved it as “wpa_supplicant.conf”, not in .txt extension. Picture 5 shows the result of creating “wpa_supplicant” file which is placed in the boot partition (F:\). Change NAMA_WIFI_ANDA with the SSID your WiFi is using, and PASSWORD_ANDA according to the WiFi password.

ConfigureWPASupplicant
Picture 5. wpa_supplicant file configuration for the WiFi connection

After installing the Raspbian OS and adding the necessary files according to the instructions above, eject the SD Card and plug it into Raspberry Pi Zero.

Accessing SSH Raspberry Pi from PC

After ensuring that the created files are according to this tutorial, turn on Raspberry Pi Zero for the first time using the SD Card which had been installed with Raspbian OS and configured to be accessed using SSH through WiFi. Check the IP Address of your Raspberry Pi to access it using Raspberry Pi. You can use your Router’s DHCP Table to know which IP address is your Raspberry Pi’s. An example of that is shown in picture 6.

Router
Picture 6. IP Address from Raspberry Pi Zero

After that, you can open PuTTY to access SSH from Raspberry Pi with the IP Address you obtained through your DHCP Router. You can login using

login as: pi
pi@192.168.0.7's password: raspberry

Make sure you follow the instructions above, using “pi” as your login name and “raspberry” for your password. After that, you can access Raspberry Pi Zero through SSH to change your password. You can do that using the command:

$ passwd

You’ll be asked to fill the old password (raspberry) and fill in the new one. After you filled it, make sure the SSH Server from Raspberry Pi is turned on permanently. You can do that by using this command as root (sudo):

# raspi-config

By accessing raspi-config, you’ll be shown the interface below like in Picture 7 on your PuTTY window screen. Direct the pointer to the “Interfacing Options” and press Enter.

RaspiConfig
Picture 7. Raspberry Configuration Tool Interface (Raspi-Config)

After accessing Interfacing Options, choose P2 SSH to access SSH Server configuration. You’ll be asked “Would you like the SSH server to be enabled?” Choose Yes and press Enter. You’ll then see “The SSH server is enabled”. After you’re redirected to the front page, press Finish to exit. You’ll be able to access Raspberry Pi via SSH without using Monitor or Keyboard after this, but ensure that you have WiFi with the same SSID and Password as the configuration you had done

Still have more questions? Please ask in this blog post. Good luck experimenting with your Raspberry Pi.

Kategori
Uncategorized

Install Python 3.6. On Raspbian (English)

Do you want to use Python 3.6 on Raspberry Pi? When you run Python in Raspberry Pi, the version called is usually v2.7. This blog post will discuss how to change the default Python 2.7 into Python 3.6.

Before I begin the tutorial, I want to explain one thing which is commonly seen in Linux tutorials, the ‘$’ and ‘#’ annotations. When writing a command in Linux Terminal’s common documents, both annotations are commonly used as prefixes. The reason for that is in Linux Terminal, when the user isn’t accessing root, will show the ‘$’ annotation. If the Terminal is showing ‘#’, then the user is accessing root. In the document which showed Linux commands, ‘#’ means the command must be accessed as root (or with sudo)

The first thing that can be done is to check if your default Python is on version 3.x or 2.x. You can use this command to make sure of that

$ python --version
PythonVersionStart
Picture 1. Python version prior to upgrading to 3.6.4

There are a few things that must be done to change Python 2.7 into Python 3.6. The first thing is to ensure that several package dependencies must have been installed in Raspberry Pi. To make sure, you can use the command below

# apt-get update
# apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev

After executing those programs, you can download the source code for Python 3.6 from Python’s official website. Python 3.6 source code is provided in tar.xz, which means you have to unpack it. But before you download it with wget, make sure your file is in the /tmp/ directory, so it will be deleted after you reboot

$ cd /tmp/
$ wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
$ tar xf Python-3.6.4.tar.xz
DownloadPythonSource
Picture 2. Result after downloading and extracting the source code from Python 3.6.4

After you finished extracting as in Picture 2, you can see that the source code is at /tmp/Python-3.6.4. To continue with the installation, access Python-3.6.4 directory

$ cd Python-3.6.4

After opening the directory, follow the process below to install Python 3.6.4:

$ ./configure
$ make
# make altinstall

After installing Python 3.6, you’ll see that Python default is still the same as the previous Python (in my case, still 2.7.13). To change the default Python that is being used, you have to use update-alternatives. First, make sure that you know where to install Python 3.6. and that the installed Python 3.6 can be accessed. Use both these commands to know where Python 3.6 is

$ ls /usr/bin/python*
$ ls /usr/local/bin/python*

After knowing the position of executable Python 3.6, do update-alternatives to add Python 2.7.13 and Python 3.6.4 as Python alternatives. Picture 3 shows the output from command to find out where the executable files from Python2.7, Python3.5 dan Python3.6. Add all those executable Python-s as alternatives from Python

FindingPythonExecutable
Picture 3. Python executable locations from root OS Raspbian directory

You will then find out the positions, which are /usr/bin/ for Python2.7 and Python3.5 and /usr/local/bin/ for Python3.6 which is just installed. Include the alternative /usr/bin/python using these commands:

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
# update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
# update-alternatives --install /usr/bin/python python /usr/local/bin/python3.6 3

After adding it as the order above, Python 3.6 will automatically become the default for Python. If you run call python –version, it will show the output like in Picture 4

UpdateAlternativesPython

Picture 4. Automatic version change for Python into Python 3.6.4

If you want to reconfigure your Python back into Python 2.7.13, you can run the command as follows:

# update-alternatives --list python
# update-alternatives --config python

After executing the commands above, you’ll be asked to input the number you want to use as your default Python. Type 1 if you want to use Python 2.7.13 because of one reason or another (for example, the library you’re using still uses Python 2.7). After selecting which version you want, you can check the default version using ‘python –version’ command dan the result will show like in Picture 5.

RevertPythonTo27From36.PNG
Picture 5. Changing back the default version of Python into Python 2.7.13

You can use the configuration commands below to select which version you want to use. You can do this if the newest Python version is available and you want to add it into Raspberry Pi. If you have any questions, don’t hesitate to ask them in this blog. Have fun experimenting!

Kategori
Radio

Spreading Factor, Bandwidth, Coding Rate and Bit Rate in LoRa

Pada artikel sebelumnya saya membahas beberapa konsep dasar pada Spread Spectrum dan secara khusus saya membahas modulasi LoRa dan menyinggung beberapa parameter yang ada pada LoRa. Beberapa parameter tersebut adalah Spreading Factor, Bandwidth, dan Coding Rate. Ketiga parameter tersebut yang akan menentukan seberapa sensitif performa receiver LoRa dan seberapa cepat bit rate dari data yang dikirimkan. Parameter tersebut akan saya bahas secara singkat dalam artikel ini, dengan harapan pembaca dapat memahami konsep dan dapat mengimplementasikannya dalam merancang sistem berbasis LoRa.

DecodingLora_Project.jpg
Gambar 1. Spektrogram sinyal LoRa hasil pembacaan melalui SDR (source: DecodingLora)

Symbol

Seperti yang dibahas sebelumnya, LoRa adalah modulasi chirp spread spectrum. Sinyal data yang dikirim direpresentasikan dengan sinyal chirp dari f_{min} sampai dengan f_{max} yang dapat dilihat pada Gambar 1. Dalam modulasi LoRa, symbol yang dikirim dapat divariasikan menggunakan parameter Spreading Factor dan Bandwidth. Sesuai Application Note Semtech AN1200.22, satu simbol memakan waktu transmit sebesar T_S yang dapat dilihat pada persamaan:

T_S = \frac{2^{SF}}{BW}

Bandwidth

Bandwidth adalah lebar frekuensi yang dipakai untuk memodulasi data sinyal. Pada Gambar 1, nilai Bandwidth ini dapat dilihat dari lebar penggunaan frekuensi dari f_{min} dengan f_{max} . Selain itu, Bandwidth juga merepresentasikan chip rate dari modulasi sinyal LoRa.

R_C = BW

Spreading Factor

Nilai Spreading Factor (SF) menunjukkan seberapa banyak chip yang dipakai untuk merepresentasikan satu simbol. Semakin banyak chip yang digunakan untuk merepresentasikan satu simbol, maka semakin besar processing gain dari sistem receiver. Semakin besar nilai SF, semakin besar processing gain, hal ini memungkinkan receiver untuk dapat menerima sinyal data yang memiliki SNR negatif.

R_S = \frac{BW}{2^{SF}}

Spreading Factor menunjukkan banyaknya chip yang digunakan untuk merepresentasikan 1 simbol, dengan faktor eksponensial 2. Sehingga 1 simbol dapat terdiri dari N chip dimana N = 2^{SF} , untuk merepresentasikan bit dilakukan cyclic shift untuk merepresentasikan simbol yang dikirim. Mengetahui terdapat N chip, maka dapat dihasilkan nilai simbol antara 0 sampai N-1, atau berarti 1 simbol dapat merepresentasikan SF bits.

R_b = SF * \frac{BW}{2^{SF}}

Coding Rate

Implementasi modulasi LoRa juga menambahkan forward error correction (FEC), implementasi ini dilakukan dengan melakukan enkode 4 bit data dengan redundansi menjadi 5 bit, 6 bit,  7 bit, ataupun 8 bit. Menggunakan redundansi ini membuat sinyal LoRa lebih tahan terhadap interferensi singkat, nilai Coding Rate (CR) perlu diatur sesuai dengan kondisi kanal yang dipakai, jika terdapat banyak interferensi sebaiknya nilai CR ditingkatkan. Namun perlu diperhatikan bahwa kenaikan nilai CR juga meningkatkan waktu transmisi.

R_b = SF \frac{\big[\frac{4}{4+CR}\big]}{\big[\frac{2^{SF}}{BW}\big]}

Kategori
Radio

Automatic Position Reporting System

Automatic Position Reporting System atau APRS adalah protokol komunikasi digital antara stasiun radio amatir dengan jumlah besar yang dapat mencakup area yang luas. APRS merupakan sistem radio paket yang dapat digunakan untuk mengirim berbagai informasi taktis, seperti cuaca, lokasi, pesan, dan berbagai event spesial atau emergency dalam waktu real time. Sistem APRS dibuat oleh Bob Bruniga (WB4APR) sejak lebih dari 25 tahun yang lalu, namun sistem ini masih aktif digunakan oleh banyak stasiun radio amatir.

Layaknya berbagai sistem radio amatir yang masih ada sampai sekarang, APRS juga sudah terintegrasi dengan jaringan internet. Anda dapat memantau berbagai macam informasi taktis melalui APRS, contoh website yang menunjukkan data APRS adalah APRS.fi. Pada Gambar 1, Anda dapat melihat banyak stasiun cuaca pada kota Tucson, Arizona, USA. Melihat banyaknya stasiun cuaca, perlu diketahui bahwa salah satu tradisi radio amatir di Amerika Serikat adalah layanan publik. Salah satu layanan publik tersebut adalah pengamatan cuaca. Operator radio amatir yang memiliki stasiun cuaca menggunakan APRS untuk membagikan datanya.

Walaupun bernama Position Reporting system, tujuan APRS ini sendiri bukan sebagai GPS Tracker system. Perkembangan APRS memang dipicu oleh perkembangan GPS pada zamannya, namun sebenarnya APRS adalah sistem komunikasi dua arah yang diperuntukkan untuk komunikasi taktis secara real-time.

Screenshot 2018-08-03 18.24.54
Gambar 1. Screenshot aktivitas radio amatir Tucson, Arizona, USA

APRS Radio Network

Setelah mengetahui sistem APRS dan salah satu aplikasinya, selanjutnya akan dibahas komponen dari sebuah sistem APRS. Pada sistem APRS, Anda akan sering mendengar istilah sebagai berikut:

  1. Terminal Node Controller
  2. Digipeater
  3. APRS-IS iGate

Terminal Node Controller adalah modem radio digital yang dipakai. Modem ini umumnya berbasis dari Bell 202 Modem, atau modem Audio Frequency Shift Keying dengan baudrate sebesar 1200 baud.

Digipeater adalah repeater digital yang mampu mengirimkan kembali paket data agar lebih banyak stasiun yang dapat mendengar informasi tersebut. Digipeater umumnya memiliki daya yang tinggi dan diletakkan pada gedung tinggi sehingga dapat memiliki jangkauan yang luas.

APRS-IS iGate adalah perangkat APRS yang terhubung dengan internet sehingga dapat me-relay pesan yang diterima pada gelombang RF dan memasukkannya ke server APRS-IS. Setelah dari server APRS-IS, Anda dapat melihat paket-paket tersebut melalui berbagai website APRS ataupun software APRS lainnya.

Untuk memulai memasuki dunia APRS, hal pertama yang perlu dipastikan adalah Anda sudah memiliki callsign radio amatir, jika di Indonesia, Anda dapat mendaftar melalui SDPPI Postel Kemkominfo. Anda akan mengikuti Ujian Nasional Amatir Radio, lalu jika lulus Anda akan menerima Sertifikat Kecakapan Amatir Radio, lalu Anda dapat mengurus Izin Amatir Radio. Setelah memiliki Izin Amatir Radio, pastikan untuk mempunyai Izin Penguasaan Perangkat Radio Amatir. Jika Anda tidak ingin melakukan transmisi, mendengarkan transmisi APRS diperkenankan untuk siapapun, dengan modal TNC dan Radio HT Anda dapat memulai bermain dengan APRS.

Sekian informasi singkat tentang APRS yang bisa saya sampaikan, informasi lebih detail tentang masing-masing komponen dari APRS akan saya sampaikan dilain kesempatan.

Sources:

  1. http://www.aprs.org/
  2. http://www.aprs.fi/
Kategori
Non-electronics

Resume Builder with Vue.js (English)

This is a translated version of the article written on March 6th in Bahasa Indonesia.


Hi!

I started this blog with a content which is not exclusively for electrical stuff. This post is about building a resume. If you hope this post is about how to write a good resume, this is not the article for you. There are lots of blogs and articles which discussed how to write an accurate, concise, and clear resume. As an engineer, especially one who dabbles in the world of technology, one should have a decent programming knowledge. That’s why this post will discuss using JavaScript as a tool to create a neat resume

Before I begin my explanation on how to make a resume with JavaScript, I’ll show you how to install it using Ubuntu v16.04 Computer. Several things that you need to note in preparation for creating a resume using Ubuntu Computer like in this post are:

  • Git version checker is installed in Ubuntu

Installing Git in Ubuntu can be simply done with the command :

# apt-get install git

  • Installing Node.js using Node.js Version Manager

To install Node.js, you can follow the guide in

https://id.godaddy.com/help/install-nodejs-ubuntu-17395

After installing both programs above, you can then access my GitHub Repository (https://github.com/josefmtd/best-resume-ever) which is a fork from (https://github.com/salomonelli/best-resume-ever). To clone this repository, use this command:

$ git clone https://github.com/josefmtd/best-resume-ever

After cloning repository, open the ‘best-resume-ever’ folder -> resume folder, and you’ll find two files, data.yml and id.jpg in that folder. You can change the id.jpg with your own photo and change data.yml according to the content of your resume

After the contents are changed, you can begin compiling from the PDF file according to the design you want. To begin compiling, first access the ‘best-resume-ever’ folder and do this command:

$ npm install

Wait until the installation process from Node.js finished, then you can begin compiling for the PDF using this command below:

$ npm run export

Wait until the compilation process finished so you can see the result in the folder ‘best-resume-ever/pdf’. There are also several templates that I dabbled according to the standard templates from https://github.com/salomonelli. If you aren’t satisfied with the template I made, you can change the template in the ‘/best-resume-ever/src/resumes/’ folder, where you can find Vue.js file which can be changed depending on what you want. I’ll talk about changing the template in another chance. Have fun experimenting with Vue.js to create a great resume

Kategori
Radio

LoRa Modulation Basics

LoRa adalah teknologi modulasi spread spectrum yang dipatenkan oleh Semtech. LoRa merupakan turunan dari Chirp Spread Spectrum (CSS) yang menurunkan data rate untuk meningkatkan sensitivitas. Jika Anda ingin menaruh LoRa dalam model OSI layer, implementasi modulasi LoRa berada pada Physical layer dan tidak terikat dengan implementasi layer atas tertentu. Hal ini memungkinkan LoRa untuk diadaptasi dengan berbagai jaringan yang sudah matang. Artikel ini dibuat untuk membantu menjelaskan beberapa konsep dasar LoRa sebagai referensi pengembangan sistem berbasis LoRa.

Spread Spectrum Technology

Bagi seseorang yang familiar dengan ilmu Telekomunikasi, pasti tidak asing lagi dengan teorema Shannon-Hartley. Teorema ini menjelaskan kapasitas kanal dari sebuah link komunikasi menggunakan bandwidth tertentu dengan adanya noise dalam kanal tersebut. Saya tidak akan menulis dengan detail penurunan rumus Shannon-Hartley, namun dari penurunan rumusnya, dapat diketahui bahwa dengan menaikkan bandwidth, performa link komunikasi dengan noise-to-signal ratio tertentu akan lebih baik. Pada teknologi Spread Spectrum, umumnya Anda mendengar Noise-to-Signal ratio dibandingkan dengan Signal-to-Noise ratio karena sejatinya daya sinyal umumnya berada di bawah noise floor. 

Sesuai dengan teorema Shannon-Hartley, bandwidth yang lebih besar dapat mengompensasi degradasi dari SNR pada kanal radio. Pada sistem Spread Spectrum, data yang ingin dikirim dikalikan dengan spreading code, atau dikenal juga dengan chip sequence. Chip sequence ini umumnya memiliki frekuensi yang jauh lebih tinggi, sehingga jika kedua sinyal dikalikan, bandwidth dari keluaran sinyal akan lebih lebar dari bandwidth data asli. Pada sisi penerima, sinyal yang diterima akan dikalikan kembali dengan sinyal chip sequence yang sama untuk mendapatkan data awal kembali.

psd
Gambar 1. Ilustrasi Spread Spectrum

LoRa Spread Spectrum

Modulasi LoRa menyediakan alternatif komunikasi Spread Spectrum yang rendah daya, rendah biaya dari teknik spread spectrum konvensional. Modulasi LoRa menggunakan sinyal chirp, yaitu sinyal yang frekuensinya terus berubah. Penggunaan metode ini mengurangi kompleksitas pada desain penerima. Sinyal hasil keluaran dari modulasi ini sesuai dengan bandwidth dari sinyal chirp yang digunakan

Saya sekali lagi tidak akan mendalami detail penurunan rumus, pada modulasi LoRa, data dengan bit rate yang kita inginkan akan ditransmisi akan dikalikan dengan sinyal chirp dengan chip rate tertentu, chip rate ini jauh lebih besar dari sinyal data yang ingin dikirim, besarnya chip rate ini adalah Bandwidth dari hasil sinyal LoRa yang telah dimodulasi.

Selain Bandwidth, terdapat juga Spreading Factor, jika Bandwidth menunjukkan chip rate, Spreading Factor menunjukkan seberapa banyak chip yang digunakan untuk merepresentasikan satu simbol. Selain itu, Spreading Factor juga menunjukkan seberapa banyak bit yang terkandung dalam satu simbol.

Selain itu, LoRa juga memiliki mekanisme Forward Error Correction, pengaturan FEC dapat dilakukan melalui parameter Coding Rate. Layaknya komunikasi radio pada umumnya, pengaruh noise dapat merusak performa sistem, dengan menambahkan redudansi menggunakan FEC, perancang sistem berbasis LoRa dapat mengurangkan bit rate untuk menaikkan kehandalan sistem.

Untuk membuat desain sistem berbasis LoRa, Anda harus perhatikan ketiga parameter ini untuk mendapatkan bit rate yang sesuai, range yang mumpuni dan kehandalan sistem yang cukup baik.

Edit Aug 05/2018: Terminologi pada parameter spread spectrum telah dikoreksi sehingga akurat

Kategori
Raspberry Pi

Bluetooth HC-05 AT Commands

Bluetooth adalah salah satu modul komunikasi sederhana yang dapat dibeli dengan harga relatif murah. Modul Bluetooth HC-05 dapat dengan mudah ditemukan di berbagai jejaring toko online dengan harga sekitar 50 ribu.  Sebelum membahas lebih lanjut tentang Bluetooth saya akan membahas beberapa konsep dasar Bluetooth.

Introduction

Bluetooth adalah sebuah standar teknologi nirkabel untuk komunikasi data jarak dekat. Bluetooth menggunakan frekuensi 2.4 GHz yang merupakan frekuensi bebas untuk transmit dengan batasan daya yang rendah. Standar Bluetooth mencakup banyak protokol, salah satunya adalah protokol RFCOMM. Modul Bluetooth yang umum kita jumpai ini menggunakan protokol ini. Protokol RFCOMM adalah protokol yang paling populer dalam Bluetooth karena banyaknya API yang tersedia untuk protokol ini, selain itu protokol ini, yang sering disebut serial port emulation, dapat diintegrasikan pada banyak aplikasi yang menggunakan RS-232 sebagai antarmuka komunikasinya.

Generic Bluetooth RFCOMM Modules

Setelah mengetahui beberapa konsep dasar Bluetooth, sudah waktunya untuk melihat cara kerja Bluetooth secara langsung. Untuk demonstrasi kali ini, saya mencoba dengan Bluetooth module: Tokopedia (Disclaimer: Tidak ada maksud untuk promosi).

Bluetooth
Gambar 1. Bluetooth HC 05 Module

Module Bluetooth sesuai Gambar 1 adalah modul berbasis Bluetooth chip BC417. Modul ini memiliki keluaran pin STATE, RX, TX, GND, +5V, dan EN. Untuk menggunakan modul ini, cukup koneksikan pin RX, TX, GND, dan +5V.

Pin 5V atau pin VCC di modul ini sebenarnya terhubung dengan LDO voltage regulator pada board modul Bluetooth ini. Saya coba melihat regulator yang digunakan, namun sulit menemukan datasheet dari komponen SMD ini. Sebelum saya membahas bagaimana pemrograman AT commands menggunakan Raspberry Pi, pertama saya uji coba terlebih dahulu serial port dengan Bluetooth module ini.

Koneksikan pin TX Bluetooth dengan RX Raspberry Pi, RX Bluetooth dengan TX Raspberry Pi, VCC dengan +5V Raspberry Pi dan GND dengan GND Raspberry Pi. Saya nyalakan minicom untuk membuka port serial (/dev/ttyS0) dengan baudrate 9600. Tampilan uji coba dapat dilihat pada Gambar 2.

Capture
Gambar 2. Penerimaan Serial Port via Bluetooth

AT Commands Bluetooth

Setelah berhasil komunikasi Serial, selanjutnya yang perlu dicoba adalah AT Commands, melalui AT Commands, dapat dilakukan berbagai macam konfigurasi seperti nama Bluetooth dan PIN, serta baud rate. Untuk itu saya membuat script singkat di Python untuk melaksanakan fungsi ini, sebelum mencoba script ini, pastikan Raspberry Pi sudah terinstal Python dan package PySerial (python-serial).

# apt-get install python-serial

Sebelum saya memberi source code dari AT command configuration, perlu saya tekankan bahwa untuk memasuki AT commands terdapat tiga cara, pertama memberi pin 34 pada Bluetooth Module tegangan 3.3V, jika dengan cara ini, modul akan masuk ke mode full AT commands, di mana semua AT commands dapat diakses dan baudrate dari modul adalah 38400. Cara kedua adalah menekan tombol sebelum modul menyala dan pastikan tombol tetap tertekan saat konfigurasi berlangsung (secara efektif cara ini sama dengan cara pertama), sehingga modul akan masuk dalam mode full AT command. Cara ketiga adalah setelah modul sudah menyala, tekan tombol pada modul dan tahan saat melakukan konfigurasi, modul akan memasuki mode semi AT command dimana baudrate tetap menggunakan baud rate komunikasi serial normal (9600 baud default). Jika Anda lupa baud rate komunikasi serial normal, sebaiknya program Bluetooth menggunakan full AT command mode.

# attest.py
# Sending AT commands to Bluetooth HC-05

import serial
import time

bluetooth = serial.Serial("/dev/ttyS0", baudrate=9600, timeout=5)

bluetooth.write('AT+NAME=JosefMTD\r\n')
result = bluetooth.read(100)
print result

bluetooth.write('AT+UART=38400,0,0\r\n')
result = bluetooth.read(100)
print result

Untuk memakai program di atas, ubah “/dev/ttyS0” dengan “/dev/ttyACM0” jika Anda menggunakan PL011 Hardware UART dari Raspberry Pi, gunakan /dev/ttyS0 jika Anda menggunakan mini UART. Baudrate sesuaikan dengan baudrate modul atau masukan 38400 jika Anda ingin memasuki mode full AT command.

Untuk mengubah nama dan baudrate, modul Bluetooth dapat dikonfigurasi dalam mode Semi AT command, sehingga proses yang saya lakukan adalah menekan tombol, menjalankan script attest.py lalu melepas tombol saat program selesai berjalan.

Capture1.PNG
Gambar 3. Output dari program attest.py

Sekian dahulu post saya untuk kali ini, tinggalkan komentar jika Anda mengalami masalah setting up Bluetooth

Kategori
Raspberry Pi

Raspberry Pi Zero Headless Setup

Anda ingin mencoba memulai bermain dengan Raspberry Pi? Mungkin Anda memiliki permasalahan ini dalam melakukan penyetelan Raspberry Pi seperti: tidak ada monitor untuk mengonfigurasi Raspberry Pi, tidak ada keyboard untuk mengetik command, ataupun tidak ada kabel LAN. Mungkin permasalahan Anda sama seperti saya, mempunyai Raspberry Pi Zero W, yang hanya bisa diakses melalui Wireless, koneksi USB hanya dengan micro USB dan mini HDMI. Jika Anda memiliki Raspberry Pi Zero dan ingin mencoba untuk memulai bermain dengan Raspberry, silakan membaca guide ini untuk memulai instalasi Raspberry Pi Anda!

IMG_20180401_222102.jpg
Gambar 1. Raspberry Pi Zero Wireless

Instalasi Operating System Raspbian Stretch Lite

Hal yang Anda butuhkan untuk memulai adalah sebagai berikut:

  1. Raspberry Pi Zero Wireless (pastikan bukan yang Raspberry Pi tanpa WiFi)
  2. Micro SD Card (sebaiknya Class 10 agar operasi Read/Write Disk nya lebih cepat)
  3. Charger HP 2A
  4. Laptop dengan SD Card Reader (gunakan Micro-SD Adapter jika perlu)
  5. Wireless Router atau Mobile WiFi Hotspot

Hal pertama yang Anda perlu lakukan adalah masukkan SD Card ke komputer Anda, lalu format SD Card tersebut, jika Anda sudah pernah menginstalasi Raspbian sebelumnya pada SD Card tersebut dan ingin menghapusnya, Anda dapat menggunakan SD Card Formatter (sdcard.org). Sebagai perbandingan, Gambar 2 menunjukkan formatting menggunakan quick format Windows dan SD Card Formatter, Windows Formatter hanya bisa melakukan format untuk partisi F:\ di SD Card, sedangkan SD Card Formatter mampu melakukan format untuk seluruh SD Card.

Screenshot 2018-04-01 22.40.45
Gambar 2. Perbandingan format dengan Windows Formatter dan SD Card Formatter

Setelah Anda melakukan Quick Format menggunakan SD Card Formatter, Anda dapat menambahkan OS Raspbian pada SD Card. Pertama, hal yang perlu Anda lakukan adalah download ZIP file dari OS Raspbian Stretch Lite. Download dari website resmi Raspberry Pi untuk Raspbian Stretch Lite, dengan kernel Linux 4.9. Terdapat dua varian Raspbian Stretch, dengan Desktop dan Lite, Lite adalah versi tanpa GUI, sedangkan Desktop memiliki GUI sehingga dapat dihubungkan dengan monitor dan keyboard dan dipakai layaknya komputer biasa.

Setelah Anda sudah memiliki Raspbian Stretch Lite dan SD Card yang sudah di format, proses selanjutnya adalah untuk flashing Raspbian Stretch Lite pada SD Card Formatter. Cara yang paling saya suka untuk menginstalasi Raspberry Pi adalah dengan menggunakan program Etcher. Program ini dapat diunduh dari website Etcher.io, program ini mudah dipakai dan ringan.

Screenshot 2018-04-01 23.00.17
Gambar 3. Pemilihan image Raspbian Stretch Lite untuk flash pada SD Card dengan program Etcher

Setup SSH Server dan WiFi

Untuk dapat mengakses Raspberry Pi Anda tanpa membutuhkan monitor ataupun keyboard Anda membutuhkan SSH Server dan koneksi WiFi. Pada komputer yang Anda ingin pakai untuk mengonfigurasi Raspberry Pi, pastikan Anda memiliki client SSH, Anda dapat menggunakan PuTTY.

Untuk menyalakan SSH, Anda perlu membuat file “ssh” pada partition boot pada SD Card yang sudah Anda flash dengan OS Raspbian. Pastikan Anda membuat file ssh tanpa extension apapun (bukan .txt), file ini tidak perlu diisi, hanya pastikan bahwa terdapat file bernama “ssh”.

Screenshot 2018-04-01 23.16.44
Gambar 4. Instalasi SSH Server dengan menambahkan file SSH tanpa ekstensi pada SD Card dengan Raspbian

Setelah menambahkan server SSH, hal kedua yang perlu Anda lakukan adalah membuat sebuah file “wpa_supplicant.conf” pada partisi boot. Isi file tersebut sebagai berikut:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
    ssid="NAMA_WIFI_ANDA"
    psk="PASSWORD_ANDA"
    priority=1
}

Gunakan Notepad untuk menulis file tersebut, pastikan Anda simpan ini sebagai wpa_supplicant.conf dan bukan .txt. Gambar 5 menunjukkan contoh hasil dari pembuatan file wpa_supplicant yang ditaruh pada partisi boot yakni di F:\. Ganti NAMA_WIFI_ANDA dengan nama SSID dari WiFi yang Anda pakai, dan PASSWORD_ANDA sesuai dengan password WiFi-nya.

ConfigureWPASupplicant
Gambar 5. Pengaturan file wpa_supplicant untuk koneksi WiFi

Setelah Anda telah melakukan instalasi OS Raspbian dan menambahkan file-file sesuai dengan petunjuk di atas, eject SD card tersebut dan pasang ke Raspberry Pi Zero.

Akses SSH Raspberry Pi dari PC

Setelah Anda memastikan file yang dibuat sudah sesuai dengan tutorial ini, nyalakan Raspberry Pi Zero untuk pertama kalinya dengan SD Card yang sudah diinstalasi dengan OS Raspbian yang sudah dikonfigurasi untuk dapat diakses dengan SSH melalui WiFi. Cek IP Address dari Raspberry Pi yang Anda miliki untuk dapat mengaksesnya melalui Raspberry Pi, Anda bisa menggunakan Tabel DHCP dari Router WiFi Anda untuk mengetahui IP Address Raspberry Pi. Contoh Tabel DHCP dari Router dapat dilihat pada Gambar 6.

Router
Gambar 6. IP Address dari Raspberry Pi Zero

Setelah itu Anda dapat membuka PuTTY untuk mengakses SSH dari Raspberry Pi dengan IP Address yang sudah Anda ketahui dari Tabel DHCP Router Anda. Setelah itu Anda dapat memasukkan login dengan menggunakan

login as: pi
pi@192.168.0.7's password: raspberry

Pastikan Anda mengikuti petunjuk di atas yakni memasukkan “pi” sebagai nama login dan password “raspberry”. Setelah itu Anda dapat mengakses Raspberry Pi Zero Anda menggunakan SSH, untuk mengubah password Anda agar tidak mudah dijebol orang maka Anda perlu memasukkan command:

$ passwd

Anda akan diminta mengisi password lama (raspberry) dan memasukkan password yang baru. Setelah Anda telah memasukkan password baru, pastikan SSH Server di Raspberry Pi sudah dalam posisi menyala secara permanen, hal ini dapat dilakukan dengan menggunakan command sebagai root (sudo):

# raspi-config

Dengan mengakses raspi-config, Anda akan melihat tampilan sesuai pada Gambar 7 pada window PuTTY Anda. Arahkan pointer ke “Interfacing Options” dan klik Enter.

RaspiConfig
Gambar 7. Tampilan Raspberry Configuration Tool (Raspi-Config)

Setelah Anda mengakses Interfacing Options, pilihlah P2 SSH untuk mengakses pengaturan SSH Server. Anda akan menemukan pilihan “Would you like the SSH server to be enabled?” pilih Yes dan tekan Enter. Anda akan melihat tulisan “The SSH server is enabled”. Setelah itu Anda akan dikembalikan ke tampilan utama, tekan Finish untuk keluar. Selanjutnya Anda akan dapat mengakses Raspberry Pi Anda via SSH tanpa perlu memikirkan adanya monitor/keyboard, pastikan ada WiFi dengan SSID dengan Password sesuai dengan penyetelan yang Anda lakukan.

Masih memiliki pertanyaan? Silakan bertanya pada blog post ini, selamat mencoba Raspberry Pi Anda.

Kategori
Raspberry Pi

Install Python 3.6 on Raspbian

Ingin memakai Python 3.6 pada Raspberry Pi? Namun saat Anda menjalankan program menggunakan Python di Raspberry Pi, versi Python yang dipanggil adalah versi Python 2.7. Post blog ini akan membahas bagaimana mengubah default Python 2.7 menjadi Python 3.6.

Sebelum saya memulai tutorial ini, saya ingin menjelaskan satu hal yang mungkin sering terlihat pada tutorial-tutorial Linux, yaitu anotasi $ dan #. Saat menulis command Linux Terminal di dokumen umumnya anotasi $ dan # sering dipakai sebagai prefix. Asal usul $ dan # adalah dari Terminal Linux, jika user yang dibuka bukan root, maka Terminal Linux akan menunjukkan tanda $, jika Terminal Linux menunjukkan tanda # artinya Anda sedang mengakses root. Pada dokumen yang menunjukkan command Linux, # menandakan command tersebut harus diakses sebagai root (atau dengan sudo jika bukan root).

Hal pertama yang dapat dilakukan adalah mengecek apakah Python default Anda ada pada Python 3.x atau pada Python 2.x, untuk memastikan hal ini gunakan command sebagai berikut:

$ python --version
PythonVersionStart
Gambar 1. Versi Python sebelum update ke 3.6.4

Beberapa hal perlu dilakukan untuk mengubah Python 2.7 menjadi Python 3.6. Hal pertama yang perlu diperhatikan adalah memastikan bahwa beberapa package dependencies sudah di-install pada Raspberry Pi. Pastikan dengan menggunakan command sebagai berikut:

# apt-get update
# apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev

Setelah melaksanakan beberapa program tersebut, Anda dapat langsung mengunduh source code Python 3.6 dari website resmi Python. Source code Python 3.6 yang tersedia berupa tar.xz sehingga anda perlu melakukan proses unpack. Sebelum mengunduh dengan wget, pastikan Anda sudah di direktori /tmp/ agar source code yang Anda unduh akan terhapus secara otomatis setelah reboot.

$ cd /tmp/
$ wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
$ tar xf Python-3.6.4.tar.xz
DownloadPythonSource
Gambar 2. Hasil unduhan dan ekstraksi dari source code Python 3.6.4

Setelah Anda berhasil mengekstrak seperti pada Gambar 2, Anda dapat melihat bahwa source code Python 3.6.4 sudah berada pada /tmp/Python-3.6.4. Untuk melanjutkan proses instalasi Python 3.6.4, akses direktori Python-3.6.4

$ cd Python-3.6.4

Setelah membuka direktori, ikuti proses ini untuk instalasi Python 3.6.4:

$ ./configure
$ make
# make altinstall

Setelah instalasi Python 3.6, Anda akan melihat bahwa Python default masih seperti Python sebelumnya, untuk saya Python masih 2.7.13. Untuk mengubah default Python yang digunakan perlu digunakan update-alternatives. Pertama, pastikan Anda tahu posisi instalasi Python 3.6 dan bahwa Python 3.6 yang sudah diinstal dapat diakses. Lakukan kedua command ini untuk mengetahui posisi Python 3.6

$ ls /usr/bin/python*
$ ls /usr/local/bin/python*

Setelah mengetahui posisi executable Python 3.6, lakukan update-alternatives untuk menambahkan Python 2.7.13 dan Python 3.6.4 sebagai alternatif Python. Gambar 3 menunjukkan hasil keluaran dari command untuk mengetahui posisi executable dari Python2.7, Python3.5 dan Python3.6. Tambahkan semua executable Python ini sebagai alternatif dari Python.

FindingPythonExecutable
Gambar 3. Lokasi Python executables pada direktori root OS Raspbian

Setelah mengetahui posisi yakni pada /usr/bin/ untuk Python2.7 dan Python3.5 dan pada /usr/local/bin/ pada Python3.6 yang baru diinstal. Lakukan proses  penambahan alternatif /usr/bin/python dengan menggunakan command sebagai berikut:

# update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
# update-alternatives --install /usr/bin/python python /usr/bin/python3.5 2
# update-alternatives --install /usr/bin/python python /usr/local/bin/python3.6 3

Setelah menambahkan sesuai urutan di atas, Python3.6 menjadi mode automatis dari python. Jika Anda memanggil python –version akan menunjukkan keluaran seperti pada Gambar 4.

UpdateAlternativesPython
Gambar 4. Pengubahan versi otomatis Python menjadi Python 3.6.4

Jika Anda ingin mengubah kembali default Python menjadi Python 2.7.13, Anda dapat melaksanakan command sebagai berikut:

# update-alternatives --list python
# update-alternatives --config python

Setelah mengeksekusi command di atas Anda akan diminta untuk memasukkan nomor yang ingin Anda pakai sebagai mode default Python, ketik 1 jika Anda ingin kembali menggunakan Python 2.7.13 karena satu atau dua hal (misalnya akibat library yang Anda pakai masih memerlukan Python 2.7). Setelah Anda memilih Python yang Anda inginkan, Anda dapat mengecek versi Python default dengan python –version dan hasilnya akan terlihat seperti pada Gambar 5.

RevertPythonTo27From36.PNG
Gambar 5. Pengembalian versi default Python menjadi Python 2.7.13

Anda dapat menggunakan command konfigurasi di atas untuk memilih versi Python yang Anda inginkan, Anda dapat melakukan ini jika versi Python terbaru sudah tersedia dan ingin menambahkannya ke Raspberry Pi. Jika Anda memiliki pertanyaan jangan segan untuk menambahkan pertanyaan Anda di Blog ini. Selamat mencoba!

Kategori
Uncategorized

A Diary of My Electronics Engineering Hobby Begins

Hai semuanya!

Ini adalah percobaan pertama saya untuk membuat sebuah blog khusus untuk tema Teknik Elektronika. Saya seorang Sarjana Teknik Elektro. Saya akan mencoba untuk menuliskan segala percobaan yang saya lakukan untuk belajar lebih tentang Teknik Elektro.

Hey everyone!

This is my first attempt to making a blog specialized for Electronics Engineering. I am an undergraduate in Electronics Engineering. I will be posting all my endeavors to learn more about Electronics Engineering.

Keep It Simple, Stupid — Kelly Johnson