Урок по созданию детектора газа на Ардуино своими руками

Урок демонстрирует создание на Ардуино детектора газа с индикатором, который питается от USB и отображает количество обнаруженного газа на дисплее. Дополнительно реализована кнопка сброса на ардуине.

В целом стоимость проекта будет варьироваться в зависимости от качества деталей, которые вы хотите использовать. Но, к счастью, большинство комплектующих могут быть легко использованы для других проектов.

Шаг 1. Комплектующие и инструменты

Первое, что вам нужно сделать, это собрать необходимые детали для нашего детектора газа Ардуино. Обычно, первым делом мы подбираем нужную электронику.

Инструменты:

  • пистолет для горячего клея
  • острый нож
  • металлическая линейка
  • некоторые инструменты рисования (в зависимости от ваших личных предпочтений)

Комплектующие:

  • Arduino Nano
  • USB-кабель
  • Датчик газа MQ-4
  • Дисплей (семисегментный индикатор)
  • Картон или другой материал для корпуса (вы можете использовать прилагаемый чертеж и распечатать его на толстой бумаге) или заказать трехмерный

Шаг 2. Делаем корпус

Самый простой вариант сделать корпус - использовать картон. Можно воспользоваться рисунком ниже для создания корпуса.

Шаг 3. Монтаж деталей детектора газа

На этом шаге добавляем детали в корпус детектора газа. На рисунках показано, как монтировать детали с помощью пистолета для горячего клея.

Как можно заметить были использованы небольшие кусочки картона, склеенные для прокладок и монтажных опор. Это особенно важно, если вы хотите, чтобы кнопка сброса на ардуине работала правильно. Обязательно надежно закрепляйте детали на месте, но все равно держите электронные контакты и кнопки чистыми.

Шаг 4. Подключение

Как только у вас появятся все детали, вы можете их подключить. Подключите ардуино к датчику и дисплею в соответствии с приведенными ниже фото.

Подключение датчика (сенсора)

Подключение дисплея

7-сегментный дисплей Ардуино цифр. выходы
a 2
b 3
c 4
d 6
e 7
f 9
g 8
DP 5

Шаг 5. Загрузка кода

Ардуино детектор газа нужно запрограммировать, это очень легко сделать. Мы используем программное обеспечение, представленное на официальном сайте Ардуино - www.arduino.cc.

Возьмите код или файл ниже и загрузите его в arduino.

int sensorValue;
int num;


      void setup()
      {
          pinMode(2, OUTPUT);
          pinMode(3, OUTPUT);
          pinMode(4, OUTPUT);
          pinMode(5, OUTPUT);
          pinMode(6, OUTPUT);
          pinMode(7, OUTPUT);
          pinMode(8, OUTPUT);
          pinMode(9, OUTPUT);
          Serial.begin(9600);      // sets the serial port to 9600
       }


      void loop()
      {
        sensorValue = analogRead(0);       // read analog input pin 0
        
              if (sensorValue < 400)      // if there is little or no gas detected display blinking lights
              {
                
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(4, LOW);
                  digitalWrite(6, LOW);
                  digitalWrite(7, LOW);
                  digitalWrite(8, LOW);
                  digitalWrite(9, LOW);
                
              digitalWrite(3, LOW);
              digitalWrite(8, HIGH);
              delay(500);
              digitalWrite(8, LOW);
              digitalWrite(6, HIGH);
              delay(500);
              digitalWrite(6, LOW);
              digitalWrite(3, HIGH);
              delay(500);
              }
              else
              {
                  if (sensorValue >= 900)               // the value of the gas measurement between 400 and 900 is displayed (this part refers to the cases below) 
                  {num = 9;}
                  else if (sensorValue >= 800)
                  {num = 8;}
                  else if (sensorValue >= 700)
                  {num = 7;}
                  else if (sensorValue >= 600)
                  {num = 6;}
                  else if (sensorValue >= 500)
                  {num = 5;}
                  else if (sensorValue >= 400)
                  {num = 4;} 
              }
              
              if (sensorValue > 700)                // if there is a lot of gas detected, the dot on the led display will blink
              {
              digitalWrite(5, HIGH);
              delay(100);
              digitalWrite(5, LOW);
              delay(100);
              }  
        
        
                  switch (num)
                  {
                  case 9:
                  digitalWrite(2, LOW);
                  digitalWrite(3, HIGH);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, HIGH);
                  break;
                  case 8:
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, HIGH);
                  break;
                  case 7:
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, LOW);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, HIGH);
                  break;
                  case 6:
                  digitalWrite(2, HIGH);
                  digitalWrite(3, HIGH);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, LOW);
                  break;
                  case 5:
                  digitalWrite(2, LOW);
                  digitalWrite(3, HIGH);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, HIGH);
                  digitalWrite(9, LOW);
                  break;
                  case 4:
                  digitalWrite(2, LOW);
                  digitalWrite(3, LOW);
                  digitalWrite(4, HIGH);
                  digitalWrite(6, HIGH);
                  digitalWrite(7, HIGH);
                  digitalWrite(8, LOW);
                  digitalWrite(9, HIGH);
                  break;
                  }
        
        
      }

Шаг 6. Тестирование

Теперь вы можете проверить свой детектор газа! Финальный вариант работы нашего детектора газа Ардуино можно увидеть на видео ниже:

Измените пороговые значения в коде, если вы не удовлетворены реакцией датчика.

Ардуино+