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 nano
Öncelikle devre şemasını kuralım. Şu site de hazır ir şema vardı biraz sadeleştirip kendim kurdum.
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 Name | Pin Description |
VCC | 5V (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) |
GND | GND (Arduino GND) |
R0 | Arduino (RX pin) |
RE | Arduino 2 Nolu pin |
DE | Arduino 3 Nolu pin |
DI | Arduino (TX pin) |
Yazmaya gerek yok ama emin olmak için yine de yazalım
MAX-485 TTL to RS-485 Converter Module | USB to RS-485 Module Connected with PC |
A | A |
B | B |
Ş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.
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.
istersen detaylı bir şekilde sorucevap kısmına yaz ordan yardımcı olayım.
kullandığın güç analizörü marka ve adres kağıdı. varsa kullandığın kodu
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 ?
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.
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.
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.
alıcı kodu bu örnekte yok hocam diğer yazıya bakınız https://fixaj.com/rs485-ile-veriyi-okuyup-lora-ile-kablosuz-gonderme/