В данной статье мы рассмотрим подключение датчика газа MQ-2 к платформе Arduino UNO с выводом информации на символьный LCD1602, используя интерфейс I2C.
Датчик газа MQ-2 представляет собой устройство для обнаружения различных газов в воздухе. Он реагирует на метан, пропан, угарный газ, дым и многое другое, что делает его идеальным инструментом для широкого спектра приложений. MQ-2 обеспечивает как цифровой, так и аналоговый сигналы, что дает возможность выбирать формат данных в зависимости от требований проекта. Но, возможно, его наиболее удивительной особенностью является его высокая чувствительность к газам, что делает его отличным выбором для проектов, связанных с мониторингом качества воздуха. Однако, стоить заметить, что датчик способен показать только концентрацию газов, но не может определить, какие конкретно газы находиться в воздухе.
Arduino UNO – это популярная плата, которая предоставляет широкий спектр возможностей для создания разнообразных проектов. Оснащенная микроконтроллером ATmega328P, она обеспечивает достаточную производительность для большинства задач. Arduino UNO предоставляет множество цифровых входов/выходов и 6 аналоговых входов, что позволяет подключать разнообразные датчики и устройства, делая ее идеальным выбором для разработчиков. Кроме того, наличие интегрированной среды разработки Arduino IDE упрощает создание и загрузку программ на плату Arduino UNO, что делает эту плату доступной и простой в использовании для широкого круга разработчиков и энтузиастов.
Схема подключения
Для подключения датчика газа MQ-2 к Arduino UNO с выводом информации на LCD1602 через интерфейс I2C, выполните следующие шаги:
Таблица распиновки
MQ-2 | Arduino UNO |
---|---|
VCC | 5V |
GND | GND |
AOUT | A1 |
DOUT | D2 |
Описание подключения
- Подключите провода к датчику MQ-2 следующим образом:
- Подсоедините провод VCC датчика к 5V на Arduino UNO.
- Подсоедините провод GND датчика к GND на Arduino UNO.
- Подсоедините провод AOUT датчика к аналоговому входу A1 на Arduino UNO.
- Подсоедините провод DOUT датчика к цифровому входу D2 на Arduino UNO.
- Подключите символьный LCD1602 к Arduino UNO через интерфейс I2C. Интерфейс I2C использует две дополнительные ножки: SDA и SCL, которые подключаются к соответствующим пинам на Arduino UNO.
Для подключения символьного дисплея мы используем драйвер PCF8574. Если у вас нет этого компонента, то вы можете воспользоваться нашей инструкцией по подключению дисплея напрямую.
Библиотеки
Для работы с символьным LCD1602 через интерфейс I2C, вам потребуется библиотека “LiquidCrystal_I2C”. Вы можете установить ее, следуя этим шагам:
- Откройте Arduino IDE.
- Перейдите в меню “Скетч” -> “Подключить библиотеку” -> “Управление библиотеками”.
- В поисковой строке введите “LiquidCrystal_I2C” и установите библиотеку.
Пример кода
Ниже представлен пример кода для подключения датчика газа MQ-2 к Arduino UNO и вывода информации на LCD1602:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
#include <Wire.h> #include <LiquidCrystal_I2C.h> LiquidCrystal_I2C lcd(0x27, 16, 2); // Инициализация символьного LCD с адресом 0x27, 16 символами в 2 строках const int gasSensorPin = A0; // Пин, к которому подключен аналоговый выход датчика газа const int digitalOutPin = 2; // Пин, к которому подключен цифровой выход датчика газа void setup() { lcd.init(); // Инициализация LCD lcd.backlight(); // Включение подсветки на LCD pinMode(gasSensorPin, INPUT); // Установка пина аналогового входа как вход pinMode(digitalOutPin, INPUT); // Установка пина цифрового входа как вход Serial.begin(9600); // Начало работы с последовательным портом на скорости 9600 бит/сек } void loop() { int analogValue = analogRead(gasSensorPin); // Считывание аналогового значения с датчика газа int digitalValue = digitalRead(digitalOutPin); // Считывание цифрового значения с датчика газа lcd.clear(); // Очистка LCD lcd.setCursor(0, 0); // Установка позиции курсора на первой строке lcd.print("Gas Sensor Value:"); // Вывод текста на LCD lcd.setCursor(0, 1); // Установка позиции курсора на второй строке lcd.print(analogValue); // Вывод аналогового значения на LCD lcd.setCursor(4, 1); // Установка позиции курсора на второй строке, четвертый символ if (digitalValue == HIGH) { // Проверка цифрового значения Serial.println("Smoke: Not detected"); // Ввывод сообщения в монитор последовательного порта lcd.print("No smoke"); // Вывод сообщения на LCD } else { Serial.println("Smoke: Detected!"); // Вывод сообщения в монитор последовательного порта lcd.print("Smoke!!!"); // Вывод сообщения на LCD } delay(1000); // Пауза 1 секунда } |