Ремонт Дизайн Мебель

Самодельные датчики для ардуино. Самодельные датчики движения (температуры, влажности, освещения) для «Умного Дома» на основе системы MySensors. Знакомимся с Arduino

Вспомним, что основа данного проекта Arduino. Он выполняет ряд важнейших функций: считывает данные с ИК-датчика, обрабатывает сигналы, реагирует на движения, а USB оповещает компьютер о необходимости отправить сообщение. В этой статье рассмотрим два вопроса:

  1. Подключение PIR-датчика к Arduino;
  2. Как настроить взаимосвязь между датчиком и автоматической отправкой e-mail.
Необходимо для проекта:
  • Arduino UNO (выбрать можно на Aliexpress).
  • PIR-датчик.
  • Бредбоард.
  • Связка проводов.

Все перечисленные элементы для сборки можно увидеть на фотографиях:

В первую очередь нужен ПК с подключением к интернету. Мы использовали Raspberry Pi.

Подключаем PIR-датчик к набору Arduino:

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

Работа со скетчем

При возникновении движения Arduino при помощи USB Serial должен послать электронное сообщение. Конечно же, если при любом возникшем движении отправлять e-mail, то почтовый ящик будет переполнен. Поэтому мы исправили это таким образом, если между двумя сигналами короткий промежуток времени, будет отправляться письмо с таким текстом:

Int pirPin = 7; int minSecsBetweenEmails = 60; // 1 min long lastSend = -minSecsBetweenEmails * 1000; void setup() { pinMode(pirPin, INPUT); Serial.begin(9600); } void loop() { long now = millis(); if (digitalRead(pirPin) == HIGH) { if (now > (lastSend + minSecsBetweenEmails * 1000)) { Serial.println("MOVEMENT"); lastSend = now; } else { Serial.println("Too soon"); } } delay(500); }

« M inSecsBetweenEmails» – эта переменная может переключаться на другие значения, которые будут удобны пользователю. К примеру, можно установить интервал, который равен одной минуте – это будет означать, что следующий e-mail будет отправлен только через 60 секунд.

«LastSend» поможет отследить время, в которое было отправлено последнее сообщение. Инициализация данной переменной происходит с отрицательным числом, которое равно миллисекундам, что указаны в «MinSecsBetweenEmails» . В итоге, мы получаем гарантию того, что после запуска скетча в Arduino сразу же запустится PIR-датчик.

За счет чего мы можем высчитать миллисекунды, сравнить их число со временем последнего срабатывания датчика? Все благодаря встроенной функции под названием Millis. В том случае, если обнаружено движение, но прошло мало времени с последнего активизации датчика будет отправлено письма с текстом «Too soon» .

Эту функцию сначала надо проверить. Для этого открывается Serial Monitor . Далее рассмотрим, как он выглядит:

После того, как вы убеждены в исправной работе, можно записывать программу на Python, его используют для обрабатывания сигналов от платформы.

Как установить PySerial и Python:

Операционная система Linux имеет автоматически установленный Python. Система Windows не обладает такой характеристикой, поэтому программу необходимо установить самостоятельно. PySerial исполняет роль библиотеки, она поможет поддерживать связываться с Arduino.

Установка Python :

Python 3 нередко вызывает затруднения при работе с PySerial, особенно если вы используете Windows. Чтобы этого избежать, можно вместо третьей версии скачать Python 2 .

Завершив установку программы в меню «Пуск» можно обнаружить особую группу. Когда мы перейдем к процессу установки библиотеки, нам понадобится сотрудничество с Python, применив командную строку. Поэтому лучше сразу добавить к PATH нужный каталог. Далее можно увидеть вспомогательную фотографию:

Для добавления каталога нам потребуется: открыть панель управления, в ней найти раздел «System Properties». Потом нажимаем клавишу, которая называется «Переменная среда» (Environment Variabes), перед нами всплывет окно. В его нижней части должен находиться «Path», который нужно выбрать. Теперь кликнем на «Edit» – Изменение и завершаем процесс нажатием «значения переменной». Нельзя удалять текст, который получили, к нему следует дописать такую надпись – «;C:\Python27». Не забываем после каждой папки, что указана в тексте ставить «;». Теперь проверяем правильно ли осуществлен ввод «Path». Для этого в командную строку вводим слово «python». Если ошибок не возникло, то на экране появится следующая картинка:

Установить PySerial:

Независимо от используемой операционной системы, скачиваем.tar.gz установочный пакет для PySerial 2.6 с. Этот сайт может помочь это сделать – //pypi.python.org/pypi/pyserial . Получаем файл с именем pyserial-2.6.tar.gz. Если используется Windows, то будет нужна распаковка файлов в выбранную папку. Это не стандартный файл формата ZIP, придется сделать дополнительные действия – скачать 7-zip (это можно сделать здесь – //www.7-zip.org/ ). Для системы Linux необходимо воспользоваться терминальной сессией, в ней дать команду «CD», указать название той папки, в которую скачали pyserial-2.6.tar.gz. Чтобы выполнить распаковку нужно ввести:

$ tar -xzf pyserial-2.6.tar.gz

После этого потребуется выполнить команду:

Sudo python setup.py install

Python

Потребуется создать отдельную программу для работы с Python. Нужно скопировать код в файл с таким именем – «movement.py». В Linux можно использовать «нано» редактор, а для системы Windows необходимо создать файл, используя редактор Python «IDLE ». Он доступен в меню «Пуск».

Import time import serial import smtplib TO = "[email protected]" GMAIL_USER = "[email protected]" GMAIL_PASS = "putyourpasswordhere" SUBJECT = "Intrusion!!" TEXT = "Your PIR sensor detected movement" ser = serial.Serial("COM4", 9600) def send_email(): print("Sending Email") smtpserver = smtplib.SMTP("smtp.gmail.com",587) smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(GMAIL_USER, GMAIL_PASS) header = "To:" + TO + "\n" + "From: " + GMAIL_USER header = header + "\n" + "Subject:" + SUBJECT + "\n" print header msg = header + "\n" + TEXT + " \n\n" smtpserver.sendmail(GMAIL_USER, TO, msg) smtpserver.close() while True: message = ser.readline() print(message) if message == "M" : send_email() time.sleep(0.5)

Это показано на следующей картинке:

После изменений, программа запуститься при помощи командной строки:

Python movement.py

Итак, установка завершена.

На этом возможности не заканчиваются, есть расширения, которые позволяют получать сообщения с отчетами о температуре или других сведениях.

Прикрепленные файлы :

Самодельный датчик температуры и влажности DHT11 и DHT22 – подключение к Arduino Биометрический замок – сборка платы управления и программирование микроконтроллера

Добрый день, сегодня я поделюсь инструкцией по изготовлению часов с комнатным термометром(Часы на ардуино своими руками ). Часы работают на Arduino UNO, для отображения времени и температуры служит графический экран WG12864B. В качестве датчика температуры - ds18b20. В отличие от большинства других часов я не буду использовать RTS (Real Time Clock), а попробую обойтись без этого дополнительного модуля.

Схемы на ардуино отличаются своей простотой, и может начать изучать ардуино-каждый. О том как подключать библиотеки и прошивать ардуино можно почитать в нашей статье .

Приступим.

Для создания данных часов нам понадобится:

Arduino UNO (Или любая другая Arduino совместимая плата)
- Графический экран WG12864B
- Датчик температуры ds18b20
- Резистор 4.7 Ком 0.25 Вт
- Резистор 100 ом 0.25 Вт
- Батарейный отсек для 4 батареек типа АА «пальчиковых»
- Подходящая коробка
- Мелкий напильник
- Лак для ногтей (черный или под цвет корпуса)
- Немного тонкого пластика или картона
- Изолента
- Соединительные провода
- Монтажная плата
- Кнопки
- Паяльник
- Припой, канифоль
- Двусторонний скотч

Подготовка графического экрана.
С подключение экрана, на первый взгляд, возникает много проблем и сложностей. Но если вначале разобраться с их видами, станет намного легче и понятнее. Существует много разновидностей и типов экранов на контролере ks0107/ks0108. Все экраны принято делить на 4 типа:
Вариант A: HDM64GS12L-4, Crystalfontz CFAG12864B, Sparkfun LCD-00710CM, NKC Electronics LCD-0022, WinStar WG12864B-TML-T
Вариант B: HDM64GS12L-5, Lumex LCM-S12864GSF, Futurlec BLUE128X64LCD, AZ Displays AGM1264F, Displaytech 64128A BC, Adafruit GLCD, DataVision DG12864-88, Topway LM12864LDW, Digitron SG12864J4, QY-12864F, TM12864L-2, 12864J-1
Вариант C: Shenzhen Jinghua Displays Co Ltd. JM12864
Вариант D: Wintek- Cascades WD-G1906G, Wintek - GEN/WD-G1906G/KS0108B, Wintek/WD-G1906G/S6B0108A, TECDIS/Y19061/HD61202, Varitronix/MGLS19264/HD61202

Список не полный, их очень много. Самый распространённый и, на мой взгляд, удобный WG12864B3 V2.0. Дисплей можно подключить к Arduino по последовательному или параллельному порту. При использовании с Arduino UNO лучше выбрать подключение по последовательному порту – тогда нам потребуется всего 3 выхода микроконтроллера, вместо минимум 13 линий при подключении по параллельному порту. Подключается все довольно просто. Есть еще один нюанс, в продаже можно встретить два варианта дисплеев, со встроенным потенциометром (для регулировки контраста) и без него. Я выбрал, и советую тоже сделать вам, со встроенным.


Это уменьшает количество деталей и время пайки. Также стоит поставить токоограничительный резистор номиналом 100 Ом для подсветки. Подключая напрямую 5 вольт, существует риск сжечь подсветку.
WG12864B – Arduino UNO
1 (GND) - GND
2 (VCC) - +5V
4 (RS) – 10
5 (R/W) – 11
6 (E) – 13
15 (PSB) – GND
19 (BLA) – через резистор - +5V
20 (BLK) – GND

Удобнее всего это все собрать сзади экрана и вывести от него 5 проводов подключения к Arduino UNO. В итоге должно получится примерно так:


Для тех кто все-таки выберет параллельное подключение приведу таблицу подключения.

И схема для экранов варианта B:



На одну линию связи может быть включено несколько датчиков. Для наших часов достаточно одного. Подключаем провод от контакта «DQ» ds18b20 к «pin 5» Arduino UNO.

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


Подключаем следующим образом: общий для всех трех кнопок провод подключаем к «GND» Arduino. Первую кнопку, она служит для входа в режим установки времени и переключения по времени и дате, подключаем к «Pin 2». Вторая, кнопка увеличения значения, - к «Pin 3», а третья, кнопка уменьшения значения, - к «Pin 4».

Сборка всего воедино.
Чтобы избежать короткого замыкания, следует заизолировать экран. По кругу обматываем изолентой, а на заднюю часть крепим на двусторонний скотч, вырезанную по размеру, планку из изолирующего материала. Подойдет плотный картон или тонкий пластик. Я воспользовался пластиком от планшета для бумаги. Получилось следующее:


Спереди экрана по краю клеим двусторонний скотч на вспененной основе, желательно черный.


Подключаем экран к Arduino:


Плюс от батарейного отсека подключаем к «VIN» Arduino, минус к «GND». Размещаем его сзади Arduino. Перед установкой в корпус, не забудьте подключить датчик температуры и плату с кнопками.


Подготовка и заливка скетча.
Для датчика температуры нужна библиотека OneWire.

Вывод на экран осуществляется через библиотеку U8glib:

Для редактирования и заливки скетча надо установите эти две библиотеки. Сделать это можно двумя способами. Просто распаковать эти архивы и поместить распакованные файлы в папку «libraries», находящуюся в папке с установленной Arduino IDE. Или второй вариант установить библиотеки прямо в среде программирования. Не распаковывая скачанные архивы, в среде Arduino IDE выберите меню Скетч – Подключить библиотеку. В самом верху выпадающего списка выберите пункт «Добавить.Zip библиотеку». В появившемся диалоговом окне выберете библиотеку, которую вы хотите добавить. Снова откройте меню Скетч – Подключить библиотеку. В самом низу выпадающего списка вы должны увидеть новую библиотеку. Теперь библиотеку можно использовать в программах. Не забудьте после всего этого перезагрузить Arduino IDE.

Датчик температуры работает по протоколу One Wire и имеет уникальный адрес для каждого устройства - 64-разрядный код. Каждый раз искать этот код нецелесообразно. Поэтому необходимо вначале подключить датчик к Arduino, залить в нее скетч находящийся в меню Файл – Примеры – Dallas Temperature – OneWireSearch. Далее запускаем Инструменты - Монитор порта. Arduino должна найти наш датчик, написать его адрес и текущие показания температуры. Копируем или просто записываем адрес нашего датчика. Открываем скетч Arduino_WG12864B_Term, ищем строку:

Byte addr={0x28, 0xFF, 0xDD, 0x14, 0xB4, 0x16, 0x5, 0x97};//адрес моего датчика

Записываем адрес вашего датчика между фигурными скобками, заменяя адрес моего датчика.

Стока:

//u8g.setPrintPos(44, 64); u8g.print(sek); // Выводим секунды для контроля правильности хода

Служит для вывода секунд рядом с надписью «Data». Это необходимо для точной установки хода времени.
Если часы спешат или отстаю следует поменять значение в строке:

If (micros() - prevmicros >494000) { // поменять на другое для корректировки было 500000

Я опытным путем определил число, при котором часы идут достаточно точно. Если ваши часы спешат следует увеличить это число, если отстаю – уменьшить. Для определения точности хода и нужен вывод секунд. После точной калибровки числа, секунды можно закомментировать и таким образом убрать с экрана.

Я давно хотел автоматизировать процесс просушки ванной комнаты после купания. У меня было много обзоров, посвящённых теме влажности. Решил внедрить в жизнь (так сказать) один из методов борьбы с ней. Кстати, зимой в ванной и бельё сушим. Достаточно вытяжной вентилятор включить. Но следить за вентилятором не всегда сподручно. Вот и решил поставить автоматику на это дело. Первый опыт внедрения оказался неудачный. Обзор был. Но я не сдался…

Когда въехал в новую квартиру, почти сразу поставил в вытяжку вентилятор с обратным клапаном. Вентилятор необходим, чтобы просушивать ванную комнату после купания. Обратный клапан нужен для предотвращения попадания в квартиру посторонних запахов от соседей (когда вентилятор молчит). И такое бывает. Вентканалы у всех индивидуальные, но цемент при кладке видно экономили. Сквозь щели, вероятно, запах и проходит.
Вентиляторы у меня есть различных вариантов. Есть простые, есть с таймером (регулировкой временнОго интервала), как на фото.


Именно таким и пользовался до сего дня.
В данном конкретном случае (у кого нет вентилятора с таймером) всё можно сделать на программном уровне.
Так как живу в многоквартирном «муравейнике», то единственное место для сушки белья – это балкон. В ванной может и затухнуть. Для сушки необходима либо низкая влажность, либо циркуляция воздуха. Выполнение обоих условий – лучший вариант. Вентилятор должен был решить эту проблему. Поначалу именно так и делал. Главное не забыть его выключить. Во время работы вентилятора необходимо приоткрывать малость окошко. Про школьную задачку с бассейном и двумя трубами напоминать не надо? Чтобы воздух выходил в вытяжку, необходимо, чтобы он откуда-то входил в квартиру. У кого окна деревянные, а не пластиковые, проблем не будет. Щелей хватит. А вот с пластиковыми квартира превращается в террариум.
Тут я и задумался об автоматизации процесса. Именно для этого я и заказал датчики.
Печальным опытом реализации своей идеи я уже делился. Вот тот модуль. Он работать не может в ПРИНЦИПЕ. Но без дела не останется. И ему будет применение.


(Напряжение питания: 5В. Максимальная нагрузка: 10А 250В переменного и 10А 30В постоянного тока). Использую как блок реле. Для обычного вентилятора этого достаточно.
Схему модуля я тоже рисовал. Проблем с подключением не будет.


Красный светодиод индицирует наличие питающего напряжения. Зелёный – сработку реле. Бесполезный датчик (датчик влажности, его уже нет) я заменил на сопротивление 10кОм. А также добавил ещё сопротивление. Оно пойдёт к «умному» блоку. Оба выделил красным. Всё это должно исключить возможные недоразумения. Ведь блок реле питается от напряжения 5В, а «умный» блок от 3,3В. Управляется блок реле низким уровнем. Высокий уровень отключает реле (вентилятор). В прошивке это учтено.
В основе схемы лежит компаратор на LM393. Подстроечный резистор изначально был предназначен для настройки порога срабатывания реле влажности. Возможно, его придётся немного крутануть.
Можно использовать простые блоки реле. Они продаются. Я же буду использовать то, что осталось после прошлой неудачной попытки.
Пора смотреть, в каком виде прибыли датчики AM2302 (DHT22). Заказал сразу три. Думаю, что только ванной это не ограничится. В голове много всяких идей. Где б только найти время и желание для их реализации.


Датчики были запаяны в антистатические пакеты. Всё по уму. Пайка аккуратная. Претензий по внешнему виду не имею. Даже плата промыта.


Вот, что написано на странице магазина:

AM2302 Humicap digital temperature and humidity module is a digital output signal containing a calibrated temperature and humidity combined sensor. It uses a dedicated digital modules capture technology and the temperature and humidity sensor technology to ensure that products with high reliability and excellent long-term stability. Sensor includes a capacitive humidity sensing element and a high-precision temperature measurement devices, and with a high-performance 8-bit microcontroller connected. Therefore, the product has excellent quality, fast response, anti-interference ability, high cost and other advantages. Ultra-small size, low power consumption, signal transmission distance up to 20 meters. Making it the best choice for all kinds of applications and even the most demanding applications.
Specification:
Dimension: 40 x 23mm
Weight: 4g
Voltage: 5V
Port: digital two-way single bus
Temperature range: -40-80 °C ± 0.5 °C
Humidity: 20-90% RH ± 2% RH
Platform: Arduino, SCM
Package included:
3 x Sensor Module
На плате деталей минимум. Датчики неразборные, ломать не стал.
Пора переходить к делу. Часть того, что применю, я уже показал. Ещё мне потребуется блок питания на 5В. Его я сделаю из старой (уже ненужной) зарядки к телефону.

Эта зарядка без USB разъёма. Ну очень старенькая (рекомендую использовать более новые, у них 5В на выходе). Поэтому на выходе 7В. Пришлось припаять МС стабилизатора КРЕН5. В этом ничего сложного нет. Кто дружит с паяльником, тот знает. А кто не дружит, зря читает топик.


Сильно не пугайтесь, сделал времянку. После отладки механизма всё будет выглядеть достойно. Возможно, и зарядку поменяю. Всё зависит от того, с каким результатом приду к финишу. Устанавливать по месту (на постоянку) буду после «комплексного опробования». Возможно, придётся применять зимний/летний вариант программного обеспечения. Температурные и влажностные характеристики воздуха зимой/летом отличаются.
Ещё мне потребуется WIFI модуль из предыдущего обзора.


Пригодится кабель-конвертер (USB To RS232 TTL UART) для программирования WIFI модуля.


Блок схема моей затеи выглядит просто.


Но нюансы конечно же имеются.
Осталось составить программку управления вентилятором.
Условий несколько:
1. Вентилятор включается при достижении влажности более 68%.
2. Время работы (таймер) 5 минут.
3. Передача данных о температуре и влажности по WIFI (на всякий случай).
4. Индикация режима по WIFI.
Если остановиться на условии №1, то достаточно будет самой простой Arduino. Но Arduino у меня только одна плата, а WIFI модулей целых три:)
Лично для меня самое сложное место – составление программы, немного (мягко сказано) не моя тема. Но жизнь течёт и увлекает в своё течение всё большие массы людей. Буду постигать необъятные просторы Arduino на примере датчика влажности DHT22 и WIFI модуля. Но если у меня всё получилось, значит, получится и у вас.
Сначала некоторая информация для чайников, как я.
В программе Arduino IDE не хватает в настройках тех плат, которые я буду использовать. Например, ESP8266 надо добавить.

Добавление компонентов на примере ESP8266.

Первым делом я скачал и установил на компьютер Arduino IDE. Затем запускаю программу.
Файл→Настройки→Вставляю ссылку в доп. ссылки→нажимаю ОК. Ссылка:



При этом необходимо подключение к интернету. Обязательно!
Затем захожу в менеджер плат.
Инструменты→Плата:…→Менеджер плат.


Нахожу свой модуль. Выбираю последнюю версию. Нажимаю установить.


В скаченной программе Arduino IDE не хватает и библиотек для датчиков. Например, библиотеку DHT22 тоже надо добавить.

Подключение библиотеки на примере датчика DHT22.

Сначала с интернета скачиваю архив типа DHT.zip. Найти не проблема.
Затем запускаю программу Arduino IDE.
Скетч→Подключить библиотеку→Добавить zip библиотеку.


Появляется вкладка типа этой.


Указываю место хранения…Open.
Библиотека подключена.


Осталось дело за малым:)
Схема подключения датчика влажности может отличаться. Мои пришли в виде модуля с тремя выводами и сопротивлениями, уже установленными на плате.

Ну и, наконец, заливка скетча.

Заливка скетча.

Открываю готовый скетч. В моём случае «WiFi-DHT22_AleksPoroshin68.ino.


Arduino IDE запускается автоматически.
Затем подключаю программатор, захожу в инструменты и подключаю Com-порт. Тот, к которому подключился высвечивается. Его и активирую. На моём нетбуке их три: это com6, com8 и com10.


Изучаю прошивку. Можно изменить имя и пароль доступа.

Нажимаю кнопку для загрузки.


Происходит компиляция скетча. Достаточно долго.


В это время необходимо нажать сброс на собранной схеме модуля.

При этом GPIO 00 на нуле.
Вот сам скетч:
#include #include #include #include #include "DHT.h" #define DHTPIN 4 #define DHTTYPE DHT22 DHT dht(DHTPIN, DHTTYPE); float dhtTemp = NAN; float dhtHumidity = NAN; int ledPin = 12; //GPIO 12 /* Set these to your desired credentials. */ const char *ssid = "AleksPoroshin"; const char *password = "12345678"; ESP8266WebServer server(80); /* Just a little test message. Go to http://192.168.4.1 in a web browser * connected to this access point to see it. */ void handleRoot() { String s = "\r\nESP201"; s += ""; s += ""; //s += "Status - Actions - Config"; s += "

Модуль ESP 201

"; s += " "; if (isnan(dhtTemp)) s += " Температура: Ошибка чтения"; else { s += " Температура: "; s += dhtTemp; s += " C"; } if (isnan(dhtHumidity)) s += " Влажность: Ошибка чтения"; else { s += " Влажность: "; s += dhtHumidity; s += " %"; } if(digitalRead(ledPin) == HIGH) s += " Вытяжка: Откл."; else s += " Вытяжка: Вкл."; s += " "; server.send(200, "text/html", s); } void setup() { delay(1000); Serial.begin(115200); Serial.println(); Serial.print("Configuring access point..."); /* You can remove the password parameter if you want the AP to be open. */ WiFi.softAP(ssid, password); IPAddress myIP = WiFi.softAPIP(); Serial.print("AP IP address: "); Serial.println(myIP); server.on("/", handleRoot); server.begin(); Serial.println("HTTP server started"); dht.begin(); Serial.println("DHT22 init success"); pinMode(ledPin, OUTPUT); } void loop() { getDHT(); server.handleClient(); } void getDHT() { dhtTemp = dht.readTemperature(); dhtHumidity = dht.readHumidity()+5; if (dhtHumidity < 68) { digitalWrite(ledPin, HIGH); Serial.println("ledPin HIGH"); } else { digitalWrite(ledPin, LOW); Serial.println("ledPin LOW"); } }
Сильно не ругайте. Я только учусь.
После заливки скетча для подтверждения программирования GPIO подключаю к +3,3В. Затем отключаю. Прошивка залита.


Собираю схему на макетнице. Всё проверяю. Работает. Но не всё так хорошо, как хотелось. В нужном мне диапазоне китайские датчики занижают показания на 5-6%.


Немецкому логгеру у меня доверия больше. Да и цена у него в несколько десятков раз больше. А самое главное, он прошёл поверку.
Ввёл поправку в программу (добавил 5 единиц). Я согласен, что это неправильно. Но в диапазоне 40-70% показывает точно. Более правильно снять характеристику и исправить библиотеку. К этому я не готов:). Остальные датчики тоже врали. Хотя все показывали приблизительно одинаково.

Вот так выглядит интернет страничка, если подключится к моему WIFI модулю:


Пароли и явки указаны в скетче.
Переключение происходит на 68% влажности. Всё чётко.


Но есть один нюанс. И его не учитывать нельзя. На границе в 68% влажности вентилятор может циклить, то включаясь, то выключаясь. Для решения этой проблемы нужен таймер. У меня вентилятор с таймером. Т.е. проблемы нет. У кого обычный вентилятор, придётся решать эту проблему на программном уровне.
Дальнейшая моя задача всё это собрать согласно схеме, но уже не на макетнице и протестировать в течение месяца. Все изменения можно вносить в процессе эксплуатации. Что делать и куда вставлять, я всё написал.
Несколько слов по поводу монтажа датчика. Засовывать его в вентканал не советую. Причина проста. Даже в самой чистой и ухоженной квартире присутствует пыль, которая при включении вентилятора именно туда и устремляется (в ветканал). А ведь год назад я вентилятор вынимал и тщательно чистил.


Чтобы не менять часто датчики из-за их порчи, рекомендую найти им более подходящее место, где-нибудь рядом. Дополнительно можно обернуть для защиты от пыли салфеткой из нетканого материала или чем-то подобным. И будет вам счастье.
Совсем забыл сказать, что если вы хотите сами выставлять «коэффициенты» управления влажностью, вам необходимо хоть немного быть в теме. Если у вас дома не стоят приборы типа этих…


Без них вам будет очень сложно что-то делать по этой теме.
На этом всё.
Как правильно распорядиться сведениями из моего обзора каждый решает сам. Кому что-то неясно, задавайте вопросы. Надеюсь, хоть кому-то помог. Возможно, кто-то захочет помочь мне. Я буду очень благодарен.
Удачи всем!
Проверка на работоспособность:


Продолжение следует…

Товар предоставлен для написания обзора магазином. Обзор опубликован в соответствии с п.18 Правил сайта.

Планирую купить +51 Добавить в избранное Обзор понравился +26 +65

Комплексные системы управления инженерными коммуникациями жилища, известные под названием «Умный дом» набирают всё большую популярность. Широкому внедрению этих систем препятствует достаточно высокая стоимость комплектующих элементов и монтажных работ. Умный дом на базе Arduino представляет собой решение вполне доступное для всех, кто хоть немного разбирается в электронике.

Что такое Arduino

Ардуино – это бренд, под которым выпускаются аппаратные и программные средства для самостоятельного построения систем автоматики и телеуправления.

По сути это модульный конструктор, обладающий широкими возможностями. Аппаратные средства Ардуино представляют собой большой ассортимент печатных плат, на которых организованы различные датчики, исполнительные устройства и платы расширения. Ядром системы являются платы с программируемыми микроконтроллерами разного уровня сложности от Arduino Pro Mini до Arduino Mega. Платы расширения позволяют использовать большое количество внешних устройств.

На небольшой печатной плате установлен микроконтроллер, немного дискретных элементов, кварц и различные виды разъёмов, в том числе и вертикальные штыри, с помощью которых собираются конструкции-этажерки с добавлением плат расширения. В качестве микроконтроллеров используются чипы семейства Atmega. Тип контроллера определяет функциональные возможности платы, зависящие от количества входов и выходов.

Так широко распространённый модуль Arduino Uno с микроконтроллером Atmega 328 имеет следующие характеристики:

  • Цифровые входы/выходы – 14
  • Из них 6 – ШИМ
  • Аналоговые входы – 6
  • Память – 32 Кб
  • Питание – 7-12 В
  • Цена – 950 рублей

Цифровые контакты можно запрограммировать на выполнение конкретной функции. Это может быть вход или выход. Эти входы/выходы могут работать с устройствами, для функционирования которых достаточно двух уровней. Это логическая единица или уровень близкий к напряжению питания и логический низкий уровень соответствующий нулю. На цифровые входы можно подключать двухуровневые датчики. К ним относится пара магнит-геркон. Этот датчик реагирует на открывание дверей и окон. По такому принципу работают многие датчики охранной и пожарной сигнализации.

Цифровые выходы могут управлять работой электромагнитных реле, которые в свою очередь включают и выключают сетевые розетки, к которым подключены различные бытовые приборы. Умный от Arduino обойдётся значительно дешевле, чем готовый промышленный комплект.

Аналоговые входы через аналогово-цифровые преобразователи передают на контроллер информацию о состоянии датчиков температуры, освещённости и некоторых других приборов. Сравнивая показания датчиков с командами, хранящимися в памяти, центральный блок системы может управлять устройствами, где требуется плавное изменение мощности. Шесть выходов, связанных с широтно-импульсным модулятором позволяют плавно управлять мощностью нагрузки. Например, регулировать яркость светильника, регулировать температуру обогревателя или управлять частотой вращения электродвигателя.

Самой мощной и многофункциональной платой этой линейки является Arduino Mega. На печатной плате смонтирован контроллер AT mega 2560 , дискретные элементы, порт USBконнектор для подключения питания. Плата имеет 54 универсальных контакта, которые можно запрограммировать на выполнение функций входа/выхода. 14 из них могут управлять аналоговыми устройствами при помощи широтно-импульсной модуляции. 16 аналоговых входов предназначены для подключения любых аналоговых приборов.

Плата контроллера Arduino Mega стоит в пределах 1 500 рублей. Программировать его проще всего с помощью персонального компьютера через USB-порт.

Периферийные модули для Ардуино

Плата контроллера является ядром системы, но подключать к ней какие либо устройства нельзя. Выходы имеют небольшую нагрузочную способность и ограниченный ток. Для организации системы управления бытовой техникой потребуются внешние силовые модули, устройства связи и другие устройства. Это не является проблемой, поскольку для контроллеров Arduino разработано большое количество периферийных модулей.

Вот только некоторые из них:

  • Газоанализатор – MQ-2
  • Датчик освещённости – 2CH-Light-2
  • Датчик температуры внешний – DS18B20-PL
  • Датчик температуры и влажности комнатный – DHT-11
  • Драйверы электродвигателя – L298N, L9110
  • Релейные модули – 1ch5V, 4ch5V
  • Модуль дистанционного управления IC2262/2272

Датчик, определяющий утечку газа в помещении, реагирует на пропан и бутан, которые являются составляющими бытового газа. Модуль имеет регулировку чувствительности и аналоговый/цифровой выходы. Датчик освещённости может являться частью автоматизированной системы управления светом. Он состоит из двух независимых каналов с индивидуальной регулировкой чувствительности. Уличный термодатчик предназначен для работы при температуре от – 55 до +125 градусов. Комнатный датчик температуры и влажности предназначен . Диапазон изменения температуры от 0 до +55 0 С и влажности от 20 до 90%.

Поскольку питающее напряжение модулей Ардуино лежит в диапазоне от 7 до 12 вольт, то для организации охранной или пожарной сигнализации можно использовать любые стандартные датчики, которые имеют такие же рабочие уровни.

Драйверы электродвигателей позволяют управлять однофазными, двухфазными, четырёхфазными и шаговыми двигателями. С помощью таких устройств можно открывать и закрывать жалюзи или шторы. Подключенные к драйверам сервоприводы позволяют регулировать поток теплоносителя в радиаторах отопления. Незаменимыми в системе «Умный дом» являются релейные ключи. Управляемые потенциалом логической единицы +5 вольт, реле допускают коммутацию нагрузок в цепях переменного тока до 10 ампер при напряжении до 250 вольт.

С их помощью можно включать и выключать электрические розетки, электронасосы и другие системы.

Модуль дистанционного управления состоит из пульта и приёмного устройства. Пульт оборудован четырьмя кнопками и обеспечивает передачу команд на приёмный блок на расстоянии до 100 метров. Все периферийные модули имеют одинаковое питающее напряжение и совместимы с любыми микроконтроллерами Arduino.

Организация системы «Умный дом»

Без определённых навыков, знания принципиальных схем и основ электроники за систему «Умный дом» в полном объёме лучше не браться.

Программирование микроконтроллеров линейки Ардуино осуществляется на языке С/С++.

Для начала можно написать простейшие программы, которые могут включать и выключать светодиод или управлять работой микроэлектродвигателя. Примеров таких программ очень много. В них используются простые операторы вида: если, пока, то и другие. Они позволяют писать программы даже школьникам. Когда первые программы будут правильно выполняться можно попробовать собрать более сложные устройства, где будут задействованы ШИМ выходы для плавного управления светом.

Для того чтобы сделать «Умный дом» на Ардуино своими руками необходимо составить технический проект, где будет указано количество датчиков и исполнительных устройств для каждого помещения. Можно начать с одной комнаты, где будут реализованы несколько простых функций. Некоторые из них будут выполняться по сигналам от внешних датчиков, а некоторые по сигналам таймера. Когда утром человек встаёт на работу контроллер Ардуино, по сигналу таймера включит электрический чайник или кофеварку. Если на улице темно, что зафиксирует наружный датчик, в комнате плавно загорится светильник. Комфортную температуру в помещении так же можно задать как для сна, так и для просыпания.

Для небольшого числа функций подойдёт микроконтроллер Arduino Uno и набор периферийных модулей.

Для управления бытовыми приборами потребуются релейные ключи, которые будут включать и выключать электрические розетки. Для управления светом потребуется детектор движения. Если умная система монтируется на кухне необходимо предусмотреть автоматическое включение вытяжки, датчик утечки бытового газа и датчик протечки воды. Как элемент пожарной сигнализации в помещении должен быть установлен дымовой датчик.

Заключение

Контроллер Ардуино позволит выполнить проект умный дом и уложиться в сравнительно небольшую сумму. Если подсчитать все расходы на оборудование трёхкомнатной квартиры, то сумма вряд ли превысит 30-40 тысяч рублей. Если сократить число функций, бюджет окажется ещё более скромным.