Интерактивная подсветка умного дома

VI Международный конкурс научно-исследовательских и творческих работ учащихся
Старт в науке

Интерактивная подсветка умного дома

Котков В.А. 1
1ГОУ "Коми республиканский лицей при Сыктывкарском государственном университете"
Есева В.Ю. 1
1ГОУ "Коми республиканский лицей при Сыктывкарском государственном университете"
Автор работы награжден дипломом победителя II степени
Текст работы размещён без изображений и формул.
Полная версия работы доступна во вкладке "Файлы работы" в формате PDF

 

   

 

ВВЕДЕНИЕ

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

собой контроллер ,который на основании показания датчиков движения и освещённости будет автоматически зажигать свет перед человеком заходящим на лестницу. В качестве источника освещения идеально подойдут 12v-овые светодиодные ленты.

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

Цель проекта разработать программно - аппаратный комплекс интерактивной подсветки.

Цель достигается посредством решения следующих задач:

Аппаратная часть:

изучить платформу Arduino Nano;

изучить принцип работы датчика движения HC-SR501 и способ его подключения к платформе Arduino;

создать рабочее устрйоство

Програмная часть:

Изучить язык программирования С#

Создать программу настройки контроллера

Описание проекта

Аппаратная часть

Аппаратная часть представляет собой непосредственно сам контроллер управляющий светодиодными лентами.

Необходимые детали для сборки устройства

Arduino nano v 3.0 - 1шт.

Сдвиговый регистр 74HC595N - 1шт.

Транзисторная сборка ULN2003A - 1шт.

Резисторы на 10 КоМ - 2шт.

Резисторы на 220 оМ - 2шт.

Кнопка - 1шт.

Блок питания 10А 12V

Кнопка - 1шт.

Светодиоды - 2шт.

Понижающий DC-DC Преобразователь LM2596 - 1шт

Датчики движения HC-SR501 - 2шт.

Фоторезистор - 1 шт.

Arduino Nano

Общие сведения

Платформа Nano, построенная на микроконтроллере ATmega328 (Arduino Nano 3.0) или ATmega168 (Arduino Nano 2.x), имеет небольшие размеры и может использоваться в лабораторных работах. Она имеет схожую с Arduino Duemilanove функциональность, однако отличается сборкой. Отличие заключается в отсутствии силового разъема постоянного тока и работе через кабель Mini-B USB. Nano разработана и продается компанией Gravitech.

Принципиальные схемы и исходные данные

Arduino Nano 3.0 (ATmega328): схемы и файлы Eagle.

Arduino Nano 2.3 (ATmega168): руководство (pdf) и файлы Eagle. Примечание: т.к. свободная версия файлов Eagle не позволяет работать более чем с двумя слоями, а данная версия схем Nano содержит четыре слоя, то схемы публикуются не трассированными.

Краткие характеристики

Микроконтроллер

Atmel ATmega168 или ATmega328

Рабочее напряжение (логическая уровень)

5 В

Входное напряжение (рекомендуемое)

7-12 В

Входное напряжение (предельное)

6-20 В

Цифровые Входы/Выходы

14 (6 из которых могут использоваться как выходы ШИМ)

Аналоговые входы

8

Постоянный ток через вход/выход

40 мА

Флеш-память

16 Кб (ATmega168) или 32 Кб (ATmega328) при этом 2 Кб используются для загрузчика

ОЗУ

1 Кб (ATmega168) или 2 Кб (ATmega328)

EEPROM

512 байт (ATmega168) или 1 Кб (ATmega328)

Тактовая частота

16 МГц

Размеры

1.85 см x 4.2 см

Питание:

Arduino Nano может получать питание через подключение Mini-B USB, или от нерегулируемого 6-20 В (вывод 30), или регулируемого 5 В (вывод 27), внешнего источника питания. Автоматически выбирается источник с самым высоким напряжением.

Микросхема FTDI FT232RL получает питание, только если сама платформа запитана от USB. Таким образом при работе от внешнего источника (не USB), будет отсутствовать напряжение 3.3 В, генерируемое микросхемой FTDI, при этом светодиоды RX и TX мигаю только при наличие сигнала высокого уровня на выводах 0 и 1.

Память

Микроконтроллер ATmega168 имеет 16 кБ флеш-памяти для хранения кода программы, а микроконтроллер ATmega328, в свою очередь, имеет 32 кБ (в обоих случаях 2 кБ используется для хранения загрузчика). ATmega168 имеет 1 кБ ОЗУ и 512 байт EEPROM (которая читается и записывается с помощью библиотеки EEPROM), а ATmega328 – 2 кБ ОЗУ и 1 Кб EEPROM.

Входы и Выходы

Каждый из 14 цифровых выводов Nano, используя функции pinMode(), digitalWrite(), и digitalRead(), может настраиваться как вход или выход. Выводы работают при напряжении 5 В. Каждый вывод имеет нагрузочный резистор (стандартно отключен) 20-50 кОм и может пропускать до 40 мА. Некоторые выводы имеют особые функции:

Последовательная шина: 0 (RX) и 1 (TX). Выводы используются для получения (RX) и передачи (TX) данных TTL. Данные выводы подключены к соответствующим выводам микросхемы последовательной шины FTDI USB-to-TTL.

Внешнее прерывание: 2 и 3. Данные выводы могут быть сконфигурированы на вызов прерывания либо на младшем значении, либо на переднем или заднем фронте, или при изменении значения. Подробная информация находится в описании функции attachInterrupt().

ШИМ: 3, 5, 6, 9, 10, и 11. Любой из выводов обеспечивает ШИМ с разрешением 8 бит при помощи функции analogWrite().

SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). Посредством данных выводов осуществляется связь SPI, которая, хотя и поддерживается аппаратной частью, не включена в язык Arduino.

LED: 13. Встроенный светодиод, подключенный к цифровому выводу 13. Если значение на выводе имеет высокий потенциал, то светодиод горит. 

На платформе Nano установлены 8 аналоговых входов, каждый разрешением 10 бит (т.е. может принимать 1024 различных значения). Стандартно выводы имеют диапазон измерения до 5 В относительно земли, тем не менее имеется возможность изменить верхний предел посредством функции analogReference(). Некоторые выводы имеют дополнительные функции:

I2C: A4 (SDA) и A5 (SCL). Посредством выводов осуществляется связь I2C (TWI). Для создания используется библиотека Wire (информация на сайте Wiring).

Дополнительная пара выводов платформы:

AREF. Опорное напряжение для аналоговых входов. Используется с функцией analogReference().

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

Обратите внимание на соединение между выводами Arduino и портами ATmega168.

Связь

На платформе Arduino Nano установлено несколько устройств для осуществления связи с компьютером, другими устройствами Arduino или микроконтроллерами. ATmega168 и ATmega328 поддерживают последовательный интерфейс UART TTL (5 В), осуществляемый выводами 0 (RX) и 1 (TX). Установленная на плате микросхема FTDI FT232RL направляет данный интерфейс через USB, а драйверы FTDI (включены в программу Arduino) предоставляют виртуальный COM порт программе на компьютере. Мониторинг последовательной шины (Serial Monitor) программы Arduino позволяет посылать и получать текстовые данные при подключении к платформе. Светодиоды RX и TX на платформе будут мигать при передаче данных через микросхему FTDI или USB подключение (но не при использовании последовательной передачи через выводы 0 и 1). 

Библиотекой SoftwareSerial возможно создать последовательную передачу данных через любой из цифровых выводов Nano.

ATmega168 и ATmega328 поддерживают интерфейсы I2C (TWI) и SPI. В Arduino включена библиотека Wire для удобства использования шины I2C. Более подробная информация находится в документации. Для использования интерфейса SPI обратитесь к техническим данным микроконтроллеров ATmega168 и ATmega328.

Программирование

Платформа программируется посредством ПО Arduino. Из меню Tools > Board выбирается «Arduino Diecimila, Duemilanove или Nano w/ ATmega168» или «Arduino Duemilanove или Nano w/ ATmega328» (согласно установленному микроконтроллеру). Подробная информация находится в справочнике и инструкциях.

Микроконтроллеры ATmega168 и ATmega328 поставляются с записанным загрузчиком, облегчающим запись новых программ без использования внешних программаторов. Связь осуществляется оригинальным протоколом STK500.

Имеется возможность не использовать загрузчик и запрограммировать микроконтроллер через выводы блока ICSP (внутрисхемное программирование). Подробная информация находится в данной инструкции.

Автоматическая (программная) перезагрузка

Nano разработана таким образом, чтобы перед записью нового кода перезагрузка осуществлялась самой программой, а не нажатием кнопки на платформе. Одна из линий FT232RL, управляющих потоком данных (DTR), подключена к выводу перезагрузки микроконтроллеров ATmega168 или ATmega328 через конденсатор 100 нФ. Активация данной линии, т.е. подача сигнала низкого уровня, перезагружает микроконтроллер. Программа Arduino, используя данную функцию, загружает код одним нажатием кнопки Upload в самой среде программирования. Подача сигнала низкого уровня по линии DTR скоординирована с началом записи кода, что сокращает таймаут загрузчика.

Функция имеет еще одно применение. Перезагрузка Nano происходит каждый раз при подключении к программе Arduino на компьютере с ОС Mac X или Linux (через USB). Следующие полсекунды после перезагрузки работает загрузчик. Во время программирования происходит задержка нескольких первых байтов кода во избежание получения платформой некорректных данных (всех, кроме кода новой программы). Если производится разовая отладка скетча, записанного в платформу, или ввод каких-либо других данных при первом запуске, необходимо убедиться, что программа на компьютере ожидает в течение секунды перед передачей данных.

Практика

Arduino не способно само по себе управлять нагрузками 12v , а значит необходимо включить в состав устройства один из возможных вариантов :

Группа из нескольких реле или релейных модулей

Группа из нескольких транзисторов

Транзисторная сборка

В итоге в состав устройства была включена сборка Дарлингтона ULN2003A

Это было сделано по ряду причин : компактность ,особенно если речь идёт об управлении несколькими каналами ,бесшумность в отличии от реле, предполагаема сила тока с которой сборке придётся работать.

ULN2003A

Контроллер будет управлять сборкой при помощи 5v через сдвиговый регистр. Сборка будет включать и выключать 12v светодиодные ленты.

Так - же в устройство был включён сдвиговый регистр 74HC595N.Он позволяет экономить используемые порты arduino ,а главное управлять 8 выходами принимая на вход 1 байт от контроллера, что было важно при создании анимаций .

74HC595N

Байт = кадр анимации.

Каждый бит отвечает за выход сдвигового регистра.

В устройстве используются только первые 7 битов.

Например байт 10 101 110 ,означает что ток 12v потечёт через 1,3,5,6,7 выходы контроллера

Битовые операции

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

10 101 110 >> 01 110 101

Для этих целей в программном коде arduino предусмотрен метод.

Датчики

Управление происходит на основании показателей датчиков.

Фоторезистор отвечает за переключение режимов "день/ночь".

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

Схематичное изображение устройства

Программная часть

Программная часть представляет собой ПО для настройки контроллера.

Общие сведения

C# — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как язык разработки приложений для платформы Microsoft .NET Framework .

С# живет по принципу «всякая сущность есть объект». Его причисляют к объектно-ориентированным, а точнее объектным, языкам программирования. «Язык основан на строгой компонентной архитектуре и реализует передовые механизмы обеспечения безопасности кода» – так принято характеризовать его.
Сторонники C# называют его самым мультипарадигменным, универсальным, продвинутым и удобным в использовании языком программирования. Учитывая тот факт, что за ним стоит платформа Microsoft .NET, число таких сторонников достаточно велико.

Далекие предки C# появились еще в 60-х годах. Все началось с появления языка B, который в 1969 году был создан коллективом разработчиков из Технологического института Массачусетса (MIT).

После B, как это ни странно, последовал С, который был изобретен в 1972 году. Основой для нового языка послужил сам B.
Создателями C были Кен Томпсон и Денис Ритчи, которые работали в исследовательской лаборатории компании AT&T (AT&T Bell Telephone Laboratories). В 1971 году Ритчи начал создавать расширенную версию B. Сначала он назвал её NB (New B), но когда язык стал сильно отличаться от B, название сменили на C. B расширился за счет явного использования типов, структур и ряда новых операций.

Microsoft решила отметить Миллениум выпуском новых программных продуктов.В поддержку этих новшеств Microsoft выпустила инструментарий для разработки приложений – платформу .NET. Она также объединяла «под одной крышей» несколько языков программирования, что было в новинку для того времени.
Еще одним новшеством платформы .NET была технология активных серверных страниц ASP.NET (Active Server Page). С её помощью можно было относительно быстро разработать веб-приложения, взаимодействующие с базами данных.
Язык программирования C# был создан специально для ASP.NET. На C# полностью была написана и сама ASP.NET.

Авторами этого языка программирования стали Скотт Вилтамут и Андерс Хейльсберг — создатель Турбо Паскаля и Дельфи, перешедший в 1996 году в Microsoft.

По одной из версий, он вынашивал замысел нового языка и даже новой платформы (которая сейчас носит название .NET), еще работая в компании Borland.

C# поддерживает все три «столпа» объектно-ориентированного программирования: инкапсуляцию, наследование и полиморфизм. Кроме того, в нем была реализована автоматическая «сборка мусора», обработки исключений, динамическое связывание.

Visual Studio это линейка программных компонентов, предназначенный для облегчения написания кода для различных языков. Продукт позволяет разрабатывать консольные и графические приложения. На сегодняшний день рынок программного обеспечения в основном представлен продуктами корпорации Майкрософт, которая свои разработки адаптирует под операционную систему виндоус.

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

Главное окно программы

Назначение программы дать возможность пользователю настраивать многочисленные анимации и вариации работы контоллера.

Графический интерфейс использует систему построения клиентских приложений WPF. Интерфейс программы был создан при помощи встроенного в Visual Studio редактора WPF интерфейсов.

Обмен данными между программной и устройством происходит через виртуальный COM порт. Это происходит по схеме:

"Отправка со стороны контроллера запроса" >> "Обработка запроса" >> "Отправка ответа на контроллер"

Фрагмент кода. Arduino делает запросы

Фрагмент кода. Обработка запроса программой

Руководство по настройке режима в программе

1.Подключить устройство к разъёму USB компьютера. Количество выходов 12v вашей модели устройства можно изменить в пункте меню 'Настройки".

2.В панели меню нажать пункт "Устройство">>"Найти"

3.Открыть программу. В Разделе "Анимации" добавить или выбрать новуюанимацию. Выбрать используемые в анимации датчики в панели "Датчики".

4.Добавить кадры в панели кадры. Настройка кадра происходит в панели "Кадр" - ставьте и убирайте галочку на против цифр 1-7(в зависимости от настроенного количества выходов)

5.После окончания настройки анимации зажмите кнопку на корпусе вашего устройства до появления в консоли надписи "Настройканачата". Невыключайте устройство до появления в консолинадписи "Настройказавершена".

6.Настройка окончена.

Заключение

В ходе работы над проектом интерактивной ночной подсветки был создан аппаратно-программный комплекс - устройство управляющее несколькими источниками освещения на основании показания датчиков движения и освещённости, обладающее рядом режимов работы и программа настройки контроллера c настройкой режимов готового устройства.

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

Достоинства устройства

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

Универсальность. К выходным 12v разъёмам можно подключить ряд устройств питающихся от данного напряжения. Например: электро-запал для пиротехники - последовательный запуск.

Себестоимость устройства. Даже с учётом того ,что это макет себестоимость без учёта лент и блока питания выходит меньше 500 рублей.

Экономия электроэнергии. //тут будет ссылка на отдельный пункт с таблицей формул и местагде эта экономия ощутима.

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

Эстетическая составляющая. Интерактивнаяподсветка украсит ваш интерьер и поможет удивить гостей.

Список литературы

Arduino.ru. Программирование Arduino. Дата обращения-15.02.2018 URL:http://www.arduino.ru/Reference

Amperka Wiki. Arduino Uno. Дата обращения-14.02.2018 URL:http://wiki.amperka.ru/%D0%BF%D1%80%D0%BE%D0%B4%D1%83%D0%BA%D1%82%D1%8B:arduino-uno

     
Просмотров работы: 206