Jetson Nano'da HMI Dokunmatik TFT Lcd Ekran Kullanma
(Using HMI Touch TFT LCD Display on Jetson Nano)

Jetson Nano'da HMI Dokunmatik TFT Lcd Ekran Kullanma (Using HMI Touch TFT LCD Display on Jetson Nano)

Merhabalar :)

Not: Bu başlığa bir şekilde geldiyseniz sizi aşağıdaki yazıyı okuyarak oluşacak vakit kaybından kurtarmak adına şu bilgiyi vermem gerekir. :)

" Jetson Nano'da dijital pin diziliminin raspberry pi ile birebir aynı olması HMI dokunmatik TFT Lcd ekran kullanımını da birebir aynı şekilde yapmamızı sağlıyor. Buna yönelik çokça kaynak vardır, gerisi uyarlama yeteneğinize kalıyor:) "

Senaryo: Şimdi elimizde bir Jetson Nano olduğunu ve geliştirdiğimiz bir projede de hmı dokunmaktik ekran ile jetson nanoya veri göndermemiz ve aynı zamanda almamız gerektiğini düşünelim.

Benim durumumda bu; kullanıcı ekran üzerinde daha önceden eğitilmiş iki adet nesne yakalama modelinden (YOLOv5 , nanodet) birini seçer bunu sonucunda jetson nano ilgili nesne algılama modelini çalıştırır ve yakaladığı nesneye ait verileri ekrana geri basar.

Şimdi öncelikle elektronik bilgimin sınırlı olduğunu belirtmek isterim ve bu uygulamada olabildiğince elektronik konusunda sınırlı tavsiyeler vereceğimi belirteyim. Daha çok kodlama tarafıyla ilgiliyim :)

  1. Aşağıda raspberry zero pin dizilimi görmekteyiz ki aynı pin dizilimi jetson nano üzerinde de mevcut. image.png

    Jetson Nano pin dizilimi Şurada

HMI ekranın veri okuma ve yazması için bizim için önemli olan pin numaraları 8 ve 10. pinler bunlar TX ve RX pinleri ayrıca HMI ekranın topraklama için (6., 14. ,20.) ve 5 volt için (2. ve 4.) pinlerinden herhangi biri kullanılabilir

2. HMI ekranın arka kısmında aynı şekilde pin dizilimleri gözükmekte.

image.png

Not: HMI ekranın veri okuma ve yazması için HMI üzerindeki RX portunun jetson nano üzerinde TX portuna, HMI üzerindeki TX portunun ise jetson nano üzerindeki RX portuna bağlanması gerek. Seri bağlantı için bunun gerekli olduğunu unutmayın.

photo_2021-08-08_22-22-15.jpg

Yukarıdaki resimde yaptığım bağlantı görülebilmekte. Çok profesyonelce bir çekim değil kabul ediyorum vurmayın fazla :)

Şimdi HMI ekranın arayüzünün tasarlanması ve kodlanması için gerekli dokümantasyona Şuradan ulaşabilirsiniz.

hmı kart.png

Yaptığım tasarımda ekranda modellere ait birer buton bulunmakta. kullanıcı bu butonlara bastığında modellere ait veriler ekrana basılmakta. Bu makale daha çok HMI ekran ve jetson nano bağlantısı üzerinde durduğundan ekran tasarımı ve kodlanması üzerinde durulmayacaktır.

hmı detay ekran.png

Detay ekranında modelin yakaladığı trafik işareti ve modelin kaç fps ile çalıştığı gösterilmekte. Her iki model içinde detay ekranı aynı tasarıma sahiptir.

Şimdi geldiğimiz nokta ise tasarlanan ekrana jetson nano üzerinden nasıl veri göndereceğimizdir.

jetson nano ile bir şekilde çalıştıysanız üzerinde ubuntu işletim sisteminin yürütüldüğünü biliyorsunuzdur. Ubuntu üzerinde çeşitli python sürümlerini yürütmek mümkün burada python 3.7 kullanılmıştır.

İlk olarak hmiscreen.py dosyası açalım ve kodlamaya başlayalım. Burada bahse konu yolo ve nanodet modelleri ile ilgili herhangi bir bir kod gösterilmeyecek olup sadece serial porta yazma ve okuma örneği gösterilecektir.

import serial

#space func. for serial port
def serial_Escape():
    escape='\xff'.encode('iso-8859-1')
    serial.write(escape)

#connect to serial port 
serial = serial.Serial("/dev/ttyTHS1",baudrate=9600)

#read example start

read_Serial = serial.read()

print(read_Serial)

if (read_Serial == "yolov5"):
    #yolov5 model run code......
    #writing example start
    #prepare the data (b'...'  for byte)

    write_Yolosign=b' yolosign.txt="Tasit_Giremez_Tabelasi" ' #model detect output

    write_Yolofps=b' yolofps.txt="5" ' #model detect output

    #send data to serial port
    serial.write(write_Yolosign)
    serial.write(write_Yolofps)

    #space  for serial port
    serial_Escape()
    #clear data
    serial.flush
    #space  for serial port
    serial_Escape()

    #writing example end
else:
    #other model run code......
    "other_Model"
#read example end

yolosign.txt veya yolofps.txt aslında hmi ekranı tasarlarken ilgili text alanlarına verdiğimiz isimler, hmi ekran sürekli olarak serial bağlantıyı dinleyerek bu şekilde data gelip gelmediğini kontrol eder, eğer tanımlı değişken ile gelen bir data var ise bunu ilgili alanda gösterir.

Ubuntu'da "/dev/ttyTHS1" okuma izinleri için hata alabilirsiniz. Dosyayı sudo ile yürütebilirsiniz yada aşağıda ki gibi kullanıcı grubunuzu ayarlayabilirsiniz.

sudo gpasswd --add ${USER} dialout

Umarım doğru aktarabilmişimdir. Zamanında karşıma çıkan bir sorundu bir yazıyla kendime ve size not olsun :)