Реклама

Откријте покрет, а затим уплашите калупе из уљеза са високим звуковима аларма и треперећим лампицама. Да ли то звучи забавно? Наравно да има. То је циљ данашњег Ардуино пројекта, погодног за почетнике. Писаћемо у потпуности од нуле и тестирати док настављамо, тако да се можете надати да ћете имати неку идеју о томе како се све ради, а не да једноставно инсталирате нешто што сам већ направио.

Изјава о одрицању одговорности: ово заправо неће заштитити вашу кућу. То можда дај сестри грозан шок кад се ипак ушуља у твоју собу.

Мораћете:

  • Ан Ардуино
  • Ултразвучни сензор „пинга“, користим га ХЦ-СР04 ПИР би био бољи, али они су скупи. Сензор за пинг може се тачно поставити у врата и још увек обављати исти основни посао, и износи само 5 УСД
  • Пиезо зујалица
  • ЛЕД трака, са истим ожичењем као и ми назад у овом пројекту Изградите сопствену динамичку амбијенталну расвету за медијски центарАко гледате пуно филмова на рачунару или медијском центру, сигуран сам да сте се суочили са дилемом осветљења; да ли потпуно искључите сва светла? Да ли их држите у пуној експлозији? Или ... Опширније .
instagram viewer

Док спајате овај пројекат, не уклањајте све сваки пут - само наставите да градите на последњем блоку. До тренутка када стигнете до одељка „Кодирање аларма“ требали бисте ожичити све делове и делове, изгледајући овако:

завршено ожичење

Трептање светла

Користите дијаграм ожичења из овог пројекта Изградите сопствену динамичку амбијенталну расвету за медијски центарАко гледате пуно филмова на рачунару или медијском центру, сигуран сам да сте се суочили са дилемом осветљења; да ли потпуно искључите сва светла? Да ли их држите у пуној експлозији? Или ... Опширније да спојите своју ЛЕД траку; не мењајте игле јер нам треба ПВМ излаз. Употреба овај код да брзо тестирате ожичење. Ако све пође добро, требало би ово:

лед-ргб-тест

Сензор растојања

На СР04 модулу наћи ћете 4 пина. ВЦЦ и ГНД идите на + 5В шине и земље; ТРИГ да ли је пин кориштен за слање сонарног сигнала, ставите ово на пин 6; ОДЈЕК користи се за поновно читање сигнала (и стога израчунавање удаљености) - ставите ово на 7.

ср04

Да ствари буду невероватно једноставне, постоји библиотека коју можемо да користимо под називом НевПинг. Преузмите и ставите у Ардуино'с Библиотека директоријум и поново покрените ИДЕ пре наставка. Тест помоћу овај код; отворите серијски монитор и провјерите је ли брзина подешена на 115200 бауд. Уз мало среће, требали бисте видјети да се нека мјерења удаљености враћају прилично великом брзином. Можда ћете наћи варијанцу од 1 или 2 центиметра, али то је у реду. Покушајте да покренете руку испред сензора, померајући је горе-доле да бисте посматрали променљива очитања.

пинг-излаз

Код треба да буде прилично једноставан за разумевање. На почетку се налази неколико декларација релевантних игара, укључујући максималну удаљеност - овисно о томе тачан сензор који имате, али све док сте у могућности да прецизно очитате мање од једног метра, требало би да будете добро.

У петљи ове тестне апликације користимо пинг () функција за слање сонарног пинга, враћање вредности у милисекундама колико је требало да се вредност врати. Да бисмо то смислили, користимо НевПинг библиотеке изграђене у константу од УС_РОУНДТРИП_ЦМ, што дефинише колико микросекунди је потребно да пређете један центиметар. Такође постоји кашњење од 50 мс између пингова како бисте избегли преоптерећење сензора.

Пиезо Аларм

Пиезо кристални сензор је једноставан и јефтин звук, а ми можемо користити ПВМ пин 3 за прављење различитих тонова. Спојите једну жицу на пин 3, једну на уземљење - није битно која.

Употреба овај код тестирати.

Једини начин да се убије прилично гадан и гласан аларм је извлачење чепова. Код је мало сложен за објашњење, али укључује коришћење синусних таласа за стварање карактеристичног звука. Промешајте бројеве да бисте се играли различитим тоновима.

Кодирање аларма

Сада када имамо све делове ове слагалице, хајде да их комбинујемо.

Само напред и направи нову скицу, звану Алармни. Започните комбиновањем свих варијабли и дефиниција пин-а које смо до сада имали у огледним примерима.

#инцлуде  // Одаберите који ће се ПВМ-ови пинови користити. #дефине РЕД_ПИН 10. #дефине ГРЕЕН_ПИН 11. #дефине БЛУЕ_ПИН 9 #дефине ТРИГГЕР_ПИН 6 // Ардуино иглица везана за окидач на ултразвучном сензору. #дефине ЕЦХО_ПИН 7 // Ардуино иглица везана за ехо на ултразвучном сензору. #дефине МАКС_ДИСТАНЦЕ 100 // Максимална удаљеност за коју желимо да се пингамо (у центиметрима). #дефине АЛАРМ 3 плутајући синВал; инт тонеВал; 

Започните писањем основног подесити() функција - за сада ћемо се бавити само светлима. Додао сам кашњење у трајању од 5 секунди пре него што је главна петља покренута да бисмо имали мало времена да изађемо са пута ако је потребно.

воид сетуп () {// сет пинМодес за РГБ стрип пинМоде (РЕД_ПИН, ОУТПУТ); пинМоде (БЛУЕ_ПИН, ОУТПУТ); пинМоде (ГРЕЕН_ПИН, ОУТПУТ); // ресетује светла аналогВрите (РЕД_ПИН, 0); аналогВрите (БЛУЕ_ПИН, 0); аналогВрите (РЕД_ПИН, 0); кашњење (5000); }

Користимо помоћну функцију која нам омогућава брзо писање једне РГБ вредности на светла.

// помоћна функција која нам омогућава да пошаљемо боју у једној наредби. боја празнине (непотписана црвено црвена, неприлагођена зелено, неподписано плава) // функција генерисања боја. {аналогВрите (РЕД_ПИН, црвена); аналогВрите (БЛУЕ_ПИН, плава); аналогВрите (ГРЕЕН_ПИН, зелена); }

Коначно, наша петља засад ће се састојати од једноставног бљеска у боји између црвене и жуте боје (или, како год желите да буде ваш аларм - само промените РГБ вредности).

воид петље () {цолор (255,0,0); // црвено кашњење (100); боја (255,255,0); // жуто кашњење (100); }

Пренесите и тестирајте да бисте били сигурни да сте на правом путу.

А сад, интегришемо сензор удаљености како би активирали та светла само када нешто дође, рецимо, 50 цм (нешто мање од ширине оквира врата). Већ смо дефинисали праве игле и увезли библиотеку, па пре тога подесити() додајте следећу линију да бисте је инстанцирали:

НевПинг сонар (ТРИГГЕР_ПИН, ЕЦХО_ПИН, МАКС_ДИСТАНЦЕ); // НевПинг подешавање игле и максимална удаљеност. 

Испод тога додајте променљиву да бисте спремили стање аларма који се активирао или не, наравно, неиспуњено на лажно.

боолеан изазвано = лажно; 

Додајте линију у подесити() функцију тако да можемо надгледати излаз серијским и дебуг-ом.

Сериал.бегин (115200); // Отворите серијски монитор брзином од 115200 бауд-а да бисте видели резултате пинг-а. 

Затим преименујмо тренутну петљу у алармни() - ово ће се звати ако се аларм активирао.

неважећи аларм () {цолор (255,0,0); // црвено кашњење (100); боја (255,255,0); // ниже кашњење (100); }

Сада направите нови петља () функција, у којој дохватимо нови пинг, читамо резултате и активирамо аларм ако се нешто детектира у распону бројила.

воид петља () {иф (активирано == тачно) {аларм (); } елсе {кашњење (50); // Сачекајте 50 мс између пингова (око 20 пингова / сек). 29мс би требало да буде најкраће одлагање између пингова. непотписани инт уС = сонар.пинг (); // Пошаљите пинг, набавите време пинга у микросекундама (уС). непотписана инт раздаљина = уС / УС_РОУНДТРИП_ЦМ; Серијски.принтлн (удаљеност); ако је (удаљеност <100) {триггеред = труе; } } }

Допустите ми да вам укратко објасним код:

  • Започните провјером да ли се аларм активирао, и ако јесте, искључите функцију аларма (тренутно трепери лампице).
  • Ако се још није покренуло, узмите тренутно очитавање од сензора.
  • Ако сензор очитава <100 цм, нешто је подметало сноп (подесите ову вредност ако се очигледно активира прерано).

Покушајте сада да пробамо, пре него што додамо досадни пиштољ.

Рад? Велики. Сада додајмо овај звучни сигнал натраг Додати пинМоде до подесити() рутина.

пинМоде (АЛАРМ, ИЗЛАЗ); 

Затим додајте пиезо зујање петљи у функцију аларма ():

за (инт к = 0; к <180; к ++) {// претворити степене у радијане, а затим добити вриједност син синВал = (син (к * (3.1412 / 180))); // генерисати фреквенцију из вредности греха тонеВал = 2000+ (инт (синВал * 1000)); тон (АЛАРМ, тонеВал); }

Ако у овом тренутку покушате да саставите, наићи ћете на грешку - намерно сам ово оставио да бисте видели неке уобичајене проблеме. У овом случају, и НевПинг и стандардна библиотека тонова користе исте прекиде - они су у основи међусобно сукобљени и не можете много тога да поправите. Ох, Боже.

Без бриге. То је чест проблем, а неко већ има решење - преузми и додај ово НевТоне у мапу Ардуино Либрариес. Прилагодите почетак свог програма тако да укључите ово:

#инцлуде 

И подесите линију:

 тон (АЛАРМ, тонеВал); 

до

 НевТоне (АЛАРМ, тонеВал); 

уместо тога.

То је то. Подесите свој аларм на вратима ваше спаваће собе за наредног несретног провалника.

Или, безвезни пас, који је изгледао потпуно нерасположен алармом.

Имате проблема са кодом? Ево комплетна апликација. Ако вам се јављају насумичне грешке, покушајте да их залепите у наставку и видећу да ли могу да вам помогнем.

Кредитна слика: Противпожарни аларм преко Флицкр

Јамес има диплому о вештачкој интелигенцији и сертификат је ЦомпТИА А + и Нетворк +. Он је водећи програмер МакеУсеОф-а и своје слободно време проводи играјући ВР паинтбалл и таблегамес. Градио је рачунаре још од детета.