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

Senin, 30 Juni 2025

Kirim Gambar Melalui Radio FM/HT/Amatir Dengan Modulasi COFDMTV

What? Mana bisa ? ehh jangan heran dengan judulnya. Yang saya tulis ini pastinya sudah ada yang membuatnya terlebih dahulu (maklum otak cukup kentang). Jadi saya akan membuktikan "proof of concept" pada praktek kita kali ini, yang masih nyambung dengan tulisan sebelumnya yaitu kirim-kiriman data digital melalui perangkat radio sederhana yaitu FM (baca disini). Apa sih itu COFDMTV ? Kalau mau googling silahkan saja search "shredpix dan assempix" dan kalau ada link di google play nya silahkan instal di HP Android kamu.

Dalam dunia penyiaran modern, siaran televisi tidak lagi harus bergantung pada infrastruktur besar atau kabel jaringan. Dengan perkembangan teknologi komunikasi nirkabel dan perangkat Software Defined Radio (SDR), siaran TV digital bisa dibuat secara mandiri bahkan dari rumah. Salah satu teknologi kunci di balik kemungkinan ini adalah COFDM (Coded Orthogonal Frequency Division Multiplexing) — metode modulasi yang digunakan dalam standar penyiaran digital seperti DVB-T.

COFDM dikenal karena ketahanannya terhadap gangguan pantulan sinyal (multipath interference ), menjadikannya pilihan ideal untuk siaran nirkabel di lingkungan kota maupun transmisi mobile. Namun, membuat sistem siaran berbasis COFDM sering kali terdengar rumit dan mahal. Untungnya, ada dua tools open-source yang memudahkan hal tersebut: ShredPix sebagai pemancar dan AssemPix sebagai penerima.

ShredPix adalah perangkat lunak ringan yang mampu mengubah video dan audio menjadi transport stream MPEG-TS , format standar dalam penyiaran digital. Ia juga bisa dikonfigurasi untuk bekerja sesuai parameter COFDM agar siap ditransmisikan melalui perangkat SDR seperti LimeSDR atau HackRF. Di sisi penerima, AsemPix hadir sebagai solusi dekoding yang intuitif dan mudah digunakan, mampu menangkap dan menampilkan siaran langsung dari udara.

ShredPix adalah perangkat lunak open-source yang dibuat oleh Siret OK7CW yang berfungsi untuk:

  • Mengenkapsulasi video/audio ke dalam format transport stream MPEG-TS
  • Mengatur parameter COFDM sesuai dengan standar DVB-T
  • Siap dikirimkan ke perangkat SDR (Software Defined Radio) untuk ditransmisikan

Fitur Utama:

  • Mendukung input video dari webcam, file, atau capture card
  • Menyusun paket TS (Transport Stream)
  • Bisa dikoneksikan ke LimeSDR, HackRF, dll
  • Ringan dan bisa dijalankan di Raspberry Pi

🔗 Repository: https://github.com/siret/shredpix


AssemPix adalah perangkat lunak penerima (receiver) untuk sistem COFDM DVB-T.

  • Digunakan untuk menerima dan mendekode siaran COFDM
  • Bekerja bersama SDR seperti LimeSDR, RTL-SDR, dll
  • Menampilkan video/audio hasil dekoding

Fitur Utama:

  • Mendukung demodulasi COFDM
  • Mampu menangkap siaran dari ShredPix
  • Tampilan GUI sederhana
  • Cocok untuk sistem penerima portabel atau monitoring

🔗 Repository: https://github.com/siret/asempix


🛠️ Alur Kerja Sistem COFDM dengan ShredPix & AssemPix


[Video/Audio] → [ShredPix] → [SDR Pemancar] → (Transmisi Udara) → [SDR Penerima] → [AssemPix] → [Video/Audio]

📌 Contoh Penggunaan:

  • Sebuah komunitas lokal ingin menyiarkan acara langsung tanpa internet
  • Radio amatir mengirimkan video dari lokasi remote
  • Proyek pendidikan tentang penyiaran digital

Gabungan ShredPix dan AssemPix membuka peluang baru bagi komunitas lokal, radio amatir, hingga penggemar DIY untuk membuat stasiun TV mini mereka sendiri. Tidak hanya sekadar eksperimen teknis, tetapi juga sarana edukasi, dokumentasi, atau bahkan siaran darurat di area tanpa akses internet. Semua itu bisa dilakukan dengan perangkat sederhana seperti Raspberry Pi dan antena buatan sendiri.




Di dalam artikel ini, kita akan menjelajahi secara praktis bagaimana COFDM bekerja, bagaimana ShredPix dan AssemPix menghidupkan ide pengiriman gambar digital, serta langkah-langkah awal untuk memulai eksperimen sendiri. Jadi bisa dipakai anak-anak Pramuka ketika ingin mengirimkan gambar saat kegiatan pencarian jejak maupun pendakian gunung tanpa harus terhubung dengan internet, hanya bermodalkan perangkat pemancar dan penerima radio FM maupun pesawat radio HT.

Pastikan perangkat yang anda gunakan kali ini masih seperti yang kita gunakan pada praktek sebelumnya dan sebaiknya menggunakan hp android kedua menjadi lebih mudah tentunya.


1. Instal aplikasi shredpix dan assempix pada masing-masing HP dan kemudian bisa mencoba-coba mengirimkan gambar melalui speaker dan mikrofon pada kedua HP. Di sisi pengirim pilih gambar yg mau dishare ke HP kedua dan tekan tombol send/share dan pilih shredpix.



2. Dekatkan kedua HP dan akan terlihat magic nya dimana pada HP pengirim mengeluarkan suara burst "ter-dekode" dan di sisi penerima yang ada aplikasi assempix gambar akan muncul setelah beberapa saat. Ada juga  animasi waterfall  serta konstalasi frekuensi audio yang ditangkap beserta call sign nya.






3. Silahkan berkreasi mencoba-coba jenis modulasi 8PSK ata QPSK dimana pada gambar diatas terlihat perbedaan grafik modulasinya. Secara teori seperti ini :


BPSK (Binary Phase Shift Keying)

  • Jumlah simbol : 2 (0° dan 180°)
  • Tingkat kompleksitas : Rendah
  • Robust terhadap noise : Tinggi
  • Effisiensi spektral : Rendah (hanya 1 bit/simbol)

✅ Mudah dideteksi/didekode , cocok untuk kondisi sinyal lemah atau banyak gangguan.


QPSK (Quadrature Phase Shift Keying)

  • Jumlah simbol : 4 (0°, 90°, 180°, 270°)
  • Tingkat kompleksitas : Sedang
  • Effisiensi spektral : Lebih baik daripada BPSK (2 bit/simbol)
  • Robust terhadap noise : Cukup tinggi

✅ Masih relatif mudah didekode, tapi membutuhkan sinkronisasi fase yang lebih baik dibanding BPSK.


8PSK (8-Phase Shift Keying)

  • Jumlah simbol : 8 (setiap 45°)
  • Tingkat kompleksitas : Tinggi
  • Effisiensi spektral : Lebih tinggi (3 bit/simbol)
  • Robust terhadap noise : Lebih rendah karena jarak antar fase kecil

❌ Lebih sulit didekode karena:

  • Jarak sudut antar simbol lebih kecil → rentan terhadap kesalahan akibat noise
  • Memerlukan deteksi fase yang presisi
  • Kebutuhan SNR (Signal to Noise Ratio) lebih tinggi agar BER (Bit Error Rate) tetap rendah

✅ kesimpulan:

Yang paling mudah didekode adalah BPSK , diikuti oleh QPSK, lalu 8PSK.


📌 Rekomendasi Berdasarkan Bandwidth  di radio FM di 200 kHz:

  • Jika jaringan kamu memiliki kualitas sinyal buruk atau jarak jauh , gunakan BPSK
  • Jika ingin meningkatkan data rate tanpa mengorbankan terlalu banyak reliabilitas, gunakan QPSK
  • Gunakan 8PSK hanya jika kamu punya sinyal kuat dan lingkungan bebas interferensi, serta benar-benar butuh throughput tinggi



4. Saya kemudian merekam output audio dari salah satu gambar yang di shredpix kemudian saya pindahkan ke MP3 player untuk selanjutnya saya putar pada pemancar FM saya. Dan saya berhasil mengirimkan gambar dengan baik setelah beberapa kali percobaan mengubah jenis modulasi (yang terbaik QPSK) dan juga mengatur volume di pemancar agar terdengar dengan jelas.





5. Kemudian saya menggunakan radio FM pada smartphone android yang juga ter-install apk assempix, dan berhasil menampilkan gambar secara sempurna.




Dalam situasi darurat bencana alam seperti gempa bumi, banjir, atau badai, infrastruktur komunikasi seperti jaringan internet dan seluler sering kali lumpuh. Di sinilah teknologi nirkabel berbasis radio amatir menjadi sangat krusial. COFDM TV, dengan bantuan perangkat lunak seperti ShredPix dan AssemPix, menawarkan solusi inovatif untuk mengirimkan informasi visual secara real-time — mulai dari kondisi lapangan, koordinasi evakuasi, hingga penyampaian instruksi penyelamatan — tanpa bergantung pada internet. 

Dengan memanfaatkan radio HT di frekuensi VHF/UHF dan atau perangkat SDR sederhana seperti dongle yg saya punya seharga 100rb (baca disini ), tim penyelamat atau relawan bisa membuat sistem siaran mini untuk menyebarkan informasi penting ke posko lain atau masyarakat terdampak. Keandalan COFDM terhadap gangguan multipath dan kemampuannya bekerja di bandwidth sempit menjadikannya pilihan ideal dalam lingkungan yang tidak stabil. Dengan dukungan komunitas radio amatir yang tersebar luas, teknologi ini bukan hanya sekadar eksperimen teknis, tetapi juga senjata andal dalam mitigasi bencana dan penyelamatan korban bencana.

Share:

Minggu, 29 Juni 2025

Kirim pesan teks melalui radio FM/HT/Amatir dengan COFDM - Rattlegram




Setahun lalu saya pernah menampilkan demo pengiriman data IOT melalui radio HT menggunakan bantuan AI dimana saya mengubah pembacaan sensor suhu menjadi suara menggunakan ESP8266 ==> Dipancarkan oleh HT/Walkie Talkie dan kemudian oleh python dan  penerima radio SDR merubahnya kembali ke teks pembacaan sensor dengan bantuan library google speech to teks. Saya juga sisipkan di akhir tulisan, video pengiriman data teks yang lebih cepat menggunakan applikasi Rattlegram (baca disini). Yahh selanjutnya mungkin karena tidak ada yang menarik, padahal saya sudah menemukan CLI via linux untuk meng-enkode-dekode pesan rattlegram, namun yah terlupakan begitu saja  sampai saat saya mengoprek radi FM jadi teringat kembali. Ayo kita bahas keseruannya.

Namun agar terihat lebih "mbois" kita bahas dulu teorinya yuk ..

Bagi para penghobi radio amatir, mengirimkan informasi tanpa kabel, tanpa internet, dan hanya dengan gelombang udara adalah tantangan sekaligus kepuasan tersendiri. Salah satu alat yang semakin populer di kalangan DXer dan pemerhati radio digital adalah Rattlegram — sebuah aplikasi inovatif yang memungkinkan pengguna untuk mengirimkan pesan teks singkat menggunakan siaran radio amatir sebagai "jembatan".

Namun, sebelum kita membahas lebih jauh tentang bagaimana cara kerja Rattlegram dan bagaimana seorang radio amatir bisa memanfaatkannya, tidak ada salahnya untuk melihat terlebih dahulu teknologi dasar yang membuat semua ini mungkin terjadi: COFDM(Coded Orthogonal Frequency Division Multiplexing).


Awal Mula COFDM: Fondasi Radio Digital Modern


COFDM mulai dikembangkan pada akhir dekade 1980-an sebagai solusi untuk masalah propagasi sinyal dalam sistem penyiaran digital terestrial. Teknologi ini dirancang untuk menangani gangguan multipath — yaitu ketika sinyal diterima dari berbagai jalur akibat pantulan dari gedung atau gunung — yang sering merusak kualitas siaran analog.

Dengan membagi data menjadi ratusan subcarrier kecil yang saling tegak lurus (orthogonal), COFDM memungkinkan transmisi data yang stabil meski dalam kondisi lingkungan yang kurang ideal. Teknologi ini kemudian menjadi fondasi bagi standar penyiaran digital seperti DVB-T (Digital Video Broadcasting – Terrestrial) dan juga digunakan dalam sistem radio digital seperti DRM (Digital Radio Mondiale), yang banyak diminati oleh komunitas radio amatir.


Lahirnya Rattlegram: Memanfaatkan Siaran Digital untuk Komunikasi Data Teks



Ide awal Rattlegram muncul dari keinginan untuk memanfaatkan siaran radio digital bukan hanya sebagai media penyiaran konten audio/video, tapi juga sebagai sarana pengiriman data secara asinkron. Dinamakan “rattlegram” karena proses penerimaan sinyal yang kadang berisik dan bergerak-gerak (seperti *rattle*), aplikasi ini memungkinkan pengguna untuk menyisipkan pesan teks ke dalam siaran radio analog maupun  digital yang sedang disiarkan oleh stasiun radio yang mendukung format DAB (Digital Audio Broadcasting) atau DRM.  (bisa dibaca teknisnya disini)

Pesan-pesan tersebut akan ditransmisikan bersama siaran tersebut dan dapat diterima oleh siapa saja dengan perangkat penerima Radio Amatir dan aplikasi Rattlegram. Ini menjadikannya alat yang sangat menarik bagi para penghobi radio digital dan radio amatir yang ingin berkomunikasi jarak jauh tanpa bergantung pada infrastruktur internet.


Langkah praktek saya kali ini seperti ini :


1. Install aplikasi Rattlegram di Smartphone dan kemudian lakukan setting call signs serta mencoba kirim-kiriman data  teks antar HP melalui speaker dan mikrofon yang langsung diakses oleh aplikasi.




2. Rekam salah satu output audio dari pesan teks yang dimasukkan pada aplikasi rattlegram, lalu melalui pemutar MP3 kirimkan suara yg ter-encode COFDM ini menuju frekuensi pemancar FM

 



3. Karena audionya sudah memancar, maka dapat diterima oleh penerima radio FM dan suaranya dapat di Encode dari kejauhan.


4. Bisa juga menggunakan Radio FM pada HP dan kemudian audio FM nya di keluarkan melalui speaker dan sekaligus aplikasi rattlegramnya meelakukan encode sampai teks yang terkodekan didalamnya dapat terbaca.





Pemanfaatan selanjutnya adalah untuk mengirimkan data pembacaan sensor yang kemudian dapat dikirimkan secara jarak jauh seperti tugas akhir yang dibuat oleh mahasiswa unesa dibawah berikut:





Share:

[SDR] Menengok Kit Pemancar FM Legendaris Saturn 5 Watt di 2025

 


Wahh nostalgia yang tak terkira muncul di benak ketika menemukan rangkaian ini di sebuah lapak loak di minggu pagi di kota Surabaya. Langsung aja saya klik keranjang ehhh ini bukan OLSHOP... ya harus tawar menawar dulu sampai si istri yang ikut jalan pagi kesal karena menawarku kelamaan. Pake ngecek harga di apk olshoplah ..langsung aja gak pake babibu dompet istri meluncur duit 25rb dan senyum pedagang asal madura itu pun melebar. 

Di tahun 90an Kit Saturn ini bersama clone nya yaitu kit Ronica pastilah menjadi oprekan anak gaool jaman segitu, maklum hidup di kampung hanya anak sultan yg kebeli "gadget" yang masa itu berupa radio HT, bahkan pager atau HP pun belum terdengar sejarahnya. Ya bagi pengikut ekskul elektronika saat smp-sma, merakit pemancar adalah level tertinggi dari ilmu perakitan alias "OP" kalau anak jaman sekarang. 

Apalagi kegiatan ilegal ini kemudian banyak dimanfaatkan untuk "nge-brik" alias komunikasi 1 arah bergantian di jalur FM antar pecinta solder jaman itu. Walau kemudian banyak sweeping dari balmon atau orari, namun kegiatan ini di tahun 2025 pernah saya perhatikan terdeteksi perangkat SDR saya di daerah malang raya walau frekuensinya diturunkan ke 80Mhz sehingga butuh tuner penerima khusus.



Gak perlu pusing dengan rangkaian dehh..yang penting kita rakit aja kemudian akan saya lihat bagaimana performanya di RTL-SDR yang saya punya.


Dan muncullah suara saya di sekitar 93Mhz, tapi saya takut karena berada dikota besar dan banyak aparat disekitar yang masih menggunakan jalur radio analog, maka saya gak berani bersiaran lama-lama, apalagi setelah saya cek harmonics yang muncul cukup besar untuk mengganggu jalur radio minimal satpam kompleks. Perhatikan tabel harmonics berikut :


Kita cek berapa db di harmonics ke 2 yang bisa saya terima dari jarak 10 meter:



Lumayan juga sampai -20db, lalu kita maju ke frekensi harmonics  ke-3:



 

Suara musicnya masih terdengar jelas, lanjut ke harmonik ke 4 :




Nah ini yang bahaya karena ada komunikasi radio militer disini, dan cukup besar juga pancarannya. Kita cek harmonics yang frekuensi yg lebih tinggi takutnya bertabrakan dengan siaran TV digital tetangga :


Wahh kecil nihhh jadi lega...eittt tetep aja melakukan pancaran frekuensi broadcast itu ilegal lhoo kalau tanpa ijin. Makanya  sampai teringat memori di kampung saya, saking takutnya pemerintah saat itu di tahun 90an, saat musim kampanye banyak pemancar FM ilegal dipakai untuk menyebarkan berita aneh-aneh. Ingatan saya waktu itu orari dan balmon membuat pancaran "noise" di seputaran 75-108 Mhz sampai membuat sinyal pemancar yg lemah menjadi gak terdengar di pesawat penerima dan menjadikan pancaran siaran FM dari kota lain ikut terganggu akibatnya. Booster FM untuk mendengarkan siaran dari pulau sebelah menjadi mubazir.

Ini semua terjadi karena tak ada LPF alias filter untuk menghalangi frekuensi harmonics yg selalu berada diatas jalur FM broadcast. Jadi perangkat radio yang resmi selalu dipasangkan LPF sebelum menuju ke antena dan karena memiliki daya yang beribu watt maka umumnya kumparannya dibuat menggunakan coil hollow (tabung aluminium) yang diberikan Nitrogen sebagai pendingin. 

Di bagian berikutnya saya akan mencoba mengirimkan data digital, ber nostalgia ketika kuliah mengirimkan data teks menggunakan Pemancar FM dan soundcard dengan protokol X.25. Apakah masih worthed di era serba whatsapp sekarang ini ?



Share:

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:

Modifikasi Mobil - Mobilan RC 27Mhz Menjadi Berbasis WiFi

 



Tulisan kali ini sebenarnya masih ada hubungannya dengan kerjasama saya Bersama Fakultas Vokasi Unesa dalam hal penelitian dibidang Transportasi. Gaya nya sih pengen membuat robot AGV seperti di gudang nya amazon sana yang banyak bertebaran videonya di medsos, namun seperti biasa kita mainan yang kecil-kecilan dulu. Yuk kita utak-atik mobil-mobilan RC Truk seharga 100ribuan dulu. Sekalian mau melihat bagaimana sih kontrol yang didalamnya ?



Truk mainan Remote diatas sangat umum di toko mainan bahkan mungkin hampir dimiliki oleh semua anak kecil (cowok) karena hemat saya lebih mengajarkan kegiatan outdoor ke anak daripada berkutat dengan smartphone melulu. Namun setelah saya perhatikan jangkauan kendali remotenya cukup pendek sehingga otomatis ketika diatas 5 meter gak akan nyampai tuh kendalinya. Menjadi keheranan saya kenapa sependek itu? Apakah agar anak ikutan berlari dibelakang mobil-mobilan? Namun secara teknis ini terjadi karena ketika saya bongkar antena di dalam kontroler disisi mobil-mobilannya hanya berupa kabel saja. Harus dikasi tambahan apa ya agar jauh?



Gambar diatas merupakan modul kontroler yang dapat dibeli di berbagai onlineshop (bahkan sepaket dengan motor DC nya) hanya 25 ribu saja (dapet untung dari mana coba produsennya ...ckckckckc). Dari berbagai tulisan dan video di internet rata-rata yang dilakukan adalah menambahkan antena dan jangkauannya gak jauh juga. Nah bagaimana dengan memanfaatkan wifi dirumah yang lumayan jauh jangkauannya ? Kita bisa gunakan bantuan mikrokontrolelr ber wifi macam ESP8266/ESP32.

Prinsipnya sebagai berikut:

1. Gunakan relay 5V atau transistor sebagai penyambung tombol yang ada pada modul remote, kemudian di kontrol oleh pin dari ESP32. Saya lebih memilih transistor kebetulan ada banyak transistor PNP 2N3906 di gudang sehingga hanya butuh tambahan resistor 1K ke basis dan kontrol logika aktif LOW untuk menyambungkan tombol switch. Ilustrasinya seperti berikut : 




2. ESP32 terhubung dengan wifi rumah dan menggunakan komunikasi UDP / TCP sebagai protokol pengiriman data. Perintah yg dikirim berupa teks "1" untuk maju, "2" untuk mundur, "3" belok kiri, "4" belok kanan dan "0" untuk stop.
3. Untuk kontrol jarak jauh (kanan kiri maju mundur) bisa menggunakan aplikasi smartphone android UDP terminal, seperti pada gambar paling atas. Saya ada juga koding APK sendiri namun saya bahas lain waktu. 
4. Remote dapat di bongkar menyisakan PCB nya saja dan taruh  bersama ESP32 diatas / didalam back truk. Jangan lupa menambahkan Power suply berupa powerbank agar dapat mensuply ESP32 dan juga modul remote. 
5. Saya menyambungkan pin 3.3 Volt dari ESP32 ke pin baterai + dari modul remote. 










Koding di ESP32 :


#include <WiFi.h>
#include <WiFiUdp.h>

// Konfigurasi WiFi sesuaikan
const char* ssid = "nama wifi";
const char* password = "paswordnya";

// IP statis sesuaikan, agar tidak berubah ubah
IPAddress ip(192, 168, 1, 177);
IPAddress gateway(192, 168, 1, 1);     // samakan IP router yg digunakan
IPAddress subnet(255, 255, 255, 0);

// Port UDP nya bebas
unsigned int udpPort = 4210;
WiFiUDP udp;

// Pin kendali sesuaikan dengan pin di ESP32 yg kamu pakai
#define MAJU_PIN    15
#define MUNDUR_PIN   2
#define KANAN_PIN    4
#define KIRI_PIN     5

void setup() {
  // Inisialisasi pin sebagai output
  pinMode(MAJU_PIN, OUTPUT);
  pinMode(MUNDUR_PIN, OUTPUT);
  pinMode(KANAN_PIN, OUTPUT);
  pinMode(KIRI_PIN, OUTPUT);

  // Set awal semua pin HIGH (non-aktif karena aktif LOW)
  digitalWrite(MAJU_PIN, HIGH);
  digitalWrite(MUNDUR_PIN, HIGH);
  digitalWrite(KANAN_PIN, HIGH);
  digitalWrite(KIRI_PIN, HIGH);

  // Mulai koneksi WiFi dengan IP statis
  WiFi.config(ip, gateway, subnet);
  WiFi.begin(ssid, password);

  Serial.begin(115200);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\nKoneksi WiFi berhasil");
  Serial.print("IP Address: ");
  Serial.println(WiFi.localIP());

  // Mulai UDP
  udp.begin(udpPort);
  Serial.printf("Listening on UDP port %d\n", udpPort);
}

void maju()
{

    digitalWrite(MAJU_PIN, LOW );
    digitalWrite(MUNDUR_PIN, HIGH);
    digitalWrite(KANAN_PIN, HIGH);
    digitalWrite(KIRI_PIN, HIGH);

  Serial.println("ini maju ...");
}

void mundur()
{

    digitalWrite(MAJU_PIN, HIGH );
    digitalWrite(MUNDUR_PIN, LOW);
    digitalWrite(KANAN_PIN, HIGH);
    digitalWrite(KIRI_PIN, HIGH);

    Serial.println("ini mundur ...");

}

void kiri()
{

    digitalWrite(MAJU_PIN, LOW);
    digitalWrite(MUNDUR_PIN, HIGH);
    digitalWrite(KANAN_PIN, HIGH);
    digitalWrite(KIRI_PIN, LOW);


    Serial.println("ini ngiri ...");
  
}

void kanan()
{

    digitalWrite(MAJU_PIN, LOW );
    digitalWrite(MUNDUR_PIN, HIGH);
    digitalWrite(KANAN_PIN, LOW);
    digitalWrite(KIRI_PIN, HIGH);

    Serial.println("ini nganan ...");
}

void mandek()
{

    digitalWrite(MAJU_PIN, HIGH);
    digitalWrite(MUNDUR_PIN, HIGH);
    digitalWrite(KANAN_PIN, HIGH);
    digitalWrite(KIRI_PIN, HIGH);

    Serial.println("ini mandek ...");
}

void loop() {


  char packetBuffer[255]; // Buffer untuk menerima data UDP

  // Cek apakah ada paket UDP masuk
  int packetSize = udp.parsePacket();
  if (packetSize) {
    int len = udp.read(packetBuffer, 255);
    if (len > 0) {
      packetBuffer[len] = '\0'; // Null-terminate string
    }

    Serial.printf("Pesan diterima: %s\n", packetBuffer);

    // Proses perintah 1=maju 2=mundur 3=kiri 4=kanan 0=stop
    if (strcmp(packetBuffer, "1") == 0) {
      maju();
      delay(600);
      mundur();
      delay(200);
      mandek();
      
    } else if (strcmp(packetBuffer, "2") == 0) {
      mundur();
      delay(600);
      maju();
      delay(200);
      mandek();
    } else if (strcmp(packetBuffer, "3") == 0) {
      kiri();
      delay(700);
      mundur();
      delay(150);   
      mandek();
    } else if (strcmp(packetBuffer, "4") == 0) {
      kanan();
      delay(700);
      mundur();
      delay(150);   
      mandek();
    } else if (strcmp(packetBuffer, "0") == 0) {
      // Semua tetap HIGH → berhenti total
      mandek();
      Serial.println("Perintah BERHENTI diterima");
    }

    
  }
  
}





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:

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