Создание сигнализации на датчике движения arduino. Бюджетная GSM сигнализация с мозгами из Arduino

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

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


Для того, чтобы посетителям было удобнее просматривать сборку сигнализации, я решил поделить статью на 5 этапов:
Этап 1: Создание передатчика.
Этап 2: Создание приемника.
Этап 3: Установка программного обеспечения.
Этап 4: Тестирование собранных модулей.
Этап 5: Сборка корпуса и установка в него модуля.

Все что понадобилось автору, это:
- 2 платы ARDUINO UNO/ARDUINO MINI/ARDUINO NANO для приёмника и передатчика;
- RF приёмопередающий модуль (433 MHZ);
- PIR датчик движения;
- 9В батарейки (2 штуки) и коннекторы к ним;
- Зуммер;
- Светодиод;
- Резистор с сопротивлением 220 Ом;
- Макетная плата;
- Джамперы/провода/перемычки;
- Монтажная плата;
- Межплатные штыревые соединители;
- Переключатели;
- Корпуса для приёмника и передатчика;
- Цветная бумага;
- Монтажный скотч;
- Наборной скальпель;
- Термоклеевой пистолет;
- Паяльник;
- Кусачки /инструмент для снятия изоляции;
- Ножницы по металлу.


Этап 1.
Начинаем создание передатчика.
Ниже предоставлена схема работы датчика движения.


Сам передатчик состоит из:
- Датчика движения;
- Платы Arduino;
- Модуль передатчика.


Сам датчик имеет три вывода:
- VCC;
- GND;
- OUT.

После чего, проверил работу датчика


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

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


По схеме чуть ниже.


Передатчик имеет 3 вывода (VCC, GND, и Data), соединяем их:
- VCC > 5В выводом на плате;
- GND > GND ;
- Data > 12 выводом на плате.

Этап 2.


Сам приёмник состоит из:
- Модуля RF приёмника;
- Платы Arduino
- Зуммера (динамика).

Схема Приемника:


Приемник, как и передатчик, имеет 3 вывода (VCC, GND, и Data), соединяем их:
- VCC > 5В выводом на плате;
- GND > GND ;
- Data > 12 выводом на плате.


Этап 3.
Основой всей прошивки автор выбрал файл-библиотеки. Скачал, который он , и поместил его в папку с библиотеками Arduino.

ПО для передатчика.
Перед тем, как загружать код прошивки в плату, автор выставил следующие параметры IDE:
- Board -> Arduino Nano (или та плата, которую вы используете);
- Serial Port ->


После установки параметров, автор скачал файл прошивки Wireless_tx и загрузил его на плату:

ПО для приемника
Автор повторяет те же действия и для принимающей платы:
- Board -> Arduino UNO (или та плата, которую вы используете);
- Serial Port -> COM XX (проверьте com порт, к которому подключено ваша плата).



После того как автор установил параметры, скачивает файл wireless_rx и загружает его в плату:


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

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


Этап 5.
Финальная сборка передатчика
Сначала автор срезал выступающие выводы с приемника, передатчика, плат arduino, и т. д.


После чего, соединил плату arduino с датчиком движения и RF передатчиком при помощи джамперов.


Далее автор начал делать корпус для передатчика.

Сначала он вырезал: отверстие для выключателя, а также круглое отверстие для датчика движения,после чего приклеил его к корпусу.




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


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



Финальная сборка приемника
Автор решил соединить плату Arduino с монтажной платой резиновой лентой, а также установим RF приемник.


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


И приклеивает.


После чего, автор устанавливает на все детали джамперы.




Потом автор вставляет готовую плату в корпус, и фиксирует ее двухсторонним клеем.

Сегодня речь пойдет о том, как с помощью Ардуино собрать охранную систему . Наша «охрана» будет сторожить один контур и управлять одним оповещателем.

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

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

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

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

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

В качестве сирены предлагаю использовать оповещатель звуковой ПКИ-1 ИВОЛГА белорусского производства (рис. 5). Напряжение питания 9 - 15 В, рабочий ток 20 - 30 мА. Это позволяет использовать его с батарейным питанием. При этом он «выдает» 95 - 105 дБ.

При таких характеристиках от батарейки «Крона» он будет звучать несколько десятков минут. Я его нашел в интернете за 110 руб. Там же геркон с магнитом стоит около 30 руб. Выключатель от автосигнализации в автозапчастях был куплен за 28 руб. Транзистор КТ315 можно взять с любой буквой или заменить на любой современный маломощный кремниевый транзистор соответствующей проводимости. Если громкости одного оповещателя не хватит (кто знает, может, вы захотите, чтобы было слышно за многие километры), можно подключить несколько оповещателей параллельно или взять более мощный, только в этом случае и транзистор нужно заменить на более мощный (например, знакомую нам транзисторную сборку ULN2003). В качестве разъемов для подключения геркона и сирены я применил самые простые разъемы для аудио/видеоустройств - цена на радиорынке 5 руб. за пару.

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

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

Теперь код

// постоянные
const int button = 12; // пин для кнопки
const int gerkon = 3; // пин для геркона
const int sirena = 2; // пин упр-ния сиреной
const int led = 13; // пин индикатора
// переменные
int buttonState = 0; // состояние кнопки
int gerkonState = 0; // состояние геркона
int N = 0; // счетчик кнопки отключения охраны
void setup() {
// управление сиреной и индикатором - выход
pinMode(sirena, OUTPUT);
pinMode(led, OUTPUT); // кнопка и геркон - входы
pinMode(gerkon, INPUT);
pinMode(button, INPUT);
}
void loop(){
digitalWrite(led, HIGH);
while(buttonState= =0){ // цикл ожидания, пока не нажмем кнопку
buttonState = digitalRead(button); // для перехода в режим охраны
}
digitalWrite(led, LOW);
buttonState = 0; // обнуляем значение кнопки
while(gerkonState= =0){ // цикл, пока не закроем дверь

}
delay (500); // :-)
digitalWrite(sirena, HIGH); // Код
delay (100); // индикации
digitalWrite(sirena, LOW); // включения
delay (70); // режима
digitalWrite(sirena, HIGH); // охраны
delay (100); // оповещение
digitalWrite(sirena, LOW); // звуковое
while(gerkonState= =1){ // ждем открытия двери
gerkonState = digitalRead(gerkon);
}
for (int i=0; i <= 5; i++){ // 7,5 секунды на нажатие
buttonState = digitalRead(button); // секретной кнопки
if (buttonState = = HIGH) { // отслеживаем свой - чужой
N=N+1;
}
delay(1500); // секретная фича:-)))
}
if (N > 0) { // самое главное
digitalWrite(sirena, LOW); // не включаем сирену
}
else {
digitalWrite(sirena, HIGH); // или включаем сирену
}
digitalWrite(led, HIGH); // включаем индикатор N = 0;
buttonState = 0;
delay(15000); // напоминание «чайникам», которым нравится
digitalWrite(led, LOW); // давить на кнопки без перерыва delay (1000);

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

Датчик движения, или датчик перемещения - устройство (прибор) обнаруживающий перемещение каких либо объектов. Очень часто эти устройства, используются в системах охраны, сигнализации и мониторинга. Форм факторов этих датчиков существует великое множество, но мы рассмотрим именно модуль датчика движения для подключения к платам Arduino, и именно от фирмы RobotDyn. Почему именно этой фирмы? Я не хочу заниматься рекламой этого магазина и его продукции, но именно продукция данного магазина была выбрана в качестве лабораторных образцов благодаря качественной подаче своих изделий для конечного потребителя. Итак, встречаем - датчик движения (PIR Sensor) от фирмы RobotDyn:


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

Основные технические характеристики датчика движения(PIR Sensor):

Зона работы датчика: от 3 до 7 метров

Угол слежения: до 110 о

Рабочее напряжение: 4,5...6 Вольт

Потребляемый ток: до 50мкА

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

Инициализация устройства.

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

Угол и область обнаружения.

Угол обнаружения(слежения) составляет 110 градусов, диапазон расстояния обнаружения от 3 до 7 метров, иллюстрация ниже показывает всё это:

Регулировка чувствительности(дистанции обнаружения) и временной задержки.

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


Подключение датчика:

  • PIR Sensor - Arduino Nano
  • PIR Sensor - Arduino Nano
  • PIR Sensor - Arduino Nano
  • PIR Sensor - для датчика освещенности
  • PIR Sensor - для датчика освещенности

Типичная схема подключения дана на схеме ниже, в нашем случае датчик показан условно с тыльной стороны и подключен к плате Arduino Nano.

Скетч демонстрирующий работу датчика движения(используем программу ):

/* * PIR Sensor -> Arduino Nano * PIR Sensor -> Arduino Nano * PIR Sensor -> Arduino Nano */ void setup() { //Установить соединение с монитором порта Serial.begin(9600); } void loop() { //Считываем пороговое значение с порта А0 //обычно оно выше 500 если есть сигнал if(analogRead(A0) > 500) { //Сигнал с датчика движения Serial.println("Есть движение!!!"); } else { //Нет сигнала Serial.println("Всё тихо..."); } }

Скетч является обычной проверкой работы датчика движения, в нём есть много недостатков, таких как:

  1. Возможные ложные срабатывания, датчику необходима самоинициализация в течение одной минуты.
  2. Жесткая привязка к монитору порта, нет выходных исполнительных устройств(реле, сирена, светоиндикация)
  3. Слишком короткое время сигнала на выходе датчика, при обнаружении движения необходимо программно задержать сигнал на более долгий период времени.

Усложнив схему и расширив функционал датчика, можно избежать вышеописанных недостатков. Для этого потребуется дополнить схему модулем реле и подключить обычную лампу на 220 вольт через данный модуль. Сам же модуль реле будет подключен к пину 3 на плате Arduino Nano. Итак принципиальная схема:

Теперь пришло время немного усовершенствовать скетч, которым проверялся датчик движения. Именно в скетче, будет реализована задержка выключения реле, так как сам датчик движения имеет слишком короткое время сигнала на выходе при срабатывании. Программа реализует 10-ти секундную задержку при срабатывании датчика. При желании это время можно увеличить или уменьшить, изменив значение переменной DelayValue . Ниже представлен скетч и видео работы всей собранной схемы:

/* * PIR Sensor -> Arduino Nano * PIR Sensor -> Arduino Nano * PIR Sensor -> Arduino Nano * Relay Module -> Arduino Nano */ //relout - пин(выходной сигнал) для модуля реле const int relout = 3; //prevMillis - переменная для хранения времени предидущего цикла сканирования программы //interval - временной интервал для отсчета секунд до выключения реле unsigned long prevMillis = 0; int interval = 1000; //DelayValue - период в течение которого реле удерживается во включенном состоянии int DelayValue = 10; //initSecond - Переменная итерации цикла инициализации int initSecond = 60; //countDelayOff - счетчик временных интервалов static int countDelayOff = 0; //trigger - флаг срабатывания датчика движения static bool trigger = false; void setup() { //Стандартная процедура инициализации порта на который подключен модуль реле //ВАЖНО!!! - чтобы модуль реле оставался в первоначально выключенном состоянии //и не срабатывал при инициализации, нужно записать в порт входа/выхода //значение HIGH, это позволит избежать ложных "перещелкиваний", и сохранит //состояние реле таким, каким оно было до включения всей схемы в работу pinMode(relout, OUTPUT); digitalWrite(relout, HIGH); //Здесь всё просто - ждем когда закончатся 60 циклов(переменная initSecond) //продолжительностью в 1 секунду, за это время датчик "самоинициализируется" for(int i = 0; i < initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) > 500) { //Установить флаг срабатывания датчика движения if(!trigger) { trigger = true; } } //Пока флаг срабатывания датчика движения установлен while(trigger) { //Выполнять следующие инструкции //Сохранить в переменной currMillis //значение миллисекунд прошедших с момента начала //выполнения программы unsigned long currMillis = millis(); //Сравниваем с предидущим значением миллисекунд //если разница больше заданного интервала, то: if(currMillis - prevMillis > interval) { //Сохранить текущее значение миллисекунд в переменную prevMillis prevMillis = currMillis; //Проверяем счетчик задержки сравнивая его со значением периода //в течение которого реле должно удерживаться во включенном //состоянии if(countDelayOff >= DelayValue) { //Если значение сравнялось, то: //сбросить флаг срабатывания датчика движения trigger = false; //Обнулить счетчик задержки countDelayOff = 0; //Выключить реле digitalWrite(relout, HIGH); //Прервать цикл break; } else { //Если значение всё еще меньше, то //Инкрементировать счетчик задержки на единицу countDelayOff ++; //Удерживать реле во включенном состоянии digitalWrite(relout, LOW); } } } }

В программе присутствует конструкция:

unsigned long prevMillis = 0;

int interval = 1000;

...

unsigned long currMillis = millis();

if(currMillis - prevMillis > interval)

{

prevMillis = currMillis;

....

// Наши операции заключенные в тело конструкции

....

}

Чтобы внести ясность, было решено отдельно прокомментировать эту конструкцию. Итак, данная конструкция позволяет выполнить как бы параллельную задачу в программе. Тело конструкции срабатывает примерно раз в секунду, этому способствует переменная interval . Сначала, переменной currMillis присваивается значение возвращаемое при вызове функции millis() . Функция millis() возвращает количество миллисекунд прошедших с начала программы. Если разница currMillis - prevMillis больше чем значение переменной interval то это означает, что уже прошло более секунды с начала выполнения программы, и нужно сохранить значение переменной currMillis в переменную prevMillis затем выполнить операции заключенные в теле конструкции. Если же разница currMillis - prevMillis меньше чем значение переменной interval , то между циклами сканирования программы еще не прошло секунды, и операции заключенные в теле конструкции пропускаются.

Ну и в завершение статьи видео от автора:

Пожалуйста, включите javascript для работы комментариев. Кражи автомобилей на протяжении последнего десятилетия занимают одно из значимых мест в структуре совершаемых в мире преступлений. Это обусловлено не столько удельным весом данной категории хищений относительно общего количества преступлений, сколько существенностью причиняемого ущерба ввиду большой стоимости автомобилей. Слабая эффективность принимаемых мер в области борьбы с кражами автотранспорта к концу 90-х годов привела к созданию устойчивых групп, специализирующихся на совершении данных преступлений и обладающих отличительными чертами организованной преступности; вы наверняка слышали термин «черный автобизнес». Автомобильный парк европейских государств ежегодно не досчитывается ≈ 2 % машин, которые становятся предметом преступных посягательств. Поэтому мне пришла идея сделать gsm-сигнализацию для своего автомобиля на базе Arduino Uno.

Начнём!

Из чего будем собирать

Надо выбрать сердце нашей системе. На мой взгляд, для подобной сигнализации нет ничего лучше, чем Arduino Uno. Основной критерий - достаточное количество «пинов» и цена.


Основные характеристики Arduino Uno

Микроконтроллер - ATmega328
Рабочее напряжение - 5 В
Входное напряжение (рекомендуемое) - 7-12 В
Входное напряжение (предельное) - 6-20 В
Цифровые Входы/Выходы - 14 (6 из которых могут использоваться как выходы ШИМ)
Аналоговые входы - 6
Постоянный ток через вход/выход - 40 мА
Постоянный ток для вывода 3.3 В - 50 мА
Флеш-память - 32 Кб (ATmega328) из которых 0.5 Кб используются для загрузчика
ОЗУ - 2 Кб (ATmega328)
EEPROM - 1 Кб (ATmega328)
Тактовая частота - 16 МГц


Подходит!

Теперь необходимо выбрать gsm-модуль, ведь наша сигнализация должна уметь оповещать владельца автомобиля. Так, надо «погуглить»… Вот, отличный датчик - SIM800L, размер просто замечательный.


Подумал я и заказал его из Китая. Однако всё оказалось не так радужно. Датчик просто отказался регистрировать SIM-карту в сети. Было опробовано всё, что только возможно - результат нулевой.
Нашлись добрые люди, которые предоставили мне более крутую штуку - Sim900 Shield. Вот это уже серьёзный штучка. В Shield-е и разъём для микрофона и для наушников, полноценный телефон.


Основные характеристики Sim900 Shield

4 стандарта рабочей частоты 850/ 900/ 1800/ 1900 MHz
GPRS multi-slot класс 10/8
GPRS mobile station class B
Соответствует GSM phase 2/2+
Class 4 (2 W @850/ 900 MHz)
Class 1 (1 W @ 1800/1900MHz)
Управление с помощью AT команд (GSM 07.07 ,07.05 и SIMCOM расширенные AT команды)
Низкое энергопотребление: 1.5mA(sleep mode)
Диапазон рабочих температур: от -40°C до +85 °C


Подходит!

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

Думаю, что GY-521 MPU6050 точно подойдёт. Оказалось, что в нём есть и датчик температуры. Надо бы и его задействовать, будет такая «киллер фича». Предположим, что владелец автомобиля поставил его под домой и ушёл. Температура в салоне автомобиля будет изменяется «плавно». Что же будет, если злоумышленник попытается проникнуть в автомобиль? Например у него получится открыть дверь. Температура в автомобиле начнёт изменяться стремительно, так как воздух в салоне начнёт смешиваться с воздухом окружающей среды. Думаю, что будет работать.


Основные характеристики GY-521 MPU6050

Модуль 3-х осевого гироскопа + 3-х осевого акселерометра GY-521 на чипе MPU-6050. Позволяет определить положение и перемещение объекта в пространстве, угловую скорость при вращении. Так же имеет встроенный датчик температуры. Используется в различных коптерах и авиамоделях, так же на основе этих датчиков можно собрать систему захвата движений.

Микросхема - MPU-6050
Напряжение питания - от 3,5V до 6V (DC);
Диапазон гироскопа - ± 250 500 1000 2000 ° / с
Диапазон акселерометра - ± 2 ± 4 ± 8 ± 16g
Интерфейс связи - I2C
Размер - 15х20 мм.
Вес - 5 г


Подходит!

Также пригодится датчик вибраций. Вдруг автомобиль попытаются вскрыть «грубой силой», ну или на парковке другой автомобиль заденет вашу машинку. Возьмём датчик вибраций SW-420 (регулируемый).


Основные характеристики SW-420

Напряжение питания - 3.3 - 5В
Выходной сигнал - цифровой High/Low (нормально закрытый)
Используемый датчик - SW-420
Используемый компаратор - LM393
Размеры - 32x14 мм
Дополнительно - Есть регулировочный резистор.


Подходит!

Прикрутим модуль SD карты памяти. Будем ещё писать лог-файл.


Основные характеристики модуля SD карты памяти

Модуль позволяет хранить, читать и записывать на SD карту данные требуемые для работы прибора на основе микроконтроллера. Применение устройства актуально при хранении файлов от десятков мегабайт до двух гигабайт. На плате размещен контейнер SD карты, стабилизатор питания карты, вилка соединителя линий интерфейса и питания. Если требуется работать с звуковыми, видео или другими объемными данными, например, вести журнал регистрации событий, данных датчиков или хранить информацию веб-сервера, то модуль SD карты памяти для Arduino даст возможность применить SD карту для этих целей. С помощью модуля можно изучить особенности работы SD карты.
Напряжение питания - 5 или 3,3 В
Объем памяти SD карты - до 2 Гбайт
Размеры - 46 х 30 мм


Подходит!

И добавим сервопривод, при срабатывании датчиков будет поворачиваться сервопривод с видеорегистратором и снимать видео происшествия. Возьмём сервопривод MG996R.


Основные характеристики сервопривода MG996R

Стабильная и надежная защита от повреждений
- Металлический привод
- Двухрядный шарикоподшипник
- Длина провода 300 мм
- Размеры 40х19х43мм
- Масса 55 гр
- Угол поворота: 120 град.
- Рабочая скорость: 0.17сек/60 градусов (4.8В без нагрузки)
- Рабочая скорость: 0.13сек/60 градусов (6В без нагрузки)
- Пусковой момент: 9.4кг/см при питании 4.8В
- Пусковой момент: 11кг/см при питании 6В
- Рабочее напряжение: 4.8 - 7.2В
- Все детали привода выполнены из металла


Подходит!

Собираем

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

Доброе время суток 🙂 Сегодня поговорим о сигнализации. На рынке услуг полно фирм, организацией, которые занимаются установкой и обслуживанием охранных систем. Эти фирмы предлагают покупателю широкий выбор сигнализацией. Однако их стоимость далеко не копеечная. Но что же делать человеку, у которого не так уж и много личных средств, что можно потратить на охранную сигнализацию? Думаю, вывод напрашивается сам собой – сделать сигнализацию своими руками . В этой статье приведён пример того, как можно сделать свою собственную кодовую охранную систему используя плату Arduino uno и несколько магнитных датчиков.

Систему можно дезактивировать вводом пароля с клавиатуры и нажатием кнопки ‘* ‘. Если хотите изменить текущий пароль, можете сделать это нажав на клавишу ‘B ‘, а если хотите пропустить или прервать операцию, можете сделать это нажав на клавишу ‘#’. В системе есть зуммер для воспроизведения различных звуков при выполнении той либо иной операции.

Активируется система нажатием кнопки ‘A’. Система даёт 10 секунд на то, чтобы покинуть помещение. После прошествии 10 секунд сигнализация будет активирована. Количество магнитных датчиков будет зависит от вашего собственного желания. В проекте задействованы 3 датчика (для двух окон и двери). Когда окно открывается система активируется, и включается сигнал тревоги идущий с зуммера. Систему можно дезактивировать путем набора пароля. Когда открывается дверь, сигнализация даёт вошедшему 20 секунд для ввода пароля. Система использует ультразвуковой датчик, что может обнаруживать движение.

Видео работы устройства

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

Давайте начинать!

Шаг 1: Что нам будет нужно

  • плата Arduino uno;
  • высококонтрастный LCD дисплей 16×2;
  • клавиатура 4×4;
  • 10~20кОм потенциометр;
  • 3 магнитных датчика (они же герконы);
  • 3 2-х пиновых винтовых клеммы;
  • HC-SR04 ультразвуковой датчик;

Если вы хотите собрать систему без использования Arduino, вам также потребуется следующее:

  • DIP разъём для atmega328 + микроконтроллер atmega328;
  • 16MГц кварцевый резонатор;
  • 2 шт. 22pF керамических, 2 шт. 0.22uF электролитических конденсатора;
  • 1 шт. 10кОм резистор;
  • гнездо под питание (DC power jack);
  • макетная плата;
  • 5В блок питания;

И одна коробка, чтобы всё это упаковать!

Инструменты:

  • Что-то, чем можно разрезать пластиковую коробку;
  • Термоклеевой пистолет;
  • Дрель/шуруповерт.

Шаг 2: Схема сигнализации

Схема соединения довольно простая.

Небольшое уточнение:

Высококонтрастный LCD:

  • Pin1 — Vdd к GND;
  • Pin2 — Vss к 5В;
  • Pin3 — Vo (к центральному выводу потенциометра);
  • Pin4 — RS к 8 выводу Arduino;
  • Pin5 — RW к GND;
  • Pin6 — EN к 7 выводу Arduino;
  • Pin11 — D4 к 6 выводу Arduino;
  • Pin12 — D5 к 5 выводу Arduino;
  • Pin13 — D6 к 4 выводу Arduino;
  • Pin14 — D7 к 3 выводу Arduino;
  • Pin15 — Vee (к правому или левому выводу потенциометра) .

Клавиатура 4×4:

От левого к правому:

  • Pin1 к A5 выводу Arduino;
  • Pin2 к A4 выводу Arduino;
  • Pin3 к A3 выводу Arduino;
  • Pin4 к A2 выводу Arduino;
  • Pin5 к 13 выводу Arduino;
  • Pin6 к 12 выводу Arduino;
  • Pin7 к 11 выводу Arduino;
  • Pin8 к 10 выводу Arduino.

Шаг 3: Прошивка

В шаге представлен код, что используется встроенным !

Скачайте плагин codebender. Нажмите на кнопку «Run» в Arduino и прошейте свою плату этой программой. На этом всё. Вы только что запрограммировали Arduino! Если хотите внести изменения в код, нажмите кнопку»Edit».

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

Шаг 4: Изготавливаем собственную управляющую плату

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

Несколько советов, для более успешного завершения затеянного:

  • 10кОм резистор должен монтироваться между 1 (reset) и 7 (Vcc) выводами микроконтроллера Atmega328.
  • 16MГц кварцевый резонатор должен подсоединятся к выводам 9 и 10, отмеченными, как XTAL1 и XTAL2
  • Соедините каждый вывод резонатора с 22pF конденсаторами. Свободные выводы конденсаторов заведите на 8 вывод (GND) микроконтроллера.
  • Не забудьте соединить вторую линию питания ATmega328 с блоком питания, выводы 20-Vcc и 22-GND.
  • Дополнительную информацию по выводам микроконтроллера можете найти на втором изображении.
  • Если планируете использовать блок питания с напряжением выше 6В, необходимо воспользоваться линейный регулятором LM7805 и двумя 0.22uF электролитическими конденсаторами, которые следует смонтировать на входе и выходе регулятора. Это важно! Не подавайте больше, чем 6В на плату!!! В противном случае вы спалите свой микроконтроллер Atmega и LCD дисплей.

Шаг 5: Размещаем схему в корпусе

Просмотров