Мазмұны:
- 1 -қадам: бөлшектер тізімі
- 2 -қадам: Raspbian -ды күйдіріп, тақталарды қосыңыз
- 3 -қадам: Қажетті бағдарламалық қамтамасыз етуді орнату
- 4 -қадам: Кейбір кодты жазу және оны тексеру
- 5 -қадам: Бұл сценарийлерді Cron -ге қосу
- 6 -қадам: Phat динамигін тексеру
- 7 -қадам: Шағын веб -сервер мен веб -қосымшаны орнату
- 8 -қадам: веб -сайт құру
- 9 -қадам: Барлығын бір істе жинаңыз
- 10 -қадам: Міне
- 11 -қадам: Қосымша
Бейне: Ақ шуыл түнгі жарық: 11 қадам (суреттермен)
2024 Автор: John Day | [email protected]. Соңғы өзгертілген: 2024-01-30 10:24
Бұл менің 1 жасар балама Рождество мерекесіне арнап жасаған жоба. Шынымды айтсам, бұл мен үшін және әйелім үшін ақылға сый болды. Бұл веб -интерфейс арқылы таңдалған бірнеше түрлі дыбыстарды ойнай алатын, сонымен қатар уақытына байланысты түсі өзгеретін шамдарды қосатын ақ шуыл машинасы (қызыл шамдар төсекте болуды білдіреді, сары - сіздің бөлмеңізде ойнай аласыз, ал жасыл - бұл жақсы) шығу үшін). Менің балам уақытты айтуға тым кішкентай болғандықтан, түске негізделген түнгі жарық шынымен жақсы идея болып көрінді.
Бұл өте оңай жоба, мен кодты жазғандықтан, бұл қиындық шкаласы бойынша 5 -тен 1 болуы мүмкін. Егер сізде балаларды таңертең ерте мазалайтын балалар болса, сіз оны жасағыңыз келеді.
1 -қадам: бөлшектер тізімі
1. Raspberry Pi Zero W
2. Қандай да бір іс (мен мұны Amazon -дан қолдандым)
3. Пиморониден Блинкт
4. Pimoroni -ден Phat динамигі (Сіз сондай -ақ арзан динамиктермен басқа DAC -ты қолдана аласыз)
Динамикті біріктіру үшін сізге дәнекерлеудің кейбір қарапайым дағдылары қажет болады, өнім бетінде қадамдық нұсқаулық бар, сондықтан оны бұрап алмайсыз.
5. [ҚОСЫМША] Панельдік микро USB кабелі - Adafruit компаниясынан
6. кейбір байланыстырушы сымдар немесе секіргіштер
Міне бітті!
2 -қадам: Raspbian -ды күйдіріп, тақталарды қосыңыз
Мен бұл құрастыру үшін Raspian Stretch lite қолданамын. Сондықтан оны кез келген құралмен microSD -ге жазыңыз, содан кейін пиді отқа салыңыз. Егер сізге үйдің Wi -Fi желісіне қосылуға және ssh қосуға басы жоқ пи алуға көмек қажет болса, Интернетте мұны қалай жасауға болатынын көрсететін көптеген оқулықтар бар, бірақ сіз мұны қалған уақыт ішінде орындағаныңызға көз жеткізуіңіз керек. жұмыс істеу.
Http://pinout.xyz көмегімен сіз екі тақтаны да тартып, олардың тораптарын осы сайттан ала аласыз. Blinkt тақталары тек 4 қосылымды қажет етеді, ал динамик Phat 9 қажет.
Аяқтағаннан кейін фотосуретке ұқсас болуы керек. Енді біз бәрі жұмыс істейтінін тексеруіміз керек.
3 -қадам: Қажетті бағдарламалық қамтамасыз етуді орнату
Біз қосылғаннан кейін Blinkt және Speaker Phat тақталарын іске қосу үшін қажетті бағдарламалық жасақтаманы орнатуымыз қажет. SSH -ге кіріңіз, сонда сіз үй каталогында боласыз. Мынаны енгізіңіз:
бұйра https://get.pimoroni.com/blinkt | bash
содан кейін бұл аяқталғаннан кейін:
curl -sS https://get.pimoroni.com/speakerphat | bash
Бұл Pimoroni тақталарына қажет нәрсенің бәрін орнатады. Егер сіз ls командасын енгізсеңіз, сіз Pimoroni каталогын көресіз. Енді код жазып, Блинкт тақтасын тексерейік.
4 -қадам: Кейбір кодты жазу және оны тексеру
Mkdir сценарийлерін теру арқылы «сценарийлер» деп аталатын каталог жасаңыз, сонда біз іске қосу үшін қажет нәрсенің бәрін сақтаймыз. Бұл қалтаға кіру үшін CD сценарийлері.
Бізге қажет нәрсе - түнгі уақытта қызыл күңгірт шамдар, тыныш ойнауға арналған сары күңгірт шамдар және сыртқа шыққанда сәл ашық жасыл шамдар. Мен үшін кешкі 19: 30 -дан таңғы 6: 15 -ге дейін қызыл шамдар қажет болды, ал таңғы 6: 15 -те олар бір сағат бойы сарыға, сосын 7: 15 -те жасылға айналады. Мен олардың таңертеңгі сағат 8.30 -да бөлмеде ешкім болмайтын кезде сөндірілуін қаладым.
Мұны істеудің екі әдісі бар. Біріншісі (мен таңдаған әдіс) - cron тапсырмаларынан тұратын төрт түрлі сценарий. Мұны істеудің екінші әдісі - іске қосылған кезде орындалатын уақыт функциясын қамтитын бір сценарий. Мен сценарийді алдымен осылай жасау үшін жаздым, бірақ бұл оны cron -ға қарағанда тиімді емес сияқты көрінді, сондықтан мен оны ауыстырдым. Егер сіз «бір сценарий» әдісін алғыңыз келсе, маған хабарлаңыз, мен оны түсініктемелерде жаза аламын.
Сонымен, қызыл жазудан бастайық. Touch red.py, содан кейін nano red.py теріңіз. Содан кейін келесі кодты енгізіңіз.
#!/usr/bin/env python
blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.3) blinkt.set_pixel (3, 128, 0, 0) blinkt.set_pixel (4, 128, 0, 0))
Yellow.py және green.py үшін де солай жасаңыз.
yellow.py:
#!/usr/bin/env python
blinkt blinkt.set_clear_on_exit (жалған) blinkt.set_brightness (0,2) blinkt.set_pixel (2, 128, 128, 0) blinkt.set_pixel (3, 128, 128, 0) blinkt.set_pixel (4, 128, 128, 0) blinkt.set_pixel (5, 128, 128, 0) #2, 3, 4 және 5 пикселдерін сарыға blinkt.show () мәніне қояды
green.py:
#!/usr/bin/env python
импорт blinkt blinkt.set_clear_on_exit (Жалған) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #барлық пикселдерді жасыл blinkt.show () етіп орнатады
Ақыр соңында, біз қажет болмаған кезде Блинкті тазартатын сценарийді қалаймыз (lightsout.py):
#!/usr/bin/env python
импорт blinkt blinkt.set_clear_on_exit (True) blinkt.set_brightness (0.1) blinkt.set_all (0, 0, 0) #барлық пикселдерді blinkt.show () өшіруге орнатады
Міне бітті. Python red.py теріп, екі орта пиксель қызыл түспен жанатынын тексеріңіз. Содан кейін оны тазарту үшін python lightsout.py теріңіз. Міне бітті! Содан кейін біз оларды cron қойындысына орнатуымыз керек, олар біз қалаған уақытта жұмыс істейді.
5 -қадам: Бұл сценарийлерді Cron -ге қосу
SSH терминалында crontab -e типті
файлдың соңына жылжып, келесі жолдарды қосыңыз:
15 6 * * * python /home/pi/scripts/yellow.py15 7 * * * python /home/pi/scripts/green.py 30 8 * * * python /home/pi/scripts/lightsout.py 30 19 * * * python /home/pi/scripts/red.py
Бұл сценарийлерді алдыңғы қадамда сипатталған уақытта іске қосады, әрі қарай жалғастырыңыз және оларды сіздің қажеттіліктеріңізге сәйкес реттеңіз.
Бұл түнгі жарық үшін! Супер жеңіл. Енді осы құрылыстың ақ шу бөлігін орнатуға көшейік.
6 -қадам: Phat динамигін тексеру
Динамик Phat -ті тексерудің ең оңай жолы - sox орнату және пәрмен жолынан статиканы іске қосу.
sudo apt-get sox орнатыңыз
Орнатылғаннан кейін біз бірнеше ойнату үлгісін қолдана аламыз. Бұл толқын сияқты естілуі керек.
play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 трапеция амод 0.1 30
Қандай тыныштандырады! Ctrl+c оны тоқтатады. Бірақ, бұл не? Динамик Phat динамигінің алдында көптеген жарық диодтары бар, және біз олардың Blinkt шамдарына кедергі келтіре алмаймыз. Сондықтан оларды өшіруге рұқсат етіңіз.
Мұны істеу үшін бізге /etc/asound.conf файлын өзгерту керек және VU метр плагинін алып тастау керек, сондықтан ол бірінші кезекте жарық диодты жүргізуге тырыспайды. Мен мұны жай атауын өзгерту арқылы жасадым. Бұл пәрменді теріңіз mv /etc/asound.conf /etc/asound.conf.bak Мен мұны Google -дің біраз бөлігі арқылы таптым, сондықтан жақсы әдіс болуы мүмкін.
Sox жұмыс істейді, және бұл керемет, бірақ мен осы машинаның ақ шуыл бөлігі үшін бірнеше айналмалы MP3-ді қолдануды жоспарладым, сондықтан маған басқа ойнатқыш қажет болды, жақсырақ жеңіл нәрсе. mpg123 - мен шешкен нәрсе. Енді оны sudo apt-get install mpg123 көмегімен орнатыңыз
Жарайды, енді біз Phat Speaker спикері күтілгендей жұмыс істейтінін білеміз, интерфейсті және сәйкес сценарийлерді құруға уақыт келді.
7 -қадам: Шағын веб -сервер мен веб -қосымшаны орнату
Flask - бұл Python тілінде жазылған шағын веб -құрылым. Ол веб -серверге қажет барлық функцияларды қамтамасыз етеді (ол қосымша ретінде әрекет етеді). Оны келесі пәрменмен орнатыңыз:
pip3 колбасын орнатыңыз
Бұл біраз уақытты алады, сондықтан күтіңіз. Аяқтағаннан кейін, біз веб -сайт жұмыс істеген кезде қажет қалталарды жинауымыз керек және бұл қалталардың нақты атаулары бар. Веб -сайтты орналастыратын жерден бастайық. Үй каталогынан mkdir www көмегімен www деп аталатын жаңа каталог жасаңыз. Енді осы каталогқа www cd енгізіңіз. Мұнда бізге тағы екі каталог қажет, олардың бірі статикалық, екіншісі шаблон деп аталады.
Бізге сондай -ақ айналмалы MP3 файлдарын орналастыратын орын қажет. Мен бұл үшін үй каталогында «дыбыстар» деп аталатын каталог жасадым. Мен MP3 -ді Google -ден ақталатын ақшыл MP3 -ті іздеп таптым. Бос орындар көп. Мен файлдарды жүктеу үшін WinSCP қолдандым.
Сіз оларды төмендегі omxplayer командасымен --vol -### бөлігімен ойнап, сіздің бөлмеңізге қажетті дыбыс деңгейін теру үшін тексергіңіз келуі мүмкін. Тағы да Ctrl+C ойнатқышты тоқтатады.
Енді бізде бәрі бар, pi іске қосылған кезде веб -серверді тұрғызу үшін кейбір питон жазуға рұқсат етіңіз. Www каталогына оралыңыз және webapp.py (nano webapp.py) деп аталатын жаңа файлды іске қосыңыз және келесі кодты енгізіңіз.
webbapp.py:
#!/usr/bin/python
колбадан импорттаудан Flask, render_template, сұрау, импорттауды қайта жіберу os app = Flask (_ name_) @app.route ('/') def index (): render_template ('index.html') @app.route ('/rain') қайтару, әдістер = ['POST']) def rain (): os.system («mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3») қайтару бағыттау ('/') @app.route ('/толқындар', әдістер = ['POST']) def толқындары (): os.system («mpg123 -f 20500 --loop -1 ~/сценарийлер/дыбыстар/толқындар.mp3») қайтару бағыттау ('/') @app.route ('/whitenoise', әдістері = ['POST']) def whitenoise (): os.system («mpg123 --loop -1 ~/сценарийлер/дыбыстар/whitenoise.mp3») қайта бағыттауды қайтару (') /') @app.route ('/stop ', methods = [' POST ']) def stop (): os.system («killall mpg123»), егер _name_ ==' _main_ 'болса, қайта бағыттауды қайтарады ('/'): app.run (debug = True, host = '0.0.0.0')
Көріп отырғаныңыздай, бұл веб -қосымшаның 5 беті болады, олардың біреуі индексте, 3 -інде 3 түрлі дыбыс үшін (толқын, жаңбыр және ақшылдау) 3 және тоқтату үшін тағы 1 бетте болады. Барлық 4 индексті емес беттер omxplayer-ге жіберілген пәрменді орындағаннан кейін индекске ('/') қайта бағытталады, сондықтан бізге тек index.html жасау керек, басқа ештеңе жоқ. Мен killall -ды мұнда тоқтату функциясы ретінде қолданамын, себебі omxplayer -ге «тоқтату» пәрменін жіберудің жақсы әдісін таба алмадым. Егер сіз мұны істеудің жақсы әдісін білсеңіз, мен оны тыңдағым келеді!
Енді index.html біріктірейік.
8 -қадам: веб -сайт құру
Бұл мен құрастыру үшін қолданған суреттер, бірақ өз бетіңізше жасаңыз. Олардың бәрін біз бұрын жасаған статикалық қалтада сақтау керек. Біз жасайтын index.html файлы шаблондар қалтасында болуы керек. Бұл өте маңызды, әйтпесе олардың ешқайсысы жұмыс істемейді. Міне, менің index.html коды (тағы да бұл қарапайым html, сондықтан оны сіз үшін жұмыс істейтін жолмен өзгертіңіз).
Instructables шикі HTML -ді жіберуге рұқсат бермейтіндіктен, бұл менің Dropbox -та бар файлға сілтеме:
www.dropbox.com/s/n5xf2btftk5sz9b/index.ht…
Бірақ егер ол қайтыс болса, HTML файлы - бұл қарапайым CSS және 2x2 кестесі, сол 4 белгішесі бар, келесідей мәндері бар түймелер:
әрекет формасы = «/whitenoise» әдісі = «пост»
src = «/static/whitenoise.png» енгізу = «Ақ шу»
Өзіңізді жасау өте оңай болуы керек.
Соңғы қадам - webapp.py іске қосылған кезде жұмыс істейтініне көз жеткізу, мен мұны crontab -қа қосу арқылы жасадым. Сонымен, тағы бір рет crontab -e теріп, соңына келесіні қосыңыз:
@reboot python3 /home/pi/www/webapp.py
Содан кейін pi -ді қайта жүктеңіз, басқа компьютердегі (телефоныңыздағы) шолғышты pi -дің IP -ге көрсетіңіз (егер сіз оны статикалық ете алсаңыз жақсы) және оның жұмыс істегенін тексеріңіз. Түймешіктерді шертіп, шу естілетінін көріңіз.
Android телефонында веб -сайтты негізгі экранға бетбелгі қоюға болады, бұл мен оны қолданбаға ұқсас етіп жасау үшін жасадым. Егер сіз оны «кәсіби» етіп көрсеткіңіз келсе, сәйкес келетін.ico файлын табыңыз немесе жасаңыз және веб -сайтқа телефоныңыздың негізгі экранында пайда болатын және қосымшаға ұқсайтын өзіндік белгісін беріңіз. Веб -сайтқа белгішені (фавикон) қалай қосуға болатыны туралы көптеген онлайн оқулықтар.
9 -қадам: Барлығын бір істе жинаңыз
Енді бәрі тексерілген және жұмыс істеп жатқан кезде, бәрін істе жинайтын уақыт келді.
Мен үйдің айналасында қалған пластмассадан Raspberry Pi Zero -ға арналған тіреуіш жасадым. Содан кейін мен микро USB панелінің бекіткіші үшін бірнеше тесіктер бұрғыладым, ал кейбір зергерлік файлдарды пайдаланып, тесіктен төртбұрышты етіп алдым. Панельді бекіту кабелі сәл қатты, сондықтан мен болашақта Pi -дегі микро USB портына тік бұрышты адаптер сатып аламын.
Мен корпустың жоғарғы жағындағы кішкене саңылауды екі ойық бұрғылап, оларды Дремельмен жалғау арқылы ойнату үшін кесіп алдым. Содан кейін динамик Phat орнату үшін қақпақтағы тесіктер бұрғыланды. Бұл фотосуретті түсіргеннен кейін мен қайтып оралдым және тағы бірнеше тесік жасадым, себебі шу корпустың ішінде қалып қойды. Мен бұл плакатты шыбықтарды қолдана отырып, Blinkt -ті орнаттым, себебі оның саңылаулары жоқ, бірақ шыбық жақсы ұсталатын сияқты, сондықтан болады.
10 -қадам: Міне
Розеткаға қосыңыз және сіз аяқтадыңыз. Міне менікі кешкі сегізден кейін жүгіреді. Пи -дегі жасыл жарық диоды бұл фотосуреттегідей жарқын емес.
Кейінірек мен жасаған кейбір түзетулер:
Мен webapp.py және index.html файлдарына тағы 4 бетті қостым. Олардың төртеуі «қызыл», «сары», «жасыл» және «өшірілген». Өте түсінікті. Егер мен әйелі екеуміздің шаршағанымызды және алаңдатқымыз келмесе, оны жасыл түстен сарыға ауыстыруды білгім келді.
@app.route ('/red', әдістері = ['POST']) def red (): os.system («python ~/scripts/red.py») қайта бағыттауды қайтару ('/')
Негізінде бұл 4 рет, 4 түрлі сценарийлерді, содан кейін сол беттерді шақыратын индексте бірнеше батырмаларды іске қосады.
Мен айтқан басқа өзгеріс, бірақ мен тағы бірнеше тесіктер бұрғылап, динамиктің айналасындағы саңылауды кеңейттім, себебі шу қоршауды жақсы көтермеді.
Егер мен қандай да бір қосымша өзгертулер енгізетін болсам, міндетті түрде осында қайтып келіп, оларды тізімге енгіземін.
11 -қадам: Қосымша
Бұл құрылысты жасағаннан кейін мен әйелім екеуміз телефонды жиі төменге тастап кететінімізді түсіндім, баланы төсекке немесе ұйықтап жатқанда. Мен 36 -физикалық түйреуішке бір сәтте басу түймесін қостым және rc.local -де іске қосу үшін келесі кодты енгіздім (мен оны button.py деп атадым):
#!/usr/bin/env python
RPi. GPIO -ны GPIO ретінде импорттау импорттау GPIO.setmode (GPIO. BOARD) импорттау ішкі процесінің импорты импорттау GPIO.setmode (GPIO. BOARD) # Физикалық түйреуішті нөмірлеу схемасын қолдану түймесі = 36 # Түйме физикалық түйінге 16 GPIO.setup (түйме, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Түймені кіріске айналдыру, Резисторды «True» күйінде іске қосу: егер GPIO.input (түйме) == 0: # Түймені басуды күтіңіз returnprocess = False # Бастапқыда дыбыс өшірулі болып орнатылады s = ішкі процесс. Ашық ([«ps», «ax»], stdout = subprocess. PIPE) for x in s.stdout: if re.search («mpg123», x): returnprocess = True if returnprocess == False: os.system («mpg123 --loop -1 /home/pi/scripts/sounds/whitenoise.mp3 & «) os.system (» python /home/pi/scripts/red.py «) басқа: os.system (» killall mpg123 «) os.жүйе («python /home/pi/scripts/lightsout.py»)
Көріп отырғаныңыздай, мен omxplayer -ден mpg123 -ке ауыстым, себебі ол әлдеқайда жеңіл және қарапайым.
Дегенмен, мен қандай да бір себептермен бұл сценарийді rc.local -ге енгізгенде, ол іске қосылғанда еш қиындықсыз іске қосылады. Бірақ аудио шынымен де қатал. Мен сценарийді қалыпты күйде іске қосқанда, мұндай мәселелер болмайды. Мен бұл мәселені шешуге уақыт таптым, сондықтан егер біреуде қандай да бір идея болса, маған хабарлаңыз! Рахмет.
Ұсынылған:
DIY автоматты қозғалысты сезетін төсек жарық диодты түнгі жарық: 6 қадам (суреттермен)
DIY автоматты қозғалысты сезетін кереуеттің жарықдиодты түнгі жарығы: Сәлеметсіздер ме, жігіттер күнделікті өмірде сізге көмектесетін және сіздің өміріңізді жеңілдетуге көмектесетін тағы бір нұсқаулыққа қош келдіңіз. Бұл кейде қартайған адамдар төсектен тұруға мәжбүр болған жағдайда өмірді құтқарушы бола алады
Жұмбақ жарық қорабы (түнгі жарық): 4 қадам
Жұмбақ жарық қорапшасы (түнгі жарық): Бұл қызықты шағын жоба, оны жасауға болады, бұл жоба сілтеме: https://www.instructables.com/id/Arduino-Traffic-L…, бірақ мен қазірдің өзінде түпнұсқалық сайттың көптеген құрылымын өзгертті, мен қосымша жарықдиодты қосамын және оны жинау үшін аяқ киім қорабын қолданамын
Oceania Midi контроллері (шуыл 0-жағалауында және басқа синтезде): 6 қадам (суреттермен)
Oceania Midi контроллері (шуыл 0-жағалауында және басқа синтездер үшін): Соңғы жылдары синтезаторлардың бірқатар өндірушілері «жұмыс үстелінің жартылай модульді» шығарады. құралдар. Олар, әдетте, Eurorack модульдік синтезаторының формасы сияқты формалық факторды қабылдайды және олардың көпшілігі g
Ауыспалы жарық сезгіш түнгі жарық: 8 қадам (суреттермен)
Ауыспалы жарық сезгіш түнгі жарық: Бұл нұсқаулықта түнгі жарық сенсоры қалай бұзылғанын көрсетеді, сондықтан оны қолмен өшіруге болады. Мұқият оқыңыз, кез келген ашық тізбектерге назар аударыңыз және қондырғыны тестілеуден бұрын қажет болса, аймағыңызды өшіріңіз
Түнгі жарық диодты түнгі жарық диодты шамы: 5 қадам
Түнгі жарық диодты түнгі жарық шамы / шамы: Біріншіден, бұл Sunbanks -тің шағын бос жарықдиодты шамының әсерінен болғанын айтуым керек. Жарықтандырғышты үстелден алшақ ұстау үшін, біро қолданудың орнына, мен базадан жарық түсіретін айқын перспективаны қолдандым. Бұл шағын жоба - бұл прототип