Flamingo+ FM

This article is written after I received my giveaway prize of LaNA, Flamingo+ FM, and HF Balun 1:9 from the amazing Nooelec!

Nooelec is a company that sells Software Defined Radio stuffs, their SMArt SDR seems to be the premium in RTL-SDR class. What I’m trying to review first is the Flamingo+ FM, since it’s the simplest out of them.

Notch Filter

Basically, the Flamingo is a FM notch filter, it does as expected, blocking out FM broadcast signal. FM broadcast in my hometown is quite full, occupying the whole frequency band plan for FM broadcast from 87MHz to 108MHz. This band has a center frequency of 97.5MHz, which is exactly where the Flamingo+ is designed for.

Figure 1. Flamingo+ FM, 7 order notch filter for FM broadcast

As the brochure said, Flamingo+ FM is a 7 order notch filter that is centered on 97MHz. This can easily be realized by passive LC filters, with 7 pairs of inductors and capacitors connected in series or parallel. There is two ways to implement this filter, using the Pi configuration or T-configuration. You can find more information on WA4DSY on how the band-stop filter is configured. LC notch filter is a passive device so it does not require any Bias-Tee to operate. Calculating the components for every inductor and capacitor for the filter is done by following the Chebyshev/Butterworth/Bessel polynomial functions.

notch-filter
Figure 2. 5th order notch T-filter

Using the Notch Filter

Using the Notch filter is simple, there is an input port and output port, technically, both of them can be used interchangeably, but the Flamingo+ FM design adds an ESD diode in the input to prevent voltage transients from the antenna. The antenna is connected to the Input port of Flamingo+ FM filter, then the output port is connected to the SDR directly via a SMA barrel. Getting the ports mixed up should be okay, but you will be losing the ESD protection on the antenna if you got them mixed up.

When to use this FM notch filter? This is dependent on the location of the SDR-based solution that we’re trying to deploy. This FM notch filter may be needed if there is a high powered FM-broadcast in close proximity with the SDR site.

If I had a NanoVNA, I would probably measure the S11 and S21 performance of the filter, since I have none, I might have to wait until I can get my hands on one of them.

In my next article, I would love to talk more about the performance of filter, but first, I forgot that the only Software Defined Radio I have in hand is the old MCX connector. I would have to wait for my order of NESDR SMArtee v2 to arrive. D’oh!

While I wait for the NESDR SMARtee v2 to arrive, I will be writing the plans for what I’m gonna do with the SMArtee, LaNA, and Flamingo+ FM.

Modul LoRa SX1268 untuk Amatir Radio

Frekuensi untuk amatir radio untuk pita 70 cm (UHF) adalah 430-440MHz. Di Indonesia, frekuensi 430 MHz sampai 431 MHz dapat dipakai untuk komunikasi data. Rentang frekuensi ini dapat dipakai untuk mengembangkan perangkat amatir radio berbasis radio UHF menggunakan modul LoRa. Semtech adalah perusahaan manufaktur yang membuat chip transceiver LoRa, tahun lalu Semtech mengeluarkan seri SX126x. Jika dibandingkan dengan seri SX127x, seri SX126x mempunyai performa RF yang lebih baik, dan support penggunaan TCXO.

Semtech memiliki referensi desain untuk SX1268, referensi ini dipakai oleh perusahaan manufaktur China seperti Dorji atau Ebyte untuk membuat modul berbasis SX1268. SX1268 memiliki tiga I/O digital, pada referensi ini dua I/O dipakai untuk rangkaian internal dalam modul, yaitu RF Switch dan TCXO supply yaitu DIO2 dan DIO3. Modul berbasis SX1268 ini hanya dapat memiliki 1 I/O untuk fungsi deteksi carrier yang diperlukan untuk implementasi CSMA.

semtech.PNG
Gambar 1. Rangkaian modul berbasis SX1268

SX1268 lebih baik dari sisi RF dibandingkan SX1278, sensitivitas yang lebih tinggi, deteksi carrier yang dapat mendeteksi keseluruhan dari transmisi LoRa dan kemampuan menggunakan TCXO (temperature compensated oscillator) yang dapat memperbaiki tingkat presisi dari frekuensi dari modul LoRa. Namun perubahan ini juga mengakibatkan berubahnya implementasi komunikasi SPI dengan modul SX1268 dibandingkan dengan modul SX1278, sehingga program untuk SX1278 tidak dapat dipakai untuk SX1268.  Setelah adanya pengembangan library SX1268 oleh Jan Gromes (http://github.com/jgromes/RadioLib), kelebihan modul SX1268 dapat diintegrasi dengan Arduino untuk membuat perangkat LoRa performa tinggi.

Langkah selanjutnya dari artikel ini adalah integrasi dengan Arduino Pro Mini atau standalone ATmega328P untuk pembaharuan desain LoRa APRS TNC.

NanoPi NEO Air dan Modul GSM

NanoPi NEO Air adalah sebuah single board computer alternatif selain Raspberry Pi. Ukurannya yang kecil membuat NanoPi NEO Air menjadi alternatif dari Raspberry Pi Zero W. SBC ini menggunakan prosesor Quad Core Allwinner H3 up to 1.2GHz, dengan RAM 512MB dan Storage eMMC 8GB. Kelebihan chip ini dibandingkan chip Raspberry Pi Zero W adalah banyaknya hardware UART (3 buah, 1 untuk debug), Quad Core dibandingkan Single Core untuk Raspberry Pi Zero W.

Modul GSM yang dipakai untuk percobaan kali ini adalah modem A6 dari AiThinker. Modul yang saya pakai menggunakan port micro USB untuk menyuplai daya ke modul. Untuk menghubungkan modul dengan NanoPi NEO Air dibutuhkan tiga jumper antara UART1 (TX1, RX1) dan GND dengan U_RX, U_TX, dan GND.

Komunikasi internet dari modul GSM dengan NanoPi NEO Air menggunakan Point-to-Point Protocol (PPP). Untuk OS FriendlyCore dari NanoPi NEO Air, yang berbasis dari UbuntuCore, menggunakan packaging manager yang sama dengan Debian. Instalasi package PPP dapat dilakukan dengan menggunakan command:

# apt update
# apt install ppp

Setelah instalasi PPP, langkah selanjutnya adalah untuk mempersiapkan file konfigurasi untuk provider yang ingin kita pakai, contohnya untuk Telkomsel, buat file /etc/ppp/peers/telkomsel

# nano /etc/ppp/peers/telkomsel

Isilah file tersebut dengan konten di bawah ini:

# Koneksi ke APN Telkomsel
connect "/usr/sbin/chat -v -f /etc/chatscripts/gprs -T telkomsel"

# Device serial
/dev/ttyS1

# Kecepatan serial
115200

# Alamat IP diatur oleh ISP
noipdefault

# Gunakan PPP sebagai default route
defaultroute

# Menggunakan name server dari ISP
usepeerdns

# Daemon PPP akan otomatis menyala ulang jika ada error
persist

# Tanpa autentikasi dari remote
noauth

# Tanpa hardware control UART
nocrtscts

Jika file konfigurasi sudah disiapkan, koneksi menggunakan modul GSM dapat dimulai dengan menggunakan command:

# pon telkomsel

dan mematikannya bisa digunakan command:

# poff telkomsel

Untuk menyalakan internet pada saat booting NanoPi, ubah file konfigurasi network interface dengan menggunakan command:

# nano /etc/network/interfaces

Tambahkan konten ini di dalam file /etc/network/interfaces:

auto telkomsel
iface telkomsel inet ppp
    provider telkomsel

Toxic Masculinity in Media and Advertising

Toxic masculinity is a term commonly used by social activists to address the issues of masculinity, mainly credited to the Patriarchy. Toxic masculinity is such a partisan issue that most Conservative people do not really believe. The term toxic masculinity is not a new idea, it’s been engraved in our society for so long, pointing out toxic male behaviors have been common in the popular culture. Although, it recently gained more traction in midst of #MeToo movement.

Where did it come from originally? Toxic Masculinity was first used by psychologist Shepherd Bliss to separate negative traits of men from the positive ones. Bliss further defined that “avoidance of emotional expression”, “over-aspiration for physical, sexual, and intellectual dominance”, and the “systemic devaluation of women’s opinions, body, and sense of self.”

Several questionable behaviors of adult male, such as catcalling and other forms of sexual harassment is the leading cause of calling out the toxic masculinity. Surely, these problems and many others issued by the activists are very much real and happening right now, but what are the solutions?

This is where the media and advertising comes to play. Earlier this year we have been greeted by a Gillette ad campaign, “The Best a Man Can Be”. One can argue that this advertisement campaign is to pander for social activism cause, tackling the Toxic Masculinity. We can also argue that this campaign has failed terribly, receiving loads of backlashes. Recently, Gillette even loses $8 billion in valuation, conservative medias suggest that it’s due to the failing ad campaign, but more progressive medias highlight the decreasing consumer (caused by celebrities having beards) and more rival companies.

Toxic Masculinity is too commonly used to be taken seriously, although some of the negative traits are a real thing. Not enough discourse is taken to address this issue, the fact that the activists that like to use these terms see toxic masculinity in the perspective of the way it devalues woman makes it worse. As shown in the video, most of the solutions revolves around making men stop fighting, valuing women, stopping rough-housing plays, and stopping the use of “boys will be boys”. These ideas seem really good in paper, but this is not what an advertisement for a product should be telling us.

How the media addresses the Toxic Masculinity jargon isn’t much better at all. A few months back, Meryl Streep addresses the fact that “toxic masculinity” is not something that should be put together as two words, because women can be toxic, too. What raised my attention is that Meryl Streep also mentioned that “We hurt our boys by calling something toxic masculinity”. This is really important, and if I can compare this with the Gillette ads, where “boys will be boys” and young boys watching over-sexualized women in rapper songs are depicted, younger boys are the target of this issue. Young men recently have grown up believing the “toxic masculinity”, being fed with how most men, if not all are “toxic”. Heck, even here in Indonesia, we have this saying of: “all men are bastards, the ones that aren’t, they’re gay.”

(Conservative media reports; https://www.dailywire.com/news/47881/amen-meryl-streep-why-she-rejects-term-toxic-amanda-prestigiacomo)

(Progressive media reports: https://www.theguardian.com/world/2019/jun/01/seriously-meryl-streep-toxic-masculinity-doesnt-hurt-men-it-kills-them)

Young boys have been fed way too many of these guilt shame, they are starting to believe that the masculinity as mere violence. Condemning the toxic masculinity and abandoning the traditional masculinity. Obviously, one can argue that the traditional masculinity values are flawed, but if we keep attacking what it means to be a man without giving proper drive for these young boys. We will create nihilistic young men and these types of men are dangerous and can cause various issues since they can be manipulated to do various unimaginable things.

Let me present my case with a video example:

On this video, a young man asks about the concept of Toxic Masculinity being unfair to young men. It’s fairly evident that these types of conversation do not think of the boys, but always on how it will benefit young girls. This poor fella does not even have his proper answers. What is interesting to note is, is the proposed solution of creating an equal upbringing for young boys and girls. We surely know that men and women are different, we want different things in life, some might argue that this is due to societal pressure but others argue that it’s due to undeniable biological differences. Even in Sweden where we can see the closest to an egalitarian society in the world, the differences of university degree choice between men and women is fairly obvious.

We can’t hope to fix the male issues by focusing solely on the benefits for woman and keep beating the dead horse of how men are bad. Feminizing young men is not really a good long term solution, when we create weak men, we will be further dismayed by the effects of what bad men can do. This is where I argue that toxic masculinity portrayal in media and advertising is unfair towards young boys. Our young boys do not need more people telling us how bad it is to be a man and how they are guilty of the sins of older generations. We need to show them what it means to be a good and virtuous men, showing them the positive masculinity, how they can harness the masculine traits and use it for the good of society by adopting the necessary responsibilities.

These changes should not come from pressure from social activists. Definitely not from our men grooming products. The media isn’t really helping either, there’s only one way, through families, it should be the main priority to get the parents, both Mother and Father who equally have the big deciding factor for the kids growing up. These shall not be done in a negative manner demonstrated previously, but in a positive mark on how to make young boys adopt responsibilities and be courageous to standing up for the right things. Popular culture such as the superheroes franchise is one easy way of telling young boys how to act, how to be courageous, and how to adopt proper responsibilities. Not shaming these boys for crimes they have yet to commit by blasting these toxic masculinity and worsening the problems.

Disclaimer: This is not my typical content in this blog, but I feel a need to talk about this due to the recent development of the Gillette ad campaign and how it backfired.

Jesus on the Cross: Sacrifice is Not a Joke

As a Catholic, I am sad because of the resurfacing of an old video of a Q&A hosted by a famous Ustadz. It was not because of his answer, that is degrading the crucifix, specifically the Catholic crucifix. Catholics are the one who have Jesus on our Crucifixes, it is to remind us of the sacrifice He made on the cross, for everyone. It wasn’t because the fact that he spoke badly of the Crucifix in Catholic hospitals, the one that was built not only for Catholic patients, but for everyone.

It wasn’t all that, it was the laughter that ensues after the answer was given. Hearing the symbols of the greatest sacrifice being ridiculed is really sad. I was overwhelmed, who would have such an ill-intention of sharing these? The fact that the video was shared with a name of @KAJIANUSTADABDULSOMAD_ and was tagged with “follow and share” made it a bit worse. The Ustadz allegedly got reported to the police for the video, but the one sharing these video is the one that should be reported and facing the consequences. Because we did not have to hear that, sharing it only cause troubles and unneeded social problems.

Jesus has said in Matthew 5:38-42:

You have heard that it was said, ‘Eye for eye, and tooth for tooth. But I tell you, do not resist an evil person. If anyone slaps you on the right cheek, turn to them the other cheek also.And if anyone wants to sue you and take your shirt, hand over your coat as well. If anyone forces you to go one mile, go with them two miles. Give to the one who asks you, and do not turn away from the one who wants to borrow from you.

As a Catholic, we have always been taught not to struggle or resist any attacks that’s directed to us. Our pastors always have the same sentiment, it’s always due to what Jesus has said.

However, that’s not all, a backlash is coming, with a form of #KamiBersatuBersamaUAS trending topic and suddenly quotes like these are appearing:

“Follow the Ulama that’s hated by the infidels … ”

< A video of a Christian preacher spewing hate towards Muslim >

“This is probably common in their churches too”

“Why is everyone targeting our Ulama?”

This is heartbreaking, what have we done, as Catholics in Indonesia to receive this? Did we provoke you, dear brothers? We were slightly hurt by the Crucifix being degraded, but did you really have to put salt in our wounds? Our pastors do not rally us to do anything but to forgive. Yes, media reported that the Ustadz was reported, but turns out no reports have been given until today, said the NTT Police.

(https://www.viva.co.id/berita/nasional/1175413-ceramah-soal-salib-benarkah-ustaz-abdul-somad-dilaporkan-ke-polisi)

When I was a Protestant, I did hear some snide remarks from a preacher, but never once I heard a Catholic pastor speak in derogatory terms to our Muslim brothers. We do not hate, we do not insult you in our churches, we never spoke badly of your Ulamas. The Catholic institution, namely the Archdiocese of Jakarta has even been actively trying to promote our Unity in Diversity and Pancasila. We are trying to create a great relationship from within our church and to the society around us, we are not your enemy.

I ask my Catholic brothers to keep following the teaching of Jesus and the guidance from our pastors to not get offended by this. I hope no one will report the Ustadz, but rather I hope someone can find the one sharing the video and let a proper apology be uttered by that person.

I ask my Muslim brothers not to blow these up further, there’s no need to defend nor squabble. I understand that this is a teaching platform for you and it should be kept private.

I believe that to each one of us, our own religion, we should not be squabbling among ourselves, if we do, we’re only hurting ourselves, while people start to abandon religions at all, our common enemy is the same, those who want to paint all religious person as bad and ignorant, and let us not prove them right.

Rather than talking about #UAS, I would rather we talk about the pollution in Jakarta and how can we lessen the threat that is literally killing us slowly.

Disclaimer: This is my opinion and I welcome any feedback. I will not share any video that is mentioned.

Amatir Radio: YD0ABH

Hari ini saya mampir ke salah satu Blog seorang Amatir Radio, OM Benny (YD0SPU). Dari postingan beliau inilah saya jadi tahu bagaimana cara mendaftar Ujian Nasional Amatir Radio tahun lalu. Saya mengikuti pendaftaran dan kebetulan pada tahun lalu UNAR ditunda karena kurangnya peserta. Sayang sekali pada saat itupun saya tidak sempat ikut Bimbingan UNAR, mungkin pada waktu itu saya bisa berkenalan dengan banyak calon anggota maupun anggota lama ORARI. Pada hari-H UNAR-pun, saya datang lalu mengerjakan soal latihan, sebelumnya saya drill soal-soal yang banyak sudah tersedia di Internet. Ternyata drilling soal sangat membantu, saya menyelesaikan UNAR dengan singkat, mungkin salah satu peserta ujian Siaga pertama yang keluar hari itu. Singkat cerita, hasil ujian pun keluar dan ternyata hasilnya lulus.

Setelah lulus ujianpun saya melihat artikel dari OM Benny tentang pendaftaran ORARI dan pengurusan IAR sebelum boleh transmit di jaringan radio amatir. Melihat iuran izin amatir radio dan berbagai berkas yang perlu dilengkapi, sayapun akhirnya menunda terus pendaftaran. Sampai hari ini, saya sempat melihat kembali bahwa ada regulasi baru dari Kominfo yang mempermudah keluarnya Izin Amatir Radio. Setelah lulus UNAR, ternyata IAR sudah otomatis diberikan. Sayapun segera membuka website SDPPI (iar-ikrap.postel.go.id) dan ternyata, saya sudah memiliki IAR dengan callsign YD0ABH.

Jika Anda tertarik juga untuk menjadi Amatir Radio, silakan baca tulisan dari OM Benny:  https://x.benny.id/ujian-negara-amatir-radio-unar-jakarta-2019/

Mungkin dengan adanya izin IAR ini saya bisa melanjutkan kembali pengembangan jaringan LoRa APRS yang ingin saya buat sebelumnya yang terkendala karena belum mengurus Izin Amatir Radio untuk menguji transmisi.

(Akhirnya, saya bisa menuliskan kata penutup ini:)

73 de YD0ABH

MQTT Publisher dan ThingsBoard untuk Sistem Monitoring Kualitas Udara

MQTT adalah salah satu protokol di atas TCP/IP yang cukup favorit digunakan untuk mengirimkan data dari perangkat IoT ke sebuah server. Berkenaan dengan sistem monitoring kualitas udara di Jakarta yang ingin saya kembangkan, MQTT menjadi protokol pilihan dalam pengiriman dari sensor ke ThingsBoard server. ThingsBoard adalah platform IoT yang menyediakan infrastruktur di sisi server, terdiri dari database, MQTT broker dan web server yang juga terdapat dashboard. Kompleksitas di sisi server sudah tidak lagi menjadi permasalahan untuk sistem pemantauan ini, sehingga sisi kompleksitas berada pada pengembangan perangkat sensor dan jaringan penunjang koneksi MQTT nya.

Komunikasi MQTT

Menurut pendapat saya, terdapat dua solusi yang menjamur untuk komunikasi IoT dengan MQTT, yaitu dengan WiFi dan GPRS. ThingsBoard juga sepertinya setuju dengan memberikan SDK Arduino untuk MQTT dengan SIM900 dan ESP8266, yang dapat dibuka di link ini. Komunikasi MQTT dengan GPRS dapat menggunakan berbagai modul GSM 2G yang tersedia dengan harga yang relatif murah. Walaupun pemakaian 2G semakin berkurang dan provider telepon seluler akan mematikan jaringan 2G secepatnya, namun Telkomsel masih akan meneruskan jaringan 2G karena hampir 50% penggunanya masih menggunakan 2G. Untuk sensor dengan umur 1 tahun seperti SDS011, penggunaan modul GSM 2G masih masuk akal.

Penggunaan WiFi juga sudah menjamur, sehingga memasang sensor di sekitar jaringan WiFi juga sangat memungkinkan. WiFi dalam IoT menjadi sangat prevalen akibat pengembangan mikrokontroler ESP8266, dan selanjutnya ESP32. ESP8266 menjadi populer karena ESP8266 merupakan chip dengan WiFi dengan TCP/IP dan dapat digunakan sebagai mikrokontroler. ESP8266 dapat dipasang berbagai SDK, salah satunya adalah Arduino SDK sehingga dapat diprogram layaknya Arduino dengan menambahkan Arduino Core untuk ESP8266 melalui Boards Manager Arduino IDE.

ESP8266/ESP32 atau Arduino Pro Mini

Komunikasi di MQTT dengan Arduino IDE dapat diakses dengan menggunakan library PubSubClient. Keduanya dapat digunakan di ESP8266 maupun Arduino berbasis ATmega328P. Modul GSM800 dapat terkoneksikan dengan mudah dengan Atmega328P karena penggunaan TinyGSM library yang menggunakan Flash memory dan RAM yang rendah. TinyGSM juga dapat digunakan dengan PubSubClient dan ThingsBoard sudah mengembangkan wrapper untuk PubSubClient agar dapat dengan mudah dikoneksikan dengan MQTT broker ThingsBoard. Di sisi lain ESP8266 dapat langsung menggunakan PubSubClient.

Arduino berbasis ATmega328P ProMini maupun ESP8266 dapat dijalankan dengan sinyal digital 3.3V. Sensor BME280, SDS-011, maupun modul GSM yang dipakai menggunakan komunikasi dengan 3.3V. Pro Mini dan ESP8266 merupakan pilihan yang cocok untuk sensor-sensor ini. Perlu dilakukan perbandingan antara solusi Pro Mini + TinyGSM dan ESP8266 untuk mengetahui kelebihan dan kekurangan dari masing-masing pendekatan.

Uji coba selanjutnya yang akan saya bahas di artikel setelah ini adalah bagaimana menghubungkan Pro Mini dan SIM800L dengan ThingsBoard dan/atau ESP8266 dengan ThingsBoard melalui MQTT. Bagian ini merupakan bagian penting yang menentukan pengembangan perangkat keras selanjutnya berdasarkan uji coba konsep yang sudah dilakukan dengan Raspberry Pi dan Python.

SDS011 BME280 and MQTT

Sambil menunggu kedatangan sensor SDS011, saya menulis artikel singkat bagaimana cara untuk mengambil data dari BME280 dan mengirimkannya ke ThingsBoard. Namun terganggu dengan adanya mati listrik hari Minggu dan Senin, sehingga pada hari Senin sensor sudah datang maka saya putuskan untuk menuliskan artikel lengkap percobaan dengan BME280, SDS011, dan MQTT

Modul Python Adafruit untuk BME280

Modul Python untuk BME280 sudah disediakan oleh Adafruit dengan CircuitPython. CircuitPython ini hanya bisa dijalankan di Python 3, Adafruit sudah memiliki tutorial sendiri bagaimana cara menyiapkan CircuitPython di Raspberry Pi. Langkah-langkah detil untuk mempersiapkan Raspberry Pi untuk menggunakan CircuitPython dapat dilihat di link ini, namun saya akan merangkum dengan singkat.

Hal pertama pastikan Raspberry Pi anda sudah diupdate:

# apt update
# apt upgrade

Pastikan bahwa di Raspberry Pi sudah ada PIP untuk Python3

# apt install python3-pip

Untuk menggunakan sensor BME280 dengan I2C maupun SPI pastikan Anda sudah menyalakan I2C dan SPI melalui command line tool:

# raspi-config

Setelah memastikan semua dependencies sudah terinstal di Raspberry Pi, instalasi untuk Python dapat dilakukan dengan command:

# pip3 install adafruit-circuitpython-bme280

Setelah instalasi Adafruit-CircuitPython-BME280, modul adafruit_bme280 sudah dapat diakses dari Python3, semua dependencies dalam Python3 yang dibutuhkan juga sudah terinstalasi. Sensor I2C memiliki address tertentu dan umumnya bisa diubah dengan menggunakan pull-down atau pull-up resistor di pin ADR. BME280 oleh Adafruit memiliki pull up resistor di ADR, sehingga address nya 0x77, lalu modul China yang umum dijual menggunakan pull-down resistor di pin ADR sehingga address nya 0x76. CircuitPython module untuk BME280 yang disediakan Adafruit menggunakan addrses 0x77, namun dapat diubah pada Class initialization dalam script Python. Contoh program ini sudah tersedia di GitHub saya.

SDS-011 dengan Python Serial

SDS011 mengirimkan data dari serial menggunakan USB converter (CH340), driver untuk CH340 sudah tersedia di Linux, sehingga yang diperlukan hanyalah modul Python untuk mengakses data Serial. Karena BME280 menggunakan Python3, maka untuk PySerial digunakan Python3. Instalasi PySerial dapat dilakukan dengan PIP3

# pip3 install PySerial

Setelah instalasi PySerial, koneksikan sensor dengan USB ke Raspberry Pi dan jalankan script yang sudah tersedia di GitHub saya, maka akan terlihat pembacaan sensor PM2.5 dan PM10 di tampilan layar.

Publisher MQTT untuk Python

Setelah data sensor sudah dibaca oleh script Python, module paho-mqtt dapat dipakai untuk mengirimkan data ke MQTT broker, untuk saat ini saya menggunakan ThingsBoard. Untuk mengirimkan telemetry dengan ThingsBoard, yang diperlukan adalah token akses untuk device yang sudah digenerate di ThingsBoard. Pengiriman data telemetri ke ThingsBoard memiliki topic tertentu yakni ‘v1/devices/me/telemetry’, data yang dikirimkan di format dengan JSON. Data ini diterima oleh ThingsBoard dan dapat dibuat Dashboard seperti Gambar di bawah ini.

dashboard.png

Dengan hasil pembacaan dengan dashboard ini, saya mengakhiri tulisan kali ini yang menunjukkan bagaimana sebuah sistem dengan BME280 dan SDS011 dapat mengirimkan informasi realtime tentang kualitas udara menggunakan ThingsBoard dan MQTT.

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.

Sensor PM2.5

Artikel ini termasuk dari seri pembahasan solusi PolusiJakarta. Saat melihat sensor rendah biaya, saya melihat beberapa opsi yang tersedia di Tokopedia, tentu sebelum membuat purwarupa, kita perlu mencari sensor-sensor yang sudah tersedia di pasaran Indonesia terlebih dahulu sebelum memilih sensor-sensor lain.

Sensor SHARP GP2Y1010AU0F

Sensor kualitas udara yang pertama kali saya lihat adalah sensor dari SHARP yaitu GP2Y1010AU0F. Harganya cukup murah, umumnya dibawah 100rb.

 

dust sensor principles
Gambar 1. Sensor SHARP GP2Y1014AU0F dan cara kerjanya

Prinsip nya menggunakan LED infrared dan fototransistor (phototransistor). LED infrared akan menyala dan fototransistor akan membaca cahaya yang sudah dipengaruhi oleh adanya debu partikulat yang masuk melalui lubang sensor. Cara kerja sensor ini sederhana, yang diperlukan adalah LED drive dari mikrokontroler dan pembacaan sinyal analog. Namun kelemahan dari sensor ini adalah tidak dapat membedakan PM10 dan PM2.5, sensor ini mungkin cukup untuk memantau kondisi debu di dalam ruangan.

Sensor Nova SDS011

Sensor kualitas udara ini masih cukup hangat dibicarakan oleh beberapa paper lingkungan, dan banyak tersedia di AliExpress karena merupakan buatan China. Sensor ini tersedia di Tokopedia juga dengan margin yang cukup besar, namun dibandingkan ongkos kirim dan waktu menunggu barang dari China, saya rasa opsi ini cukup menarik.

Gambar 2. Nova PM Sensor

Membaca beberapa paper yang membahas sensor ini, saya menjadi condong untuk memakai sensor ini. Melihat produknya yang sudah memiliki built-in fan dan sudah tersedia TTL-to-USB converter dengan kabelnya, saya cukup yakin untuk memulai pengembangan dengan modul ini, karena hal ini berarti sensor dapat dengan mudah dikoneksikan dengan komputer dan menggunakan program Serial sederhana untuk mendapatkan data.

Awalnya saya cukup ragu dengan adanya built-in fan yang mungkin akan memakan arus yang berlebih, maka saya putuskan untuk membaca datasheet sebelum mengambil keputusan.

Sensor SDS011 ini dapat mengukur PM2.5 dan PM10 dan mengirimkan hasil pembacaannya dengan PWM dan TTL UART. Level tegangan dari sensor ini adalah 5V, disuplai daya 5V dengan arus rating sebesar 70mA. Sensor ini mengeluarkan data setiap 1 detik dan memiliki titik operasional -10 sampai 50 derajat Celsius , kelembaban sampai dengan 70%, tekanan udara 86KPa – 110 KPa.

USB-to-TTL, daya yang masih di bawah 0.5W, dependensi terhadap temperatur, kelembaban, dan tekanan udara. Hal ini memicu saya untuk mencoba sensor ini dengan Raspberry Pi, di mana saya dapat menghubungkan sensor BME280 bersamaan dengan sensor SDS011 ini yang terhubung dengan USB.

Saya memutuskan untuk membeli sensor ini dari Tokopedia, saya harap bisa mulai menggarap sensor ini dan menggunakan BME280 sebagai pembanding dan membuat purwarupa operasional secepat mungkin.