Innehållsförteckning:
- Tillbehör
- Steg 1: Konfigurera din Raspberry Pi
- Steg 2: Få ditt ljudsystem att fungera
- Steg 3: Testa uppspelning av klockljud och/eller skapa nya ljud
- Steg 4: Installera koden och ställ in ditt schema
- Steg 5: Automatisera körningen med Crond
- Steg 6: Anpassa och njut
Video: Skolklocka för distansstudenter: 6 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:37
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
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
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
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
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
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.
Andraplats i familjekonkurrensen "Can't Touch This"
Rekommenderad:
Inställning för extern Bluetooth GPS -leverantör för Android -enheter: 8 steg
Inställning för extern Bluetooth GPS-leverantör för Android-enheter: Den här instruktionsboken kommer att förklara hur du skapar din egen externa Bluetooth-aktiverade GPS för din telefon, tänd vad som helst för ungefär $ 10. Materialräkning: NEO 6M U-blox GPSHC-05 bluetooth-modul Kunskap om gränssnitt Blutooth LavenergimodulerArdui
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): 8 steg
Akustisk levitation med Arduino Uno Steg-för-steg (8-steg): ultraljudsgivare L298N Dc kvinnlig adapter strömförsörjning med en manlig DC-pin Arduino UNOBreadboardHur det fungerar: Först laddar du upp kod till Arduino Uno (det är en mikrokontroller utrustad med digital och analoga portar för att konvertera kod (C ++)
Väggfäste för iPad som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: 4 steg (med bilder)
Väggfäste för iPad Som kontrollpanel för hemautomation, med servostyrd magnet för att aktivera skärmen: På senare tid har jag ägnat ganska mycket tid åt att automatisera saker i och runt mitt hus. Jag använder Domoticz som min hemautomationsapplikation, se www.domoticz.com för mer information. I min sökning efter en instrumentpanelapplikation som visar all Domoticz -information tillsammans
Övertyga dig själv om att bara använda en 12V-till-AC-omriktare för LED-ljussträngar istället för att koppla om dem för 12V: 3 steg
Övertyga dig själv om att bara använda en 12V-till-AC-linjeomvandlare för LED-ljussträngar istället för att koppla om dem för 12V: Min plan var enkel. Jag ville klippa upp en väggdriven LED-ljussträng i bitar och sedan dra om den för att gå av 12 volt. Alternativet var att använda en kraftomvandlare, men vi vet alla att de är fruktansvärt ineffektiva, eller hur? Höger? Eller är de det?
1.5A linjär regulator för konstant ström för lysdioder för: 6 steg
1.5A linjär regulator för konstant ström för lysdioder för: Så det finns massor av instruktioner som täcker användning av LED -lampor med hög ljusstyrka. Många av dem använder den kommersiellt tillgängliga Buckpuck från Luxdrive. Många av dem använder också linjära regleringskretsar som toppar vid 350 mA eftersom de är mycket ineffektiva