Running APRSC on Docker

APRSC is created by the creator of APRS.fi, it’s an APRS-IS server implementation written in C. I have been using APRSC for a while to run on a Raspberry Pi running a Debian Stretch/Buster. APRSC is quite simple to install and run on a Debian based mini-PC’s, I had created a Raspberry Pi Image that come with APRSC pre-installed, but not configured and started.

I wrote a simple Dockerfile to run the shell scripts I had written to build APRSC on a Debian Buster environment. I noticed there were already an APRSC Docker implementation done previously by https://github.com/brannondorsey/aprsc-docker. However, I did not manage to make brannondorsey’s docker setup work, since I am still a beginner in Docker. I figured I messed up somewhere during setting up the permissions for the Docker volumes.

My Docker container install the dependencies for APRSC and build a debian package and installs it via APT-GET. Docker compose links the config located in the GitHub source folder with the one inside the container.

./config/default:/etc/default:rw
./config/etc:/opt/aprsc/etc:rw

Before building the container, edit the aprsc.conf file under the ./config/etc folder, and fill the proper informations required. By using docker-compose run, the service will start and voila, you have a working APRSC server running on a Docker container.

APRSC server status web page (Source: http://aprs.josefmtd.com:14501)

The server is now available to be accessed by APRS-IS applications such as APRS-Droid and/or APRX gateway, via port 14580 and 10152.

APRS Docker repository is available from https://github.com/josefmtd/aprsc-docker

Pneumonia Viral dan Pneumonia Bakteri

Kemarin saya berbincang dengan salah satu teman permainan dari 7 tahun silam. Orang ini berasal dari Pakistan dan belum lama menyelesaikan studi Kedokteran Gigi di sana. Di tengah perbincangan dalam group WhatsApp, kami dan beberapa teman lain menyentuh topik pembicaraan Coronavirus, Ia menceritakan adanya kasus COVID-19 di Rumah Sakit tempat dia sedang bertugas.

Selanjutnya kamipun berbincang lebih lanjut tentang proses infeksi akibat Coronavirus. Seperti yang diketahui, COVID-19 ini adalah penyakit menular yang menyerang sistem pernapasan. Gejala yang muncul adalah flu, lalu demam, diikuti dengan batuk yang parah. Setelah itu, virus dapat menginfeksi paru-paru menyebabkan Pneumonia. Infeksi paru-paru ini menghasilkan kerusakan yang bersifat permanen.

Saya sempat bingung dengan penggunaan kata pneumonia. Ia menjelaskan bahwa terdapat perbedaan dari Pneumonia yang kita kenal secara umumnya, yaitu Pneumonia berdasarkan infeksi bakteri. Pneumonia melalui bakteri Pneumococcus, umumnya diobati dengan berbagai antibiotik. Pneumonia akibat virus ini berbeda dengan Pneumonia yang disebabkan bakteri. Salah satu hal yang menjadi sumber kebingungan saya, apakah Pneumonia dari COVID-19 disebabkan oleh turunnya daya tubuh sehingga terjadi infeksi Pneumonia akibat bakteri. Melalui perbincangan ini, saya mendapatkan informasi bahwa Pneumonia akibat bakteri dan Pneumonia aibat virus ini adalah hal yang berbeda.

Selanjutnya, ia menjelaskan bahwa perawatan dari penderita Coronavirus saat ini hanya menekan gejala-gejalanya (symptomatic treatment). Hal ini menyebabkan orang lanjut usia, yang sudah memiliki daya tahan imun yang lebih rendah dari orang muda, menjadi lebih rentan terhadap gejala-gejala yang diakibatkan infeksi Coronavirus.

Komplikasi penyakit juga menjadi salah satu alasan kenapa Coronavirus dapat menjadi fatal. Sistem imun yang lemah tidak dapat menyangga daya tahan tubuh dalam melawan banyak penyakit sekaligus. Salah satu yang pertanyaan yang muncul, apakah konsep ini sama seperti HIV atau penyakit yang menyerang imunitas tubuh, ternyata tidak, imunitas tubuh tidak serta-merta dilemahkan oleh infeksi virus ini.

Kamipun membahas vaksin dan penyembuhan terhadap virus ini, beberapa pemberian zat antiviral dilakukan untuk membantu penyembuhan terhadap virus. Namun tes-tes belum menunjukkan hasil yang jelas tentang keberhasilan metode-metode penyembuhan virus ini. Vaksin belum ada untuk melawan infeksi virus ini. Sehingga, sebaiknya pendekatan yang dilakukan adalah mencegah seperti yang sudah disampaikan oleh berbagai kalangan, mencuci tangan, jangan sentuh wajah, dan gunakan masker jika sedang sakit atau mengurus orang sakit.

Perbincangan ini singkat dan mungkin sudah banyak informasi resmi tentang hal ini sudah diterima oleh banyak orang melalui banak kanal. Namun dengan menuliskan artikel ini, saya ingin mencatat apa yang menjadi temuan baru dari saya melalui perbincangan tersebut. Jika ada koreksi atau kesalahan mohon disampaikan dalam kolom komentar.

Idea: Sistem Presensi Otomatis berbasis WiFi

Saya sedang ada latihan paduan suara di gereja, tiba-tiba saya mendapatkan ide menarik untuk mendata presensi anggota secara otomatis. Ketua paduan suara sempat menyuarakan kebutuhan akan absensi untuk tahu mana saja anggota yang aktif dan tidak. Saya sempat memutar otak, bagaimana cara membuat sistem yang otomatis untuk hal ini? Membuat sistem berbasis keycard? Ah, nanti banyak yang tidak bawa keycard. Bagaimana kalau pakai aplikasi dan komunikasi Bluetooth pakai HP? Waduh, saya yakin pasti belum tentu semuanya bisa diajak untuk pakai Bluetooth, apalagi dengan aplikasi rumit.

Belum lama ini saya berjibaku untuk memasang Raspberry Pi di jaringan WiFi hotel, sesuai pengalaman saya semua jaringan hotel menggunakan Mikrotik. Untuk login dengan Mikrotik dibutuhkan Javascript untuk melakukan hash dari password. Setelah berjibaku lama, saya menemukan script Python untuk melakukan hashing tersebut, sehingga koneksi ke Wi-Fi hotel menjadi mudah, saya cukup menjalankan script ini. Saya teringat bahwa WiFi di paroki juga menggunakan Mikrotik.

Barusan saat latihan, saya kembali terpikir ada dua fakta menarik, semua orang sudah tidak terlepas dengan mobile phone nya, it’s always in your person (or at least most of the time if you didn’t forget to bring it). Selain itu adalah, hampir semua orang mencari WiFi kalau ada opsi gratis. Berbasiskan dua fakta sederhana ini, saya tertarik membuat script sederhana untuk memantau siapa yang ada di jaringan tersebut untuk mengetahui siapa saja yang hadir.

Program nya sederhana, idenya adalah untuk bergabung dengan jaringan WiFi paroki, masuk melalui Mikrotik login, lalu melakukan ARP scan pada saat jam mulai latihan, mendata semua MAC address yang ada, lalu melakukan ARP scan kembali pada saat jam selesai latihan dan kembali mencatat semua MAC address.

Seems like a good scripting practice for my weekend ūüôā

Evaluasi SDS-011

Sensor SDS-011 ini menggunakan dioda laser untuk menguji kandungan partikel di dalam udara sekitar. Modul sensor ini sudah terintegrasi sehingga pemrosesan data secara analog tidak lagi dibutuhkan. Komunikasi antar mikrokontroler dengan modul sensor hanya dengan protokol Serial. Mode default dari sensor ini adalah pembacaan kontinu dan hasil pembacaan dikirimkan melalui protokol Serial setiap 1 detik.

Layaknya dioda pada umumnya, waktu hidupnya terbatas, untuk kasus sensor ini, perusahaan manufaktur memberi spesifikasi waktu hidup selama 8000 jam. Sehingga untuk implementasi sebenarnya, perlu dipastikan sensor tidak aktif terus menerus. Namun, untuk pengembangan, mode default dapat dipakai untuk menguji pembacaan sensor.

Dependensi Temperatur Kelembaban dan Tekanan Udara

Manufaktur sensor ini telah menunjukkan bahwa sensor ini memiliki titik operasional yang terbatas oleh temperatur, kelembaban dan tekanan udara. Untuk menguji sensor ini perlu juga kita ketahui nilai-nilai tersebut agar dapat dipisahkan pembacaan yang diluar spesifikasi dan yang valid. Sensor MEMS rendah biaya seperti sensor BME280 dari Bosch dapat digunakan untuk membantu pembacaan ketiga parameter tersebut. Sensor BME280 ini menggunakan komunikasi berbasis SPI atau I2C. Berbeda dengan sensor SDS-011 yang dapat dengan mudah dikoneksikan dengan USB, untuk komunikasi SPI dan I2C kita perlu menggunakan pin GPIO dari kontroler yang akan kita pakai. Solusi evaluasi kedua sensor ini jadi terbatas dengan development board seperti Raspberry Pi atau Arduino.

Raspberry Pi dan Python

Raspberry Pi adalah development board yang memiliki performa tinggi dan biaya yang rendah. Sensor I2C maupun sensor USB dapat dengan mudah dihubungkan dengan Raspberry Pi. Sensor bisa diakses dengan script Python, module PySerial dan untuk sensor BME280 dapat diakses dengan module dari Adafruit. Script Python ini dapat menunggu data serial dari sensor SDS011 lalu mengecek data dari sensor BME280 dan mengirimkan nilainya jika data valid dan dalam batas operasional sensor.

Sambil menunggu sensor ini datang, saya membuat script sederhana di Python untuk mendapatkan hasil pembacaan sensor sesuai dengan format protokol serialnya. Sementara script sudah tersedia di link ini. Namun program ini belum diuji dengan perangkat sebenarnya, hanya berdasarkan datasheet saja, dan sejujurnya saya tidak percaya dengan datasheet produk China.

Dioda PIN sebagai Saklar RF

Banyak aplikasi di dunia RF yang membutuhkan pensaklaran sinyal RF dan menghubungkannya ke antena berbeda, filter berbeda, maupun melalui penguat sinyal. Salah satu saklar yang umum dipakai adalah relay namun karena menggunakan prinsip mekanis, seiring dengan waktu dapat mengalami kerusakan. Sebagai alternatif dari relay, diperlukan saklar elektronik, salah satu saklar elektronik yang umum dipakai untuk sinyal RF adalah dioda PIN. Artikel kali ini akan membahas dasar-dasar dari dioda PIN.

Dioda PIN vs Dioda PN

Dioda PIN layaknya dioda pada umumnya dapat diberi tegangan positif (forward bias) untuk menyalakan dioda, dan tegangan negatif (reverse bias) atau tanpa tegangan (no bias) untuk mematikan dioda. Dioda pada umumnya terdiri dari semikonduktor tipe-P dan semikonduktor tipe-N, di tempat perpotongan kedua semikonduktor tersebut (junction) terdapat daerah deplesi yang mencegah aliran listrik. Pemberian tegangan positif (forward bias) yang membuat hilangnya daerah deplesi ini sehingga arus dapat mengalir. Untuk frekuensi rendah, yaitu frekuensi power (50Hz/60Hz) ataupun frekuensi audio, dioda PIN dan dioda PN berfungsi serupa.

PIN Diodes
Gambar 1. Struktur dioda PIN

Prinsip Kerja Dioda PIN

Struktur PIN berbeda dengan dioda pada umumnya yang terdiri dari struktur PN junction. Penambahan lapisan semikonduktor intrinsik antara PN junction membuat adanya penyimpanan muatan di lapisan intrinsik tersebut. Selain itu pada tegangan negatif (reverse bias), efek lapisan intrinsik memperbesar breakdown voltage. Karakteristik PIN diode menyebabkan PIN diode dapat berfungsi sebagai resistor variabel pada saat forward bias dan sebagai kapasitor bernilai rendah pada saat reverse bias untuk sinyal RF. Sinyal RF dan sinyal DC diberikan pada dioda pada saat bersamaan, sehingga saat sinyal RF dapat mengubah kondisi bias DC dari reverse bias ke forward bias dan sebaliknya, lapisan semikonduktor intrinsik sebagai penyimpan muatan dapat mempersulit sinyal RF untuk mematikan/menyalakan dioda.

Model of the PIN diode when forward biased (left) and reverse biased (right)
Gambar 2. Rangkaian ekuivalen dioda PIN saat forward bias dan reverse bias

Resistansi seri pada rangkaian ekuivalen forward bias dioda PIN tergantung oleh besarnya nilai arus DC yang mengalir pada dioda PIN tersebut, umumnya jika nilai arus maksimum dicapai, maka nilai resistansi minimum juga tercapai. Kapasitansi total pada rangkaian ekuivalen reverse bias dioda PIN tergantung oleh kapasitansi junction dan kapasitansi parasitik dari kemasan dioda. Nilai kapasitansi ini yang menunjukkan seberapa baik dioda PIN dapat menahan sinyal RF (isolation) pada kondisi mati.

Rangkaian Dioda PIN

Memadukan sinyal RF dan sinyal DC pada rangkaian dioda PIN dapat dilakukan dengan menggunakan RF choke dan DC blocking capacitor. Rangkaian minimum dari saklar RF dengan PIN dioda adalah seperti pada Gambar 3. DC blocking capacitor memastikan tegangan bias DC tidak mengganggu sinyal RF dan RF choke memastikan sinyal RF tidak mengganggu suplai bias DC. Umumnya dengan RF choke, ditambahkan kapasitor bypass setelah RF choke untuk memastikkan tidak ada sinyal RF yang sampai ke suplai bias DC.

Diagram of PIN diodes used in series mode for a) a basic SPST switch and b) an SPDT switch
Gambar 3. Contoh rangkaian saklar RF menggunakan dioda PIN

Rangkaian pada Gambar 3 sudah cukup untuk digunakan pada sinyal RF daya rendah, namun jika daya yang digunakan cukup tinggi, diperlukan isolasi pada kondisi off yang lebih baik dan juga kemampuan mengalirkan daya RF pada kondisi on yang lebih baik. Terdapat banyak cara untuk memperbaiki isolasi, yakni menambahkan tegangan negatif DC pada PIN diode untuk memperkecil kapasitansi atau dengan menambah dioda PIN secara seri. Selain itu, untuk mengalirkan daya RF yang lebih tinggi pada kondisi nyala, beberapa dioda dapat dikoneksikan secara paralel agar dapat melewatkan sinyal RF yang lebih besar, karena resistansi ekuivalen dioda PIN yang lebih rendah.

Sumber Gambar:

https://www.digikey.com/en/articles/techzone/2016/dec/how-and-why-to-use-pin-diodes-for-rf-switching

https://www.microwaves101.com/encyclopedias/pin-diodes

Referensi:

https://www.frostburg.edu/personal/latta/ee/qsk5/pindiodes/pindiodes.html

https://link.springer.com/chapter/10.1007/978-1-4615-5751-7_4

https://www.electronics-notes.com/articles/electronic_components/diode/pin-diode.php

Video Relevan:

 

Diskursus Statistika tentang Hitung Cepat

Akhirnya, ada diskursus yang berarti oleh proponent dan opponent dari hasil Hitung Cepat. Beberapa masukan saya terima baik dari proponent maupun opponent, saya rasa masukan ini sehat demi terungkapnya kebenaran. Salah satu diskusi pertama yaitu mengenai simulasi 1000 TPS:

Menggunakan program yang sama dengan sedikit modifikasi (dapat dilihat update di https://github.com/josefmtd/kpu-data), saya coba running dengan 1000 TPS dan mendapatkan 10 grafik ini:

Dari kesepuluh grafik tersebut, margin of error masih di bawah 1.5%, ini merupakan temuan yang menarik dan patut kembali dicerna dan dianalisis. Menjadi salah satu to-do list yang menarik untuk akhir pekan depan.

Selain dari kubu pendukung Hitung Cepat, ada juga masukkan yang berharga dari argumen kontra Hitung Cepat.

Program yang saya buat masih jauh dari sempurna, random seed masih menggunakan default dari library Python yang saya gunakan. Program saya hanya mengambil tabulasi data pasangan 01 dan 02 tanpa mengambil informasi lengkap TPS, hal ini tidak ada di tabulasi dari berbagai sumber, hanya KawalPemilu dan KPU yang menunjukkan data primer.

Masukan oleh @RajaGuguk14 masuk ke to-do list saya dalam pembuatan program selanjutnya. Karena keterbatasan kemampuan saya dalam pemrograman Python, mungkin butuh seharian, mari kita lihat apa mungkin saya menyelesaikan di akhir pekan.

Kurang lebih saya akan melakukan hal ini:

  1. Mengambil data dari API KawalPemilu (karena di API mereka terdapat indikator kejanggalan TPS, sehingga data janggal bisa saya skip)
  2. Membuat fungsi random dengan nilai seed statik agar bisa diikuti oleh orang lain
  3. Mengambil link foto C1 dari KawalPemilu untuk setiap data TPS.
  4. Menghasilkan tabulasi data raw dalam penyajian simulasi Hitung Cepat.

Sekali lagi artikel singkat ini saya tulis dengan harapan diskursus sehat mengenai statistika tetap berlanjut dan bisa terungkap kebenaran di tengah kemelut Pemilihan Presiden ini. Terima kasih untuk siapapun saja yang sudah mau bergabung dalam diskusi ini.

Statistika 101: Ukuran Sampel untuk Data Proporsi

Background

Saya menulis artikel singkat ini tentang ukuran sampel dan data proporsi karena melihat rumus yang beredar oleh Dr. Ronnie Rusli tentang rumus Quick Count, menurut saya rumus ini memiliki permasalahan, seperti yang saya jabarkan di artikel sebelumnya: https://josefmtd.com/2019/05/04/statistika-101-memberikan-pengertian-hasil-quick-count-pilpres-2019/

Rumus yang disampaikan Dr. Ronnie di-retweet oleh 2778 akun dan diberi like oleh 4808 akun. Menurut saya keanehan ini perlu dijawab dengan sebuah artikel dan klarifikasi, maka saya menulis kembali artikel ini.

Artikel ini juga bertujuan untuk merapihkan catatan statistik dari mata kuliah Probabilitas dan Stokastik yang saya terima pada tanggal 25 Maret 2015, diampu oleh Bapak M. Firdaus S. Lubis, S.T., M.T., sekaligus memberikan contoh kasus pada sebuah data proporsi yakni dalam aplikasi Quick Count.

Central Limit Theorem dan Distribusi Normal

Dasar dari Random Sampling adalah Central Limit Theorem. Central Limit Theorem adalah sebuah teori statistik di mana jika diambil banyak sampel dari sebuah populasi dengan variansi data yang berhingga (finite), mean dari sampel yang diambil pada populasi yang sama akan sesuai dengan mean dari populasi. Central Limit Theorem menunjukkan bahwa semakin bertambahnya jumlah sampel yang diambil secara acak, maka distribusi kemungkinan letak nilai mean dari sampel tersebut akan mengikuti distribusi normal.

normaldistribution
Gambar 1. Persebaran mean dengan distribusi normal

Asumsi distribusi normal dapat kita pakai ketika jumlah sampel yang kita ambil sudah mencapai batas nilai tertentu. Jika distribusi normal dapat dicapai dengan sampel yang kita ambil, maka persamaan-persamaan ini menjadi valid:

\displaystyle S_x = \frac{\sigma_x}{\sqrt{n}}

S_x adalah standard error dari mean
\sigma_x adalah standard deviasi
n adalah jumlah sampel (tps)

\displaystyle moe = z(S_x)

moe adalah margin of error
z adalah nilai dari tabel distribusi normal sesuai dengan Confidence Level
S_x adalah standard error dari mean

Data Proporsi

Data proporsi menunjukkan perbandingan atau persentase dari sebuah populasi dengan karakteristik tertentu. Data proporsi ini memiliki kemungkinan binomial, antara ya atau tidak. Hal ini dapat diaplikasikan juga pada polling maupun quick count karena data yang diambil merepresentasikan persentase dipilihnya suatu kandidat atau partai politik. Nilai p (proportion of interest dari populasi) ini yang ingin dihitung dengan cepat dengan sampel untuk mendapatkan estimasi nilai p: \hat{p}. Untuk mendapatkan simpangan baku (standard deviasi) dari data hasil proporsi ini, kita perlu mengetahui proporsi populasi sesungguhnya, hal ini tidak memungkinkan pada aplikasi Quick Count, umumnya rumus standard error dari proporsi yang dipakai:

\displaystyle S_{\hat{p}} = \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}

S_{\hat{p}} adalah standard error dari estimasi proporsi hasil sampel
\hat{p} adalah estimasi proporsi hasil sampel

Proporsi adalah data dengan distribusi binomial, namun seiring dengan bertambahnya sampel acak yang diambil pada populasi yang sama, maka distribusi kemungkinan nilai \hat{p} akan menuju distribusi normal, sehingga rumus sebelumnya kembali dapat dipakai.

\displaystyle moe_{\hat{p}} = z(S_{\hat{p}})

moe_{\hat{p}} adalah margin of error dari estimasi proporsi hasil sampel

Untuk memastikan bahwa sampel yang kita ambil sudah cukup untuk mendekati distribusi normal terdapat beberapa rule of thumb sebagai berikut:

\displaystyle np > 5
\displaystyle nq > 5

Mengambil Jumlah Sampel

Mengetahui syarat-syarat untuk mencapai jumlah sampel yang tepat, yaitu data proporsi (data binomial) harus merupakan sampel acak dengan jumlah yang dapat memenuhi syarat np > 5 dan nq > 5. Setelah itu dapat digunakan persamaan yang merupakan substitusi nilai S_{\hat{p}} pada persamaan moe_{\hat{p}} dan mengubah fungsi untuk mendapatkan nilai n maka didapatkan rumus:

\displaystyle n = \frac{\displaystyle z^2 [\hat{p}(1-\hat{p})]}{\displaystyle moe_{\hat{p}}^2}

Menggunakan persamaan ini dapat dihasilkan jumlah sampel yang sesuai dengan dasar Central Limit Theorem bahwa sampel memiliki distribusi normal untuk random sampling, dan kaidah binomial dan pendekatannya menuju distribusi normal jika sampel memadai.

Efek Populasi Berhingga terhadap Jumlah Sampel

Rumus di atas adalah rumus yang didefinisikan untuk sebuah populasi yang tak berhingga (infinite), namun pada kondisi riil, atau dalam konteks Pemilu, jumlah populasi TPS adalah berhingga, sehingga terdapat faktor pengali koreksi terhadap populasi yang berhingga pada standard deviasi. Hal ini disebabkan oleh pilihan sampel TPS tidak boleh overlap dari keseluruhan TPS populasi, (sampling without replacement). Hal ini menyebabkan nilai proporsi yang diambil menjadi dependen terhadap jumlah sampel dan populasi, sehingga standard error dari sampling perlu dikalikan dengan faktor koreksi populasi:

\displaystyle S_{\hat{p} finite N} = S_{\hat{p}} \sqrt{\frac{N_{tps}-n_{tps}}{N_{tps}-1}}

S_{\hat{p} finite N} adalah standard error sampling pada populasi berhingga
N_{tps} adalah jumlah populasi
n_{tps} adalah jumlah sampel

Perlu digarisbawahi bahwa rumus ini hanya berlaku jika sampel yang diambil sudah melebihi 5% dari populasi, jika tidak, nilai faktor koreksi ini akan mendekati 1, sehingga pengaruhnya tidak lagi besar.

Menurunkan rumus untuk mencari jumlah TPS (n_{tps} dengan pengaruh jumlah populasi ini didapatkan:

\displaystyle MOE = z \sqrt{\frac{\hat{p}(1-\hat{p})}{n}}\sqrt{\frac{N-n}{N-1}}

Kuadratkan kedua sisi menjadi:

\displaystyle MOE^2 = z^2 \frac{\hat{p}(1-\hat{p})}{n} \frac{N-n}{N-1}

Lalu tukar posisi masing-masing variabel sehingga berbentuk:

\displaystyle \frac{N-n}{n} = \frac{(N-1)(MOE)^2}{\hat{p}(1-\hat{p})z^2}

Lalu ubah persamaan di atas sehingga dapat menghasilkan fungsi n_{tps}

\displaystyle n_{tps} = \frac{N}{\displaystyle 1 + \frac{MOE^2(N-1)}{z^2 \big( \hat{p}(1-\hat{p} \big)}}

Persamaan di atas adalah persamaan yang mungkin harusnya di unggah dan di cuit oleh Dr. Ronnie Higuchi Rusli.

EDIT: Penambahan penurunan rumus pencarian jumlah sampel TPS

Appendix: Postingan Dr. Ronnie Rusli

capture.png

Adding Custom Libraries in KiCad (English)

When designing a PCB Prototype, the components you want to use are often not found in your favorite CAD software’s library, which made you have to add the component on your own. This short article will discuss how to make a library with all those components. For example, I’m going to make a library to help designing my LoRa APRS project design which I am improving. I have a LoRa module named “HDP14A ver 1.2”, an unusual module compared to the popular ones such as HopeRF or Ai-Thinker. To create this module, I have to make my own library. I will show you have to make it in KiCad 5

img_20180819_211330

Picture 1. Physical Shape Of LoRa Module HPD14A ver 1.2

Create Project

Open KiCad and start by making a new Project using the ‘ctrl+N’ Shortcut. Give it a name and assign it to a folder of your choice. After opening that Project, click on ‘Symbol Library Editor’ as in Picture 2

Screenshot 2018-08-19 21.24.06
Picture 2. Symbol Library Editor Button

New Library

After opening the Symbol Library Editor, you can make a new library on your own. To make one, click on File > New Library. As an example, I will make a Library and named it with lora-aprs.lib. After clicking on Save, you can choose to save it as a library for this project only, or as a global library

 

Screenshot 2018-08-19 21.42.02
Picture 3. lora-aprs Library Project

Create a Component

After making a Library, the next process is to create the component. You can do that by clicking on ‘Create New Symbol’ button, or by going to Symbol > New Symbol. You will then be asked to choose what Library is going to be used to save this new component you will create. After selecting the appropriate Library, press the OK button

Screenshot 2018-08-19 22.29.13
Picture 4. Adding New Components For lora-aprs Library

Add Pins on Symbol

After creating the components and naming it (mine is HPD14A), the next process is to add pins on the symbol. You can do that by going to Place > Pin to add pins on a new component. Adding pins can be done as shown in Picture 5. You can add the pin orientation, number, and name of the said pin. In addition, you can also change the type of the pin connection if it is an Input, Output, Bidirectional, Power, etc. After successfully adding a pin, you can configure its position and add a square with Place > Rectangle to make it available to be used

Screenshot 2018-08-19 22.31.23
Picture 5. Adding Pins On A New Component

Picture 6 shows the completed result, a LoRa module symbol with 16 pins. The pins on the symbol are grouped according to each of its function. When you’re satisfied with the result, you can save it with Ctrl+S. This component will then be accessible for your project, so you can immediately use it for PCB design

Screenshot 2018-08-19 22.57.47
Picture 6. Example of LoRa Module HPD14A – 433 MHz

Have fun trying KiCad!

Installing KiCad: Open Source PCB Designer Suite (English)

KiCad is an open-source software to create schematics, PCB layouts, and Gerber. KiCad can be used in Windows, Linux, and macOS, and licensed under GNU GPL v3. KiCad is made by Jean Pierre Charras, a professor in Grenoble University. KiCad is also sponsored by CERN and had several KiCad developments done under CERN employees. If you’re interested to develop KiCad, you can do it through CERN

I’m interested to try this application to do simple projects as a hobby. KiCad became the optimal choice because it is open source, which allows anyone to use it. Aside from that, KiCad also has a library which is updated weekly, accessible via GitHub. Adafruit which produces many modules and even development boards also used KiCad to create their products

Ubuntu Installation

I tried to install it using Ubuntu 18.04 this time, you can see the installation manual from this link: KiCad Ubuntu

I’ll explain how to install¬†KiCad PCB v5 in Ubuntu 18.04. First, you need to add this ppa:

# add-apt-repository -y ppa:js-reynaud/kicad-5

(Ubuntu 16.04) If you’re using Ubuntu 16.04, use apt-get update before installing KiCad:

# apt-get update
# apt-get install kicad

You will download around 391MB using that command, and installing KiCad will take around 4,970MB disk space. After that’s done, you can open KiCad through a terminal or a launcher

Screenshot from 2018-08-09 19-56-37
Picture 1. The terminal after installing KiCad and its application display

I plan to start a series of articles using KiCad. I’ll talk about adding library through KiCad GitHub after this. Have fun trying KiCad!

Automatic Position Reporting System (English)

Automatic Position Reporting System or APRS is a digital communication protocol between a large number of amateur radio stations that covers a wide area. APRS can be used to send several tactical information, such as weather, location, messages, and several special events or emergencies in real time. APRS system is made by Bob Bruniga (WB4APR) from over 25 years ago, but this system is still actively used by many amateur radio stations

Like other amateur radio stations which still exists until now, APRS is already integrated through the internet. You can oversee many kinds of tactical information through APRS. One example of a website which shows APRS data is¬†APRS.fi. In Picture 1, you’ll see many weather stations located in Tucson, Arizona, USA. One of the traditions for amateur radio stations in the United States is to provide public services, one of which is weather observation. Amateur radio station operators who owned weather stations use APRS to distribute the collected data

Although it’s called Position Reporting System, APRS itself isn’t intended as a GPS Tracker system. The development of APRS is triggered by GPS development back then, but APRS is actually a two-way communication system for real-time tactical communication

Screenshot 2018-08-03 18.24.54

Picture 1. Screenshot of Amateur Radio Stations’ activities in Tucson, Arizona, USA

APRS Radio Network

After knowing about APRS systems and one of its applications, let’s talk about the components of an APRS system. In APRS systems, you may hear several terminologies such as:

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

Terminal Node Controller is the digital radio modem used in APRS. It’s usually based on Bell 202 Modem or Audio Frequency Shift Keying modem with baudrate of 1200 baud.

Digipeater is a digital repeater capable of resending data package which then allows many other stations could receive the information. Digipeater normally has a high power and placed on tall buildings to have a wide coverage area

APRS-IS iGate is an APRS connected to the internet so it can relay messages received through RF waveforms and entered them into APRS-IS server. From APRS-IS server, you can see the packages through several APRS websites or software

To enter the world of APRS, you have to own an amateur radio callsign. In Indonesia, you can register through “SDPPI Postel Kemkominfo”. You will have to enter a national exam for Amateur Radio (Ujian Nasional Amatir Radio) and if you passed, you will receive a certificate for that. Then, make sure you have the Permit to own an Amateur Radio Station (Izin Penguasaan Perangkat Radio Amatir). If you don’t want to do any transmission, tapping into APRS transmissions is allowed by anyone who has TNC and HT Radio

And that’s a small piece of information regarding APRS. I’ll add in more details on a different occasion

Sources:

  1. http://www.aprs.org/
  2. http://www.aprs.fi/