Arduino ile RS485 modbus üzerinden PC ile haberleşme

Merhaba arkadaşlar, bu yazımızda youtube da çokça sorulan “elektrik sayacı gibi RS485 modbus haberleşme protokolleri ile çalışan sistemleri Arduino ve Lora modülleri ile nasıl haberleştireceğiz” üzerine bir uygulama yapacağız.

Bu uygulamamız aslında 2 seri şeklinde olacak ilk kısımda yanı bu yazımızda sadece Arduino ile PC yi RS485 Modbus üzerinden haberleştireceğiz. Diğer uygulamada ise arduinoya bir lora modulu ilave edip karşıdan da başla bir arduino lora ikilisi üzerinden veriyi yollayıp bilgisayardan takibini sağlayacağız.

Kullanacağımız ekipmanlar

USB RS485 dönüştürücü

RS485-TTL Seri Dönüştürücü

arduino nanoArduino nano

Öncelikle devre şemasını kuralım. Şu site de hazır ir şema vardı biraz sadeleştirip kendim kurdum.

Burada Ekran var ve Arduino uno var ben onları kullanmadım sadece Arduino nano ile çalışmamı yaptım

Benim kurduğum devre şeması

Gördüğünüz üzeri oldukça basit bir devre kurdum. Burada sadece arduino daki veriyi RS485 üzerinden PC ye aktaracağız.

bağlantı şemaları:

Pin NamePin Description
VCC5V (Arduino 5v beslemesi)
AÇıkış USB nin A pinine (rs485 A) (Klemens de olur)
BÇıkış USB nin B pinine (rs485 B) (klemens de olur)
GNDGND (Arduino GND)

R0

Arduino (RX pin)
REArduino 2 Nolu pin
DEArduino 3 Nolu pin
DIArduino (TX pin)

Yazmaya gerek yok ama emin olmak için yine de yazalım

MAX-485 TTL to RS-485 Converter ModuleUSB to RS-485 Module Connected with PC
AA
BB

Şimdi gelelim kütüphaneye ModbusMaster kütüphanesini kullanacağım. Yıldız ve fork sayıları oldukça yüksek diye. Ayrıca şu kütüphaneden esinlenilerek yazılmış.

Arduino üzerine örnek projeyi modifiye ettiğim kod şu şekilde.

Uygulamanın mantığı çok basit. Bir “i” değişkeni var her defasında bir artıyor ve bunun katlarını modbus üzerinden 40000,40001 ve 40002 adreslerine yazdıracağız.

USB dönüştürücümüz CH43x driverini kurmamız gerekiyor ürünü altığım sitede altta driveri indirip kurdum. https://www.robolinkmarket.com/rs485-usb-cevirici-kart

Şimdi gelelim PC ye kuracağımız Modbus programına

https://www.modbustools.com/download.html

Bu sayfaya gelip Modbus Slave programını indiriyoruz. Neden bu programı seçtim tek sebebi trial versiyonun olması yani ücretsiz deneme yapıyor olmasıdır. Normalda RS485 üzerinden sayaç okuma vs işleri yaparsanız burada firmaların kendi programları olacaktır. Ancak çalışma mantığı tümünde aynıdır. Önemli olan mantığı anlamak.

Programı kurup açınca lisans soruyor, “Register later” yapıyoruz. 30 gün deneme süresi tanıyor.

Şimdi gelelim yazdığımız kod yapısına göre bağlantı ayarlarını tanımlamaya. üstte Connection kısmına gelelim.

Yazdığımız koda göre ayarları şu şekilde yapıyorum

Yine koda göre bu sefer slave tanımlamamız gerekiyor.

Bu koda göre slave tanımlaması şu şekilde olacak.

Evet artık yapacağımız işlemleri tamamladık. Arduino ile RS485 modbus protokolü ile bilgisayarı haberleştirdik. Bu uygulamayı 2 yönlüde düşünebilirsiniz. Nasıl ki, bilgisayara veri gönderdik aynı şekilde bir elektrik veya su sayacına bilgi gönderip gelen verileri okutabiliriz. İkinci kısımda da RS485 okuması yapıp, Lora üzerinden kablosuz haberleştirip tekrar PC ye aktaracağız.

Sonuç veriler gelmeye başladı:

Faydalı olduğunu umuyorum iyi günler dilerim.

Arduino ile RS485 modbus üzerinden PC ile haberleşme” ile ilgili 7 görüş

  1. Hakan

    Merhaba;
    benim evimde mini ges kurulu ve solar inverterin modbus rs485 çıkışı bulunmaktadır.
    bu çıkıştan ben Wicc de scada oluşturdum.
    Arduino ile bu verileri okuyamadım bir türlü. (örnek adres : giriş volt :400102 çıkış volt:400103 gibi.) ben bu verileri modbus master ile okuya biliyorum. ve bu verileri kepserver ile çeke biliyorum. Problemim arduino ile okuyamamam. Yardımcı olurmusunuz iyi çalışmalar.

  2. ÖZGÜR KARAMAN

    Merhaba kolay gelsin.. Öncelikle elinize sağlık harika bir çalışma olmuş.
    Ben bu uygulamayı denedim ve ilk denemem başarısız oldu bunun sebebi kullandığım modbus similatörünün versiyonunun yüksek olmasıydı. düşük versiyonlu similasyon kullandığımda çalıştığını gördüm. Sorum şu ki diğer similatör modbus uygulamalarında bu uygulama çalışmıyor sebebini öğrenebilir miyim rica etsem ?

  3. Hayati BOLAT

    Merhaba Mehmet Bey, bende Entes EMM-04CS Multimeter var, Nodemcu ile Voltaj L1,L2,L3 ve amper bilgilerini okuyup MQTT ile yayın yapmak istiyorum. Bunun için bana yardımcı olmanız mümkün mü, şimdiden teşekkür eder, başarılar dilerim.

    1. Mehmet Yazının yazarı

      mrb hayati kodlama biliyorsan bu makaleyi okuyup yapabilirsin. bunun dışında hazır bir ürün olarak istiyorsan arkadaşlarım var bu işi yapan seni yönlendirebilirim.

  4. ÖZCAN ÇELİK

    Sayın yönetici merhaba;

    Bu konu ile alakalı vermiş olduğunuz bilgiler için çok teşekkür ederim.

    Yukarıdaki gönderici kodlarını okumak için ,alıcı kodları için de yardımcı olabilirmisiniz.

    Saygılarımla.

Yorumlar kapalı.