"Умная" вытяжка

Сделал что-то своими руками? Выкладывай сюда!
Правила форума
Принимаются оформленные работы с фото и текстом
Ответить
Аватара пользователя
Леший
Администратор
Сообщения: 23
Зарегистрирован: 14 апр 2016, 00:03
Откуда: Липецкъ

"Умная" вытяжка

Сообщение Леший » 23 май 2016, 18:43

Здрасьте! Ну понятно дело вытяжке до умной далеко, потому и в "кавычках" ))) скорее автоматизированная или типа того )
Краткая предыстория - у друга дом, курить ходит в комнату где бассейн и парилка с душевой кабинкой, там и так была вытяжка не важная, решили с Порфирием сделать подарок - заменить филенку со старым вентилятором на новую с тремя путЁвыми (из сервера, nidec, 7 кубов в минуту каждый). Пошли модным нынче путем - использовали ардуино, датчик дыма (реагирует еще на кучу всего). С датчика mq-2 смотрит данные и при превышении пищит динамик и включает вентиляторы последовательно с интервалом 5 сек (чтобы пиковым током не грузить блок питания) на минуту, потом процесс или продолжается или становится в минимальный с ШИМ равным 0% (при этом эти вентиляторы делают 1500 об/мин) что является плюсом, так как создается минимальная тяга к датчику и не летит всякая живость в дом )))

PS Еще прицепили микрофон, хотелось включать по двум хлопкам, а не только когда что-то "покажется" датчику, но увы, пока не сделано, да и так хорошо работает )))

Разметка:
Изображение

Сборка электронной части: Изображение

Готовое изделие:Изображение


Код проекта:

Код: Выделить всё

const int analogInPin = A0;
const int led1 = 10;
const int led2 = 11;
const int mic = 9;
int sensorValue = 0;
int fanCtrlPin = 3;
int fanCtrlPin1 = 5;
int fanCtrlPin2 = 6;
 
void setup() {
  Serial.begin(9600);
  Serial.println("CG312 MQ2 Test" );
  TCCR2B = (TCCR2B & 0xF8) | 0x01;
  pinMode(fanCtrlPin, OUTPUT);
  pinMode(fanCtrlPin1, OUTPUT);
  pinMode(fanCtrlPin2, OUTPUT);
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
}
 
void loop() {
  sensorValue = analogRead(analogInPin);           
  if (sensorValue >= 18)
  {
   
    analogWrite(mic,7000);
    delay(1000);
    analogWrite(mic,12000);
    delay(1000);
    analogWrite(mic,13000);
    delay(1000);
    analogWrite(mic,14000);
    delay(1000);
    analogWrite(mic,0);
     
    digitalWrite(led1, HIGH);
   
  digitalWrite(led2, LOW);
     
  analogWrite(fanCtrlPin, 180);
 
  delay(5000);
 
  analogWrite(fanCtrlPin1, 180);
 
  delay(5000);
   
  analogWrite(fanCtrlPin2, 180);
      
  delay(15000); 
  }
  else
  {
  analogWrite(fanCtrlPin, 0);
 
  delay(5000);
 
  analogWrite(fanCtrlPin1, 0);
 
  delay(5000);
   
  analogWrite(fanCtrlPin2, 0);
 
  delay(500); 
  
  digitalWrite(led1, LOW);
   
  digitalWrite(led2, HIGH); 
   
  }
 
  Serial.print("CG312 MQ2 value= " );                      
  Serial.println(sensorValue);   
 
  delay(100);                    
}
Л ѣ ш і й

Ответить