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

Tampilkan postingan dengan label radio. Tampilkan semua postingan
Tampilkan postingan dengan label radio. Tampilkan semua postingan

Kamis, 09 Mei 2024

[AI] Gateway IOT Melalui Radio - ESP8266 - HT - RTL/SDR - PYTHON - MQTT

 


Saya sampai kebingungan dibuatnya, sebaiknya saya meng-kategori-kan tulisan kali ini dibagian mana ya? Nyenggol banyak topik sih.. Makanya judulnya jadi sedikit kepanjangan. 

Gini...pada intinya kebahagiaan saya tak terkira ketika berhasil mengirimkan data sensor suhu LM35 yang saya baca dengan menggunakan ESP 8266 dan kemudian saya kirimkan menggunakan Walkie Talkie. Dibagian Penerima akan saya terjemahkan data audio tadi dengan menggunakan layanan google speech dan sedikit bantuan ChatGpt untuk meng-koding python, VOILA... Jadi deh seperti gambar diatas.


- PYTHON SPEECH RECOGNITION

Bagian yang paling 'sakti' ini menggunakan python sebagai penterjemah suara manusia menjadi text, layaknya subtitle otomatis pada youtube. Dengan layanan google yang masih 'free' ini dan berbagai bahasa di dunia dapat dilayani termasuk bahasa Indonesia. Salah satu contoh coding sederhana untuk menterjemahkan suara microphone ke teks, saya bagikan seperti berikut ini :


import speech_recognition as sr
import threading
import sys
import keyboard

# Flag to indicate if escape key is pressed
escape_pressed = False

def check_escape():
    global escape_pressed
    print("Press Escape key to quit recognition...")
    keyboard.wait('esc')
    escape_pressed = True

def recognize_speech():
    global escape_pressed
    # Initialize recognizer
    recognizer = sr.Recognizer()

    # Start a separate thread to check for Escape key press
    escape_thread = threading.Thread(target=check_escape)
    escape_thread.start()

    while not escape_pressed:
        # Capture microphone input
        with sr.Microphone() as source:
            print("Listening for speech...")
            recognizer.adjust_for_ambient_noise(source)  # Adjust for ambient noise
            audio = recognizer.listen(source)

        try:
            print("Recognizing...")
            # Recognize speech using Google Speech Recognition bahasa Indonesia 
            text = recognizer.recognize_google(audio, language='id-ID')
            print("You said:", text)
        except sr.UnknownValueError:
            print("Sorry, I couldn't understand what you said.")
        except sr.RequestError as e:
            print("Could not request results from Google Speech Recognition service; {0}".format(e))

    print("Exiting...")
    sys.exit()

if __name__ == "__main__":
    recognize_speech()
Gunakan mic pada laptop atau PC kalian untuk mencobanya dan IT'S MAGIC ! Jangan lupa layanan ini memerlukan koneksi internet ke server speech recognition dari google.


- ESP8266 SENSOR READER & PTT SENDER




Untuk pembahasan di bagian ini anda dapat membaca tulisan saya sebelumnya disini : 




- RTL SDR dan VB AUDIO



Kalau ini sih beberapa tulisan kebelakang terutama april 2024, banyak sekali membahas tentang RTL-SDR dengan dongle usb murah meriah (tidak menyesal saya membelinya). Dengan merouting audionya melalui VB AUDIO menjadikan output suara SDR# menjadi  input MIC, maka software python - speech recognition dapat menterjemahkan audio menjadi teks yang berguna. 

Jika tidak menggunakan rtl-sdr bagaimana? Ya gunakan HT penerima dan dekatkan mic pc ke speaker HT atau ambil speaker out dari jack female yg tersedia ke line input PC.


- MQTT dan IOT MQTT PANEL


Barang ini sudah sampai bosen mungkin ya dibahas disini, kalau gak keberatan masuk aja ke tulisan pertama saya mengenai protokol IOT paling laris yaitu MQTT ( baca disini ). Jadi terasa mudah sekali jika terbiasa dan mengenal luar dalam protokol ini, apalagi ketika dimudahkan dengan library python Paho-mqtt (baca disini), sehingga dengan bantuan broker gratis dari Hivemq maka data suhu dapat dikirimkan ke smartphone menggunakan apk android : IOT MQTT PANEL. Jadi deh gateway IOT nya dan dapat dimanfaatkan untuk monitoring berbagai macam data dari lokasi yang lumayan jauh selama pesawat radio HT dapat menjangkaunya.




- KALAU SUARA HT ORANG LAIN IKUTAN MASUK DAN ADA YANG NGUPING ?


Untuk hal ini terdapat beberapa norma atau etika pada komunitas radio amatir seluruh dunia, dimana yang dikirimkan perangkat radio amatir adalah suara/data yang "clear" tanpa enkripsi. Wong jalur frekuensi bersama kok sembunyi-sembunyi? Jadi bisa juga data nya di olah menjadi digital seperti RATTLEGRAM di video saya dibawah ini, namun bagaimana dengan monitoring yang dilakukan oleh semisal satpam yang hanya berbekal Hotel Tango dengan Buntut Tikus ?






- JARINGAN GSM DAN WIFI SUDAH BANYAK, NGAPAIN PAKE RADIO HT LAGI ?






Kalau ditanya seperti ini, sederhana saja kok,  kenapa juga radio HT / ORARI / RAPI/ SATPAM/ POLISI dll masih banyak instansi yang menggunakannya ? Dibalik seperti itu saja pertanyaannya maka akan ada kesan 'unda-undi'  (bahasa jawa : untung-rugi) mengenai pengiriman data via radio HT. Bagaimana jika ingin mengetahui debit air di bendungan yang berada jauh di hilir sungai dan blankspot sinyal gsm ? Radio HT solusinya broo.. LORA ? coba deh loranya dibawa ke hutan pasti 100 meter penerimaan sudah megap-megap terserap pepohonan. Starlink ?  Hanya kelas juragan tambang kali yang mampu..


- HASIL dan KESIMPULAN

Video berikut ini menjawab semuanya dan jika berminat untuk mengembangkannya silahkan kontak saya di 08155737755 .






- DISCLAIMER :

"Penggunaan frekuensi radio amatir merupakan domain dari #Kemkominfo, #ORARI dan #RAPI. Jangan sekali-kali menggunakan frekuensi amatir untuk tujuan lain sebagai #Amatir Radio yang tunduk pada aturan-aturan baku yang mengikat. Jika perangkat kamu akan memancarkan pembacaan data, silahkan berkomunikasi lanjut dengan pengelola lokal orari setempat agar tidak terjadi masalah dikemudian hari. Tulisan ini hanya sebagai pembuktian teknologi radio untuk pelaporan data #IOT jaman sekarang"

Share:

Rabu, 08 Mei 2024

[AI] Kirim Data Suhu LM35 Lewat Radio Amatir / HT


 
Disclaimer : " Penggunaan frekuensi radio amatir merupakan domain dari Kemkominfo, ORARI dan RAPI. Jangan sekali-kali menggunakan frekuensi amatir untuk tujuan lain daripada Amatir Radio yang tunduk pada aturan-aturan baku yang mengikat. Jika perangkat kamu akan memancarkan pembacaan data, silahkan berkomunikasi lanjut dengan pengelola lokal orari setempat agar tidak terjadi masalah dikemudian hari. Tulisan ini hanya sebagai pembuktian teknologi radio untuk pelaporan data jaman sekarang"

Suatu hari ketika saya scanning frekuensi maritim (150Mhz-170Mhz) menggunakan RTL-SDR yang beberapa bulan ini sedang saya gandrungi, terdengar sayup-sayup suara operator yang membacakan laporan cuaca di wilayah syahbandar pelabuhan tanjung perak Surabaya. Suaranya begitu "kurang bersemangat", mungkin karena dia sadar data cuaca untuk kapal shiping line, sudah lengkap dan mudah didapatkan melalui internet atau radar mereka, jadi operator ini hanya menjalankan tugas rutinitas yang harus dia lakukan sesuai perintah instansi. 

Tahukah kamu, di belahan bumi Amerika utara terdapat stasiun radio amateur WWV yang bekerja pada 2,5Mhz, 5Mhz, 10 Mhz, 15 Mhz dan 20Mhz, dimana secara berkala akan memberikan informasi waktu yang akurat berdasarkan jam atom. Yang berbicara di radio adalah suara mesin/komputer. Sempat juga saya melihat youtuber asal kanada yg scanning radio di dekat pelabuhan, laporan cuaca nya dibacakan juga oleh komputer, seperti halnya suara google map ketika kita berkendara dan menggunakan panduan arah.

Lalu teringat lah saya pada suatu kejadian letusan gunung merapi dan gunung agung beberapa tahun yg lalu, dimana laporan kegempaan seismik ditautkan pada sebuah frekuensi radio amatir VHF dengan tone yang berayun jika ada guncangan / letusan di puncak. Dan di wilayah rural seperti pegunungan, radio amatir / HT menjadi sarana komunikasi handalan. Jadi penggunaan radio HT untuk pengiriman data serta warning lumayan masih diperlukan.

Lalu bagaiman sih caranya menggantikan operator manusia menjadi suara text to speech (TTS) layaknya suara google ? Ayo saya share caranya... Pertama-tama tentunya kamu butuh memiliki sepasang radio HT / Walkie Talkie untuk melakukan experimen ini. Dan saya pilihkan merek baofeng yang sedang laris manis digunakan satpam dimana-mana.



Saya akan menggunakan mikrocontroller ESP8266 - Wemos yang berfungsi sebagai :

  1. Pembaca Sensor Suhu LM35
  2. Penerjemah pembacaan suhu menjadi urutan file mp3
  3. Pemutar audio mp3
  4. Pemutus - sambung transmit PTT (Push To Talk) sesuai kebutuhan


Dengan komponen beserta rangkaian secara lengkap seperti ini :



Lalu pertanyaannya apakah ESP8266 dapat memutar file audio langsung tanpa memerlukan player lainnya semacan DF player ? Ooooo itu sudah lama saya tau, dengan memanfaatkan I2S dari generasi ESP8266 atau ESP32 maka memutar file audio sangatlah mudah. Silahkan meluncur ke : https://github.com/earlephilhower/ESP8266Audio untuk belajar bagaimana cara memutar beberapa jenis file audio secara langsung, tanpa atau dengan DAC.

Untuk melakukan generate audio robot, maka gunakan layanan TTS (text to speech) yang versi bahasa Indonesia secara gratis dapat di googling seperti BOTIKA. Kalau punya teman atau saudara yg suaranya renyah dapat juga direkam beberapa file pembacaan angka "satu", "dua", "sebelas" dan lainnya. Seperti contoh yang saya buat dan letakkan di folder /data dibawah directory project arduino saya.



Untuk melakukan upload file suara mp3 ke ESP8266 maka diperlukan library SPIFFS yang memungkinkan ESP memiliki penyimpanan file tersendiri. Langkah pengaturan dan cara upload nya bisa dibaca disini : https://randomnerdtutorials.com/install-esp8266-filesystem-uploader-arduino-ide/.


Sedangkan script lengkap yang bisa kalian coba, saya bagikan secara FREE alias GRATEEESS 


/* Pengubah pembacaan Suhu LM35 ke suara dan dikirim via HT Baofeng  
   www.aisi555.com  08155737755 nyoman yudi kurniawan 2024
   
   Pada IDE gunakan mode clock ESP8266 160MHz, serta mode SPIFFS sebesar 1MB atau lebih
   Pelajari cara "Tools->ESP8266/ESP32 Sketch Data Upload" untuk menyimpan MP3 di SPIFFS
   Baca disini : https://randomnerdtutorials.com/install-esp8266-filesystem-uploader-arduino-ide/
   File mp3 simpan di folder /data pada direktori sketch arduino, dengan nama file berikut
   rekam sendiri di HP/PC atau gunakan layanan text to speech untuk membuat tiap file

   0.mp3  
   1.mp3
   2.mp3
   3.mp3
   4.mp3
   5.mp3
   6.mp3
   7.mp3
   8.mp3
   9.mp3
   10.mp3 ==> sepuluh
   11.mp3 ==> sebelas
   1_1.mp3 ==> belas
   p.mp3  ==> puluh
   d.mp3  ==> derajat
   k.mp3  ==> koma
   s.mp3  ==> ucapan pertama /salam
  
  
  Selanjutnya bisa baca di www.aisi555.com
  Gunakan secara gratis dan bertanggung jawab
  semua aturan penggunaan frekuensi radio amatir mengacu pada ORARI/RAPI/KEMKOMINFO/BALMON
*/

#include <Arduino.h>
#include <ESP8266WiFi.h>

#include "AudioFileSourceSPIFFS.h"
#include "AudioGeneratorMP3.h"
#include "AudioOutputI2SNoDAC.h"

//sesuaikan pin PTT 
#define ptt 5
#define lm35 A0

int16_t suhu = 337;
uint8_t proses = 0;


AudioGeneratorMP3 *mp3;
AudioFileSourceSPIFFS *file;
AudioOutputI2SNoDAC *out;



void setup()
{
  pinMode(ptt, OUTPUT);
  digitalWrite(ptt, LOW);
  WiFi.mode(WIFI_OFF); 
  Serial.begin(115200);
  delay(1000);
  SPIFFS.begin();
  Serial.println("======= www.aisi555.com ========");
  Serial.println("  kirim Suhu LM 35 ke HT yukkkkk");
  Serial.println("================================");
  
  audioLogger = &Serial;

  //baca suhu LM35 di A0, Vin = 3.3 volt

    int16_t analogValue = analogRead(lm35);
    
    suhu = analogValue  * (3300/1024);
    Serial.println(analogValue);
    Serial.print("Suhu : ");
    Serial.println(suhu);
  

  //awal mulai pertama
  proses=1;
  //kirim PTT dan kirim suara ke HT
  digitalWrite(ptt, HIGH);
  delay(500);
  
  file = new AudioFileSourceSPIFFS("/s.mp3");
  out = new AudioOutputI2SNoDAC();  
  mp3 = new AudioGeneratorMP3();
  mp3->begin(file, out);
}


void tts(int16_t angka) //disini proses memilih angka jadi file mp3
{   
    uint8_t pilih;
    if (proses == 2) {
       pilih = angka/100;

      if ( angka <200 && angka >=120 ) pilih = (angka /10) % 10;
      else if (angka <120 && angka >=110) pilih =11; 
      else if (angka <110 && angka >=100) pilih =10;
      else if (angka <100 && angka >=0) pilih = angka /10;
    
    }
    else if (proses == 4){  
      pilih = (angka /10) % 10;
      if (pilih == 0) return;
      if (angka <200 && angka >=0) return;  
    
    }
    else if (proses == 6) pilih = angka % 10;

   switch (pilih) {
     case 0 : file = new AudioFileSourceSPIFFS("/0.mp3");
        break;
     case 1 : file = new AudioFileSourceSPIFFS("/1.mp3");
        break;
     case 2 : file = new AudioFileSourceSPIFFS("/2.mp3");
        break;
     case 3 : file = new AudioFileSourceSPIFFS("/3.mp3");
        break;   
     case 4 : file = new AudioFileSourceSPIFFS("/4.mp3");
        break;
     case 5 : file = new AudioFileSourceSPIFFS("/5.mp3");
        break;
     case 6 : file = new AudioFileSourceSPIFFS("/6.mp3");
        break;
     case 7 : file = new AudioFileSourceSPIFFS("/7.mp3");
        break;
     case 8 : file = new AudioFileSourceSPIFFS("/8.mp3");
        break;
     case 9 : file = new AudioFileSourceSPIFFS("/9.mp3");
        break; 
     case 10 : file = new AudioFileSourceSPIFFS("/10.mp3");
        break;        
     case 11 : file = new AudioFileSourceSPIFFS("/11.mp3");
        break;
   }

  out = new AudioOutputI2SNoDAC();  
  mp3 = new AudioGeneratorMP3();
  mp3->begin(file, out);
   
}




void loop()
{
  if (mp3->isRunning()) {
    if (!mp3->loop()) mp3->stop();
  } else {
    
    if(proses == 7){
      
    proses =1;
    Serial.printf("MP3 play selesai\n");
    //matikan PTT
    digitalWrite(ptt, LOW);


    
    delay(5000);
    //ulang reset ESP agar fresh terus 
    ESP.reset();
 
    }

   else if ( proses == 1){ //puluhan
    proses=2;
    tts(suhu);
   }
   else if ( proses == 2){ //puluh, belas atau lewat
    proses=3;
     
     if( suhu <200 && suhu >=120 ) file = new AudioFileSourceSPIFFS("/1_1.mp3");
     else if( suhu <120 && suhu >=0 ) file = new AudioFileSourceSPIFFS(NULL);
     else file = new AudioFileSourceSPIFFS("/p.mp3");
    
     out = new AudioOutputI2SNoDAC();  
     mp3 = new AudioGeneratorMP3();
     mp3->begin(file, out);
   }   
   else if ( proses == 3){ //satuan
    proses=4;
    tts(suhu);
   }    
   else if ( proses == 4){ // koma
     proses=5;
     file = new AudioFileSourceSPIFFS("/k.mp3"); 
     out = new AudioOutputI2SNoDAC();  
     mp3 = new AudioGeneratorMP3();
     mp3->begin(file, out);
   }  
   else if ( proses == 5){ //desimal
    proses=6;
    tts(suhu);
   } 

   else if ( proses == 6){ //derajat
     proses=7;
     file = new AudioFileSourceSPIFFS("/d.mp3");
     out = new AudioOutputI2SNoDAC();  
     mp3 = new AudioGeneratorMP3();
     mp3->begin(file, out);
   }
     
  }
}

Dan jika kalian sukses dan beruntung (karena setiap kali compile hasilnya bisa error mulu, jadi kesabaran adalah kunci), akan kira-kira seperti video dibawah ini :








Share:

Rabu, 24 April 2024

[RTL-SDR] AIS di frekuensi 161.975 Mhz : Kukira noise ternyata data kapal laut

 


Tulisan kali ini lebih 'push the boundary' dari perangkat dongle usb - epro fitipower yang kebanyakan untuk monitoring cuap-cuap para briker menolak tua. Setelah melihat beberapa peta aprs.fi dan iri melihat pergerakan kapal laut di luar negeri sana banyak yang mengirimkan data lokasi juga (baca disini dulu), saya jadi berpikir apakah di kapal lautnya ada perangkat aprs nya ? Ohhh ternyata tidak, tiap kapal laut resmi yang mempunyai ijin berlayar diharuskan memasang transponder/beacon bernama AIS, yang menurut salah satu laman di aprs.fi (baca disini), memancar di frekuensi 161.975 Mhz dan 162.025 Mhz. Dan teringatlah suatu saat ketika saya (dulu) melihat ada denyut yg khas di frekuensi ini



  

Mungkin gambar capture SDR# saya ini kurang kontrastnya jadi waterfalnya terlihat hanya seperti noise, namun dari beberapa youtube menjelaskan kalau lokasi kamu dekat pelabuhan akan ada sinyal beacon berformat data GMSK 9600bps yang dipancarkan radius 75km. Kebetulan saja saya sedang berdomisili dilokasi dekat pelabuhan tanjung perak Surabaya. Apakah 'noise' berdenyut yang saya terima dengan antena dipole copotan yagi VHF ini dapat menerima dan mendecode data AIS, mari kita bedah langkah2nya.


1. Gunakan VB audio virtual cable , untuk melakukan routing jalur audio ke software lain, biasanya menuju ke software decoder audio ke data. Jadi dengan software ini maka tidak pusing menggunakan kabel loop dari line out ke line in. Download gratis kok, gunakan googling aja untuk mencari lokasi websitenya.



Perlu penyesuaian output dan input dari ke-2 software ini, di sisi penghasil audio semisal sdr# di ubah routing output audio ke VB cable input  sedangkan pada software decodernya dibagian audio input ubah juga ke VB cable output.


2. Software decoder yang digunakan adalah Shipplotter (shareware trial 21 hari) dan Aismon yang gratis namun data teks AIVDM nya tidak di decode kan (butuh decoding data manual ke website). SDR# Airspy saya sudah saya routing audionya ke VB audio dan saya hilangkan filter audionya ( WAJIB !). 




Tuning dilakukan pergeseran sesuai gambar pulse sinyal pada waterfall dimana pada setup perangkat saya bergeser ke 161.863.600 (maklum dongle murmer jadi gesernya gak tentu). Jika dongle kamu memakai oscilator yang paten maka tinggal menghitung pergeserannya dan input pada bagian error ppm sehingga tuningnya pas di frekuensi AIS 161.975 Mhz / 162.025 Mhz. Jangan gunakan squelch dan atur sampai audionya tedeteksi sekitar 50 %- 80% dari level max yang tersedia.


3. Output dari shipplotter lumayan banyak dari peta sampai radar dan semuanya dilakukan di database internal, namun sebagai orang awam di dunia perhubungan laut maka hal ini membuat saya sedikit "cupu". Yah gpp yang penting ini hasil capture saya.






4. AISMon mengasilkan output yang lebih sederhana namun mudah dimengerti, dimana keluaran datanya bisa lewat serial com, text file maupun text via UDP, jadi bisa di decode lebih lanjut yang akan saya bahas belakangan. Paling gampang ketika sinyal AIS mulai diterima dan ada pesan sukses di decode adalah membuka AISmon.log melalui notepad.



 

Selanjutnya textnya yang berformat AIVDM dapat di decode di berbagai software yang tersedia online atau melalui python (nanti saya bahas dikemudian hari). Contoh decoding teks nya seperti ini.





Dari gambar capture hasil decoding diatas, kebanyakan pesan yang dikirimkan AIS message 1,2,3 yang merupakan lokasi dari pergerakan kapal namun jarang yang mencantumkan database nama kapal secara langsung, namun menggunakan MMSI ID dari kapal. Pesan yang lebih lengkap ada di message type 5 sehingga kalau di search di website tracking kapal laut juga bisa ketemu kok.




Website vesselfinder ini menurut yang saya baca membaca sinyal AIS yang ditangkap oleh beberapa satelit AIS yang terbang di luar angkasa seperti kepler, jaxa dan yang membanggakan telkomsat milik telkom juga mempunyai layanan AIS monitoring via satellite https://ais.telkomsat.co.id.







Share:

Senin, 22 April 2024

[RTL-SDR] APRS Tracking Peta di Kota Surabaya - ORARI IGATE Project

 


Selama seminggu setelah tulisan pertama saya mengenai APRS, saya pergunakan untuk mempelajari lebih mendalam mengenai  pengiriman data text melalui suara, sehingga beberapa istilah lama masa saya kuliah dulu ketemu lagi (alias nostalgia). Istilah AFSK bagi pengguna komputer PC tahun 80- 90an merupakan hal yang tidak asing lagi, dimana sebelum media penyimpanan data berupa disket mulai umum dipakai, penyimpaan data yang dipakai pada komputer era Apple IIE. macintosh dan sejenis, adalah KASET PITA. Media penyimpanan yg lazim untuk nyetel musik ini ternyata dulu umum digunakan menyimpan bit digital 1-0 menggunakan teknik AFSK/ Bell 202. 

Tidak akan membahas lebih jauh format modulasi data jadul ini, asal prinsipnya saja dipahami dimana untuk bit 1 diwakili oleh tone pada 1200 hz (mark) dan 0 diwakili oleh tone di 2200 hz (space). media penyimpanan ini stabil di kecepatan data (baud) 1200bps dan akan menghasilkan error rate yang lebih untuk data rate diatasnya. Modulasi ini umum digunakan pada modem telephony dan kemudian diadaptasi oleh radio amatir dengan APRS ( Automatic Packet Reporting Sistem) . Dapat di analogikan seperti chat via whatsapp jaman kini, namun karena akan menimbulkan kebingungan (frekuensi banyak dan jika yg chat ngawur), maka aprs memiliki frekuensi  bersama 144.39 dan menggunakan aturan perpesanan dengan format yang bisa dibaca disini : http://www.aprs.net/vm/DOS/PROTOCOL.HTM

Aturan yang rada njlimet bagi kita sekarang, namun jaman dulu dimana pengguna radio amatir cukup banyak mungkin wajar juga dibegitukan. Sampai di era 90an saya sempat bermain packet radio berbasis IP dengan protokol AX.25 dimana lebih njlimet lagi aturan merubah text ke AFSK lalu ke format TCP/IP. Daripada mumet yuk kita lihat hasil 'temuan' kegatelan saya seminggu ini .


1. DIGIPEATER IGATE ORARI APRS di Surabaya ada di YH3NPX-1 dimana karena letaknya tinggi bisa mencapai jarak yang jauhhhh. Sampai suatu saat saya mendapatkan ping message di repeate dari BROMO digipeater YH3NPX-4. Sedangkan Digipeater YH3NPX-2 di lidah wetan tidak memiliki Igate dan mengirim data repeat ke YH3NPX-1 untuk kirim lagi ke Internet.




Dengan jangkauan repeaternya yang luar biasa ini bisa merepeat data APRS Mobile dari salah satu pengguna APRS mobile yg sedang berkendara ke pandaan. 




2. Software "DX ing" alias nguping only yang saya gunakan ada yang berbasis linux yaitu Direwolf dan multimon-ng. Sedangkan untuk Windows bisa menggunakan SDR# Airspy yang kemudian audionya di route ke software soundmodem atau UISS. Karena Digipeater IGATE di kenjeran Surabaya berbasis Direwolf, maka pesan yang diterima lebih lengkap ditampilkan pada direwolf (linux atau windows). Namun ingat ini berbasis command line /prompt jadi akan kesusahan bagi yang jarang "ngetik" di CMD.



3. Tracking mobile ke Peta Aprs.fi adalah kegunaan utama dari IGATE di surabaya, disamping sebagai digipeater untuk kirim-kiriman pesan antar pengguna radio APRS. Namun di kota besar yang jangkauan seluler dan wi-fi merata, sehingga terasa sangat naif jika melewatkan kirim2an pesan lewat whatsapp yang lebih praktis tentunya. Sehingga kebanyakan yang saya lihat kegunaan APRS adalah untuk tracking kendaraan menggunakan Radio RIG-APRS ber GPS (bahkan ada yg punya wifi dan bluetooth), yang kini sudah terjangkau harganya atau bahkan bisa rakit sendiri berbasis ESP32 / Raspi . Jadi saya sempat melihat perjalanan dari pengguna mobile YBRDW-12 (rakitan indy-track) dan  YB3TSJ-8  (Yaesu FTM-300D) yang rajin keliling kota dan trackingnya dapat dilihat lewat web aprs.fi.




Terlihat menarik juga ya tracking lewat radio terutama pada lokasi yang internet lewat seluler nya lumayan bapuk dan banyak blankspotnya. Alternatif data teks lewat radio ini sangat berguna juga pada skenario apocalyptics alias KIAMAT !  amit amit cabang bayi lanang wedok....


Berkut ini capture video saya pada suatu sore yang sangat gerah di surabaya...




Perhatikan ramainya tracking kapal laut di helsinki menggunakan APRS, dan bandingkan sepinya penggunaan APRS untuk tracking di Surabaya!




Share:

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:

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 (14) antares (11) arduino (28) 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 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (76) 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 (11) lorawan (2) MATV (1) memory (1) metal detector (4) microcontroller (70) micropython (6) mikrokontroler (2) 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 (8) radio (28) raspberry pi (9) 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) telkomiot (5) transistor (2) troubleshoot (3) tulisan (94) tutorial (108) tv digital (6) tvri (2) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika