Inhoudsopgave:
- Benodigdheden
- Stap 1: Stel uw Raspberry Pi in
- Stap 2: Zorg dat uw geluidssysteem werkt
- Stap 3: Test het afspelen van belgeluiden en/of maak nieuwe geluiden
- Stap 4: installeer de code en stel uw schema in
- Stap 5: Automatiseer het hardlopen met Crond
- Stap 6: Aanpassen en genieten
Video: Schoolbel voor leerlingen op afstand: 6 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:14
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
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
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
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
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
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.
Tweede plaats in de familiewedstrijd "Can't Touch This"
Aanbevolen:
Alarm voor sociale afstand met Arduino Nano - Ajarnpa
Social Distance Alarm met Arduino Nano: Hallo lezers in deze instructable laat ik je zien hoe je in een paar eenvoudige stappen een herinnering voor sociale afstand kunt maken en alarm kunt alarmeren met behulp van Arduino Nano. Ga voor meer geweldige projecten naar letsmakeprojects.com
Detector voor sociale afstand: 4 stappen
Detector voor sociale afstand: dit apparaat helpt u een afstand van 1 meter tot mensen te bewaren (of het risico te lopen uw gehoor te verliezen)
Detector voor sociale afstand: 10 stappen
Social Distancing Detector: Dit is een detector die objecten kan identificeren die de ruimte ongeveer 2 meter zijn binnengekomen. Het doel van deze detector is om de afstand tussen mensen binnen "sociale afstand" te houden. Dit project is geïnspireerd op dit Arduino-circuit en voegt de
Idee voor doe-het-zelf-activiteit voor weerstations voor 12+ jaar: 4 stappen
Idee voor doe-het-zelf-weerstationactiviteit voor 12-plussers: in deze activiteit zullen deelnemers hun weerstation opzetten, de lucht in sturen en de opnames (licht, temperatuur, vochtigheid) in realtime volgen via de Blynk-app. Bovendien leert u hoe u de geregistreerde waarden publiceert
Hoe krijg ik wifi vanaf 4 KM of 2,5 mijl afstand!!! BIJGEWERKT VOOR SNELLER SNELHEDEN !!!!: 5 stappen
Hoe krijg ik wifi vanaf 4 KM of 2,5 mijl afstand!!! BIJGEWERKT VOOR SNELLER SNELHEDEN!!!!: Het is jaren geleden dat ik dit bericht plaatste en ik waardeer alle input en interesse die jullie allemaal in dit project hebben gehad! Na onderzoek en ontwikkeling hebben we manieren gevonden om dit NOG BETER te laten werken. Weet je wat we nodig hebben? MEER VERMOGEN