Блог

● 4.4. Как подключить датчик уровня воды

Опубликовано: 23.01.2018

Одна из главных задач умного дома — заботиться о своей сохранности, не допускать взломов, пожаров, затоплений, и прочих повреждений. Вот о защите от протечек и затопления мы сегодня и поговорим. Точнее сказать, пока только об обнаружении протечек.
Для обнаружения протечек будем использовать датчик воды. Датчики воды предназначены для определения уровня воды в различных емкостях, где недоступен визуальный контроль, с целью предупреждения перенаполнения емкости водой через критическую отметку. Данный датчик воды (рис. 4.12) – погружной. Чем больше погружение датчика в воду, тем меньше сопротивление между двумя соседними проводами.
T1592P

Рис. 4.19. Датчик уровня воды.

Датчик имеет три контакта для подключения к контроллеру.

•    + – питание датчика;
•    - – земля;
•    S -  аналоговое значение.

На вывод S подается аналоговое значение, которое можно передавать в контроллер для дальнейшей обработки, анализа и принятия решений. Датчик имеет красный светодиод, сигнализирующих о наличие поступающего на датчик питания.
Рассмотрим подключение датчика уровня воды к плате Arduino Mega и модулю NodeMcu ESP8266.

4.4.1. Подключение датчика уровня воды к плате Arduino Mega

Подключение датчика уровня воды к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.20.
 


Рис. 4.20. Схема подключений датчика уровня воды к плате Arduino Mega

Загрузим на плату Arduino Mega скетч получения данных с датчика уровня воды, перевода аналогового значения в см (0 – 4) и вывода в последовательный порт Arduino. Получение данных влажности оформим в виде отдельной процедуры get_data_levelwater(). Содержимое скетча представлено в листинге 4.8.
Листинг 4.8

#define INTERVAL_GET_DATA 2000  // интервал измерений, мс
#define LEVELWATERPIN A9      // пин подключения контакта S
// пороговое значение протечки 
#define LEVELWATER 100

// переменная для интервала измерений
unsigned long millis_int1=0;

void setup(void) {
   // запуск последовательного порта
   Serial.begin(9600);
}

void loop(void) {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // получение данных c датчика уровня воды
      float  levelwater= get_data_levelwater();
      // вывод в монитор последовательного порта
      Serial.print("levelwater =");Serial.println(levelwater);
      if(levelwater>LEVELWATER)
         Serial.println(" flood !!!");
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных с датчика уровня воды
float get_data_levelwater()  {
  // получение значения с аналогового вывода датчика
  int avalue=analogRead(LEVELWATERPIN);
  return (float) avalue;
}



Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика уровня воды (рис. 4.21). При попадание воды на датчик выводим пообщение о протекании. Подберите практическим путем аналоговое значения для константы LEVELWATER (пороговое значение погружения).


 
Рис. 4.21. Вывод данных уровня затопления в монитор последовательного порта

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .

4.4.2. Подключение датчика уровня воды к модулю NodeMcu ESP8266

Теперь рассмотрим подключение датчика уровня воды к модулю NodeMcu ESP8266.

Схема соединений представлена на рис. 4.22.

Рис. 4.22. Схема подключений датчика Soil Moisture к NodeMcu ESP8266

Загрузим на модуль Node Mcu скетч получения данных с датчика уровня воды и вывода в последовательный порт Arduino.  Получение данных влажности оформим в виде отдельной процедуры get_data_soilmoisture(). Для выбора аналогового входа мультиплексора y1 подаем на контакты D7, D8 сигнал низкого уровня LOW, а на контакт D5 – высокого уровня HIGH. Содержимое скетча представлено в листинге 4.9.
Листинг 4.9

#define INTERVAL_GET_DATA 2000  // интервал измерений, мс
#define LEVELWATERPIN A0      // аналоговый пин 
// пороговое значение протечки 
#define LEVELWATER 100

// переменная для интервала измерений
unsigned long millis_int1=0;

void setup(void) {
   // входы подключения к мультиплексору D5, D7, D8 (GPIO 14, 13, 15) 
   // как OUTPUT
   pinMode(14,OUTPUT);
   pinMode(13,OUTPUT);
   pinMode(15,OUTPUT);  
   // запуск последовательного порта
   Serial.begin(9600);
}

void loop(void) {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // получение данных c датчика уровня воды
      float  levelwater= get_data_levelwater();
      // вывод в монитор последовательного порта
      Serial.print("levelwater =");Serial.println(levelwater);
      if(levelwater>LEVELWATER)
         Serial.println(" flood !!!");
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных с датчика уровня воды
float get_data_levelwater()  {
  // выбор входа мультиплексора CD4051 – y1 (001)
  digitalWrite(14,HIGH);
  digitalWrite(13,LOW);
  digitalWrite(15,LOW);
  // получение значения с аналогового вывода датчика
  int avalue=analogRead(LEVELWATERPIN);
  return (float) avalue;
}



Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика уровня воды (рис. 4.23). При попадание воды на датчик выводим пообщение о протекании. Подберите практическим путем аналоговое значения для константы LEVELWATER (пороговое значение погружения).
 


Рис. 4.23. Вывод данных уровня затопления в монитор последовательного порта

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .

Читать далее

● 4.5. Определение концентрации углеводородных газов с помощью датчика MQ-2

Опубликовано: 23.01.2018

Одна из самых важных задач в вопросе безопасности умного дома –обнаружение утечки газа. Для того, чтобы плата Arduino успешно решала задачи такого рода, нужно подключить к ней датчик газа MQ-2. Датчик MQ-2 (рис. 4.24) определит концентрацию углеводородных газов (пропан, метан, н-бутан), дыма (взвешенных частиц, являющихся результатом горения) и водорода в окружающей среде. Датчик можно использовать для обнаружения утечек газа и задымления. В газоанализатор встроенный нагревательный элемент, который необходим для химической реакции. Поэтому во время работы сенсор будет горячим. Для получения стабильных показаний новый сенсор необходимо один раз прогреть (оставить включенным) в течение 24 часов. После этого стабилизация после включения занимать около минуты.

 Рис. 4.24. Датчик газов MQ-2.

В зависимости от уровня газа в атмосфере меняется внутреннее сопротивление датчика. MQ-2 имеет аналоговый выход, поэтому напряжение на этом выходе будет меняться пропорционально уровню газа в окружающей среде. Для определения по логическому уровню также имеется цифровой выход. На модуле датчика есть встроенный потенциометр, который позволяет настроить чувствительность этого датчика в зависимости от того, насколько точно вы хотите регистрировать уровень газа.
Теперь об единицах измерения. На территории бывшего Советского Союза, показатели принято измерять в процентах (%) или же непосредственно в массе к объему (мг/м3). В зарубежных странах применяет такой показатель как ppm.
Сокращение ppm расшифровывается как parts per million (частей на миллион). Например, 1 ppm = 0,0001%.
Диапазон измерений датчика:

•    Пропан: 200–5000 ppm;
•    Бутан: 300–5000 ppm;
•    Метан: 500–20000 ppm;
•    Водород: 300–5000 ppm.

Рассмотрим подключение датчика MQ-2 к плате Arduino Mega и модулю NodeMcu ESP8266.

4.5.1. Подключение датчика MQ-2 к плате Arduino Mega

Подключение датчика MQ-2 к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.25.
 

Рис. 4.25. Схема подключений датчика MQ-2 к плате Arduino Mega

Загрузим на плату Arduino Mega скетч получения данных с датчика MQ-2 и вывода в последовательный порт Arduino. Процедуры определения по данным, приходящим с аналогового входа:

•    get_data_ppmpropan() – содержание пропана в  ppm;
•    get_data_ppmmethan() – содержание пропана в  ppm;
•    get_data_ppmsmoke() – содержание дыма.

Содержимое скетча представлено в листинге 4.10.
Листинг 4.10

// библиотека для работы с датчиками MQ 
#include <TroykaMQ.h>

#define INTERVAL_GET_DATA 2000  // интервала измерений, мс 
// пин, к которому подключен датчик
#define MQ2PIN         A10
// создаём объект для работы с датчиком
MQ2 mq2(MQ2PIN);

// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
  // открываем последовательный порт
  Serial.begin(9600);
  // калибровка
  mq2.calibrate();
  mq2.getRo();
}
 
void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // получение данных c датчика mq2
      float  propan= get_data_ppmpropan();
      // выводим значения газа в ppm
      Serial.print("propan=");
      Serial.print(propan);
      Serial.println(" ppm ");
      float  methan= get_data_ppmmethan();
      // выводим значения газа в ppm
      Serial.print("methan=");
      Serial.print(methan);
      Serial.println(" ppm ");
      float  smoke= get_data_ppmsmoke();
      // выводим значения газа в ppm
      Serial.print("smoke=");
      Serial.print(smoke);
      Serial.println(" ppm ");
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных содержания пропана с датчика MQ2
float get_data_ppmpropan()  {

  Serial.println(mq2.readRatio());
  // получение значения 
  float value=mq2.readLPG();
  
  return value;
}
// получение данных содержания метана с датчика MQ2
float get_data_ppmmethan()  {

  Serial.println(mq2.readRatio());
  // получение значения 
  float value=mq2.readMethane();
  
  return value;
}
// получение данных содержания дыма с датчика MQ2
float get_data_ppmsmoke()  {

  Serial.println(mq2.readRatio());
  // получение значения 
  float value=mq2.readSmoke();
  
  return value;
}



Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и увидите вывод данных о содержании пропана, метана и дыма (рис. 4.26).
 


Рис. 4.26. Вывод данных датчика MQ-2 в монитор последовательного порта.

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .

4.5.2. Подключение датчика MQ-2 к модулю NodeMcu ESP8266

Теперь рассмотрим подключение датчика MQ-2 к модулю NodeMcu ESP8266. Датчик MQ-2  подключаем к входу y2 мультиплексора. Для выбора аналогового входа мультиплексора используем контакты D5, D7, D8 модуля Node Mcu. Схема соединений представлена на рис. 4.27.


Рис. 4.27. Схема подключений датчика MQ-2 к NodeMcu ESP8266

Загрузим на модуль NodeMcu скетч получения данных с датчика MQ-2 и вывода в последовательный порт Arduino. Для выбора аналогового входа мультиплексора y2 подаем на контакты D5, D8 сигнал низкого уровня LOW, на контакт D7 сигнал высокого уровня HIGH.
Процедуры определения по данным, приходящим с аналогового входа:

•    get_data_ppmpropan() – содержание пропана в  ppm;
•    get_data_ppmmethan() – содержание пропана в  ppm;
•    get_data_ppmsmoke() – содержание дыма.

Содержимое скетча представлено в листинге 4.11.
Листинг 4.11

// библиотека для работы с датчиками MQ 
#include <TroykaMQ.h>

#define INTERVAL_GET_DATA 2000  // интервала измерений, мс 
// аналоговый пин
#define MQ2PIN         A0
// создаём объект для работы с датчиком
MQ2 mq2(MQ2PIN);

// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
   // входы подключения к мультиплексору D5, D7, D8 (GPIO 14, 13, 15) 
   // как OUTPUT
   pinMode(14,OUTPUT);
   pinMode(13,OUTPUT);
   pinMode(15,OUTPUT);  
  // открываем последовательный порт
  Serial.begin(9600);
  // выбор входа мультиплексора CD4051 – y2 (010)
  digitalWrite(14,LOW);
  digitalWrite(13,HIGH);
  digitalWrite(15,LOW);    
  // калибровка
  mq2.calibrate();
  mq2.getRo();
}
 
void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // выбор входа мультиплексора CD4051 – y2 (010)
      digitalWrite(14,LOW);
      digitalWrite(13,HIGH);
      digitalWrite(15,LOW);    
      // получение данных c датчика mq2
      float  propan= get_data_ppmpropan();
      // выводим значения газа в ppm
      Serial.print("propan=");
      Serial.print(propan);
      Serial.println(" ppm ");
      float  methan= get_data_ppmmethan();
      // выводим значения газа в ppm
      Serial.print("methan=");
      Serial.print(methan);
      Serial.println(" ppm ");
      float  smoke= get_data_ppmsmoke();
      // выводим значения газа в ppm
      Serial.print("smoke=");
      Serial.print(smoke);
      Serial.println(" ppm ");
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных содержания пропана с датчика MQ2
float get_data_ppmpropan()  {
  Serial.println(mq2.readRatio());
  // получение значения 
  float value=mq2.readLPG();
  return value;
}
// получение данных содержания метана с датчика MQ2
float get_data_ppmmethan()  {
  Serial.println(mq2.readRatio());
  // получение значения 
  float value=mq2.readMethane();
  return value;
}
// получение данных содержания дыма с датчика MQ2
float get_data_ppmsmoke()  {
  Serial.println(mq2.readRatio());
  // получение значения 
  float value=mq2.readSmoke();
  return value;
}



Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика MQ-2 (рис. 4.28).
 


Рис. 4.28. Вывод данных датчика MQ-2 в монитор последовательного порта.

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .



Читать далее

● 4.6. Определение концентрации угарного газа с помощью датчика MQ-7

Опубликовано: 23.01.2018

Рассмотрим еще один датчик для обнаружения  утечки газа. Это датчик угарного газа MQ-7 (рис. 4.29).

Рис. 4.29. Датчик угарного газа MQ-7.

Основным источником выделения угарного гоза СО, является сгорание углеродного топлива при недостаточном количестве кислорода. Углерод "не догорает" и вместо углекислого газа CO2, в атмосферу выбрасывается угарный газ CO. Источником СО в доме, при неправильной эксплуатации, могут выступать дровяные печи, газовые конфорки, газовые котлы и прочая отопительная техника, работающая на углеродном топливе. В выхлопе бензинового двигателя автомобиля содержание СО может быть до 3%, а по гигиеническим нормам его должно быть не более 20 мг/м³ (около 0,0017%).
Угарный газ (CO) чрезвычайно ядовит, но при этом не обладает ни цветом, ни запахом. Попав в помещение с угарным газом, вы только по косвенным симптомам поймете, что подвергаетесь воздействию яда. Сначала головная боль, головокружение, одышка, сердцебиение, потом посинение трупа. Угарный газ соединяется с гемоглобином крови, отчего последний перестает переносить кислород тканям вашего организма, и первым страдает головной мозг и нервная система.Во-вторых, при определенных концентрациях он образует взрывоопасную смесь.
Поэтому датчик угарного газа – важный и необходимый компонент при построении "умного дома".

Рассмотрим подключение датчика MQ-7 к плате Arduino Mega и модулю NodeMcu ESP8266.

4.6.1. Подключение датчика MQ-7 к плате Arduino Mega

Подключение датчика MQ-7 к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.30.
 

Рис. 4.30. Схема подключений датчика MQ-7 к плате Arduino Mega

Загрузим на плату Arduino Mega скетч получения данных с датчика MQ-7 и вывода в последовательный порт Arduino. Процедуры определения по данным, приходящим с аналогового входа ppmcarbonmonoxide().
Содержимое скетча представлено в листинге 4.12.
Листинг 4.12

// библиотека для работы с датчиками MQ 
#include <TroykaMQ.h>

#define INTERVAL_GET_DATA 2000  // интервала измерений, мс 
// пин, к которому подключен датчик
#define MQ7PIN         A11
// создаём объект для работы с датчиком
MQ7 mq7(MQ7PIN);

// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
  // открываем последовательный порт
  Serial.begin(9600);
  // калибровка
  mq7.calibrate();
  mq7.getRo();
}
 
void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // получение данных c датчика mq7
      float  carbonmonoxide= get_data_ppmcarbonmonoxide();
      // выводим значения газа в ppm
      Serial.print("carbonmonoxide=");
      Serial.print(carbonmonoxide);
      Serial.println(" ppm ");
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных с датчика MQ7
float get_data_ppmcarbonmonoxide()  {

  Serial.println(mq7.readRatio());
  // получение значения 
  float value=mq7.readCarbonMonoxide();
  
  return value;
}



Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и увидите вывод данных о содержании угарного газа CO.
 


Рис. 4.31. Вывод данных датчика MQ-7 в монитор последовательного порта.

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке.

4.6.2. Подключение датчика MQ-7 к модулю NodeMcu ESP8266

Теперь рассмотрим подключение датчика MQ-7 к модулю NodeMcu ESP8266. Датчик MQ-7  подключаем к входу y3 мультиплексора. Для выбора аналогового входа мультиплексора используем контакты D5, D7, D8 модуля Node Mcu. Схема соединений представлена на рис. 4.32.

Рис. 4.32. Схема подключений датчика MQ-7 к NodeMcu ESP8266

Загрузим на модуль NodeMcu скетч получения данных с датчика MQ-7 и вывода в последовательный порт Arduino. Для выбора аналогового входа мультиплексора y3 подаем на контакты D5, D7 высокого уровня HIGH, на контакт D8 сигнал низкого уровня LOW. Процедура определения содержание угарного гоза СО в  ppm –  ppmcarbonmonoxide().
Содержимое скетча представлено в листинге 4.13.
Листинг 4.13

// библиотека для работы с датчиками MQ 
#include <TroykaMQ.h>

#define INTERVAL_GET_DATA 2000  // интервала измерений, мс 
// аналоговый пин
#define MQ7PIN         A0
// создаём объект для работы с датчиком
MQ7 mq7(MQ7PIN);

// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
  // входы подключения к мультиплексору D5, D7, D8 (GPIO 14, 13, 15) 
  // как OUTPUT
  pinMode(14,OUTPUT);
  pinMode(13,OUTPUT);
  pinMode(15,OUTPUT);  
  // открываем последовательный порт
  Serial.begin(9600);
  // выбор входа мультиплексора CD4051 – y3 (011)
  digitalWrite(14,HIGH);
  digitalWrite(13,HIGH);
  digitalWrite(15,LOW);    
  // калибровка
  mq7.calibrate();
  mq7.getRo();
}
 
void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // выбор входа мультиплексора CD4051 – y3 (011)
      digitalWrite(14,HIGH);
      digitalWrite(13,HIGH);
      digitalWrite(15,LOW);     
      // получение данных c датчика mq7
      float  carbonmonoxide= get_data_ppmcarbonmonoxide();
      // выводим значения газа в ppm
      Serial.print("carbonmonoxide=");
      Serial.print(carbonmonoxide);
      Serial.println(" ppm ");
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных с датчика MQ7
float get_data_ppmcarbonmonoxide()  {
  Serial.println(mq7.readRatio());
  // получение значения 
  float value=mq7.readCarbonMonoxide();
  return value;
}



Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и видим вывод данных, получаемых с датчика MQ-7 (рис. 4.33).
 


Рис. 4.33. Вывод данных датчика MQ-7 в монитор последовательного порта

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .

Читать далее

● 4.7. Подключение модуля датчика огня

Опубликовано: 23.01.2018

Модуль датчика огня Flame Sensor (рис. 4.) позволяет фиксировать наличие пламени или другого источника огня в прямой видимости перед собой.
Датчик имеет 4 контакта (питание, земля, аналоговый вывод и цифровой вывод, срабатывание которого (выдачу сигнала HIGH) можно настроить с помощью потенциометра).Номинальное напряжение питания – 5 В. Сенсор определяет наличие огня в углу чувствительности 60 °. Показания представляются в виде аналогового сигнала. Рабочая температура датчика пламени составляет от -25 до +85 градусов по Цельсию.

Рис. 4.34. Модуль датчика огня Flame Sensor.

Рассмотрим подключение модуля Flame Sensor к плате Arduino Mega и модулю NodeMcu ESP8266.

4.7.1. Подключение модуля датчика Flame Sensor к плате Arduino Mega

Подключение модуля датчика Flame Sensor к плате Arduino Mega мы будем производить по аналоговому входу. Питание для датчика берем также с платы Arduino. Схема соединений представлена на рис. 4.35.

Рис. 4.35. Схема подключений модуля датчика огня Flame Sensor к плате Arduino Mega

Загрузим на плату Arduino Mega скетч получения данных с модуля датчика Flame Sensor и вывода в последовательный порт Arduino. Процедура определения по данным, приходящим с аналогового входа get_data_flame().
Содержимое скетча представлено в листинге 4.14.
Листинг 4.14

#define INTERVAL_GET_DATA 2000  // интервала измерений, мс 
// пин, к которому подключен датчик огня flame sensor
#define FLAMEPIN         A12

// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
  // открываем последовательный порт
  Serial.begin(9600);
}
 
void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // получение данных c датчика mq7
      float  flame= get_data_flame();
      // выводим значения flame sensor
      Serial.print("flame=");
      Serial.print(flame);
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных с датчика flame sensor
float get_data_flame()  {

  // получение значения 
  float value=analogRead(FLAMEPIN);
  
  return (float)value;
} 



Загрузим скетч на плату Arduino Mega, откроем монитор последовательного порта и увидите вывод данных с модуля датчика огня Flame Sensor (рис. 4.36).


Рис. 4.36. Вывод данных модуля датчика огня Flame Sensor в монитор последовательного порта.

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .

4.7.2. Подключение модуля датчика Flame Sensor к модулю NodeMcu ESP8266

Теперь рассмотрим подключение модуля датчика Flame Sensor к модулю NodeMcu ESP8266. Датчик MQ-7  подключаем к входу y3 мультиплексора. Для выбора аналогового входа мультиплексора используем контакты D5, D7, D8 модуля Node Mcu. Схема соединений представлена на рис. 4.37.

Рис. 4.37. Схема подключений модуля датчика огня Flame Sensor к NodeMcu ESP8266

Загрузим на модуль NodeMcu скетч получения данных с модуля датчика Flame Sensor и вывода в последовательный порт Arduino. Для выбора аналогового входа мультиплексора y4 подаем на контакты D5, D7 сигнал низкого уровня LOW, на контакт D8 сигнал высокого уровня HIGH. Процедура определения по данным, приходящим с аналогового входа get_data_flame().
Содержимое скетча представлено в листинге 4.15.
Листинг 4.15

#define INTERVAL_GET_DATA 2000  // интервала измерений, мс 
// аналоговый пин
#define FLAMEPIN         A0

// переменная для интервала измерений
unsigned long millis_int1=0;
 
void setup() {
  // входы подключения к мультиплексору D5, D7, D8 (GPIO 14, 13, 15) 
  // как OUTPUT
  pinMode(14,OUTPUT);
  pinMode(13,OUTPUT);
  pinMode(15,OUTPUT);  
  // открываем последовательный порт
  Serial.begin(9600);
}
 
void loop() {
   if(millis()-millis_int1 >= INTERVAL_GET_DATA) {
      // выбор входа мультиплексора CD4051 – y4 (100)
      digitalWrite(14,LOW);
      digitalWrite(13,LOW);
      digitalWrite(15,HIGH);     
      // получение данных c датчика mq7
      float  flame= get_data_flame();
      // выводим значения flame sensor
      Serial.print("flame=");
      Serial.print(flame);
      // старт интервала отсчета
      millis_int1=millis();
   }
}

// получение данных с датчика flame sensor
float get_data_flame()  {
  // получение значения 
  float value=analogRead(FLAMEPIN);  
  return (float)value;
}



Загрузим скетч на модуль Node Mcu, откроем монитор последовательного порта и увидите вывод данных с модуля датчика огня Flame Sensor (рис. 4.38).

 

Рис. 4.38. Вывод данных данных модуля датчика огня Flame Sensor в монитор последовательного порта

Скачать данный скетч можно на сайте www.arduino-kit.ru по ссылке .


Читать далее

Главное меню

Каталог

Полезные ссылки

Цена
от
до