- Необходимые компоненты
- 0,96-дюймовый OLED-дисплей
- Подготовка сенсора MQ-135
- Принципиальная схема интерфейса MQ135 с Arduino
- Расчет R
- Код для измерения CO2 с помощью датчика Arduino MQ135
- Тестирование интерфейса датчика MQ-135
Уровень CO2 в атмосфере Земли увеличивается день ото дня. Среднее значение двуокиси углерода в атмосфере в 2019 году составило 409,8 частей на миллион, а в октябре 2020 года - 411,29. Двуокись углерода является ключевым парниковым газом, на который приходится около трех четвертей выбросов. Таким образом, мониторинг уровня CO2 также стал приобретать все большее значение.
В нашем предыдущем проекте мы использовали инфракрасный датчик CO2 для измерения концентрации CO2 в воздухе. В этом проекте мы собираемся использовать датчик MQ-135 с Arduino для измерения концентрации CO2. Измеренные значения концентрации CO2 будут отображаться на OLED-модуле, и, наконец, мы также сравним показания датчика Arduino MQ-135 с показаниями инфракрасного датчика CO2. Помимо CO2, мы также измерили концентрацию сжиженного нефтяного газа, дыма и аммиака с помощью Arduino.
Необходимые компоненты
- Ардуино Нано
- Датчик MQ-135
- Перемычки
- 0,96 'SPI OLED-дисплей
- Макетная плата
- Резистор 22 кОм
0,96-дюймовый OLED-дисплей
OLED (Organic Light-Emitting Diodes) - это технология самосветового излучения, созданная путем размещения ряда органических тонких пленок между двумя проводниками. Яркий свет возникает, когда на эти пленки подается электрический ток. В OLED используется та же технология, что и в телевизорах, но в них меньше пикселей, чем в большинстве наших телевизоров.
В этом проекте мы используем монохромный 7-контактный OLED-дисплей SSD1306 0,96 дюйма. Он может работать по трем различным протоколам связи: трехпроводной режим SPI, четырехпроводной режим SPI и режим I2C. Вы также можете узнать больше об основах OLED-дисплея и его типах, прочитав связанную статью. Контакты и их функции описаны в таблице ниже:
Имя контакта |
Другие названия |
Описание |
Gnd |
Земля |
Контакт заземления модуля |
Vdd |
Vcc, 5 В |
Вывод питания (допустимое напряжение 3-5 В) |
SCK |
D0, SCL, CLK |
Действует как штифт часов. Используется как для I2C, так и для SPI |
ПДД |
D1, MOSI |
Вывод данных модуля. Используется как для IIC, так и для SPI |
ВИЭ |
RST, СБРОС |
Сбрасывает модуль (полезно во время SPI) |
ОКРУГ КОЛУМБИЯ |
A0 |
Вывод команды данных. Используется для протокола SPI |
CS |
Выбор чипа |
Полезно, когда по протоколу SPI используется более одного модуля |
OLED Технические характеристики:
- Микросхема драйвера OLED: SSD1306
- Разрешение: 128 х 64
- Угол обзора:> 160 °
- Входное напряжение: 3,3 В ~ 6 В
- Цвет пикселя: синий
- Рабочая температура: -30 ° C ~ 70 ° C
Подготовка сенсора MQ-135
Датчик газа MQ-135 - это датчик качества воздуха для обнаружения широкого спектра газов, включая NH3, NOx, спирт, бензол, дым и CO2. Датчик MQ-135 можно приобрести как модуль, так и просто как датчик. В этом проекте мы используем сенсорный модуль MQ-135 для измерения концентрации CO2 в PPM. Принципиальная схема платы MQ-135 приведена ниже:
Нагрузочный резистор RL играет очень важную роль в обеспечении работы датчика. Этот резистор изменяет свое значение сопротивления в зависимости от концентрации газа. Согласно таблице данных MQ-135, сопротивление нагрузочного резистора может находиться в диапазоне от 10 кОм до 47 кОм. В таблице данных рекомендуется откалибровать детектор для концентрации 100 ppm NH3 или 50 ppm спирта в воздухе и использовать значение сопротивления нагрузки (RL) около 20 кОм. Но если вы проследите дорожки своей печатной платы, чтобы найти значение вашего RL на плате, вы увидите нагрузочный резистор 1 кОм (102).
Таким образом, чтобы измерить соответствующие значения концентрации CO2, вам необходимо заменить резистор 1 кОм резистором 22 кОм.
Принципиальная схема интерфейса MQ135 с Arduino
Полная схема подключения датчика газа MQ-135 к Arduino приведена ниже:
Схема очень проста, поскольку мы подключаем только датчик MQ-135 и модуль OLED-дисплея к Arduino Nano. Датчик газа MQ-135 и модуль OLED-дисплея питаются от +5 В и заземления. Вывод аналогового выхода датчика MQ-135 подключен к выводу A0 Arduino Nano. Поскольку модуль OLED-дисплея использует связь SPI, мы установили связь SPI между модулем OLED и Arduino Nano. Подключения показаны в таблице ниже:
S.No |
Вывод модуля OLED |
Штырь Arduino |
1 |
GND |
Земля |
2 |
VCC |
5В |
3 |
D0 |
10 |
4 |
D1 |
9 |
5 |
ВИЭ |
13 |
6 |
ОКРУГ КОЛУМБИЯ |
11 |
7 |
CS |
12 |
После подключения оборудования в соответствии с принципиальной схемой настройка датчика Arduino MQ135 должна выглядеть примерно так:
Расчет R
Теперь, когда мы знаем значение RL, давайте приступим к расчету значений R o в чистом воздухе. Здесь мы собираемся использовать MQ135.h для измерения концентрации CO2 в воздухе. Поэтому сначала загрузите библиотеку MQ-135, затем предварительно нагрейте датчик в течение 24 часов, прежде чем считывать значения R o. После процесса предварительного нагрева используйте приведенный ниже код, чтобы прочитать значения R o:
#include "MQ135.h" void setup () {Serial.begin (9600); } void loop () {MQ135 gasSensor = MQ135 (A0); // Присоединяем датчик к выводу A0 float rzero = gasSensor.getRZero (); Serial.println (rzero); задержка (1000); }
Теперь, как только вы получили R о значениях, перейдите к документам> Arduino> Библиотеки> MQ135-мастер папку и откройте MQ135.h файл и измените значение Rload & RZERO.
/// Сопротивление нагрузки на плате #define RLOAD 22.0 /// Калибровочное сопротивление при атмосферном уровне CO2 #define RZERO 5804.99
Теперь прокрутите вниз и замените значение ATMOCO2 текущим атмосферным CO2, равным 411,29.
/// Уровень CO2 в атмосфере для калибровки #define ATMOCO2 397.13
Код для измерения CO2 с помощью датчика Arduino MQ135
Полный код для взаимодействия датчика MQ-135 с Arduino приведен в конце документа. Здесь мы объясняем некоторые важные части кода MQ135 Arduino.
Код использует Adafruit_GFX , и Adafruit_SSD1306 , и MQ135.h библиотеки. Эти библиотеки можно загрузить из Менеджера библиотек в Arduino IDE и установить оттуда. Для этого откройте IDE Arduino и перейдите в Sketch <Include Library <Manage Libraries . Теперь найдите Adafruit GFX и установите библиотеку Adafruit GFX от Adafruit.
Аналогичным образом установите библиотеки Adafruit SSD1306 от Adafruit. Библиотеку MQ135 можно скачать отсюда.
После установки библиотек в Arduino IDE запустите код, включив необходимые файлы библиотек.
#include "MQ135.h" #include
Затем определите ширину и высоту OLED. В этом проекте мы используем OLED-дисплей 128 × 64 SPI. Вы можете изменить переменные SCREEN_WIDTH и SCREEN_HEIGHT в соответствии с вашим отображением.
#define SCREEN_WIDTH 128 #define SCREEN_HEIGHT 64
Затем определите контакты связи SPI, к которым подключен OLED-дисплей.
#define OLED_MOSI 9 #define OLED_CLK 10 #define OLED_DC 11 #define OLED_CS 12 #define OLED_RESET 13
Затем создайте экземпляр дисплея Adafruit с шириной и высотой, определенной ранее с помощью протокола связи SPI.
Отображение Adafruit_SSD1306 (SCREEN_WIDTH, SCREEN_HEIGHT, OLED_MOSI, OLED_CLK, OLED_DC, OLED_RESET, OLED_CS);
После этого определите вывод Arduino, к которому подключен датчик MQ-135.
int sensorIn = A0;
Теперь внутри функции setup () инициализируйте Serial Monitor со скоростью 9600 бод для целей отладки. Также инициализируйте OLED-дисплей с помощью функции begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); display.clearDisplay ();
Внутри функции loop () сначала прочтите значения сигнала на аналоговом выводе Arduino, вызвав функцию analogRead () .
val = analogRead (A0); Serial.print ("raw =");
Затем в следующей строке вызовите gasSensor.getPPM (), чтобы вычислить значения PPM. Значения PPM вычисляются с использованием резистора нагрузки R 0 и считывания с аналогового вывода.
float ppm = gasSensor.getPPM (); Serial.print ("ppm:"); Serial.println (ppm);
После этого установите размер и цвет текста с помощью setTextSize () и setTextColor () .
display.setTextSize (1); display.setTextColor (БЕЛЫЙ);
Затем в следующей строке определите позицию, в которой начинается текст, с помощью метода setCursor (x, y) . И распечатайте значения CO2 на OLED-дисплее с помощью функции display.println () .
display.setCursor (18,43); display.println («CO2»); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (ppm);
И, наконец, вызовите метод display () для отображения текста на OLED-дисплее.
display.display (); display.clearDisplay ();
Тестирование интерфейса датчика MQ-135
Как только оборудование и код готовы, пора проверить датчик. Для этого подключите Arduino к ноутбуку, выберите плату и порт и нажмите кнопку загрузки. Затем откройте монитор последовательного порта и подождите некоторое время (процесс предварительного нагрева), после чего вы увидите окончательные данные. Значения будут отображаться на OLED-дисплее, как показано ниже:
Вот как датчик MQ-135 может быть использован для точного измерения CO2 в воздухе. Полный код Arduino датчика качества воздуха MQ135 и рабочее видео приведены ниже. Если у вас есть сомнения, оставьте их в разделе комментариев.