emelianov / XY-MD02

XY-MD02 Modbus tools for ESP32
MIT License
1 stars 0 forks source link

Hello, thank you for your registered asset library. I can read the xy-md02 temperature sensor and make readings via ethernet using Arduino Uno and WIN5100 ethernet card. I am sending the example to you as well. #1

Open microwalve opened 1 month ago

microwalve commented 1 month ago

include

include "DFRobot_RTU.h"

include

define SENSOR_ID 1 // Sensörün Modbus ID'si

define START_ADDRESS 1 // Başlangıç register adresi

define NUM_REGISTERS 2 // Okunacak register sayısı (sıcaklık ve nem)

SoftwareSerial mySerial(2, 3); // RX, TX pinleri DFRobot_RTU modbus(&mySerial);

// Ethernet ayarları byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // MAC adresi IPAddress ip(192, 168, 0, 10); // IP adresi EthernetServer server(80); EthernetClient client;

unsigned long lastUpdate = 0; const unsigned long updateInterval = 100; // 5 saniyede bir güncelleme

void setup() { Serial.begin(9600); // Seri monitör için başlatma mySerial.begin(9600); // Modbus haberleşmesi için başlatma

// Ethernet başlatma Ethernet.begin(mac, ip); server.begin(); }

void loop() { unsigned long now = millis(); if (now - lastUpdate >= updateInterval) { client = server.available(); if (client) { while (client.connected()) { if (client.available()) { // Sıcaklık ve nem değerlerini oku uint16_t data[NUM_REGISTERS]; // İki değeri de saklamak için dizi oluştur uint8_t result = modbus.readInputRegister(SENSOR_ID, START_ADDRESS, data, NUM_REGISTERS);

      // Okuma işlemi başarılıysa
      if (result == 0) {
        // Sıcaklık ve nem değerlerini al
        float temperature = data[0] / 10.0; // Sıcaklık değeri (ölçek 10'da bir)
        float humidity = data[1] / 10.0; // Nem değeri (ölçek 10'da bir)

        // Web sayfasını oluştur
        client.println("HTTP/1.1 200 OK");
        client.println("Content-Type: text/html; charset=UTF-8");
        client.println("Connection: close");
        client.println("Refresh: 5"); // 5 saniyede bir sayfayı yenile

        client.println();
        client.println("<!DOCTYPE html><html><head><meta charset='UTF-8'><title>Sıcaklık ve Nem Ölçümü</title></head><body style='font-size: 24px;'><center>");
        client.println("<h1>Sicaklik ve Nem Ölçümü</h1>");

        // Sıcaklık ve nem değerlerini gönder
        client.print("<p>Sicaklik: ");
        client.print(temperature);
        client.println(" °C</p>");

        client.print("<p>Nem: ");
        client.print(humidity);
        client.println(" %</p>");

        client.println("</center></body></html>");
      } else {
        // Okuma hatası
        client.println("HTTP/1.1 500 Internal Server Error");
        client.println("Content-Type: text/plain");
        client.println("Connection: close");
        client.println();
        client.print("Okuma hatası: ");
        client.println(result);
      }
      break;
    }
  }
  client.stop();
}
lastUpdate = now;

} }

microwalve commented 1 month ago

modbus1 modbus2

microwalve commented 1 month ago

modbus3