Indholdsfortegnelse:
- Forbrugsvarer
- Trin 1: Konfigurer din Raspberry Pi
- Trin 2: Få dit lydsystem til at fungere
- Trin 3: Test afspilning af klokke og/eller lav nye lyde
- Trin 4: Installer koden, og indstil dit skema
- Trin 5: Automatiser løb med Crond
- Trin 6: Tilpas og nyd
Video: Skoleklokke for fjernstuderende: 6 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:25
Med COVID-19-pandemien er mange børneskoler gået til fjernlevering. Denne hjemmeskoleklokke er en sjov måde at holde sig på planen, der bruger en Raspberry Pi og en USB -højttaler. Du kan lave det med dit barn, og de kan lære om programmering og kan "ringe på klokken". Jeg byggede dette til min datter, der går i 7. klasse (i øjeblikket via fjernlevering), og det fungerer godt for at holde os til tiden.
Forbrugsvarer
Til dette projekt skal du bruge:
- En Raspberry Pi -computer - Det fungerer bedst, hvis du har WiFi, jeg brugte en RPi 3B fra et Kano -kit
- En højttaler - jeg brugte en USB -højttaler
Koden kan let køre på din elevs linux -computer eller endda en mikrokontroller, der kører mikropython, så længe mikrokontrolleren har en eller anden mekanisme til at få den aktuelle dato/tid. Også enhver forstærket højttaler, eller endnu køligere et relæ / analog klokke, kunne bruges.
Trin 1: Konfigurer din Raspberry Pi
Der er et stort antal ressourcer til opsætning af en Raspberry Pi -computer, så jeg henviser dig til en, som Google finder. Det vigtige er, at din computer har en måde at få den korrekte dato og klokkeslæt på. De fleste moderne WiFi-aktiverede Raspberry Pi-computere bruger NTP-protokollen til at indstille tiden fra internettet, hvilket er den måde, jeg fik det korrekte tidspunkt på. Jeg konfigurerede min RPi til at være "hovedløs", hvilket betyder, at den ikke har tastatur eller skærm, men er tilgængelig via sikker skal (SSH) over internettet. Hvis du er god til RPi, kan du foretage denne opsætning uden tastatur / video / mus, men det er lettere at bare konfigurere pi'en med dette tilbehør.
Bemærk, at jeg ikke behøvede at bruge den grafiske grænseflade, så jeg downloadede lige "Raspberry Pi OS (32-bit) Lite", som er mindre og hurtigere at downloade og starte hurtigere.
Konfigurer Raspberry Pi's netværk og interfacemuligheder
$ sudo raspi-config
Gør følgende i konfigurationen:
- Skift adgangskode - gør dette først, forhåbentlig inden du går online!
-
I "Netværksindstillinger",
- Skift værtsnavn. Jeg brugte værtsnavnet: "skoleklokke".
- Opret forbindelse til dit trådløse LAN (hvis du ikke har gjort det i opsætningen)
- Under "Grænsefladeindstillinger" skal du aktivere SSH -adgang
- Det er altid godt at køre indstillingen "Opdater"
Når du har gjort dette og genstartet, skal du kunne oprette forbindelse til Raspberry Pi fra en anden computer på det samme lokale netværk ved hjælp af en SSH -klient. Opret forbindelse til det ved hjælp af følgende legitimationsoplysninger:
værtsnavn: skoleklokke. lokal
bruger: pi -adgangskode: hvad som helst angiver
Fra en linuxboks er dette lige så enkelt som at skrive denne kommandolinje ved $ prompten:
$ ssh [email protected]
… indtast adgangskode ved prompten
Det logger dig ind, og du kan kontrollere, at tiden på Raspberry Pi er korrekt. Skriv kommandoen dato på kommandolinjen, og kontroller svaret:
pi@skoleklokke: ~ $ dato
Tor 3 Sep 20:44:34 AKDT 2020
Forhåbentlig er dette den aktuelle tid. Hvis det ikke er korrekt, google om opsætning af NTP på Raspberry Pi.
Trin 2: Få dit lydsystem til at fungere
Vi kommer til at afspille MP3 -filer til klokkerne, så vi skal downloade software til at afkode disse lydfiler. Jeg fik mpg321 -pakken ved at skrive denne kommando:
pi@schoolbell: ~ $ sudo apt-get install mpg321
Følg vejledningen for at installere denne software.
Jeg brugte en gammel USB -højttaler, som havde en mærkelig driver og ikke helt automatisk blev konfigureret som standard lydkort, så jeg fandt ud af, at jeg kunne "hacke" højttaleren til at fungere ved at bruge dens hardware -adresse. Efter tilslutning af højttaleren brugte jeg kommandoen 'aplay -l' til at vise lydenheder:
pi@skoleklokke: ~ $ aplay -l
**** Liste over afspilning af hardwareenheder **** kort 0: Hovedtelefoner [bcm2835 hovedtelefoner], enhed 0: bcm2835 hovedtelefoner [bcm2835 hovedtelefoner] Underenheder: underenhed #0: underenhed #0 underenhed #1: underenhed #1 underenhed #2: underenhed #2 Underenhed #3: underenhed #3 Underenhed #4: underenhed #4 Underenhed #5: underenhed #5 Underenhed #6: underenhed #6 Underenhed #7: underenhed #7 kort 1: CODEC [USB Audio CODEC], enhed 0: USB -lyd [USB -lyd] Underenheder: Underenhed #0: underenhed #0
Den enhed, jeg ønsker, er den nederste, kort 1, enhed 0.
Jeg testede højttaleren med "højttalertest" ved hjælp af enheden "hw: 1, 0", hvilket betyder hardwarekort 1, enhed 0
pi@skoleklokke: ~ $ højttaler -test -D hw: 1, 0
Dette program udsender støj fra højttalerne. Nyd støjen, og skriv derefter kontrol-C, når du bliver irriteret. Hvis du ikke hører nogen støj, kan du prøve at google.
Nu har du lyd!
Trin 3: Test afspilning af klokke og/eller lav nye lyde
Til min klokke downloadede jeg "bing-bong" -lyden fra "freesound.org". Tak til Benboncan for at gøre denne lyd tilgængelig:
freesound.org/people/Benboncan/sounds/93646/
Du kan afspille lyden direkte. Jeg kunne direkte downloade en mp3 -version af denne fil ved at skrive denne kommando på Raspberry Pi -computeren (forudsat at den er på WiFi):
pi@schoolbell: ~ $ wget
Jeg omdøbte derefter denne fil:
pi@schoolbell: ~ $ mv 93646_634166-hq.mp3 bing-bong-chime-hq.mp3
Jeg testede derefter, at jeg kunne ringe på klokken med denne kommando (viser output):
pi@schoolbell: ~ $ mpg321 -a hw: 1, 0 bing-bong-chime-hq.mp3
Højtydende MPEG 1.0/2.0/2.5 lydafspiller til lag 1, 2 og 3. Version 0.3.2-1 (2012/03/25). Skrevet og ophavsret af Joe Drew, nu vedligeholdt af Nanakos Chrysostomos og andre. Bruger kode fra forskellige mennesker. Se 'README' for mere! DENNE SOFTWARE KOMMER MED ABSOLUT INGEN GARANTI! BRUG PÅ DIN EGEN RISIKO! Afspiller MPEG-stream fra bing-bong-chime-hq.mp3 … MPEG 1.0 lag III, 128 kbit/s, 44100 Hz mono [0:02] Afkodning af bing-bong-chime-hq.mp3 færdig.
Tillykke! Du har lyd.
Ved hjælp af lydredigerings-koden "frækhed" på min bærbare computer opdelte jeg filen i "bing" og "bong" for mere sjov. Du kan bruge enhver mp3 eller måske andet format (jeg har ikke testet andre) lydfiler.
Trin 4: Installer koden, og indstil dit skema
Koden er et python -script, der får den aktuelle dato/klokkeslæt, og hvis datoen er en hverdag og ikke en ferie, kontrollerer den, om klokkeslættet matcher en klokkeslæt, chiming om det skulle.
Først får du det til at fungere, derefter automatiserer du det til at køre hvert minut.
Download koden fra Github:
gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618
Jeg finder det let at gøre dette ved at gemme filen på en lokal computer og derefter bruge sikker kopi (scp) til at sætte den på Raspberry pi.
På din lokale maskine skal du kopiere koden fra din browser, derefter indsætte den i en tekstfil og gemme den med filnavnet "schoolbell.py". Scp derefter filen over:
lokal maskine: ~ $ scp schoolbell.py [email protected]: ~/
Du bliver bedt om at indtaste adgangskoden til brugeren pi på schoolbell.local - indtast adgangskoden, og filen kopieres sikkert. Denne kommando skal køres i den samme mappe, hvor python -scriptet blev gemt, og kopiere den til pi -brugerens hjemmemappe. Du kan ssh over til schoolbell.local, og koden skal være der:
lokal maskine: ~ $ ssh [email protected]
Angiv derefter filerne på schoolbell.local (du kan se flere filer):
pi@skoleklokke: ~ $ ls
bing-bong-chime-hq.mp3 skoleklokke.py
Rediger nu koden for at få den til at have din klokkeplan ved hjælp af en editor som pico:
pi@skoleklokke: ~ $ pico skoleklokke.py
Koden har tre "ordbøger", der definerer de ringetoner, der skal afspilles, de tidspunkter, de skal afspilles, og de helligdage, der skal undgås. Klokker i weekender springes automatisk over.
For eksempel er belltones -ordbogen:
ringetoner = {
'warn': 'bing-bong-chime-hq.mp3', 'start': 'bing-bong-chime-hq.mp3', 'end': 'bing-bong-chime-hq.mp3'}
Dette definerer tre typer klokker, en advarselsklokke, en start på klassen og en afslutning. Fordi vi kun har én klokke, peger de alle på den samme fil, men hvis du laver forskellige toner, kan du ændre dem. Du kan endda tilføje andre typer klokker. Jeg legede også med at bruge en talesyntesizer til at tale klokkerne, men det blev ikke set positivt af andre i huset.
Bellschedule -ordbogen ligner hinanden, men "nøglen" er nu tidspunktet for klokken. du skal bruge formatet HH: MM med førende nuller og 24-timers tid (militær tid).
bellschedule = {
'09: 00 ':' start ', #' Bus 'klokke for at gøre sig klar '09: 28': 'advare', … '13: 58 ':' advare ', # for periode 4 '14: 00 ':' start ', '15: 00': 'slut'}
Værdien i denne nøgle: værdipar er typen af klokketone, der skal bruges og skal matche en af de belltoner, der er defineret ovenfor.
Sidst viser ferieordbogen feriedatoer. Formatet er ÅÅÅÅ-mm-dd, med førende nuller som vist.
helligdage = {
'2020-09-07', …. '2021-03-11', '2021-03-12' }
Når du er færdig med at redigere, skal du gemme filen ved at forlade editoren og skrive ctrl-X, hvis du bruger pico.
Gør python -koden eksekverbar ved at:
pi@skoleklokke: ~ $ chmod a+x skoleklokke.py
Dette lader alle brugere eksekvere koden, "a" for alle, "+" for tilføjelse af tilladelse og "x" for udførelse.
Prøv nu koden og observer output. Bemærk, at du kan køre filen ved at skrive filnavnet, men du skal angive, at den er i det aktuelle bibliotek ved at skrive et "./" før filnavnet:
pi@skoleklokke: ~ $./schoolbell.py
Det er en skoledag, der tjekker 21:35
Koden fortæller dig, om det er en skoledag (f.eks. Ikke en ferie eller weekend) og ser, om klokkeslættet matcher en ringetid. I dette tilfælde var det ikke en klokketid, så det gik bare rent. Hvis det tilfældigvis var en ringetid, ville det have ringet.
For at teste, at din kode kan afspille klokker, skal du bruge kommandolinjefunktionen i en fil til at afspille. Vi vil bruge vores bing-bong-fil:
pi@schoolbell: ~/schoolbell $./schoolbell.py bing-bong-chime-hq.mp3
Det er en skoledag, der tjekker 21:38 Højtydende MPEG 1.0/2.0/2.5 lydafspiller til lag 1, 2 og 3. Version 0.3.2-1 (2012/03/25). Skrevet og ophavsret af Joe Drew, nu vedligeholdt af Nanakos Chrysostomos og andre. …. mere output ….
Du skulle have hørt klokken.
Test nu koden med en tid som argument. Husk at indtaste tiden med førende nuller. For eksempel, for at teste min "skolebus" -klokke klokken 9:00, skriver jeg:
pi@skoleklokke: ~ $./schoolbell.py 09:00
Dette burde få din klokke til at ringe! Du kan også teste, at den ikke ringer på tidspunkter uden klokke.
Trin 5: Automatiser løb med Crond
Cron 'daemon' er en planlægger, der kører gentagne opgaver på et linux -system. Den kontrollerer, om dato/klokkeslæt matcher et mønster i cron -tabellen (crontab) og kører derefter kode, hvis den gør det. Du kan redigere det ved hjælp af kommandoen "crontab -e":
pi@skoleklokke: ~ $ crontab -e
Dette åbner en fileditor, og i bunden af denne fil tilføjer du følgende linje:
* * * * * python3 /home/pi/schoolbell.py
Denne kommando fortæller cron at køre python3 og udføre dit script i den normale hjemmekatalog (/home/pi). De fem *'er siger, at dette skal køre hvert minut (første *), hver time (næste *…), hver dag i måneden, hver måned og hver dag i ugen.
Nu kører scriptet schoolbell.py hvert minut. I løbet af de fleste minutter kører koden og finder ud af, at den bare skal afslutte uden chiming, men hvis det viser sig at ramme en ringetid, vil den ringe.
Bemærk, at fordi cron kun kører hvert minut, kunne du ikke gøre klokkerne mere granulære end til minuttet. Jeg tror, det er teoretisk muligt, at hvis dit system går i stå, kan cron muligvis ikke køre i et par sekunder efter minutens top, hvilket gør klokken forsinket. Hvis cron på en eller anden måde ikke kørte i det fulde minut, ville klokken blive savnet.
Tip: Ved længere ferier (f.eks. Sommer) kan du tilføje et hashtag (#) til den første karakter i denne linje, hvilket gør den til en kommentar og dermed ignorerer at køre den. Når skolen er tilbage i sessionen, skal du bare fjerne #, og den begynder at køre igen.
Trin 6: Tilpas og nyd
Nu skal du have et fungerende hjemmeskoleklokke -system, og din elev må aldrig komme for sent til timen.
Du kan tilpasse dette projekt ved at ændre ringetonerne.
- Du kan få den til at ringe til Big Ben, med kvartalsvise klokker og ringe timer.
- Du kan prøve din yndlingsrappers freestyle.
- Du kan lave subliminale beskeder for at fokusere på at studere.
Vær sikker i denne tid med COVID.
Nummer to i familiekonkurrencen "Can't Touch This"
Anbefalede:
Arduino bil omvendt parkering alarmsystem - Trin for trin: 4 trin
Arduino bil omvendt parkering alarmsystem. Trin for trin: I dette projekt vil jeg designe en simpel Arduino bil omvendt parkeringssensorkreds ved hjælp af Arduino UNO og HC-SR04 ultralydssensor. Dette Arduino -baserede bilomvendt alarmsystem kan bruges til en autonom navigation, robotafstand og andre rækkevidde
Trin for trin pc -bygning: 9 trin
Trin for trin PC Building: Supplies: Hardware: MotherboardCPU & CPU -køler PSU (strømforsyningsenhed) Opbevaring (HDD/SSD) RAMGPU (ikke påkrævet) CaseTools: Skruetrækker ESD -armbånd/mathermal pasta m/applikator
Tre højttalerkredsløb -- Trin-for-trin vejledning: 3 trin
Tre højttalerkredsløb || Trin-for-trin vejledning: Højttalerkredsløb styrker lydsignalerne, der modtages fra miljøet til MIC og sender det til højttaleren, hvorfra forstærket lyd produceres. Her vil jeg vise dig tre forskellige måder at lave dette højttalerkredsløb på:
Trin-for-trin uddannelse i robotik med et sæt: 6 trin
Trin-for-trin uddannelse i robotteknologi med et kit: Efter ganske få måneder med at bygge min egen robot (se alle disse), og efter at jeg to gange havde dele mislykkedes, besluttede jeg at tage et skridt tilbage og tænke min strategi og retning. De flere måneders erfaring var til tider meget givende, og
Akustisk levitation med Arduino Uno trin for trin (8 trin): 8 trin
Akustisk levitation med Arduino Uno Step-by Step (8-trin): ultralyds lydtransducere L298N Dc kvindelig adapter strømforsyning med en han-DC-pin Arduino UNOBreadboard Sådan fungerer det: Først uploader du kode til Arduino Uno (det er en mikrokontroller udstyret med digital og analoge porte til konvertering af kode (C ++)