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

Sabtu, 20 Juli 2024

[telkomiot.id] Mengirim / Terima (PUB-SUB) Data Menggunakan MQTT - Ketemu BUG !

 


Platform IOT terbaru milik telkom ini memang masih terbilang baru dan versi beta, saya kenal sekitar bulan mei dari pembaca blog yang kebetulan mahasiswa yg mendapatkan skripsi membahas telkomiot-lorawan. Sebelumnya telkom memiliki platform Antares yang sudah lama saya bahas, silahkan coba baca disini dulu. Pada dasarnya platform ini seperti menjiplak plek antares di web-ui nya, namun saya menemukan beberapa perbedaan saat mencoba kirim  terima data melalui MQTT, HTTP maupun lorawan.

Pada tulisan kali ini saya akan berbagi mengenai "keanehan" MQTT pada platform ini, yah seperti dejavu rasanya ketika ketemu  bug dulu saat saya belajar antares dulu. Kok gak kapok ya saya? maklum versi beta mungkin ya atau mungkin karena masih trial (GRATIS 1 tahun booo). Oh iya saya sebenernya mencoba ini hampir 2 bulan lalu, namun saya diemkan aja sampai kemudian gatel akibat 2 bulan hanya ada progress di lorawan nya saja (yang bikin antares ngadat, baca disini), jadi seperti biasa saya mengacu dokumentasi yang bisa dibaca pada halaman yang disediakan telkomiot.


Dokumentasi MQTT via Node-red bisa dilihat di https://console.telkomiot.id/documentation#421


Yang menjadi alamat broker mqtt adalah : mqtt.telkomiot.id port 1883, dan jangan lupa ada user credential berupa access key dan access token sebagai username dan password untuk masuk ke broker. Keduanya bisa didapat pada console menu access key, dan langsung saja saya masukkan untuk setup broker pada node-red serta mqtt.fx di pc saya.

Setup MQTT di Nodered :


 

Setup MQTT di MQTT.FX



Selanjutnya kita akan melanjutkan seting pada topik MQTT sesuai pada console dan petunjuk dokumentasi.



Jadi seperti pada umumnya akan ada 2 topik pubs dan subs sesuai pola yg biasa diberikan platform iot manapun dan juga telah ditulis dipetunjuk, lalu kita kirimkan data secara publish melalui mqtt.fx dan node-red,  dan apa yang terjadi ?








JENG JENG !!!




KOSONG pada console ! Bolak balik saya mencoba dengan berbagai kombinasi seting, hasilnya malah membagongkan ketika saya subscribe topik "pubs" di mqtt.fx dan mengirimkan data mqtt melalui node-red.



 

Waduh...kok bisa begitu ? Bagaimana kalau kita coba gunakan topik sembarangan, apa akan masuk datanya?



Wahhh akhirnya saya menemukan sebuah broker MQTT yang bebas mengirim dan menerima data kawan ! Bahkan saking bagusnya saya masih menerima data MQTT yang saya retain 2 bulan yang lalu. Ayo dong diperbaiki kawan-kawan di telkom, dan saya rasa ini tidaklah susah ....



Share:

Jumat, 19 Juli 2024

Breaking News : LoRaWan Antares Migrasi Ke Telkomiot.id

 



Betapa galaunya beberapa mahasiswa yang mengambil topik skripsi LoRawan di 15 juli 2024 ...Pak..gak bisa kirim data !! Gak cuman mahasiswa bimbingan saya, namun dari kampus lain pun mengalami hal serupa dan memenuhi whatsapp saya.


Jadi ingat beberapa bulan yang lalu ada mahasiswa dari mataram yang bertanya namun menggunakan console bukan antares, dan mengaku diberikan oleh dosennya yang baru pulang dari pelatihan di telkom bandung. Dan console itu berupa tampilan dari web telkomiot.id



BTS LoRaWan di Telkom Mataram


Oprek-oprek lah saya dan sempat berkeliling melakukan test apakah lorawan-nya sudah bisa konek seperti antares, dan hasilnya di bulan mei itu masih zonk. Begitu juga dengan beberapa koneksi MQTT - Rest API dll masih mengalami error yang sangat fundamental. Jadi saat itu saya menemukan topik MQTT nya masih ngawur dan data bisa dikirimkan kemana saja asal topiknya berupa alamat dari device. Setelah itu saya tinggalkan aja karena sepertinya belum di configure dengan bagus. Mau men-review ujungnya saya jadi kepo dan nyinyir gak karuan.

Kembali ke Lorawan di pertengahan juli 2024, dimana antares mulai ngaco, akhirnya saya teringat akan telkomiot.id ini, mungkin firasat saya tepat karena dinihari 19 juli setelah mumet bersama beberapa mahasiswa di siang nya, saya entah kenapa kembali mengambil alat lorawan yang tadi saya pake keliling dan mengganti parameter lorawan nya ke telkomiot. Hasilnya terdapat uplink data berupa ini:



   

Datanya yang diterima ternyata berupa hexa padahal yg saya kirim tulisan, sehingga harus di terjemahkan dulu di hexa to ascii via web:




Dan jika ingin mengirimkan data yg benar, maka data dikirim dalam format json {"key": value} seperti contoh script oprekan saya disini :


void LoRa_sendMessage()
{
  String text = "{\"cobafrek\":" + String(LoRa_frek_INA_923) +"}";
  LoRa_TxMode();
  LoRaWanPacket.clear();
  
  LoRaWanPacket.print(text);
  
  if (LoRaWanPacket.encode()) 
  {
    LoRa.beginPacket();
    LoRa.write(LoRaWanPacket.buffer(), LoRaWanPacket.length());
    LoRa.endPacket();
  }

  if( LoRa_frek_INA_923 >= LoRa_frek_INA_923_end ) LoRa_frek_INA_923 = LoRa_frek_INA_923_start;
  else LoRa_frek_INA_923 += LoRa_frek_step;
}


Hasilnya lumayan benar deh sekarang





Telkomiot ini masih gratis sejak bulan mei dan meng-claim memberikan trial 1 tahun GRATIS. Wahhh ayo dicoba saja deh mumpung kayaknya habis migrasi ini akan mulai berbayar. Selanjutnya saya akan mencoba kirim-kiriman data menggunakan LoRaWan telkom ini karena sepertinya saya tertarik untuk DOWNLINK data..Mumpung masih free tidak terbatas kayak antares dulu ! Tunggu yaa...

Share:

Senin, 15 Juli 2024

[raspi - yolo] Pendeteksi Orang Pada CCTV Menggunakan Raspi-Yolov5

 


Wah ternyata yolov5 sangat cocok digunakan pada raspberry pi 3 (baca disini dulu), jadi semangat nihh berbagi kegembiraan bersama pembaca. Jadi seperti yang dulu saat saya belajar yolo v3, ujungnya adalah deteksi orang pada cctv yang bisa dibaca disini. Langsung aja kita akan buat script untuk mengetestnya melalui cctv yang ada di kota malang yang lebih ringan daripada di jogja, alamat untuk memilih titiknya di: http://cctv.malangkota.go.id/




Dan script gabungan dari beberapa tulisan sebelumnya saya bagikan seperti berikut :


import sys
import time
import json
import torch
import cv2
import os
import contextlib
from pathlib import Path

os.environ['QT_QPA_PLATFORM_PLUGIN_PATH'] = '/usr/lib/x86_64-linux-gnu/qt5/plugins'


def draw_boxes(frame, results):
    # Get the bounding boxes, labels, and confidence scores
    bboxes = results.xyxyn[0][:, :-1].numpy()
    labels = results.xyxyn[0][:, -1].numpy()
    confidences = results.xyxyn[0][:, -2].numpy()

    # Define the COCO class label for 'person'
    PERSON_LABEL = 0

    # Draw boxes for persons only
    for bbox, label, confidence in zip(bboxes, labels, confidences):
        if label == PERSON_LABEL:
            x1, y1, x2, y2 = bbox[:4]
            x1 = int(x1 * frame.shape[1])
            y1 = int(y1 * frame.shape[0])
            x2 = int(x2 * frame.shape[1])
            y2 = int(y2 * frame.shape[0])
            cv2.rectangle(frame, (x1, y1), (x2, y2), (0, 255, 0), 2)
            cv2.putText(frame, f'Orang {confidence:.2f}', (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (200, 255, 0), 2)


def main(stream_source):
    start_time = time.time()
    # Load YOLOv5 model
    model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)

    # Open the video stream
    cap = cv2.VideoCapture(stream_source)
    if not cap.isOpened():
        print(f"Error: Could not open video stream {stream_source}")
        return

   # start_time = time.time()
    ret, frame = cap.read()
    if not ret:
        print("Error: Could not read frame")
        cap.release()
        return

    # Perform inference
    results = model(frame)

    # Extract bounding boxes and labels
    labels = results.xyxyn[0][:, -1].numpy()
    n_persons = sum(1 for label in labels if label == 0)  # label '0' typically corresponds to 'person' in COCO dataset

    # Calculate processing time
    processing_time = time.time() - start_time

    # Output results as JSON
    output = {
        "orang": n_persons,
        "time": round(processing_time, 2)
    }
    print(json.dumps(output))

    # Save the frame with bounding boxes as JPEG
   
    draw_boxes(frame, results)
    output_image_path = "/home/lampuku/yolov5/output.jpg"
    #results.render()  # This function draws bounding boxes on the frame
    cv2.imwrite(output_image_path, frame)

    cap.release()

if __name__ == "__main__":
    if len(sys.argv) != 2:
        print("Usage: python single_detect.py <stream_source>")
    else:
        stream_source = sys.argv[1]
        main(stream_source)

Hasilnya seperti berikut :



Waktu processing memang terlihat lama 23 detik, namun ini adalah waktu yg menunjukkan proses awal fusing layer dari yolov5. Namun jika melakukan deteksi selanjutnya cukup cepat ketika saya mencoba loop detect seperti berikut ini :




Wow dibawah 5 detik, cukup cepat deteksinya lhooo...Kalau ada yg berminat bisa menggabungkannya dengan node-red untuk membuat webui seperti gambar paling atas.




Share:

[raspi - yolo] Menguji Kemampuan Raspberry pi 3B Untuk Pengolahan Gambar Yolo V5

 


Setelah memanfaatkan kekuatan cloud computing untuk pengolahan gambar yolo v3, karena raspberry pi zero w resource nya terbatas (baca dulu disini), maka kini saatnya melakukan upgrade ke seri raspberry pi yang lebih tinggi yaitu raspi 3B yang memang support komputasi 64bit. Jadi berdasarkan bantuan chatGPT disarankan untuk mencoba yolo v5 dimana berbasis engine TORCH sehingga pas dijalankan di arm 64 bit. Jadi jangan lupa instal versi raspbbery pi melalui imagernya yaitu OS lite legacy (bullseye) 64 bit tanpa desktop. Jadi jangan sampai salah install OS karena memang sangat terbatas resource raspi 3B yang quad core CPU 64bit 1.2 Ghz dengan ram 1GB saja.

Jika sudah sukses instalasi OS maka bisa lanjut menghubungkan ke wifi dan gunakan putty untuk ssh ke ip raspi kamu dan jalankan urutan perintah berikut :


1. Update raspi kamu

sudo apt-get update
sudo apt-get upgrade

2. Install python, pip dan git

sudo apt-get install python3
sudo apt-get install python3-pip

sudo apt-get install git

3. Install yolo v5 beserta script requirements-nya

git clone https://github.com/ultralytics/yolov5
cd yolov5

pip3 install -r requirements.txt


4. Install pytorch beserta turunannya

sudo apt-get install libopenblas-dev libblas-dev m4 cmake cython python3-yaml

wget https://github.com/nmilosev/pytorch-arm-builds/releases/download/v1.4/pytorch-1.4.0a0+6bfc3e0-cp37-cp37m-linux_armv7l.whl
pip3 install torch-1.4.0a0+6bfc3e0-cp37-cp37m-linux_armv7l.whl


Kemudian jika instalasi selesai maka dapat menjalankan script contoh detect.py dan usahakan ukuran gambarnya tidak besar.

python detect.py --source nolkm.jpg


Hasilnya sebagai berikut, sangat memuaskan :



Hasil diatas mungkin bisa berbeda jika ada dependencies atau library yang gagal instal atau bahkan salah instal. Saya sangat mengandalkan chatGPT setiap ada kesalahan yang saya temukan dan agak lupa apa saja error yg muncul itu. Dan yang paling penting adalah menggunakan CPU untuk pengolahan gambar karena raspberry pi tidak punya GPU sekelas Nvidia untuk menjalankan torch.

Salah satu error yang saya ingat adalah, karena OS saya tanpa desktop maka runtime QT untuk menampilkan gambar akan selalu dianggap error :


qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "/home/lampuku/.local/lib/python3.9/site-packages/cv2/qt/plugins" even though it was found. This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.


Jadi hal ini disolusikan oleh chatGPT dengan melakukan instalasi manual "headless" sebagai berikut :


1. Install QT dan Xwindows environment. Ini mungkin tidak di perlukan jika kamu menggunakan desktop pada raspberry pi 3 kamu


sudo apt-get update
sudo apt-get install libgl1-mesa-glx libxcb-xinerama0
2. Jangan lupa menambahkan ini jika ingin menjalankan yolov5 pada script python


export QT_QPA_PLATFORM_PLUGIN_PATH=/usr/lib/x86_64-linux-gnu/qt5/plugins  # Adjust path as necessary

3. Jika diperlukan install open cv dengan headless environment


pip install opencv-python-headless

4. Lakukan pengecekan instalasi dengan script testing dibawah ini :


import torch
from PIL import Image

# Load YOLOv5 model
model = torch.hub.load('ultralytics/yolov5', 'yolov5s', pretrained=True)

# Set image path
image_path = 'path/to/your/image.jpg'

# Perform inference
results = model(image_path)

# Display results
results.show()  # Displays the image with bounding boxes

# Optionally, save the results
results.save(save_dir='results/')  # Saves results in the 'results' directory

Dan jika hasilnya muncul seperti dibawah ini berarti instalasi sudah benar

Fusing layers...
YOLOv5s summary: 213 layers, 7225885 parameters, 0 gradients, 16.4 GFLOPs
Adding AutoShape...

Selanjutnya kita akan mendeteksi orang pada kamera cctv pada tulisan berikutnya disini.

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 (11) arduino (27) artikel (11) attiny (3) attiny2313 (19) audio (5) baterai (5) blog (1) bluetooth (1) chatgpt (2) cmos (2) crypto (2) dasar (46) digital (11) dimmer (5) display (3) esp8266 (26) euro2020 (13) gcc (1) gsm (1) iklan (1) infrared (2) Input Output (3) iot (73) 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 (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 (8) radio (28) raspberry pi (9) remote (1) revisi (1) rfid (1) robot (1) rpm (2) rs232 (1) script break down (3) sdcard (3) sensor (2) sharing (3) signage (1) sinyal (1) sms (6) software (18) solar (1) solusi (1) tachometer (2) technology (1) teknologi (2) telegram (2) telepon (9) televisi (167) television (28) telkomiot (4) 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) yolo (7)

Arsip Blog

Diskusi


kaskus
Forum Hobby Elektronika