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

Senin, 15 April 2024

[RTL-SDR] Transmisi Data Pada Radio Amatir dengan APRS di 144.39 Mhz

 


Jika berbicara mengenai kirim-kiriman data melalui suara / AFSK maka saya sudah mengenalnya sejak jaman kuliah dimana protokol X.25 sempat menjadi praktek bersama teman-teman di kos2an mengirim data chatting via pemancar FM mini + soundcard PC. Gak terasa itu sudah 25 tahun yang lalu, dimana saat itu harga untuk menggunakan layanan internet dialup 56kbps lumayan membuat kantong jebol. Kini fast forward ke era 2020-an internet sudah menjadi cukup terjangkau dari sisi harga maupun coverage, namun apa yang terjadi ketika terjadi bencana dan internet menjadi tidak memancarkan sinyal ? Kembali lagi radio amatir "jadul" akan sangat membantu.

Diatas ini gambar satelit IO-86 milik lapan / orari dimana terdapat transponder / repeater baik untuk suara maupun data dalam bentuk APRS. Menurut OM yono yang youtubenya sangat rajin hunting burung orari di atas langit, satelit ini sangat berguna ketika gempa di palu 2018 dimana semua jaringan optik terputus sehingga jaringan GSM menjadi hilang. Dengan repeater ini maka sehari ada window 2-3 kali untuk dapat berkomunikasi jarak jauh dan rekan orari di palu dapat mengabarkan kondisi dan kebutuhan bantuan disana.

Lalu bagaimana dengan APRS di teresterial / darat ? Saya membaca blog dari website orari dimana di kota Surabaya sejak 2022 telah didirikan radio experimental untuk APRS. Blognya bisa dibaca disini : https://orari.or.id/aprs-pada-amatir-radio-bagian-pertama/

 



 

Dua lokasi di timur dan barat surabaya ini terdapat 2 radio yang memiliki call sign YH3NPX-(1/2) dan memancar di frekuensi 144.39 MHZ. Cara pembuatannya mudah saja dan saya agak kurang tertarik (kecuali ada yang mengajak hehehe). Bisa dibaca disini: https://orari.or.id/aprs-pada-amatir-radio-hardware-aprs-igate-untuk-aprs-mesh-radio-networkbagian-keempat/

 


 

Kemudian yang saya dapat lakukan hanya mengetestnya dengan beberapa software yang ada dan siap pakai seperti GQRX, dan saya berhasil melakukan decoding data pada suatu siang hari.



Komunikasi data hanya berupa GPS dan pesan ping antara ke dua perangkat radio APRS di kota Surabaya. Jika ingin melihat data-data yang lebih berguna baik station fix dan mobile, bisa lihat di website aprs.fi, contohnya seperti data cuaca di denpasar bali ini.


Walau radio amatir dibilang hanya mainan orang yang sudah berumur ( mainan para pemuda era 80-90an ) namun tetap harus dilestarikan dan diwariskan ke generasi muda / gen -z , karena kita tak akan tahu kapan bencana terjadi dan disaat itulah peran radio amatir baru akan sangat dirasakan.


Share:

Minggu, 14 April 2024

[RTL-SDR] Ramainya Frekuensi ISM 315Mhz dan 868Mhz - Untuk Sensor & Remote Wireless




Dua minggu bertepatan dengan waktu libur lebaran 2024, kebetulan tidak plesir kemana-mana, jadi saya isi dengan mengoprek dongle RTL-SDR yang beberapa tulisan sebelumnya telah menghasilkan ide yang cukup menarik. Namun ada beberapa "over thinking" di kepala dimana ada beberapa sinyal di grafik FFT sdr# menunjukkan gelombang yang cukup aneh. Jika hanya sebuah spike di frekuensi yang tetap saya yakin ini akibat peralatan elektronika disekitar rumah seperti STB digital yang khas mengeluarkan sinyal di 150Mhz. Saya mengelompokkan spektrum yang sering saya lihat dan dengarkan sebagai berikut :

  • 88-108 Mhz : Radio FM Broadcast
  • 142-150 Mhz : Radio Amatir Rapi/ Orari / Orang iseng
  • 150-170 Mhz : Polisi, Tni, Satpam, pelabuhan dan ekspedisi
  • 171-175 Mhz : Kereta Api
  • 228 Mhz : Radio Digital DAB RRI
  • 400 -490 Mhz : Amatir, Instansi pemkot, Damkar, Polisi, Usaha
  • 500-700 Mhz : TV Digital
  • 700-800 Mhz : GSM 5G 
  • 850 -870 Mhz : Polisi
  • 900 Mhz Mhz : GSM 4G

Lalu saya sering melihat spektrum yang sangat padat di frekuensi 310-320 Mhz, layar FFT saya selalu penuh sinyal statis dan naik turun padahal disana merupakan jalur frekuensi GRATIS alias ISM. Sampai saya teringat pada modul wireless untuk arduino yang saya pernah beli:

Frek ISM yg umum 315/433/868/915



Sebelumnya, kita ingat terlebih dahulu perangkat remote wireless ini modulasi digitalnya apa sih? Yang saya ingat adalah ASK : Amplitude Shift Keying,  OOK : On Off Keying, serta FSK : Frequency Shift Keying. Kalau PSK : Phase shift keying jarang digunakan untuk remote yang on off dan banyak digunakan untuk remote analog untuk mobil RC atau pesawat mainan jaman dulu.


Secara gampangnya, ASK/OOK menterjemahkan 1-0 dengan ada atau tidaknya sinyal di frekuensi tertentu, FSK 1-0 ditandai dengan 2 frekuensi kerja dimana Frekuensi A = 1, frekuensi B= 0. Sedangkan PSK lebih ke pendeteksi awal sinyal di frekuensi tertentu apakah 0 derajat atau 90 derajat dsb. Lalu pertanyaan saya ketika SDR yang saya oprek bisa men-decode-kan LoRa (baca disini) masak hanya On Off saja seharusnya mudah bukan? Ternyata saya benar, diluar sana para pengoprek RTL-SDR telah lama memiliki library atau plugin yang namanya RTL_433.


Tools atau library ini dapat dilihat pada githubnya di : https://github.com/marco402/rtl_433 dan pertamanya dibuat berbasis linux. Dari hasil pembelajaran saya, saya dapat membaca beberapa sensor didekat rumah saya melalui terminal ubuntu saya:


@ahocool-ubuntu:~$ rtl_433 -f 311M -f 311.5M -f 312M -f 312.5M -f 313M -f 313.5M -f 314M -f 314.5M -f 315M -f 315.5M -f 316M -f 316.5 -H 10 -s 2400000 -vrtl_433 version 23.11-105-g683e145f branch master at 202404131047 inputs file rtl_tcp RTL-SDR
-f: decimal fraction (0.500010) did you forget k, M, or G suffix?
[Protocols] Registered 223 out of 256 device decoding protocols [ 1-4 8 10-12 15-17 19-23 25-26 29-36 38-60 63 67-71 73-100 102-105 108-116 119-122 124-128 130-149 151-161 163-168 170-175 177-197 199 201-215 217-232 234-241 243-244 246-247 249-256 ]
[Input] The internals of input handling changed, read about and report problems on PR #1978
[SDR] Found 1 device(s)
[SDR] trying device 0: Realtek, RTL2838UHIDIR, SN:
Found Fitipower FC0012 tuner
[SDR] Using device 0: Realtek, RTL2838UHIDIR, SN: , "Generic RTL2832U OEM"
[SDR] Sample rate set to 2400000 S/s.
[Input] Bit detection level set to 0.0 (Auto).
[SDR] Tuner gain set to Auto.
[Input] Reading samples in async mode...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 15:56:34
Model : Markisol id : 0001
Control : Limit (0) Channel : 0 Zone : 1
Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 15:57:03
model : Regency-Remote channel : 15
command : fan_speed value : stop mic : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 15:57:35
model : Regency-Remote channel : 0
command : fan_speed value : speed 29 mic : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 15:57:45
Model : Interlogix-Security Device Type: motion
ID : 420420
Battery : 1 Switch1 State: CLOSED Switch2 State: OPEN
Switch3 State: CLOSED Switch4 State: CLOSED Switch5 State: CLOSED
Raw Message: 090000
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 16:00:57
model : Springfield-Soil SID : 41
Channel : 4 Battery : 1 Transmit : MANUAL
Temperature: -12.7 C Moisture : 150 % Button : 1
Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 23:04:45
model : Secplus-v1 id : 279
ID_0 : 0 ID_1 : 0 Switch-ID : 0
Pad-ID : 279 Pin : 4860* Fixed_Code: 2611508607
Rolling_Code: 3062059506
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 16:10:54
model : FS20 housecode : 44111111 address : 1124
command : off flags : (none) ext : 0
Integrity : PARITY





Wahh ternyata di spektrum 315Mhz rame juga ya disekitar saya, ada markisol yang entah perangkat apa, interlogix yang merupakan remote relay, regency-remote adalah kipas angin yang bisa di kendalikan jarak jauh. Lalu di frekuensi mana lagi ada kegiatan ? ternyata ada di 868Mhz


ahocool@ahocool-ubuntu:~$ rtl_433 -f 868M -f 869M -f 870M -f 871M -f 872M -f 873M -f 874M -H 10 -s 2400000 -v
rtl_433 version 23.11-105-g683e145f branch master at 202404131047 inputs file rtl_tcp RTL-SDR

New defaults active, use "-Y classic -s 250k" if you need the old defaults

[Protocols] Registered 223 out of 256 device decoding protocols [ 1-4 8 10-12 15-17 19-23 25-26 29-36 38-60 63 67-71 73-100 102-105 108-116 119-122 124-128 130-149 151-161 163-168 170-175 177-197 199 201-215 217-232 234-241 243-244 246-247 249-256 ]
[Input] The internals of input handling changed, read about and report problems on PR #1978
[SDR] Found 1 device(s)
[SDR] trying device 0: Realtek, RTL2838UHIDIR, SN:
Found Fitipower FC0012 tuner
[SDR] Using device 0: Realtek, RTL2838UHIDIR, SN: , "Generic RTL2832U OEM"
[SDR] Sample rate set to 2400000 S/s.
[Input] Bit detection level set to 0.0 (Auto).
[SDR] Tuner gain set to Auto.
[Input] Reading samples in async mode...
[SDR] Tuned to 868.000MHz.
[Baseband] low pass filter for 2400000 Hz at cutoff 480000 Hz, 2.1 us
[SDR] Tuned to 869.000MHz.
[SDR] Tuned to 870.000MHz.
[SDR] Tuned to 871.000MHz.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 23:08:09
Model : Markisol id : 0001
Control : Limit (0) Channel : 0 Zone : 1
Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 23:08:11
Model : Interlogix-Security Device Type: unknown
ID : 888a84
Battery : 0 Switch1 State: CLOSED Switch2 State: CLOSED
Switch3 State: CLOSED Switch4 State: CLOSED Switch5 State: CLOSED
Raw Message: 102200
[SDR] Tuned to 872.000MHz.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 23:08:20
model : Regency-Remote channel : 15
command : fan_speed value : speed 0 mic : CHECKSUM
[SDR] Tuned to 873.000MHz.
[SDR] Tuned to 874.000MHz.
[SDR] Tuned to 868.000MHz.
[SDR] Tuned to 869.000MHz.
[SDR] Tuned to 870.000MHz.
[SDR] Tuned to 871.000MHz.
[SDR] Tuned to 872.000MHz.
[SDR] Tuned to 873.000MHz.
[SDR] Tuned to 874.000MHz.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 23:09:45
model : Regency-Remote channel : 9
command : fan_speed value : speed 8 mic : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 23:09:50
Model : Markisol id : 0100
Control : Limit (0) Channel : 0 Zone : 1
Integrity : CHECKSUM
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 23:09:51
Model : Markisol id : 0000
Control : Limit (0) Channel : 1 Zone : 1
Integrity : CHECKSUM


 

Perhatikan hasil dari alat yang entah ini apa bentuknya, yang penting ada output suhu dan kelembaban.

 

[SDR] Tuned to 313.000MHz.
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
time : 2024-04-14 23:18:14
model : GT-WT02 ID Code : 0
Channel : 1 Battery : 1 Temperature: 102.4 C
Humidity : 32 % Button : 0 Integrity : CHECKSUM


 

 Kita googling bendanya ..



Wahh ternyata ada tetangga atau kantor di sebelah rumah yang memasang sensor IOT seperti gambar diatas.


time      : 2024-04-14 23:18:39
model : Efergy-e2CT Transmitter ID: 16384
Battery : 0 Current : 0.05 A Interval : 6s
Learning : NO Integrity : CHECKSUM


Kalau Efergy-e2CT alatnya seperti ini:




 

Untuk di windows, dapat menggunakan AIRSPY / SDR# dengan menginstall plugin di sini : https://github.com/marco402/plugin-Rtl433-for-SdrSharp, dan berikut beberapa capture menarik dari kegatelan saya scanning perangkat wireless remote & sensor di dekat rumah saya.

 

 







 

Jadi di frekuensi 311-317 Mhz dan 868-872 Mhz terdapat spektrum frekuensi bebas yang sangat banyak digunakan untuk kendali jarak jauh atau pengiriman data digital secara ASK atau FSK. Dari perangkat relay dan sensor curah hujan pun dapat di decode oleh library rtl_433 ini. Lain kali saya akan melakukan pembacaan data dari perangkat wireless berbasis arduino yang akan saya rancang sendiri, bahkan bisa meng-kloning suatu alat berbasis wireles. Wahh pasti seru ini....


Share:

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:

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 (24) 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