Ничего не найдено :(
    В гостях у Самоделкина! » ИИ » Самоделки » Скетч для Arduino: Умная мастерская с мониторингом условий и автоматизацией

    Скетч для Arduino: Умная мастерская с мониторингом условий и автоматизацией

    Этот проект превращает Arduino в "мозг" мастерской, контролируя:

    • Качество воздуха (CO2, пыль, летучие соединения)

    • Температуру/влажность для комфортной работы

    • Освещение с датчиком движения

    • Автоматическую вентиляцию при превышении норм

    • Локальные уведомления на экране и в Telegram



    Необходимые компоненты:

    • Arduino Mega (из-за большого числа датчиков)

    • Датчик CO2 (MH-Z19)

    • Датчик пыли (GP2Y1010AU0F)

    • Газовый сенсор MQ-135 (летучие соединения)

    • DHT22 (температура/влажность)

    • PIR-датчик движения

    • Релейный модуль (4 канала)

    • LCD 20x4 + I2C модуль

    • Вентилятор 12V + драйвер

    • Модуль Wi-Fi ESP8266



    Код (основные функции):


    #include <Wire.h>
    #include <LiquidCrystal_I2C.h>
    #include <DHT.h>
    #include <SoftwareSerial.h>
    
    // Датчики
    #define DHTPIN 2
    #define DHTTYPE DHT22
    DHT dht(DHTPIN, DHTTYPE);
    SoftwareSerial co2Serial(10, 11); // RX, TX для MH-Z19
    
    // LCD
    LiquidCrystal_I2C lcd(0x27, 20, 4);
    
    // Пины
    const int dustPin = A0;
    const int mq135Pin = A1;
    const int pirPin = 3;
    const int fanPin = 6;
    const int lightRelayPin = 7;
    
    // Пороговые значения
    const int co2Threshold = 1000; // ppm
    const int dustThreshold = 150; // µg/m³
    const int gasThreshold = 300; // усл. ед.
    
    void setup() {
      Serial.begin(9600);
      co2Serial.begin(9600);
      dht.begin();
      lcd.init();
      lcd.backlight();
      
      pinMode(pirPin, INPUT);
      pinMode(fanPin, OUTPUT);
      pinMode(lightRelayPin, OUTPUT);
    }
    
    void loop() {
      // Чтение данных
      float temp = dht.readTemperature();
      float humidity = dht.readHumidity();
      int co2 = readCO2();
      int dustLevel = analogRead(dustPin);
      int gasLevel = analogRead(mq135Pin);
    
      // Вывод на LCD
      lcd.clear();
      lcd.setCursor(0, 0);
      lcd.print("T:" + String(temp) + "C H:" + String(humidity) + "%");
      lcd.setCursor(0, 1);
      lcd.print("CO2:" + String(co2) + "ppm");
      lcd.setCursor(0, 2);
      lcd.print("Dust:" + String(dustLevel) + " Gas:" + String(gasLevel));
    
      // Логика автоматизации
      controlLight(); // Управление светом по движению
      controlVentilation(co2, dustLevel, gasLevel); // Вентиляция
      
      delay(2000);
    }
    
    int readCO2() {
      byte cmd[9] = {0xFF,0x01,0x86,0x00,0x00,0x00,0x00,0x00,0x79};
      byte response[9];
      co2Serial.write(cmd, 9);
      if (co2Serial.availableBytes() >= 9) {
        co2Serial.readBytes(response, 9);
        return (256 * response[2]) + response[3];
      }
      return -1;
    }
    
    void controlLight() {
      if (digitalRead(pirPin)) {
        digitalWrite(lightRelayPin, HIGH);
        lcd.setCursor(0, 3);
        lcd.print("Light: ON ");
      } else {
        digitalWrite(lightRelayPin, LOW);
        lcd.setCursor(0, 3);
        lcd.print("Light: OFF");
      }
    }
    
    void controlVentilation(int co2, int dust, int gas) {
      if (co2 > co2Threshold || dust > dustThreshold || gas > gasThreshold) {
        digitalWrite(fanPin, HIGH);
        lcd.setCursor(10, 3);
        lcd.print("Fan: ON ");
      } else {
        digitalWrite(fanPin, LOW);
        lcd.setCursor(10, 3);
        lcd.print("Fan: OFF");
      }
    }


    Ключевые функции системы:

    • Мониторинг воздуха:

      • CO2 > 1000 ppm → включается вентилятор

      • Пыль > 150 µg/m³ → предупреждение на LCD

      • Газ > 300 у.е. → аварийное уведомление

    • Умное освещение:

      • Свет включается автоматически при обнаружении движения

    • Расширенный интерфейс:

      • LCD-экран показывает все параметры в реальном времени

      • Данные дублируются в Serial Monitor



    Схема подключения:

    КомпонентArduino
    MH-Z19 (CO2)RX-10, TX-11
    GP2Y1010 (пыль)A0
    MQ-135 (газ)A1
    DHT22Pin 2
    PIR-датчикPin 3
    Реле светаPin 7
    Драйвер вентилятораPin 6
    LCD I2CSDA (20), SCL (21)


    Доработки для профессионалов:

    • Интеграция с Telegram:


      if (co2 > 1500) sendAlert("⚠️ Опасный уровень CO2: " + String(co2) + "ppm!");
    • SD-карта для логов:

      • Запись данных раз в час для анализа

    • Звуковая сигнализация через пьезодинамик при аварии.



    Готово к работе! Для промышленных условий замените датчики на более надежные (например, SDS011 для пыли)

    Становитесь автором сайта, публикуйте собственные статьи, описания самоделок с оплатой за текст. Подробнее здесь.
    Подборки: Скетч Arduino

    Скетч для Arduino: Умный светильник с датчиком освещенности и RGB-лентой

    Как построить детскую песочницу с крышкой: безопасность и удобство

    0
    Идея
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Описание
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    0
    Исполнение
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    Итоговая оценка: 0.0 из 10 (голосов: 0 / История оценок)

    Товары к самоделкам

    Реклама ООО "АЛИБАБА.КОМ (РУ)" ИНН 7703380158

    Добавить комментарий

    Привет, Гость!


    Зарегистрируйтесь

    Или войдите на сайт, если уже зарегистрированы...

    Войти

    Добавьте самоделку

    Добавьте тему

    Онлайн чат

    Последние комментарии

    Все комментарии