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

  • Data Science

    Mengulik Digitalisasi data statistik dengan bantuan python untuk pemanfaatan di bidang transportasi, kesehatan, keuangan dan masih banyak lagi

  • Artificial Intelligence - Pengenalan Object

    Menghadirkan pemanfaatan AI dengan praktek-praktek yang mudah diikuti - cocok untuk mahasiswa yang mencari ide tugas akhir

  • 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 tulisan. Tampilkan semua postingan
Tampilkan postingan dengan label tulisan. Tampilkan semua postingan

Sabtu, 28 Juni 2025

AGV - Tahap 1 : Membuat Mobil RC Mengikuti Pergerakan Kode ArUco

 


Dalam beberapa tahun terakhir, perkembangan teknologi otomasi di berbagai sektor industri semakin pesat. Salah satu inovasi yang mulai banyak diterapkan adalah penggunaan Autonomous Guided Vehicle atau AGV. Kendaraan tanpa awak ini hadir sebagai solusi cerdas untuk memindahkan barang secara otomatis dengan efisiensi tinggi dan minim intervensi manusia.

AGV bukan sekadar mobil robot yang bisa bergerak sendiri — ia merupakan bagian penting dari transformasi digital di bidang logistik, manufaktur, hingga gudang penyimpanan. Dengan kemampuan navigasi mandiri menggunakan sensor, laser, atau sistem visi komputer, AGV mampu menggantikan proses manual yang sebelumnya memakan banyak waktu dan tenaga kerja.

Kehadiran AGV juga semakin relevan di tengah tuntutan industri akan produktivitas, akurasi, serta keamanan kerja yang lebih baik. Selain itu, dengan adanya pandemi beberapa tahun belakangan, banyak perusahaan mulai beralih ke sistem otomatis untuk mengurangi ketergantungan pada tenaga kerja langsung — dan AGV menjadi salah satu jawaban utama.


Setelah saya berhasil mengubah mobil RC 27mhz menjadi ber - WiFi ( baca disini ), maka langkah awal yang saya lakukan untuk menjadikannya bisa mengikuti rute terpendek seperti gambar animasi diatas adalah dengan membuat marking kode di tiap koordinatnya menggunakan kode AruCo. Untuk itu saya menambahkan kamera CCTV IP diatas mobil-mobilan remote yang saya sudah modifikasi.



Saya pilihkan IP CCTV merek Ezviz H1C yang paling cocok karena bisa digunakan dalam mode offline (tanpa butuh internet), dibanding awalnya saya menggunakan merek bardi yang sejenis namun harus terhubung internet baru bisa di akses RTSP streamnya. Untuk mengakses stream CCTV ezviz cukup butuh password securitynya (6 buah huruf) yang biasanya terdapat di bawah dudukan kameranya (atau bisa diubah lewat aplikasi ezviz) serta IP yang didapatnya. Contoh nya alamat seperti ini :


rtsp://admin:XXXXXX@192.168.1.178:554/Streaming/Channels/101


Alamat paling belakang merupakan mode resolusi dimana 101 = HD 1080 dan jika 102 ber resolusi SD 480.



Logika yang saya gunakan untuk percobaan kali ini sebagai berikut :

1. CCTV ip diakses stream nya oleh python-opencv dan kemudian mencari  kode ArUco pada frame yang ditangkap yang sudah ditentukan kode ID nya

2. Layar gambar dibagi menjadi 3 bagian yaitu kanan tengah dan kiri. Apabila kodenya terdapat ditengah maka akan mengirmkan perintah maju ke RC melalui pengiriman pesan UDP, begitu pula untuk kanan dan kiri. 

3. Mobil RC kemudian akan bergerak sesuai dengan animasi paling atas tulisan ini. Jika tidak ada kode yang terdeteksi selama 10 detik maka mobil akan mundur untuk mencari kemungkinan kode terlewati

4. Langkah selanjutnya akan di desain pendeteksi urutan gerak RC sesuai ID marker yang sudah disusun berdasarkan rute terpendek






Koding pythonnya seperti berikut :



import cv2
import socket
import time

# Konfigurasi UDP sesuaikan dengan koding mobil RC wifi
UDP_IP = "192.168.1.177"
UDP_PORT = 4210
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

def send_udp(data):
    sock.sendto(data.encode(), (UDP_IP, UDP_PORT))
    print(f"[UDP] Terkirim: {data}")

# URL RTSP dari kamera IP
rtsp_url = "rtsp://admin:XXXXXX@192.168.1.178:554/Streaming/Channels/102"

# Inisialisasi detector ArUco
aruco_dict = cv2.aruco.getPredefinedDictionary(cv2.aruco.DICT_APRILTAG_36H11)
parameters = cv2.aruco.DetectorParameters()
detector = cv2.aruco.ArucoDetector(aruco_dict, parameters)

target_id = 32
last_send_time = time.time()
last_detection_time = time.time()  # Untuk hitung mundur mundur
send_data = "0"
action_text = "Tidak Ada Deteksi"
has_sent_stop = False  # Hanya kirim "2" sekali per siklus

# Fungsi untuk menulis teks dan kotak
def draw_overlay(frame, text):
    font = cv2.FONT_HERSHEY_SIMPLEX
    cv2.putText(frame, f"Aksi: {text}", (10, 60), font, 1, (0, 255, 255), 2, cv2.LINE_AA)

cap = cv2.VideoCapture(rtsp_url)

while True:
    ret, frame = cap.read()
    if not ret:
        print("Tidak dapat menerima frame. Keluar...")
        break

    current_time = time.time()
    detected = False

    # --- DETEKSI APRILTAG ---
    corners, ids, rejected = detector.detectMarkers(frame)

    if ids is not None:
        for i in range(len(ids)):
            if ids[i][0] == target_id:
                corner = corners[i][0]

                # Gambar kotak di sekitar tag
                cv2.polylines(frame, [corner.astype(int)], True, (0, 255, 0), 2)

                # Hitung titik tengah
                cX = int((corner[0][0] + corner[2][0]) / 2)
                width = frame.shape[1]
                zona_kiri = width // 3
                zona_tengah = 2 * width // 3

                # Tentukan zona dan aksi
                if cX < zona_kiri:
                    action_text = "Kiri"
                    send_data = "3"
                elif cX < zona_tengah:
                    action_text = "Maju"
                    send_data = "1"
                else:
                    action_text = "Kanan"
                    send_data = "4"

                # Reset timer mundur
                last_detection_time = current_time
                has_sent_stop = False
                detected = True

                # Titik tengah
                cY = int((corner[0][1] + corner[2][1]) / 2)
                cv2.circle(frame, (cX, cY), 5, (0, 0, 255), -1)

                # Garis pembatas zona
                cv2.line(frame, (zona_kiri, 0), (zona_kiri, frame.shape[0]), (255, 0, 0), 1)
                cv2.line(frame, (zona_tengah, 0), (zona_tengah, frame.shape[0]), (255, 0, 0), 1)
                break

    # --- LOGIKA TIMER MUNDUR ---
    if not detected:
        elapsed_no_detection = current_time - last_detection_time
        if elapsed_no_detection >= 10 and not has_sent_stop:
            send_data = "2"
            action_text = "Mundur"
            send_udp(send_data)
            print("[INFO] Mengirim '2' (mundur)")
            has_sent_stop = True  # Tandai bahwa sudah dikirim
        else:
            action_text = "Tidak Ada Deteksi"
            send_data = "0"
    else:
        last_detection_time = current_time  # Reset timer jika ada deteksi
        has_sent_stop = False  # Reset agar bisa kirim ulang "2" di masa depan

    # --- KIRIM DATA SETIAP 2 DETIK ---
    if current_time - last_send_time >= 2:
        send_udp(send_data)
        last_send_time = current_time

    # --- TAMPILKAN DI LAYAR ---
    draw_overlay(frame, action_text)
    cv2.imshow('AprilTag Detection', frame)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# --- BERSIHKAN ---
cap.release()
cv2.destroyAllWindows()





SELAMAT MENCOBA !




Share:

Penghitung Lari Otomatis Berbasis Kamera - ArUco

 



Olahraga merupakan salah satu kegiatan penting dalam menjaga kesehatan jasmani serta meningkatkan disiplin dan semangat juang bagi para siswa. Salah satu bentuk latihan yang umum dilakukan di sekolah adalah lari, baik secara santai maupun sebagai bagian dari penilaian kebugaran jasmani. Dalam pelaksanaannya, pencatatan waktu tempuh biasanya dilakukan secara manual dengan bantuan stopwatch dan pengawasan langsung oleh guru olahraga.

Namun, metode pencatatan manual tersebut memiliki beberapa kelemahan, seperti potensi kesalahan penghitungan waktu, kurangnya objektivitas, serta ketidaknyamanan saat harus mengelola data hasil lari dari banyak siswa. Oleh karena itu, diperlukan suatu sistem yang dapat mencatat waktu lari secara otomatis, akurat, dan efisien.

Dengan memanfaatkan teknologi pengolahan citra digital melalui python dengan library OpenCV, serta marker visual seperti Aruco Tag atau AprilTag , telah berhasil dirancang sebuah sistem penghitung waktu lari berbasis kamera. Sistem ini mampu mendeteksi pergerakan siswa saat melewati garis start dan finish serta cek point secara real-time, sehingga waktu tempuh dapat dicatat secara otomatis tanpa campur tangan manusia.


PERLENGKAPAN – HARDWARE

1. Kamera CCTV dengan koneksi Wifi



Spesifikasi :
- Merek EZVIZ H1C
- Resolusi HD 1080p
- Konektivitas wifi
- Menggunakan power USB type C – DC 5 volt dan di supply menggunakan power bank (tahan hingga 5 jam)
- Memiliki dasar bawah ber-magnet
- Kebutuhan minimal 2 buah untuk start dan finish


2. Tripod kamera 1.7 meter


Spesifikasi :
- Tinggi max 1.7 meter
- Holder atas bisa ditempelkan base plat dari kamera H1C
- Kebutuhan disesuaikan dengan jumlah kamera


3. Access Point Outdoor 


Spesifikasi :
- Merek TP LINK – Pharos CPE 220
- Frekuensi 2.4 Ghz 
- Jangkauan ideal 1 km
- Memerlukan power berupa listrik AC 220volt / PLN


4. PC / Laptop



5. Topi / Rompi dengan Kode ArUco



ArUco Tag adalah jenis fiducial marker (penanda yang mudah dikenali) yang dikembangkan sebagai bagian dari library OpenCV. Bentuknya mirip dengan matriks persegi berwarna hitam dan putih, yang di dalamnya tersimpan informasi unik berupa kode biner. Setiap tag memiliki ID yang berbeda-beda, sehingga mudah dikenali dan dibedakan oleh sistem.

Silahkan baca terlebih dahulu penjelasan koding ArUco disini : https://www.aisi555.com/2025/06/pengenalan-aruco-april-tag-sebagai.html

AprilTag adalah alternatif lain dari ArUco yang dikembangkan oleh University of Michigan. Sama seperti ArUco, bentuknya juga berupa persegi dengan pola biner di dalamnya. Namun, AprilTag memiliki algoritma deteksi yang lebih presisi dan tahan terhadap gangguan lingkungan seperti perubahan cahaya, sudut pengambilan gambar, dan gerakan cepat.

AprilTag juga dilengkapi dengan kemampuan error correction , sehingga meskipun sebagian dari tag tertutup atau rusak, sistem masih bisa mengenali ID-nya.

Keunggulan AprilTag:

- Deteksi lebih akurat dan stabil.
- Lebih tahan terhadap noise dan variasi lingkungan.
- Cocok untuk aplikasi robotika, augmented reality, dan tracking objek real-time.
Untuk membuat kode ini bisa menggunakan layanan online : https://chaitanyantr.github.io/apriltag.html dengan contoh seting seperti gambar berikut:


Denah pemasangan kamera pada lapangan ideal :




Proses Pencatatan Putaran Lari : 

  1. Tiap pelari akan dicatat oleh sistem kapan waktu mulai start oleh kamera 1 sehingga wajib melalui pendeteksian kamera 1, dengan kata lain tiap pelari boleh bergantian startnya. 
  2. Kamera 2 hanya sebagai pendeteksi apakah si pelari benar benar mengikuti kegiatan terutama ketika lapangannya tidak ideal semisal di lingkungan atau jalan seputaran sekolah. 
  3. Kamera 3 dan 4 merupakan kamera finish yang akan mendeteksi kode Aruco secara “dobel cek” sehingga kamera mana yang terlebih dahulu mendeteksi kode ID pelari, maka pelari tersebut akan dianggap telah melewati garis finish. 
  4. Selanjutnya sistem mencatat waktu lap dan menambahkan jumlah putaran dari  deteksi masing-masing ID  pelari   ketika  terdeteksi melewati kamera 3 atau 4 hingga jumlah lap / putaran terpenuhi.
  5. Selanjutnya apabila kegiatan berakhir maka dapat dibuatkan pelaporannya dengan melakukan validasi data di excel dan hasilnya akan berformat seperti ilustrasi berikut:

Data kemudian dapat dipergunakan sebagai laporan pada mata pelajaran olahraga atau di upload ke database sesuai kebutuhan dari dinas pendidikan. Salah satu pemanfaatan  dari alat ini adalah sebagai tolak ukur kebugaran siswa dalam kaitannya dengan program Makan Bergisi Gratis (MBG) yang sedang berlangsung.




Share:

Rabu, 06 November 2024

Praktisi Mengajar - 4 Season di Unesa Surabaya Dan Kini Hadir di Undiksha Singaraja

 


Perjalanan hidup sang penulis blog ini memang rada-rada mirip film korea, sketsa komedinya cukup banyak muncul di latar belakang cerita yg mellow menye-menye, begitu juga marah emosi ala oppa "issshhh sipaall", terlalu lebay mungkin bagi beberapa orang, tapi jangan salah ada juga  kisah ironi dan juga diwarnai cerita yg menunjukkan kegigihan hidup ala perang korea.

Terlintas ingatan anak umur 6 tahun di tahun 1986, saat itu Ellyas pical sang petinju legendaris baru saja menang melawan petinju korea jo do chun, waktu itu nontonnya di rumah paman yang kebetulan sedang "mlaspas" sanggah kemulan (tempat sembahyang). Saat itu sang pandita memercikkan air suci ke kepalaku dan seraya berkata " kamu mirip orang korea !" Mungkin omongan orang suci ini didengar oleh tuhan dan 20 tahun kemudian saya bekerja bersama orang korea dan hingga kini masih membekas sifat-sifat gigihnya ras kuning yang rada "kasar" menurut beberapa orang.



Nah kan, bener kata bapak ida pedande tahun 86 itu, saya mirip orang korea... Bangga bisa mejeng di depan jalanan kota suwon tahun 2008. Kisah ini merupakan insert coin pertama saya di kehidupan sampai akhirnya game over episode bersama sajangnim di 2013, mungkin terlihat prematur namun lumayan ada hikmahnya ketika harus di PHK dan menggunakan kesempatan insert coin ke-2 kalinya untuk re-spawn lagi di  game dengan map yang berbeda.



Duhh kalau inget coach indra safri dan evan dimas pasti terbayang momen mereka mengalahkan team u-19 korea di GBK tahun 2013 dan senin paginya saya menerima kenyataan pahit membuka amplop surat pemecatan di kantor. Ironi nya cuman hepi ketika nobar di warkop yang hanya berselang gak sampe 10 jam menjadi kesedihan yang menyayat hati...hikss hiksss



Kisah insert coin ke dua kalinya ini cukup berhasil karena membawa saya ke pengalaman menjadi pengusaha kecil yang cukup mendatangkan banyak ilmu-ilmu tak terduga. Mulai dari mengatur pajak, pengelolaan resource dan manajemen karyawan, penanganan konflik masyarakat dan banyak lagi selain paling utamanya adalah penghasilan yang dibilang stabil sampai bisa menggaji belasan karyawan di sebuah kantor yang cukup asri. Tapi pandemi membuat semuanya harus unplug the cord - power off dan terpaksa berdiam diri menunggu pandemi berakhir. Inilah momen Game Over ke-2 kalinya yang terpaksa dan harus menunggu momen yg tepat untuk insert coin yang ke-3 kalinya !



Kembali ke akar saya yang seorang engineer elektronika - mikrokontroler, inilah yang saya lakukan di era pandemi itu, kembali belajar hal-hal yang mungkin asing di telinga namun untungnya masih bisa nyambung di umur 40-an. Dan blog inilah tempat saya curahkan semua hal yang telah saya pelajari sembari mengobati kesepian karena tak ada lagi gurauan para karyawan di kantor yang harus saya tutup dan pindah ke lokasi yang lebih kecil. Momen ketika tutup inilah mengharuskan saya insert coin untuk ke-3 kalinya di 2021.


screenshot ketika jadi pengisi webinar nasional IOT ( baca disini)


Dan berhasil ! Insert coin ke tiga kalinya ini map nya berubah di lingkungan kampus Universitas Negeri Surabaya - Fakultas Vokasi - Prodi D4 Teknik Listrik. Program praktisi mengajar memang banyak membutuhkan praktisi dan saya sebagai orang yg "mengaku" praktisi yang yahh lumayan lahh, diundang oleh bapak Widi Ariwibowo selaku dosen Unesa untuk mencoba berpartisipasi. Walau akhirnya gagal di seleksi nasional praktisi mengajar namun tenaga saya masih dibutuhkan di kelas mikrokontroler. Lumayan lah kini otak saya disibukkan dengan ide-ide penelitian mengenai teknologi Kontrol-IOT-AI dan sel-sel otak saya, synapsisnya berhasil renew kembali. 



Kisah kegigihan ala series drama korea ini berlanjut ketika di tahun ke empat, saya diundang untuk mengajar di kelas kolaborasi sebagai praktisi, di kampus yg lokasinya tidak jauh dari rumah masa kecil saya di Universitas Pendidikan Ganesha Singaraja - Fakultas Teknik dan Kejuruan - Prodi Teknik Rekayasa Sistem Elektronika. Mungkin terlihat simple mengajar kuliah dasar anak semester 1 namun mimpinya sangat besar ingin berbagi ilmu elektro di masa yang akan datang, sehingga mahasiswa baru ini memiliki gambaran kedepannya akan menghadapi hal apa saja. Tidak seperti ketika saya kuliah dulu, teringat saat semester 3 saya merasa salah masuk jurusan, kenapa?  Karena kecewa harus menghadapi kuliah teknik elektro yang FULL MATEMATIKA ...Kapan nyoldernya ?  

Sebagai penutup tulisan, saya sertakan video mengajar saya yang mungkin akan membuat mengantuk (karena semi mendongeng) dan siapa tahu ada yang berani mengundang saya untuk mengajar di manapun, smk-sma-kampus, hayuk aja selama masih ada dalam koridor elektronika digital.





Share:

Selasa, 26 Maret 2024

[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 SDR 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:

Selasa, 06 Juni 2023

[ Node - RED ] Menghubungkan Relay Modbus Ke Dalam Node-Red Web UI


 

Untuk melanjutkan praktek berikut ini, disarankan terlebih dahulu membaca penjelasan mengenai Relay Modbus 4 channel disini dan persiapkan bahan-bahan nya yang masih sama. Kali ini akan saya jelaskan langkah menghubungkan Modul Relay Modbus-Rs485 ke node red, sehingga untuk pembaca yang belum mengenal node red dapat memulai perkenalannya dari tulisan saya sebelumnya disini.

Pada beberapa tulisan node-red sebelumnya saya hampir selalu menggunakan perangkat input / sensor modbus sehingga hanya terbatas pada function modbus 01, 03 dan 04 (read coil, input and read register) seperti pada praktek pembacaan pzem disini.  Kali ini saya bahas alat sebagai output yg cocok untuk membahas function 05 (write single coil). Perhatikan perintah serial modbus rtu untuk menghidupkan relay 1 berikut ini ( asumsi id device = 01):


01 05 00 01 FF 00 DD FA


Kode diatas berupa Hexa jadi kalau dipisah-pisah berdasarkan standar modbus adalah seperti berikut:

01     =  Alamat device id slave
05     =  Perintah Kontrol Single Relay/ function 05
00 01  = 2 byte alamat relay 0x0001
FF 00  = 2 byte yang menyatakan logic TRUE 
DD FA  = Checksum / CRC 16 modbus



Sedangkan untuk melepas / open  relay 3 kode modbus rtu nya seperti berikut ini :


01 05 00 03 00 00 3D CA


Kode diatas berupa Hexa jadi kalau dipisah-pisah berdasarkan standar modbus adalah seperti berikut:

01     =  Alamat device id slave
05     =  Perintah Kontrol Single Relay/ function 05
00 03  = 2 byte alamat relay 0x0001
00 00  = 2 byte yang menyatakan logic FALSE
3D CA  = Checksum / CRC 16 modbus


Sedangkan pada node red flow,  palete yg kita pilih adalah Modbus Write :




Penjelasan :

  1. Function yang dipilih 05 (Force Single Coil)
  2. Alamat dari relay (dimulai dari 0 untuk modul relay rs485 yg dipakai)
  3. Komunikasi yang dipakai, seting lanjutannya dibawah ini.




Jadi untuk meng-"CLOSE" dan "OPEN" relay sesuai address nya, maka cukup di inject nilai logika boolean True dan False ke Node Modbus Write.



Dari flow diatas maka ketika tombol inject ditekan akan mengirim logika true dan false langsung ke perangkat relay. Sesimpel itu kok ! Lalu bagaimana jika mengaktifkan dan mematikan semua relay? Kita akan gunakan perintah / function 15 (0F).



01 0F 00 00 00 08 01 FF BE D5


Kode diatas berupa Hexa jadi kalau dipisah-pisah berdasarkan standar modbus adalah seperti berikut:

01     =  Alamat device id slave
0F     =  Perintah Kontrol Multiple Relay/ function 15
00 00  = 2 byte alamat awal relay start 0x0000
00 08  = 2 byte alamat terakhir relay 0x0008 (kenapa 8 ? karena modul yg paling banyak 8 relay)
01     = 1 byte yang akan ditulis ke relay
FF     = 1 byte yang mewakili relay 8 s/d 0  sesuai bit nya, jadi bisa kombinasi bit

BE D5    = checksum

*) Keterangan FF berarti semua relay (8 buah ) mendapat logika 1 ( 1 1 1 1 1 1 1 1 ) alias nyala semua, jadi kalau 00 berarti mati semua relaynya




Pada flow node red kita akan gunakan function 15 dan kita inject berupa array / json yang berisi 8 buah logika true dan false. Contoh flownya bisa dilihat dibawah.








Sehingga akan sangat mudah merubah node inject menjadi node web ui berupa "switch" seperti pada gambar flow dibawah. Namun jika masih awam dengan web UI nya node red bisa membaca disini dan disini.






Outputnya menjadi lumayan menarik, bisa mengontrol modul relay modbus-rs485 melalui web browser.







Share:

Kontak Penulis



12179018.png (60×60)
+6281331339072

Mail : ahocool@gmail.com

Site View

Categories

555 (8) 7 segmen (3) adc (4) amplifier (2) analog (19) android (14) antares (11) arduino (29) 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 (27) euro2020 (13) gcc (1) gis (3) gsm (1) iklan (1) infrared (2) Input Output (3) iot (78) 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 (37) proyek (1) python (11) radio (31) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) SDR (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) statistik (5) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (5) transistor (2) troubleshoot (3) tulisan (96) tutorial (108) tv digital (6) tvri (2) unesa (8) vu meter (2) vumeter (2) wav player (3) wayang (1) wifi (3) yolo (9)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika