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
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;
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);
} }