- Необходимые компоненты
- Гравитационный инфракрасный датчик CO2
- 0,96-дюймовый OLED-дисплей
- Принципиальная электрическая схема
- Код Arduino для измерения концентрации CO2
- Тестирование взаимодействия гравитационного инфракрасного датчика CO2
Повышение концентрации углекислого газа в воздухе стало серьезной проблемой. Согласно отчету NOAA, концентрация CO2 в озоне достигла 0,0385 процента (385 частей на миллион), и это самый высокий показатель за 2,1 миллиона лет. Это означает, что в одном миллионе частиц воздуха содержится 385 частиц диоксида углерода. Этот рост уровня CO2 сильно повлиял на окружающую среду и заставил нас столкнуться с такими ситуациями, как изменение климата и глобальное потепление. На дорогах установлено множество приборов для измерения качества воздуха, которые определяют уровень CO2, но мы также можем построить прибор для измерения CO2 своими руками и установить его в нашем районе.
В этом руководстве мы собираемся связать инфракрасный датчик CO2 с гравитацией и Arduino для измерения концентрации CO2 в PPM. Гравитационный Инфракрасный датчик CO2, является высокая точность датчика аналогового СО2. Он измеряет содержание CO2 в диапазоне от 0 до 5000 ppm. Вы также можете проверить наши предыдущие проекты, в которых мы использовали датчик газа MQ135, датчик Sharp GP2Y1014AU0F и датчик Nova PM SDS011 для создания монитора качества воздуха.
Необходимые компоненты
- Ардуино Нано
- Гравитационный инфракрасный датчик CO2 V1.1
- Перемычки
- 0,96 'SPI OLED-дисплей
- Макетная плата
Гравитационный инфракрасный датчик CO2
Инфракрасный датчик CO2 Gravity V1.1 - это новейший высокоточный аналоговый инфракрасный датчик CO2, выпущенный DFRobot. Этот датчик основан на технологии недисперсионного инфракрасного излучения (NDIR) и имеет хорошую селективность и бескислородную зависимость. Он включает температурную компенсацию и поддерживает выход ЦАП. Эффективный диапазон измерения этого датчика составляет от 0 до 5000 ppm с точностью ± 50 ppm + 3%. Этот инфракрасный датчик CO2 может использоваться в системах отопления, вентиляции и кондиционирования воздуха, в мониторинге качества воздуха в помещениях, в промышленных процессах и в мониторинге защиты, в сельском хозяйстве и животноводстве.
Распиновка инфракрасного датчика CO2 :
Как упоминалось ранее, инфракрасный датчик CO2 имеет 3-контактный разъем. На приведенном ниже рисунке и в таблице показано назначение контактов инфракрасного датчика CO2:
№ контакта |
Имя контакта |
Описание |
---|---|---|
1 |
Сигнал |
Аналоговый выход (0,4 ~ 2 В) |
2 |
VCC |
VCC (4,5 ~ 5,5 В) |
3 |
GND |
GND |
Инфракрасный датчик CO2 Технические характеристики и особенности:
- Обнаружение газа: двуокись углерода (CO2)
- Рабочее напряжение: 4,5 ~ 5,5 В постоянного тока
- Время предварительного нагрева: 3 мин.
- Время отклика: 120 с
- Рабочая температура: 0 ~ 50 ℃
- Влажность при эксплуатации: 0 ~ 95% относительной влажности (без конденсации)
- Водонепроницаемый и антикоррозийный
- Жизнь с высоким циклом
- Защита от водяного пара
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
Узнайте больше об OLED и его взаимодействии с различными микроконтроллерами, перейдя по ссылке.
Принципиальная электрическая схема
Схема подключения аналогового инфракрасного датчика CO2 для Arduino представлена ниже:
Схема очень проста, поскольку мы подключаем только гравитационный инфракрасный датчик CO2 и модуль OLED-дисплея с Arduino Nano. Инфракрасный датчик CO2 и модуль OLED-дисплея питаются от +5 В и заземления. Вывод сигнала (аналоговый выход) датчика CO2 подключен к выводу 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 для измерения концентрации CO2
Полный код этого гравитационного аналогового инфракрасного датчика CO2 для проекта Arduino приведен в конце документа. Здесь мы объясняем некоторые важные части кода.
Код использует Adafruit_GFX , и Adafruit_SSD1306 библиотеки. Эти библиотеки можно загрузить из Менеджера библиотек в Arduino IDE и установить оттуда. Для этого откройте IDE Arduino и перейдите в Sketch> Include Library> Manage Libraries . Теперь найдите Adafruit GFX и установите библиотеку Adafruit GFX от Adafruit.
Аналогичным образом установите библиотеки Adafruit SSD1306 от Adafruit. Инфракрасный датчик CO2 не требует какой-либо библиотеки, поскольку мы считываем значения напряжения непосредственно с аналогового вывода Arduino.
После установки библиотек в Arduino IDE запустите код, включив необходимые файлы библиотеки. Датчик пыли не требует какой-либо библиотеки, так как чтение снимается непосредственно с аналогового вывода Arduino.
#включают
Затем определите ширину и высоту 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, к которому подключен датчик CO2.
int sensorIn = A0;
Теперь внутри функции setup () инициализируйте Serial Monitor со скоростью 9600 бод для целей отладки. Также инициализируйте OLED-дисплей с помощью функции begin () .
Serial.begin (9600); display.begin (SSD1306_SWITCHCAPVCC); analogReference (ПО УМОЛЧАНИЮ);
Внутри функции loop () сначала прочтите значения сигнала на аналоговом выводе Arduino, вызвав функцию analogRead () . После этого преобразуйте эти значения аналогового сигнала в значения напряжения.
void loop () {int sensorValue = analogRead (sensorIn); плавающее напряжение = значение датчика * (5000 / 1024.0);
После этого сравните значения напряжения. Если напряжение равно 0 В, значит, с датчиком возникла проблема. Если напряжение больше 0 В, но меньше 400 В, это означает, что датчик все еще находится в процессе предварительного нагрева.
if (Voltage == 0) {Serial.println ("Неисправность"); } else if (Voltage <400) {Serial.println ("предварительный нагрев"); }
Если напряжение равно или больше 400 В, преобразовать его в значения концентрации CO2.
иначе {int Voltage_diference = напряжение-400; концентрация с плавающей точкой = разница_ напряжений * 50,0 / 16,0;
После этого установите размер и цвет текста с помощью setTextSize () и setTextColor () .
display.setTextSize (1); display.setTextColor (БЕЛЫЙ);
Затем в следующей строке определите позицию, в которой начинается текст, с помощью метода setCursor (x, y) . И распечатайте значения CO2 на OLED-дисплее с помощью функции display.println () .
display.println («CO2»); display.setCursor (63,43); display.println ("(PPM)"); display.setTextSize (2); display.setCursor (28,5); display.println (концентрация);
И, наконец, вызовите метод display () для отображения текста на OLED-дисплее.
display.display (); display.clearDisplay ();
Тестирование взаимодействия гравитационного инфракрасного датчика CO2
Как только оборудование и код готовы, пора проверить датчик. Для этого подключите Arduino к ноутбуку, выберите плату и порт и нажмите кнопку загрузки. Затем откройте монитор последовательного порта и подождите некоторое время (процесс предварительного нагрева), после чего вы увидите окончательные данные.
Значения будут отображаться на OLED-дисплее, как показано ниже:
Примечание. Перед использованием сенсора дайте сенсору нагреться примерно 24 часа, чтобы получить правильные значения PPM. Когда я включил датчик в первый раз, выходная концентрация CO2 составляла от 1500 до 1700 PPM, а после 24-часового процесса нагрева выходная концентрация CO2 снизилась до 450-500 PPM, что является правильными значениями PPM. Поэтому перед использованием датчика для измерения концентрации CO2 необходимо откалибровать его.
Вот как можно использовать инфракрасный датчик CO2 для точного измерения концентрации CO2 в воздухе. Полный код и рабочее видео приведены ниже. Если у вас есть сомнения, оставьте их в разделе комментариев или воспользуйтесь нашим форумом для технической помощи.