Innehållsförteckning:

Skolklocka för distansstudenter: 6 steg
Skolklocka för distansstudenter: 6 steg

Video: Skolklocka för distansstudenter: 6 steg

Video: Skolklocka för distansstudenter: 6 steg
Video: 6 steg mot en lyckad arbetsplatsstrategi 2024, December
Anonim
Skolklocka för distansstudenter
Skolklocka för distansstudenter

Med COVID-19-pandemin har många barnskolor gått till distansleverans. Denna hemmaskolklocka är ett roligt sätt att hålla sig på schemat som använder en Raspberry Pi och en USB -högtalare. Du kan göra det med ditt barn och de kan lära sig om programmering och kan "ringa på klockan". Jag byggde detta för min dotter som går i 7: e klass (för närvarande via distansleverans), och det fungerar bra att hålla oss i tid.

Tillbehör

För detta projekt behöver du:

  • En Raspberry Pi -dator - Det fungerar bäst om du har WiFi, jag använde en RPi 3B från ett Kano -kit
  • En högtalare - jag använde en USB -högtalare

Koden kan enkelt köras på din students Linux -dator eller till och med en mikrokontroller som kör mikropyton, så länge mikrokontrollern har någon mekanism för att få aktuellt datum/tid. Även vilken förstärkt högtalare som helst, eller ännu kallare ett relä / analog klocka, kan användas.

Steg 1: Konfigurera din Raspberry Pi

Konfigurera din Raspberry Pi
Konfigurera din Raspberry Pi

Det finns ett stort antal resurser för att konfigurera en Raspberry Pi -dator, så jag hänvisar dig till en som Google hittar. Det viktiga är att din dator har ett sätt att få rätt datum och tid. De flesta moderna WiFi-aktiverade Raspberry Pi-datorer använder NTP-protokollet för att ställa in tiden från internet, vilket är hur jag fick rätt tid. Jag ställde in min RPi för att vara "huvudlös", vilket betyder att den inte har något tangentbord eller bildskärm, men är tillgänglig med ett säkert skal (SSH) över internet. Om du är bra med RPi kan du göra denna inställning utan tangentbord / video / mus, men det är lättare att bara ställa in pi med dessa tillbehör.

Observera att jag inte behövde använda det grafiska gränssnittet, så jag laddade bara ner "Raspberry Pi OS (32-bit) Lite", som är mindre och snabbare att ladda ner och startar snabbare.

Konfigurera Raspberry Pi: s nätverk och gränssnittsalternativ

$ sudo raspi-config

Gör följande i konfigurationen:

  • Byt lösenord - gör det här först, förhoppningsvis innan du går online!
  • I "Nätverksalternativ",

    • Ändra värdnamnet. Jag använde värdnamnet: "skolklocka".
    • Anslut till ditt trådlösa LAN (om du inte har gjort det i installationen)
  • Aktivera SSH -åtkomst under "Gränssnittsalternativ"
  • Det är alltid bra att köra alternativet "Uppdatera"

När du har gjort detta och startat om bör du kunna ansluta till Raspberry Pi från en annan dator på samma lokala nätverk med en SSH -klient. Anslut till den med hjälp av följande referenser:

värdnamn: skolklocka. lokal

användare: pi -lösenord: whateveryousetitas

Från en linuxlåda är det så enkelt som att skriva den här kommandoraden vid $ prompten:

$ ssh [email protected]

… ange lösenordet vid prompten

Det loggar in dig och du kan kontrollera att tiden på Raspberry Pi är korrekt. Skriv kommandot datum på kommandoraden och kontrollera svaret:

pi@skolklocka: ~ $ datum

Tor 3 sep 20:44:34 AKDT 2020

Förhoppningsvis är detta den aktuella tiden. Om det inte är korrekt, google om att konfigurera NTP på Raspberry Pi.

Steg 2: Få ditt ljudsystem att fungera

Få ditt ljudsystem att fungera
Få ditt ljudsystem att fungera

Vi kommer att spela MP3 -filer för klockorna, så vi måste ladda ner programvara för att avkoda dessa ljudfiler. Jag fick paketet mpg321 genom att skriva detta kommando:

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

Följ anvisningarna för att installera denna programvara.

Jag använde en gammal USB -högtalare, som hade en konstig drivrutin och inte helt konfigurerades automatiskt som standardljudkort, så jag fann att jag kunde "hacka" högtalaren för att fungera med hjälp av maskinvaruadressen. Efter att ha anslutit högtalaren använde jag kommandot 'aplay -l' för att lista ljudenheter:

pi@skolklocka: ~ $ aplay -l

**** Lista över PLAYBACK -hårdvaruenheter **** kort 0: Hörlurar [bcm2835 hörlurar], enhet 0: bcm2835 hörlurar [bcm2835 hörlurar] Underenheter: underenhet #0: underenhet #0 underenhet #1: underenhet #1 underenhet #2: underenhet #2 Underenhet #3: underenhet #3 Underenhet #4: underenhet #4 Underenhet #5: underenhet #5 Underenhet #6: underenhet #6 Underenhet #7: underenhet #7 kort 1: CODEC [USB Audio CODEC], enhet 0: USB -ljud [USB -ljud] Underenheter: Underenhet #0: underenhet #0

Enheten jag vill ha är den nedre, kort 1, enhet 0.

Jag testade högtalaren med "högtalartest", med enheten "hw: 1, 0", vilket betyder hårdvarukort 1, enhet 0

pi@skolklocka: ~ $ högtalartest -D hw: 1, 0

Detta program släpper ut ljud från högtalarna. Njut av bullret och skriv sedan kontroll-C när du blir irriterad. Om du inte hör något ljud kan du testa att googla.

Nu har du ljud!

Steg 3: Testa uppspelning av klockljud och/eller skapa nya ljud

Testa uppspelning av klockljud och/eller skapa nya ljud
Testa uppspelning av klockljud och/eller skapa nya ljud

För min klocka laddade jag ner "bing-bong" -ljudet från "freesound.org". Tack till Benboncan för att göra detta ljud tillgängligt:

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

Du kan spela ljudet direkt. Jag kunde direkt ladda ner en mp3 -version av den här filen genom att skriva detta kommando på Raspberry Pi -datorn (förutsatt att den är på WiFi):

pi@schoolbell: ~ $ wget

Jag bytte sedan namn på den här filen:

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

Jag testade sedan att jag kunde ringa klockan med det här kommandot (visar utdata):

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

Högpresterande MPEG 1.0/2.0/2.5 ljudspelare för lager 1, 2 och 3. Version 0.3.2-1 (2012/03/25). Skrivet och upphovsrätt av Joe Drew, nu underhållet av Nanakos Chrysostomos och andra. Använder kod från olika personer. Se "README" för mer! DENNA PROGRAMVARA KOMMER MED ABSOLUT INGEN GARANTI! ANVÄND PÅ EGEN RISK! Spelar MPEG-ström från bing-bong-chime-hq.mp3 … MPEG 1.0 lager III, 128 kbit/s, 44100 Hz mono [0:02] Avkodning av bing-bong-chime-hq.mp3 klar.

grattis! Du har ljud.

Med hjälp av ljudredigerande koden "audacity" på min bärbara dator delade jag upp filen i "bing" och "bong" för mer skoj. Du kan använda vilken som helst mp3 eller kanske annat format (jag har inte testat andra) ljudfiler.

Steg 4: Installera koden och ställ in ditt schema

Installera koden och ställ in ditt schema
Installera koden och ställ in ditt schema

Koden är ett python -skript som får aktuellt datum/tid och om datumet är en vardag och inte en helgdag, kontrollerar det om tiden matchar en klocka, chimar om den ska.

Först får du det att fungera, sedan kommer du att automatisera det för att köras varje minut.

Ladda ner koden från Github:

gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618

Jag tycker att det är enkelt att göra detta genom att spara filen på en lokal dator och sedan använda säker kopia (scp) för att lägga den på Raspberry pi.

Kopiera koden från din webbläsare på din lokala dator, klistra in den i en textfil och spara den med filnamnet "schoolbell.py". Scp sedan filen över:

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

Du kommer att bli ombedd att ange lösenordet för användarens pi på schoolbell.local - ange lösenordet och filen kopieras säkert. Detta kommando ska köras i samma katalog som python -skriptet sparades och kopiera det till pi -användarens hemkatalog. Du kan ssh över till schoolbell.local och koden ska finnas där:

lokal maskin: ~ $ ssh [email protected]

Lista sedan filerna på schoolbell.local (du kan se fler filer):

pi@skolklocka: ~ $ ls

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

Redigera nu koden så att den får ditt klockschema med hjälp av en redaktör som pico:

pi@skolklocka: ~ $ pico skolklocka.py

Koden har tre "ordböcker" som definierar klocksignalerna som ska spelas, tiderna för att spela dem och helgdagarna som ska undvikas. Klockor på helger hoppas automatiskt över.

Till exempel är belltones -ordlistan:

belltones = {

'varna': 'bing-bong-chime-hq.mp3', 'start': 'bing-bong-chime-hq.mp3', 'end': 'bing-bong-chime-hq.mp3'}

Detta definierar tre typer av klockor, en varningsklocka, en klassstart och ett slut. Eftersom vi bara har en klocksignal pekar de alla på samma fil, men om du gör olika toner kan du ändra dem. Du kan till och med lägga till andra typer av klockfärger. Jag lekte också med att använda en talsyntes för att tala klockorna, men det betraktades inte positivt av andra i huset.

Bellschedule -ordlistan är liknande, men "nyckeln" är nu tiden för klockan. du måste använda formatet HH: MM med ledande nollor och 24-timmars tid (militär tid).

bellschedule = {

'09: 00 ':' start ', #' buss 'klocka för att göra sig redo '09: 28': 'varna', … '13: 58 ':' varna ', # för period 4 '14: 00 ':' start ', '15: 00': 'slut'}

Värdet i denna nyckel: värdepar är den typ av klocksignal som ska användas och måste matcha en av de belltoner som definierats ovan.

Sist listar semesterordlistan semesterdatum. Formatet är ÅÅÅÅ-mm-dd, med ledande nollor som visas.

semester = {

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

När du har redigerat, spara filen genom att lämna redigeraren och skriva ctrl-X om du använder pico.

Gör pythonkoden körbar med:

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

Detta låter alla användare köra koden, "a" för alla, "+" för att lägga till behörighet och "x" för att köra.

Testkör nu koden och observera utdata. Observera att du kan köra filen genom att skriva filnamnet men måste ange att den finns i den aktuella katalogen genom att skriva "./" före filnamnet:

pi@skolklocka: ~ $./schoolbell.py

Det är en skoldag, kontrolltid 21:35

Koden berättar om det är en skoldag (t.ex. inte en semester eller helg) och ser om tiden matchar en klocka. I det här fallet var det inte en klocka, så det gick bara rent. Om det råkade bli en klocka hade det ringt.

För att testa att din kod kan spela klockor, använd kommandoradsalternativet för en fil för att spela. Vi kommer att använda vår bing-bong-fil:

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

Det är en skoldag, kontrolltid 21:38 High Performance MPEG 1.0/2.0/2.5 Audio Player för Layer 1, 2 och 3. Version 0.3.2-1 (2012/03/25). Skrivet och upphovsrätt av Joe Drew, nu underhållet av Nanakos Chrysostomos och andra. …. mer effekt ….

Du borde ha hört klockan.

Testa nu koden med hjälp av en tid som argument. Kom ihåg att ange tiden med ledande nollor. Till exempel, för att testa min "skolbuss" -klocka kl 9, skriver jag:

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

Detta borde få din klocka att ringa! Du kan också testa att den inte ringer vid icke-ringklockor.

Steg 5: Automatisera körningen med Crond

Automatisera löpningen med Crond
Automatisera löpningen med Crond

Cron 'daemon' är en schemaläggare som kör repetitiva uppgifter på ett linux -system. Det kontrollerar om datum/tid matchar ett mönster i cron -tabellen (crontab) och kör sedan kod om det gör det. Du kan redigera det med kommandot "crontab -e":

pi@skolklocka: ~ $ crontab -e

Detta öppnar en filredigerare, och längst ned i filen lägger du till följande rad:

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

Det här kommandot talar om för cron att köra python3 som kör ditt skript i den vanliga hemkatalogen (/home/pi). De fem *: erna säger att detta bör köras varje minut (första *), varje timme (nästa *…), varje dag i månaden, varje månad och varje dag i veckan.

Nu, varje minut körs skriptet schoolbell.py. Under de flesta minuter kommer koden att köras och hitta att den bara ska sluta utan att ringa, men om det visar sig att den slår en klocka, kommer den att ringa.

Observera att eftersom cron bara går varje minut kan du inte göra klockorna mer granulära än till minuten. Jag tror att det är teoretiskt möjligt att om ditt system fastnar kan cron kanske inte köras på några sekunder efter minutens topp, vilket gör klockan sen. Om cron på något sätt inte körde under hela minuten, skulle klockan saknas.

Tips: För längre semester (t.ex. sommar) kan du lägga till en hashtag (#) till det första tecknet på den här raden, vilket gör den till en kommentar och därmed ignorerar att köra den. När skolan är tillbaka i sessionen, ta bara bort # och det börjar köra igen.

Steg 6: Anpassa och njut

Nu bör du ha ett fungerande hemskolans klocksystem och din elev ska aldrig vara sen till lektionen.

Du kan anpassa det här projektet genom att ändra klocksignalerna.

  • Du kan få den att ringa till Big Ben, med kvartalsvisa klockor och ringa ut timmarna.
  • Du kan prova din favoritrappers freestyle.
  • Du kan göra subliminella meddelanden för att fokusera på att studera.

Var säker i denna tid av COVID.

Bild
Bild
Bild
Bild

Andraplats i familjekonkurrensen "Can't Touch This"

Rekommenderad: