Умный дом на основе arduino. Умный дом на базе системы Ардуино – сложно ли сделать своими руками. Что необходимо для сборки

История создания проекта для автоматизированных систем и робототехники Arduino берет начало с 2005 года. Тогда в итальянском институте студент Эрнандо Барраган создал платформу c аппаратно-программной частью, которая впоследствии стала основой для этого проекта. На данный момент платформа Arduino пользуется невероятным успехом. Сейчас с ее помощью создаются автоматизированные системы, которые используются на различных этапах производства.

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

Разнообразие Ардуино плат и их использование в умном доме

Актуальными на данный момент являются версии таких наборов плат Arduino:

  • MICRO;
  • PRO MINI;
  • NANO.

а также новинки, которые появятся в ближайшем будущем:

  • MEGA 2560;
  • ZERO;

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

  • Intel Galileo;
  • Intel Galileo Gen 2;
  • Intel Edison.

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

Самой популярной платой является Arduino Uno. Эта плата сравнительно недорогая и пользуется популярностью, как у новичков, так и у профессионалов. С помощью такой платы можно создавать базовые автоматизированные механизмы умного дома. Например, с помощью Arduino Uno и дополнительных наборов модулей можно автоматизировать такие процессы умного дома, которые позволят:

  • Управлять кондиционером через приложение на Andoid или iOS;
  • Удаленно управлять системой электропитания в доме;
  • Удаленно узнавать информацию о температуре дома;
  • Управлять телевизором через приложение на Andoid или iOS;
  • Управлять ресивером;
  • Управлять освещением в доме;
  • Получать всю информацию об устройствах, подключенных к умному дому через Интернет;
  • Управлять солнечными панелями;
  • Управлять температурным режимом в доме.

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

Установка IDE для Arduino

На сайте официальном сайте выложена собственная программная оболочка IDE, которая является бесплатной и поддерживается всеми популярными операционными системами. С помощью IDE пользователь может создавать свои программы, которые можно загрузить в печатную плату Ардуино. Скачать IDE можно на официальном сайте перейдя по адресу https://www.Arduino.cc/en/Main/Software. На данный момент используется версия IDE Arduino 1.6.6. Рассмотрим подробнее процесс установки IDE для платформы Windows. После загрузки запустите инсталлятор и нажмите кнопку «I Agree».

В следующем окне оставляем все галочки и нажимаем кнопку «Next».

Выбираем место установки IDE и нажимаем кнопку «Install».

Начнется процесс установки.

После установки IDE, его можно запустить с ярлыка на рабочем столе, после чего вам откроется рабочая область программы:

Напишем простую программу и загрузим ее в Ардуино

IDE для Arduino использует упрощенный язык программирования C++, понятный начинающим программистам. Для примера напишем программу, которая будет включать светодиод с интервалом 1.5 секунды. Для этого запустите IDE и вставьте код, расположенный ниже:

В строке «int ledPin = 13» объявляем переменную цифровую ledPin и присвистываем ей значение 13. В функции «setup» устанавливаем порт 13 как исходящий. В цикле «loop» с помощью оператора «digitalWrite» включаем и отключаем светодиод. А с помощью оператора «delay» делаем задержку в 1,5 секунду два раза. В итоге бесконечный цикл «loop» будет отключать, и включать наш светодиод на 1,5 секунды.

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

Для загрузки программы в Arduino Uno необходимо подключить плату к компьютеру с помощью USB кабеля. При успешном подключении загорится светодиод «ON» и замигает светодиод «L».

После этого в меню «Скетч» нажмите кнопку загрузка.

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

Итог

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

Видео по теме

Комплексные системы управления инженерными коммуникациями жилища, известные под названием «Умный дом» набирают всё большую популярность. Широкому внедрению этих систем препятствует достаточно высокая стоимость комплектующих элементов и монтажных работ. Умный дом на базе 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 тысяч рублей. Если сократить число функций, бюджет окажется ещё более скромным.

Дальше дело техники - написать под Ардуино цикл опроса параметров и вывести их для начала в монитор порта. Время одного цикла получилось около секунды. Однако в конечном варианте проекта с логированием данных на флэшку и опросом температурных датчиков это время выросло до 4-x секунд. Это меня уже совершенно не устраивало и пришлось погрузиться в оптимизацию. В итоге я вновь добился секундного интервала без потери функциональности. К слову, скетч я переписывал с нуля два или три раза, пока не нашёл правильную архитектуру и экономные алгоритмы.

Программная реализация обмена со счётчиком

Код выдран из контекста моего большого рабочего скетча. Скомпилирован, но в таком виде я его никогда не запускал. Привожу только для примера, а не как готовую рабочую программу. Хотя в теории всё должно работать именно в таком виде.

Код написан для двух типов счётчиков одновременно, однофазного МТ-124 и трёхфазного МТ-324. Выбор типа счётчика происходит в программе автоматически по ответному слову инициализирующей команды.

Код привожу как есть, без прекрас и дополнительных комментариев кроме тех, что писал сам для себя. И да, я не программист, и даже не учусь на него, поэтому пинать меня за качество кода не следует, но поучить как надо кодить можно: EnergyMeterNeva.ino

Огромный дополнительный плюс счётчика электроэнергии - это надёжные и точные часы реального времени. Мне не пришлось обеспечивать систему дополнительным модулем, который ещё нужно найти не просто абы какой, а качественный. Текущее время с точностью до секунды я получаю со счётчика среди прочих данных. Да, относительно атомного времени время счётчика немного сдвинуто (несколько секунд), уж не знаю с чем это связано, с некачественной заводской установкой или ещё чем, но точность хода при этом отличная, просто с небольшим смещением.

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

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

Температурные датчики

Тест температурных датчиков с помощью скетча-примера я уже проводил отдельно раньше. Теперь оставалось только встроить их опрос в основной проект. Это не составило никакого труда. Все девять имеющихся у меня датчиков работали без проблем при параллельном включении по 1-Wire. Разброс показаний между ними составил около 0.5 градуса, что показывает бессмысленность использования их на максимальной точности в 0.0625 градуса. Датчики для теста собрал в пачку и завернул в несколько слоёв пупырчатого полиэтилена. Для большей точности пачку расположил вертикально и ждал сутки для полного выравнивания температуры. Показания всех датчиков так и не оказались одинаковыми.

Однако загрублять точность конвертации температуры самих датчиков я тоже не стал. Проще округлить показания программно, а выгоды по времени опроса я бы не получил, так как придумал такой алгоритм, при котором время ожидания конвертации не является пустым бесполезным delay(750). Обычная логика работы с датчиками такая - сначала подача команды на запуск конвертации температуры, потом ожидание окончания конвертации (те самые 750 мс минимум), и уже затем вычитывание данных. Я сделал всё наоборот, что позволило мне исключить пустой интервал ожидания - сначала вычитываю данные из датчиков, а потом сразу запускаю конвертацию. И пока весь остальной код в цикле LOOP отработает, данные как раз успевают подготовиться для вычитывания на следующем витке. По времени данные с датчиков я получаю в этом случае чуть позже - цикл LOOP занимает примерно 1-1.5 секунды, но это совершенно не критично.

Иногда со всех датчиков я получал данные «85» или «0». Что это за косяк, я так и не понял, поэтому сделал в коде проверку и исключил попадание таких данных в результат. Ещё обнаружился косяк у одного из датчиков - он не держал настройки при отключении питания. То ли флэшка его внутренняя дохлая, то ли ещё что. Поэтому в сетапе прописал настройку датчиков, и теперь по включению питания (если оно таки пропадает) все датчики гаранитрованно настроены.

Адреса конкретных датчиков я получил с помощью скетча-примера, где-то нарытого и немного мной модифицированного: DS18x20_Temperature.ino

После чего адреса я забил константами в массив и в основной программе обращался к датчикам уже сразу по их адресам: TempSensors_DS18B20.ino

Для правильной работы датчиков на шине 1-Wire требуется установить подтяжечный резистор 4.7 кОм между линией данных и питанием. Мне было удобно припаять между пинами клеммной колодки SMD-резистор, но нашёл я у себя в подходящем корпусе только 5.1 кОм, его и поставил (он виден на фотке в разделе про сборку на нижней стороне платы). Работает всё хорошо.

Датчики температуры у меня подключены электрически параллельно на одной длинной линии (+5, gnd и data), все 9 штук, но хитро. Физически кабели витой пары подключены звездой для удобства разводки датчиков по объекту. В каждом плече кабеля я использую две пары. Одна пара - это питание датчика. Вторая пара - это линия данных, которая идёт по одному проводу к датчику и возвращается от него же обратно по второму проводу. Таким образом получается возможным развести кабели звездой от щитка, но электрически это звезда только по питанию, а по данным это одна линия. Такой вариант подключения оказался более надёжен в работе на длинных линиях, при простом параллельном подключении было много сбоев при чтении данных. Вот эскиз такой схемы:

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

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

Общая длина витой пары по бытовке составила примерно 25 метров. Куски для внешних датчиков - 5 и 10 метров, и десятиметровый внутренний кусок с ответвлениями на семь датчиков. Всё работает почти идеально. Лишь изредка проскакивают прочерки вместо значений температуры. Это значит, что данные с конкретного датчика были прочитаны некорректно. Но случается это настолько редко (замечаю раз в месяц может), что не доставляет никаких проблем.

Удалённый доступ

Для удалённого доступа к Ардуино был куплен Ethernet shield. При наличии встроенной библиотеки работа с ним, как и со всем остальным в Ардуино, оказалась довольно проста.

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

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

С дизайном веб-странички я не парился, тем более что был необходим минимальный объём текстовых данных для её более быстрой загрузки, поэтому самый примитивный html и всё:

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

Код страничики лежит в файле на карте памяти и загружается с неё при обращении к серверу. Для более быстрой и удобной модификации кода странички я встроил механизм её обновления в неё саму. Внизу, под блоком основных контролов есть текстовое поле и кнопка Отправить. В текстовое поле копирую новый html-код, жму кнопку, после чего java-скрипт производит отправку данных на веб-сервер контроллера, который сохраняет его сначала в буферный файл. Если передача произошла успешно, то основной файл подменяется буферным, страничка автоматически обновляется. Всё. Изменения приняты.

Привожу фрагменты кода моей реализации этого механизма.
В html-страничке встраиваем форму:



CONTROL.HTM:


Идёт отправка страницы:
По кнопке «Отправить» запускается следующий ява-скрипт: send_HTM.js

В скетче в функции обработки запросов веб-сервера по префиксам в запросе "CONTROL.HTM" (старт отправки файла), "htmlineN" (отправка строки №) и "END_CONTROL.HTM" (конец отправки файла) определяем дальнейшие действия:

File acceptHtmFile; ................ if (fl_accept_htm) // префикс "CONTROL.HTM" { SD.remove(CTRL_HTM); acceptHtmFile = SD.open(CTRL_HTM, FILE_WRITE); // открываем файл на запись if (!acceptHtmFile) // если файл открыть не удалось - ничего не пишем { #ifdef DEBUG_SD Serial.println("SD-card not found"); #endif client.print("FAIL"); client.stop(); } else client.print("OK_OPEN_FILE"); acceptHtmMode = true; break; } if (fl_htmline) // префикс "htmlineN" { int b = acceptHtmFile.println(tag); if (b == 0) { client.print("FAIL"); acceptHtmMode = false; cntHtmModeIteration = 0; } else { client.print("OK"); } cntHtmModeIteration = 0; break; } if (fl_endhtm) // префикс "END_CONTROL.HTM" { SD.remove(CONTROL_HTM); acceptHtmFile.close(); File htmlFile = SD.open(CONTROL_HTM, FILE_WRITE); // открываем на запись acceptHtmFile = SD.open(CTRL_HTM); // открываем на чтение for (int i = 0; i < acceptHtmFile.size(); i++) { digitalWrite(PIN_WATCHDOG_DONE, 1); htmlFile.write(acceptHtmFile.read()); digitalWrite(PIN_WATCHDOG_DONE, 0); } acceptHtmFile.close(); htmlFile.close(); client.print("OK_CLOSE_FILE"); acceptHtmMode = false; cntHtmModeIteration = 0; break; }
Дефайны CONTROL_HTM и CTRL_HTM здесь это имена html-файлов. Первый - основной файл, второй - буферный. В массиве чаров tag лежит текст принятой строки, выделенный из запроса. Логика такова: при приёме данных они пишутся в буферный файл, по окончании приёма буферный файл переписывается в основной. Как просто переименовать файлы я так и не смог понять, в стандартной библиотеке SD такой функции нет, поэтому тупое посимвольное копирование, отнимающее кучу времени.

Было бы удобным код веб-странички управления хранить не на карте памяти контроллера, а на клиентской машине, или загружать с какого-нибудь внешнего ресурса. Но запрет на кроссдоменные запросы не позволяет этого сделать. Яваскрипты могут отправлять свои запросы только тому северу, с которого были загружены сами. Тела яваскриптов при этом могут подгружаться откуда угодно, важно лишь только откуда была загружена страница с их вызовом.

Логирование данных

Ethernet shield имеет на борту слот карты памяти micro-SD. Именно из-за его наличия я и решил писать данные в лог-файлы. Для работы с картой памяти также имеется встроенная библиотека, и управлять записью-чтением файлов с ней вообще элементарно.

Для экономии объёма данных алгоритм логирования я построил так, что запись происходит только тогда, когда данные изменяются более чем на заданный порог. Для температуры это 0.1°, для напряжения это 0.2В. В один файл пишутся данные за одни сутки. В ноль часов создаётся новый файл. Формат хранения я выбрал обычный текстовый, с разделителями, чтобы можно было быстро контролировать содержимое файлов при отладке, и была бы простая возможность загрузки в Excel.

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

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

Графики

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

Для примера приведу свой яваскрипт отрисовки графиков. Сам по себе он бесполезен, так как работает только в совокупности и с веб-сервером, и с html-страницей, и, возможно, завязан на другие скрипты (дело было давно, всех деталей уже не помню). Но настройки внешнего вида моих графиков содержаться именно в нём и почерпнуть их оттуда можно: get_log.js

Большим преимуществом библиотеки amchart является то, что она умеет отрисовывать правильные графики по «рваным» данным. Как я уже упоминал выше, в лог я сохраняю данные только при их изменении. То есть это происходит асинхронно и хаотично. Новых данных может не быть несколько минут, а потом за несколько секунд они поменяются несколько раз. Соответственно записи в логе идут с произвольными интервалами времени. Amchart при отрисовке учитывает это самостоятельно, у меня нет необходимости интерполировать данные перед отрисовкой. Я просто отправляю массив данных как есть, и вижу красивый равномерный во времени график.

Недостаток этой библиотеки я обнаружил только один - она не умеет (ну или я так и не понял как) по-человечески обновлять графики в реальном времени. Можно добавить новые данные к уже имеющимся, но перерисовка производится каждый раз полностью всего массива данных, и это сильно подтормаживает работу браузера. Впрочем, сама идеология чтения из Ардуины данных для отрисовки по запросу из браузера ущербна своей неоптимальностью, поэтому бороться за быстрое обновление в реальном времени смысла не было никакого.

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

Сейчас графики выглядят так (на примере дня, когда в бытовке никого нет и, соответственно, нет никакого энергопотребления). Когда возникают данные тока, масштаб автоматически устанавливается так, чтобы всё красиво влезало, и на вертикальной оси возникают и значения уровней тока:

Графики отображаются на той же самой страничке, где происходит управление, прямо ниже основного блока контролов.

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

  • Его нельзя запустить как есть в любой другой сети, кроме моей, так как я не пытался сделать проект портабельным, и он жёстко завязан на мои адреса и мою топологию сети.
  • Я уверен, что общая идеология проекта страдает массой разнообразных проблем, так как это моя первая попытка в той области, в которой я разбираюсь плохо. Поэтому не предлагаю никому весь проект к повторению именно в таком виде. Я поделился лишь теми моментами, в которых более менее уверен.
  • Проект делался давно и долго, и я уже никогда не вспомню всех деталей и не смогу объяснить ряд решений. Объём скетча очень большой (по моим меркам, около 2 тыс строк), разнообразных обслуживающих ява-скриптов более десятка, принципиальную схему железа я не делал. То есть не смогу помочь консультативно по большинству вопросов.
  • Сборка

    С самого начала я поставил себе цель - сделать законченное устройство, а не просто макет с ворохом проводочков на столе:

    И сразу же решил, что устройство это я хочу разместить внутри электрощитка. Там и питание, и счётчик, и вообще, это удобно.

    Для этого требовался динреечный корпус. Вначале думал разработать его и напечатать на 3D-принтере. Но, своего 3D-принтера у меня нет, а то, что печатают мои коллеги по работе на своих самосборных принтерах, меня совершенно не устраивало по качеству внешнего вида. Нашел в продаже готовые корпуса на DIN-рейку (разных размеров), выглядят хорошо, пользоваться удобно (разборные), да ещё и плата-слепыш под них специально имеется готовая.

    Купил самый большой корпус, чтобы в него вместилась не только Ардуино с изернет-шилдом, но еще и реле для коммутации нагрузки:

    Дальше был длительный и увлекательный процесс монтажа всей требухи в корпус. Под это дело я даже приобрёл себе замечательный паяльничек с функцией сна (имеющиеся у меня паяльники все были ещё советских времен):

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

    Для подключения проводов к верхним контактам пришлось использовать загнутые штырьки, иначе не влезало в корпус:

    Изолирующие шайбы местами приходилось подрезать:

    А местами изгаляться более извратно, поднимать винт на втулке, и вычурно подрезать втулку:

    Для одиночной релюшки не хватило точек опоры, поэтому повисла только на двух точках:

    Прикидочная сборка вместе с клеммными колодками:

    Потом поделка стала постепенно обрастать проводами. Плата была использована только для разводки питания и для подключений к клеммным колодкам. Для сигнальных связей использовал провод МС-16 (мне он больше нравится), для силовых он не проходил по напряжению (до 100 В), поэтому МГТФ:

    На лицевой панели закрепил светодиодики, токоограничивающие резисторы припаял прямо к ножкам светодиодов и закрыл термоусадкой:

    В итоге получилась вот такая бородатая начинка:

    А вот и платка с микросхемкой сторожевого таймера, приютилась в недрах моего творения, прямо над преобразователем уровней RS-485 - TTL:

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

    В коробочке:

    Отверстия под разъёмы Ардуины выпилил в пластиковой стенке корпуса. Сначала сделал отверстия точно по размерам разъёмов, но сборку в корпус нужно заводить по диагнонали (иначе просто никак) и разъёмы не проходили, пришлось расточить немного:

    Включение готового изделия на столе, всё заработало сразу:

    На лицевую панель вывел:

    • Четыре красных светодиода - индикация нагрузки;
    • Два зеленых - наличие связи со счётчиком и с VPN-сервером;
    • Два желтых - запасные;
    • Один желтый - индикация перезагрузки роутера;
    • Один красный - питание;
    • И кнопочка сброса.
    Для получения 5-ти вольт из 220-ти я использовал динреечный блок питания с подстройкой выходного уровня, питание подано непосредственно на микроконтроллер, минуя входной преобразователь из 7-12 в 5 вольт. Это было удобно по нескольким причинам. Во-первых, мощности встроенного преобразователя в какой-то момент стало не хватать, ток там ограничен. Во-вторых, питать реле всё равно нужно было 5-ю вольтами. В третьих, в щитке удобен динреечный форм-фактор с точки зрения монтажа. Поэтому вот:

    Испытания

    На столе всё было преверено, всё работало как надо, настала пора инсталлировать контроллер в щиток и проверить его в боевом режиме.

    Но сначала я подключил всё «на соплях», буквально затолкав всю требуху в другой щиток, слаботочный, чтобы протестировать работу термодатчиков в реальных условиях на длинных линиях, проложенных в одном кабель-канале с силовыми кабелями ~220В:

    Как можно заметить на фотке выше, доселе я пытался управлять перезагрузкой роутера по питанию с помощью «умной» розетки Senseit. Однако сей девайс безумной стоимостью в 5 тыс (на 2016 год) оказался на редкость глючным и капризным. За год использования не раз заставлял меня незапланированно приезжать на дачу в неурочное время, дабы вручную вывести это чудо инженерной и маркетинговой мысли из глубокого дауна в части GSM-связи. С переходом на свой Ардуино-контроллер, который оказался не в пример надёжнее, я с облегчением бросил это «профессиональное» барахло в красивой коробочке в ящик, и забыл про него.

    Тест прошёл успешно, сбоев не было, и можно было приступить к окончательной инсталляции в штатное место:

    Да-да, это щиток ABB TwinLine 800x300x225 IP55, стоимостью в 25 тыс. руб. без начинки (и начинка ещё на 15 тыс. примерно). И да, он установлен в бытовке 6х2. У всех свои тараканы. Да, собирал всю электрику сам . И бытовку строил тоже, да. Нет, я не электрик. И не строитель.

    В глубине щитка я расположил небольшой источник бесперебойного питания Powercom WOW 300 , вон там горит его зелёный светодиод, а левее и выше - его вилка входного питания:

    Его хватает на ~40 минут автономной работы Ардуино-девайса, роутера с USB-модемом и вайфаем, и Full HD IP-камеры наружного наблюдения.

    А здесь видны белые вилки питания двух бесперебойных потребителей - блок питания Ардуино и слаботочный щиток, где расположен роутер и блок питания камеры наружного наблюдения. Эта линия идёт с разрывом через контактор, которым управляет Ардуино, как раз для того самого программного вотчдога, перезагружающего роутер по питанию в случае падения VPN (камера перезагружается заодно, хотя ей это и не надо). Сверху к контроллеру подключены линии витых пар от датчиков температуры:

    Надо сказать, что маленьким синим китайским релюшечкам я бы никогда не доверил коммутацию мощной нагрузки, несмотря на вроде бы позволяющие это делать параметры этих релюшек. Поэтому сразу же было заложено использование нормальных модульных контакторов Legrand кат.№ 4 125 01 с возможностью ручного управления. То есть релюшки внутри корпуса контроллера управляют контакторами, а контакторы уже управляют нагрузкой. Это надёжно. А вот питание роутера и камеры осуществляется только лишь через эту маленькую синюю китайскую релюшку, ток там небольшой, поэтому можно.

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

    Думал уже, что всё пропало. Даже заказал твёрдотельные реле, но они, сволочи, больше по высоте, и в мою конструкцию уже не поместились бы. Но потом подумал, что может быть всё же помеху можно подавить. Опять погуглил, нашёл специальные помехоподавляющие конденсаторы (т.н. конденсаторы типа X). Просто подключил их параллельно управляющей обмотке контакторов, и о чудо! Зависания пропали полностью. За вот уже год эксплуатации ни одного случая не зарегистрировано:

    А вот таким образом можно заглянуть внутрь коробки:

    Ну и законченный вид щитка с пластроном (заглушек вот в комплекте не дали):

    Для дебага и перепрошивки кабель USB подключен к контроллеру и хранится внутри щитка за закрытой дверцей (изернет на этой фотке временно не подключен):

    Система работает уже почти год, пережила морозы до 20 градусов без проблем.

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

    Жизнь без интернета, бытовой техники, смартфонов представить сложно. Многие богатые люди в этот список добавили бы еще и систему «Умный дом». В статье разберем, что это, как ее установить и как пользоваться.

    Что за система?

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

    Что по факту представляет собой данная система? Это набор датчиков и контроллеров. Они существуют различных видов, поэтому могут реагировать как на движения, так и на тепловую энергию. Такие устройства способны контролировать работу дома: коммуникации, систему безопасности и так далее. Существуют и более «разумные» сооружения, которые могут самостоятельно включать отопление, запускать различные процессы и так далее. Каждый человек хочет прийти домой, где его будет ждать горячая ванная, разогретый ужин. «Умный» дом - самое лучшее решение для тех, кто живет один. Если нет средств на такую систему, то ее можно сделать самостоятельно.

    Как работают датчики?

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

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

    Перед тем как начать работать с системой в собственном здании, нужно создать проект, который позволит правильно распределить датчики и все возможные контроллеры. Важно отметить, что для этого нужно иметь навыки в области программирования и электроники. Если таковые отсутствуют, то следует предпочитать устройства простого плана, то есть созданные для потребителя-новичка. Именно такими являются системы «Ардуино». Производитель поставляет абсолютно простые в установке и эксплуатации приспособления.

    Почему «Ардуино»?

    Этот вопрос вполне логичный и понятный. Выше уже писалось о том, что компания выпускает простые для понимания системы, но это не единственная причина, по которой следует выбрать Arduino. Наборы для «Умного дома» приобрести можно в магазине или же заказать на сайте. Установку провести разрешается самостоятельно, но никто не откажет в предоставлении квалифицированного мастера. Он выполнит все работы без ошибок и не будет пренебрегать красивым оформлением (например, спрячет провода, а не «вывалит» их на всеобщее рассмотрение). Но большая часть клиентов все же решает проводить все работы самостоятельно. Почему? Это намного проще и дешевле. Все фирмы, которые выпускают подобные проекты, здорово накручивают цену и на словах завышают качество многих моделей. Описываемая компания таким не занимается. Отзывы в Интернете это подтверждают на все 100 %.

    Стоимость за комплектующие и установку системы Arduino (проекты «Умного дома» очень популярны) намного дешевле, чем у других производителей. Даже сама компания предлагает всю установку проводить самостоятельно, так как в случае поломки владелец должен разбираться в схемах и проекте в целом. Также, зная досконально систему, можно с легкостью и без труда подстроить ее под себя.

    На платформе Arduino имеется куча библиотек с поэтому найти себе подходящую программу не составит труда.

    Наборы

    В продаже имеются наборы «Умный дом». В них покупатель может найти все необходимые составляющие для создания автоматизированных систем в собственном доме: материнскую и макетную платы, электронные детали и правила по использованию. Этот набор научит человека правильно подключать диоды, включать устройства по хлопкам и управлять девайсами дистанционно.

    «Дерзай» создан для детей от 14 лет. В комплекте поставляется инструкция. С помощью набора можно создать пять готовых проектов: секундомер, ночник и так далее.

    Arduino Starter Kit - базовый набор, с которого все владельцы советуют начать ознакомление. В нем поставляется плата Arduino UNO, датчики, экран, резисторы и так далее. Стоит он около 80 евро.

    «Матрешка» предназначена для детей от 10 лет. Она продается в нескольких версиях, которые между собой отличаются количеством и типом деталей, соответственно, с помощью каждого из них можно осуществить совершенно отличные друг от друга эксперименты. Поставляется плата Arduino UNO Rev3, произведенная в Италии. С помощью этого набора можно сделать ночной светильник, миксер, тестер для батареек и так далее.

    «Амперка», как правило, приобретается для учебных учреждений. Она производится для детей от 12 лет. По окончании занятий дети смогут создать робота, который движется по прямой линии. Контроллер поставляется модели Arduino Uno.

    Наборы «Дерзай» («Умный дом») на Arduino на данный момент наиболее популярны.

    Платформы

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

    Arduino Leonardo стоит немного дешевле вышеописанного варианта. Дело в том, что, в отличие от Uno, его можно использовать как USB-устройство. Например, благодаря этой плате можно управлять мышью и клавиатурой.

    Почему чаще всего создается «Умный дом» на Arduino Mega2560? Она лишь немного внешне отличается от Uno, но имеет больший функционал. Используют ее зачастую для работы одновременно с большим количеством устройств. Соответственно с ней намного проще работать, когда речь идет о масштабных проектах. В целом если планируется создание «Умного дома», Arduino Mega - наиболее подходящий вариант.

    Преимущества системы

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

    Производитель предусмотрел возможность создавать собственные программы - исходный код открыт. Используемый язык максимально прост в освоении. Если есть необходимость, можно переносить программы при помощи USB-кабеля. Наборы «Умного дома» довольно интересны.

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

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

    Принципы работы

    Датчики передают информацию на компьютер или телефон при помощи технологии беспроводной передачи данных. Специальная утилита обрабатывает данные - выполняется команда. Имеется главный датчик (центральный), который можно либо приобрести, либо сделать самостоятельно. На платах Arduino (проекты «Умного дома разработаны на них) присутствуют стандартные разъемы. Благодаря этому можно с легкостью подобрать все комплектующие.

    Что необходимо для сборки?

    Если появилось желание собрать проект самостоятельно, то необходимо собрать некоторые устройства и взять приборы. Какие?

    • Датчики и контроллеры.
    • Интернет-модуль.
    • Витую пару (кабель).
    • Переключатель.
    • Резистор.
    • Провод для интернет-модуля.
    • Реле.

    Из принадлежностей понадобятся паяльник, отвертки и так далее.

    Наборы от компании Arduino нужно приобретать в проверенных магазинах. Почему? Все необходимые приборы нужны для работы с электричеством, именно поэтому подделки использовать опасно. Все необходимые утилиты можно скачать из Интернета. Поэтому довольно просто создать «Умный дом» своими руками на базе Arduino.

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

    Процесс установки

    Обратить внимание нужно на то, что «Умный дом» должен иметь лишь лампы светодиодного типа. Обычные варианты не смогут выдержать напряжения - либо лопнут, либо просто перегорят.

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

    Все работы можно представить поэтапно в виде алгоритма:

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

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

    Работа с роутером

    На роутере нужно открыть порт. Что следует сделать, чтобы выполнить это действие? Открыть меню конфигураций, написать сетевой адрес Arduino и активировать порт.

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

    Дистанционное управление

    Благодаря серверу компании можно связать всю технику между собой. Разрешается использовать облачные сервисы, которые позволяет визуализировать процессы. Благодаря Интернету можно полностью управлять своим домом. Включить/отключить бойлер или отопление можно, находясь на другом конце города.

    Имеется еще один способ, который поможет управлять домом, - СМС-сообщения. Не всегда бывает так, что имеется интернет-соединение, поэтому такой способ довольно актуален.

    Итоги

    Нужно обратить внимание на то, что «Умный дом» на базе Arduino не может работать с открытым сетевым адресом, так как иначе его будет легко взломать. Все здания, которые работают на «умной» системе, могут помогать экономить электроэнергию каждому человеку, а также правильно использовать все ресурсы. Главное, правильно подобрать все компоненты без каких-либо подделок.

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

    Система «Умный дом» на Arduino пользуется большим спросом у людей, стремящихся создать максимальный комфорт дома или в офисе.

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

    Одним из главных элементов системы умный дом в рассматриваемом варианте является Arduino. Что это такое? Как он работает? Какие функции выполняет? Все подробно мы рассмотрим в этой статье.

    Что такое Arduino?

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

    В основе платформы лежит открытый код, а само устройство построено на печатной плате с «вшитым» в ней программным обеспечением.

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

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

    Существует несколько моделей плат, самые распространённые из них – UNO, Mega 2560 R3.

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

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

    Сегодня Arduino используется при создании электронных систем, способных принимать информацию с различных датчиков (цифровых и аналоговых).

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

    Что касается плат, их можно собрать своими руками или же приобрести готовое изделие. Программирование Arduino производится на языке Wiring.

    ЧИТАЙТЕ ПО ТЕМЕ : , обзор, комплектация, подключение и настройка своими руками, сценарии.

    Чем управляет Arduino?

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

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

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

    Принцип работы системы

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

    Главную функцию выполняет центральный датчик, который можно приобрести или собрать самостоятельно. Разъемы на платах являются стандартными, что значительно упрощает выбор комплектующих.

    Питание

    Питание Arduino производится через USB разъем или от внешнего питающего устройства. Источник напряжения определяется в автоматическом режиме.

    Если выбран вариант с внешним питанием не через USB, можно подключать АКБ или блок питания (преобразователь напряжения). В последнем случае подключение производится с помощью 2,1-миллиметровго разъема с «+» на главном контакте.

    Провода от АКБ подключаются к различным выводам питающего разъема - Vin и Gnd.

    Для нормальной работы платформа нуждается в напряжении от 6 до 20 Вольт. Если параметр падает ниже 7 вольт, на выводе 5V может оказаться меньшее напряжение и появляется риск сбоя.

    Если подавать 12 В, возможен перегрев регулятора напряжения и повреждения платы. По этой причине оптимальным уровнем является питание с помощью 7 - 12 В.

    В отличие от прошлых типов плат, Arduino Mega 2560 работает без применения USB-микроконтроллера типа FTDI. Для обеспечения обмена информацией по USB применяется запрограммированный под конвертер USB-to-serial конвертер.

    ПОПУЛЯРНО У ЧИТАТЕЛЕЙ : .

    На Ардуино предусмотрены следующие питающие выводы:

    • 5V - используется для подачи напряжения на микроконтроллер, а также другие элементы печатной платы. Источник питания является регулируемым. Напряжение подается через USB-разъем или от вывода VIN, а также от иного источника питания 5 Вольт с возможностью регулирования.
    • VIN - применяется для подачи напряжения с внешнего источника. Вывод необходим, когда нет возможности подать напряжение через USB-разъем или другой внешний источник. При подаче напряжения на 2,1-миллиметровй разъем применяется этот вход.
    • 3V3 - вывод, напряжение на котором является следствием работы самой микросхемы FTDI. Предельный уровень потребляемого тока для этого элемента составляет 50 мА.
    • GND - заземляющие выводы.

    Принципиальную схему платы в pdf формате можно посмотреть .

    Связь

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

    Модель ATmega 2560 отличается наличием 4 портов, через которые можно передавать данные для TTL и UART. Специальная микросхема ATmega 8U2 на плате передает интерфейс (один из них) через USB-разъем. В свою очередь, программы на ПК получают виртуальный COM.

    Здесь имеются нюансы, которые зависят от типа операционной системы:

    • Если на ПК установлен Linux, распознавание происходит в автоматическом режиме.
    • Если стоит Windows, потребуется дополнительный файл.inf.

    С помощью утилиты мониторинга обеспечивается отправление и получение информации в текстовом формате после подключения к системе.

    Мигание светодиодов TX и RX свидетельствует о передаче данных. Для последовательной отправки информации применяется специальная библиотека Software Serial.

    К особенностям ATmega 2560 стоит отнести наличие интерфейсов SPI и I2C. Кроме того, в состав Ардуино входит библиотека Wire.

    Разработка проекта

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

    Какие проекты можно создавать на Arduino?

    Ардуино позволяет создавать множество уникальных проектов. Вот лишь некоторые из них:

    • Сборка кубика Рубика (система справляется за 0,887 с);
    • Контроль влажности в подвальном помещении;
    • Создание уникальных картин;
    • Отправка сообщений;
    • Балансирующий робот на двух колесах;
    • Анализатор спектра звука;
    • Лампа оригами с емкостным сенсором;
    • Рука-робот, управляемая с помощью Ардуино;
    • Написание букв в воздухе;
    • Управление фотовспышкой и многое другое.

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

    Рассмотрим ситуацию, когда необходимо сделать автоматику для дома с одной комнатой.

    Такое здание состоит из пяти основных зон - прихожей, крыльца, кухни, санузла, а также комнаты для проживания.

    При составлении проекта стоит учесть следующее:

    • КРЫЛЬЦО . Включение света производится в двух случая - приближение хозяина к дому в темное время суток и открытие дверей (когда человек выходит из здания).
    • САНУЗЕЛ . В бойлере предусмотрен выключатель питания, который при достижении определенной температуры выключается. Управление бойлером производится в зависимости от наличия соответствующей автоматики. При входе в помещение должна срабатывать вытяжка, и загорается свет.
    • ПРИХОЖАЯ . Здесь требуется включение света при наступлении темноты (автоматическое), а также система обнаружения движения. Ночью включается лампочка небольшой мощности, что исключает дискомфорт для других жильцов дома.
    • КОМНАТА . Включение света производится вручную, но при необходимости и наличии датчика движения эта манипуляция может происходить автоматически.
    • КУХНЯ . Включение и отключение света на кухне осуществляется в ручном режиме. Допускается автоматическое отключение в случае продолжительного отсутствия перемещений по комнате. Если человек начинает готовить пищу, активируется вытяжка.

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

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

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

    Визуальное программирование для Arduino можно осуществлять с помощью специального приложения FLProg, которое можно скачать с официального сайта http://flprog.ru/.

    Подбираем комплектацию под проект на примере Arduino Mega 2560 R3

    Для создания полноценной системы «Умный дом» и выполнения ею возложенных функций важно правильно подойти к комплектации и выбору оборудования.

    Что входит в комплект поставки?

    Если ваша цель - «Умный дом» на базе Arduino, требуется подготовить следующее оборудование - саму плату Mega 2560 R3, модуль Ethernet (ENC28J60), датчик движения, а также другие датчики и контроллеры.

    Кроме того, стоит подготовить кабель вида «витая пара», резистор, реле, переключатель и кабель для модуля Ethernet.

    Необходимы и дополнительные инструменты - отвертки, паяльники и прочее.

    Учтите, что покупать наборы для монтажа системы стоит в сертифицированных пунктах. Это объясняется тем, что при реализации проекта применяется электричество, а использование подделки может привести к снижению уровня безопасности.

    Все программы для адаптации можно найти в сети на официальном сайте Arduino http://arduino.ru. При выборе датчиков стоит ориентироваться на задачи, которая должен решать «Умный дом».

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

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

    Что касается ПО, которое применяется в Ардуино, оно написано на языке Си. На число байт имеются определенные ограничения, но текущей памяти достаточно для реализации поставленной задачи.

    Начало работы

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

    Этапы

    При организации системы «Умный дом» на базе Ардуино, стоит действовать по следующему алгоритму:

    • Инсталляция программного кода;
    • Конфигурация приложения под применяемое устройство;
    • Переадресация портов (для роутера);
    • Проведение тестов;
    • Внесение правок и так далее.

    В Сети имеется весь необходимый софт на применяемое оборудование - его достаточно скачать с официального сайта и установить (ссылку смотрите выше).

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

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

    Чтобы начать работать с Ардуино в Windows, сделайте следующие шаги:

    • Подготовьте необходимое оборудование - USB-кабель и Arduino.
    • Скачайте программу на странице arduino.cc/en/Main/Software.
    • Подсоедините плату с помощью USB-кабеля. Проследите, чтобы загорелся светодиод PWR.
    • Поставьте необходимый набор драйверов для работы с Ардуино. На этом этапе стоит запустить установку драйвера и дождаться завершения процесса.
      После жмите на кнопку «Пуск» и перейдите в панель управления. Там откройте вкладку «Система и безопасность» и выберите раздел «Система». После открытия окна выберите «Диспетчер устройств», жмите на название Ардуино и с помощью правой кнопки мышки задайте команду обновления драйвера. Найдите строчку «Browse my computer for Driver software!», кликните по ней и выберите соответствующий драйвер для вашего типа платы - ArduinoUNO.inf (находится в папке с драйверами). Это может быть UNO, Mega 2560 или другая.
    • Запустите среду разработки Ардуино, для чего дважды кликните на значок с приложением.
    • Откройте готовый пример (File - Examples - 1.Basics - Blink).
    • Выберите плату. Для этого перейдите в секцию Tools, а дальше в Board Menu.
    • Установите последовательный порт (его можно найти путем отключения и подключения кабеля).
    • Скачайте скетч в Ардуино. Кликните на «Upload» и дождитесь мигания светодиодов TX и RX на плате. В завершение система показывает, что загрузка прошла успешно. Через несколько секунд после завершения работы должен загореться светодиод 13 L (он будет мигать оранжевым). Если это так, система готова к выполнению задач.
    Работа с роутером

    Для полноценной работы «Умного дома» важно правильно обращаться с роутером. Здесь требуется выполнить следующие действия - открыть конфигурацию, указать адрес Arduino IP, к примеру, 192.168.10.101 и открыть 80-й порт.

    После требуется присвоить адресу доменное имя и перейти к процессу тестирования проекта. Учтите, что для такой системы запрещено применение открытого IP-адреса, ведь в этом случае высок риск взлома через Сеть.

    Расширение возможности на Ардуино

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

    Упомянутая программная технология применяется для решения интернет-задач, поэтому для визуализации «Умного дома» используется язык Java Script (именно с его помощью создается обработчик и сервер). Результаты можно увидеть на экране компьютера или ПК.

    Для реализации задуманного подойдет ноутбук, обычный ПК или Raspberry Pi. Применение такой системы позволяет увеличить ее возможности. Так, если на плате Ардуино имеется небольшой объем памяти, на сервере такие ограничения отсутствуют. Программа пишется таким образом, чтобы обеспечить полное управление платформой.

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

    Программа может запомнить время, когда владелец ложится отдыхать и отключать нагрев воды. Таких нюансов, которые при необходимости вносятся в программу, множество. Именно наличие внешнего ПК дает большие возможности контроллеру на Ардуино.

    Общение с Arduino

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

    Оформление и отправка сообщения контроллеру называется программированием. Чтобы упростить процесс, разработана среда Arduino IDE, в состав которой входит множество программ. Их изучение позволяет получить массу полезной информации о работе с Ардуино.

    Как можно управлять?

    Как отмечалось, сервер Node.js позволяет связать между собой оборудование в доме. Одним из способов управления процессами являются облачные сервисы в Сети. При этом включить отопление или бойлер можно за один-два часа до приезда.

    Еще один способ - управление с помощью сообщений (MMS или SMS). Этот вариант актуален в случае, когда нет связи с Интернетом. Одним из преимуществ системы является возможность получения информации о форс-мажорной ситуации (например, протечке). Здесь помогает плата Edison от компании Intel.

    В итоге, что мы получим?

    Сегодня Arduino востребовано среди людей, которые ничего не знают о программировании.

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

    Как видно, Ардуино - не просто плата, позволяющая подключить различные устройства. Это мощная база, которую можно использовать для создания «Умного дома». При этом нет нужды тратить большие деньги за дорогостоящие устройства, стоимость которых в 5-10 раз больше.

    Это и есть основные преимущества системы.

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

    Управление автоматикой возможно через Интернет или посредством сообщений. Так что Ардуино отлично подходит для создания устройств повышенной сложности.



    2024 stdpro.ru. Сайт о правильном строительстве.