реклама

Искали ли сте някога да се приберете вкъщи за лично посрещане? С Raspberry Pi и няколко прости компонента можете! В този прост проект ще използваме тръстиков превключвател, за да задействаме тематична мелодия при отваряне на врата. Тук ще използваме Raspberry Pi като контролер, въпреки че можете да използвате почти всеки друг микроконтролер $ 5 Микроконтролери: Arduino, Raspberry Pi Zero или NodeMCU?Случвало се е, че ако искате да си вземете компютър, ще трябва да презапишете къщата си, за да я платите. Сега можете да вземете такъв за Ейбрахам Линкълн. Прочетете още за този проект, използвайки същата схема. Ето демонстрация

Ще имаш нужда

Вероятно вече притежавате всички части, от които се нуждаете, за да направите това, с изключение на превключвателя на тръстика, който е около $ 2–3, или можете да получите пакет от 5 за малко над $ 8 тук.

  • Raspberry Pi (всеки модел ще работи за това).
  • 1 x 220 Ohm резистор.
  • 1 x 1K Ohm резистор.
  • 3 x 10K Ohm резистор.
  • 1 x магнитен тръстов превключвател.
  • 1 x LED.
  • 2 x превключвател с бутон.
  • Breadboard.
  • Закачащи кабели.
  • Компютърен говорител или подобен.
instagram viewer

Ще използваме Raspberry Pi, за да възпроизведем песен, когато влезе в стаята, и да проектираме схема с бутони на нашата дъска, за да я активираме със закъснение и да спрем програмата.

Този проект, въпреки че е направен предимно за забавление, обхваща основите на много приложения в Направи си домашна автоматизация Ръководство за домашна автоматизация с Raspberry Pi и ArduinoПазарът на домашна автоматизация е залят от скъпи потребителски системи, несъвместими помежду си и скъпи за инсталиране. Ако имате Raspberry Pi и Arduino, можете основно да постигнете същото нещо при ... Прочетете още и също Направи си домашна сигурност Търсите решение за собствена система за домашна сигурност? Опитайте едно от тяхВ ерата на дигиталните технологии и винаги свързан хардуер, създаването на система за охрана на дома трябва да надхвърли изкуството да поставите кутия с алармена форма на стената. Прочетете още

Приготвяме се да започнем

Нека започнем, като направим нашата схема. Уверете се, че вашият Pi не е захранван и настройте схемата си така:

Замразяване на анотиран HQ

Светодиодът е свързан към пин 7 на нашия пи. Двата бутона на бутоните са прикрепени към щифтове 11 и 13, а тръбният превключвател се свързва към щифт 15. Нашата мощност отива към пин 1 (3v3) и щифт 6 (Gnd).

пинов диаграма

Не забравяйте да проверите дали всичко е на точното място.

Докато тествате този проект, той може да ви помогне да задържите превключвателя на тръстика пред вас, за да можете лесно да го включите или изключите. В този случай тръстовият превключвател вече беше инсталиран над вратата. След като проектът ви стартира, можете или да прикрепите временно превключвателя към вратата си, като използвате лента или ако се чувствате по-уверени можете да го прикрепите по-трайно за използване в бъдеще проекти!

инсталиран е тръстов превключвател

Свържете 3,5-милиметровия изход на Pi Pi към вашата високоговорителна система. След като всичко е събрано, трябва да изглежда така:

цялата настройка правилна

Имайте предвид, че използваната тук дъска има силни релси обратно на диаграмата на Fritzing по-горе.

Сега захранвайте вашия Pi и достъп до него, използвайки SSH, за да можем да имаме достъп до терминала. Ако не сте сигурни как да направите това, това ръководство Настройка на вашия Raspberry Pi за употреба без глава с SSHRaspberry Pi може да приема SSH команди, когато е свързан към локална мрежа (или чрез Ethernet или Wi-Fi), което ви позволява лесно да го настроите. Предимствата на SSH надхвърлят разстройството на ежедневния скрининг ... Прочетете още може да ви помогне. Ако използвате Raspberry Pi с монитор, мишка и клавиатура, пропуснете тази стъпка и отворете терминала.

Преди да започнете, струва си да проверите дали сте в течение. Тип sudo apt-get update в терминала.

Сега можем да преминем към това да накараме нашия Pi да говори с нашата верига.

Тестване на нашата настройка

За начало, нека проверим нашата схема с помощта на проста програма. Ако сте уверени, че сте свързвали всичко досега, можете да пропуснете тази стъпка, въпреки че бих го препоръчал, тъй като по-късно може да спести главоболие.

Ако никога досега не сте програмирали в Python и се чувствате малко запленени, има множество страхотни уебсайтове 5-те най-добри уебсайта за научаване на програмиране на PythonИскате ли да научите програмиране на Python? Ето най-добрите начини да научите Python онлайн, много от които са напълно безплатни. Прочетете още това може да ви помогне да започнете.

В терминала създайте нов скрипт:

nano test.py

След отваряне добавете този код към файла и натиснете Ctrl-C, за да излезете, следвайки диалога за запазване:

# Този код беше написан за статия на www. MakeUseOf.com от Иън Бъкли. импортиране на RPi. GPIO като GPIO. време за внос. GPIO.setwarnings (невярно) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN), докато True: GPIO.output (7, GPIO.HIGH), ако (GPIO.input (11) == 1): print ("Бутон за GPIO 11") time.sleep (1 ) ако (GPIO.input (13) == 1): print ("Бутон за GPIO 13") time.sleep (1) if (GPIO.input (15) == 1): print ("Бутон в GPIO 15") време .спи (1) GPIO.cleanup ()

Този код чете стойността на бутоните и отпечатва на екрана, когато се променят. Двата натискащи бутона имат издърпващи се резистори, така че отчитат ВИСОКО при натискане. Превключвателят на тръстиковия магнит докладва ВИСОКО, когато придружаващият го магнит е близо.

превключватели

Стартирайте програмата:

python test.py

Трябва да видите LED светлината и да докладвате на екрана, когато натиснете двата си бутона и издърпате магнита далеч от тръстиковия превключвател. Ако не получавате обратна връзка при натискане на бутони, проверете отново схемата си и се уверете, че всичко е свързано както трябва. Когато приключите с тестването, натиснете CTRL-C за да спрете програмата.

тест

Сега можем да съставим проста програма за настройка, задействане и нулиране на сензора на вратата. Ще разгледаме кода на части и ще обясним накратко какво прави всяка част, въпреки че ако искате да видите пълния код, превъртете надолу, за да го видите представен изцяло.

Трябва да започнем с импортирането на някои модули:

импортиране на Rpi. GPIO като GPIO. импортиране на pygame.mixer. време за внос. 

Ще използваме Pygame модул за възпроизвеждане на нашата музика. Той се предлага стандартно с Raspbian Jessie и е чудесна библиотека за всичко необходимо за създаване на Python игри и много други невероятни проекти Как да изградим Raspberry Pi Twitter BotTwitter е най-голямото хранилище на кратки съобщения в света от хора, които няма какво да кажат - и сега вие също можете да допринесете за този епичен проект с автоматизиран бот в Twitter, задвижван от вашия Малина ... Прочетете още .

Ще използваме променлива, наречена активен да решим дали нашата система е активна или не. Нека определим няколко функции, които ще направят това за нас:

def activeSetup (): глобален активен активен = 0 печат ("В момента не е активен") def activeState (): глобален активен, ако активен == 1: активен = 0 GPIO.output (7, GPIO.LOW) печат ("В момента не е активен") elif active == 0: print ("Активиране за 10 секунди") за x в обхват (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) print („В момента Активно ") друго: връщане. 

Първата функция тук създава променлива с име активен, и го задава на 0. Предаването на активно състояние на числова стойност означава, че ако планирате по-късно да увеличите мащаба на програмата си, за да има различни активни състояния, можете да ги номерирате съответно. Въпреки че може да не е най-доброто Python програмиране в света, това ще е повече от достатъчно за този проект.

Втората функция при извикване проверява дали системата е активна (или активен == 1). Ако е, тя настройва системата да не е активна (активен == 0), изключва светодиода и отпечатва на конзолата. Ако не е, той ви отброява 10 секунди, за да излезете от стаята, в която мига светодиодът, преди да останете включен, за да покажете, че системата е активна.

Сега можем да дефинираме функция, която ще наблюдава превключвателя ни с тръстиков магнит:

def watchDoor (): игра в глобален мач = False докато True: ако е активна == 1 и GPIO.input (15) == 1 и играе == False: игра = True pygame.mixer.music.play () ако GPIO.input (13) == 1: печат ("Натиснат бутон за спиране: Излизане") pygame.mixer.music.stop () прекъсне, ако GPIO.input (11) == 1: activeState () time.sleep (0.5)

Тук създаваме друга променлива игралното - това е просто, за да спрете програмата да се опитва да започне да играе многократно, когато превключвателят се задейства.

Вътре, докато цикълът, първото, ако изявление стартира музиката (която все още нямаме, но не се притеснявайте, тя идва). Той пуска музиката само ако системата е активна, превключвателят на тръстика е отворен и вече не свири.

Второто, ако изявлението е за нашия изходен бутон. Ако натиснете този бутон, музиката спира и програмата излиза.

Третото, ако операторът е за превключване дали системата е активна или не. Най- time.sleep Функцията тук е да се предотвратят няколко отчитания на бутона при натискане.

Сега е време да настроите пиновете на Пи.

GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, начален = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN)

Ако сте правили експерименти с Pi преди това, това трябва да ви е познато. Най- първоначалните = GPIO.LOW аргументът в настройката на пин 7 го поставя на ниско, веднага щом се инициализира.

Сега можем да извикаме нашата функция, която ще настрои системата да не е активна при стартиране на програмата.

activeSetup ()

Музика Маестро!

В този момент трябва да започнем да мислим за музиката, която да свирим. Можете да изберете всеки музикален файл, който желаете, но за сега ще изберем нещо, достъпно за всички. Ако гледате YouTube, вероятно вече сте запознати с музиката на Кевин Маклеод. Нека изтеглите фантастична мелодия, наречена от него „Маестро с едно око“. Това, заедно с голяма част от музиката на неговия сайт, е лицензирана под Creative Commons и има много добри причини Какво представлява Creative Commons и нетърговската употреба?Какво е Creative Commons? Какво означава "нетърговска употреба"? Научете за лицензите на Creative Commons и как работят. Прочетете още да използвате съдържание с тези лицензи за вашите проекти.

Wget

Върнете се в нашия код, трябва да стартираме миксера Pygame и да заредим нашата мелодия.

pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Maestro с едно очи .mp3" pygame.mixer.music.load (име) print ("Заредена песен -" + str (име))

Първият ред на този блок инициира Pygame миксер. Последният аргумент в скобите е буферът, който контролира латентността, в която се възпроизвежда звукът. Ако получите по-късо възпроизвеждане по-късно, когато музиката ви свири, опитайте да увеличите това число до 4096. Настройките, тъй като те работят без проблем на Pi 3.

Ако сте изтеглили музикалния си файл в друга директория към вашата door.py програма, ще трябва да предоставите пълния път вътре в скобите, когато дефинирате променливата име.

Сега всичко, което ни остава, е да настроим цикъл, който ни чака или да настроим програмата активна, или да излезем от нея.

докато True: if (GPIO.input (13) == 1): print ("Натиснете бутона за спиране: Излизане") pygame.mixer.music.stop () почивка ако (GPIO.input (11) == 1): activeState () time.sleep (0.5), ако (active == 1): watchDoor () break GPIO.cleanup ()

Това, докато цикълът чака въвеждане от който и да е от бутоните, и извежда или променя съответно състоянието на активно. Ако състоянието на активното стане 1, тогава watchDoor Функцията, която сме дефинирали по-рано, се обажда и следващия път, когато вратата отвори нашата мелодия ще играе. Ние също се обаждаме GPIO.cleanup () да нулираме щифтовете си при излизане, което по принцип е добра практика за всички програми на Raspberry Pi.

Това е всичко, което трябва да направим, за да стартираме и стартираме този проект, ето кода в пълен размер:

импортиране на RPi. GPIO като GPIO. импортиране на pygame.mixer. време на импортиране def activeSetup (): глобален активен активен = 0 печат ("в момента не е активен") def activeState (): глобален активен, ако е активен == 1: active = 0 GPIO.output (7, GPIO.LOW) print ("В момента Не Active ") elif active == 0: print (" Активиране за 10 секунди ") за x в обхват (0,10): GPIO.output (7, GPIO.HIGH) time.sleep (0.5) GPIO.output (7, GPIO.LOW) time.sleep (0.5) active = 1 GPIO.output (7, GPIO.HIGH) печат ("В момента активен") друго: връщане на def watchDoor (): глобална игра игра = Грешно, докато вярно: ако е активна == 1 и GPIO.input (15) == 1 и играе == Грешно: игра = Истина pygame.mixer.music.play () ако GPIO.input (13) == 1: печат ("Натиснат бутон за спиране: Излизане") pygame.mixer.music.stop () прекъсне, ако GPIO.input (11) == 1: activeState () time.sleep (0.5) GPIO.setmode (GPIO.BOARD) GPIO.setup (7, GPIO.OUT, начален = GPIO.LOW) GPIO.setup (11, GPIO.IN) GPIO.setup (13, GPIO.IN) GPIO.setup (15, GPIO.IN) activeSetup () pygame.mixer.init (44100, -16,2,1024) pygame.mixer.music.set_volume (1.0) name = "Maestro с едно очи .mp3" pygame.mixer.music.load (име) print ("Заредена песен -" + str (име)), докато True: if (GPIO.input (13) == 1): print ("Натиснете бутона за спиране: Излизане") pygame.mixer.music.stop () почивка ако (GPIO.input (11) == 1): activeState () time.sleep (0.5) if (active == 1): watchDoor () break GPIO.cleanup ()

Ако превъртите тук долу, за да вземете веднага целия код, имайте предвид, че все пак ще трябва да изтеглите музиката на вашия Pi, за да работи!

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

Този проект покри основите за много форми на домашен мониторинг, сигурност и автоматизация и се надяваме да е и забавно!

Сега, след като сте стигнали дотук, защо да спирате дотам? Можете да добавите още песни и да накарате програмата да избере едно произволно от списък. Можеш добавете реле Първи стъпки с GPIO на Raspberry PiАко все пак Arduino беше готин, просто изчакайте, докато се хванете за Raspberry Pi - тези неща са невероятни. Освен че са напълно функционален компютър, те имат и ... Прочетете още и имат ли други обекти да се задействат при влизане. Ако имате домашна музикална система, защо да не имате тема песен за всяка стая?

реле светлини

Ще проектирате ли ваше лично съобщение за домашно приветствие? Били ли сте изобретателни с тръстикови превключватели в дома си по други начини? Ако е така, оставете коментар за това, което планирате или вече сте направили в секцията за коментари по-долу!

Иън Бъкли е журналист на свободна практика, музикант, изпълнител и продуцент на видео, живеещ в Берлин, Германия. Когато не пише или е на сцената, той се занимава с „Направи си сам“ електроника или код с надеждата да стане луд учен.