Arduino + Octopus Smoke Sensor MQ-2 + LCD

16.06.2013 16:20

Здравствуйте.

Цель: Вывести данные с датчика на дисплей.

Нам понадобится:

1. Arduino

2. Octopus Smoke Sensor MQ-2

3. LCD

4. Потенциометр или резистор на 1,8 кОм

Вот мои инструменты :

И так давайте подключим все.

Сперва подключим LCD к Arduino.

Вот схема подключения:

  • Над первой ножкой втыкаем провод от GND, расположенном на Arduino.
  • Вторую ножку экрана соединяем с 5 вольтами
  • Над третьим втыкаем провод от потенциометра (будет регулировать контрастность экрана). Сам потенциометр имеет 3 ножки. На одну подаём 5 вольт на другую землю (черный и красный провод на картинке), со средней ножки мы как раз и будем "забирать" нужное для конкретной контрастности напряжение.
  • Четвертый соединим с 12 разъёмом на Arduino (зеленый провод)
  • Пятый с GND (черный провод)
  • Шестой с 10 разъёмом на Arduino (зеленый провод)
  • 7,8,9,10 оставляем пустыми
  • 11 с 5 разъёмом на Arduino (зеленый провод)
  • 12 с 4 разъёмом на Arduino (зеленый провод)
  • 13 с 3 разъёмом на Arduino (зеленый провод)
  • 14 с 2 разъёмом на Arduino (зеленый провод)
  • 15 через резистор с 5 вольтами (нужен для подсветки)
  • 16 с GND (нужен для подсветки)

У вас не должно возникнуть никаких проблем.

Дальше нам нужно подсоединить дитчик.

Как мы видим у датчика 3 выхода.

  • S - сигнал. Его мы подключим на pin A0 (Аналоговый вход)
  • V - питание 5V. Его мы подключим к 5V на Arduino.
  • G - это у нас Земля. Его также втыкаем в Arduino в пин GND(Ground).

Подключили? Если у вас все получилось, то я рад за вас :)

Давайте его запрограммируем! Открываем Arduino IDE.

Туда пишем:
#include <LiquidCrystal.h> //  добавляем библиотеку для работы с LCD

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // определяем наш LCD(числа в скобках это наши пины на Arduino)
const int analogInPin = A0; // определяем наш датчик(A0 - аналоговый вход куда подключен наш датчик)
int sensorValue = 0; объявляем переменную для работы с датчиком

void setup() {
   Serial.begin(9600);  это для работы с Serial. В нашем случае он не обязателен, но пускай будет для вывода ошибок
   lcd.begin(16, 2); наш размер LCD. Мой LCD поддерживает 16 символов и две строки.
 }

void loop() {
  sensorValue = analogRead(analogInPin);  // считываем значения с датчика в переменную sensorValue
  Serial.println(sensorValue);  // выводим в Serial значения с датчика на всякий случай если вдруг не заработает LCD
  if (sensorValue >= 500) {
    lcd.setCursor(0, 0);          // ставим курсор на 0 символ и 0 строку. Отсчет идет с нуля.

    lcd.clear();                        //  очищаем экран LCD

    lcd.print("Gas!");

              // если значение с датчика будет свыше чем 500, то на LCD появится надпись "Gas!"
   
  } else {
    lcd.setCursor(0, 0);     
    lcd.clear();
    lcd.print("Normal!");
       //  если датчик выдает меньше 500, то на экран нам показывается "Normal!"

}
  lcd.setCursor(0, 1);           // ставим курсор на вторую строку
  lcd.print("Sensor = ");      // на второй строке печатаем "Sensor = "
  lcd.print(sensorValue);    // показуем сколько нам выдает датчик
  lcd.setCursor(0, 1);         
  delay(300);                       // повтор каждые 300 миллисекунд

  }

Компилируем. У вас должно получится как на видео ниже.