Përmbajtje:

Drita e natës me zhurmë të bardhë: 11 hapa (me fotografi)
Drita e natës me zhurmë të bardhë: 11 hapa (me fotografi)

Video: Drita e natës me zhurmë të bardhë: 11 hapa (me fotografi)

Video: Drita e natës me zhurmë të bardhë: 11 hapa (me fotografi)
Video: Mësuesja qesharake kl.II-2 2024, Nëntor
Anonim
Zhurmë e bardhë Drita e natës
Zhurmë e bardhë Drita e natës
Zhurmë e bardhë Drita e natës
Zhurmë e bardhë Drita e natës

Ky është një projekt që kam bërë për fëmijën tim 1-vjeçar për Krishtlindje. Sinqerisht, ishte një dhuratë mendjemprehtë për mua dhe gruan time. Ashtë një makinë e zhurmës së bardhë që mund të luajë tinguj të ndryshëm të përzgjedhur përmes një ndërfaqeje në internet, dhe gjithashtu përfshin drita që ndryshojnë ngjyrën në bazë të kohës (dritat e kuqe do të thotë të jesh në shtrat, e verdha do të thotë që mund të luash në dhomën tënde, dhe jeshile do të thotë se është mirë të dalë). Meqenëse djali im është shumë i ri për të treguar kohën, një dritë nate e bazuar në ngjyra dukej si një ide vërtet e mirë.

Projectshtë një projekt me të vërtetë i lehtë, dhe meqenëse kam shkruar tashmë kodin, është ndoshta 1 në 5 në shkallën e vështirësisë. Nëse keni fëmijë të vegjël që ju shqetësojnë shumë herët në mëngjes, do të dëshironi të bëni një të tillë.

Hapi 1: Lista e Pjesëve

Lista e Pjesëve
Lista e Pjesëve
Lista e Pjesëve
Lista e Pjesëve
Lista e Pjesëve
Lista e Pjesëve

1. Raspberry Pi Zero W

2. Një lloj rasti (e kam përdorur këtë nga Amazon)

3. Blink nga Pimoroni

4. Altoparlanti Phat nga Pimoroni (Ju gjithashtu mund të përdorni ndonjë DAC tjetër me altoparlantë të lirë)

Ju do të duhet të keni disa aftësi themelore të bashkimit për të bashkuar phatin e altoparlantit, ekziston një lidhje me udhëzime hap pas hapi nga faqja e produktit, kështu që nuk mund ta vidhosni.

5. [OPSIONALE] Kabllo mikro USB për montim në panel - nga Adafruit

6. disa tela lidhës ose kërcyes

Kjo eshte!

Hapi 2: Djeg Raspbian dhe lidhni bordet

Djeg Raspbian dhe lidhni dërrasat
Djeg Raspbian dhe lidhni dërrasat

Unë jam duke përdorur Raspian Stretch lite për këtë ndërtim. Pra, digjeni atë në një microSD me çfarëdo mjeti që funksionon për ju, pastaj ndizni pi. Nëse keni nevojë për ndihmë për të marrë një pi pa kokë për t'u lidhur me wifi të shtëpisë tuaj dhe për të aktivizuar ssh, ka shumë mësime në internet që mund t'ju tregojnë se si ta bëni këtë, por do t'ju duhet të siguroheni që e keni bërë atë për pjesën tjetër të kësaj te punosh.

Duke përdorur https://pinout.xyz ju mund të tërheqni të dy bordet dhe të merrni pinouts e tyre në këtë faqe. Bordet e Blinkt kërkojnë vetëm 4 lidhje, dhe Kryetarit Phat i duhen 9.

Duhet të duket si foto kur të përfundoni. Tani duhet të provojmë se gjithçka po funksionon.

Hapi 3: Instalimi i softuerit të kërkuar

Tani që jemi lidhur, do të na duhet të instalojmë softuerin e kërkuar për të drejtuar bordet Blinkt dhe Speaker Phat. SSH në pi, dhe do ta gjeni veten në drejtorinë e shtëpisë. Futni sa vijon:

kaçurrela https://get.pimoroni.com/blinkt | bash

dhe pastaj pasi të jetë përfunduar, kjo:

curl -sS https://get.pimoroni.com/speakerphat | bash

Kjo do të instalojë gjithçka që nevojitet për të dy bordet Pimoroni. Nëse futni komandën ls, duhet të shihni një drejtori Pimoroni. Pra, tani le të shkruajmë një kod dhe të testojmë bordin Blinkt.

Hapi 4: Shkrimi i Kodit dhe Testimi i Tij

Krijoni një drejtori të quajtur "skripte" duke shtypur skriptet mkdir dhe ne do të mbajmë gjithçka që na nevojitet për të funksionuar atje. Pra, skriptet cd për t'u futur në atë dosje.

Tani, ajo që duam janë dritat e kuqe të zbehta për natën, dritat e verdha të errëta për lojë të qetë dhe dritat jeshile pak më të ndritshme kur është mirë të dalësh. Për mua, unë doja dritat e kuqe nga 7:30 pasdite në 6:15 të mëngjesit, dhe në 6:15 të mëngjesit ata do të ktheheshin në të verdhë për një orë, dhe më në fund të gjelbër në 7:15 të mëngjesit. Unë gjithashtu doja që ata të fikeshin në 8:30 të mëngjesit kur askush nuk kishte të ngjarë të ishte në dhomë.

Ka dy mënyra për ta bërë këtë. E para (mënyra se si zgjodha ta bëj) është me katër skenarë të ndryshëm, të drejtuar nga cron jobs. Mënyra tjetër për ta bërë atë, është një skenar, që përfshin një funksion kohor që ekzekutohet gjatë fillimit. Unë në fakt shkrova skenarin për ta bërë atë në fillim, por më dukej më pak efikas sesa ta bëja atë bazuar në cron, kështu që e ndërrova. Nëse dëshironi metodën "një skenar", më tregoni dhe mund ta postoj në komente.

Pra, le të fillojmë me shkrimin e kuq. Shkruani prekjen red.py, pastaj nano red.py. Pastaj futni kodin e mëposhtëm.

#!/usr/bin/env python

import 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) #vendos piksele 3 dhe 4 në blinkt të kuqe (shfaq)

Bëni të njëjtën gjë për yellow.py dhe green.py.

e verdhe.py:

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (False) 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) #vendos piksele 2, 3, 4 dhe 5 në blinkt të verdhë. shfaqje ()

green.py:

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #vendos të gjitha pikselët në blinkt.show të gjelbër të gjelbër ()

Dhe së fundi, ne duam një skenar për të pastruar Blinkt kur nuk është e nevojshme (lightsout.py):

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (True) blinkt.set_brightness (0.1) blinkt.set_all (0, 0, 0) #vendos të gjitha pikselët në off blinkt.show ()

Kjo eshte. Për të testuar llojin python red.py dhe shikoni nëse dy pikselët e mesëm ndriçojnë me ngjyrë të kuqe. Pastaj shtypni python lightsout.py për ta pastruar atë. Kjo eshte! Tjetra ne do të duhet t'i vendosim ato në skedën cron në mënyrë që ata të funksionojnë kur të duam.

Hapi 5: Shtimi i atyre Shkrimeve në Cron

Në terminalin SSH, shkruani crontab -e

shkoni deri në fund të skedarit dhe shtoni rreshtat e mëposhtëm:

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

Kjo krijon skriptet për t'u ekzekutuar në kohën e përshkruar në hapin e mëparshëm, shkoni përpara dhe rregulloni këto që i përshtaten nevojave tuaja.

Kjo është ajo për dritën e natës! Super e lehtë. Tani le të kalojmë në ngritjen e pjesës së Zhurmës së Bardhë të kësaj ndërtese.

Hapi 6: Testimi i Kryetarit Phat

Mënyra më e lehtë (sipas mendimit tim) për të provuar Speaker Phat është duke instaluar sox dhe duke ekzekutuar disa statikë nga rreshti i komandës.

sudo apt-get install sox

Pasi të jetë instaluar, mund të provojmë disa komanda mostër të luajtjes. Kjo duhet të tingëllojë si valë.

luaj -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapezium amod 0.1 30

Sa relaksuese! Ctrl+c do ta ndalojë atë. Por, çfarë është ajo? Ka një mori LEDs në të gjithë fytyrën e Kryetarit Phat që ndizet, dhe ne nuk mund ta ndërhyjmë atë me dritat tona Blinkt. Pra, le t'i fikim ato.

Për ta bërë këtë, do të na duhet të modifikojmë skedarin /etc/asound.conf dhe të heqim shtojcën VU meter, kështu që nuk do të përpiqet as të drejtojë LED -të në radhë të parë. Unë e bëra këtë thjesht duke e riemëruar atë. Shkruani këtë komandë mv /etc/asound.conf /etc/asound.conf.bak E kam gjetur këtë përmes një kërkimi në Google, kështu që mund të ketë një mënyrë më të mirë.

Sox funksionon, dhe kjo është e mrekullueshme, por kam planifikuar të përdor disa MP3 të këndshme për pjesën e zhurmës së bardhë të kësaj makine, kështu që kisha nevojë për një luajtës tjetër, mundësisht diçka vërtet të lehtë. mpg123 është ajo për të cilën u vendosa. Instalojeni atë tani me sudo apt-get install mpg123

Ok, tani që e dimë që Kryetari Phat funksionon siç pritej, koha për të ndërtuar ndërfaqen dhe skriptet përkatëse.

Hapi 7: Vendosja e një serveri të vogël në internet dhe Webapp

Flask është një kuadër mikro ueb i shkruar në Python. Ai siguron të gjithë funksionalitetin që na nevojitet për serverin në internet (i cili do të veprojë si një aplikacion). Instaloni atë me komandën e mëposhtme:

balona e instalimit pip3

Kjo do të marrë pak kohë, kështu që prisni. Pasi të jetë përfunduar, do të na duhet të ndërtojmë dosjet nga të cilat do të duhet të tërhiqemi kur të funksionojë uebfaqja, dhe këto dosje kanë emra të veçantë. Le të fillojmë me një vend për të pritur faqen e internetit. Nga drejtoria kryesore, krijoni një drejtori të re të quajtur www me mkdir www. Tani cd www në atë drejtori. Këtu kemi nevojë për dy drejtori të tjera, një e quajtur statike dhe një tjetër e quajtur shabllone.

Ne gjithashtu kemi nevojë për një vend për të vendosur MP3 -të tona të këndshme. Unë bëra një drejtori në drejtorinë e shtëpisë të quajtur "tinguj" për këtë. Unë i gjeta MP3 -të e mia duke kërkuar MP3 të zbardhura të zbardhura në Google. Shumë vende falas për tu tërhequr. Kam përdorur WinSCP për të ngarkuar skedarët.

Ju mund të dëshironi t'i provoni me komandën omxplayer më poshtë duke luajtur me pjesën --vol -### për të thirrur në nivelin e duhur të volumit për dhomën tuaj. Përsëri një Ctrl+C do të ndalojë lojtarin.

Tani që i kemi të gjitha ato në vend, le të shkruajmë ndonjë piton për të ngritur serverin në internet kur pi fillon. Kthehuni te drejtoria www dhe filloni një skedar të ri të quajtur webapp.py (nano webapp.py) dhe futni kodin e mëposhtëm

webbapp.py:

#!/usr/bin/python

nga importi i shisheve Flask, render_template, kërkesë, përcjellim import os app = Flask (_ name_) @app.route ('/') def index (): ktheje render_template ('index.html') @app.route ('/shi'), metodat = ['POST']) def shi (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") ridrejtimi i kthimit ('/') @app.route ('/valët', metodat = ['POST']) def valët (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") kthehet përcjellëse ('/') @app.route ('/whitenoise', Methods = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") kthehu përcjellëse (' /') @app.route ('/stop ', metodat = [' POST ']) def stop (): os.system ("killall mpg123") ktheje ridrejtimin ('/') nëse _name_ ==' _main_ ': app.run (debug = E vërtetë, host = '0.0.0.0')

Siç mund ta shihni, ky webapp do të ketë 5 faqe, një për indeksin, 3 për 3 tinguj të ndryshëm (valë, shi dhe zbardhje) dhe 1 tjetër për të ndaluar. Të 4 faqet jo indeksuese ridrejtohen përsëri në indeks ('/') pasi të ekzekutojnë komandën e dërguar tek omxplayer, kështu që ne duhet të krijojmë vetëm një index.html, dhe asgjë tjetër. Unë jam duke përdorur killall këtu si një funksion stop, sepse nuk mund të gjeja një mënyrë më të mirë për të dërguar një komandë "stop" tek omxplayer. Nëse dini një mënyrë më të mirë për ta bërë këtë, do të doja ta dëgjoja!

Tani le të bashkojmë index.html.

Hapi 8: Ndërtimi i faqes në internet

Ndërtimi i Uebfaqes
Ndërtimi i Uebfaqes
Ndërtimi i Uebfaqes
Ndërtimi i Uebfaqes
Ndërtimi i Uebfaqes
Ndërtimi i Uebfaqes
Ndërtimi i Uebfaqes
Ndërtimi i Uebfaqes

Këto janë imazhet që kam përdorur për ndërtimin tim, por mos ngurroni t'i bëni tuajat. Të gjithë ata duhet të ruhen në dosjen statike që kemi bërë më herët. Skedari index.html që do të bëjmë këtu duhet të jetë në dosjen e modeleve. Kjo është shumë e rëndësishme, përndryshe, asnjë prej tyre nuk do të funksionojë. Këtu është kodi për indeksin tim.html (përsëri, kjo është thjesht html e thjeshtë, kështu që modifikojeni atë në çfarëdo mënyre që funksionon për ju).

Meqenëse Instructables nuk do të më lejojë të postoj HTML të papërpunuar, këtu është një lidhje me skedarin ashtu siç ekziston në Dropbox tim:

www.dropbox.com/s/n5xf2btftk5sz9b/index.ht…

Por në rast se vdes ndonjëherë, skedari HTML është vetëm një CSS i zbukuruar, dhe një tabelë e thjeshtë 2x2 me ato 4 ikona si butona me vlera postimi si kjo:

formë veprimi = "/zbardh" metoda = "post"

input src = "/static/whitenoise.png" value = "Zhurmë e Bardhë"

Duhet të jetë mjaft e lehtë për ta bërë veten të tillë.

Hapi i fundit është të siguroheni që webapp.py funksionon gjatë fillimit, përsëri, e bëra këtë duke e shtuar atë në crontab. Pra, edhe një herë shtypni crontab -e dhe shtoni sa vijon në fund:

@reboot python3 /home/pi/www/webapp.py

Pastaj rindizni pi, drejtoni një shfletues në një makinë tjetër (telefoni juaj) në IP të pi (më mirë nëse mund ta bëni këtë statike) dhe shikoni nëse funksionoi. Klikoni butonat dhe shikoni nëse merrni zhurmë.

Në një telefon Android mund të shënoni një faqe në internet në ekranin tuaj kryesor, gjë që bëra me këtë për ta bërë atë të duket dhe të ndjehet si një aplikacion. Nëse vërtet dëshironi ta bëni atë të duket "pro" gjeni ose krijoni një skedar.ico të përshtatshëm dhe jepini ikonës ikonën e saj në faqen e internetit e cila do të shfaqet në ekranin bazë të telefonit tuaj dhe do të duket shumë më tepër si një aplikacion. Shumë mësime në internet se si të shtoni një ikonë (favicon) në një faqe në internet.

Hapi 9: Vendosni gjithçka në një rast

Jam gjithçka në një rast
Jam gjithçka në një rast
Jam gjithçka në një rast
Jam gjithçka në një rast
Jam gjithçka në një rast
Jam gjithçka në një rast

Tani që gjithçka është testuar dhe po funksionon, koha për t'i futur të gjitha në një rast.

Unë ndërtova një montim për Raspberry Pi Zero duke përdorur një plastikë të mbetur që kisha rreth shtëpisë. Pastaj shpova disa vrima për montimin e panelit mikro USB dhe duke përdorur disa skedarë bizhuterish në vijën e vrimës. Kablloja e montimit të panelit është pak e ngurtë, kështu që mund të blej një përshtatës me kënd të drejtë për portën mikro USB në Pi diku në të ardhmen.

Kam prerë një hapje të vogël në pjesën e sipërme të kutisë që altoparlanti të dalë duke shpuar dy vrima dhe duke i lidhur ato me një Dremel. Pastaj shponi vrimat në kapak për të montuar Speaker Phat. Për atë që vlen, pasi bëra këtë foto u ktheva dhe bëra disa vrima të tjera sepse zhurma vërtet po bllokohej brenda kasës. Unë e montova Blinkt duke përdorur atë stuko posteri, sepse sendi nuk ka vrima për montim, por stuko duket se mban mirë, kështu që do të funksionojë.

Hapi 10: Kjo është ajo

Kjo eshte!
Kjo eshte!

Lidheni dhe mbaroni. Këtu është imja që vrapon vetëm pas orës 20:00. LED e gjelbër në pi vetë nuk është aq e ndritshme sa kjo foto e bën të duket.

Disa redaktime të mëvonshme i bëra:

Shtova 4 faqe të tjera në skedarët webapp.py dhe index.html. Ata 4 janë "të kuq", "të verdhë", "jeshil" dhe "fikur". Mjaft vetë shpjegues. Doja aftësinë për ta kthyer atë nga e gjelbër në të verdhë nëse gruaja dhe unë ndiheshim shumë të lodhur dhe nuk donim të shqetësoheshim.

@app.route ('/red', metodat = ['POST']) def red (): os.system ("python ~/scripts/red.py") kthehu ridrejtimi ('/')

Në thelb atë 4 herë, duke ekzekutuar 4 skriptet e ndryshme, pastaj disa butona të tjerë në indeks që i quajnë ato faqe.

Ndryshimi tjetër që unë tashmë e vura re, por unë shpova disa vrima të tjera dhe zgjerova hapjen ekzistuese rreth altoparlantit sepse zhurma nuk po ikte mjaft mirë rrethimit.

Nëse bëj ndonjë modifikim shtesë, do të kthehem këtu dhe do t'i listoj.

Hapi 11: Shtesa

Pasi e ndërtova këtë, kuptova që unë dhe gruaja ime shpesh i lëmë telefonat poshtë kur e vendosim fëmijën për të fjetur ose për të fjetur. Kështu që shtova një buton shtytës të çastit në kunjin fizik 36 dhe përfshiva kodin e mëposhtëm (e quajta buton.py) për të ekzekutuar në fillimin në rc.local:

#!/usr/bin/env python

import RPi. GPIO si GPIO kohë importi import os import nënproces import import GPIO.setmode (GPIO. BOARD) # Përdorni butonin e Skemës së Numërimit të Pin Pin = 36 # Butoni është i lidhur me kunjin fizik 16 GPIO.setup (butoni, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Bëni butonin një hyrje, aktivizoni Pull UP Resistor while True: nëse GPIO.input (butoni) == 0: # Prisni që butoni të kthejë procesinprocess = E gabuar # Fillimisht u caktua që tingulli të jetë jashtë s = nënprocesit. Hapur (["ps", "ax"], stdout = nënprocesi. PIPE) për x në s.stdout: nëse re.search ("mpg123", x): returnprocess = E vërtetë nëse returnprocess == E gabuar: os.system ("mpg123 --loop -1 /home/pi/scripts/sounds/whitenoise.mp3 & ") os.system (" python /home/pi/scripts/red.py ") tjetër: os.system (" killall mpg123 ") os.system ("python /home/pi/scripts/lightsout.py")

Siç mund ta shihni, unë gjithashtu kalova në mpg123 nga omxplayer sepse është shumë më i lehtë dhe i thjeshtë për t’u përdorur.

Sidoqoftë, për ndonjë arsye kur e vendos këtë skript në rc.local, ai me të vërtetë funksionon gjatë fillimit pa asnjë problem. Por tingulli është me të vërtetë i çrregullt. Kur e drejtoj skenarin si normal, në stuko, nuk ka çështje të tilla. Unë kam një ari të kohës për të zgjidhur këtë, kështu që nëse dikush ka ndonjë ide, ju lutem më tregoni! Faleminderit.

Recommended: