Indholdsfortegnelse:

Skoleklokke for fjernstuderende: 6 trin
Skoleklokke for fjernstuderende: 6 trin

Video: Skoleklokke for fjernstuderende: 6 trin

Video: Skoleklokke for fjernstuderende: 6 trin
Video: koolikell - skoleklokke 2024, November
Anonim
Skoleklokke for fjernstuderende
Skoleklokke for fjernstuderende

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

Opsæt din Raspberry Pi
Opsæt 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

Få dit lydsystem til at fungere
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

Test afspilning af klokke og/eller lav nye lyde
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

Installer koden og indstil dit skema
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

Automatiser løb med Crond
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.

Billede
Billede
Billede
Billede

Nummer to i familiekonkurrencen "Can't Touch This"

Anbefalede: