Как подключить датчик влажности к ардуино
Перейти к содержимому

Как подключить датчик влажности к ардуино

  • автор:

�� Arduino — Подключение датчиков

Подключение датчиков к Ардуино ► выполнив задания первого модуля «Ардуино — Старт», вы узнаете принцип работы и назначение основных электрических элементов и датчиков, основы программирования на языке С++. Вы научитесь собирать принципиальные схемы, использовать электрические элементы, датчики Arduino и программировать микроконтроллер Ардуино на языке С++.

Подключение датчиков к Ардуино

Подключение датчика влажности почвы Ардуино

Подключение датчика влажности почвы к Ардуино

Рассмотрим подключение датчика влажности почвы к плате Ардуино с использованием цифрового и аналогового сигнала от модуля FC-28 Arduino

Датчик жестов APDS-9960 Ардуино

Подключение APDS-9960 датчика жестов Ардуино

Датчик распознавания жестов APDS-9960 для Ардуино может легко определить приближение предмета, простые жесты, освещенность и RGB цвета

Подключение датчика влажности почвы к Ардуино

Подключение датчика влажности почвы Ардуино

Для настройки чувствительности цифрового сигнала имеется потенциометр, который устанавливает минимальное значение влажности почвы при котором сенсор выдаст низкий логический уровень на цифровом контакте D0. До этого значения цифровой выход модуля будет подавать высокий логический уровень. Щуп соединяется с компаратором двумя проводами, а уже сам модуль подключается к Ардуино:

Vcc – питание датчика;
GND – земля;
D0 – цифровой сигнал;
A0 – аналоговый сигнал.

Как подключить датчик влажности почвы Ардуино

Для этого занятия потребуется:

  • Arduino Uno / Arduino Nano / Arduino Mega;
  • датчик влажности почвы FC-28 (YL-69);
  • светодиоды и резисторы;
  • макетная плата;
  • провода «папа-мама».

Как подключить датчик влажности почвы к Ардуино

В первом примере подключим сенсор влажности почвы к плате Ардуино, используя аналоговый выход (A0), так как аналоговый сигнал позволяет более точно отслеживать малейшие колебания влажности почвы. Для этого подключите питание к модулю — GND и 5V (смотри схему подключения на картинке), а контакт A0 подключите к порту A1 на микроконтроллере. После загрузки скетча, откройте монитор порта Arduino IDE.

Скетч для датчика влажности почвы Arduino

#define solPin A1 // порт для подключения датчика #define ledPin 13 // порт для подключения светодиода int minsol = 200; // минимальное значение влажности почвы int sol; void setup()< Serial.begin(9600); pinMode(solPin, INPUT); pinMode(ledPin, OUTPUT); > void loop()< sol = analogRead(solPin); Serial.print("sol color: #ff6600;">Serial.println(sol); if (sol > minsol) < digitalWrite(ledPin, LOW); > if (sol < minsol) < digitalWrite(ledPin, HIGH); > delay(1000); >
Пояснения к коду:
  1. при снижении значения аналогового сигнала с модуля до определенного уровня, включается встроенный светодиод на микроконтроллере;
  2. при калибровке сенсора, следует установить пороговое значение, при котором необходимо включить автоматический полив.

Подключение датчика FC-28 с использованием цифрового сигнала

Скетч для цифрового сигнала датчика FC-28 Arduino

#define solPin 2 // порт подключения датчика #define ledPin 13 // порт подключения светодиода int sol; void setup()< Serial.begin(9600); pinMode(solPin, INPUT); pinMode(ledPin, OUTPUT); > void loop()< Serial.print("sol color: #ff6600;">Serial.println(digitalRead(solPin)); if (digitalRead(solPin) == LOW) < digitalWrite(ledPin, LOW); > if (digitalRead(solPin) == HIGH) < digitalWrite(ledPin, HIGH); > delay(1000); >
Пояснения к коду:
  1. калибровка сенсора производится на аппаратном уровне при помощи переменного резистора — поворот встроенного потенциометра по часовой стрелке увеличивает чувствительность датчика.

Заключение. Датчики уровня влаги в почве FC-28 и YL-69 имеют простую конструкцию и легко подключаются к плате Ардуино. Однако, модули имеют большой недостаток — это короткий срок службы щупа во влажной среде из-за коррозии металла. Выход из этой ситуации есть — это использование в проектах самодельного датчика влажности, в котором можно очень быстро и недорого менять щупы при необходимости.

Подключение датчика температуры и влажности AHT20 к Arduino

AHT20 и AHT21 представляют собой недорогие датчики температуры и влажности, которые по функционалу похожи на датчик DHT22. Датчики AHT20 и AHT21 взаимозаменяемы. Но в отличие от датчика DHT22, с датчиков AHT20 и AHT21 мы можем считывать данные так часто, как нам будет необходимо. Для подключения датчики используют стандартный интерфейс I2C, поэтому их легко подключить ко всем современным микроконтроллерам. В данной статье мы рассмотрим их подключение к плате Arduino.

Внешний вид датчика AHT20 (вид спереди)

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress).
  2. Датчик температуры и влажности AHT20 (купить на AliExpress).

Датчик AHT20

Первоначально датчик AHT20 был разработан компанией Adafruit и он до сих пор продается в ее официальном магазине под названием Adafruit AHT20. Но в последнее время появилось достаточно много более дешевых китайских клонов этого датчика.

Внешний вид датчика AHT20 (вид сзади)

Точность измерения температуры датчиком AHT20 составляет +-0.3 °C, а точность измерения влажности +- 2%.

Сравнение технических характеристик датчиков AHT21 и AHT20 приведено в следующей таблице.

Сравнение технических характеристик датчиков AHT21 и AHT20

Распиновка (назначение контактов) датчика AHT20 представлено на следующем рисунке.

Распиновка (назначение контактов) датчика AHT20

Примечание : на рисунке изображен внешний вид датчика Adafruit AHT20, внешний вид и расположение контактов у его китайских клонов могут отличаться.

VIN – контакт для подачи питания. Для подачи питания на датчик используйте напряжение логического уровня, с которым работает ваш микроконтроллер/плата. К примеру, если вы подключаете его к плате Arduino, которая работает с логическими уровнями 5V, то и в качестве напряжения питания для датчика вы должны использовать 5V.

GND — общий провод.

SCL – линия синхронизации (тактовых импульсов) в интерфейсе I2C. Логический уровень равен величине напряжения на контакте VIN. Имеет внутренний подтягивающий резистор 10 кОм.

SDA – линия передачи данных в интерфейсе I2C. Логический уровень равен величине напряжения на контакте VIN. Имеет внутренний подтягивающий резистор 10 кОм.

Контакты SCL и SDA датчика AHT20 могут работать с уровнями напряжений от 2.7V и 5.5V, поэтому их можно подключать как к плате Arduino, работающей с логическими уровнями 5V, так и к плате Raspberry Pi, работающей с логическими уровнями 3.3V.

Схема проекта

Схема подключения датчика AHT20 к плате Arduino представлена на следующем рисунке.

Схема подключения датчика AHT20 к плате Arduino

На рисунке изображена плата Adafruit Metro, но данная схема подключения будет аналогична для любых плат Arduino.

На плате датчика AHT20 установлен стабилизатор напряжения питания и конвертер уровней для шины I2C, датчик можно подключать как к 5, так и к 3,3 вольтовой логике. Рекомендуемая частота опроса шины I2C: от 8 до 30 сек.

Подготовка Arduino IDE для работы с датчиком AHT20

Для работы с датчиком AHT20 в Arduino IDE необходимо установить библиотеку Adafruit AHTx0. Ее можно установить с помощью менеджера библиотек (Library Manager). Выберите пункт меню Manage Libraries в Arduino IDE.

Запуск менеджера библиотек в в Arduino IDE

В открывшемся менеджере библиотек выполните поиск Adafruit AHTx0. После этого в результатах поиска выберите библиотеку Adafruit AHTx0.

Установка библиотеки Adafruit AHTx0 в Arduino IDE

Затем то же самое необходимо повторить для библиотеки Adafruit BusIO.

Установка библиотеки Adafruit BusIO в Arduino IDE

Примечание : в русскоязычном сегменте интернета для работы с датчиком AHT20 также рекомендуют библиотеку https://github.com/enjoyneering/AHT10.

Откройте пример, расположенный по адресу File -> Examples -> Adafruit AHTx0 -> adafruit_aht_test, и загрузите его в плату Arduino. Затем откройте окно монитора последовательной связи (Tools->Serial Monitor) и установите в нем скорость 115200. Вы должны будете увидеть в нем выводимые значения температуры и влажности.

Тестирование работы датчика AHT20

Исходный код программы (скетча)

Данный фрагмент кода является частью стандартной библиотеки и позволяет считывать данные температуры и влажности с датчика AHT20. Код данного примера можно также посмотреть на Github.

Измерение температуры и влажности с помощью Arduino и датчика DHT11

Температура и влажность являются одними из важнейших параметров окружающей нас среды. В этом проекте мы будем измерять температуру и влажность окружающей среды и с помощью Arduino выводить их значения на жидкокристаллический (ЖК) дисплей 16х2. Для измерения этих параметров мы будем использовать комбинированный датчик для измерения температуры и влажности DHT11, который может измерять температуру в градусах Цельсия и влажность в процентах.

Измерение температуры и влажности с помощью Arduino: внешний вид конструкции

Принципы измерения температуры и влажности с помощью датчика DHT11

Функционально схема устройства состоит из 3-х основных блоков: первый блок измеряет температуру и влажность с помощью датчика DHT11, второй блок считывает эти значения с выхода датчика и преобразует их в форму, удобную для восприятия, а третий блок отображает значения влажности и температуры на ЖК дисплее. Функциональная взаимосвязь этих блоков представлена на следующем рисунке.

Функциональная взаимосвязь блоков нашего проекта

Работа нашей схемы будет основана на последовательной передаче данных по одиночному проводнику. Вначале Arduino передает стартовый сигнал (то есть чтобы DHT модуль начал работу) DHT модулю, а затем DHT модуль (то есть модуль измерения температуры и влажности) выдает Arduino ответный сигнал, содержащий данные о температуре и влажности. Arduino собирает эти данные, обрабатывает и передает на ЖК дисплей 16×2.

В этом проекте мы будем использовать датчик DHT11. Этот модуль способен измерять температуру и влажность и выдавать их значения на выход в виде калиброванного цифрового сигнала. Этот датчик обеспечивает высокую точность измерений, высокую надежность и стабильность измерений. Принцип действия данного датчика основан на резистивном типе измерения влажности и NTC-типе (NTC — отрицательный температурный коэффициент) измерения температуры. Данный датчик имеет встроенный 8-битный микроконтроллер, что обеспечивает ему быстрый отклик на изменения окружающей среды и приемлемую стоимость. Датчик имеет 4 выходных контакта.

Внешний вид датчика DHT11

Модуль DHT11 работает по принципу последовательной связи по одиночному проводнику. Этот модуль передает данные в виде последовательности импульсов с определенным периодом. Но прежде чем он начнет передавать данные ему нужно подать команду инициализации с Arduino. Весь этот процесс занимает примерно 4 мс. Процесс передачи 40 бит данных будет включать в себя:

8-bit integral RH data + 8-bit decimal RH data + 8-bit integral T data + 8-bit decimal T data + 8-bit check sum (проверочная сумма).

Процесс передачи данных от датчика DHT11 к Arduino

Вначале плата Arduino подает на датчик DHT11 сигнал перепада с высокого уровня на низкий с задержкой 18 мкс чтобы запустить датчик DHT11 в работу. Затем Arduino pull-up (подтягивает ее к Vcc как показано на рисунке) линию передачи данных ждет 20-40 мкс ответа от датчика DHT11. Как только датчик DHT11 обнаруживает сигнал, запускающий его в работу (сигнал старта), он передает ответ в виде сигнала низкого уровня длительностью около 80 мкс. А затем контроллер DHT датчика pull up линию передачи данных и удерживает ее в этом состоянии около 80 мкс пока DHT модуль готовится к передаче данных.

Принцип использования подтягивающего резистора в нашем проекте

Как только на линии передачи данных появилось напряжение низкого уровня это значит что датчик DHT11 передает ответный сигнал на Arduino. Как только этот процесс будет завершен, DHT снова «подтягивает» (pull-up) линию передачи данных на 80 мкс чтобы подготовиться к передаче данных.

Формат данных, передаваемых с DHT на Arduino, для каждого бита начинается с 50 мкс напряжения низкого уровня, а продолжительность напряжения высокого уровня после этого зависит от того какой бит передается — “0” или “1”.

Но если вы мало что поняли в этих процессах, не расстраивайтесь, потому что для Arduino написана специальная библиотека для работы с модулем DHT, которая сводит все операции с этим модулем к очень простым действиям – и вы это наглядно увидите в тексте программы, представленном в конце статьи. А вот если бы вы вместо Arduino использовали бы, к примеру, микроконтроллер AVR, то вам все описанные операции пришлось бы программировать вручную.

В рассмотренных процессах весьма важным является правильный выбор значения подтягивающего (pull up) резистора. Поскольку мы располагаем датчик DHT на расстоянии менее чем 20 метров от Arduino, то подтягивающего резистора номиналом 5 кОм будет достаточно. Если же мы будем располагать датчик DHT на расстоянии более 20 метров, то в этом случае необходимо использование соответствующего значения подтягивающего резистора.

Работа схемы

Схема устройства представлена на следующем рисунке.

ЖК дисплей в представленной схеме используется для отображения значений температуры и влажности и напрямую подсоединен к плате Arduino в 4-битном режиме. Контакты ЖК дисплея RS, EN, D4, D5, D6 и D7 подсоединены к цифровым контактам Arduino 2, 3, 4, 5, 6 и 7. Датчик DHT11 подсоединен к цифровому контакту 12 Arduino с помощью подтягивающего резистора 5 кОм.

Исходный код программы

В начале программы подключим библиотеки, необходимые для работы с датчиком DHT11 и ЖК дисплеем.

Библиотеку для работы с датчиком температуры и влажности можно скачать по следующей ссылке — DHT11 Sensor Library

Когда вы скачаете эту библиотеку, добавьте ее в вашу Arduino IDE с помощью инструкции вида (или с помощью аналогичного пункта меню в Arduino IDE):

Sketch->Include Library -> Add .ZIP Library

Затем определим контакты к которым подключен ЖК дисплей и датчик DHT и инициализируем их все в секции setup программы (скетча). Затем в секции loop мы с помощью функции dht считываем данные с датчика DHT и затем используем ряд dht функций чтобы извлечь из этих данных температуру и влажность и отобразить их на ЖК дисплее.

Код программы для считывания значений влажности и температуры с датчика DHT11

Символ градуса на экране ЖК дисплея будет формироваться, используя известное отображение его в виде символа.

byte degree[8] =
<
0b00011,
0b00011,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
>;

Далее приведен полный текст программы.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *