Innholdsfortegnelse:

Skoleklokke for fjernstudenter: 6 trinn
Skoleklokke for fjernstudenter: 6 trinn

Video: Skoleklokke for fjernstudenter: 6 trinn

Video: Skoleklokke for fjernstudenter: 6 trinn
Video: SIST DAGEN PÅ SKOLEN PÅ GREVESKOGEN 2024, Juli
Anonim
Skoleklokke for fjernstudenter
Skoleklokke for fjernstudenter

Med COVID-19-pandemien har mange barneskoler gått til levering på distanse. Denne hjemmeskoleklokken er en morsom måte å følge planen som bruker en Raspberry Pi og en USB -høyttaler. Du kan lage det sammen med barnet ditt, og de kan lære om programmering og kan "ringe". Jeg bygde dette for datteren min som går i 7. klasse (for tiden via distanselevering), og det fungerer bra for å holde oss i tide.

Rekvisita

For dette prosjektet trenger du:

  • En Raspberry Pi -datamaskin - Det fungerer best hvis du har WiFi, jeg brukte en RPi 3B fra et Kano -sett
  • En høyttaler - jeg brukte en USB -høyttaler

Koden kan enkelt kjøres på studentens linux -datamaskin eller til og med en mikrokontroller som kjører mikropyton, så lenge mikrokontrolleren har en mekanisme for å få gjeldende dato/klokkeslett. Også hvilken som helst forsterket høyttaler, eller enda kjøligere et relé / analog klokke, kan brukes.

Trinn 1: Sett opp din Raspberry Pi

Sett opp din Raspberry Pi
Sett opp din Raspberry Pi

Det er et stort antall ressurser for å sette opp en Raspberry Pi -datamaskin, så jeg henviser deg til en som Google finner. Det viktige er at datamaskinen din har en måte å få riktig dato og klokkeslett. De fleste moderne WiFi-aktiverte Raspberry Pi-datamaskiner bruker NTP-protokollen til å angi tiden fra internett, som er måten jeg fikk riktig tid. Jeg konfigurerte RPi -en min til å være "hodeløs", noe som betyr at den ikke har tastatur eller skjerm, men er tilgjengelig via sikkert skall (SSH) over internett. Hvis du er flink med RPi, kan du gjøre dette oppsettet uten tastatur / video / mus, men det er lettere å bare sette opp pi med det tilbehøret.

Vær oppmerksom på at jeg ikke trengte å bruke det grafiske grensesnittet, så jeg lastet bare ned "Raspberry Pi OS (32-bit) Lite", som er mindre og raskere å laste ned og starte raskere.

Konfigurer Raspberry Pi's nettverk og grensesnittalternativer

$ sudo raspi-config

Gjør følgende i konfigurasjonen:

  • Endre passord - gjør dette først, forhåpentligvis før du går på nettet!
  • I "Nettverksalternativer",

    • Endre vertsnavnet. Jeg brukte vertsnavnet: "skoleklokke".
    • Koble til ditt trådløse LAN (hvis du ikke har gjort det i oppsettet)
  • Slå på SSH -tilgang under "Grensesnittalternativer"
  • Det er alltid godt å kjøre alternativet "Oppdater"

Når du har gjort dette og startet på nytt, bør du kunne koble til Raspberry Pi fra en annen datamaskin på det samme lokale nettverket ved å bruke en SSH -klient. Koble til den ved å bruke følgende legitimasjon:

vertsnavn: schoolbell.local

bruker: pi passord: whateveryousetitas

Fra en linux -boks er dette så enkelt som å skrive denne kommandolinjen ved $ prompt:

$ ssh [email protected]

… skriv inn passordet når du blir bedt om det

Det vil logge deg på, og du kan sjekke at tiden på Raspberry Pi er riktig. Skriv inn kommandoen dato på kommandolinjen, og kontroller svaret:

pi@skoleklokke: ~ $ date

Tor 3 Sep 20:44:34 AKDT 2020

Forhåpentligvis er dette den nåværende tiden. Hvis det ikke er riktig, kan du google om å sette opp NTP på Raspberry Pi.

Trinn 2: Få lydsystemet til å fungere

Få lydsystemet ditt til å fungere
Få lydsystemet ditt til å fungere

Vi skal spille MP3 -filer for klokkene, så vi må laste ned programvare for å dekode disse lydfilene. Jeg fikk mpg321 -pakken ved å skrive denne kommandoen:

pi@schoolbell: ~ $ sudo apt-get install mpg321

Følg instruksjonene for å installere denne programvaren.

Jeg brukte en gammel USB -høyttaler, som hadde en merkelig driver og ikke helt automatisk konfigurerte som standard lydkort, så jeg fant ut at jeg kunne "hacke" høyttaleren til å fungere ved å bruke maskinvareadressen. Etter å ha plugget inn høyttaleren, brukte jeg kommandoen 'aplay -l' for å vise lydenheter:

pi@skoleklokke: ~ $ aplay -l

**** Liste over PLAYBACK -maskinvareenheter **** kort 0: Hodetelefoner [bcm2835 hodetelefoner], enhet 0: bcm2835 hodetelefoner [bcm2835 hodetelefoner] Underenheter: underenhet #0: underenhet #0 underenhet #1: underenhet #1 underenhet #2 2 0: USB -lyd [USB -lyd] Underenheter: Underenhet #0: underenhet #0

Enheten jeg vil ha er den nedre, kort 1, enhet 0.

Jeg testet høyttaleren med "høyttalertest", ved hjelp av enheten "hw: 1, 0", som betyr maskinvarekort 1, enhet 0

pi@schoolbell: ~ $ speaker -test -D hw: 1, 0

Dette programmet gir lyd fra høyttalerne. Nyt støyen, og skriv deretter inn kontroll-C når du blir irritert. Hvis du ikke hører noen støy, kan du prøve google.

Nå har du lyd!

Trinn 3: Test avspilling av bellelyder og/eller lag nye lyder

Test avspilling av ringelyder og/eller lag nye lyder
Test avspilling av ringelyder og/eller lag nye lyder

For klokken min lastet jeg ned "bing-bong" -lyden fra "freesound.org". Takk til Benboncan for å gjøre denne lyden tilgjengelig:

freesound.org/people/Benboncan/sounds/93646/

Du kan spille lyden direkte. Jeg kunne laste ned en mp3 -versjon av denne filen direkte ved å skrive denne kommandoen på Raspberry Pi -datamaskinen (forutsatt at den er på WiFi):

pi@schoolbell: ~ $ wget

Jeg ga nytt navn til denne filen:

pi@schoolbell: ~ $ mv 93646_634166-hq.mp3 bing-bong-chime-hq.mp3

Jeg testet deretter at jeg kunne ringe med denne kommandoen (viser utdata):

pi@schoolbell: ~ $ mpg321 -a hw: 1, 0 bing-bong-chime-hq.mp3

Høy ytelse MPEG 1.0/2.0/2.5 lydspiller for lag 1, 2 og 3. Versjon 0.3.2-1 (2012/03/25). Skrevet og opphavsrett av Joe Drew, nå vedlikeholdt av Nanakos Chrysostomos og andre. Bruker kode fra forskjellige mennesker. Se "README" for mer! DENNE PROGRAMVAREN KOMMER MED ABSOLUTT INGEN GARANTI! BRUK PÅ DIN EGEN RISIKO! Spiller MPEG-strøm fra bing-bong-chime-hq.mp3 … MPEG 1.0-lag III, 128 kbit/s, 44100 Hz mono [0:02] Dekoding av bing-bong-chime-hq.mp3 ferdig.

Gratulerer! Du har lyd.

Ved å bruke lydredigerings-koden "audacity" på den bærbare datamaskinen min, delte jeg filen i "bing" og "bong" for mer moro. Du kan bruke hvilken som helst mp3 eller kanskje annet format (jeg har ikke testet andre) lydfiler.

Trinn 4: Installer koden og angi timeplanen

Installer koden og angi timeplanen din
Installer koden og angi timeplanen din

Koden er et python -skript som får gjeldende dato/klokkeslett, og hvis datoen er en ukedag og ikke en ferie, sjekker den om klokken samsvarer med en klokkeslett, hvis den skal.

Først får du det til å fungere, deretter vil du automatisere det til å kjøre hvert minutt.

Last ned koden fra Github:

gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618

Jeg synes det er enkelt å gjøre dette ved å lagre filen på en lokal datamaskin og deretter bruke sikker kopi (scp) for å sette den på Raspberry pi.

På din lokale maskin, kopier koden fra nettleseren, lim den inn i en tekstfil og lagre den med filnavnet "schoolbell.py". Scp deretter filen over:

lokal maskin: ~ $ scp schoolbell.py [email protected]: ~/

Du blir bedt om å skrive inn passordet for brukeren pi på schoolbell.local - skriv inn passordet, og filen blir kopiert sikkert. Denne kommandoen skal kjøres i den samme katalogen som python -skriptet ble lagret, og kopiere den til hjemmekatalogen til pi -brukeren. Du kan overføre til schoolbell.local og koden skal være der:

lokal maskin: ~ $ ssh [email protected]

Deretter viser du filene på schoolbell.local (du kan se flere filer):

pi@skoleklokke: ~ $ ls

bing-bong-chime-hq.mp3 skoleklokke.py

Rediger nå koden for å få den til å ha klokkeskjemaet ditt ved å bruke en redaktør som pico:

pi@skoleklokke: ~ $ pico skoleklokke.py

Koden har tre "ordbøker" som definerer ringetonene som skal spilles, tidspunktene de skal spilles av og ferien som skal unngås. Bells i helgene hoppes automatisk over.

For eksempel er belltones -ordboken:

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 slutt. Fordi vi bare har én ringetone, peker de alle på den samme filen, men hvis du lager forskjellige toner, kan du endre dem. Du kan til og med legge til andre typer ringetoner. Jeg lekte også med å bruke en talesynteser for å snakke klokkene, men det ble ikke sett positivt på av andre i huset.

Bellschedule -ordboken er lik, men "nøkkelen" er nå tiden for bjellen. du må bruke formatet HH: MM med ledende nuller og 24-timers tid (militær tid).

bellschedule = {

'09: 00 ':' start ', #' buss 'klokke for å gjøre seg klar '09: 28': 'advarsel', … '13: 58 ':' advarsel ', # for periode 4 '14: 00 ':' start ', '15: 00': 'slutt'}

Verdien i denne nøkkelen: verdipar er typen ringetone som skal brukes og må matche en av ringetonene som er definert ovenfor.

Sist viser ferieordboken feriedatoene. Formatet er ÅÅÅÅ-mm-dd, med ledende nuller som vist.

helligdager = {

'2020-09-07', …. '2021-03-11', '2021-03-12' }

Når du er ferdig med å redigere, lagrer du filen ved å gå ut av redigeringsprogrammet og skrive ctrl-X hvis du bruker pico.

Gjør pythonkoden kjørbar ved å:

pi@skoleklokke: ~ $ chmod a+x skoleklokke.py

Dette lar alle brukere kjøre koden, "a" for alle, "+" for å legge til tillatelse og "x" for å utføre.

Prøvkjør nå koden og observer utgangen. Vær oppmerksom på at du kan kjøre filen ved å skrive inn filnavnet, men du må angi at den er i den nåværende katalogen ved å skrive "./" før filnavnet:

pi@skoleklokke: ~ $./schoolbell.py

Det er en skoledag, sjekk klokken 21:35

Koden vil fortelle deg om det er en skoledag (f.eks. Ikke en ferie eller helg) og se om tiden samsvarer med en ringetid. I dette tilfellet var det ikke klokketid, så det gikk bare rent. Hvis det var en klokketid, ville det ha ringt.

For å teste at koden din kan spille klokker, bruker du kommandolinjealternativet i en fil for å spille. Vi vil bruke vår bing-bong-fil:

pi@schoolbell: ~/schoolbell $./schoolbell.py bing-bong-chime-hq.mp3

Det er en skoledag, og sjekker tiden 21:38 High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 og 3. Versjon 0.3.2-1 (2012/03/25). Skrevet og opphavsrett av Joe Drew, nå vedlikeholdt av Nanakos Chrysostomos og andre. …. mer output ….

Du burde ha hørt klokken.

Test nå koden med en tid som argument. Husk å angi tiden med ledende nuller. For eksempel, for å teste "skolebuss" -klokken min klokken 09.00, skriver jeg:

pi@skoleklokke: ~ $./schoolbell.py 09:00

Dette bør få klokken til å ringe! Du kan også teste at den ikke ringer på tider uten ringeklokke.

Trinn 5: Automatiser løpingen med Crond

Automatiser løpingen med Crond
Automatiser løpingen med Crond

Cron 'daemon' er en planlegger som kjører repetitive oppgaver på et linux -system. Den sjekker om datoen/klokkeslettet samsvarer med et mønster i cron -tabellen (crontab) og kjører deretter kode hvis den gjør det. Du kan redigere det ved å bruke kommandoen "crontab -e":

pi@skoleklokke: ~ $ crontab -e

Dette åpner et filredigeringsprogram, og nederst i denne filen vil du legge til følgende linje:

* * * * * python3 /home/pi/schoolbell.py

Denne kommandoen forteller cron å kjøre python3 og kjøre skriptet i den normale hjemmekatalogen (/home/pi). De fem *-erne sier at dette skal gå hvert minutt (første *), hver time (neste *…), hver dag i måneden, hver måned og hver dag i uken.

Nå, hvert minutt vil scriptet til bellbell.py kjøres. I løpet av de fleste minuttene vil koden kjøre og finne at den bare skal slutte uten å kalle, men hvis det viser seg å slå en ringetid, vil den ringe.

Vær oppmerksom på at fordi cron bare går hvert minutt, kan du ikke gjøre klokkene mer granulære enn til minuttet. Jeg tror det er teoretisk mulig at hvis systemet går i klemme, kan det hende at cron ikke kjører på noen få sekunder etter toppen av minuttet, noe som gjør klokken sen. Hvis cron på en eller annen måte ikke kjørte i hele minuttet, ville klokken bli savnet.

Tips: For lengre ferier (f.eks. Sommer) kan du legge til en hashtag (#) til det første tegnet på denne linjen, som gjør den til en kommentar og dermed ignorerer å kjøre den. Når skolen er tilbake i økt, fjerner du bare #, og den begynner å kjøre igjen.

Trinn 6: Tilpass og nyt

Nå bør du ha et fungerende hjemmeskoleklokkesystem, og eleven din skal aldri komme for sent til timen.

Du kan tilpasse dette prosjektet ved å endre ringetonene.

  • Du kan få den til å ringe Big Ben, med kvartalsvise klokker og ringe ut timene.
  • Du kan prøve din favoritt rappers freestyle.
  • Du kan lage subliminale meldinger for å fokusere på å studere.

Vær trygg i denne tiden av COVID.

Bilde
Bilde
Bilde
Bilde

Andreplass i familiekonkurransen "Can't Touch This"

Anbefalt: