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

Minggu, 25 April 2021

Nostalgia - Siaran TV dari Negara Asean - Australia yg Pernah Hadir Di Satelit Palapa

Satelit Palapa merupakan sistem komunikasi satelit domestik (SKSD) yang di operasikan oleh Perumtel /Telkom kemudian dialihkan ke satelindo/indosat, menjadi kebanggaan Indonesia sebagai yg pertama memanfaatkan teknologi luar angkasa di asia pada era 70-80 an. Bapak presiden suharto yg dengan semangatnya menggerakkan pembangunan, menjadikan satelit palapa sebagai pendorong komunikasi yg lebih menjangkau ke seluruh nusantara bahkan Asia tenggara. Ini terbukti ketika satelit palapa meluncurkan generasi satelit seri B, penggunaan nya merambah negara di ASEAN dan ketika seri C sudah menjangkau India dan Australia / Selandia baru. 



Palapa B2P yang kemudian di beli Filipina menjadi  Agila 1 ini diluncurkan pada tanggal 20 Maret 1987 dengan menggunakan kendaraan Delta 3920.  Satelit ini bergerak mengitari orbit geosinkron, orbit suatu benda -- umumnya satelit buatan -- dengan bumi menjadi pusat perputaran. Periode perputaran benda dengan bumi pun sama, yakni satu hari sideris atau 23,9344 jam. Sehingga, perputaran Palapa B2P berada dalam periode yang sinkron dengan waktu putar bumi dan bergerak dari barat ke timur.




Jangkauan palapa B2P ini sempat menjadi pemanis jualan sewa transponder yg laris untuk operator TV di negara Asean, dan berikut ini beberapa siaran TV Asean yang sempat memanfaatkan satelit Palapa B2P sebagai sumber Feed transmisi ke stasiun relay mereka pada tahun 90-an, sebelum negara Asean selain Indonesia mampu membeli satelit sendiri.


1. TV1 - RTM Malaysia



Radio Televisyen Malaysia - TV1 merupakan televisi siaran publik milik pemerintah malaysia yang disiarkan dari pusat penyiaran televisi Angkasa Puri Kuala Lumpur. Siaran RTM-TV1 menggunakan palapa sejak tahun 1990 dengan menyewa satu transponder video dan audio (untuk radio). Acara nya berisikan perkembangan pembangunan di malaysia dan hiburan dalam dan luar negeri. Favorit nya adalah saat ada acara olahraga penting semacam seagames, asian games, olimpiade maupun tinju mike tyson maka dapat diapstikan TV1 tidak kelewatan untuk menyiarkan nya secara langsung dan FTA.

Acara TV yg lumayan ditunggu pemirsa dinusantara adalah Titian Muhibah - Senada Seirama , kerjasama dengan TVRI Jakarta dimana akan ditampilkan artis kedua belah negara dan akan menyanyi live. Biasanya acara ini daiadakan saat perayaan idul fitri dan bulan agustus saat kedua negara merayakan hari kemerdekaan yang kebetulan jatuh pada bulan yang sama.



2. TV 3 Malaysia

TV 3 malaysia merupakan televisi siaran swasta dari malaysia yg merupakan konsultan saat berdirinya RCTI , ini bisa dilihat pada logonya dengan nuansa yg mirip pada jaman itu.




TV 3 pada satelit palapa hadir sekitar tahun 1989 saat penanda tanganan kerjasama penyewaan transponder dan mulailah masayarakat di Nusantara dapat menyaksikan siaran TV berbahasa melayu yang tentunya mampu dipahami oleh penonton Indonesia. Acara film luar dan sport di TV 3 tidak jauh berbeda dengan TV swasta macam RCTI dan SCTV saat 90-an sehingga jika ingin mendahului mengetahui cerita drama telenovela cukup dengan menonton TV3 melalui palapa. 

Acara yg lumayan disukai di akhir-akhir sebelum TV dari malaysia migrasi ke Measat yg merupakan satelit milik mereka sendiri adalah rancangan komedi SENARIO yg walau sulit dipahami kelakarnya (ngomong nya dialek kelantan) namun pelan-pelan penulis tertawa juga dibuatnya.




3. RTB Brunei



Radio Televisyen Brunei mengudara di palapa sekitar tahun 1995 melalui pusat uplink di daerah subok, menampilkan acara tempatan yang bahasa melayunya lebih mudah dipahami karena menggunakan istilah dan dialek yg sedikit kearah bahasa di wilayah kalimantan. Pada suat liputan di tahun 1997 (kalau tidak salah) RTB melakukan wawancara dengan produser RRI dan TVRI jogja yg rutin datang diundang mengajarkan penyiaran. Dan tida disangka banyak penyiar dan reporter RTB masa itu mengambil kuliah di UGM dan kampus-kampus diseputaran jogja. Maklum sultan Brunei Hasanah Bolkiah dan Sultan Hamengkubuwono memiliki hubungan erat masa itu.

Siaran RTB dimuali pagi sampai jam 10, dilanjut sore jam 3 sampai jam 9 malam WIB dan kemudian dilanjutkan siaran dari SITV (Singapore International TV) yang menampilkan siaran dari channel 5 mediacorp. SITV merupakan cikal bakal siaran Channel News Asia. Siaran SITV mengudara 1 jam saja dengan siaran berita 30 menit dan acara dokumenter di sisa 30 menit dan tutup jam 10 malam WIB.


4. GMA Philipine / Rainbow TV


GMA merupakan jaringan TV ber "aroma" amerika pertama di filipina , dimana standar penyiaran yg dipakai adalah NTSC yang notabene standar amerika. Ketika Rainbow Satellite network bekerjasama dengan GMA pada 1992 dipilihlah Palapa B2P sebagai transponder yg disewa menjangkau kawasan asia tenggara. TV ini berbahasa tagalog  90% dan Inggris 10% jadi bagi pemirsa di Indonesia cukup meraba-raba mengartikan acara di TV. Paling yg bisa dimengerti saat iklan sabun detergen maka kata PUTIH dan MURAH akan dimengerti karena ya artinya sama, iklan  cucian detergen hasilnya bersih, PUTIH cemerlang dan juga MURAH. 






5. TV 5 ARMY Thailand


TV 5 thailand sempat mengudara di palapa B2P sebentar sekitar tahun 1992-1994 dan berformat NTSC. jadi jika ingin menontonnya butuh TV Multisystem jika tidak maka gambarnya akan hitam putih saja pada pesawat televisi. Acara nya seputar kegiatan pembangunan di thailand, kegiatan keluarga raja, thai boxing dan sepakbola lokal. Karena keterbatasan bahasa maka bukan menjadi stasiun favorit saya.


6. ABC Australia 


Siaran dari australia juga hadir di palapa untuk menjangkau masyarakat australia yg melancong atau berbisnis di asia tenggara. Awalnya ditujukan kepada operator TV Hotel yg kesulitan jangkauan siaran australia yg saat itu OPTUS hanya memiliki beam  ke arah Australia. Jadi dengan memilih Palapa sebagai relay siaran asia pasifik, maka para peselancar Aussie yg datang ke Bali dapat menonton bola AFL atau rugby NFL live di bar-bar seputaran seminyak dan kuta.


Salah satu penyiar favorit saya adalah si cantik Rosemarry Curch yang menghadirkan berita malam di ABC NEWS, karirnya dimulai di ABC dan kemudian menjadi Anchor terkemuka di CNN International.





7.  Channel News Asia Singapore 



Menginjak era satelit high power dengan Upgrade dari Palapa B2P menjadi Palapa C2 serta digitalisasi siaran, maka ukuran parabola jaring C band menjadi semakin kecil . SITV yg dimiliki media corp singapore, menjelma menjadi siaran berita 24 jam Channel News Asia di tahun 1999 melalui palapa C2. Saat itu mungkin hanya sedikit yg mampu membeli STB/dekoder DVB-mpeg2 yang menginjak harga 2 juta paling murah. 


Untuk siaran negara diluar Asean yg hadir di satelit Palapa meliputi CNN International, MTV Asia, SKY news, Star TV Hongkong, Cartoon Network/TNT,  akan saya bahas dilain kesempatan. 

Share:

Kamis, 22 April 2021

RCTI Digital Hadir Dengan Full Power di Surabaya dan Sekitarnya - The End Buat Parabola Mini ?

 



Tidak dipungkiri lagi sinetron unggulan produksi RCTI merupakan magnet untuk penonton TV di Indonesia bahkan sampai negara berbahasa melayu sekitar. Terbukti dengan diraihnya rating tertinggi dari penonton TV pada tanggal 22 april 2021 seperti pada daftar berikut ini :


  • 1. RCTI - Ikatan Cinta
  • 2. RCTI - Amanah Wali 5
  • 3. SCTV - Buku Harian Seorang Istri
  • 4. RCTI - Lazada 33 Sale
  • 5. SCTV - Love Story The Series
  • 6. Indosiar - SHI
  • 7. RCTI - Putri untuk Pangeran
  • 8. SCTV - Samudera Cinta
  • 9. RCTI - Dunia Terbalik
  • 10. RCTI - Silet
  • 11. SCTV - Dari Jendela SMP
  • 12. MNC - Upin dan Ipin
  • 13. MNC - Kembalinya Raden Kian Santang
  • 14. RCTI - Seputar iNews
  • 15. MNC - Upin dan Ipin Pagi

Dunia parabola mini juga sempat heboh di tahun 2018 -2019 dengan adanya tarik-menarik siaran RCTI dan MNC group lainnya melawan penyedia layanan pay tv, bahkan kalau ditelusur balik di 2016, MNC group bersitegang dengan telkom group sehingga telkom dengan produk IPTV UseeTv dilarang menyiarkan siaran RCTI, MNC TV, GTV akibat tidak adanya kesepakatan penarikan jaringan optik MNC play di tiang milik telkom. 



Dan ujungnya RCTI dan MNC group menjadi eksklusif di dunia satelit dengan keharusan menggunakan receiver rekomendasi, dimana pihak pay TV harus menjalin kerjasama sebelum boleh me-relay siaran MNC Group. Jika tidak patuh maka akan dihadiahi tuntutan hukum seperti yg dialami Ninmedia.



Berkah tersendiri bagi para teknisi diseluruh nusantara dengan larisnya penjualan receiver rekomendasi ini, bahkan sampai sempat kejadian langkanya receiver rekomendasi di pusat elektronika. Harga pun bisa dimainkan para dealer dan agen penyalur receiver rekomendasi. Namun di tahun 2021 untuk kota besar di pulau Jawa ada berita yg mengembirakan kalau RCTI dan MNC group hadir kembali di frekuensi TV Digital Teresterial UHF.



Power sinyal dari pemancarnya lumayan cukup tinggi dengan antena dalam rumah saja bisa mendapatkan siaran yg jernih tanpa putus.



MNC group bersiaran untuk kota Surabaya di saluran 41 UHF atau 633 MHz, namun sayangnya belum berformat HD seperti di jakarta maupun jogja. Mungkin menunggu perangkat HD nya datang kali, kita tunggu saja. Secara lengkap siaran MNC group di Surabaya yang saya ambil tanggal 22 April 2021 sebagai berikut :







Dengan lengkapnya siaran TV Digital di wilayah surabaya dan kota sekitarnya (Gersik Bangkalan Mojokerto Lamongan Pasuruan) maka menjadi ancaman tersendiri bagi teknisi parabola yg mengandalkan penjualan dengan titik berat di "SIARAN LOKAL LENGKAP JERNIH". Saatnya kita menjual dengan usaha lebih keras lagi walau tantangan ekonomi semakin berat, atau beralih menjadi Teknisi Antena UHF dengan STB DVB-T2 ? Siapa takut asal ada kesempatan hayo dimanfaatkan saja.

Berikut daftar Siaran TV Digital di Surabaya dan Sekitarnya April 2021:

 

Frekuensi

Nama TV

1

490 MHz

(23 UHF)

1

TV ONE

2

ANTV

2

506 MHz

(25 UHF)

3

MetroTV

4

MetroTV HD

5

Magna Channel  HD

6

BN TV HD

7

BBS TV

3

522 MHz

(27 UHF)

8

Trans TV HD

9

Trans 7 HD

10

CNN Indonesia HD

11

CNBC Indonesia HD

12

Kompas TV

 

4

538 MHz

(29 UHF)

13

SCTV HD

14

INDOSIAR HD

15

O CHANNEL HD

16

MENTARI TV HD

5

586 MHz

( 35 UHF)

17

TVRI SPORT HD 

18

TVRI 3

19

TVRI JATIM

20

TVRI NASIONAL

21

Jawapos TV /SBO 

6

634 MHz

( 41 UHF)

22

RCTI

23

MNC TV

24

GTV

25

I News





Untuk panduan, kami telah review beberapa merek STB digital yg sudah ada di pasaran dan anda kini bisa bandingkan sesuai fasilitas dan keunggulannya :


Matrix Apple     - Polytron PDV 600T2   - Venus Cabe Rawit  - Evinix H-1  - Akari ADS-2230

-Tanaka


Bagi anda yg berada di lokasi lain di Nusantara dapat juga membaca update perkembangan  migrasi TV digital di  kota-kota besar seluruh Indonesia :

Surabaya  MNC  ,  EMTEK , VIVA )

Malang

Jember 

Kediri

Jombang & Mojokerto

Madiun

Jogja

Semarang

Banjarmasin

Makasar

Medan

Palembang

Perbatasan Malaysia

Share:

[ Node-RED ] Mengenal Function Node - Tools Ampuh Berbasis Java

 


Bagi penggiat IT yang mungkin kebingungan akan logika dari flow dan beragam node yang ada pada platform IOT Node-RED, mungkin pada saat belajar awal perlu berkenalan dengan node yang bernama  : "FUNCTION". Ya gak jauh berbeda dengan function atau sub-routine pada bahasa pemrograman apapun, function akan menyediakan editor script berbasis java yang akan memudahkan mengubah dan mengolah pesan Input Output pada flow yang anda buat.

Namun perlu diperhatikan komunikasi antar node bukan hanya kirim-terima String biasa, namun keseluruhan berpola JSON seperti contoh berikut:



atau kalau saya copy salah satu pesan raw dari salah satu output debug sebuah pesan yg diterima dari response perangkat modbus seperti berikut ini :


{"topic":"polling","payload":[30,0,71],"responseBuffer":{"data":[30,0,71],"buffer":[0,30,0,0,0,71]},"input":{"topic":"polling","from":"Modbus-DHT22","payload":{"unitid":"6","fc":4,"address":"0","quantity":"3","messageId":"6080af997665b3af28e2168f"},"queueLengthByUnitId":{"unitId":6,"queueLength":0},"queueUnitId":6,"unitId":6},"sendingNodeId":"1c4bea20.9b9666","_msgid":"b2c9254b.4553e8"}



Sepanjang itu pesan yg dikirimkan oleh node MODBUS READ ke node Debug yg saya buat. Jadi secara praktisnya saya hanya butuh data pada object bernama "payload" yang berisikan data array :[30,0,71]  . Jadi yg nantinya saya olah adalah data dari 3 isi array itu saja.

Kemudian saya ingin merubah data payload tadi menjadi NUMBER yang akan saya tampilkan pada web UI berupa GAUGE / Meter. Karena memang yang diminta oleh gauge adalah input data berupa  angka maka saya butuh sebuah Function untuk merubahnya.



Penjelasan dari function diatas adalah sebagai berikut :


  • Variabel temp mengambil data msg.payload yg dikirimkan oleh node modbus read
  • Data array 0 dan 1 dimasukkan ke dalam variabel
  • Karena data 0 berupa puluhan dan 1 berupa angka dibelakang koma, butuh melakukan penggabungan dengan jalan mengalikan data 0 / puluhan dengan 100, menambahkan dengan data 1 lalu membagi hasilnya dengan 100
  • Hasil suhu yg didapat berupa integer kemudian diubah ke float melalui parseFloat
  • Selanjutnya suhu yg sudah berupa desimal float dibungkus kembali menjadi Json  : {payload:suhu} dan dikembalikan ke flow dengan perintah return .


Dengan function yang tepat maka hasil yg diinginkan pun tercapai. Jadi kunci disini adalah kemampuan javascript / programming yang harus cukup dimiliki oleh pengguna Node-RED.




Yang menjadi perhatian dalam function adalah bagaimana menyimpan variabel yang nantinya akan diambil saat flow berikutnya, semisal saya ingin mengubah 7 segmen secara increment. Jika ketemu masalah seperti ini maka yang perlu dipahami adalah perintah java berupa context atau flow. Perhatikan node berikut :



Output Function 7 segmen yg ingin kita dapatkan adalah membaca node inject dan  tombol pada dashboard /web UI yang akan merubah angka 7 segmen naik turun. Singkat saja scriptnya, dimana payload dari inject atau tombol berupa msg.payload = 1 untuk tambah dan msg.payload = 2 untuk pengurangan. Sedangkan variabel 7 segmen yang harus disimpan dan dipanggil lagi pada flow berikutnya disimpan melalui flow.get dan flow.set . Selengkapnya seperti berikut :


var count=flow.get('count') || 0;

var temp = msg.payload


if(temp == 1) count+=1;

else if(temp == 2) count-=1;


if(count > 9) count =0;

if(count < 0) count =9;


flow.set('count',count);


var result = {payload:count};

return[result];



Garis besar dari script diatas seperti ini : 


  • Ambil nilai variabel 'count' yg disimpan pada flow (global) ke dalam variabel count lokal , jika belum ada kasikan nilai 0,   var count=flow.get('count') || 0; 
  • Ambil nilai payload yang diberikan oleh inject atau tombol ui, kemudian cek apakah 1 atau 2 dan lakukan penambahan atau pengurangan variabel count
  • Set kondisi maksimum dan minimum dari count
  • Simpan kembali nilai variabel count lokal ke variabel count global dengan perintah : flow.set('count',count);
  • Kembalikan data ke flow dan lanjut dikirim ke node Modbus Write

Dengan susunan script function yang tepat maka flows node-RED yang diingikan tercapai. Function node yang simple juga sudah disediakan, tinggal drag drop dan siap pakai, namun dengan beberapa keterbatasan. Jadi kalau mau berkreasi lebih manfaatkan script Function saja sesuai keinginan. 

Penjelasan function yang saya buat ini adalah kelanjutan dari praktek Modbus-RTU-Serial sebelumnya yg dapat dibaca disini.







Share:

Rabu, 21 April 2021

[ Node-RED ] Komunikasi Dengan Perangkat MODBUS-RTU Serial - Praktek Sensor Suhu + 7 Segmen


 

Modbus dan PLC  baik dalam komunikasi jadulnya yg berbasis serial RS 485/ RS 232 maupun kini sudah merambah ke komunikasi TCP/IP, menjadi pilihan yang menurut penulis sudah "Final" dikalangan dunia kontrol industrial. Pengalaman penulis ketika menawarkan otomasi berbasis mikrokontroller 8 bit yg saya rancang dengan fungsi yang hampir sama, tetap mendapatkan tantangan dan pertanyaan seputar kehandalannya. Jadi saya yang pecinta hardware dasar pun di sangsikan apalagi mereka yg ingin menawarkan kemudahan dari sisi dunia IT. Sehingga menurut rekan dosen otomasi di UK-Petra Surabaya, Node-Red menjadi jembatan yang ampuh untuk menyatukan perangkat jadul dengan sistem IOT-Industri 4.0

Seperti yang pernah saya bahas di tahun sebelumnya, saat saya belajar dan berhasil merancang Modbus-RTU bridging ke MQTT (silahkan mulai disini , dibaca dan dipahami terlebih dahulu), mutlak diperlukan pemahaman sistem pengiriman data, register I/O , error checking dan sebagainya. Untuk itu perlu diulang kembali praktek awal belajar modbus yaitu menjadikan arduino sebagai perangkat Modbus-slave, dengan penyesuaian rangkaian yg sudah saya buat di praktek node-red sebelumnya,  sebagai berikut :




Dengan Input berupa pembacaan suhu dan kelembaban, maka saya menempatkan data pada Input / Analog Register berupa :


  • 30001 : Angka didepan koma / Puluhan suhu
  • 30002 : Angka desimal / di belekang koma suhu
  • 30003 : Angka pengukukuran kelembaban


Sedangkan untuk Output berupa 7 segmen, register yg digunakan adalah Holding Register dengan alamat 40001. Register ini juga dapat diubah mengunakan Function 0x06. Jadi script untuk merubah rangkaian arduino diatas menjadi berbasis MODBUS-RTU sebagai berikut :



//Silahkan unduh Library modbus slave: 
//https://code.google.com/archive/p/arduino-modbus-slave/downloads

#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>
#include "DHT.h"

//7seg

#define SEGA 5
#define SEGB 6
#define SEGC 7
#define SEGD 8
#define SEGE 9
#define SEGF 10
#define SEGG 11

#define dhtPin 4
#define DHTTYPE DHT22
DHT dht(dhtPin, DHTTYPE);

unsigned long previousMillis = 0;
const long interval = 5000; 


modbusDevice regBank;
modbusSlave slave;

void setup()
{   //7 seg
    pinMode(SEGA, OUTPUT);
    pinMode(SEGB, OUTPUT);
    pinMode(SEGC, OUTPUT);
    pinMode(SEGD, OUTPUT);
    pinMode(SEGE, OUTPUT);
    pinMode(SEGF, OUTPUT);
    pinMode(SEGG, OUTPUT);

 //Ubah modbus device ID.  
  regBank.setId(6);
  dht.begin();
/*
register modbus mengikuti format berikut
00001-09999 Output Digital, Perangkat master dapat membaca dan menulis ke register ini
10001-19999 Input Digital, Perangkat master hanya dapat membaca nilai dari register ini
30001-39999 Input Analog, Perangkat master hanya dapat membaca nilai dari register ini
40001-49999 Output Analog/ Holding register, 
            Perangkat master dapat membaca dan menulis ke register ini

Nilai analog adalah kata unsigned 16 bit yang disimpan dengan kisaran 0-32767
Nilai digital disimpan sebagai byte, nilai nol OFF dan nilai nonzer ON

Cara terbaik adalah mengkonfigurasi register tipe serupa ke dalam blok yang bersebelahan. ini
memungkinkan pencarian register yang lebih efisien dan dan mengurangi jumlah pesan
dibutuhkan oleh master untuk mengambil data
*/

 
//Pesan alamat Register Analog input di register bank 30001-10010 
  regBank.add(30001);  //DHT11 - suhu puluhan
  regBank.add(30002);  //DHT11 - suhu desimal
  regBank.add(30003);  //DHT11 - kelembaban
  
//Pesan alamat Holding Register 40001
  regBank.add(40001);  // 7 SEGMEN
//Isi nilai awal dari 7 segmen
  regBank.set(40001,8);
    

  slave._device = &regBank;  

// Serial 9600 baud  
  slave.setBaud(9600);   

}

void segmen(int angka)
{
 
   switch(angka) {
                  case 0 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case 1 : { digitalWrite(SEGA, LOW);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case 2 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, LOW);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case 3 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case 4 : { digitalWrite(SEGA, LOW);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }

                  case 5 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, LOW);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }                                                          
                  case 6 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, LOW);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case 7 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, LOW);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, LOW);
                             digitalWrite(SEGG, LOW);
                             break;
                  }
                  case 8 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, HIGH);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
                  case 9 : { digitalWrite(SEGA, HIGH);
                             digitalWrite(SEGB, HIGH);
                             digitalWrite(SEGC, HIGH);
                             digitalWrite(SEGD, HIGH);                             
                             digitalWrite(SEGE, LOW);
                             digitalWrite(SEGF, HIGH);
                             digitalWrite(SEGG, HIGH);
                             break;
                  }
   }
}

// mengubah koma 
int ExtractDecimalPart(float Value, int numberOfDecimals)
{
  float temp = Value - (long)(Value); 
  long p = 1;
  for (int i=0; i< numberOfDecimals; i++) p*=10;
  long DecimalPart = p * temp;
  return DecimalPart;
}

void loop()
{
//Tulis 7 segmen sesuai nilai pada register
  segmen(regBank.get(40001));  


//Baca suhu 5 detikan
  unsigned long currentMillis = millis();
 
  if(currentMillis - previousMillis >= interval) {
   
    previousMillis = currentMillis;   
 
    int h = dht.readHumidity();
    float t= dht.readTemperature();
    int t1 = t;
    int t2 = ExtractDecimalPart(t,2);

//tulis ke register 30001 -30003
    if (isnan(h) || isnan(t)) {
    regBank.set(30001,1000);
    regBank.set(30002,1000);
    regBank.set(30003,1000); 
    }

    
    regBank.set(30001,t1);
    regBank.set(30002,t2);
    regBank.set(30003,h);
   } 

  //jalan terus berulang sebagai slave  
  slave.run();  

}


Jadi jika selesai programming, dapat dilakukan test dengan software simulator modbus RADZIO : 




7 segmen kemudian bisa juga diubah dengan klik 2x pada kolom register  yang sesuai .




Selanjutnya di sisi Node-RED kita akan melakukan instalasi node yg bernama node-red-contrib-modbus. Instalasinya bisa juga dilakukan melalui editor Node-RED dengan memilih pilihan "manage pallete" di menu kanan atas.



Dengan demikian kita bisa menggunakan NODE modbus paling dasar yaitu MODBUS READ untuk membaca sensor suhu kelembaban DHT22 yg saya pakai. Settingnya cukup menyesuaikan dengan praktek sebelumnya yaitu penyesuaian com port, ID slave, dan debug sebagai output.



Hasilnya mencengangkan !



Sehari-semalam saya bingung dibuatnya, kenapa response dari Modbus Slave menampilkan array [0,0,0] ? Sampai kemudian saya ingat ada tools untuk melakukan debug / spy serial port bernama " SerialMon".



Dari hasil penelusuran, saya bandingkan serial yg dikirim terima oleh Radzio dengan Node-RED dan hasilnya saya salah di penomeran register.



Kejadian lagi deh kesalahan saat awal belajar modbus dulu ...jadi alamat register bukan dimulai dari 30001 melainkan cukup ditulis 0 (karena aturan offset jadi 1), ingat deh dulu seperti ini nih seharusnya :


06 04 00 00 00 03 B1 BC

06     =  Alamat device id slave
04     =  Perintah baca input analog/ function 04
00 00  = 2 byte alamat address memori (mulai 0 , logic 1)
00 03  = 2 byte panjang data yg diharapkan (3 buah data)
B1 BC  = Checksum / CRC 16 modbus


Dan yang benar seperti ini nih...langsung muncul angka suhu dan kelembabanya ...


 

Selanjutnya praktek sangat lancar dan cukup mengikuti praktek Node-RED web UI sebelumnya dan berhasil membuat hasil seperti video berikut ini :




Untuk Script Node-Red dalam JSON, saya tempel aja disini, kemudian bisa di import dan copy paste pada editor Node-RED kamu :



[{"id":"a8d0e1d9.32142","type":"tab","label":"Flow 5","disabled":false,"info":""},{"id":"d299086b.f08a88","type":"modbus-read","z":"a8d0e1d9.32142","name":"","topic":"","showStatusActivities":false,"logIOActivities":false,"showErrors":false,"unitid":"6","dataType":"InputRegister","adr":"0","quantity":"3","rate":"5","rateUnit":"s","delayOnStart":false,"startDelayTime":"","server":"824b1538.161228","useIOFile":false,"ioFile":"","useIOForPayload":false,"emptyMsgOnFail":false,"x":279.32994079589844,"y":205.96183681488037,"wires":[["7967f3c9.3415bc","5cfa62af.b1f89c","e0c9cab0.13e948"],[]]},{"id":"7967f3c9.3415bc","type":"debug","z":"a8d0e1d9.32142","name":"read_modbus","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":526.3299407958984,"y":55.16672134399414,"wires":[]},{"id":"341bb8e1.0d3b38","type":"modbus-write","z":"a8d0e1d9.32142","name":"","showStatusActivities":false,"showErrors":false,"unitid":"6","dataType":"HoldingRegister","adr":"0","quantity":"1","server":"824b1538.161228","emptyMsgOnFail":false,"keepMsgProperties":false,"x":685.3369064331055,"y":450.8092050552368,"wires":[[],[]]},{"id":"b0f6eeca.9fc8f","type":"debug","z":"a8d0e1d9.32142","name":"out_modbus","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":681.3334045410156,"y":365.1701936721802,"wires":[]},{"id":"36302ceb.d3b7b4","type":"inject","z":"a8d0e1d9.32142","name":"decrement","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","payload":"2","payloadType":"num","x":272.8958435058594,"y":403.8888854980469,"wires":[["44bf1fc9.8d7fd"]]},{"id":"96e67c14.b9386","type":"inject","z":"a8d0e1d9.32142","name":"increment","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":"","topic":"","payload":"1","payloadType":"num","x":272.8958435058594,"y":363.8888854980469,"wires":[["44bf1fc9.8d7fd"]]},{"id":"44bf1fc9.8d7fd","type":"function","z":"a8d0e1d9.32142","name":"7 segmen","func":"var count=flow.get('count') || 0;\n\nvar temp = msg.payload\n\nif(temp == 1) count+=1;\nelse if(temp == 2) count-=1;\n\nif(count > 9) count =0;\nif(count < 0) count =9;\n\nflow.set('count',count);\n\nvar result = {payload:count};\nreturn[result];","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":473.89587783813477,"y":379.8889045715332,"wires":[["b0f6eeca.9fc8f","341bb8e1.0d3b38","8ca591c3.507c8"]]},{"id":"39680ef0.a0ec02","type":"ui_gauge","z":"a8d0e1d9.32142","name":"SUHU DHT 11","group":"fc14d827.fe2ea8","order":1,"width":0,"height":0,"gtype":"gage","title":"Suhu Celcius","label":"Celcius","format":"{{value}}","min":0,"max":"50","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","x":746.8958358764648,"y":147.88887405395508,"wires":[]},{"id":"fc85d4ce.fbaa78","type":"ui_chart","z":"a8d0e1d9.32142","name":"","group":"fc14d827.fe2ea8","order":2,"width":0,"height":0,"label":"Kelembaban %Rh","chartType":"line","legend":"false","xformat":"HH:mm:ss","interpolate":"linear","nodata":"","dot":false,"ymin":"40","ymax":"100","removeOlder":1,"removeOlderPoints":"","removeOlderUnit":"60","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"x":756.8958511352539,"y":260.88890075683594,"wires":[[]]},{"id":"5cfa62af.b1f89c","type":"function","z":"a8d0e1d9.32142","name":"ubah suhu","func":"var temp = msg.payload;\nvar puluhan = temp[0]\nvar desimal = temp[1]\n\nvar ongko = (parseInt(puluhan) * 100) + desimal;\nvar suhu = parseFloat(ongko /100);\nvar result = {payload:suhu};\nreturn[result];\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":532.3402481079102,"y":154.70834350585938,"wires":[["39680ef0.a0ec02"]]},{"id":"e0c9cab0.13e948","type":"function","z":"a8d0e1d9.32142","name":"ubah humi","func":"var temp = msg.payload\nvar humi = parseInt( temp[2] )\n\nvar result = {payload:humi};\nreturn[result];\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":527.8958129882812,"y":237.88888549804688,"wires":[["fc85d4ce.fbaa78","f739dfd5.58126"]]},{"id":"f739dfd5.58126","type":"debug","z":"a8d0e1d9.32142","name":"ubah suhu","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":755.3402862548828,"y":202.18057250976562,"wires":[]},{"id":"8ca591c3.507c8","type":"ui_text","z":"a8d0e1d9.32142","group":"fc14d827.fe2ea8","order":4,"width":0,"height":0,"name":"","label":"7 Segmen","format":"{{msg.payload}}","layout":"row-spread","x":681.3299102783203,"y":407.0590515136719,"wires":[]},{"id":"5b185e1a.af2f7","type":"ui_button","z":"a8d0e1d9.32142","name":"Tambah","group":"fc14d827.fe2ea8","order":8,"width":"3","height":"2","passthru":false,"label":"Tambah ","tooltip":"","color":"","bgcolor":"","icon":"","payload":"1","payloadType":"num","topic":"payload","topicType":"msg","x":269.32643127441406,"y":313.2986240386963,"wires":[["44bf1fc9.8d7fd"]]},{"id":"a4c4a5d.a88cc58","type":"ui_button","z":"a8d0e1d9.32142","name":"Kurang","group":"fc14d827.fe2ea8","order":8,"width":"3","height":"2","passthru":false,"label":"Kurang","tooltip":"","color":"","bgcolor":"","icon":"","payload":"2","payloadType":"num","topic":"payload","topicType":"msg","x":273.8958435058594,"y":454.8888854980469,"wires":[["44bf1fc9.8d7fd"]]},{"id":"824b1538.161228","type":"modbus-client","name":"","clienttype":"simpleser","bufferCommands":true,"stateLogEnabled":false,"queueLogEnabled":false,"tcpHost":"127.0.0.1","tcpPort":"502","tcpType":"DEFAULT","serialPort":"COM7","serialType":"RTU-BUFFERD","serialBaudrate":"9600","serialDatabits":"8","serialStopbits":"1","serialParity":"none","serialConnectionDelay":"100","unit_id":"1","commandDelay":"1","clientTimeout":"1000","reconnectOnTimeout":true,"reconnectTimeout":"2000","parallelUnitIdsAllowed":true},{"id":"fc14d827.fe2ea8","type":"ui_group","name":"modbus RTU ui testing","tab":"53c1826d.1539dc","order":2,"disp":true,"width":"6","collapse":false},{"id":"53c1826d.1539dc","type":"ui_tab","name":"HumiTemp Node Red","icon":"dashboard","order":1,"disabled":false,"hidden":false}]






SELAMAT MENCOBA ....

Share:

Kontak Penulis



12179018.png (60×60)
+628155737755

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (12) antares (8) arduino (26) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) iklan (1) infrared (2) Input Output (3) iot (59) 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 (28) 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