Jaden
Published

Arduino sensor Box

RHT sensor with arduino

BeginnerWork in progress30 minutes87
Arduino sensor Box

Things used in this project

Story

Read more

Code

Sensor_Box

C/C++
RHT+OLED sensor box
#include <SPI.h>
#include <Ethernet2.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <DHT.h>

// Enter a MAC address for your controller below
byte mac[] = {0x00, 0x08, 0xDC, 0x52, 0xDA, 0xFF};

// Initialize the Ethernet server library
EthernetServer server(23); // You can change the port number to your desired one

// OLED display
#define OLED_RESET 4
Adafruit_SSD1306 display(OLED_RESET);

// DHT sensor
#define DHTPIN 2
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

int cursorX = 0;
int cursorY = 0;

void setup() {
  // Initialize the OLED display
  display.begin(SSD1306_SWITCHCAPVCC, 0x3C);
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(cursorX, cursorY);
  display.println("Connecting...");
  display.display();

  // Start the Ethernet connection
  if (Ethernet.begin(mac) == 0) {
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(cursorX, cursorY);
    display.println("Failed to configure Ethernet");
    display.display();
    while (1);
  }

  // Start the server
  server.begin();

  // Initialize the DHT sensor
  dht.begin();

  // Display IP address and server port on OLED
  IPAddress ip = Ethernet.localIP();
  uint16_t port = 23; // Replace with the port number you used to initialize the server
  display.clearDisplay();
  display.setTextSize(1);
  display.setTextColor(WHITE);
  display.setCursor(cursorX, cursorY);
  display.print("IP: ");
  display.print(ip);
  display.print(":");
  display.print(port);
  display.display();
}

void loop() {
  // Check if a client is connected
  EthernetClient client = server.available();
  if (client) {
    // A client is connected
    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(cursorX, cursorY);
    display.println("Client connected");
    cursorY += 8; // Move the cursor to the next line
    display.display();

    // Send a welcome message to the client
    client.println("Welcome to the TCP server!");

    // Send temperature and humidity values from DHT11 sensor every 10 seconds
    unsigned long lastDHTCheck = 0;
    while (client.connected()) {
      unsigned long currentMillis = millis();
      if (currentMillis - lastDHTCheck >= 10000) {
        lastDHTCheck = currentMillis;

        // Read temperature and humidity from DHT11
        float humidity = dht.readHumidity();
        float temperature = dht.readTemperature();

        // Send data to the client
        client.print("Temperature: ");
        client.print(temperature);
        client.print(" C, Humidity: ");
        client.print(humidity);
        client.println(" %");
      }

      if (client.available()) {
        char c = client.read();
        client.write(c);
      }
    }

    // Reset cursor position
    cursorX = 0;
    cursorY = 0;

    display.clearDisplay();
    display.setTextSize(1);
    display.setTextColor(WHITE);
    display.setCursor(cursorX, cursorY);
       display.println("Client disconnected");
    display.display();
    // Reset cursor position
    cursorX = 0;
    cursorY = 0;
  }
}

Credits

Jaden

Jaden

4 projects • 3 followers

Comments