Оглавление
- Подключение датчика движения
- Подключение датчика давления
- Обзор аппаратного обеспечения
- Пример скетча датчика освещенности на фоторезисторе
- Проблемы
- Подключение датчика уровня воды с Arduino
- Особенности конструкции и принцип действия датчика вибрации
- Элементы платы
- Способ 2: чтение датчика DS18B20 по адресу
- Подключение датчика к Ардуино
- Как подключить ультразвуковой датчик к Ардуино
- Компоненты и их описания
- Недостатки
- Пример подключения
- Датчик уровня жидкости (Water Sensor Arduino)
- Модуль ИК датчика линии KY-033
- Модуль датчика инфракрасного излучения KY-026 [24-25]
- Устройство и характеристики
- Подключение фоторезистора к ардуино
Подключение датчика движения
Без данного датчика не обходится ни одна серьёзная охранная система. Инфракрасный датчик — базовый элемент обнаружения присутствия теплокровных.
Также при помощи PIR-датчиков чрезвычайно удобно управлять освещением в зависимости от нахождения рядом человека. Инфракрасные или пироэлектрические датчики просты по внутреннему устройству и недороги. Они крайне надёжны и редко выходят из строя.
Основа датчика — пироэлектрик или диэлектрик, способный создавать поле при изменении температуры. Они устанавливаются попарно, а сверху закрываются куполом с сегментами в виде обычных линз или линзой Френеля. Это позволяет сфокусировать лучи от разных точек проникновения.
При отсутствии излучающих тепло тел в помещении у каждого элемента одинаковая попадающая доза излучения, соответственно, одинаковое напряжение на выходах. При попадании в зону «обзора» датчиков живого теплокровного нарушается равновесие и появляются импульсы, которые и регистрируются.
HC-SR501 — наиболее распространённый и популярный датчик. Он имеет два подстроечных переменных резистора:
- один — для регулировки чувствительности и размера обнаруживаемого объекта,
- второй — для регулировки времени срабатывания (времени генерации импульса после обнаружения).
Схема подключения стандартна и не вызовет затруднений.
Подключение датчика давления
Часто в деле предсказания погоды или определения высоты подъёма над уровнем моря требуется решить задачу измерения давления. Здесь на помощь приходят электронные барометры на технологии МЭМС: тензорометрический или пьезорезизстивный метод, связанный с переменностью сопротивления прибора при приложении деформирующих материал сил.
Наиболее популярен датчик BMP085; помимо барометрического давления он регистрирует и температуру. Ему на смену выпустили BMP180, он обладает теми же характеристиками:
- Чувствительность в диапазоне: 300-1100 гПа (если в метрах — 9000 — 500 м над уровнем моря );
- Разрешение : 0,03 гПа или 0,25 м;
- Рабочая температура датчика -40 +85°C, точность измерения в указанном диапазоне — ±2°C;
- Подключение по стандарту i2c;
- V1 использует 3.3 В для питания и логики;
- V2 использует 3.3-5 В для питания и логики.
Подключение датчиков к Ардуино в этом случае стандартно. Понадобится Unified Sensor Driver — его обновлённая версия обеспечивает более высокую точность показаний; кроме того, позволяет работать с несколькими разными подключёнными датчиками давления одновременно. Необходимо также установить Adafrut_Sensor library.
Обзор аппаратного обеспечения
Звуковой датчик представляет собой небольшую плату, которая объединяет микрофон (50 Гц – 10 кГц) и схему обработки для преобразования звуковых волн в электрические сигналы.
Этот электрический сигнал подается на встроенный высокоточный компаратор LM393 для его оцифровки и выводится на выход (вывод OUT).
Рисунок 2 – Регулировка чувствительности датчика звука и компаратора
Для регулировки чувствительности выходного сигнала модуль содержит встроенный потенциометр.
С помощью этого потенциометра вы можете установить пороговое значение. Таким образом, когда амплитуда звука превысит это пороговое значение, модуль выдаст низкий логический уровень, в остальных случаях будет выдаваться высокий логический уровень.
Эта настройка очень полезна, когда вы хотите запустить какое-то действие при достижении определенного порога. Например, когда амплитуда звука пересекает пороговое значение (при обнаружении стука), вы можете активировать реле для управления освещением. Вот вам идея!
Совет: поворачивайте движок потенциометра против часовой стрелки, чтобы увеличить чувствительность, и по часовой стрелке, чтобы ее уменьшить.
Рисунок 3 – Светодиодные индикаторы питания и состояния
Помимо этого, модуль имеет два светодиода. Индикатор питания загорится, когда на модуль подается напряжение питания. Светодиод состояния загорится, когда на цифровом выходе будет низкий логический уровень.
Пример скетча датчика освещенности на фоторезисторе
Мы подключили схему с фоторезистором к ардуино, убедились, что все сделали правильно. Теперь осталось запрограммировать контроллер.
Написать скетч для датчика освещенности довольно просто. Нам нужно только снять текущее значение напряжения с того аналогового пина, к которому подключен датчик. Делается это с помощью известной нам всем функции analogRead(). Затем мы можем выполнять какие-то действия, в зависимости от уровня освещенности.
Давайте напишем скетч для датчика освещенности, включающего или выключающего светодиод, подключенный по следующей схеме.
Алгоритм работы таков:
- Определяем уровень сигнала с аналогового пина.
- Сравниваем уровень с пороговым значением. Максимально значение будет соответствовать темноте, минимальное – максимальной освещенности. Пороговое значение выберем равное 300.
- Если уровень меньше порогового – темно, нужно включать светодиод.
- Иначе – выключаем светодиод.
#define PIN_LED 13 #define PIN_PHOTO_SENSOR A0 void setup() { Serial.begin(9600); pinMode(PIN_LED, OUTPUT); } void loop() { int val = analogRead(PIN_PHOTO_SENSOR); Serial.println(val); if (val < 300) { digitalWrite(PIN_LED, LOW); } else { digitalWrite(PIN_LED, HIGH); } }
Прикрывая фоторезистор (руками или светонепроницаемым предметом), можем наблюдать включение и выключение светодиода. Изменяя в коде пороговый параметр, можем заставлять включать/выключать лампочку при разном уровне освещения.
При монтаже постарайтесь расположить фоторезистор и светодиод максимально далеко друг от друга, чтобы на датчик освещенности попадало меньше света от яркого светодиода.
Проблемы
За время эксплуатации температура в помещении понизилась с +10°С до -15°С и обнаружилась две проблемы.
- Используемый PIR датчик начинает давать ложные срабатывания при низких температурах. При +5°С использование стало совсем невозможным: число ложных срабатываний превысило одно в день. Попытка замены датчика на другой проблему не решило, поэтому сейчас этот датчик временно отключен. Что с этим делать пока не понятно.
- Датчик температуры, встроенный в DS3231 при -10°С и ниже начал сходить с ума: периодически выдает случайные значения, например, «-84°С» или «+115°С». Интересно, что RTC работает нормально. На текущий момент не понятно, проблема ли это конкретно моего экземпляра или нет. Жду для проверки второй идентичный модуль, при повторении с ним проблемы в устройство будет добавлен DS18B20.
В остальном полет нормальный.
Подключение датчика уровня воды с Arduino
Давайте подключим датчик уровня воды к Arduino.
Сначала вам нужно подать питание на датчик. Для этого вы можете подключить вывод +(VCC) на модуле к выводу 5V на Arduino, а вывод -(GND) модуля к выводу GND Arduino.
Однако одной из широко известных проблем с этими датчиками является их короткий срок службы при воздействии влажной среды. При постоянной подаче питания на зонд скорость коррозии значительно увеличивается.
Чтобы преодолеть эту проблему, мы рекомендуем не подавать питание на датчик постоянно, а включать его только тогда, когда вы снимаете показания.
Самый простой способ сделать это – подключить вывод VCC к цифровому выводу Arduino и устанавливать на нем высокий или низкий логический уровень, когда это необходимо. Итак, давайте подключим вывод VCC модуля к цифровому выводу 7 Arduino.
Наконец, подключите вывод S (Signal) к выводу A0 аналого-цифрового преобразователя Arduino.
Схема соединений показана на следующем рисунке.
Рисунок 4 – Схема подключения датчика уровня воды к Arduino
Особенности конструкции и принцип действия датчика вибрации
Датчик вибрации имеет три выхода:
- Земля;
- Питание;
- Выход аналогового сигнала А0.
В состоянии покоя модуль находится в разомкнутом состоянии, и протекания тока по нему нет. При наличии внешних вибрационных воздействий за счет раскачивания пружины происходит кратковременное замыкание контактов. В результате происходит сработка датчика, и на выходе появляется логический 0.
Срабатывание датчика происходит в независимости от его пространственного расположения.
Технические параметры датчиков вибрации для Ардуино (могут отличаться в зависимости от модели устройства):
- Питающее напряжение от 3 до 5 В;
- Ток потребления 4-5мА;
- С наличием или отсутствием цифрового выхода;
- С наличием или отсутствием регулировки чувствительности.
Датчики могут отличаться по весу и габаритам, но обязательно содержат монтажное отверстие для крепления к плате.
Элементы платы
Измерительные электроды
Для контакта с почвой на датчике расположены два электрода, которые для проведения измерений необходимо воткнуть в измеряемую среду. Но в отличии от резистивного датчика, электроды скрыты под токоизолирующей маской и защищены от коррозии.
Сами электроды представляют из себя обкладки конденсатора, который при изменении влажности почвы меняет свою ёмкость, что приводит к повышению или понижению выходного сигнала датчика.
Операционный усилитель MCP6002
По умолчанию выходной сигнал схемы ёмкостного датчика, обратно пропорционален уровню влажности почвы. Для удобства и совместимости с резистивной моделью сенсора, на плате расположен операционный усилитель, который инвертирует аналоговый сигнал. В итоге на выходе датчика сигнал прямо пропорциональный влажности почвы.
Регулятор напряжения 3V3
Линейный понижающий регулятор напряжения TPS73033DBVR обеспечивает питание микросхемы 555 и других компонентов сенсора. Диапазон входного напряжения от 3,3 до 5 вольт. Выходное напряжение 3,3 В с максимальным выходным током 200 мА.
Troyka-контакты
Датчик подключается к управляющей электронике через три провода.
- Сигнальный (S) — выходной сигнал сенсора. Напряжение на выходе датчика прямо пропорционально уровню измеренной электропроводности: чем выше влажность почвы, тем выше уровень сигнала на выходе датчика и соответственно наоборот. Максимальное выходное значения 3,3 вольта. Подключите к аналоговому пину микроконтроллера.
- Питание (V) — соедините с рабочим напряжением микроконтроллера.
- Земля (G) — соедините с землёй микроконтроллера.
Способ 2: чтение датчика DS18B20 по адресу
Мы знаем, что каждому DS18B20 назначен уникальный 64-битный адрес, чтобы отличать их друг от друга. В этом методе мы найдем этот адрес для соответствующей маркировки каждого датчика. Затем этот адрес можно использовать для считывания каждого датчика в отдельности.
Поиск адресов датчиков DS18B20s на шине
Следующий скетч обнаруживает все DS18B20, присутствующие на шине, и печатает их адреса на 1-Wire в монитор последовательного порта.
Вы можете подключать только один датчик за раз, чтобы определить его адрес (или последовательно добавлять по одному новому датчику, чтобы вы могли идентифицировать каждый из них по его адресу). Затем вы можете пометить каждый датчик.
Теперь откройте монитор последовательного порта. Вы должны получить что-то подобное:
Рисунок 6 – Нахождение адресов 1-Wire всех датчиков DS18B20 на шине
Скопируйте все адреса, так как они нам понадобятся в следующем скетче.
Чтение показаний датчиков DS18B20 по адресу
Следующий скетч считывает температуру датчиков DS18B20 по их адресам. Прежде чем приступить к загрузке скетча, вам нужно изменить адреса датчиков DS18B20 на те, которые вы определили в предыдущем скетче.
Вывод вышеприведенного эскиза выглядит так
Рисунок 7 – Вывод показаний нескольких датчиков DS18B20 методом адреса
Объяснение кода
Как обычно, скетч начинается с включения библиотек, объявления вывода, к которому подключена шина датчиков, и создания объекта библиотеки .
Далее мы вводим адреса, которые были найдены ранее для каждого датчика температуры. В нашем случае имеем следующее.
Во фрагменте настройки мы инициализируем библиотеку путем вызова функции и инициализируем последовательную связь с ПК.
В цикле мы просто посылаем команду всем датчикам для преобразования температуры, используя функцию .
Затем, чтобы напечатать температуру датчика, мы вызываем пользовательскую функцию , для которой передается в качестве параметра.
Вышеприведенная функция просто вызывает библиотечные функции для отображения температуры в градусах Цельсия и для отображения температуры в градусах Фаренгейта.
Подключение датчика к Ардуино
Подключение датчика движения к Ардуино не представляет особой сложности. На датчик надо подать питание (обычно 5 В, но могут быть и другие варианты), а также присоединить выход сенсора к цифровому входу Ардуино. Схема подключения проста, ее можно наглядно рассмотреть на рисунке:
Контактная группа датчика состоит из трех электродов. Два из них подают питание с Ардуино на датчик, а третий передает сигнал с его выхода на управляющее устройство. Земля (на рисунке это черный провод) подключается к контакту GND группы «power» микрокомпьютера. Рядом с ним находится контакт питания +5 V, к которому надо подключить соответствующий контакт датчика (красный провод на рисунке). Выход, или сигнальный (желтый) провод присоединяют к контакту 2 группы «digital» (так показано на рисунке, но фактически можно подключиться к любому цифровому контакту на плате Ардуино).
Способ подключения ИК датчиков к Ардуино один и тот же, он не меняется при введении другого скетча. Есть разные модели микропроцессоров, отличающиеся от Arduino Uno некоторыми параметрами (количество слотов, размер памяти и тому подобное). Выбор модели зависит от сложности будущих задач и от степени подготовки пользователя.
Как подключить ультразвуковой датчик к Ардуино
Для этого занятия нам потребуется:
- плата Arduino Uno / Arduino Nano / Arduino Mega;
- макетная плата;
- УЗ дальномер HC-SR04;
- 1 светодиод и резистор 220 Ом;
- провода «папа-папа» и «папа-мама».
Схема подключения ультразвукового датчика к Arduino Uno
Схема подключения указана на рисунке выше. Отметим, что ультразвуковой дальномер HC-SR04 имеет диапазон измерения от 2 см до 400 см, работает при температурах от 0° до 60° С. Точность измерения составляет ± 1 см, рабочее напряжение датчика до 5,5 В. Для начала мы используем простой скетч, без использования библиотеки Ultrasonic. После подключения к Arduino дальномера HC-SR04 загрузите следующий скетч:
Скетч для подключения датчика hc-sr04 к Arduino
int trigPin = 8; // назначаем имя для Pin8 int echoPin = 9; // назначаем имя для Pin9 void setup() { Serial.begin (9600); // подключаем монитор порта pinMode(trigPin, OUTPUT); // назначаем trigPin (Pin8), как выход pinMode(echoPin, INPUT); // назначаем echoPin (Pin9), как вход } void loop() { int duration, cm; // назначаем переменную "cm" и "duration" для показаний датчика digitalWrite(trigPin, LOW); // изначально датчик не посылает сигнал delayMicroseconds(2); // ставим задержку в 2 ммикросекунд digitalWrite(trigPin, HIGH); // посылаем сигнал delayMicroseconds(10); // ставим задержку в 10 микросекунд digitalWrite(trigPin, LOW); // выключаем сигнал duration = pulseIn(echoPin, HIGH); // включаем прием сигнала cm = duration / 58; // вычисляем расстояние в сантиметрах Serial.print(cm); // выводим расстояние в сантиметрах Serial.println(" cm"); delay(1000); // ставим паузу в 1 секунду }
Пояснения к коду:
- для подключения выходов Trig и Echo на датчике сонара Ардуино можно использовать любые цифровые входы на микроконтроллере;
- чтобы получить значение датчика в миллиметрах следует использовать следующую формулу для расчета: .
Компоненты и их описания
Arduino Uno
Arduino взаимодействует через датчики с окружающей средой и обрабатывает поступившую информацию в соответствии с заложенной в неё программой. Подробнее с платой Ардуино Уно можно ознакомиться здесь.
Ардуино Уно
Датчик влажности почвы
Измерение влажности почвы на базе Arduino производится с помощью датчика влажности. Датчик имеет два контакта. Через эти контакты при погружении их в грунт протекает ток. Величина тока зависит от сопротивления грунта. Поскольку вода является хорошим проводником тока, наличие влаги в почве сильно влияет на показатель сопротивления. Это значит, чем больше влажность почвы, тем меньше она оказывает сопротивление току.
Датчик влажности почвы
Этот датчик может выполнять свою работу в цифровом и аналоговом режимах. В нашем проекте используется датчик в цифровом режиме.
На модуле датчика есть потенциометр. С помощью этого потенциометра устанавливается пороговое значение. Также на модуле установлен компаратор. Компаратор сравнивает данные выхода датчика с пороговым значением и после этого даёт нам выходной сигнал через цифровой вывод. Когда значение датчика больше чем пороговое, цифровой выход передаёт 5 вольт (HIGH), земля сухая. В противном случае, когда данные датчика будут меньше чем пороговые, на цифровой вывод передаётся 0 вольт (LOW), земля влажная.
Этим потенциометром необходимо отрегулировать степень сухости почвы, когда как вы считаете нужно начать полив.
Фоторезистор
Фоторезистор (LDR) — это светочувствительное устройство, которое используются для определения интенсивности освещения. Значение сопротивления LDR зависит от освещённости. Чем больше света, тем меньше сопротивление. Совместно с резистором, фоторезистор образует делитель напряжения. Резистор в нашем случае взяли 10кОм.
Делитель напряжения
Подключив выход делителя Uin к аналоговому входу Ардуино, мы сможем считывать напряжения на выходе делителя. Напряжение на выходе будет меняться в зависимости от сопротивления фоторезистора. Минимальное напряжение соответствует темноте, максимальное – максимальной освещённости.
В этом проекте полив начинается в соответствии с пороговым значением напряжения. В утренние часы, когда считается целесообразным начать полив, напряжение на выходе делителя равно 400. Примем это значение как пороговое. Так если напряжения на делителе меньше или равно 400, это означает, что сейчас ночь и насос должен быть выключен.
Меняя пороговое значение можно настроить период работы автополива.
Релейный модуль
Реле представляет собой переключатель с электромеханическим или электрическим приводом.
Релейный модуль
Привод реле приводится в действие небольшим напряжением, например, 5 вольт от микроконтроллера, при этом замыкается или размыкается цепь высокого напряжения.
Схема реле
В этом проекте используется 12 вольтовый водяной насос. Arduino Uno не может управлять напрямую насосом, поскольку максимальное напряжение на выводах Ардуино 5 вольт. Здесь нам приходит на помощь релейный модуль.
Релейный модуль имеет два типа контактов: нормально замкнутые и нормально разомкнутые контакты. Нормально замкнутые без управляющего напряжения замкнуты, при подаче напряжения размыкаются. Соответственно нормально разомкнутые без напряжения разомкнуты, при подаче управляющего напряжения замыкаются. В проекте используются нормально разомкнутые контакты.
Водяной насос
В проекте используем 12-и вольтовый погружной насос с 18-ваттным двигателем. Он может поднимать воду до 1,7 метра.
Водяной насос
Этот насос можно эксплуатировать только тогда, когда он полностью погружен в воду. Это налагает некие обязательства по контролю уровня воды в ёмкости. Если водяной насос будет работать без воды, он просто-напросто сгорит.
Макетная плата
Макетная плата представляет собой соединительную плату, используемую для создания прототипов проектов электроники, без пайки.
Недостатки
В силу отработанности аппаратной платформы, хорошо документированных схем, простоты разработки ПО и дешевизны PIR-датчики на Ардуино не обладают особыми недостатками в рамках возлагаемых на них задач. Возможности их применения ограничиваются естественными пределами ИК-технологии, периферийным оборудованием и заложенными в прошивку контроллера функциями.
Из недостатков отметим долгую инициализацию: многим образцам на переход в рабочий режим после первого включения требуется около минуты, на протяжении которой велик шанс ложных срабатываний. Кроме того, они не способны отличить человека от другого теплого объекта; для этого требуется иной класс устройств.
Пример подключения
Один из самых сложных моментов – это выбор резистора. Самое главное – мы не должны превзойти максимальное сопротивление датчика.
Если вы используете FSR, который охватывает широкий диапазон (например 0,1-10 кг), то лучше всего взять резистор примерно на 3,3 кОм.
Переходим к схеме.
Резистор, выступающий как делитель напряжения, приведет к увеличению напряжения на А0 по мере уменьшения сопротивления сенсора. Когда на FSR отсутствует давление, цепь получается разомкнутой и напряжение на А0 равно 0. Но по мере увеличения давления на сенсор, будет увеличиваться и напряжение. И при максимальном давлении оно будет соответствовать 5V.
Датчик уровня жидкости (Water Sensor Arduino)
Рабочее напряжение аналогового сенсора — 5v. Выходное напряжение (показания датчика) зависит от степени погружения датчика в жидкость и от параметров, влияющих на коэффициент передачи напряжения, например, проводимость жидкости. Это простой в использование и недорогой датчик уровня жидкости, который широко применяется в системах автоматизации и при разработке Умного дома.
Подключение к Ардуино датчика воды (Water Sensor)
Как вы уже заметили на фото к этому занятию, датчик уровня жидкости имеет три контакта. Правый контакт (-) подключается к Земле (GND), средний к питанию 5v, а левый к аналоговому входу, например, A0. При полностью сухом датчике выходное напряжение и показания на аналоговом входе будут равны нулю, чем больше датчик будет погружен в воду, тем больше будут его показания (от 0 до 1023).
Модуль ИК датчика линии KY-033
Данный модуль представляет собой печатную плату, на которой располагается инфракрасный фотодиод и фотоприемник
По интенсивности отраженного инфракрасного сигнала модуль позволяет отличить черную поверхность от белой, что важно в классической задаче робототехники – изготовлении робота, движущегося вдоль линии
Модуль имеет габариты 47 х 10 х 12 мм, масса 2,1 г. Для крепления модуля на плате предусмотрено два отверстия диаметром 3 мм на расстоянии 11 мм друг от друга. На плате располагаются инфракрасный светодиод и фотоприемник, разделенные непрозрачной перегородкой. Для регулирования чувствительности датчика на плате имеется подстроечный резистор. При срабатывании датчика зажигается красный светодиод.
Подстроечный резистор позволяет регулировать расстояние срабатывания от 25 до12 мм, считая от поверхности платы.
На модуле имеется трех контактный разъем: центральный «V+»– питание +5В, контакт «G» — общий, контакт «S» — информационный. В зависимости от интенсивности отраженного сигнала на информационном выходе меняется напряжение, что можно пронаблюдать, подключив модуль к порту A0 платы Arduino UNO (в память микроконтроллера загружена программа AnalogInput2).
Потребляемый модулем ток составляет около 15 мА, зажигание красного светодиода на плате датчика приводит к увеличению энергопотребления примерно на 1 мА.
Модуль датчика инфракрасного излучения KY-026 [24-25]
Этот датчик предназначен для обнаружения мощных источников инфракрасного излучения, например открытого пламени.
Датчик имеет габариты 47 х 15 х 15 мм, массу 3 г, в печатной плате модуля предусмотрено крепежное отверстие диаметром 3 мм. Чувствительным элементом датчика является ИК-фотодиод. Регулировать чувствительность датчика можно многооборотным подстроечным резистором. Индикация питания осуществляется светодиодом L1.
При срабатывании датчика загорается светодиод L2. Датчик имеет четыре контакта. «A0» — аналоговый выход, выходное напряжение на котором меняется в зависимости от освещенности фотодиода (в память Arduino UNO была загружена программа AnalogInput2).
Выводы питания «G» — общий провод, «+»– питание +5В. На цифровом входе «D0» присутствует низкий логический уровень, если ИК-излучение не превышает заданного порога, при срабатывании датчика низкий уровень меняется на высокий.
В дежурном режиме датчик потребляет около 5 мА, при срабатывании ток возрастает до 8-9 мА
В целом это достаточно простой и надежный датчик, однако если его использовать, как рекомендуют продавцы, в устройстве, типа автоматики контроля поджига и подачи топлива или в роботе-пожарном, то необходимо как следует продумать защиту датчика от воздействия открытого пламени.
Устройство и характеристики
Устройство отправляет SMS при возникновении следующих событий:
- открытие двери (герконовый датчик);
- резкое изменение освещения (фоторезистор);
- движение (PIR датчик);
- выход температуры из заданного диапазона;
- низкое напряжение батареи.
Пример SMS с событием
Также, раз в сутки можно настроить время ежедневного отчета
Питается устройство от 3-х батареек AA. Расчетное время работы ≥6мес.
Настройка устройства, считывание логов событий и построение месячного графика температуры происходит с помощью утилиты (Python 2.7 + Tk + pyserial + matplotli).
Основное окно утилиты настройки
Окно лога событий
Окно лога температуры
Подключение фоторезистора к ардуино
В проектах arduino фоторезистор используется как датчик освещения. Получая от него информацию, плата может включать или выключать реле, запускать двигатели, отсылать сообщения. Естественно, при этом мы должны правильно подключить датчик.
Схема подключения датчика освещенности к ардуино довольна проста. Если мы используем фоторезистор, то в схеме подключения датчик реализован как делитель напряжения. Одно плечо меняется от уровня освещённости, второе – подаёт напряжение на аналоговый вход. В микросхеме контроллера это напряжение преобразуется в цифровые данные через АЦП. Т.к. сопротивление датчика при попадании на него света уменьшается, то и значение падающего на нем напряжения будет уменьшаться.
В зависимости от того, в каком плече делителя мы поставили фоторезистор, на аналоговый вход будет подаваться или повышенное или уменьшенное напряжение. В том случае, если одна нога фоторезистора подключена к земле, то максимальное значение напряжения будет соответствовать темноте (сопротивление фоторезистора максимальное, почти все напряжение падает на нем), а минимальное – хорошему освещению (сопротивление близко к нулю, напряжение минимальное). Если мы подключим плечо фоторезистора к питанию, то поведение будет противоположным.
Сам монтаж платы не должен вызывать трудностей. Так как фоторезистор не имеет полярности, подключить можно любой стороной, к плате его можно припаять, подсоединить проводами с помощью монтажной платы или использовать обычные клипсы (крокодилы) для соединения. Источником питания в схеме является сам ардуино. Фоторезистор подсоединяется одной ногой к земле, другая подключается к АЦП платы (в нашем примере – АО). К этой же ноге подключаем резистор 10 кОм. Естественно, подключать фоторезистор можно не только на аналоговый пин A0, но и на любой другой.
Несколько слов относительно дополнительного резистора на 10 К. У него в нашей схеме две функции: ограничивать ток в цепи и формировать нужное напряжение в схеме с делителем. Ограничение тока нужно в ситуации, когда полностью освещенный фоторезистор резко уменьшает свое сопротивление. А формирование напряжения – для предсказуемых значений на аналоговом порту. На самом деле для нормальной работы с нашими фоторезисторами хватит и сопротивления 1К.
Меняя значение резистора мы можем “сдвигать” уровень чувствительности в “темную” и “светлую” сторону. Так, 10 К даст быстрое переключение наступления света. В случае 1К датчик света будет более точно определять высокий уровень освещенности.
Если вы используете готовый модуль датчика света, то подключение будет еще более простым. Соединяем выход модуля VCC с разъемом 5В на плате, GND – c землей. Оставшиеся выводы соединяем с разъемами ардуино.
Если на плате представлен цифровой выход, то отправляем его на цифровые пины. Если аналоговый – то на аналоговые. В первом случае мы получим сигнал срабатывания – превышения уровня освещенности (порог срабатывания может быть настроен с помощью резистора подстройки). С аналоговых же пинов мы сможем получать величину напряжения, пропорциональную реальному уровню освещенности.