Indholdsfortegnelse:

White Noise Night Light: 11 trin (med billeder)
White Noise Night Light: 11 trin (med billeder)

Video: White Noise Night Light: 11 trin (med billeder)

Video: White Noise Night Light: 11 trin (med billeder)
Video: seeing wife face for first time #shorts 2024, Juli
Anonim
Hvid støj natlys
Hvid støj natlys
Hvid støj natlys
Hvid støj natlys

Dette er et projekt, jeg lavede til min 1-årige til jul. Helt ærligt var det dog en fornuftsgave til mig og min kone. Det er en hvid støjmaskine, der kan afspille flere forskellige lyde, der er valgt via en webgrænseflade, og indeholder også lys, der skifter farve baseret på tiden (røde lys betyder, at du er i sengen, gul betyder, at du kan spille i dit værelse, og grønt betyder, at det er ok at komme ud). Da min søn er for ung til at fortælle tid, virkede et farvebaseret natlys som en rigtig god idé.

Det er et virkelig let projekt, og da jeg allerede har skrevet koden, er det måske et 1 ud af 5 på sværhedsgraden. Hvis du har småbørn, der generer dig for tidligt om morgenen, vil du gerne lave en.

Trin 1: Deleliste

Liste over dele
Liste over dele
Liste over dele
Liste over dele
Liste over dele
Liste over dele

1. Raspberry Pi Zero W

2. En slags sag (jeg brugte denne fra Amazon)

3. Blinkt fra Pimoroni

4. Højttaler Phat fra Pimoroni (Du kan også bruge en anden DAC med billige højttalere)

Du skal have nogle grundlæggende loddefærdigheder for at sammensætte højttalerfat, der er et link med trin-for-trin-instruktioner fra produktsiden, så du ikke kan skrue op for det.

5. [VALGFRIT] Panelmonteret mikro -USB -kabel - fra Adafruit

6. nogle forbindelsestråde eller jumpere

Det er det!

Trin 2: Brænd Raspbian og tilslut tavlerne

Brænd Raspbian og tilslut tavlerne
Brænd Raspbian og tilslut tavlerne

Jeg bruger Raspian Stretch lite til denne build. Så brænd det til en microSD med det værktøj, der virker for dig, og fyr derefter pi'en op. Hvis du har brug for hjælp til at få en hovedløs pi til at oprette forbindelse til dit hjems wifi og aktivere ssh, er der masser af tutorials online, der kan vise dig, hvordan du gør det, men du skal sørge for, at du har gjort det for resten af dette at arbejde.

Ved hjælp af https://pinout.xyz kan du trække begge brædder op og få deres pinouts på dette websted. Blinkt -kortene kræver kun 4 forbindelser, og Speaker Phat har brug for 9.

Det skal ligne billedet, når det er færdigt. Nu skal vi teste, at alt fungerer.

Trin 3: Installation af den nødvendige software

Nu hvor vi er tilsluttet, skal vi installere den software, der kræves til at køre Blinkt og Speaker Phat -kortene. SSH ind i pi, og du finder dig selv i hjemmekataloget. Indtaste følgende:

krølle https://get.pimoroni.com/blinkt | bash

og så når det er fuldført, dette:

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

Det installerer alt, hvad der er nødvendigt for begge Pimoroni -plader. Hvis du indtaster kommandoen ls, skal du se et Pimoroni -bibliotek. Så lad os nu skrive en kode og teste Blinkt -kortet.

Trin 4: Skrivning af kode og afprøvning

Opret en mappe kaldet "scripts" ved at skrive mkdir -scripts, og vi beholder alt, hvad vi har brug for for at køre derinde. Så cd -scripts for at komme dig ind i den mappe.

Nu vil vi have røde dæmpede lys til natten, gule dæmpede lys til stille spilletid og lidt lysere grønne lys, når det er ok at komme ud. For mig ville jeg have rødt lys fra 19:30 til 06:15, og klokken 6:15 ville de blive gule i en time og derefter endelig grønne klokken 7:15. Jeg ville også have dem til at slukke kl. 8:30, når der sandsynligvis ikke var nogen i rummet.

Der er to måder at gøre dette på. Den første (den måde jeg valgte at gøre det på) er med fire forskellige scripts, der køres fra cron -job. Den anden måde at gøre det på er et script, der indeholder en tidsfunktion, der køres ved opstart. Jeg skrev faktisk scriptet for at gøre det på den måde først, men det virkede mindre effektivt end at gøre det baseret på cron, så jeg skiftede det op. Hvis du vil have "ét script" -metoden, så lad mig det vide, og jeg kan sende det i kommentarerne.

Så lad os starte med det røde script. Skriv touch red.py, derefter nano red.py. Indtast derefter følgende kode.

#!/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) #sets pixels 3 og 4 til rød blinkt.show ()

Gør det samme for yellow.py og green.py.

gul.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) #sets pixel 2, 3, 4 og 5 til gul blinkt.show ()

grøn.py:

#!/usr/bin/env python

import blinkt blinkt.set_clear_on_exit (False) blinkt.set_brightness (0.2) blinkt.set_all (0, 128, 0) #setter alle pixels til grøn blinkt.show ()

Og endelig vil vi have et script til at rydde Blinkt, når det ikke er nødvendigt (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) #sets alle pixels til off blinkt.show ()

Det er det. For at teste type python red.py og se om de to midterste pixels lyser rødt. Skriv derefter python lightsout.py for at rydde det. Det er det! Dernæst skal vi indstille dem i cron -fanen, så de kører, når vi vil have dem.

Trin 5: Tilføjelse af disse scripts til Cron

I SSH -terminalen skriver du crontab -e

rul til slutningen af filen og tilføj følgende linjer:

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

Det konfigurerer scripts til at køre på de tidspunkter, der er beskrevet i det foregående trin, og fortsæt og juster disse, så de passer til dine behov.

Det er det for natlyset! Super let. Lad os nu gå videre til opsætningen af White Noise -delen af denne build.

Trin 6: Test af højttaleren Phat

Den nemmeste måde (efter min mening) at teste Speaker Phat er ved at installere sox og køre noget statisk fra kommandolinjen.

sudo apt-get install sox

Når det er installeret, kan vi prøve nogle prøveafspilningskommandoer. Denne skal lyde som bølger.

play -n synth brownnoise synth pinknoise mix synth 0 0 0 10 10 40 trapez amod 0,1 30

Hvor afslappende! Ctrl+c stopper det. Men hvad er det? Der er en flok lysdioder på tværs af højttaleren Phat, der lyser, og vi kan ikke have det til at forstyrre vores Blinkt -lys. Så lad os slå dem fra.

For at gøre dette skal vi ændre /etc/asound.conf -filen og fjerne VU -meter -plugin, så det ikke engang prøver at køre lysdioderne i første omgang. Jeg gjorde dette ved ganske enkelt at omdøbe det. Skriv denne kommando mv /etc/asound.conf /etc/asound.conf.bak Jeg fandt dette gennem lidt googling, så der kan være en bedre måde.

Sox fungerer, og det er fantastisk, men jeg planlagde at bruge nogle loopable MP3'er til den hvide støjdel på denne maskine, så jeg havde brug for en anden afspiller, helst noget virkelig let. mpg123 er, hvad jeg besluttede mig for. Installer det nu med sudo apt-get install mpg123

Ok, nu hvor vi ved, at Speaker Phat fungerer som forventet, er det tid til at bygge grænsefladen og tilhørende scripts.

Trin 7: Opsætning af en lille webserver og Webapp

Flask er en mikrowebramme skrevet i Python. Det giver al den funktionalitet, vi har brug for til webserveren (som kommer til at fungere som en app). Installer det med følgende kommando:

pip3 installere kolbe

Det vil tage noget tid, så vent det. Når det er færdigt, skal vi opbygge de mapper, vi skal trække fra, når webstedet kører, og disse mapper har specifikke navne. Lad os starte med et sted at være vært for webstedet. Fra hjemmebiblioteket skal du oprette et nyt bibliotek kaldet www med mkdir www. Nu cd www ind i den mappe. Her har vi brug for yderligere to biblioteker, en kaldet statisk og en anden kaldet skabeloner.

Vi har også brug for et sted at sætte vores loopbare MP3'er. Jeg lavede en mappe i hjemmemappen kaldet "lyde" til dette. Jeg fandt mine MP3'er ved at søge efter loopable hvide MP3 -filer på Google. Masser af gratis steder at trække fra. Jeg brugte WinSCP til at uploade filerne.

Du vil måske teste dem med kommandoen omxplayer herunder og lege med --vol -### delen for at indtaste det rigtige lydstyrkeniveau for dit værelse. Igen stopper Ctrl+C afspilleren.

Nu hvor vi har alle dem på plads, kan vi skrive noget python for at stå op på webserveren, når pi'en starter. Gå tilbage til www -biblioteket, og start en ny fil kaldet webapp.py (nano webapp.py) og indsæt følgende kode

webbapp.py:

#!/usr/bin/python

fra kolbeimport Flask, render_template, request, redirect import os app = Kolbe (_ navn_) @app.route ('/') def index (): return render_template ('index.html') @app.route ('/rain', metoder = ['POST']) def rain (): os.system ("mpg123 -f 8000 --loop -1 ~/scripts/sounds/rain.mp3") return redirect ('/') @app.route ('/waves', methods = ['POST']) def waves (): os.system ("mpg123 -f 20500 --loop -1 ~/scripts/sounds/waves.mp3") return redirect ('/') @app.route ('/whitenoise', methods = ['POST']) def whitenoise (): os.system ("mpg123 --loop -1 ~/scripts/sounds/whitenoise.mp3") return redirect (' /') @app.route ('/stop ', methods = [' POST ']) def stop (): os.system ("killall mpg123") return redirect ('/') if _name_ ==' _main_ ': app.run (debug = True, host = '0.0.0.0')

Som du kan se, vil denne webapp have 5 sider, en til indekset, 3 til 3 forskellige lyde (bølge, regn og hvid lys) og 1 mere til at stoppe. Alle 4 sider uden indeks omdirigerer tilbage til indeks ('/'), efter at de har udført kommandoen sendt til omxplayer, så vi behøver kun at oprette et index.html og intet andet. Jeg bruger killall her som stopfunktion, fordi jeg ikke kunne finde en bedre måde at sende en "stop" -kommando til omxplayer. Hvis du kender en bedre måde at gøre dette på, vil jeg meget gerne høre det!

Lad os nu sammensætte index.html.

Trin 8: Opbygning af webstedet

Opbygning af webstedet
Opbygning af webstedet
Opbygning af webstedet
Opbygning af webstedet
Opbygning af webstedet
Opbygning af webstedet
Opbygning af webstedet
Opbygning af webstedet

Dette er de billeder, jeg brugte til min build, men du er velkommen til at lave dine egne. De skal alle gemmes i den statiske mappe, vi lavede tidligere. Den index.html -fil, vi skal lave her, skal være i skabelonmappen. Det er ret vigtigt, ellers fungerer intet af det. Her er koden til mit index.html (igen, dette er bare simpel html, så rediger den på en hvilken som helst måde, der virker for dig).

Da Instructables ikke tillader mig at sende rå HTML, er her et link til filen, som den findes på min Dropbox:

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

Men hvis det nogensinde dør, er HTML -filen bare en fancy CSS og en simpel 2x2 -tabel med de 4 ikoner som knapper med postværdier som sådan:

form handling = "/whitenoise" metode = "indlæg"

input src = "/static/whitenoise.png" value = "Hvid støj"

Det burde være ret let at lave en til dig selv.

Sidste trin er at sikre, at webapp.py kører ved opstart, igen, jeg gjorde dette ved at tilføje det til crontab. Så skriv igen crontab -e og tilføj følgende til slutningen:

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

Genstart derefter pi'et, peg en browser på en anden maskine (din telefon) til pi'ens IP (bedst hvis du kan gøre dette statisk) og se om det fungerede. Klik på knapperne og se om du får støj.

På en Android -telefon kan du bogmærke et websted til din startskærm, hvilket jeg gjorde med dette for at få det til at ligne og føles som en app. Hvis du virkelig vil få det til at se "pro" ud, skal du finde eller oprette en passende.ico -fil og give webstedet sit eget ikon, der vises på telefonens startskærm og ligner meget mere en app. Masser af tutorials online om, hvordan du tilføjer et ikon (favicon) til et websted.

Trin 9: Jam alt i en sag

Jam alt i en sag
Jam alt i en sag
Jam alt i en sag
Jam alt i en sag
Jam alt i en sag
Jam alt i en sag

Nu hvor alt er blevet testet og fungerer, er det tid til at putte det hele i en sag.

Jeg byggede en standoff -mount til Raspberry Pi Zero ved hjælp af noget plastrester, jeg havde rundt om i huset. Derefter borede jeg nogle huller til panelmonteret mikro -USB, og ved hjælp af nogle guldsmedfiler kvadrerede hullet sig ud af hullet. Panelmonteringsledningen er lidt stiv, så jeg kan købe en retvinklet adapter til mikro -USB -porten på Pi engang i fremtiden.

Jeg skar en lille åbning i toppen af sagen, så højttaleren kan spille igennem ved at bore to huller og forbinde dem med en Dremel. Borede derefter hullerne i låget for at montere højttaleren Phat. For hvad det er værd, efter at have taget dette foto gik jeg tilbage og lavede et par huller mere, fordi støjen virkelig blev fanget inde i sagen. Jeg monterede Blinkt ved hjælp af den plakatspartel, fordi tingen ikke har nogen monteringshuller, men kittet ser ud til at holde godt, så det vil klare.

Trin 10: Det er det

Det er det!
Det er det!

Tilslut det, og du er færdig. Her kører min lige efter kl. 20.00. Den grønne LED på selve pi'en er ikke så lys, som dette foto får det til at se ud.

Nogle senere redigeringer jeg lavede:

Jeg tilføjede yderligere fire sider til webapp.py- og index.html -filerne. De 4 er "rød", "gul", "grøn" og "slukket". Ret selvforklarende. Jeg ville have muligheden for at skifte den fra grøn tilbage til gul, hvis konen og jeg følte mig ekstra trætte og ikke ville blive generet.

@app.route ('/red', methods = ['POST']) def red (): os.system ("python ~/scripts/red.py") return redirect ('/')

Grundlæggende det 4 gange, kører de 4 forskellige scripts, derefter nogle flere knapper i indekset, der kalder disse sider.

Den anden ændring noterede jeg allerede, men jeg borede nogle flere huller og udvidede den eksisterende åbning omkring højttaleren, fordi støjen ikke slap godt nok ud af kabinettet.

Hvis jeg foretager yderligere ændringer, kommer jeg helt sikkert tilbage her og viser dem.

Trin 11: Tillæg

Efter at have bygget dette indså jeg, at min kone og jeg begge ofte efterlader vores telefoner nedenunder, når de lægger ungen i seng eller en lur. Så jeg tilføjede en kortvarig trykknap til fysisk pin 36 og inkluderede følgende kode (jeg kaldte den button.py) for at køre ved opstart i rc.local:

#!/usr/bin/env python

import RPi. GPIO som GPIO importtid import os import delprocesimport re GPIO.setmode (GPIO. BOARD) # Brug knap til fysisk pinnummereringsskema = 36 # Knap er forbundet til fysisk pin 16 GPIO.setup (knap, GPIO. IN, pull_up_down = GPIO. PUD_UP) # Gør knappen til et input, Aktiver Pull UP Resistor mens True: hvis GPIO.input (knap) == 0: # Vent på knappen tryk på returnprocess = Falsk # Indledningsvis indstillet til at lyden er slukket s = delproces. Åben (["ps", "ax"], stdout = subprocess. PIPE) for x i 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 ") else: os.system (" killall mpg123 ") os.system ("python /home/pi/scripts/lightsout.py")

Som du kan se, skiftede jeg også til mpg123 fra omxplayer, fordi den er meget mere let og enkel at bruge.

MEN af en eller anden grund, når jeg lægger dette script i rc.local, kører det faktisk ved opstart uden problemer. Men lyden er virkelig virkelig urolig. Når jeg kører scriptet som normalt, i kitt, ingen sådanne problemer. Jeg har en bear of time fejlfinding af dette, så hvis nogen har nogen ideer, så lad mig det vide! Tak.

Anbefalede: