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, 28 Maret 2024

[RTL-SDR] Teknologi Radio Analog Jadul, Dapat Apa Sih di 2024 ?

 



Jadul amat di tahun 2024 main radio analog ? Hellukk jangan gitu dong, semua yang telah menjadi digital (saat tulisan ini disusun), juga berasal dari analog lhoo... Namun karena memang kebutuhan akan frekuensi sebagai sumber daya alam terbatas, maka dengan hadirnya ilmu digital, menjadikan pemanfaatan spektrumnya menjadi lebih efieien. GSM 5G yang kalian pakai sekarang juga diawali oleh teknologi selular AMPS di tahun 90an yang kemudian dengan kebutuhan yang meningkat dapat dilayani oleh sistem digital GSM dengan lebih bagus. Kita akan bahas secara pelan dilain kesempatan, dan kali ini saya akan berbagi dapat apa sih pada frekuensi radio di wilayah saya  ?

Namun pertama kita lihat dulu pembagian spektrum frekuensi radio yang dibagi oleh ITU dan dilokalkan di Indonesia oleh Kominfo.  



Wikipedia menulis seperti ini :

  • Tremendously low frequency (TLF): < 3 Hz: >100.000 km: Natural Electromagnetic Noise
  • Extremely Low Frequency (ELF): 3 – 30 Hz: 10.000 – 100.000 km: Submarines
  • Super Low Frequency (SLF): 30 – 300 Hz: 1.000 – 10.000 km: Submarines
  • Ultra Low Frequency (ULF): 300 – 3.000 Hz: 100 – 1.000 km: Submarines, mines
  • Very Low Frequency (VLF): 3 – 30 kHz: 10 – 100 km: Navigation, time signal, Submarines, heart rate monitor
  • Low Frequency (LF): 30–300 kHz: 1 – 10 km: Navigation, time signal, Radio AM (long wave), RFID
  • Middle Frequency (MF): 300 – 3.000 KHz: 100 – 1.000 m: Radio AM (medium wave): (Banyak digunakan dalam radio siaran swasta niaga)
  • High Frequency (HF): 3 – 30 MHz: 10 – 100 m: Short wave Broadcast, RFID, radar, Marine and Mobile radio telephony: (Banyak dipakai untuk hubungan ke tempat yang jauh/ terpencil.)
  • Very High Frequency (VHF): 30 – 300 MHz:1 – 10 m: Radio FM, Television, Mobile Communication, Weather Radio: (Banyak digunakan untuk kepentingan hubungan jarak dekat)
  • Ultra High Frequency (UHF): 300 – 3.000 MHz: 10 – 100 cm: Television, Microwave device / communications, mobile phones, wireless LAN, Bluetooth, GPS, FRS/GMRS: (Banyak digunakan untuk kepentingan hubungan jarak dekat)
  • Super High Frequency (SHF): 3 – 30 GHzv: 1 – 10 cm Microwave device / communications, wireless LAN, radars, Satellites, DBS: (Banyak digunakan untuk tererstrial dan satelit )
  • Extremely High Frequency (EHF): 30 – 300 GHz: 1 – 10 mm High Frequency Microwave, Radio relay, Microwave remote sensing: (Banyak digunakan untuk tererstrial dan satelit )
  • Tremendously High Frequency (THF): 300 – 3.000 GHz: 0.1 – 1 mm: Terahertz Imagin, Molecular dynamics, spectroscopy, computing/communications, sub-mm remote sensing.


Sedangkan untuk radio amatir milik Orari maupun Rapi memiliki band plan seperti berikut :


klik / download gambar untuk lebih jelas


Lalu apakah yang bisa saya lakukan untuk mengetes apakah dongle usb RTL-SDR yang katanya kw ini bekerja atau tidak ? Mari kita tuning ke stasiun radio FM terdekat dan jangan lupa sambungkan antena seperti yang sudah saya bahas disini.




Untuk modulasi paling umum ada 2 yaitu AM dan FM, dimana AM biasanya digunakan oleh perangkat radio dibawah 80Mhz dan juga yang masih menggunakan nya adalah airband / komunikasi bandara dan pesawat di 108 - 137Mhz. Selebihnya komunikasi lebih bagus menggunakan FM termasuk radio amatir analog maupun digital. Saya beri contoh hasil capture radio AM broadacst dan amatir di rentang frekuensi medium wave  dari penerima SDR Airspy di australia, yang terhubung ke network SDR#.




Sedangkan yang menarik kalau di amerika ada banyak radio broadcast yang masih mengudara di jalur short wave seperti Indonesia tahun 80-90an (jaman saya remaja). Dan di amerika sana ada stasiun radio timer / penanda waktu WWV yang masih mengudara di frekuensi 2, 2.5, 5, 10 dan 15 MHz. Rekamannya seperti dibawah ini.




Sedangkan di Surabaya sini penggunaan frekuensi masih cukup banyak oleh instansi pemerintah, tni, kereta api, satpam dan lain sebagainya. Kebetulan saya tinggal dekat pelabuhan tanjung perak maka saya sering mendengar percakapan antara tower pelindo dengan kapal yang mau sandar di dermaga, atau kantor ekspedisi kontainer. Kode-kode yang mereka gunakan masih membuat saya tertawa namun masih cukup seru untuk disimak.




Untuk frekuensi lainnya yang pernah saya scan adalah percakapan kereta api yang akan sampai (menggunakan radio lokomotif) ke PPKA di pasar turi.


Jaman sekarang telah hadir juga perangkat radio amatir digital, sehingga butuh encoder khusus untuk mendengarkannya.



Sebenernya masih banyk lagi hasil scanning saya, dari mulai tukang sapu jalan (DLH SURABAYA), kepolisian, markas TNI AL dan yang kadang menjengkelkan ada pengguna radio amatir yang kadang menyetel lagu sambil karakoean di frekuensi amatir. Gak ada kerjaan kali ya....

Share:

Selasa, 26 Maret 2024

[Modbus] Menampilkan Sensor Suhu Infra Red ke Matrix P10

 



Sambungan dari praktek membaca sensor suhu infra red RS-WD-HW-N01 yang saya bahas sebelumnya disini , saya akan ajarkan bagaimana menampilkan suhunya di dot matrix display P10. Display dot matrix ini paling umum digunakan di layar sekolah, toko, masjid dll, ini sangat banyak yang membahas di blog maupun youtube, dengan harga yang sangat murah (menyebabkan 10 tahun lalu saya berhenti jadi pengrajin display led matrix), namun kali ini kebetulan ada proyek dan akan saya bagi ilmunya secara perlahan.


PINOUT 



Pinoutnya berupa header 2x8 dan beberapa seller online shop diluar sana menjual header converter ke arduino uno seperti gambar diatas. Jika ingin buat sendiri tentunya tidak akan menjadi kesulitan. Untuk tegangan 5 volt sebaiknya diberikan terpisah dari arduino dengan adaptor 5v yang mempunyai ampere lebih tinggi.



LIBRARY


Library asli dibuat oleh produsen aslinya yaitu FREETRONICS dan dapat di unduh disini. Pemilihan portnya berbasiskan port SPI dimana akan memanfaatkan 2 pin MOSI (13) dan SCK (11). Sedangkan pemilihan pin OE (output enable) harus berhubungan dengan timer1 sehingga kakinya jangan dirubah dari nomer 9.




Untuk menambahkan font yang lebih keren, beberapa pengembang elektronika mikrokontroller di Indonesia berkreasi dengan library DMD3 yang bisa di googling sendiri. 


 SCRIPT 


Saya bagi aja langsung dan semoga bermanfaat untuk belajar kalian maupun tugas di sekolah/kampus.


/*      Sensor Suhu Infra merah
       Tampilan ke Led Matrix P10   
	type : RS-WD-HW-N01 RS485
	www.aisi555.com
	ahocool@gmail.com
*/

#include "BIG7SEGMENT.h"
#include "DMD3.h"
#include "DejaVuSans9.h"
#include "bmz9.h"
#include "bmz6x7.h"

#include <SoftwareSerial.h>
SoftwareSerial mod(12, 10); // RX (A) , TX (B) ke rs485 sensor 


DMD3 display (1,1);


byte baca[] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x84, 0x0A};//perintah baca suhu


byte bufferDataModbus[18];
byte *ptr;

int incomingByte ;

int suhune, puluhan, satuan;

bool terima = false;
unsigned long previousMillis = 0;


char dmdBuff1[10]; //Suhu Digit Depan koma
char dmdBuff2[10]; //belakang koma


void scan()
{
    display.refresh();
}

void setup() {
  Serial.begin(9600);
  Serial.println(F("Sensor infra red ke p10"));
  Serial.println(F("http://www.aisi555.com"));
  Serial.println();
 
  mod.begin(4800);
  ptr = bufferDataModbus;

    Timer1.initialize(1350);
    Timer1.attachInterrupt(scan);
    Timer1.pwm(9,255);
 
}

void loop() {
 unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis >= 5000) {
    // timer baca sensor tiap 5 detik 
    previousMillis = currentMillis;   
    //kirim perintah ke modbus baca suhu
   mod.write(baca, sizeof(baca));

   
   
    }

  //check modbus timeout
  long millisResponModbus = millis() + 1000;
  while (!mod.available())
  {
    if (millisResponModbus < millis())
    {
      break;//timeout
    }
  }
 
 // baca data serial yang masuk dari modbus lalu simpan pada pointer
  while (mod.available())
  { 
    byte b = mod.read();
    *ptr++ = b;
    Serial.print("0x");
    Serial.print(String(b, HEX));
    Serial.print(" ");
    delay(2);
    terima = true;
  }


if (terima){
	ptr = bufferDataModbus;

	suhune = (ptr[3] *256) + ptr[4];
	puluhan = suhune / 10;
	satuan = suhune % 10;

	Serial.print("Suhu = ");
	Serial.print(puluhan);
	Serial.print(",");
	Serial.print(satuan);
	Serial.println(" Celcius");

	memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus));
	terima =false;

    display.clear();

    //tulis suhu ke p10
    display.setFont(BIG7SEGMENT);
    sprintf(dmdBuff1, "%.2d", puluhan);
    sprintf(dmdBuff2, "%.1d", satuan);

    display.drawText(0, 0, dmdBuff1);
    display.setFont(bmz9);
    display.drawText(26, -1, "C");
    display.drawRect(22,1,24,3,1);

    display.setFont(bmz6x7);
    display.drawRect(22,13,23,14,1);
    display.drawText(25, 8 , dmdBuff2);
}


}

Share:

[RTL-SDR] Perkenalan dunia radio dengan dongle usb ePro - Fitipower - FC0012

 




Tulisan saya mengenai topik radio RTL-SDR ini mungkin terkesan " kok baru sekarang ?" padahal sejak 2010an saya sudah menjadi pembaca setia di forum internet mengenai SDR, terutama di forum kaskus saat itu. Namun karena memang topiknya entah sudah bosen, wajar saja saat itu saya bekerja di vendor perangkat telco, maka hal ini hanya menjadi selingan bacaan seru melihat para kaskuser rakom berhasil membuat SDR sederhana, menggunakan sound card sebagai ADC nya dan radionya bekerja di frekuensi HF 80m band. Seru sekali saya melihatnya sampai suatu ketika saya menemukan website websdr.

WEBSDR merupakan website yang menyediakan kumpulan penghobi atau lab di kampus yang menyediakan perangkat DSR berbasis DSP/FPGA dan kemudian di share ke pengguna melalui online. Jadi saat itu ketika melihat alat DSP nya mereka canggih-canggih membuat nyali ciut, walau saya familiar dengan FPGA namun kemudian saya berpikir toh dengan klik mouse saja sudah bisa merasakan berselancar ke berbagai radio analog di seluruh dunia. Mulai dari siaran broadcast sampai ke radio milik polisi di belanda sana. Seru deh, coba aja berkunjung.



Gambar diatas bukan iklan di blog saya ya, namun memang saya ketemukan suatu ketika saya browsing dan terkejut ada yg menjual RTL-SDR dongle dengan harga lumayan tidak masuk akal. Padahal sekitar 5 tahun sebelumnya saya melihat dongle yang "asli" walau sebenarnya adalah TV tuner DVBT dijual masih cukup mahal. Ini 65 ribu bedanya apa ya ? Jika kalian penasaran saya kasi spoiler bedanya ya..




Dongle DVBT yang warna biru itu menjadi incaran saya sejak lama karena merupakan dongle bikinan realtek yang asli dan bisa dioprek menjadi penrima radi dari frekuensi 25Mhz -1700Mhz . Sedangkan yang sebenarnya yang ditawarkan oleh penjual di olshop ini adalah yang sebelah kanan, jelasnya bentuknya begini.



Larilah saya ke bagian komentar dan rating, dan ya memang ada yang puas karena murahnya tentu, dan ada yg teriak karena dianggap seller telah menipunya. Namun ada juga yang bilang kalau sesuai harga karena frekuensi responsenya dari 25-980 Mhz saja. Googling lagi dan web rtl-sdr memang memberi warning akan penipuan dongle rtl-sdr KW yang ternyata berbeda di chipset tunernya, walau sama-sama menggunakan chip DSP RTL2832U. Yang asli menggunakan tuner produk rafael micro sedangkan yg epro ini menggunakan fitipro fc0012. Keputusan saya? PENCET ORDER AJA !  





Dan datanglah barangnya lalu saya coba dengan menggunakan berbagai resource internet yang ada, dan bagi pemula saya sarankan menggunakan SDR# (sdr sharp) sebagai software sdr nya dan menginstall driver dari file yang diberikan (berbasis zadig). Saya gak akan menjelaskan lagi karena banyak sekali blog dalam maupun luar serta video youtube yang menjelaskan langkah instalasi. 



Lalu yang sangat krusial adalah pemilihan antena, dan kebetulan setahun ini saya telah bergelut dengan berbagai antena selama migrasi tv digital, dan saya colokkan aja ke dongle usb ini karena memang colokannya cocok berupa jack tv RG6. Hasilnya bagaimana ?




Tulisan pembukaan ini akan pendek saja, lain kali akan saya bagi berbagai pengalaman eksplorasi dongle ini terutama berhubungan dengan DAB (digital radio) dan DMR ( Digital Mobile Radio).


 

Share:

Minggu, 17 Maret 2024

[Modbus] Membaca Sensor Suhu RS-WD-HW-N01 RS485 - Arduino

 




Sebagai pembuka saya ingin berbagi bahwa sensor suhu inframerah memiliki beberapa kekurangan yang perlu dipertimbangkan:


1. **Akurasi terbatas**: Akurasi sensor suhu inframerah dapat dipengaruhi oleh berbagai faktor seperti emisivitas objek yang diukur, suhu lingkungan, kelembaban, dan jarak sensor dari objek. Hal ini dapat mengakibatkan pembacaan yang kurang tepat dibandingkan dengan sensor suhu kontak.

2. **Efek permukaan**: Sensor suhu inframerah mengukur suhu permukaan objek. Hal ini dapat menjadi kelemahan ketika berurusan dengan material dengan konduktivitas termal rendah atau permukaan yang tidak merata dalam suhu. Misalnya, permukaan yang mengkilap atau reflektif dapat memantulkan radiasi inframerah lingkungan, menyebabkan pembacaan yang tidak akurat.

3. **Rentang terbatas**: Beberapa sensor suhu inframerah memiliki rentang pengukuran yang terbatas, yang mungkin tidak sesuai untuk semua aplikasi. Sebagai contoh, beberapa sensor mungkin tidak dapat mengukur suhu yang sangat tinggi atau rendah dengan akurat.

4. **Waktu respons**: Sensor suhu inframerah mungkin memiliki waktu respons yang lebih lambat dibandingkan dengan sensor suhu kontak, terutama ketika mengukur suhu yang berubah dengan cepat atau objek yang bergerak.

5. **Interferensi lingkungan**: Faktor lingkungan seperti asap, debu, atau partikel lainnya di udara dapat mengganggu pengukuran suhu inframerah, menyebabkan ketidakakuratan.

6. **Biaya**: Sensor suhu inframerah dapat lebih mahal dibandingkan dengan sensor suhu kontak, terutama untuk model presisi tinggi atau yang memiliki fitur canggih.

7. **Kalibrasi**: Kalibrasi berkala diperlukan untuk menjaga akurasi sensor suhu inframerah. Hal ini membutuhkan peralatan dan keahlian khusus, menambah biaya dan kompleksitas penggunaan sensor tersebut.

8. **Kedalaman penetrasi terbatas**: Radiasi inframerah hanya dapat menembus permukaan objek yang diukur sampai kedalaman tertentu. Hal ini dapat menjadi keterbatasan ketika mengukur suhu material tebal atau tidak tembus pandang.


Meskipun memiliki kelemahan-kelemahan ini, sensor suhu inframerah tetap banyak digunakan dalam berbagai industri karena sifat non-kontaknya, kemudahan penggunaan, dan kecocokannya untuk beberapa aplikasi tertentu.




Praktek kita kali ini menggunakan TTL to RS485 agar data modbus dari sensor suhu infra red (bisa baca dulu disini untuk belajar cara akses sensor ini), dapat diubah level tegangan nya. Dan beberapa tulisan saya mengenai Modbus telah membahas juga namun kebetulan sekali ini adalah kali pertama saya membaca alat modbus menggunakan arduino uno sebagai master. Sebelumnya saya menggunakan esp8266 sebagai master modbus IOT dan arduino micro sebagai slave modbus, bisa dibaca disini dan disini .

Prinsip parsing data modbus pada pembahasan saya terdahulu tahun 2020 (jaman pandemi) seperti script berikut ini :


void loop()
{

unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis >= 5000) {
    // timer baca dht11 tiap 5 detik 
    previousMillis = currentMillis;   
    //kirim perintah ke modbus baca dht 11
   mod.write(humitemp, sizeof(humitemp));
    
    }

  //check modbus timeout
  long millisResponModbus = millis() + 1000;
  while (!mod.available())
  {
    if (millisResponModbus < millis())
    {
      break;//timeout
    }
  }
 
 // baca data serial yang masuk dari modbus lalu simpan pada pointer
  while (mod.available())
  {
    byte b = mod.read();
    *ptr++ = b;
    Serial.print("0x");
    Serial.print(String(b, HEX));
    Serial.print(" ");
    delay(2);

  }

  //proses komparasi data yg masuk (DHT11) dengan array jawaban lalu parsing
  if (memcmp(bufferDataModbus, dhtOK, sizeof(dhtOK)) == 0) {
  ptr = bufferDataModbus;
  Serial.println("");
  Serial.print(F("SUHU :"));
  Serial.print(ptr[4]); //alamat byte ke 4
  Serial.print(F(","));
  Serial.print(ptr[6]); //alamat byte ke 6
  Serial.print(F(" C HUMI :"));
  Serial.print(ptr[8]); //alamat byte ke 8
  Serial.println(" %");
  memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus));
 }


}


Jadi script diatas dulu itu akan menunggu membaca data OK berdasarkan Check Sum / CRC  modbus 16bit. Namun sepertinya itu bisa diabaikan karena hampir error jarang sekali terjadi. Jadi untuk membaca sensor suhu RS-WD-HW-N01 RS485, kira kira scriptnya seperti berikut :


/* Cara baca Sensor Suhu Infra merah
    type : RS-WD-HW-N01 RS485
	www.aisi555.com
	ahocool@gmail.com
*/

#include <SoftwareSerial.h>

SoftwareSerial mod(12, 10); // RX, TX ke rs485

//perintah baca suhu, baca penjelasan di blog
byte baca[] = {0x01, 0x03, 0x00, 0x00, 0x00, 0x01, 0x84, 0x0A};


byte bufferDataModbus[10];
byte *ptr;

int incomingByte ;

int suhune, puluhan, satuan;

bool terima = false;
unsigned long previousMillis = 0;

void setup() {
  Serial.begin(9600);
  Serial.println(F("Testing Sensor Infra Ke Serial"));
  Serial.println(F("http://www.aisi555.com"));
  Serial.println();
  
  //baud rate default 4800
  mod.begin(4800);
  ptr = bufferDataModbus;
 
}

void loop() {
 unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis >= 5000) {
    // timer baca sensor tiap 5 detik 
    previousMillis = currentMillis;   
    //kirim perintah ke modbus baca sensor
   mod.write(baca, sizeof(baca));
    
    }

  //check modbus timeout
  long millisResponModbus = millis() + 1000;
  while (!mod.available())
  {
    if (millisResponModbus < millis())
    {
      break;//timeout
    }
  }
 
 // baca data serial yang masuk dari modbus lalu simpan pada pointer
  while (mod.available())
  {
    byte b = mod.read();
    *ptr++ = b;
    Serial.print("0x");
    Serial.print(String(b, HEX));
    Serial.print(" ");
    delay(1);
    terima = true;
  }

//parsing data suhu dan tampilkan di serial debug

	if (terima){
		ptr = bufferDataModbus;

		suhune = (ptr[3] *256) + ptr[4];
		puluhan = suhune / 10;
		satuan = suhune % 10;

		Serial.print("Suhu = ");
		Serial.print(puluhan);
		Serial.print(",");
		Serial.print(satuan);
		Serial.println(" Celcius");

		memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus));
		terima =false;
		}


}

Hasil dari tangkapan layar debug seperti ini :




Data suhu yang akan dibaca adalah data ke-4 (0x1) dan data ke-5 (0x3E). Data lainnya bisa diabaikan, sehingga rumus parsing saya dilakukan dengan script berikut:


	if (terima){
		ptr = bufferDataModbus; // pindahkan data
                //ini rumus sederhana untuk merubah 2byte modbus jadi desimal
		suhune = (ptr[3] *256) + ptr[4]; //pointer memori mulai dari nol
		puluhan = suhune / 10;
		satuan = suhune % 10;

		Serial.print("Suhu = ");
		Serial.print(puluhan);
		Serial.print(",");
		Serial.print(satuan);
		Serial.println(" Celcius");
               //bersihkan memori
		memset(bufferDataModbus, 0x00, sizeof(bufferDataModbus));
		terima =false;
		}


Sehingga secara gampangannya , 0x01 merupakan  High Byte sehingga dapat dikalikan 256 (desimal) untuk mendapatkan nilai desimal High Byte, sedangkan 0x3E (Low Byte) bernilai  desimal 62, dan selanjutnya tinggal ditambahkan saja yaitu 256 + 62 =  318. Ini cocok hasilnya dengan hexa 0x13E. Sebenernya ada cara lebih "elegan" yaitu dengan geser byte ke kiri, namun saya yakin pembaca akan tambah bingung.



Share:

[Modbus] Cara Membaca Sensor Suhu RS-WD-HW-N01 RS485 - PC

 


Sensor yang saya dapat kali ini merupakan request dari salah satu pembaca blog ini, yang secara kebetulan memang sangat jarang resource nya di internet. Datasheet pun didapatkan di scribd dengan beberapa kerancuan settingan dan parameter, dimana pembaca sempat beberapa kali kesal dan mengira alat converter RS-485 to USB/PC nya error. Namun saya berhasil menemukan datasheet dari alat yang sejenis (walau beda versi) berbahasa mandarin dan sukses melakukan pembacaan datanya melalui PC.



Alat ini dari produsennya shandong renke sebenarnya diharapkan dihubungkan dengan display, plc dan alarm buatan internal mereka semuanya. Sehingga ini yang menyebabkan sedikitnya resource internet yang membahas sensor ini.


Berikut ini adalah parameter yang benar dari alat ini :

  • Kabel Coklat : VCC 10-30 volt (typical 24 volt)
  • Kabel Hitam : GND
  • Kabel Kuning : RS485 A
  • Kabel Biru : RS485 B
  • Baud Rate : 4800 bps (awas salah)
  • Protokol : Modbus RTU
  • Default ID : 1
  • Range suhu :  0 -200 Celcius


Untuk melakukan pembacaan melaui PC maka perlu disiapkan berupa converter RS485 to USB dan software pembaca data modbus seperti radzio atau serial terminal yang pernah saya bahas disini




Untuk melakukan pembacaan data suhu, maka perintah yang diberikan adalah function code 03 (read holding register), dengan alamat memory 0000h atau 0001h. Jadi rincian kode modbusnya seperti berikut :


01 03 00 00 00 01 84 0A

01     =  Alamat device id sensor
03     =  Perintah baca holding register / function 03
00 00  = 2 byte alamat address memori (0)
00 01  = 2 byte panjang data yg diharapkan ( 1 data saja)
84 0A  = Checksum / CRC 16 modbus


Sedangkan jika data dikirmkan dengan benar, maka reply yang didapat seperti  berikut :


01 03 02 01 16 38 1A

01     =  Alamat device id sensor
03     =  Reply holding register / function 03
02     = Data suhu ber-format 2 byte 
01 16  = 2 byte data suhu
38 1A  = Checksum / CRC 16 modbus


Data yang diberikan oleh sensor suhu ini berupa hexa 2 byte yang diterjemahkan menjadi 0x116 atau desimal 278. Artinya suhu yang diukur adalah 27.8 Celcius. Dapat dilihat dari hasil capture radzio dibawah ini.





Di tulisan selanjutnya saya akan mencoba melakukan pembacaan sensor  Suhu RS-WD-HW-N01 menggunakan arduino.
Share:

Minggu, 18 Februari 2024

Cara Upgrade Receiver Ninmedia Menjadi Nusantara Transvision





Kabar gembira bagi pemilik receiver legendaris seri Oracle yang dulu dipakai menonton ninmedia di satelit chinasat 11 atau kugosky di asiasat 9,  kini dapat di upgrade menjadi Nusantara Transvision dengan langkah berikut :








Jika sinyal sudah bagus ke satelit  measat di 3 transponder 12603V, 12603H dan 12643V (Symbol Rate 30000), lakukan upgrade OTA di receiver oracle kamu, atau upgrade dengan file usb yg bisa diunduh di :





Masuk ke menu OTA :
  • Pencet remote cari tombol  menu
  • Geser ke kanan cari menu Instalasi
  • Pilih Upgrade OTA lalu tekan OK
  • Masukkan parameter dibawah 
  • Tekan Mulai




Parameter OTA :
  • Satelit : Measat 3b
  • Frekuensi : 12603
  • Symbol Rate : 30000
  • Polaritas : Vertikal
  • PID : 04000, 05000, 06000, 07000 (pilih salah satu)










Jika sudah selesai upgrade maka oracle kamu akan rebooting. Untuk mendapatkan  SMC ID / STB ID bisa dengan pencet tombol merah pada remote atau menuju menu NES => SMC INFO. Jika SMC muncul 0, Lakukan aktivasi di :





Gunakan nomer smartcard id yg diambil dari chip id / chip id dec tanpa 00 didepan.


Setelah sukses maka anda bisa menyaksikan siaran lokal terbuka 1 hari saja, selanjutnya bisa beli paket seperti biasa,  via aplikasi tanaka, aplikasi pulsa synet atau lewat web :
 



Selamat mencoba...
Share:

Rabu, 24 Januari 2024

TV Digital : Solusi Borosnya Penggunaan Bandwidth TV Streaming di Hotel



Dalam menghadapi era hiburan digital, hotel kini dihadapkan pada tantangan baru terkait manajemen bandwidth akibat peningkatan penggunaan Smart TV dan layanan TV streaming di kamar. Sebagai salah satu alternatif hiburan modern, TV streaming memang memberikan berbagai pilihan konten kepada tamu, namun pada saat yang sama, dapat menimbulkan beban signifikan terhadap infrastruktur jaringan hotel.


Pandangan Umum:


Saat tamu hotel menggunakan layanan TV streaming, ini tidak hanya memerlukan koneksi internet yang cepat tetapi juga menghabiskan sejumlah besar bandwidth Internet. Dalam konteks ini, perbandingan dengan TV Digital UHF terestrial dan MATV / Parabola menjadi krusial untuk memahami sejauh mana penggunaan bandwidth TV streaming dapat menjadi faktor boros dalam lingkungan hotel.


Dalam tulisan ini, kita akan mengeksplorasi dampak borosnya penggunaan bandwidth TV streaming di hotel dan bagaimana hal ini memengaruhi pengalaman tamu serta ketersediaan sumber daya jaringan.


Perbandingan Bandwidth:


  • TV Terestrial (UHF): Menyediakan saluran lokal tanpa memerlukan bandwidth internet tambahan. Namun, dapat memiliki batasan dalam hal variasi konten.
  • TV Streaming: Memerlukan bandwidth internet yang signifikan untuk menyampaikan konten dengan kualitas tinggi. Pilihan konten yang luas dapat menambah beban pada infrastruktur jaringan hotel.
  • MATV / Parabola: Sistem distribusi ini memanfaatkan satu antena (parabola) di pusat untuk menyampaikan saluran TV, mengurangi kebutuhan bandwidth internet. Namun, mungkin kurang fleksibel dalam menyediakan konten on-demand.



Sistem MATV Hotel berbasis parabola yang banyak perangkat dan butuh perawatan berkala



Tantangan Manajemen Bandwidth:


  • Kecepatan Internet: Hotel perlu memastikan kecepatan internet yang memadai untuk menangani penggunaan TV streaming tanpa mengorbankan kualitas layanan lainnya.
  • Infrastruktur Jaringan: Perluasan dan pemeliharaan infrastruktur jaringan menjadi penting untuk mengakomodasi peningkatan penggunaan bandwidth, terutama saat terdapat banyak tamu yang menggunakan layanan streaming secara bersamaan.
  • Biaya dan Keberlanjutan: Borosnya penggunaan bandwidth dapat berdampak pada biaya operasional hotel. Hotel perlu mengevaluasi model bisnis yang berkelanjutan dan efisien dalam menyediakan layanan hiburan.


Mengapa Ini Penting?


Dalam menghadapi tantangan ini, hotel perlu memahami sejauh mana penggunaan TV streaming dapat memberikan dampak signifikan pada manajemen bandwidth. Dengan mengevaluasi opsi seperti TV terestrial dan MATV, hotel dapat mencari keseimbangan yang optimal antara penyediaan hiburan berkualitas dan pengelolaan sumber daya jaringan yang efisien. Mari kita eksplorasi lebih lanjut untuk memahami bagaimana hotel dapat menyediakan hiburan yang unggul tanpa mengorbankan ketersediaan bandwidth.



Apakah Siaran Digital UHF Menjadi Solusi ?


Dalam mengejar solusi yang efisien dan ekonomis untuk menyajikan hiburan kepada tamu hotel, TV UHF digital terestrial muncul sebagai alternatif yang menarik. Sementara TV streaming dan MATV memang memberikan berbagai opsi, pilihan ini dapat memberikan keseimbangan yang optimal antara kualitas hiburan dan manajemen biaya di lingkungan hotel.





TV UHF digital terestrial menyediakan saluran TV lokal dengan menggunakan antena terestrial, tanpa perlu mengandalkan koneksi internet atau biaya langganan. Dengan kualitas gambar yang tajam dan suara yang jernih, solusi ini memberikan pengalaman menonton yang dapat memenuhi harapan tamu, sambil tetap meminimalkan beban pada infrastruktur jaringan hotel.


Dalam tulisan ini, kita telah membahas tantangan penggunaan bandwidth TV streaming dan pertimbangan terkait TV terestrial. Sebagai solusi yang lebih hemat biaya, TV UHF digital terestrial memberikan opsi yang layak bagi hotel untuk memberikan pengalaman hiburan yang memuaskan tanpa meningkatkan beban finansial.





Keuntungan TV UHF Digital Terestrial:


  • Biaya Langganan: Tanpa biaya langganan bulanan (Free To Air) yang diperlukan untuk menonton TV. Bandingkan jika menggunakan tv streaming seperti netflix, disney+ dll.
  • Saluran Nasional lengkap: Dengan sistem multiplexing memungkinkan satu kota bisa terdapat 30-50 saluran tv GRATIS (Free To Air)
  • Ketersediaan Saluran Lokal: Menyediakan saluran lokal tanpa tergantung pada koneksi internet.
  • Kualitas Gambar dan Suara: Menyajikan kualitas gambar dan suara yang tinggi (HD) tanpa terpengaruh oleh kecepatan internet.



Skema dasar distribusi TV digital di hotel



Implementasi Yang Efisien:

  • Infrastruktur yang Sederhana: Penggunaan antena terestrial meminimalkan kebutuhan akan infrastruktur jaringan yang kompleks.
  • Biaya Pemeliharaan Rendah: TV UHF digital terestrial umumnya memerlukan sedikit pemeliharaan dan dapat beroperasi dengan biaya rendah.
  • Fleksibilitas Konten: Meskipun tidak sefleksibel TV streaming dalam menyajikan konten on-demand, TV UHF digital terestrial dapat memberikan ketersediaan saluran lokal dan internasional yang memadai.
  • Minim Perawatan: Dibanding sistem TV kabel / MATV / Parabola yang butuh perawatan perangkat RF booster secara berkala, maka dengan sistem digital UHF ini akan jauh menekan biaya perawatan.




TV digital di Jakarta mencapai 50 saluran


Menyuguhkan Pengalaman Hiburan yang Memuaskan:


Dengan mengeksploitasi teknologi TV UHF digital terestrial, hotel dapat memberikan pengalaman hiburan yang memuaskan tanpa merusak anggaran. Ini memberikan pilihan terjangkau yang tetap memberikan kepuasan kepada tamu, serta mendukung visi hotel dalam memberikan layanan unggul di bidang hiburan.

Sebagai penutup, memilih solusi yang tepat untuk menyajikan hiburan di hotel bukan hanya tentang teknologi terkini, tetapi juga tentang memahami kebutuhan tamu dan menjaga keseimbangan antara kualitas dan efisiensi biaya. Mari bersama-sama membangun pengalaman menginap yang tak terlupakan melalui solusi yang cerdas dan hemat biaya.




Share:

Jumat, 12 Januari 2024

[Node Red] Deteksi Object Pada CCTV Menggunakan Yolo

 


Tutorial yang akan saya tuliskan pada blog kali ini merupakan penggabungan dari beberapa tulisan maupun video kuliah saya sebelumnya, sehingga untuk kelancaran tutorial harap menyimak pembahasan sebelumnya yaitu :


  • Yolo dan python untuk deteksi objek :  Videonya dilihat disini
  • Menjalankan python pada node-red : Klik disini

Untuk sumber dari gambar capture dari  CCTV bisa mengambil dari berbagai lokasi cctv publik yang ada di internet, dan yang saya pakai pada praktek kali ini adalah CCTV di wilayah jogja yang berbasis wowza sehingga source streamingnya dapat dilihat (melalui cara tertentu). Alamat untuk masuk ke koleksi CCTV kota jogja (paling menarik seputaran malioboro) dapat dilihat di alamat : https://cctv.jogjakota.go.id/. 




Lokasi diatas adalah monumen nol kilometer di ujung malioboro dengan alamat cctv nya : https://cctvjss.jogjakota.go.id/malioboro/NolKm_Timur.stream/chunklist_w221624478.m3u8 . Jadi jika url streaming diatas mati atau berubah, silahkan cari sendiri ya !


Script - Yolo - Python :

import cv2
import numpy as np
import time
import sys

#penghitung waktu proses
starting_time = time.time()

#cmd windows pake spasi biar bisa dieksekusi pada node-red
if len(sys.argv) != 2:
    print("Cara Pakai: python<spasi>script.py<spasi>alamat/stream_url")
    sys.exit(1)

# ambil cmd pada bagian sumber streaming sesuai usage
stream_url = sys.argv[1]

# Open the video stream
cap = cv2.VideoCapture(stream_url)

# ambil 1 frame terakhir aja
ret, img = cap.read()

# alamat direktori yolo harus lengkap
yolo = cv2.dnn.readNet("G:\\IOT\\node_red\\yolov3.weights", "G:\\IOT\\node_red\\yolov3.cfg")
classes = []

with open("G:\\IOT\\node_red\\coco.names", "r") as file:
    classes = [line.strip() for line in file.readlines()]

#proses yolo
layer_names = yolo.getLayerNames()
output_layers = [layer_names[i - 1] for i in yolo.getUnconnectedOutLayers()]

colorRed = (0,0,255)
colorGreen = (0,255,0)

# #Loading Images
#img = cv2.imread(name)
height, width, channels = img.shape

# # Detecting objects
blob = cv2.dnn.blobFromImage(img, 0.00392, (255, 255), (0, 0, 0), True, crop=False)

yolo.setInput(blob)
outputs = yolo.forward(output_layers)

# deteksi 3 object orang (0), mobil(2) dan motor(3)
class_ids = []
confidences = []
boxes = []
for output in outputs:
    for detection in output:
        scores = detection[5:]
        class_id = np.argmax(scores)
        confidence = scores[class_id]
        if confidence > 0.5 and ( class_id == 0 or class_id == 2 or class_id == 3): # 3 objek
            center_x = int(detection[0] * width)
            center_y = int(detection[1] * height)
            w = int(detection[2] * width)
            h = int(detection[3] * height)

            x = int(center_x - w / 2)
            y = int(center_y - h / 2)
			#simpan koordinat dan nilai keyakinan
            boxes.append([x, y, w, h]) 
            confidences.append(float(confidence))
            class_ids.append(class_id)



#perhitungan indeks dan 3 object
indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)
org = 0
mob = 0
mot = 0

#kotak dan tulisan deteksi objek
for i in range(len(boxes)):
    if i in indexes:
        if class_ids[i] == 0:
            org = org + 1
            label = 'orang(' + repr(org)+ ')'
        elif class_ids[i] == 2:
            mob = mob + 1
            label = 'mobil(' + repr(mob)+ ')'
        elif class_ids[i] == 3:
            mot = mot + 1
            label = 'motor(' + repr(mot)+ ')'
        x, y, w, h = boxes[i]
        cv2.rectangle(img, (x, y), (x + w, y + h), colorGreen, 3)
        cv2.putText(img, label, (x, y -5), cv2.FONT_HERSHEY_DUPLEX, 2, (255,255,255) )


print("{")
print(f"\"Jumlah Orang\": {org},")
print(f"\"Jumlah Mobil\": {mob},")
print(f"\"Jumlah Motor\": {mot},")

elapsed_time = time.time() - starting_time
print("\"processing time\":" + repr(elapsed_time)  )
print("}")
## dibawah ini pilih mau simpan gambar atau tampilkan saja, sesuaikan kebutuhan
#cv2.imshow("Image", img)
cv2.imwrite("G:\\IOT\\node_red\\output.jpg",img) #
#cv2.waitKey(0)
#cv2.destroyAllWindows()


Hasil dari script diatas berupa string json yang nantinya berguna pada pengolahan data.




Node-Red Flow 


Untuk bagian ini cukup mengikuti pembahasan sebelumnya, dengan perbedaan inject yg digunakan berupa payload alamat stream dari CCTV.




Untuk menampilkan hasil pada flow, maka dibutuhkan pallete yang bernama : node-red-contrib-image-tools , dan untuk melakukan refresh agar tampilannya berubah setelah eksekusi script yolo selesai adalah dengan menggunakan function trigger.




Dengan konfigurasi diatas maka node image viewer akan menampilkan gambar bernama output.jpg setelah 250ms script yolo berhasil dieksekusi. Jika mau langsung import flow nya bisa copas json dibawah ini.


[
    {
        "id": "5e5b156e7f57b6cc",
        "type": "tab",
        "label": "aisi555 dot com",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "d4809067.5e61a",
        "type": "inject",
        "z": "5e5b156e7f57b6cc",
        "name": "nama stream",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": "20",
        "topic": "",
        "payload": "https://cctvjss.jogjakota.go.id/atcs/ATCS_Lampu_Merah_SugengJeroni1.stream/chunklist_w758098670.m3u8",
        "payloadType": "str",
        "x": 190,
        "y": 40,
        "wires": [
            [
                "7a4e8130.b846f8"
            ]
        ]
    },
    {
        "id": "7a4e8130.b846f8",
        "type": "exec",
        "z": "5e5b156e7f57b6cc",
        "command": "python G:\\IOT\\node_red\\yolo_stream.py ",
        "addpay": "payload",
        "append": "",
        "useSpawn": "false",
        "timer": "",
        "winHide": false,
        "oldrc": false,
        "name": "",
        "x": 520,
        "y": 40,
        "wires": [
            [
                "c95a2a0563597a2b",
                "50dcecd33a88080d"
            ],
            [],
            []
        ]
    },
    {
        "id": "c95a2a0563597a2b",
        "type": "debug",
        "z": "5e5b156e7f57b6cc",
        "name": "debug 6",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 920,
        "y": 20,
        "wires": []
    },
    {
        "id": "50dcecd33a88080d",
        "type": "trigger",
        "z": "5e5b156e7f57b6cc",
        "name": "",
        "op1": "",
        "op2": "G:/IOT/node_red/output.jpg",
        "op1type": "nul",
        "op2type": "str",
        "duration": "250",
        "extend": false,
        "overrideDelay": false,
        "units": "ms",
        "reset": "",
        "bytopic": "all",
        "topic": "topic",
        "outputs": 1,
        "x": 920,
        "y": 80,
        "wires": [
            [
                "d6cf44e31cac223d"
            ]
        ]
    },
    {
        "id": "d6cf44e31cac223d",
        "type": "image viewer",
        "z": "5e5b156e7f57b6cc",
        "name": "",
        "width": "800",
        "data": "payload",
        "dataType": "msg",
        "active": true,
        "x": 190,
        "y": 120,
        "wires": [
            []
        ]
    }
]


Dengan kreativitas pembaca maka flows diatas dapat diatur otomatis eksekusi tiap selesai script yolo di eksekusi, mungkin juga berdasarkan waktu atau sebagainya. Mungkin jika komputer kamu super cepat dengan VGA sekelas gamers maka pengolahan gambarnya bisa di level video  (25fps minimal).


Beberapa faktor yang mempengaruhi keberhasilan deteksi object sebagai berikut :

  • Yolo v3 yang digunakan masih menggunakan weights bawaan dari yolo, sehingga tingkat keberhasilan pendeteksiannya hanya dibilang "cukup" karena object yg bisa dideteksi banyak dan umum.
  • Untuk pendeteksian objek yang spesifik dan lebih teliti bisa melakukan training pada object-object yang di kehendaki saja dan akan dibahas pada kesempatan lainnya
  • Tingkat kualitas kamera sangat menentukan deteksi object 

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 (25) 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 (5) 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 (17) 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