Semua Tentang Belajar Teknologi Digital Dalam Kehidupan Sehari - Hari

  • IC Timer 555 yang Multifungsi

    IC timer 555 adalah sirkuit terpadu (chip) yang digunakan dalam berbagai pembangkit timer, pulsa dan aplikasi osilator. Komponen ini digunakan secara luas, berkat kemudahan dalam penggunaan, harga rendah dan stabilitas yang baik

  • Ayo Migrasi TV Digital

    Kami bantu anda untuk memahami lebih jelas mengenai migrasi tv digital, apa sebabnya dan bagaimana efek terhadap kehidupan. Jasa teknisi juga tersedia dan siap membantu instalasi - setting perangkat - pengaturan antena dan distribusi televisi digital ke kamar kos / hotel

  • Bermain DOT Matrix - LOVEHURT

    Project Sederhana dengan Dot Matrix dan Attiny2313. Bisa menjadi hadiah buat teman atau pacarmu yang ulang tahun dengan tulisan dan animasi yang dapat dibuat sendiri.

  • JAM DIGITAL 6 DIGIT TANPA MICRO FULL CMOS

    Jika anda pencinta IC TTL datau CMOS maka project jam digital ini akan menunjukkan bahwa tidak ada salahnya balik kembali ke dasar elektronika digital , sebab semuanya BISA dibuat dengan teknologi jadul

  • Node Red - Kontrol Industri 4.0

    Teknologi kontrol sudah melampaui ekspektasi semua orang dan dengan kemajuan dunia elektronika, kini semakin leluasa berkreasi melalui Node Red

Kamis, 11 April 2024

[RTL-SDR] LoRa IOT Gateway Via Mqtt Memanfaatkan Dongle Murah Meriah

 


*** Disclaimer : LoRa dan LoRawan merupakan hak intelektual daripada semtech dan harus dihormati sesuai UU Hak cipta. Semua yang dibahas disini merupakan percobaan terbatas untuk pembuktian konsep Software Defined Radio vs LoRa. Tidak ada keinginan penulis untuk mengkomersialkan segala praktek pada tulisan ini ***


Sebelumnya  penulis ingin berbagi pengalaman saat pertama kalinya mengenal gateway lora ke internet, jauh sebelum Lorawan Antares telkom diluncurkan ( yang saya pernah bahas disini). Mahasiswa dari bandung meminta saya untuk membantunya melakukan setting gateway LoRa bernama DRAGINO. Terkejutnya saya saat mengetahui harga dari hardware berbentuk seperti router wifi ini. Coba cek harga di tahun 2024 deh..

 


Jadi saya sangat bersyukur saat Telkom Antares meluncurkan gateway nya berbasis LoRaWan di 2021 dan tersebar di berbagai lokasi di seluruh Indonesia. Namun permasalahannya adalah sedikitnya pembahasan teknis di Internet maupun Youtube sehingga beberapa mahasiswa yg ingin skripsi LoraWan "kesasar" ke blog ini, bahkan banyak yg WA saya. Library arduino yg bberhubungan dengan LoRaWan kurang tutorial bahkan kalau dipakai banyak errornya, dan menjadi faktor kenapa youtube saya disini banyak yg komentar dan ujungnya berkonsultasi menggunakan library oprekan yang bisa dibaca disini


 

 

Dan kemudian saya menulis juga berbagai faktor yang menyebabkan kenapa lorawan antares gak bisa terhubung dengan modul lora kamu (baca disini ), salah satunya adalah jarak yang jauh dengan BTS LoRaWan Antares (yg biasanya di tower pada kantor STO Milik Telkom) . Ingat LoRaWan di Indonesia menggunakan band frekuensi AS 923-2 sehingga jangkauannya agak lebih pendek dibandingkan jangkauan LoRa 433 Mhz.

Lalu solusi jika gateway IOT nya susah bagaimana ? Memang bisa memanfaatkan LoRa ke-2 yang dihubungkan ke wifi, namun saya berpikir kenapa tidak memanfaatkan Software Define Radio , dengan dongle usb rtl-sdr yang super murah untuk mendecode sinyal LoRa (baca disini dulu). Ayo kita coba ..


 
 
Langkah pertama setelah puas mendengarkan cuap-cuap satpam gedung mall dengan dongle ini + software sdr#, adalah pindah ke PC berbasis Linux, pilihan saya distro Ubuntu, lalu menginstall Gnu-Radio yang dapat dibaca disini. Gnu Radio bukanlah software siap pakai namun harus di "coding" dengan mudah melalui gnu-radio companion seperti praktek saya mengenai cara mendengarkan Siaran FM di gnu-radio (baca disini). 

Untuk dapat menghubungkan Gnu Radio dengan LoRa maka kita bisa membaca beberapa tulisan dari Pieter Robyns, Peter Quax, Wim Lamotte dan William Thenaers yang membuat library gr-lora namun kurang berhasil di layer aplikasinya. Sehingga saya menemukan library gr-lora_sdr yang diklaim sukses membuat decoding LoRa secara fungsional. Silahkan baca disini : https://github.com/tapparelj/gr-lora_sdr.
 
Blok diatas merupakan blok lengkap dari LoRa receiver yang akan muncul jika instalasi gr-lora_sdr sukses dilakukan. Lakukan penyesuaian pada blok ini yang harus sesuai dengan script yang akan digunakan pada Arduino + pengirim lora yang dipakai. Rangkaian pengirim data nya seperti ini :



Sedangkan untuk pengiriman datanya melalui modul LoRa SX1276 saya gunakan sensor DHT11 sebagai pembaca data suhu dan kelembaban. Scriptnya sebagai berikut :

#include <SPI.h>
#include <LoRa.h>
//Library standar LoRa
#include <DHT.h>

int counter = 0;

//Sesuaikan PIN CS, Reset, DIO0

const int csPin = 10;
const int resetPin = 9;
const int irqPin = 2;

const int dhtPin = 3;
//Sesuaikan pin DHT

#define DHTTYPE DHT11
//Sensor DHT11
DHT dht(dhtPin, DHTTYPE);

void setup() {
Serial.begin(9600);
while (!Serial);

Serial.println("LoRa DHT 11 - www.aisi555.com);

if (!LoRa.begin(
922E6)) { //sesuaikan frekuensi LoRa yg dipakai
Serial.println("Starting LoRa failed!");
while (1);
}


dht.begin();
delay(5000);
}

String SendTempHumid(){
//function pengukuran DHT


float h = dht.readHumidity();
float t = dht.readTemperature();

if (isnan(h) || isnan(t)) {
Serial.println("Failed to read from DHT sensor!");
}

Serial.print("Humidity: ");
Serial.print(h);
Serial.print(" %\t");
Serial.print("Temperature: ");
Serial.print(t);
Serial.println(" °C ");

//yang dikirim data berupa string JSON
return( "{\"counter\":" + String(counter) + ",\"suhu\":" + String(t) + ",\"humi\":" + String(h,0) +"}");
}

void loop() {

//baca terus menerus

String paket = SendTempHumid();
Serial.print("Sending packet: ");
Serial.println(paket);

// send packet


LoRa.beginPacket(true);
LoRa.print(paket);
LoRa.endPacket();

counter++;

delay(10000);
//sesuaikan delay pengiriman
}

 

Jika setting benar pada flow gnu radio, sesuai contoh pada library nya gr-lora_sdr, maka pesan yang muncul pada output Gnu-Radio seperti ini  :



Selanjutnya saya menggunakan parsing data melalui python, yang saya kombinasikan dengan pengiriman data via TCP lokal (gunakan TCP sink di GnuRadio) serta untuk pengiriman data ke Internet saya gunakan modul python paho-mqtt. Script nya kira kira begini :

import json
import socket
import paho.mqtt.client as mqtt
from time import sleep
from random import randrange

#local tcp for gr-lora_sdr bridge
HOST = "127.0.0.1"
# Standard loopback interface address (localhost)
PORT = 12345 #
Port tcp

# Inisialisasi broker mqtt gratis sejuta umat
broker_address="broker.hivemq.com"
broker_port=1883

def on_publish(client,userdata,result):
#create function for callback
print("send data to broker")
pass

client= mqtt.Client(f'aisi555-client-{randrange(0,100)}')
#clientn must random
client.on_publish = on_publish
#assign function to callback
client.connect(broker_address,broker_port)

#function untuk parsing data tidak berguna, thanks to chatGpt
def jason(byte_stream):

# Find the index of the first occurrence of {
start_index = byte_stream.find(b'{')

if start_index != -1:
# Find the index of the first occurrence of } after the first {
end_index = byte_stream.find(b'}', start_index) + 1

# Extract the JSON object from the byte stream
json_object_bytes = byte_stream[start_index:end_index ]

# Decode the JSON object to UTF-8
try:
json_object_str = json_object_bytes.decode('utf-8')
print("Extracted JSON object:", json_object_str)

data = json.loads(json_object_str)

# Access the values using keys
counter = data['counter']
suhu = data['suhu']
humi = data['humi']

print("Counter:", counter)
print("Suhu:", suhu)
print("Humi:", humi)

#publish ke mqtt topics
client.publish("/gr-lora/counter",counter)
client.publish("/gr-lora/suhu",suhu)
client.publish("/gr-lora/humi",humi)

except UnicodeDecodeError as e:
print("Error decoding UTF-8:", e)
else:
print("No JSON object found in the byte stream.")




# function untuk socket TCP

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print(f"Connected by {addr}")
while True:
data = conn.recv(1024)
jason(data)
if not data:
break




Dan hasilnya bisa terkirim data Suhu via LoRa-MQTT ke smartphone saya.




Sumber :

J. Tapparel, O. Afisiadis, P. Mayoraz, A. Balatsoukas-Stimming, and A. Burg, “An Open-Source LoRa Physical Layer Prototype on GNU Radio”

https://arxiv.org/abs/2002.08208

Jika tulisan ini menginspirasi dan menjadi publikasi resmi, selayaknya paper diatas dapat dijadikan "kutipan" atau citation.

Share:

Sabtu, 06 April 2024

[RTL-SDR] Apakah LoRa dapat diterima dengan hanya menggunakan coding SDR ?

 


Lora itu tidak "Open Source" ! Untuk memanfaatkan komunikasi data jarak jauh dengan link budget paling minim, walau status sebagai opreker tetap harus menggunakan chipset utama yang didapatkan dari SEMTECH. Murah memang namun ada  hak paten sampai tahun 2035 yang didaftarkan atas nama semtech yang harus dihormati. Namun banyak yang ingin sekedar me- "reverse engineer" -kan konsep modulasi chirp spread spectrum milik semtech. Bahkan ada opreker diluar sana berhasil mengirimkan pesan lora dengan memanfaatkan i2s dari ESP32 yang kemudian dinamakan LoLRa.

Menurut jawaban chatgpt , LoRa (Long Range) dan Chirp Spread Spectrum (CSS) memiliki hubungan dalam konteks teknologi komunikasi nirkabel, terutama dalam domain Internet of Things (IoT) dan komunikasi nirkabel jarak jauh.

LoRa adalah teknik modulasi dan protokol komunikasi nirkabel yang dikembangkan oleh Semtech Corporation. Dirancang untuk memungkinkan komunikasi jarak jauh dengan konsumsi daya rendah, menjadikannya cocok untuk aplikasi IoT di mana perangkat perlu berkomunikasi dalam jarak yang jauh sambil menghemat daya baterai. LoRa menggunakan CSS sebagai teknik modulasi dasarnya.
 

 


LoRa menggunakan CSS dengan mentransmisikan sinyal chirp, di mana frekuensi sinyal yang ditransmisikan bervariasi linear dengan waktu. Modulasi chirp ini memungkinkan perangkat LoRa untuk mencapai komunikasi jarak jauh dengan menyebarkan sinyal di seluruh lebar pita. 

Seperti implementasi CSS lainnya, LoRa mendapat manfaat dari keandalan terhadap gangguan dan noise yang diberikan oleh chirp spread spectrum. Keandalan ini memungkinkan perangkat LoRa untuk mempertahankan kehandalan komunikasi bahkan dalam lingkungan yang menantang dengan tingkat gangguan yang tinggi. 

Dengan memanfaatkan CSS dan mentransmisikan pada tingkat data yang lebih rendah, perangkat LoRa dapat mencapai komunikasi jarak jauh sambil mengonsumsi daya minimal. Konsumsi daya rendah ini penting untuk aplikasi IoT di mana perangkat dapat beroperasi dengan daya baterai dalam jangka waktu yang panjang.




Nah dari hasil membaca sampai kelenger mengenai dasar decoding lora di : https://revspace.nl/DecodingLora, dan setelah berkutat beberapa hari dengan Gnu-Radio maka saya berkeyakinan dengan memanfaatkan dongle RTL-SDR murah yang saya punya dirumah, akan dapat dengan mudah men-decode sinyal lora. Kebetulan saya masih ada alat LoRaWan 915 Mhz berbasis semtech sx1276 yang dulu saya gunakan untuk belajar kirim-kiriman data ke Telkom Antares LoRaWan (baca disini).



Jadi saya mencoba membikin script "hello world" pada arduino untuk mengirimkan data text meggunakan lora 915 Mhz dan saya akan mengolahnya dengan bantuan GnuRadio dan library Gr-Lora_sdr yang baru saja di update pemilik githubnya : https://github.com/tapparelj/gr-lora_sdr . Library ini cukup straight forward dalam mengolah data loranya, dan sudah tersedia beberapa contoh yang disediakan ( klik disini )



Sedikit catatan yang perlu diperhatikan dalam mengolah data signalnya sebagai berikut :


1. Preamble / Header , apakah implicit atau explicit

2. CRC , digunakan atau tidaknya sangat mempengaruhi penerimaan data

3. SF (spreading factor) dan Bandwith , gunakan default standar library arduino lora.h SF= 7 BW=125khz

4. Payload, dalam beberapa kali percobaan awal, payload yang dapat di decode hanya 2 karakter didepan pesan. Jadi harus mengoprek library lagi.

5 Frequency shift, ini adalah temuan dari saya dan dikonfirmasi oleh beberapa opreker diluar sana. Mungkin ini rahasia dari semtech yang tidak dipublikasi di manual book.


Dan setelah beberapa hari mempelajari teori dan trial-error, saya berhasil merancang sistem "Lora MQTT Gateway", yang berfungsi untuk men-decode pesan LoRa lalu kemudian me-relaynya ke MQTT broker sehingga datanya dapat diteruskan ke dashbord IOT yang sering saya bahas pada tulisan saya sebelumnya. Dan saya lakukan ini dengan Dongle RTL-SDR Fitipower yang katanya murahan oleh tukang oprek diluar sana.





Share:

Minggu, 31 Maret 2024

[RTL-SDR]Tuning ke RRI Surabaya Digital DAB+

 



Tulisan ini mungkin saya anggap pembuktian kalau siaran RRI digital di kota Surabaya memang benar adanya (tulisan saya 3 tahun lalu bisa baca disini ). Sejak dulu RRI telah men "digital" kan dirinya melalui satelit telkom 1 di tahun 2000an dimana ada transponder yang disewa untuk siaran lokal RRI se nusantara, lalu kemudian kerancuan dimulai ketika istilah DIGITAL terbagi 2 kubu yaitu siaran lewat internet  versus siaran yang menggunakan modulasi digital namun tetap menggunakan spektrum radio dalam penyiarannya. Kerancuan ini juga terjadi di pertelevisian, dimana kita sudah merasakan bersama bagaimana susahnya migrasi di TV Digital. Bayangkan saja jika ada proyek migrasi penyiaran radio analog ke digital, yang penetrasinya makin tergerus "tiktok" serta medsos lainnya.

Namun RRI sebagai badan penyiaran yang harus tunduk dengan aturan penyiaran internasional seyogyanya memang harus mengikuti perkembangan jaman, walaupun pendengar digital lewat internet dan smartphone lebih banyak tentunya penetrasinya. Sebagai lanjutan kegatalan saya mencoba dongle rtl-sdr kw murah meriah, mari kita lihat gambar spektrum di frekuensi vhf seputaran 220Mhz.




Terdapat sinyal besar yang meghabiskan bandwith 1.536 Mhz, dan saya yakin ini signal digital karena sinyalnya begitu halus batas kanan dan kirinya layaknya benteng besar. Lalu yang saya lakukan untuk mendecode siaran digital ini adalah mengingat kembali kalau dulu saya pernah menulis tentang percobaan radio digital RRI di frekuensi VHF Kanal 12D (229.072 Mhz), dan  kemudian saya menginstal aplikasi DAB Player yang saya temukan di Internet. Namun sayangnya driver yang digunakan adalah driver bawaan USB DVBT stick, sehingga saya jadi gak bisa utak-atik radio lewat SDR lagi.




Ketika saya akhirnya beralih mengoprek SDR di OS linux/ubuntu disanalah saya menemukan aplikasi yang ber driver sama Osmocom sehingga langsung saja saya arahkan ke githubnya untuk mengunduh image linux nya disini : https://github.com/JvanKatwijk/qt-dab/releases. Ada 2 versi linux yang dapat dunduh, versi windows juga ada. Jadi silahkan gunakan yang sesuai dengan PC anda.  

Untuk dapat menjalankan nya di linux maka butuh merubah jenis aplikasinya jadi executable, gak perlu pake command line yang susah, gini aja sesuai gambar dibawah lewat klik kanan.



Setelah itu aplikasi sudah bisa di RUN dan pencet control. DI bagian bawah terdapat input dan bisa pilih DAB STICK dan bisa di scan single di frekuensi / kanal 12D di Jakarta maupun Surabaya. Kota lain silahkan full scan aja biar lebih bagus mungkin aja ada radio lainnya juga bersiaran di Digital DAB.



Tampilan siaran DAB+ di QT-DAB seperti ini : 



 

1 kanal DAB+ dapat menampung 8 buah siaran radio berformat Audio HE-AAC 128kbps (standar audio Mpeg player) sehingga total bitrate yg dipakai sekitar 1.136 Mbps . Sehingga kualitas suaranya sangatlah jernih ditelinga layaknya memutar CD atau MP3. Untuk membikin seru, kita tampilkan grafik-grafik yang secara teknis berguna ( untuk anda mahasiswa jurusan telekomunikasi).










Mau mencobanya ? Silahkan saja...Seru kok

Share:

Jumat, 29 Maret 2024

[RTL-SDR] Mendengarkan Radio FM Dengan Gnu Radio

 

 

Setelah berhasil menginstall Gnu Radio dan driver osmocom- osmosdr, bisa baca dulu disini, kita lanjutkan utak atik dongle rtl-sdr kelas jangkrik seharga 65 ribu perak dengan mempelajari bagaimana mengaksesnya melalui gnuradio companion yang berbasis GUI. Sebenarnya coding secara manual bisa dilakukan menggunakan python dan c++, namun saya rasa akan membutuhkan pemahaman yang sangat lama (bagi saya, tidak untuk kawan yang ahli nya ahli ulo python). 

Kita mulai dengan perintah : sudo gnuradio-companion  dan kemudian layar polos flows dari gnuradio companion muncul, tenang saja ikuti langkah urut berikut ini :


1. Beri nama proyek radio kamu agar terlihat keereeen




2. Tambahkan sumber radio sdr yang kita pakai, dalam hal ini dengan driver dari osmocom / osmo SDR. Menu sebelah paling kanan adalah drop down menu untuk memilih "block" yang akan ditambahkan. Jangan kaget kalau terlihat perangkatnya belum nyambung (Source - out(0): Port is not connected) abaikan saja.

 


 

3. Isikan parameter didalamnya, ikuti saja langkah sesuai gambar dibawah. Nilai-nilai yang dipakai berulang seperti sample rate atau frekuensi dapat di berikan sebagai block variabel, seperti pada pemrograman pada umumnya.



 

4. Selanjutnya akan semakin menjadi bahasa yang "hanya" dipahami oleh mahasiswa jurusan teknik telekomunikasi seperti istilah Filter dan FFT. Sebagai tukang solder ya kta hantam saja yang penting sinyalnya keluar seperti gambar flow berikut, dimana saya melakukan tuning radio FM di daerah Surabaya. Sambungkan node in dan out yang sesuai pada editor.


 

5. Tuh kan mumet ! Untuk bisa menampilkan gambar gelombangnya seperti gambar diatas, perlu dilakukan pengaturan FFT seperti gambar berikut :


6. Selanjutnya tambah membikin dahi mengkerut karena mulai muncul istilah-istilah pengolahan sinyal pada python seperti : FILTER, DECIMATION, DOWN SAMPLING, RE SAMPLING, dan tetek bengek lainnya. Intinya sinyal FM akan dipotong - diturunkan - dibagi, sehingga dapat diolah menjadi gelombang suara. Ini bukanlah makanan saya dan mungkin saat saya sudah paham maka saya akan tidak segan-segan untuk membaginya. Ini adalah salah satu alasan saya, DULU KETIKA KULIAH, untuk mengambil jurusan tukang solder, ketimbang tukang sinyal yang matematikanya harus jago!

 

7. Output dari audio sink pada linux lumayan bikin pusing setingannya, namun saya kasi clue untuk ubuntu ( berbasis driver alsa ) seperti pada gambar dibawah ini audio default saya pada ubuntu, namun jika ingin mngeluarkan suara di layar tv HDMI gunakan : hdmi:CARD=HDMI,DEV=0 , jika bingung coba cari list alsa device pada terminal dengan perintah :  aplay -L .

 

 


8. Diagram flow lengkapnya seperti ini, dapat juga diunduh mentahannya di sini.


 


SELAMAT MENCOBA !

Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (25) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (58) jam (7) jualan (12) kereta api (1) keyboard (1) keypad (3) kios pulsa (2) kit (6) komponen (17) komputer (3) komunikasi (1) kontrol (8) lain-lain (8) lcd (2) led (14) led matrix (6) line tracer (1) lm35 (1) lora (7) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (1) mikrokontroller (14) mikrotik (5) modbus (9) mqtt (3) ninmedia (5) ntp (1) paket belajar (19) palang pintu otomatis (1) parabola (88) pcb (2) power (1) praktek (2) project (33) proyek (1) python (7) radio (26) raspberry pi (4) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) transistor (2) troubleshoot (3) tulisan (93) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika