Inhoudsopgave:

Schoolbel voor leerlingen op afstand: 6 stappen
Schoolbel voor leerlingen op afstand: 6 stappen

Video: Schoolbel voor leerlingen op afstand: 6 stappen

Video: Schoolbel voor leerlingen op afstand: 6 stappen
Video: LEERLING STAAT NAAKT OP INTERNET 2024, Juli-
Anonim
Schoolbel voor afstandsstudenten
Schoolbel voor afstandsstudenten

Met de COVID-19-pandemie zijn veel kinderscholen overgegaan op bezorging op afstand. Deze schoolbel voor thuis is een leuke manier om op schema te blijven met een Raspberry Pi en een USB-luidspreker. Je kunt het samen met je kind maken en ze kunnen leren programmeren en "aanbellen". Ik heb dit gebouwd voor mijn dochter die naar de 7e klas gaat (momenteel via levering op afstand), en het werkt goed om ons op tijd te houden.

Benodigdheden

Voor dit project heb je nodig:

  • Een Raspberry Pi-computer -- Het werkt het beste als je wifi hebt, ik heb een RPi 3B uit een Kano-kit gebruikt
  • Een luidspreker -- Ik gebruikte een USB-luidspreker

De code kan gemakkelijk worden uitgevoerd op de Linux-computer van uw student of zelfs op een microcontroller met micropython, zolang de microcontroller een of ander mechanisme heeft om de huidige datum/tijd te krijgen. Ook elke versterkte luidspreker, of nog cooler, een relais / analoge bel, kan worden gebruikt.

Stap 1: Stel uw Raspberry Pi in

Stel je Raspberry Pi in
Stel je Raspberry Pi in

Er zijn een groot aantal bronnen voor het opzetten van een Raspberry Pi-computer, dus ik verwijs je naar een die Google vindt. Het belangrijkste is dat uw computer een manier heeft om de juiste datum en tijd te krijgen. De meeste moderne Raspberry Pi-computers met WiFi gebruiken het NTP-protocol om de tijd van internet in te stellen, en dat is de manier waarop ik de juiste tijd kreeg. Ik heb mijn RPi ingesteld om "headless" te zijn, wat betekent dat hij geen toetsenbord of monitor heeft, maar toegankelijk is via een beveiligde shell (SSH) via internet. Als je goed bent met RPi, kun je deze setup doen zonder toetsenbord / video / muis, maar het is gemakkelijker om de pi gewoon met die accessoires in te stellen.

Merk op dat ik de grafische interface niet hoefde te gebruiken, dus ik heb zojuist de "Raspberry Pi OS (32-bit) Lite" gedownload, die kleiner en sneller is om te downloaden en sneller opstart.

Configureer het netwerk en de interface-opties van de Raspberry Pi

$ sudo raspi-config

Doe het volgende in de configuratie:

  • Wijzig het wachtwoord -- doe dit eerst, hopelijk voordat u online gaat!
  • In "Netwerkopties"

    • Wijzig de hostnaam. Ik gebruikte de hostnaam: "schoolbel".
    • Maak verbinding met uw draadloze LAN (als u dat nog niet hebt gedaan in de installatie)
  • Schakel onder "Interfacing-opties" SSH-toegang in
  • Het is altijd goed om de optie "Update" uit te voeren

Nadat je dit hebt gedaan en opnieuw hebt opgestart, zou je met een SSH-client vanaf een andere computer op hetzelfde lokale netwerk verbinding moeten kunnen maken met de Raspberry Pi. Maak er verbinding mee door de volgende inloggegevens te gebruiken:

hostnaam: schoolbell.local

gebruiker: pi wachtwoord: whatyousetitas

Vanuit een linux-box is dit net zo eenvoudig als het typen van deze opdrachtregel bij de $ prompt:

$ ssh [email protected]

… voer wachtwoord in bij prompt

Hiermee log je in en kun je controleren of de tijd op de Raspberry Pi klopt. Typ de opdracht date op de opdrachtregel en controleer het antwoord:

pi@schoolbel:~ $ datum

do 3 sep 20:44:34 AKDT 2020

Hopelijk is dit de huidige tijd. Als het niet correct is, google dan over het instellen van NTP op de Raspberry Pi.

Stap 2: Zorg dat uw geluidssysteem werkt

Zorg dat uw geluidssysteem werkt
Zorg dat uw geluidssysteem werkt

We gaan MP3-bestanden afspelen voor de klokken, dus we moeten software downloaden om deze audiobestanden te decoderen. Ik kreeg het mpg321-pakket door deze opdracht te typen:

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

Volg de aanwijzingen om deze software te installeren.

Ik gebruikte een oude USB-luidspreker, die een vreemd stuurprogramma had en niet volledig automatisch werd geconfigureerd als de standaardgeluidskaart, dus ik ontdekte dat ik de luidspreker kon "hacken" om te werken door het hardware-adres te gebruiken. Nadat ik de luidspreker had aangesloten, gebruikte ik het commando 'aplay -l' om audioapparaten weer te geven:

pi@schoolbel:~ $ aplay -l

**** Lijst met WEERGAVE-hardwareapparaten **** kaart 0: Hoofdtelefoon [bcm2835 Hoofdtelefoon], apparaat 0: bcm2835 Hoofdtelefoon [bcm2835 Hoofdtelefoon] Subapparaten: Subapparaat #0: subapparaat #0 Subapparaat #1: subapparaat #1 Subapparaat #2: subapparaat #2 Subapparaat #3: subapparaat #3 Subapparaat #4: subapparaat #4 Subapparaat #5: subapparaat #5 Subapparaat #6: subapparaat #6 Subapparaat #7: subapparaat #7 kaart 1: CODEC [USB Audio CODEC], apparaat 0: USB-audio [USB-audio] Subapparaten: Subapparaat #0: subapparaat #0

Het apparaat dat ik wil is het onderste, kaart 1, apparaat 0.

Ik heb de luidspreker getest met "speaker-test", met behulp van het apparaat "hw:1, 0", wat betekent hardwarekaart 1, apparaat 0

pi@schoolbel:~ $ luidsprekertest -D hw:1, 0

Dit programma zorgt ervoor dat er geen geluid uit de luidsprekers komt. Geniet van het geluid en typ dan control-C als je geïrriteerd raakt. Als je geen geluid hoort, probeer dan google.

Nu heb je geluid!

Stap 3: Test het afspelen van belgeluiden en/of maak nieuwe geluiden

Test het afspelen van belgeluiden en/of maak nieuwe geluiden
Test het afspelen van belgeluiden en/of maak nieuwe geluiden

Voor mijn bel heb ik het "bing-bong"-geluid gedownload van "freesound.org". Met dank aan Benboncan voor het beschikbaar stellen van dit geluid:

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

U kunt het geluid direct afspelen. Ik zou direct een mp3-versie van dit bestand kunnen downloaden door deze opdracht op de Raspberry Pi-computer te typen (ervan uitgaande dat deze op wifi staat):

pi@schoolbell:~ $ wget

Ik heb toen dit bestand hernoemd:

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

Ik heb toen getest of ik kon aanbellen met dit commando (met output):

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

Hoogwaardige MPEG 1.0/2.0/2.5 audiospeler voor Layer 1, 2 en 3. Versie 0.3.2-1 (2012/03/25). Geschreven en auteursrechten door Joe Drew, nu onderhouden door Nanakos Chrysostomos en anderen. Gebruikt code van verschillende mensen. Zie 'LEESMIJ' voor meer! DEZE SOFTWARE WORDT ABSOLUUT GEEN GARANTIE! GEBRUIK OP EIGEN RISICO! MPEG-stream afspelen van bing-bong-chime-hq.mp3 … MPEG 1.0 layer III, 128 kbit/s, 44100 Hz mono [0:02] Decodering van bing-bong-chime-hq.mp3 voltooid.

Proficiat! Je hebt geluid.

Met behulp van de geluidsbewerkingscode "audacity" op mijn laptop, splitste ik het bestand in "bing" en "bong" voor meer plezier. Je kunt elk mp3- of misschien een ander formaat (ik heb andere niet getest) geluidsbestanden gebruiken.

Stap 4: installeer de code en stel uw schema in

Installeer de code en stel uw schema in
Installeer de code en stel uw schema in

De code is een python-script dat de huidige datum/tijd krijgt en als de datum een weekdag is en geen feestdag, controleert het of de tijd overeenkomt met een beltijd, en klinkt het als het zou moeten.

Eerst laat je het werken, daarna automatiseer je het om elke minuut te draaien.

Download de code van Github:

gist.github.com/BillSimpson/d7a1a531995c8b63492bb47ef8872618

Ik vind het gemakkelijk om dit te doen door het bestand op een lokale computer op te slaan en vervolgens beveiligde kopie (scp) te gebruiken om het op de Raspberry pi te plaatsen.

Kopieer de code van uw browser op uw lokale computer, plak het in een tekstbestand en sla het op met de bestandsnaam "schoolbell.py". Scp vervolgens het bestand over:

lokale machine:~ $ scp schoolbell.py [email protected]:~/

U wordt gevraagd om het wachtwoord voor de gebruiker pi op schoolbell.local in te voeren -- voer het wachtwoord in en het bestand wordt veilig gekopieerd. Deze opdracht moet worden uitgevoerd in dezelfde map waar het python-script is opgeslagen en kopieert het naar de basismap van de pi-gebruiker. Je kunt naar schoolbell.local ssh-en en de code zou daar moeten staan:

lokale machine:~ $ ssh [email protected]

Vermeld vervolgens op schoolbell.local de bestanden (mogelijk ziet u meer bestanden):

pi@schoolbel:~ $ ls

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

Bewerk nu de code om uw belschema te maken met behulp van een editor zoals pico:

pi@schoolbel:~ $ pico schoolbel.py

De code heeft drie "woordenboeken" die de beltonen definiëren die moeten worden afgespeeld, de tijden waarop ze moeten worden afgespeeld en de te vermijden vakanties. Bellen in het weekend worden automatisch overgeslagen.

Het beltonenwoordenboek is bijvoorbeeld:

belltones = {

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

Dit definieert drie soorten bellen, een waarschuwingsbel, een begin van de les en een einde. Omdat we maar één beltoon hebben, verwijzen ze allemaal naar hetzelfde bestand, maar als je verschillende tonen maakt, kun je ze veranderen. U kunt zelfs andere soorten beltonen toevoegen. Ik speelde ook met het gebruik van een spraaksynthesizer om de klokken te spreken, maar dat werd door anderen in huis niet positief beoordeeld.

Het belschema-woordenboek is vergelijkbaar, maar de "sleutel" is nu de tijd voor de bel. u moet het formaat HH:MM gebruiken met voorloopnullen en 24-uurs tijd (militaire tijd).

klokkenschema = {

'09:00': 'start', # 'Bus' bel klaar te maken '09:28': 'warn', ….. '13:58': 'warn', # voor periode 4 '14:00 ': 'begin', '15:00': 'einde' }

De waarde in dit sleutel:waarde-paar is het type beltoon dat moet worden gebruikt en moet overeenkomen met een van de hierboven gedefinieerde beltonen.

Als laatste vermeldt het vakantiewoordenboek de vakantiedata. Het formaat is JJJJ-mm-dd, met voorloopnullen zoals weergegeven.

vakantie = {

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

Als u klaar bent met bewerken, slaat u het bestand op door uw editor te verlaten en ctrl-X te typen als u pico gebruikt.

Maak de python-code uitvoerbaar door:

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

Hierdoor kunnen alle gebruikers de code uitvoeren, "a" voor iedereen, "+" voor machtiging toevoegen en "x" voor uitvoeren.

Voer nu een test uit met de code en observeer de uitvoer. Merk op dat u het bestand kunt uitvoeren door de bestandsnaam te typen, maar u moet specificeren dat het zich in de huidige map bevindt door een "./" voor de bestandsnaam te typen:

pi@schoolbel:~ $./schoolbel.py

Het is een schooldag, check tijd 21:35

De code vertelt je of het een schooldag is (dus geen feestdag of weekend) en kijkt of de tijd overeenkomt met een beltijd. In dit geval was het geen beltijd, dus het ging gewoon netjes weg. Als het een beltijd was geweest, zou het hebben geklonken.

Om te testen of uw code belletjes kan afspelen, gebruikt u de opdrachtregeloptie van een af te spelen bestand. We gebruiken ons bing-bong-bestand:

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

Het is een schooldag, tijd 21:38 High Performance MPEG 1.0/2.0/2.5 Audio Player voor Layer 1, 2 en 3. Versie 0.3.2-1 (2012/03/25). Geschreven en auteursrechten door Joe Drew, nu onderhouden door Nanakos Chrysostomos en anderen. …. meer rendement….

Je had de bel moeten horen.

Test nu de code met een tijd als argument. Vergeet niet om de tijd met voorloopnullen in te voeren. Om bijvoorbeeld mijn "schoolbus"-bel om 9.00 uur te testen, typ ik:

pi@schoolbel:~ $./schoolbel.py 09:00

Dit zou uw bel moeten doen rinkelen! Je kunt ook testen of hij niet rinkelt op niet-beltijden.

Stap 5: Automatiseer het hardlopen met Crond

Automatiseer het hardlopen met Crond
Automatiseer het hardlopen met Crond

De cron 'daemon' is een planner die repetitieve taken uitvoert op een Linux-systeem. Het controleert of de datum/tijd overeenkomt met een patroon in de cron-tabel (crontab) en voert vervolgens de code uit als dit het geval is. Je kunt het bewerken met de opdracht "crontab -e":

pi@schoolbel:~ $ crontab -e

Dit opent een bestandseditor en onderaan dit bestand voegt u de volgende regel toe:

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

Deze opdracht vertelt cron om python3 uit te voeren en je script uit te voeren in de normale thuismap (/home/pi). De vijf *'s zeggen dat dit elke minuut (eerste *), elk uur (volgende * …), elke dag van de maand, elke maand en elke dag van de week moet worden uitgevoerd.

Nu wordt elke minuut het script schoolbell.py uitgevoerd. Gedurende de meeste minuten wordt de code uitgevoerd en ontdekt dat deze gewoon zou moeten stoppen zonder te luiden, maar als het een beltijd blijkt te zijn, gaat deze af.

Merk op dat omdat cron maar elke minuut draait, je de klokken niet gedetailleerder dan op de minuut kunt maken. Ik denk dat het theoretisch mogelijk is dat als je systeem vastloopt, cron een paar seconden na het einde van de minuut misschien niet werkt, waardoor de bel te laat wordt. Als cron op de een of andere manier niet de hele minuut zou lopen, zou de bel worden gemist.

Tip: voor langere vakanties (bijv. zomer), kunt u een hashtag (#) toevoegen aan het eerste teken van deze regel, waardoor het een opmerking wordt en dus het uitvoeren ervan negeert. Als de school weer bezig is, verwijdert u gewoon de # en begint het weer te lopen.

Stap 6: Aanpassen en genieten

Nu zou je een werkend schoolbelsysteem voor thuis moeten hebben en je leerling mag nooit te laat komen voor de les.

U kunt dit project aanpassen door de beltonen te wijzigen.

  • Je zou de Big Ben kunnen laten rinkelen, met kwartierklokken en de uren rinkelen.
  • Je zou de freestyle van je favoriete rapper kunnen samplen.
  • Je zou subliminale berichten kunnen maken om je op het studeren te concentreren.

Blijf veilig in deze tijd van COVID.

Afbeelding
Afbeelding
Afbeelding
Afbeelding

Tweede plaats in de familiewedstrijd "Can't Touch This"

Aanbevolen: